Qwerty-Lafayette v0.5 avec setxkbmap

Petit article pour remettre au propre les étapes pour intégrer qwerty-lafayette à une distrib basée sur Debian.

Résultat attendu : la commande `setxkbmap fr lafayette` vous fera changer de layout.

Qwerty-Lafayette, c’est là : http://fabi1cazenave.github.io/qwerty-lafayette/

Cet article est basé sur http://simos.info/blog/archives/1134

Version courte en mode copier/coller :

wget http://qwerty-lafayette.org/releases/lafayette_linux_v0.5.xkb --output-document=lafayette.xkb
cut_start=$(echo "$(cat -n lafayette.xkb |grep 'partial alphanumeric_keys' | awk '{print $1-1}')")
cut_end=$(wc lafayette.xkb | awk '{print $1-3}')
sed -ni "${cut_start},${cut_end}p" lafayette.xkb
sed -i 's/"lafayette_group2"/"lafayette"/' lafayette.xkb | sudo tee --append /usr/share/X11/xkb/symbols/fr
sudo vim -e +"/<layout>\\n *<configItem>\\n *<name>fr<//name>\\n[//<>\\na-zA-Z0-9 ]*<variantList>/" +"/<variantList>/+1" +"i
 <variant>
 <configItem>
 <name>lafayette</name>
 <description>French (coding, Qwerty-Lafayette)</description>
 <languageList><iso639Id>fra</iso639Id></languageList>
 </configItem>
 </variant>
" +wq /usr/share/X11/xkb/rules/base.xml
sudo vim -e +"/<layout>\\n *<configItem>\\n *<name>fr<//name>\\n[//<>\\na-zA-Z0-9 ]*<variantList>/" +"/<variantList>/+1" +"i
 <variant>
 <configItem>
 <name>lafayette</name>
 <description>French (coding, Qwerty-Lafayette)</description>
 <languageList><iso639Id>fra</iso639Id></languageList>
 </configItem>
 </variant>
" +wq /usr/share/X11/xkb/rules/evdev.xml

Pour tester que le layout fr «habituel» fonctionne toujours :

setxkbmap fr

Pour (enfin!) tester le layout qwerty-lafayette

setxkbmap fr lafayette

twitter-bootstrap 3.x, the easy way for customization

create an empty bootstrap.less inside your project that will import variables.less, then customize variables you want, then import bootstrap.less.

Less `@import` is an implicit « import once » (like the php `require_once`) , so the `@import variables.less` present in official bootstrap.less file will not reload the default variables.

This way allows you to update easier the twitter bootstrap library when you need.

@import "../twitter-bootstrap/less/variables.less"
@import "variables.less" // customize (or not) variables
@import "../twitter-bootstrap/less/mixins.less"
@import "mixins.less"

// in that file already imported .less will be not re-imported
// unless you explicitely ask it when compiling
@import "../twitter-bootstrap/less/bootstrap.less"
// Alternative : 
// instead of importing native bootstrap.less
// you can only take some importation

//== Custom
//
//## add your own specific rules here


 

Installer qwerty-lafayette

Qwerty-Lafayette, c’est là : http://fabi1cazenave.github.io/qwerty-lafayette/

(Basé sur : http://simos.info/blog/archives/1134 )

# 1 – download layout

wget https://raw.githubusercontent.com/fabi1cazenave/qwerty-lafayette/master/lafayette.xkb

# 2 – enlever les 80 premières lignes + le « }; » à la fin

tail, head, etc.

# 3 – ajouter dans /usr/share/X11/xkb/symbols/fr

cat lafayette.xkb >> /usr/share/X11/xkb/symbols/fr

# 4 – ajouter dans evdev.xml and base.xml

dans la balise `variableList` adéquate (fr donc :) )

/usr/share/X11/xkb/rules/base.xml
/usr/share/X11/xkb/rules/evdev.xml
-----

 <variant>
 <configItem>
 <name>lafayette</name>
 <description>French (coding, Qwerty-Lafayette)</description>
 <languageList><iso639Id>fra</iso639Id></languageList>
 </configItem>
 </variant>

# 5 – vérifier qu’il n’y a pas d’erreur et que le fichier « fr » se recharge bien

setxkbmap fr

# 6 – tester la variation lafayette

setxkbmap fr lafayette

Sous Ubuntu (unity), le raccourci pour changer de langue est +

avec i3, j’utilise <super> + <w> pour tourner entre en/fr/fr-lafayette

Et ces lignes pour afficher le layout actuel dans la barre i3:

i3status --config ~/.i3/i3status-light | while :
do
read line
        LG=$(setxkbmap -print | grep xkb_symbols | awk -F"+" '{print $2}')
        echo "LG: $LG | $line" || exit 1
done

(voir ici : https://github.com/Asenar/dotfiles/blob/master/i3/keymap.sh )

AuthType Digest

Pour vous éviter de chercher:
1) utilisation du digest dans le .htaccess (au lieu du Basic)

AuthType Digest
# AuthName est utilisé pour générer le mot de passe
AuthName "prive"
AuthUserFile /home/www/.htdigest
AuthDigestNonceLifetime 300
require valid-user

2) génération d’un mot de passe :
C’est similaire à un htpasswd, avec « realm » en plus au milieu : htdigest [fichier] [realm] [user]
« Realm » correspond à la valeur de « AuthName » mis plus haut.

htdigest -c /home/web/.htdigest "prive" michael

date range in bash

#!/bin/bash
# display all dates between arg1 and arg2

date1=$1
date2=$2

# checks dates
if ! date -d "$date1" 2>&1 > /dev/null ; 
	then echo "first date is invalid" ; exit 1
fi
if ! date -d "$date2" 2>&1 > /dev/null ; 
	then echo "second date is invalid" ; exit 1
fi

#set current and end date
current=$(date -d "$date1" +%F)
end=$(date -d "$date2" +%F)

#loop over all dates
while [ "$end" != "$current" ] 
do
	echo $current
	current=$(date -d "$current +1 days" +%F)
done
echo $current

[crontab] Ouvrir une application graphique

Tous les matins à 10h, exécuter le script qui ouvre un nouveau message thunderbird

00 10 * * * env DISPLAY=:0 /home/michael/crons/send.sh

send.sh

# destinataire :)
to="dest@example.com"
# Si plusieurs identités dans Thunderbird, il faut aller dans
# "options > paramètres avancés pour trouver l'identité voulu.
preselectId=id3
# exemple de titre simple
subject="[rapport quotidien] `date +%F`"
# 
body=`/home/michael/scripts/reports/daily-report.sh`


thunderbird -compose "to='$to',preselectid=$preselectId,subject='$subject',body='$body'"

Sources:
https://help.ubuntu.com/community/CronHowto
http://kb.mozillazine.org/Command_line_arguments_%28Thunderbird%29

completion automatique dans un terminal ?

Exemple pour compléter avec un nom de répertoire dans un dossier particulier :

Pour mon script « prepareDirFromWeb » qui se trouve dans mon dossier « /home/michael/bin » , je créé le fichier /etc/bash_completion.d/prepareDirFromWeb qui contient le code suivant :

# bash completion for Debian apache2 configuration tools
# $Id: apache2,v 1.1 2005/03/16 22:51:19 guillaume Exp $

_prepareDirFromWeb()
{
  local cur prev opts dirList
  COMPREPLY=()
  cur="${COMP_WORDS[COMP_CWORD]}"
  prev="${COMP_WORDS[COMP_CWORD-1]}"
  opts="--help --verbose --version"
  dirList="`ls -d /var/www/*/ | awk -F / '{print $5}' `"
  if [[ ${cur} == -* ]] ; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
    return 0
  else
    COMPREPLY=( $(compgen -W "${dirList}" ${cur}) )
    
  fi  
}
complete -F _prepareDirFromWeb prepareDirFromWeb