21/03/10

myGtkMenu 1.2.2a

myGtkMenu

Pour ceux qui ne connaîtraient pas myGtkMenu, il y a un excellent billet : Intégrer myGtkMenu à OpenBox, qui a été relayé sur le Planet Libre de Facebook :omg:. Après la lecture de ce billet myGtkMenu m' a suffisamment intéressé pour que je l'essaie.

Mais je lui ai trouvé quelques défauts que j'ai considéré comme étant des bugs. De plus, son développement semble suspendu. J'ai donc décidé de le modifier.

D'une part, myGtkMenu est maintenant installé system-wide, ce qui signifie qu'il est installé au niveau du système… ainsi la binaire n'a plus besoin d'être installée dans un dossier de l'utilisateur : ce qui semble être assez peu conforme aux principes d'un système UNIX. Ainsi, grâce à un vrai fichier Makefile, le dossier "caché" des préférences de mygtkmenu est créé pour chaque utilisateur du système, lors de l'installation. Les préférences sont alors stockées dans ce dossier, dans un fichier menu.ini qui peut ainsi se trouver à un emplacement indépendant de la binaire mygtkmenu. Les chemins des fichiers image utilisés par les icônes peuvent être notés avec un tilde ~, ce qui les rend plus portables, exemple (extrait du menu.ini, livré par défaut) :

item = _GEdit
cmd  = gedit
icon = ~/.mygtkmenu/icons/accessories-text-editor.png 
# Icons can come from any directory
item = _Notes
cmd  = gedit ~/Notes.txt
icon = ~/.mygtkmenu/icons/accessories-text-editor.png
item = _Calculator
cmd  = gcalctool
icon = ~/.mygtkmenu/icons/accessories-calculator.png
item = Gimp
cmd  = gimp
icon = ~/.mygtkmenu/icons/gnome-gimp.png

Installation

wget http://blogosx.homeunix.org/share/debian/mygtkmenu.tar.gz
tar -xvf mygtkmenu.tar.gz
cd mygtkmenu-*
make
sudo make install

Pour finir, une petite capture d'écran de myGtkMenu sous Openbox, lancé avec un émulateur de terminal (urxvt). Les icônes par défaut ont été mises à jour avec celles du projet Tango, mais libre à vous d'en utiliser d'autres.

Commenter (0)

21/02/10

Soutenir le filtrage et la censure d'internet

par Thomas S. créée le : 08.01.10

Jeudi 7 janvier, notre cher Président a présenté ses vœux au monde de la culture.

Il a souhaité que soit expérimentés "sans délai" des dispositifs de filtrage visant à dépolluer automatiquement les réseaux et les serveurs de toutes les sources de piratage.

Maintenant que l'UMP a signé un accord d'échange et d'entente avec le Parti Communiste Chinois, il serait intéressant de prendre exemple sur eux comme le demandait d'ailleurs un député UMP pour sécuriser internet en France grâce à des dispositifs de contrôle et de fichage importants.

Commenter (0)

08/02/10

smixer-wrapper : simple CLI pour smixer

Terminal

J'en parlais dans le précédent billet : j'ai installé smixer, depuis les sources, et j'en suis assez content pour m'en servir.

Seulement, lorsque j'ai voulu utiliser smixer dans mon rc.xml sous Openbox… j'ai éprouvé quelques difficultés ; de plus, j'avais envie de simplifier les commandes de smixer, voire d'en ajouter une (toggle). Et c'est ce que j'ai fait, en créant une CLI simplifiée.

Les raisons qui m'ont poussé à installer smixer, qui n'est pas présent dans les dépôts, sont expliquées plus en détails dans le billet suivant : smixer : small mixer ? oss mixer ?

Avant toute chose, il est nécessaire de télécharger et d'installer smixer :

wget http://centerclick.org/programs/smixer/smixer1.0.4.tgz -O smixer.tgz
tar -xvf smixer.tgz
cd smixer
make
sudo make install

Pour finir, on vérifie que smixer se trouve dans le PATH :

which smixer

smixer-wrapper

#!/usr/bin/env bash
# -*- coding: utf-8 -*-
# Time-stamp: <2010-02-08 15:44:29 (dimitri)>
#
# ~/bin/smixer-wrapper
#
# smixer v1.0.4 - a simple interface to /dev/mixer
# smixer is a command-line and scriptable program to control
# and display the mixer volume levels on  a  sound  card  in
# linux.  smixer  is  ideal  for  setting  mixer settings on
# startup  or  to  switch  between  multiple  configurations
# quickly.
#
# http://centerclick.org/programs/smixer/man.html
 
OUTSRC="Vol"
 
function func_raise() {
    "$PTH2BIN" -a  <<< "vol $OUTSRC +"
}
 
function func_lower() {
    "$PTH2BIN" -a  <<< "vol $OUTSRC -"
}
 
function func_status() {
    "$PTH2BIN" -p
}
 
function func_mute() {
    "$PTH2BIN" -a  <<< "vol $OUTSRC 0"
}
 
function grep_volume() {
    local regex="[0-9]*(.)*${OUTSRC}(.*)[0-9]+%"
    "$PTH2BIN" -p | egrep -o "$regex" | awk '{print $6}'
}
 
function func_toggle() {
    local volume="$(grep_volume)"
    local tmp_fl="/tmp/$(basename -- $0).$(whoami)"
 
    [[ "${volume%\%}" -gt 0 ]] && {
	echo "${volume%\%}" > "${tmp_fl}"
	check_file "$tmp_fl"
	func_mute
    } || {
	check_file "$tmp_fl"
	"$PTH2BIN" -a  <<< "vol $OUTSRC $(cat "${tmp_fl}")"
    }
    return 0
}
 
function check_file() {
    local message="[%s] Error: cannot access %s: No such file or directory"
    [[ -e "$tmp_fl" ]] || {
	    printf "${message}" "$(basename -- $0)" "$1" 1>&2 
	    exit 1
    }
    return 0
}
 
function check_dependency() {
    local message="[%s] Error: you need to install %s first."
 
    [[ -z "$(which "$1")" ]] && {
	printf "${message}\n" "$(basename -- $0)" "$1" 1>&2 
	exit 1
    }
    return 0
}
 
function main() {
    PTH2BIN='/usr/local/bin/smixer'
    # If not running interactively, still source .bashrc
    [ -z "$PS1" ] && { source "${HOME}/.bashrc"; }
 
    case "$1" in
	raise|lower|mute|toggle|status) 
	    check_dependency "smixer" && {
		PTH2BIN="$(which smixer)"
		"func_${1}"
	    };;
	help|*)
	    usage
	    exit 1;;
    esac
    return 0
}
 
function usage() {
    local outsrc2string="$OUTSRC"
    case "$OUTSRC" in
	Vol)
	    outsrc2string='Master';;
    esac
 
    cat <<EOF
Usage: $(basename -- $0) {raise|lower|mute|toggle|status|help}
  raise    Increase the $outsrc2string volume 5%
  lower    Decrease the $outsrc2string volume 5%
  mute     Mute the $outsrc2string volume
  toggle   Toggle the $outsrc2string volume
  status   Print out the current mixer settings, then exit
  help     Show this message and exit
EOF
}
 
main "$@"

Depuis la précédente version, le script a quelque peu évolué dans sa syntaxe. Il source le .bashrc de l'utilisateur de façon à trouver smixer qui peut être installé dans une location uniquement accessible dans le PATH de l'utilisateur. Et l'option toggle a été ajoutée de façon à imiter cette fonctionnalité qui est, par exemple, disponible avec amixer :

amixer -c 0 set Master toggle

Vous pouvez le télécharger en toute simplicité en utilisant, par exemple, wget :

wget http://88.174.112.74/share/debian/smixer-wrapper.tar -O smixer-wrapper.tar
tar -xvf smixer-wrapper.tar

En l'installant par exemple dans ~/bin.

Ensuite, si smixer-wrapper est bien installé et qu'il se trouve dans le PATH ; si on l'invoque sans option il devrait afficher son aide :

# smixer-wrapper 
Usage: smixer-wrapper {raise|lower|mute|toggle|status|help}
  raise    Increase the Master volume 5%
  lower    Decrease the Master volume 5%
  mute     Mute the Master volume
  toggle   Toggle the Master volume
  status   Print out the current mixer settings, then exit
  help     Show this message and exit

Si tout fonctionne correctement, il ne reste plus qu'à modifier le rc.xml, en prenant comme modèle l'extrait fourni dans le précédent billet : smixer : small mixer ? oss mixer ?

Commenter (0)

08/02/10

smixer : small mixer ? oss mixer ?

Ubuntu Server Edition

Alors que, je modifiais une fois de plus la configuration du son sur mon eMachines EL1200 tournant sous CrunchBang Linux, j'ai finalement était rencontré à un bug.

Bug qui ne m'a pas trop étonné puisque je l'avais déjà rencontré sur d'autres configurations : le son après avoir été réglé à 0 via ALSA reste audible via OSS. On peut alors le mettre à 0 en utilisant, par exemple, gnome-volume-control et en choisissant le périphérique OSS… ce qui est bien moins pratique qu'une ligne de commande du genre de celle de amixer :

amixer -q set Master 0

C'est d'autant moins pratique que je voulais scripter un clavier Logitech S510 (photo).

Bien, ça ne semble pas très compliqué… il suffit juste de trouver un mixer qui puisse faire la même chose mais pour OSS, ou d'une façon globale… yakafokon

Et c'est là que j'ai cherché… longtemps ! Avant de finalement tomber sur smixer (smixer 1.0.4), qui est un outil similaire à amixer, mais je ne rencontre aucun souci avec smixer pour mettre le volume à 0 :

echo 'vol Vol 0' | smixer

De plus, smixer, est très facile à compiler… et il est distribué sous licence GNU GPL, si bien que j'ai décidé d'en héberger une copie ici : smixer1.0.4.tgz, au cas où…

Un exemple d'utilisation rc.xml avec amixer, et un autre exemple avec smixer, installé dans /opt/local (une vieille habitude) :

   <keybind key="XF86AudioLowerVolume">
     <action name="Execute">
       <execute>amixer -q set Master 1- unmute</execute>
     </action>
   </keybind>
   <keybind key="XF86AudioRaiseVolume">
     <action name="Execute">
       <execute>amixer -q set Master 1+ unmute</execute>
     </action>
   </keybind>
   <keybind key="XF86AudioMute">
     <action name="Execute">
       <execute>amixer -q set Master 0</execute>
     </action>
   </keybind>
   <keybind key="XF86AudioLowerVolume">
     <action name="Execute">
       <execute>~/bin/smixer-wrapper lower</execute>
     </action>
   </keybind>
   <keybind key="XF86AudioRaiseVolume">
     <action name="Execute">
       <execute>~/bin/smixer-wrapper raise</execute>
     </action>
   </keybind>
   <keybind key="XF86AudioMute">
     <action name="Execute">
       <execute>~/bin/smixer-wrapper mute</execute>
     </action>
   </keybind>

Seulement, pour pouvoir utiliser smixer dans le rc.xml il a fallu que je rédige un petit script bash… j'ignore pour quelle raison mais les commandes ne semblaient pas fonctionner telles quelles dans le rc.xml ! Et puis, de toute façon, je voulais les simplifier :tongue:.

#!/usr/bin/env bash
# -*- coding: utf-8 -*-
# Time-stamp: <2010-02-07 17:15:54 (dimitri)>
#
# ~/bin/smixer-wrapper
#
# smixer v1.0.4 - a simple interface to /dev/mixer
# smixer is a command-line and scriptable program to control
# and display the mixer volume levels on  a  sound  card  in
# linux.  smixer  is  ideal  for  setting  mixer settings on
# startup  or  to  switch  between  multiple  configurations
# quickly.
#
# http://centerclick.org/programs/smixer/man.html
 
 
pthbin="/opt/local/bin/smixer"
outsrc="Vol"
 
function main() {
    case "$1" in
	raise)
	    "$pthbin" -a  <<< "vol $outsrc +";;
	lower)
	    "$pthbin" -a  <<< "vol $outsrc -";;
	mute)
	    "$pthbin" -a  <<< "vol $outsrc 0";;
	status) 
	    "$pthbin" -p;;
	help|*)
	    usage
	    exit 1;;
    esac
    return 0
}
 
function usage() {
    cat <<EOF
Usage: $(basename -- $0) {raise|lower|mute|status|help}
  raise    Increase the $outsrc volume 5%
  lower    Decrease the $outsrc volume 5%
  mute     Mute the $outsrc volume
  status   Print out the current mixer settings, then exit
  help     Show this message and exit
EOF
}
 
main "$@"

Je ferai un autre billet, à propos du script lui même, et avec une nouvelle version de celui-ci. En effet, j'ai, entre autres modifications, ajouté une option toggle, cette fonctionnalité n'existant pas dans smixer. Autres modifications : quelques vérifications, de plus le script source le .bashrc de façon à pouvoir trouver smixer (comme il s'agit d'une installation personnalisée, ça peut être utile), et les deux seules variables globales sont écrites en majuscules (je préfère).

Sinon, il existe aussi aumix, qui lui est présent dans les dépôts… mais qui présente le défaut, à mons sens, d'ajouter un service ; ce qui ne me semble pas indispensable pour un simple mixer audio. En définitive : si le volume de ALSA correspond à celui de OSS : il n'est peut-être pas utile de toucher à quoi que ce soit :wink:.

Commenter (0)

03/02/10

Convertir un PC en routeur, sous Ubuntu ?

Ubuntu Server Edition

Bon, j'ai un vieil IBM ThinkCenter S50… sur lequel j'ai déjà testé pas mal de choses. Maintenant, il s'avère que c'est du matériel très ancien, et que même en utilisation en tant que serveur web (Apache 2 et WebDAV), ça coince assez vite ! :confused:

Maintenant, il s'avère que les routeurs du commerce, tels que le WRT54G2 me lâchent entre les mains, les uns après les autres… de plus, même si ils sont faciles à mettre en œuvre et à configurer, les possibilités ont toujours certaines limitations plus ou moins gênantes. Après, avoir un équipement auquel on peut accéder en SSH est plus confortable, à mon sens, qu'une interface web. J'ai déjà essayé une installation d'IPCop et dès l'installation j'ai commencé à regretter Ubuntu : installation très longue, pas de version 64 bits, pas de partitionnement personnalisé… et forcément après l'installation, mon clavier n'était pas correctement reconnu ! De plus, je n'avais pas vraiment besoin d'une interface juste pour la DMZ puisque, bien qu'étant le top, j'aurais de grandes difficultés a le mettre en place à mon domicile ; router la DMZ vers une IP du réseau local, comme cela est quelquefois proposé par certains routeurs du commerce devrait me suffire.

Pages intéressantes

Ce billet est en cours de rédaction ; il devrait, donc, évoluer selon l'évolution de ce projet qui, il faut bien le dire, est encore à l'état larvaire, même si le PC IBM ThinkCentre S50 a été upgradé en conséquence avec l'ajout de deux cartes PCI 10/100Mbps fast ethernet RJ45, et aussi un disque dur de 320 Go. Le changement du disque dur n'était pas indispensable… mais j'avais envie de recycler ce disque dur interne, qui était devenu trop bruyant et qui chauffait trop. Mauvaise ventilation et mauvaise dissipation calorifique du MiniMax Iomega ?

Commenter (1)

25/01/10

French Language Pack (fr-FR) 3.6

Firefox

Pack de langue français complet pour Firefox 3.6

Ce nouveau pack de langue, diffusé avec un peu de retard du fait d'un manque de temps certain, embarque le dictionnaire Hunspell 3.4.1 (Classique). Le dictionnaire s'identifie, au niveau de Firefox, comme fr-classique, peut-être utile si l'on a plusieurs versions de dictionnaires fr installés et que l'on utilise une extension du genre Dictionary Switcher

Version 3.6

Fonctionne avec Firefox 3.6.*
Télécharger : langpack-fr-Fx3.6.xpi
MD5 (langpack-fr-Fx3.6) = 7642a807ed0f5d40eb29f28b9baf72c6

Commenter (1)

25/01/10

Bizarreries de Ubufox

Firefox

Bien que ce ne soit que le nom d'un paquet, pouvant être considéré comme une extension, j'ai choisi d'utiliser dans le titre de ce billet le terme Ubufox, par abus de langage, pour désigner les versions de firefox packagées par Canonical.

Bon, ce n'est plus un secret pour personne, l'installation de Firefox sous Ubuntu par Canonical, peut sembler assez étrange… en effet, il y a dans un premier temps le paquet Ubufox, qui se supprime comme n'importe quel paquet. Mais ce n'est pas tout, il y a des packs de langue, ou langpack, qui sont installés en "global", et donc visibles dans le gestionnaire d'extension sans qu'il ne soit possible de les désinstaller : capture d'écran !

sudo apt-get remove ubufox

Ensuite, on peut vérifier que les packs de langue sont installés conformément à la capture d'écran :

# ls /usr/lib/firefox-addons/extensions/
langpack-en-GB@firefox-3.0.ubuntu.com  langpack-fr@firefox-3.0.ubuntu.com

Puis les supprimer :

sudo rm -frv /usr/lib/firefox-addons/extensions/

À noter qu'un PPA existe pour Firefox. Et que, de plus, il existe un PPA pour GNUzilla Icecat. Utiles pour conserver une Firefox aussi à jour que possible même avec une distribution de Ubuntu relativement en retard.

Commenter (0)

23/12/09

Aller plus loin avec les partitions USB

Ubuntu Server Edition

Pour le montage automatisé via fstab, on pourra utiliser les UUID, qui sont un standard défini initialement par l'OSF et dont la dernière version est définie par le RFC 4122, en 2005. En pratique, l'UUID permet de différencier deux périphériques USB.

On peut, en CLI, très simplement, obtenir l'UUID d'un périphérique grâce à la commande blkid :

sudo blkid /dev/sdb

Ensuite, on peut utiliser cet UUID dans le fstab :

UUID=d98b1ae8-61a6-493b-801f-c2efeba3db43  /media/stock  ext4 defaults

Pour remonter l'ensemble des partitions après modification du fstab, par exemple ; un classique :

sudo mount -a

Voilà… il est assez simple, en définitive, d'avoir des partitions montées via des périphériques USB qui auront des points de montages prévisibles. C'est surtout utile en l'absence d'interface graphique, puisque la plupart des explorateurs de fichiers gèrent, plus ou moins çà, aujourd'hui ; en effet, la mode veut que l'usage de l'interface en ligne de commande disparaisse de façon à rendre les distributions GNU/Linux (Desktop) toujours plus "user-friendly". Faut dire, qu'il y a 5 ans, ou plus (?!), sous Mandrakelinux le montage des clefs USB en ligne de commande m'avait réellement rebuté et fait regagné le confort d'un OS en "Édition Familiale" !

Voilà, tout çà pour dire que, le serveur hébergeant ce blog a gagné 500 Go, sous la forme d'un Western Digital My Book "Essential Edition" ; et que, cette fois, je me suis vraiment demandé, comme je l'avais encore jamais fait auparavant, comment ça marchait avec des périphériques USB cette histoire de partitions… du coup, je trouve le système des UUID vraiment pratique et efficace.

Commenter (0)

12/12/09

blogOSX sous Ubuntu Server !

Ubuntu Server Edition

Voilà… à l'heure où la rédaction de ce billet a commencé, blogOSX aura à nouveau déménagé, cette fois-ci le déménagement du blog n'aura pas comme conséquence de traverser un océan et de changer de nom de domaine ; non, ça se limitera à un simple changement d'adresse IP privée et, surtout, à un changement d'architecture matérielle et logicielle. En, effet, pour ce nouveau serveur, c'est Ubuntu Server Edition qui a été choisie ; j'ai un moment hésité avec Debian… mais comme j'utilise déjà une distribution basée sur Ubuntu en tant que Desktop, c'est finalement Ubuntu Server Edition qui a été choisie.

Pourquoi abandonner Mac OS X pour un GNU/Linux ?

En définitive, les compilations aléatoires destinées à la maintenance d'un serveur, aussi rudimentaire soit-il, ont eu raison de ma patience. Je reconnais aisément avoir appris quantité de choses à propos de la compilation grâce à ces expériences… mais je considère qu'il s'agit, essentiellement, d'une perte de temps. De plus, pour avoir une version de PHP, plus ou moins, à jour sur son serveur, il ne faut pas compter sur Apple ! Et l'arrivée de Mac OS X Snow Leopard ne changeant pas grand chose à cet état de fait… En définitive, un gestionnaire de paquets, ça le fait bien ! :smile:

En y étant, et même si ça sent encore la peinture, le What's That Site Running Results. Ô temps ! suspends ton vol… deux ans déjà !

Commenter (0)