Options d’extinctions dans Fedora 17

Pour les plus curieux d’entre vous qui essayeront Fedora 17, sachez que les options d’extinctions dans XFCE seront grisées, et qu’elles ne feront rien dans GDM non plus.

Ceci est dû à une dépendance manquante et peut facilement se corriger à la main. Pour cela, installez le paquet ConsoleKit avec la commande suivante:

# yum install ConsoleKit

Et le problème sera réglé!

Un prompt pour bash avec Bazaar

J’ai vu de nombreux articles indiquant comment afficher les informations de git au sein de son prompt Bash, d’habitude en utilisant la fonction bash qui vient avec git: __git_ps1.

Comme j’utilise un système de contrôle des versions au quotidien (Bazaar, si vous ne connaissez pas, allez donc jeter un oeil), j’ai vite vu l’intérêt de la chose. Malheureusement, je n’ai pas trouvé d’équivalent de __git_ps1 pour Bazaar, j’ai donc écrit ma propre fonction Bash. Elle n’est pas aussi généraliste, mais rend bien service tout de même.

Voici le bout de code pour la fonction elle-même:

bzr_info() {
    status=`bzr status 2> /dev/null`
    revno=`bzr revno 2> /dev/null`
    parent=""
    if [ "$1" == "showparent" ]
    then
        parent=`bzr info | awk '/parent/ {print $3}'`
    fi
    if [ "$revno" != "" ]
    then
        echo -n "("
 
        if [ "$status" != "" ]
        then
            echo -n "*"
        fi
 
        if [ "$parent" != "" ]
        then
            echo -n "$parent:"
        else
            echo -n "bzr:"
        fi
 
        echo -n $revno
        echo -n ")"
    fi
}

Pour s’en servir, il suffit d’ajouter ce morceau de code dans votre prompt: \$(bzr_info), comme ceci:

PS1="[\u@\h \w\$(bzr_info) \$]"

Ce qui affichera ce genre de prompts:

[etenil@cray1 ~/Projects/test(bzr:121) $]
[etenil@cray1 ~/Projects/modified(*bzr:18) $]

Notez que si la branche a subi une modification non commitée, une étoile apparaît devant bzr. Vous pouvez aussi afficher la branche d’origine en passant l’argument showparent, comme ceci:

PS1="[\u@\h \w\$(bzr_info showparent) \$]"

Et qui affichera ce genre de lignes:

[etenil@cray1 ~/Projects/test(http://bzr.ath.cx/test/trunk:121) $]
[etenil@cray1 ~/Projects/test(*http://bzr.ath.cx/test/trunk:121) $]

Néanmoins, afficher l’origine est un peu plus lent et peut prendre beaucoup de place sur le prompt. A vous de voir!

960 grid system

Une connaissance a récemment attiré mon attention sur ce projet libre. Je dois bien avouer qu’au départ je n’y ai rien compris, la doc semblant pratiquement inexistante, et le site officiel assume qu’on sait déjà ce qu’est le projet (ce qui est assez fort).

Je vous passe le pourquoi du comment d’un tel système, n’étant pas designer pour un sou ; il suffira de dire que le CSS pré-défini rend le prototypage et la création de designs vite faits beaucoup plus rapide.

Le concept est simple. Il repose sur l’utilisation d’une grille en 960px à 12 ou 16 colonnes. Les éléments du site seront alors alignés dans cette grille pour un rendu du meilleur effet.

Le projet propose un package avec une suite de classes CSS pour faciliter la mise en oeuvre, et des templates pour Gimp et d’autres logiciels moins libres pour aider les designers purs et durs.

Au niveau du template CSS, il est assez simple de s’en servir. On définira un conteneur dans la page (ou plusieurs) avec comme classe container_12 (pour un 12 colonnes) ou container_16 et les éléments à l’intérieur seront quant à eux de classe grid_1, grid_2 ou grid_n, où n est la largeur désirée (en colonnes bien sûr).

Automatiquement créer des accesseurs pour PHP

Voici une paire de fonctions pour Emacs qui permettent de créer des accesseurs vite fait bien fait pour PHP.

(defun php-make-accessors (variable-name)
  "Insert a couple of accessors for the given member variable."
  (interactive "MVariable name (without $_): ")
  (let ((beg (point)))
    (insert (format (concat "public function set%s($value)\n"
                "{\n$this->_%s = $value;\n"
                "return $this;\n}\n\n")
            (capitalize variable-name) variable-name))
    (insert (format (concat "public function get%s()\n"
                "{\nreturn $this->_%s;\n}\n\n")
            (capitalize variable-name) variable-name))
    (indent-region beg (point))))

Il y a quelques limitations, notamment le fait que les propriétés doivent s’appeler $_xxx. Pour l’utiliser, copiez la dans votre ~/.emacs puis invoquez la fonction dans le corps de votre classe à l’aide de M-x php-make-accessors.

Voici une autre fonction qui emploie la première afin de générer une série d’accesseurs:

(defun php-make-accessors-list (vars)
  "Inserts accessors for each variables provided. Variables must be a
comma-separated string, e.g. \"a,b,c\"."
  (interactive "MVariables list (comma-separated, without $_): ")
  (let ((variables (split-string vars "," t)))
    (mapcar 'php-make-accessors variables)))

Pour employer celle-ci, faites M-x php-make-accessors-list, puis entrez les noms des variables pour lesquelles vous souhaitez générer des accesseurs, comme ceci: a,b,c pour accéder à $_a, $_b et $_c.

Petite astuce pour améliorer le rendu des polices de Microsoft

Il y a des sites web qui utilisent par défaut les polices de microsoft. Le rendu par défaut sur GNU/Linux est plutôt mauvais (voire même carrément illisible). Cela est dû à plusieurs facteurs, mais on peut régler le lisseur de polices (xft je pense) pour les afficher bien mieux tout simplement.

Créez ou éditez le fichier ~/.fonts.conf et insérez le code suivant:

<match target="font" >
 <edit name="embeddedbitmap" mode="assign">
  <bool>false</bool>
 </edit>
</match>

Et le rendu sera alors beaucoup moins agressif.

Edit

À la demande générale, voici deux screenshots de la bidouille:

Avant:

Après: