My Own Memory Hole
Blog♯Linux

Lancer une application maximisée par défaut sous LXDE / Lubuntu

Par exemple, dans mon cas, lxterminal, qui a chaque démarrage me frustrait du fait de la taille de sa fenêtre. Utilisant par ailleurs régulièrement tmux (voir à ce sujet « My Own Tmux Cheat Sheet »), je souhaitais que lxterminal s'ouvre par défaut maximisée.

Pour cela, on édite le fichier ~/.config/openbox/lubuntu-rc.xml (ou son ~/.config/openbox/lxde-rc.xml) et on ajoute juste avant la fin de la section applications ceci :

<application name="lxterminal">
  <maximized>yes</maximized>
</application>

Puis on force Openbox à relire sa configuration :

$ openbox --reconfigure

Quels outils pour réduire CSS et JS ?

cleancss

$ sudo apt install cleancss

Ensuite, il suffit de lancer la commande :

$ cleancss -o mon_fichier.min.css mon_fichier.css

Traitement par lot

Mais c'est un peu lassant de répéter cette opération lorsque l'on a de multiples fichiers à traiter. J'ai donc adapté le script proposé par Marco G qui utilise yui-compressor.

On crée donc le script mincss dans un répertoire bin de notre home puis on le rend exécutable avant d'y coller le script ci-dessous :

$ mkdir /home/$USER/bin
$ touch /home/$USER/bin/mincss
$ chmod +x /home/$USER/bin/mincss
$ nano /home/$USER/bin/mincss
#!/bin/sh
echo Compressing CSS Files...
saved=0
for f in `find -name "*.css" -not -name "*.min.css"`;
do
    target=${f%.*}.min.css
    echo "\t- "$f to $target
    FILESIZE=$(stat -c%s "$f")
    cleancss -o $target $f
    FILESIZEC=$(stat -c%s "$target")
    diff=$(($FILESIZE - $FILESIZEC))
    saved=$(($saved + $diff))
    echo "\t  $diff bytes saved"
done
echo "Done&nbsp;! Total saved: $saved bytes"

UglifyJS

Pour les fichiers Javascript, j'utiliser UglifyJS

$ sudo apt install node-uglify

ou en utilisant npm l'utilitaire de gestion des paquets de NodeJS :

$ sudo npm install -g uglify-js

La commande uglifyjs est désormais disponible :

$ uglifyjs mon_fichier.js -o mon_fichier.js.min.js

Ajouter la compression :

$ uglifyjs mon_fichier.js -o mon_fichier.minc.js -c

Ajouter en plus l'« altération » :

$ uglifyjs mon_fichier.js -o mon_fichier.minc.js -m

On peut ainsi lancer la commande pour n'obtenir plus qu'un fichier à partir de tous les fichiers spécifiés :

$ uglifyjs *.js -o output.js -c -m

uglifyjs-folder

Pour traiter l'ensemble des fichiers d'un répertoire (et de ses sous-répertoire), on peut également utiliser uglifyjs-folder.

$ sudo npm install -g uglifyjs-folder

Pour compresser tous les fichiers d'un répertoire, il suffit de lancer :

$ uglifyjs-folder mon_dossier/ -o script.min.js

On peut aussi vouloir conserver des fichiers séparés, ce que permet l'option -e ; dans un tel cas, l'arborescence du dossier traité est conservé dans le répertoire indiqué avec l'option o :

$ uglifyjs-folder ../test/ -o output/ -e

Un petit script pour écouter la radio depuis un terminal

Afin de faciliter l'écoute de certaines radio en streaming, et surtout sans utiliser un navigateur web, de plus en plus gourmand en ressources, j'utilise désormais un petit script bash qui utilise mplayer.

$ mkdir /home/$USER/bin
$ touch /home/$USER/bin/radio
$ chmod +x /home/$USER/bin/radio
$ nano /home/$USER/bin/radio
#!/bin/bash

usage ()
{
    echo '*****************************************************'
    echo '******************** Radio **************************'
    echo '*****************************************************'
    echo '  - beaub    &nbsp;: BeaubFM, radio associative de Limoges'
    echo '  - culture  &nbsp;: France Culture'
    echo '  - info     &nbsp;: France Info'
    echo '  - inter    &nbsp;: France Inter'
    echo '*****************************************************'
}

case $1 in
    beaub )         mplayer http://beaubfm2.ice.infomaniak.ch/beaubfm2-96.mp3
                   &nbsp;;;
    culture )       mplayer http://direct.franceculture.fr/live/franceculture-midfi.mp3
                   &nbsp;;;
    info )          mplayer http://direct.franceinfo.fr/live/franceinfo-midfi.mp3
                   &nbsp;;;
    inter )         mplayer http://direct.franceinter.fr/live/franceinter-midfi.mp3
                   &nbsp;;;
    -h | --help )   usage
                    exit
                   &nbsp;;;
    * )             usage
                    exit 1
esac

Ensuite, il suffit de choisir sa radio et de lancer la commande suivante (par exemple) :

$ radio culture

Auto-complétion des stations

On crée le fichier radio-completion.bash :

$ nano /home/$USER/bin/radio-completion.bash

dans lequel on colle les deux lignes suivantes :

#/usr/bin/env bash
complete -W "beaub culture info inter" radio

lancez la commande suivante :

$ source /home/$USER/bin/radio-completion.bash

Et vous devriez avoir les stations qui vous sont proposées lorsque vous pressez la touche Tab à la suite de la commande radio et au fur et à mesure de votre saisie.

Connexion Bluetooth au retour de veille sous Lubuntu 18.04 sur ASUS F200M

Sous Lubuntu 18.04, il m'était impossible de me re-connecter en Bluetooth à mon ampli Hi-Fi au retour de la veille.
Et aucune des solutions repérées sur le forum de la communauté anglophone d'Ubuntu, ni celle de Ferux, ni celle de lotharmat ne me permettait de re-connecter mon ampli, bien qu'il soit bien enregistré comme de confiance. J'avais toujours le même message d'erreur :

Connection Failed: blueman.bluez.errors.DBusFailedError: Resource temporarily unavailable

Une solution simple et définitive  !

La solution vient de Halka sur askubuntu.com, bien qu'il ne faille pas se contenter d'une version >=5.28.2 de bluez : la version disponible dans les dépôts de Lubuntu 18.04 est la 5.48-0ubuntu3 (au 7 juillet 2018)...

Par contre, l'utilisation de la version que propose la « Ubuntu Bluetooth team » via son PPA, la 5.50-0ubuntu0ppa1 (au 7 juillet 2018) permet de résoudre le problème.
Donc, on fait tout simplement :

$ sudo add-apt-repository ppa:bluetooth/bluez
$ sudo apt-get update && sudo apt-get upgrade

Si ça ne marche pas... comment retrouver mes connections Bluetooth ?

J'utilisais le programme bluetoothctl et devais retirer l'appareil avant de l'appairer à nouveau et de le connecter...

$ bluetoothctl 
Agent registered
[bluetooth]# disconnect FC:58:FA:14:27:BC 
Attempting to disconnect from FC:58:FA:14:27:BC
Successful disconnected
[bluetooth]# connect FC:58:FA:14:27:BC
Attempting to connect to FC:58:FA:14:27:BC
[CHG] Device FC:58:FA:14:27:BC Connected: yes
Connection successful
[CHG] Device FC:58:FA:14:27:BC ServicesResolved: yes
[Tangent Ampster BT]#

Si la seule déconnexion ne suffit pas, il faut alors complètement retirer le périphérique&nbsp:

$ bluetoothctl
Agent registered
[Tangent Ampster BT]# remove FC:58:FA:14:27:BC
[CHG] Device FC:58:FA:14:27:BC ServicesResolved: no
Device has been removed
[CHG] Device FC:58:FA:14:27:BC Connected: no
[DEL] Device FC:58:FA:14:27:BC Tangent Ampster BT
[bluetooth]# scan on
Discovery started
[CHG] Controller 54:27:1E:C9:81:80 Discovering: yes
[NEW] Device FC:58:FA:14:27:BC Tangent Ampster BT
[bluetooth]# pair FC:58:FA:14:27:BC
Attempting to pair with FC:58:FA:14:27:BC
[CHG] Device FC:58:FA:14:27:BC Connected: yes
[CHG] Device FC:58:FA:14:27:BC UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device FC:58:FA:14:27:BC UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device FC:58:FA:14:27:BC UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device FC:58:FA:14:27:BC UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device FC:58:FA:14:27:BC UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device FC:58:FA:14:27:BC ServicesResolved: yes
[CHG] Device FC:58:FA:14:27:BC Paired: yes
Pairing successful
[CHG] Device FC:58:FA:14:27:BC ServicesResolved: no
[CHG] Device FC:58:FA:14:27:BC Connected: no
[bluetooth]# connect FC:58:FA:14:27:BC
Attempting to connect to FC:58:FA:14:27:BC
[CHG] Device FC:58:FA:14:27:BC Connected: yes
Connection successful
[CHG] Device FC:58:FA:14:27:BC ServicesResolved: yes
[Tangent Ampster BT]#

Quelque peu pénible... le plus simple étant de redémarrer le service Bluetooth :

$ sudo service bluetooth restart

puis de reconnecter l'ampli depuis l'applet Blueman.

Personnaliser les notifications sous Xfce

Pour pouvoir personnaliser les notifications système, il convient de commencer par installer le paquet xfce4-notifyd :

$ sudo apt-get install xfce4-notifyd

Ensuite, vous pouvez lancer l'utilitaire xfce4-notifyd-config pour configurer la disposition des notifications, leur durée, le thème utilisé...

Créer son propre thème de notification

En se référant à la documentation de XFCE, il faut que notre thème, pour qu'il apparaisse dans le sélecteur de xfce4-notifyd-config, soit nommé gtk.css soit dans le répertoire /usr/share/themes/$yourtheme/xfce-notify-4.0 ou ~/.themes/$yourtheme/xfce-notify-4.0.

Pour se faire une idée des éléments à cibler, de leurs propriétés, on peut se référer aux thèmes proposés de base et dont le code est disponible ici, et plus particulièrement au thème Retro.

Voici un exemple de thème que j'utilise :

#XfceNotifyWindow {
    background-color: #3c3c3c;
    border-radius: 10px;
    border: 1px solid #4C4C4C;
    padding: 20px;
}

#XfceNotifyWindow:hover {
    background-color: shade(#3c3c3c, 0.95);
}

#XfceNotifyWindow label,
#XfceNotifyWindow image {
    color: #e4e4e4;
}

#XfceNotifyWindow label#summary {
    font-weight: Bold;
}

#XfceNotifyWindow button {
    font-weight: Bold;
    box-shadow: none;
    background-image: none;
    background-color: #3c3c3c;
    color: #e4e4e4;
}

#XfceNotifyWindow button:hover {
    box-shadow: none;
    background-image: none;
    background-color: #4C4C4C;
}

#XfceNotifyWindow progressbar {
    min-height: 10px;
}

#XfceNotifyWindow progressbar progress {
    background-image: linear-gradient(to right, shade(#CD2D25,0.75), shade(#CD2D25,1));
}

#XfceNotifyWindow progressbar trough {
    background-color: #333333;
}

Lubuntu 18.04 sur ASUS F200M : réglages système au clavier

Sous Lubuntu 18.04, presque tous les réglages accessibles via la touche Fn de mon Asus F200M sont fonctionnels « out of scratch » à l'exception de celui (dés)activant le touchpad et d'un léger souci sur les touche de volume.

Activer / désactiver le touchpad

On commence par déterminer si la touche de raccourcis Fn+F9 est reconnue, grâce à l'outil xev :

$ xev | grep 'keycode'
    state 0x0, keycode 199 (keysym 0x1008ffa9, XF86TouchpadToggle), same_screen YES,

Elle l'est ! On garde donc ce XF86TouchpadToggle de côté ; si ce n'est pas le cas, on peut toujours se rabattre sur un raccourci du genre Windows+F9.

J'ai déjà eu l'occasion de produire deux posts consacrés à ce raccourci de (dés)activation du touchpad: le premier pour Xubuntu 14.04, le second sous Xubuntu 14.10.

Par chance, dans mon cas, l'outil synclient utilisé sous Xubuntu 14.04 fonctionne bien.

On crée donc un répertoire bin/ dans notre dossier personnel, et l'on y crée un script bash toggle-trackpad.sh :

$ mkdir ~/bin
$ nano ~/bin/toggle-trackpad.sh

On y colle ceci :

#!/bin/bash
synclient TouchpadOff=$(synclient -l | grep -c 'TouchpadOff.*=.*0')

On enregistre et on rend ce script exécutable :

$ chmod +x ~/bin/toggle-trackpad.sh

Il nous faut maintenant indiquer le raccourcis clavier souhaité à l'environnement de bureau LXDE. On édite le fichier ~/.config/openbox/lubuntu-rc.xml et l'on y ajoute, à la fin de la section consacrée aux raccourcis clavier, donc juste avant </keyboard>, un nouveau raccourci clavier pour appeler le script toggle-touchpad.sh:

<keybind key="XF86TouchpadToggle">
    <action name="Execute">
        <command>~/bin/toggle-trackpad.sh</command>
    </action>
</keybind>

Une fois le fichier enregistré, pas la peine de redémarrer ou de quitter votre session! Il suffit de lancer la commande suivante, et vous devriez pouvoir utiliser le raccourci juste créé.

$ openbox --reconfigure

Réglage du volume

Mute/Unmute

Si le raccourci Fn+F10 coupait bien le son, il était impossible de le restaurer à son état précédent, le son restait sur "mute".

Merci à mutz sur le forum anglophone d'Ubuntu qui m'a permis de corriger ce petit souci avec cette petite commande :

$ amixer -D pulse set Master toggle

Elle permet de couper et de réactiver le son, alternativement. Il suffit juste alors de modifier la définition du raccourci clavier dans le fichier ~/.config/openbox/lubuntu-rc.xml.
Remplacer

<keybind key="XF86AudioMute">
  <action name="Execute">
    <command>amixer -q sset Master toggle
  </action>
</keybind>

par ceci:

<keybind key="XF86AudioMute">
  <action name="Execute">
    <command>amixer -D pulse set Master toggle
  </action>
</keybind>

Réglage du volume

Il semblerait que l'installation de certains paquets liés à PulseAudio et que l'utilisation de l'applet pasystray en lieu et place de l'applet fournie de base avec Lubuntu causent le non fonctionnement des raccourcis Fn+F11 et Fn+F12 (après une installation fraîche, aucun souci !).

Du coup, on suit la logique du point précédent et on ajoute l'option -D pulse à la commande amixer et tout rentre dans l'ordre ; il suffit donc de modifier dans le fichier ~/.config/openbox/lubuntu-rc.xml les raccourcis associés aux touches XF86AudioRaiseVolume et XF86AudioLowerVolume (notez qu'il est possible de modifier la valeur pour avoir un pas plus conséquent) :

<keybind key="XF86AudioRaiseVolume">
  <action name="Execute">
    <command>amixer -D pulse set Master 3%+ unmute</command>
  </action>
</keybind>
<keybind key="XF86AudioLowerVolume">
  <action name="Execute">
    <command>amixer -D pulse set Master 3%- unmute</command>
  </action>
</keybind>

Mais elle est où ma notification ?

Heu... Je ne sais pas... --' Mais grâce à Konrad Strack, on va en créer une ! On ne touche à pas grand chose de son travail, de son script, si ce n'est qu'on remplace les commandes amixer par celles qui fonctionnent bien chez nous avec PulseAudio.

Il faut au préalable avoir installé le paquet libnotify-bin pour bénéficier de la commande notify-send :

$ sudo apt-get install libnotify-bin

Il est possible de modifier le pas du réglage du volume (step=5) ainsi que, pour la notification en elle-même (la commande notify-send), la durée de la notification (l'argument -t 1000) ou les icones appelées (-i audio-volume-muted-panel).

On crée donc le script ~/bin/volume.sh :

#!/bin/bash

step=5

if [[ $# -eq 1 ]]; then
  case $1 in
    "up")
      amixer -D pulse set Master $step\%+;;
    "down")
      amixer -D pulse set Master $step\%-;;
    "toggle")
      amixer -D pulse set Master toggle;;
    *)
      echo "Invalid option";;
  esac
fi

muted=`amixer -D pulse get Master|tail -n1|sed -E 's/.*\[([a-z]+)\]/\1/'`
volume=`amixer -D pulse get Master|tail -n1|sed -E 's/.*\[([0-9]+)\%\].*/\1/'`

if [[ $muted == "off" ]]; then
  notify-send "Muted" -t 1000 -i audio-volume-muted-panel -h int:value:$volume
else
  notify-send "Volume" -t 1000 -i audio-volume-medium-panel -h int:value:$volume
fi

On le rend exécutable :

$ chmod +x ~/bin/volume.sh 

Et on n'a plus qu'à modifier la commande appelée par nos raccourcis claviers :

<keybind key="XF86AudioRaiseVolume">
    <action name="Execute">
        <command>volume.sh up</command>
    </action>
</keybind>
<keybind key="XF86AudioLowerVolume">
    <action name="Execute">
        <command>volume.sh down</command>
    </action>
</keybind>
<keybind key="XF86AudioMute">
    <action name="Execute">
        <command>volume.sh toggle</command>
    </action>
</keybind>

Sachez enfin qu'il est possible de personnaliser l'apparence des notifications.

Alternative

Ce script semblait par moment rencontrer quelques bugs sur mon netbook et une alternative semble être de passer par le daemon xfce4-volumed :

$ sudo apt-get install xfce4-volumed

Ensuite, il faut veiller à ce que xfce4-volumed soit bien lancé au démarrage ; pour ce faire, il suffit d'ouvrir le fichier /etc/xdg/autostart/xfce4-volumed.desktop et de commenter (en ajoutant un #) la dernière ligne :

OnlyShowIn=XFCE;

Il convient alors de commenter les raccourcis clavier liés au volume dans le fichier ~/.config/openbox/lubuntu-rc.xml.