Posts tagged ‘Linux’

Python 3 – MyMediaPlayer Release 0.1

J’ai découvert dans le magazine GNU/Linux Magazine France HS 40 le langage Python…
En fait j’en avais déjà entendu parler mais je n’avais jamais pris le temps de m’y intéresser.
Après une lecture rapide du magazine, j’ai décidé de faire quelques petites manipulations. La simplicité du langage m’a interpelé!
Pour découvrir ce langage dans sa version 3, j’ai décidé de faire un petit programme pour mon media center…
Je récapitule, sur la TV de mon salon j’ai une eeeBOX de branchée (Archlinux + Slim + Wmii-hg + Mplayer + Firefox).
Comme ma copine n’est pas une geek ^^ j’ai décidé de lui faire un petit programme qui est lancé au démarrage et qui liste les films disponibles. Il lui suffira de taper le numéro du film pour lancer mplayer en plein écran. Pour éteindre le PC il lui suffira de taper ‘bye’!

MyMC.py en action :

MyMC en action !

Cette première version est fonctionnelle mais ça reste une maquette… Aussi, la prochaine étape est de créer une interface graphique en tk pour rendre l’utilisation plus agréable!

Si vous voulez le tester, ou simplement regarder le code source, la source python est disponible ici : MyMC.py.

wmii | statusbar – suite…

Hier je vous ai presenté un début de hack pour une barre de statut personalisée… J’ai ajouté quelques éléments incontournables pour un laptop : le reseau wifi sur lequel on est connecté et la qualité du signal.

wmii statusbar

Continuons donc sur notre lancée et détaillons le bout de code : la fonction status.

Vim - code editor

Vim - code editor

La commande “echo -n” englobe le reste des commandes qui suivent (les “\” permettent d’aller à la ligne sur l’éditeur sans sortir de la commande).

'Cpu:' `{cpufreq-info -f | sed 's/000//;'} 'MHz' '|' \

Comme nous somme dans la commande echo, pour afficher du texte ‘Cpu:‘ il suffit de le placer dans des tildes ‘. Suite à ce morceau de texte, nous trouvons une série de commandes de placées dans un conteneur`{commande1 | commande2}. Les commandes sont séparées par un |. C’est un principe de base des commandes UNIX.

La première commande “cpufreq-info -f” . cpufreq-info est un programme qu’il faut installer sur le système et qui permet d’afficher les infos sur le processeur. Ici, utilisé avec le paramètre “-f” il nous retourne la fréquence en kHz.

La seconde commande “sed ’s/000//;’” appelle sed un editeur de texte vieux comme le monde afin de supprimer une chaine de ‘000′ car la fréquence retournée est en kHz (100000kHz = 100MHz).

'Temp:' `{cat /proc/acpi/thermal_zone/THRM/temperature | grep 'temperature' | sed 's/.*://;'} '|' \

Nous passons directement aux nouveaux éléments “cat /proc/acpi/thermal_zone/THRM/temperature” suivi de “grep ‘temperature’” et enfin la commande “sed” pour mettre en forme la chaine de caractère.

La commande cat est une commande du système de base Linux et permet d’afficher un fichier de texte. Ici elle affiche le contenu du fichier système “/proc/acpi/thermal_zone/THRM/temperature”. Le noyeau Linux maintient à jour de nombreux pseudo-fichiers pour communiquer avec le reste du système (plus de détails ici par exemple).

Comme la commande cat nous sort plusieurs lignes, la commande grep permet d’afficher la première qui contient ‘temperature’. A ce stade il ne reste qu’a nettoyer la ligne restante avec l’éditeur sed.

'Bat:' `{cat /proc/acpi/battery/BAT1/state | grep remaining | sed 's/.*://;'} '/' `{cat /proc/acpi/battery/BAT1/info | grep 'design capacity:' | sed 's/.*://;'} '|' \

Cette suite de commandes reprend exactement le même principe que celle pour la température.

'Wifi:' `{iwconfig wlan0 | grep 'ESSID:' | sed 's/.*://;'} `{iwconfig wlan0 | grep Quality | sed 's/.*y=//;' | sed 's/.100.*//;'} '% |' \

A ce stade vous devez être en mesure de comprendre globalement le principe de cette suite de commandes. iwconfig permet d’afficher ou modifier les infos des cartes wireless (ici la carte wlan0). Nous récupérons la ligne contenant le ‘ESSID’ et nous la nettoyons. Même procédure pour la qualité du signal. A noter qu’ici nous appelons 2 fois la commande sed car il y a des chaines de caractères à enlever avant et après le champ désiré!

`{date}

Enfin, la commande la plus simple – on aurait du commencer par elle ;) – date qui retourne la date complète.

Alors à vos hacks !!!!

wmii-hg | statusbar

Après de nombreuses tentatives, j’ai enfin réussi a utiliser un rc.wmii local pour mon user et donc j’ai pu commencer a personaliser mon wmii…

La mission de ce soir était de mettre un peu d’infos utiles dans ma status bar (en bas à droite).

Voici le résultat :

wmii_statusbar

Pour les curieux, le code de mon status bar est sur le screenshot dans vim ;)

[EDIT] Lien mort vers l’image… Remise d’images à la demande de Patrice.

Ouverture officielle du dépot !

C’est officiel : mon dépôt de paquets binaires pour Archlinux i686 est ouvert! Je m’efforcerai d’y mettre tous les pkg.tar.gz qui peuvent être utiles à d’autres usagers d’Archlinux.

Par exemple, si vous voulez tester WMII-HG (la version de développement de WMII) et que vous ne voulez pas vous lancer dans la compilation du logiciel, vous n’avez qu’a télécharger les 2 paquets sur mon dépôt (libixp-hg et wmii-hg) et exécuter un “pacman -U nom_du_paquet” en root pour chacun des paquets.

Le lien vers mon dépot : http://depot.julienpecqueur.com/.

Attention, les paquets ne sont ABSOLUMENT PAS GARANTIS vous les installez à vos risques et périls. D’autre part, ce sont des logiciels sous licence “libre” (voir les sites internet des différents logiciels pour les licences exactes).

Et comme vous avez été sages, voici un petit screenshot de WMII-HG en fonctionnement :

wmii-hg en action

wmii-hg en action

Script pour monter un disque externe

Petite capitalisation suite à une grosse prise de tête : comment monter un disque externe usb au démarrage si celui-ci est présent?

/etc/fstab me direz-vous… Et non, si j’ajoute l’UUID de mon disque dans fstab, Archlinux ne démarre plus!

J’ai donc suivi une idée de CalimeroTecknik (#archlinux-fr), monter le disque à l’aide d’un script dans rc.local.

Voici le script que j’ai créé (si ça peut vous servir…):

#!/bin/bash
#
# /etc/rc.local: Local multi-user startup script.
#

# ——————————————————————–
# Montage du disque externe MyBook (by JPEC)
# ——————————————————————–
# Affiche l’UUID du disque MyBook
ls -f /dev/disk/by-uuid/3c52ee99-b1a4-4aa5-b436-5e700cd26d64
# On check le code de retour de ls ($? ==  0 si le disque est présent)
if [ $? == 0 ]
then
echo “Mount du disque MyBook dans /media/MyBook…”
mount UUID=3c52ee99-b1a4-4aa5-b436-5e700cd26d64 /media/MyBook
else
echo “Le disque MyBook n’est pas connecté…”
fi