アルクシン

{ SOMMAIRE }

Dernière édition : 24 mai 2019

Introduction

Void Linux est une distribution indépendante créée en 2008 par l’espagnol Juan Romero Pardines.

Ancien cadre de NetBSD, Pardines (alias « xtraeme ») souhaitait tester un nouveau gestionnaire de paquets pour GNU/Linux : XBPS (« X Binary Package System »). Ce dernier, comme beaucoup d’éléments constituant la Void, est fortement inspiré de ce que l’on trouve sur les systèmes BSD; elle en est probablement la distribution Linux la plus proche que l’on puisse trouver aujourd'hui.

Bien qu’à la base conçue uniquement comme support pour XBPS, Void devient de plus en plus populaire (chez les utilisateurs avancés) et la nouvelle équipe (Pardines a disparu de la circulation début 2018) redouble d’efforts pour la mettre en avant.

Suivant donc de très près la philosophie Unix et BSD, Void est conservatrice, mais cela ne l’empêche pas d’apporter quelques innovations. Alors qu’elle emploie depuis 2015 « runit » pour son système d’initialisation (init), elle fut par exemple l’une des premières à proposer l’imposant et controversé « systemd », en juin 2011 soit seulement 8 mois après le fer de lance Fedora.

Void est souvent comparée à Arch, car le gestionnaire de paquets, le minimalisme, et la difficulté sont assez similaires. À mes yeux toutefois, Void respecte bien plus le principe de design « KISS » (« Keep It Stupid Simple » soit « laisse ça stupidement simple »).

Points positifs

Points négatifs


On constate donc que certains avantages peuvent être des inconvénients, cela dépendra du point de vue de chacun...

Post‑installation

Des versions « live » pré‑configurées sont disponibles sur le site officiel, mais je vous les déconseille car même si elles semblent faciliter la vie, elles ont quelques bugs et ne correspondront évidemment pas totalement à ce que vous voudriez sur votre machine. Et très honnêtement, je ne vois pas l’intérêt d'installer une Void pré‑mâchée.

⇒ Télécharger l’image ISO (prendre « void‑live‑x86_64‑YYYYMMDD.iso »)
⇒ Manuel d’installation (sections : 3.2.1, 3.2.2, 3.2.3, 3.2.4)

L’installation de base d’une Void Linux est plutôt aisée car semi‑automatisée, mais elle ne concerne que le cœur du système et une poignée d'éléments. Tout le reste doit se faire à la main, c’est pourquoi je me suis concocté un petit script de post‑installation afin de tout expédier rapidement : il exécute quelques commandes et télécharge mes fichiers de configuration.

⇒ Télécharger mon script - actualisé le 11/05/19
⇒ Télécharger mes fichiers - actualisé le 24/05/19

Pensez à afficher les fichiers cachés (Ctrl + H) si vous explorez mon archive, sans quoi le dossier « /etc/skel » paraîtra vide.

IMPORTANT : vous pouvez essayer l’ensemble tel quel, mais gardez à l’esprit que c’est spécifiquement conçu pour mes besoins et pour mon ordinateur (par exemple pas de wifi par défaut ; si vous n’avez pas de carte graphique AMD il faut supprimer « /etc/X11/xorg.conf.d/20-amdgpu.conf »  sinon Xorg ne se lancera pas; d’autres fichiers contiennent des paramètres qui me sont propres). Je mets tout ceci à disposition pour vous permettre de comprendre comment finaliser votre propre installation facilement, libre à vous de vous en inspirer.

Voici comment je télécharge et lance le script depuis la console Void :
(après avoir terminé l’installation initiale via l’outil officiel « void-installer »)
sudo xpbs-install -S wget
wget https://alkusin.net/voidlinux/void-install.sh
chmod +x void-install.sh
./void-install.sh
Puis je me fais du thé...

J’obtiens ainsi un environnement Xfce prêt à l’emploi, l’activation des services de mon choix, un système réglé aux petits oignons, et quelques utilitaires de ma création pour se faciliter le quotidien. Entre autres particularités, je n’utilise pas de gestionnaire de session comme LightDM, je me connecte directement depuis la console, mes ~/.xinitrc et ~/.bash_profile s’occupent de lancer la session graphique automatiquement. Il y a aussi une session Openbox disponible, tout est déjà en place il suffit d’intervertir les deux dernières lignes du ~/.xinitrc. Notez que tout ce que je partage dans les chapitres qui suivent est déjà inclus.

⇒ Capture d’écran du résultat final

Je pense qu’une personne qui s’intéresse à Void connaît déjà bien Linux et saura adapter la recette à son goût sans trop de difficultés. Si vous n’avez pas de serveur pour héberger votre script et vos fichiers, vous pouvez utiliser GitHub ou un service cloud comme Dropbox par exemple, à condition qu’il accepte le téléchargement direct via « wget ».

Void‑Wizard

Ne lancez pas les scripts avec le préfixe « sh », certaines commandes ne fonctionneront pas à cause du shell par défaut.
(sudo) sh /chemin/vers/script.sh -> n’est pas correct
(sudo) /chemin/vers/script.sh -> est correct
cd /chemin/vers/ && (sudo) ./script.sh -> est correct

J’ai créé un script afin de me rendre la maintenance quotidienne/hebdomadaire de Void plus facile et rapide. Il suffit de taper le numéro de l’option désirée puis de valider avec « Entrée ». Voici les tâches qu’il peut effectuer :

⇒ Capture d’écran d’un terminal exécutant Void‑Wizard

Je vous invite à relire et modifier le code, surtout du « mode jeu », afin d’en savoir plus sur tous ces éléments et les adapter à votre configuration logicielle/matérielle. Le script nécessite les paquets suivants : cpufrequtils cpupower git lynx.

Script

/usr/local/bin/void-scripts/void-wizard.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux ### Required packages: sudo xbps-install -S cpufrequtils cpupower git lynx readonly CHKUPD=$(xbps-install -nuM | wc -l) spell1() { printf "Known manual interventions:\n\n" if [ $(lynx -dump -nolist https://voidlinux.org/news/archive.html | grep -i "intervention" | wc -l) -eq 0 ]; then printf "None" && sleep 1s else lynx -dump -nolist https://voidlinux.org/news/archive.html | grep -i "intervention" printf "\n" read -p "Visit news page for more details? [Y/n] " a if [ "$a" = "Y" ] || [ "$a" = "y" ]; then lynx https://voidlinux.org/news/archive.html fi fi clear sudo xbps-install -Su } spell2() { printf "Kernels marked for deletion:\n" if [ $(vkpurge list | wc -l) -eq 0 ]; then printf "None" && sleep 1s else vkpurge list printf "\n" read -p "Purge? [Y/n] " a if [ "$a" = "Y" ] || [ "$a" = "y" ]; then sudo vkpurge rm all else clear printf "Cancelled" && sleep 1s fi fi } spell3() { sudo xbps-remove -Oo } spell4() { rm -rfv ~/.thumbnails/ rm -rfv ~/.cache/thumbnails/ } spell5() { rm -rfv ~/.cache/ } spell6() { if [ $(xbps-query -l | grep "^uu" | wc -l) -eq 0 ]; then printf "None" && sleep 1s else xbps-query -l | grep "^uu" printf "\n" read -p "Reconfigure? [Y/n] " a if [ "$a" = "Y" ] || [ "$a" = "y" ]; then sudo xbps-reconfigure -a printf "\nDone" && sleep 1s else clear printf "Cancelled" && sleep 1s fi fi } spell7() { sudo xbps-pkgdb -a printf "\n" read -p "Press ENTER to close " } spell8() { printf "All source packages will be downloaded in 'github-void' hidden folder.\n" printf "\n" read -p "Continue? [y/n] " a if [ "$a" = "Y" ] || [ "$a" = "y" ]; then if [ ! -d $HOME/.github-void/void-packages/ ]; then printf "\nLocal repository 'void-packages' doesn't exist.\nInitializing... (git clone)\n\n" mkdir $HOME/.github-void/ cd $HOME/.github-void/ git clone git://github.com/void-linux/void-packages.git cd $HOME else printf "\nLocal repository 'void-packages' already exists.\nUpdating... (git pull)\n\n" cd $HOME/.github-void/void-packages/ git pull cd $HOME fi clear printf "\nAvailable restricted packages:\n(https://docs.voidlinux.org/xbps/repositories/restricted.html)\n\n" grep -rl '^restricted=' $HOME/.github-void/void-packages/srcpkgs/ | cut -d '/' -f 7 | sort -n printf "\n" read -p "Press ENTER to close " else clear printf "Cancelled" && sleep 1s fi } spell9() { printf "\n \e[1mG A M I N G M O D E\e[0m\n |\n |------------ ON -> 1\n |----------- OFF -> 2\n |---------- INFO -> 3\n |--------- ABORT -> 0\n |\n |\n" read -p " |__________ Option: " a if [ "$a" = "1" ]; then clear #printf "\n\nStop Conky...\n" #killall conky #printf "\n\nStop Redshift...\n" #killall redshift && killall redshift-gtk printf "\n\nDisable compositor...\n" xfconf-query -c xfwm4 -p /general/use_compositing -s false ## Xfwm only, adapt to other compositors or comment this line printf "\n\nBoost CPU perfs...\n" sudo cpupower -c all frequency-set -g performance ## Should work with any AMD or Intel CPUs printf "\n\nBoost GPU perfs...\n" echo 'performance' | sudo tee /sys/class/drm/card0/device/power_dpm_state ## Recent AMD GPUs only (RX and Vega series) echo 'high' | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level ## Recent AMD GPUs only (RX and Vega series) #printf "Set swap threshold to optimized 90%...\n" #sudo sysctl vm.swappiness=10 && sudo swapoff -a && sudo swapon -a ## Swappiness should always be set on "10" with "sudo mkdir /etc/sysctl.d/ && echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf" printf "\n\nDone!" printf "\nPS: CPU and GPU settings will revert to default after reboot." && sleep 2s ## Swappiness too elif [ "$a" = "2" ]; then clear #printf "\n\nLaunch Conky...\n" #conky -q #printf "\n\nLaunch Redshift...\n" #redshift-gtk printf "\n\nEnable compositor...\n" xfconf-query -c xfwm4 -p /general/use_compositing -s true ## Xfwm only, adapt to other compositors or comment this line printf "\n\nReset CPU perfs...\n" sudo cpupower -c all frequency-set -g ondemand ## Should work with any AMD or Intel CPUs; Recent Intel CPUs should use "powersave" instead of "ondemand" printf "\n\nReset GPU perfs...\n" echo 'balanced' | sudo tee /sys/class/drm/card0/device/power_dpm_state ## Recent AMD GPUs only (RX and Vega series) echo 'auto' | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level ## Recent AMD GPUs only (RX and Vega series) #printf "Set swap threshold to default 40%...\n" #sudo sysctl vm.swappiness=60 && sudo swapoff -a && sudo swapon -a ## Swappiness should always be set on "10" with "sudo mkdir /etc/sysctl.d/ && echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf" printf "\n\nDone!" && sleep 1s elif [ "$a" = "3" ]; then clear printf "This function disables compositor then enables CPU and GPU max frequencies;\nIt will only work with: Xfwm + AMD or Intel CPUs + recent AMD GPUs;\nLook at the script' source code (spell9) for more details.\n\n" read -p "Press ENTER to close " else clear printf "Cancelled" && sleep 1s fi } spell0() { exit 0 } clear while [ 1 ];do clear cat << "EOF" _ _ __ __ _ _ /\ /\___ (_) __| / / /\ \ (_)______ _ _ __ __| | \ \ / / _ \| |/ _` \ \/ \/ / |_ / _` | '__/ _` | \ V / (_) | | (_| |\ /\ /| |/ / (_| | | | (_| | \_/ \___/|_|\__,_| \/ \/ |_/___\__,_|_| \__,_| EOF printf "\n \e[1m\e[35m1\e[0m \e[2m=>\e[0m \e[1mRun system update\e[0m ($CHKUPD available) \e[1m\e[35m2\e[0m \e[2m=>\e[0m \e[1mClean old kernels\e[0m \e[1m\e[35m3\e[0m \e[2m=>\e[0m \e[1mClean obsolete packages\e[0m \e[1m\e[35m4\e[0m \e[2m=>\e[0m \e[1mClean thumbnails cache\e[0m \e[1m\e[35m5\e[0m \e[2m=>\e[0m \e[1mClean global user cache\e[0m \e[1m\e[35m6\e[0m \e[2m=>\e[0m \e[1mCheck misconfigured packages\e[0m \e[1m\e[35m7\e[0m \e[2m=>\e[0m \e[1mCheck installed packages errors\e[0m \e[1m\e[35m8\e[0m \e[2m=>\e[0m \e[1mList restricted source packages\e[0m \e[1m\e[35m9\e[0m \e[2m=>\e[0m \e[1mToggle gaming mode\e[0m \e[1m\e[35m0\e[0m \e[2m=>\e[0m \e[1mQuit\e[0m \e[2m_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\e[0m \n" printf " \e[1m\e[35mOPTION:\e[0m " read _cast case $_cast in 1) clear spell1 sleep 1s ;; 2) clear spell2 sleep 1s ;; 3) clear spell3 sleep 1s ;; 4) clear spell4 sleep 1s ;; 5) clear spell5 sleep 1s ;; 6) clear spell6 sleep 1s ;; 7) clear spell7 sleep 1s ;; 8) clear spell8 sleep 1s ;; 9) clear spell9 sleep 1s ;; 0) clear spell0 break ;; esac done

Lanceur

(Pour avoir un raccourci dans le menu d’applications - modifiez si besoin le chemin de « Exec ».)

/usr/local/share/applications/void-wizard.desktop - exécutable : oui (chmod +x)
Afficher/Masquer [Desktop Entry] Type=Application Name=Void Wizard Comment=Helper for Void maintenance Exec=/usr/local/bin/void-scripts/void-wizard.sh Icon=void-wizard Terminal=true Categories=System;

PS : il y a une icône disponible ici, et le thème Papirus en contient une également.

Void‑Updater

Ne lancez pas les scripts avec le préfixe « sh », certaines commandes ne fonctionneront pas à cause du shell par défaut.
(sudo) sh /chemin/vers/script.sh -> n’est pas correct
(sudo) /chemin/vers/script.sh -> est correct
cd /chemin/vers/ && (sudo) ./script.sh -> est correct

Cet outil indique le nombre de mises à jour disponibles et propose de les appliquer. De prime abord il semble faire un peu doublon avec le script « void‑wizard.sh » détaillé au‑dessus, mais « void‑updater » est surtout prévu pour être couplé avec un service qui, par défaut, fait une vérification chaque dimanche et ce toutes les six heures puis envoie une notification.

Si vous préférez quelque chose de plus léger et de plus simple, jetez un œil au prochain chapitre : "Plugin mises à jour pour Xfce".

Bien évidemment, vous pouvez à la place utiliser « octoxbps » qui est l’outil graphique (non‑officiel) en Qt de Void pour gérer les paquets et recevoir des notifications. OctoXBPS s’installe depuis les dépôts et s’utilise comme le Octopi de Manjaro.

Paquets requis : lynx snooze zenity. Modifiez les chemins si vous ne placez pas les scripts au même endroit que moi.

Script principal

Changez la variable « XTRM » si votre terminal n’est pas celui de Xfce.

/usr/local/bin/void-scripts/void-updater.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux ### Required packages: sudo xbps-install -S lynx zenity readonly AVUP=$(xbps-install -nuM | wc -l) readonly XTRM=xfce4-terminal if [ ! -d ~/.snooze/ ]; then mkdir ~/.snooze/ fi date +%c > ~/.snooze/updater if [ $AVUP -gt 0 ]; then zenity --title="Void Updates" --name="Void Updates" --question --width=280 --height=140 --ok-label="Yes" --cancel-label="No" \ --window-icon="/usr/share/icons/Papirus/64x64/apps/distributor-logo-void.svg" --icon-name="system-software-update" \ --text "$AVUP update(s) available.\nDo you want to proceed?" if [ $? = 0 ]; then $XTRM -x '/usr/local/bin/void-scripts/execute.sh' else exit 0 fi else exit 0 fi

Script auxiliaire

/usr/local/bin/void-scripts/execute.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux printf "Known manual interventions:\n\n" if [ $(lynx -dump -nolist https://voidlinux.org/news/archive.html | grep -i "intervention" | wc -l) -eq 0 ]; then printf "None" && sleep 1s else lynx -dump -nolist https://voidlinux.org/news/archive.html | grep -i "intervention" printf "\n" read -p "Visit news page for more details? [Y/n] " a if [ "$a" = "Y" ] || [ "$a" = "y" ]; then lynx https://voidlinux.org/news/archive.html fi fi clear sudo xbps-install -Su read -p "Done! Press ENTER to close. "

Lanceur

/usr/local/share/applications/void-updater.desktop - exécutable : oui (chmod +x)
Afficher/Masquer [Desktop Entry] Type=Application Name=Void Updater Comment=Updates notification Exec=/usr/local/bin/void-scripts/void-updater.sh Icon=system-software-update Terminal=false Categories=System;

Service

ATTENTION ! Cela semble fonctionner, mais je ne maîtrise pas encore bien « snooze » et je n’ai pas testé assez longtemps. Il peut y avoir des bizarreries, c’est un « Work‑In‑Progress ». Toutefois, il ne devrait y avoir aucune casse sérieuse.

Si vous avez des améliorations/corrections à me proposer, merci de m’envoyer un message sur Reddit ou un email.

Pensez à changer « xfce4‑session » si vous n’utilisez pas Xfce, et toutes les occurences de « alex » par votre nom d’utilisateur.

/etc/sv/void-updater/run - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/sh if pgrep -x xfce4-session > /dev/null then export DISPLAY=:0 export XAUTHORITY="/home/alex/.Xauthority" exec snooze -w0 -H/6 -t /home/alex/.snooze/updater \ chpst -u alex:alex /usr/local/bin/void-scripts/void-updater.sh else sleep 5m sv reload void-updater fi

sudo chmod 755 /etc/sv/void-updater/run
sudo ln -s /etc/sv/void-updater /var/service/

Plugin mises à jour pour Xfce

Pour avoir une alerte sur les mises à jour disponibles sans passer par un utilitaire aussi gros que « Void‑Updater », vous pouvez utiliser Conky, ou mieux encore un plugin très puissant conçu pour le tableau de bord de Xfce : « genmon  ».

Une fois paramétré, le plugin va vérifier toutes les six heures si des paquets peuvent être mis à jour. Le cas échéant, une icône apparaîtra dans le panel avec un compteur au‑dessus de celle‑ci, ainsi qu'une liste détaillée au survol dans une infobulle. Il n’y aura qu’à cliquer sur l’icône pour mettre à jour le système. Regardez cette capture d’écran pour voir à quoi ça ressemblera.

Pour installer le plugin :

sudo xbps-install -S xfce4-genmon-plugin

Il suffit ensuite de l’ajouter au panel (« Moniteur Générique »), puis de le configurer comme ceci :

Commande : /usr/local/bin/void-scripts/genmonup-check.sh
Étiquette : décoché
Périodes : 21600,00
Nom et taille de la police : identique à la police système

Changez le chemin du script (interprété) si nécessaire ; la période est en secondes, « 21600 » équivaut donc à 6 heures (H x 3600 = S).

Script interprété

/usr/local/bin/void-scripts/genmonup-check.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux readonly NUPD=$(xbps-install -nuM | wc -l) readonly LUPD=$(xbps-install -nuM | awk '{print $1}') readonly TEXT1="mise(s) à jour disponible(s) :" readonly TEXT2="Cliquer sur l'icône pour appliquer." readonly TRMNL="xfce4-terminal" PANEL="<click>$TRMNL -x '/usr/local/bin/void-scripts/genmonup-launch.sh'</click>" PANEL+="<img>$HOME/.genmonup-icon.svg</img>" PANEL+="<txt><span size='9000' weight='bold' rise='17000'>$NUPD</span></txt>" TOOLTIP="<tool>" TOOLTIP+="<span size='11000' weight='bold'>$NUPD $TEXT1</span>\n" TOOLTIP+="<span size='9000'>$LUPD</span>\n\n" TOOLTIP+="<span size='9000' weight='bold'>$TEXT2</span>" TOOLTIP+="</tool>" if [ $NUPD -gt 0 ]; then echo -e "${PANEL}" echo -e "${TOOLTIP}" else echo "" fi

Changez le chemin du script « genmonup-launch.sh » si vous ne le placez pas au même endroit que moi. Vous pouvez télécharger l’icône dédiée ici. Ouvrez-la dans un éditeur de texte puis changez le code couleur hexadécimal si vous le souhaitez.

Script lancé

/usr/local/bin/void-scripts/genmonup-launch.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux ### Check manual interventions before updating #printf "Known manual interventions:\n\n" #if [ $(lynx -dump -nolist https://voidlinux.org/news/archive.html | grep -i "intervention" | wc -l) -eq 0 ]; then # printf "None" && sleep 1s #else # lynx -dump -nolist https://voidlinux.org/news/archive.html | grep -i "intervention" # printf "\n" # read -p "Visit news page for more details? [Y/n] " a # if [ "$a" = "Y" ] || [ "$a" = "y" ]; then # lynx https://voidlinux.org/news/archive.html # fi #fi #clear sudo xbps-install -Su xfce4-panel --plugin-event=genmon-5:refresh:bool:true printf "System updated!" && sleep 1s ### Delete obsolete packages and clean cache after updating clear printf "Cleaning cache and obsolete packages...\n\n" sudo xbps-remove -Oo ### Check obsolete kernels after updating clear printf "Kernels marked for deletion:\n\n" if [ $(vkpurge list | wc -l) -eq 0 ]; then printf "None" && sleep 1s else vkpurge list printf "\n" read -p "Purge? [Y/n] " a if [ "$a" = "Y" ] || [ "$a" = "y" ]; then sudo vkpurge rm all else clear printf "Cancelled" && sleep 1s fi fi ### End script clear read -p "Done! Press ENTER to close. "

⁎⁎⁎

Il est important de modifier le numéro de la dernière ligne du second script (ici « 5 ») par l’identifiant de votre plugin, vous pourrez le trouver en allant dans les préférences du tableau de bord, onglet « Éléments », puis en survolant « Moniteur Générique » pour que les détails apparaissent. Si vous ne le faîtes pas le plugin ne s’actualisera pas avant la période définie.

Vous pouvez décommenter les lignes entre « printf » et « clear » (inclus) du second script pour pouvoir consulter les interventions manuelles avant de mettre à jour (nécessite le paquet « lynx »). Dans le premier script modifiez le chemin de l’icône si vous n’utilisez pas la même, ainsi que la variable « TRMNL » si votre terminal n’est pas celui de Xfce. Changez-y aussi les tailles du texte (size='11000', size='9000') et la hauteur d’élévation du compteur (rise='17000') si l’affichage n’est pas optimal.

Le second script, en plus d’effectuer les mises à jour, s’occupera également de nettoyer le cache et les paquets obsolètes, ainsi que les anciens noyaux. Si vous souhaitez désactiver ces fonctionnalités, il suffit de commenter les blocs correspondants.

PS : l’infobulle peut mettre du temps à s’afficher, voire ne pas s’afficher du tout si la liste des paquets est trop longue.

Thèmes personnalisés

Ne lancez pas les scripts avec le préfixe « sh », certaines commandes ne fonctionneront pas à cause du shell par défaut.
(sudo) sh /chemin/vers/script.sh -> n’est pas correct
(sudo) /chemin/vers/script.sh -> est correct
cd /chemin/vers/ && (sudo) ./script.sh -> est correct

J’ai modifié le thème GTK Plata et les icônes Papirus afin d’obtenir une interface moderne (mais sobre) ayant une identité propre à Void. Tout se fait grâce à deux scripts détaillés ici. Vous pouvez les prendre dans mon archive ou directement copier‑coller les deux blocs de code qui suivent chacun dans un fichier « .sh » respectif à rendre exécutable puis à lancer dans un terminal.

⇒ Capture d’écran #1
⇒ Capture d’écran #2

Je recommande soit les polices « Ubuntu 11 » et « Ubuntu Mono 13 » soit « Noto Sans 11 » et « Noto Sans Mono 11 » (installables depuis les dépôts).

Servez‑vous de ces scripts de temps en temps pour mettre à jour les thèmes, car ils évoluent régulièrement.

Script GTK

Note : les environnements MATE et KDE Plasma ne sont pas supportés par le thème GTK en upstream.

/usr/local/bin/void-scripts/plata-custom-void.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux echo "Cleaning older versions..." sudo xbps-remove -Ry plata-theme sudo rm -rf /usr/share/themes/{Plata,Plata-Compact,Plata-Lumine,Plata-Lumine-Compact,Plata-Noir,Plata-Noir-Compact} echo "Installing requirements..." sudo xbps-install -Sy autoconf automake ImageMagick inkscape optipng gdk-pixbuf-devel glib-devel libxml2 sassc parallel pkg-config ttf-ubuntu-font-family wget xz echo "Downloading upstream..." cd /tmp wget -O - https://gitlab.com/tista500/plata-theme/-/archive/master/plata-theme-master.tar.gz | tar xz cd plata-theme-master echo "Customizing upstream..." for thirdrc in src/gtk/gtk-2.0/3rd-party*; do cat << "EOF" >> "$thirdrc" ### Xfce panel tasklist style "xfce-tasklist-style" { XfceTasklist::max-button-length = 300 XfceTasklist::ellipsize-mode = PANGO_ELLIPSIZE_END XfceTasklist::minimized-icon-lucency = 50 } class "XfceTasklist" style "xfce-tasklist-style" EOF done ### with GNOME & CINNAMON support #sed -i "s/Roboto/Ubuntu, Roboto/g" src/shell/sass/cinnamon/_common.scss #sed -i "s/Roboto/Ubuntu, Roboto/g" src/shell/sass/gnome-shell/_common.scss #sed -i 's/symbolic/regular/g' src/shell/sass/gnome-shell/_common.scss #./autogen.sh --prefix=/usr --enable-parallel --enable-plank --with-selection_color=#478061 --with-accent_color=#478061 --with-suggestion_color=#478061 --with-destruction_color=#478061 ### without GNOME & CINNAMON support ./autogen.sh --prefix=/usr --enable-parallel --enable-plank --disable-gnome --disable-cinnamon --disable-flashback --with-selection_color=#478061 --with-accent_color=#478061 --with-suggestion_color=#478061 --with-destruction_color=#478061 echo "Generating themes..." make echo "Installing themes..." sudo make install sudo cp /usr/share/themes/Plata-Noir/gtksourceview/plata-dark.xml /usr/share/gtksourceview-3.0/styles/ sudo cp /usr/share/themes/Plata-Lumine/gtksourceview/plata-light.xml /usr/share/gtksourceview-3.0/styles/ ### horizontal mirror to maximize-toggled buttons for leftside use (xfwm & openbox) sudo mogrify -flop /usr/share/themes/{Plata,Plata-Lumine,Plata-Noir}/xfwm4/maximize-toggled-active.png sudo mogrify -flop /usr/share/themes/{Plata,Plata-Lumine,Plata-Noir}/xfwm4/maximize-toggled-inactive.png sudo mogrify -flop /usr/share/themes/{Plata,Plata-Lumine,Plata-Noir}/xfwm4/maximize-toggled-prelight.png sudo mogrify -flop /usr/share/themes/{Plata,Plata-Lumine,Plata-Noir}/xfwm4/maximize-toggled-pressed.png sudo wget -qO /usr/share/themes/Plata/openbox-3/max_toggled.xbm https://alkusin.net/voidlinux/extras/themes/openbox/leftside_max_toggled.xbm sudo wget -qO /usr/share/themes/Plata-Lumine/openbox-3/max_toggled.xbm https://alkusin.net/voidlinux/extras/themes/openbox/leftside_max_toggled.xbm sudo wget -qO /usr/share/themes/Plata-Noir/openbox-3/max_toggled.xbm https://alkusin.net/voidlinux/extras/themes/openbox/leftside_max_toggled.xbm ### openbox menu with void colors sudo wget -qO /usr/share/themes/Plata/openbox-3/themerc https://alkusin.net/voidlinux/extras/themes/openbox/plata-std-ob-void sudo wget -qO /usr/share/themes/Plata-Lumine/openbox-3/themerc https://alkusin.net/voidlinux/extras/themes/openbox/plata-lte-ob-void sudo wget -qO /usr/share/themes/Plata-Noir/openbox-3/themerc https://alkusin.net/voidlinux/extras/themes/openbox/plata-drk-ob-void echo "Cleaning downloaded files..." cd .. rm -rf plata-theme-master clear echo "Plata-Custom-Void: done!"

Commentez les lignes de la section « horizontal mirror » si vos boutons de fenêtre sont à droite.

Script icônes

/usr/local/bin/void-scripts/papirus-custom-void.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux echo "Installing Papirus from source..." sudo xbps-remove -Ry papirus-icon-theme wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/install.sh | sh sleep 2s echo "Changing colors..." sudo find /usr/share/icons/Papirus/*/places -type f -name "*.svg" -exec sed -i "s/5294e2/478061/gI" {} \; sudo find /usr/share/icons/Papirus/*/places -type f -name "*.svg" -exec sed -i "s/4877b1/2F5440/gI" {} \; sudo find /usr/share/icons/Papirus/*/places -type f -name "*.svg" -exec sed -i "s/1d344f/333333/gI" {} \; clear echo "Papirus-Custom-Void: done!"

⁎⁎⁎

Pour d’autres couleurs que le vert de Void, des scripts similaires sont disponibles ci-dessous. Si vous utilisez les icônes Papirus par défaut ou ma version « Void » après ces variantes, il faudra réinitialiser les icônes avec la commande papirus-folders -D.

Fichier bashrc

Voici mes paramètres « bash » contenant quelques alias pratiques :

~/.bashrc - exécutable : non
Afficher/Masquer # .bashrc ## If not running interactively, don't do anything [[ $- != *i* ]] && return THEMESEL() { clear printf "Select a theme:\n 0) Cancel\n 1) Standard\n 2) Dark\n 3) Light\n\n" read -p "Option: " a if [ "$a" = "1" ]; then xfconf-query -c xfwm4 -p /general/theme -s Plata xfconf-query -c xsettings -p /Net/ThemeName -s Plata-Compact xfconf-query -c xsettings -p /Net/IconThemeName -s Papirus xfconf-query -c xsettings -p /Gtk/CursorThemeName -s Vanilla-DMZ sed -i 's/DMZ-AA/DMZ/g' ~/.Xresources sed -i 's/DMZ-AA/DMZ/g' ~/.gtkrc-2.0 sed -i 's/DMZ-AA/DMZ/g' ~/.config/gtk-3.0/settings.ini cp .xfce-wireframe-mouse-dark.png .face #sed -i 's/grayscale-dark/grayscale-light/g' ~/.config/xfce4/panel/whiskermenu-1.rc sed -i 's/111111/f5f5f5/g' ~/.genmonup-icon.svg elif [ "$a" = "2" ]; then xfconf-query -c xfwm4 -p /general/theme -s Plata-Noir xfconf-query -c xsettings -p /Net/ThemeName -s Plata-Noir-Compact xfconf-query -c xsettings -p /Net/IconThemeName -s Papirus-Dark xfconf-query -c xsettings -p /Gtk/CursorThemeName -s Vanilla-DMZ sed -i 's/DMZ-AA/DMZ/g' ~/.Xresources sed -i 's/DMZ-AA/DMZ/g' ~/.gtkrc-2.0 sed -i 's/DMZ-AA/DMZ/g' ~/.config/gtk-3.0/settings.ini cp .xfce-wireframe-mouse-light.png .face #sed -i 's/grayscale-dark/grayscale-light/g' ~/.config/xfce4/panel/whiskermenu-1.rc sed -i 's/111111/f5f5f5/g' ~/.genmonup-icon.svg elif [ "$a" = "3" ]; then xfconf-query -c xfwm4 -p /general/theme -s Plata-Lumine xfconf-query -c xsettings -p /Net/ThemeName -s Plata-Lumine-Compact xfconf-query -c xsettings -p /Net/IconThemeName -s Papirus-Light xfconf-query -c xsettings -p /Gtk/CursorThemeName -s Vanilla-DMZ-AA sed -i 's/DMZ/DMZ-AA/g' ~/.Xresources sed -i 's/DMZ/DMZ-AA/g' ~/.gtkrc-2.0 sed -i 's/DMZ/DMZ-AA/g' ~/.config/gtk-3.0/settings.ini cp .xfce-wireframe-mouse-dark.png .face #sed -i 's/grayscale-light/grayscale-dark/g' ~/.config/xfce4/panel/whiskermenu-1.rc sed -i 's/f5f5f5/111111/g' ~/.genmonup-icon.svg fi xfce4-panel -r printf "\nDone! You may have to login again to apply changes." sleep 2s clear } ## Change themes to standard or dark or light alias change-theme='THEMESEL' ## Number of available package updates alias vchup='xbps-install -nuM | wc -l' ## Update packages alias vpu='sudo xbps-install -Su' ## Install package <package name> alias vpi='sudo xbps-install -S' ## Remove package <package name> alias vpr='sudo xbps-remove -R' ## Search package <package name> alias vpq='xbps-query -Rs' ## Clean obsolete packages alias vpc='sudo xbps-remove -Oo' ## Refresh Xfce updates icon alias genmon-refresh='xfce4-panel --plugin-event=genmon-5:refresh:bool:true' ## Edit notes displayed in Conky alias notes='nano ~/.conkytodo' ## Install/Update custom Void gtk and icon themes alias void-gtk='/usr/local/bin/void-scripts/plata-custom-void.sh' alias void-ico='/usr/local/bin/void-scripts/papirus-custom-void.sh' ## Switch on/off Xfce compositor - could help in some games alias toggle-compositor='xfconf-query -c xfwm4 -p /general/use_compositing -T' ## Enhance some commands alias ls='ls --color=auto --group-directories-first' alias grep='grep --color=auto' ## Custom prompt export PS1="\[\033[38;5;222m\][\u@\h]\[$(tput sgr0)\]\[\033[38;5;137m\]\\$\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"

Écran de verrouillage

J’aime bien avoir une grande horloge en fond d’écran lorsque je le verrouille, alors j’utilise un mélange de « tty‑clock » et « physlock ». Ce dernier est plus sécurisé que beaucoup d’autres car il bloque aussi l’accès à la console.

Paquets requis : physlock tty-clock wmctrl. Il faudra adapter une partie du code si vous n’utilisez pas Xfce.

/usr/local/bin/void-scripts/lock.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux ### Required packages: sudo xbps-install -S physlock tty-clock wmctrl wmctrl -k on xfconf-query -c xfce4-panel -p /panels/panel-1/autohide-behavior -s 2 xfce4-terminal --fullscreen --hide-menubar --hide-scrollbar --color-bg=#000 --font='Monospace 35' -e 'tty-clock -cDC 7' && if ! pgrep -x "tty-clock" > /dev/null; then physlock -dsm xfconf-query -c xfce4-panel -p /panels/panel-1/autohide-behavior -s 0 wmctrl -k off fi exit 0

Il suffit ensuite d’indiquer l’emplacement du script comme commande de verrouillage dans votre menu, c’est par exemple possible avec le menu « Whisker » de Xfce. Vous pouvez aussi l’assigner à un raccourci clavier.

On quitte l’horloge en appuyant sur la touche « Q » puis on tape le mot de passe lorsqu’il est demandé.

La commande « wmctrl » minimise toutes les fenêtres et la commande « xfconf » masque le tableau de bord (changez le numéro « 1 » si ce n’est pas l’identifiant de votre panel), cela assure plus de confidentialité surtout si vous réglez votre terminal pour qu’il soit transparent (ce qui donne un bel effet à l'horloge). Bien évidemment tout est restauré quand on quitte l’écran de verrouillage.

Logo dans la console

Ne lancez pas les scripts avec le préfixe « sh », certaines commandes ne fonctionneront pas à cause du shell par défaut.
(sudo) sh /chemin/vers/script.sh -> n’est pas correct
(sudo) /chemin/vers/script.sh -> est correct
cd /chemin/vers/ && (sudo) ./script.sh -> est correct

Un petit script pour régénérer le fichier « /etc/issue » afin d’afficher le logo de Void dans la console Linux (TTY), plutôt sympa si comme moi vous vous connectez depuis cette dernière. Copiez‑collez le code tel quel, l’art ASCII sera bien appliqué correctement même si la disposition dans le script semble bizarre. PS : le logo ASCII original vient du programme « neofetch », je l’ai seulement transposé.

⇒ Capture d’écran

voidtty.sh - exécutable : oui (chmod +x)
Afficher/Masquer #!/bin/bash # https://alkusin.net/voidlinux echo -ne "\e[H\e[2J" > /etc/issue echo -ne "\e[2m" >> /etc/issue tee -a /etc/issue >/dev/null << "EOF" \s \r (\l) EOF echo -e "\e[0;32m __.;=====;.__" >> /etc/issue echo -e " _.=+==++=++=+=+===;." >> /etc/issue echo -e " -=+++=+===+=+=+++++=_" >> /etc/issue echo -e " . -=:\`\` \`--==+=++==." >> /etc/issue echo -e " _vi, \` --+=++++:" >> /etc/issue echo -e " .uvnvi. _._ -==+==+." >> /etc/issue echo -e " .vvnvnI\` .;==|==;. :|=||=|." >> /etc/issue echo -e " \e[1;32m+QmQQm\e[0;32mpvvnv; \e[1;32m_yYsyQQWUUQQQm #QmQ#\e[0;32m:\e[1;32mQQQWUV\$QQm." >> /etc/issue echo -e " -QQWQW\e[0;32mpvvo\e[1;32mwZ?.wQQQE\e[0;32m==<\e[1;32mQWWQ/QWQW.QQWW\e[0;32m(: \e[1;32mjQWQE" >> /etc/issue echo -e " -\$QQQQmmU\' jQQQ\@\e[0;32m+=<\e[1;32mQWQQ)mQQQ.mQQQC\e[0;32m+;\e[1;32mjWQQ\@'" >> /etc/issue echo -e " -\$WQ8Y\e[0;32mnI: \e[1;32mQWQQwgQQWV\e[0;32m\`\e[1;32mmWQQ.jQWQQgyyWW\@!\e[0;32m" >> /etc/issue echo -e " -1vvnvv. \`~+++\` ++|+++" >> /etc/issue echo -e " +vnvnnv, \`-|===" >> /etc/issue echo -e " +vnvnvns. . :=-" >> /etc/issue echo -e " -Invnvvnsi..___..=sv=. \`" >> /etc/issue echo -e " +Invnvnvnnnnnnnnvvnn;." >> /etc/issue echo -e " ~|Invnvnvvnvvvnnv}+\`" >> /etc/issue echo -e " -~|{*l}*|~\e[0m" >> /etc/issue echo -e "\e[0m" >> /etc/issue echo -e " " >> /etc/issue echo -e " " >> /etc/issue

sudo ./voidtty.sh

Il n’y a plus qu’à redémarrer ! Si vous ne voulez pas effacer les messages qui ont défilé lors du démarrage avant l’apparition du logo (ils peuvent être utiles pour diagnostiquer un problème quelconque), vous pouvez supprimer la première commande, mais dans ce cas retirez également un des deux signes (>) de la seconde commande (echo -ne "\e[2m" >> /etc/issue).

Pour ne pas avoir à taper le nom d’utilisateur mais seulement le mot de passe (tty1 uniquement) :
sudo sed -i "s/--noclear/--noclear\ --skip-login\ --login-options=$USER/g" /etc/sv/agetty-tty1/conf
(il est toujours possible d’avoir l’invite utilisateur si l’on se trompe de mot de passe)

Performances maximales

Quelques commandes nécessaires pour exploiter au mieux les capacités du PC dans un cadre vidéoludique.

Pour information, tout ce qui suit est activable automatiquement dans mon script « Void‑Wizard ».

Processeur

(testé avec un AMD Ryzen5 - les valeurs peuvent être différentes pour un autre modèle)

Voir les fréquences actuelles :
sudo cpupower -c all frequency-info | grep -P 'current CPU frequency'

Augmenter les fréquences :
sudo cpupower -c all frequency-set -g performance

Revenir aux fréquences par défaut :
sudo cpupower -c all frequency-set -g ondemand
Pour certains processeurs Intel, il vaut mieux indiquer « powersave » au lieu de « ondemand ».

Les changements seront réinitialisés à l’extinction de la machine. Néanmoins vous pouvez facilement créer un service « runit » avec des commandes similaires pour que ce soit effectif dès le démarrage.

Carte graphique

(testé avec une AMD RX580 - les valeurs peuvent être différentes pour un autre modèle)

Voir les fréquences actuelles :
cat /sys/class/drm/card0/device/power_dpm_state
cat /sys/class/drm/card0/device/power_dpm_force_performance_level

Augmenter les fréquences :
echo 'performance' | sudo tee /sys/class/drm/card0/device/power_dpm_state
echo 'high' | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level

Revenir aux fréquences par défaut :
echo 'balanced' | sudo tee /sys/class/drm/card0/device/power_dpm_state
echo 'auto' | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level

Les changements seront réinitialisés à l’extinction de la machine. Néanmoins vous pouvez facilement créer un service « runit » avec des commandes similaires pour que ce soit effectif dès le démarrage.

Mémoire virtuelle

La mémoire virtuelle « swap » est activée quand la mémoire physique « RAM » est sollicitée à 40% ou plus. C’est un réglage taillé pour les serveurs mais pas pour du domestique. La swap peut ralentir le disque dur, alors si vous avez beaucoup de RAM vous devriez baisser le « swappiness » de 60 à 10 pour que la swap ne se déclenche plus qu’à 90% de RAM utilisée.

Réglage temporaire du swappiness :
sudo sysctl vm.swappiness=10
sudo swapoff -a && sudo swapon -a

Les changements seront réinitialisés à l’extinction de la machine, sauf si vous appliquez la procédure qui suit :

Réglage permanent du swappiness :
sudo mkdir /etc/sysctl.d/
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf

Programmes en arrière‑plan

Désactiver le compositeur de Xfwm :
xfconf-query -c xfwm4 -p /general/use_compositing -s false

Désactiver Redshift :
killall redshift && killall redshift-gtk

Désactiver Conky :
killall conky

Arrêter un service (par exemple « void‑updater » qui peut être gênant) :
sudo sv stop void-updater

Trucs et astuces

Langue globale du système

Pour voir quels langages sont disponibles sur votre système :

locale -a

Pour s’assurer que le langage voulu (ici le français) soit bien appliqué à tous les niveaux :

Manipulations à effectuer en administrateur.

Ajouter ou modifier ces lignes dans « /etc/locale.conf » :
LANG=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8

Ajouter ou modifier cette ligne dans « /etc/environment » :
LANG=fr_FR.UTF-8

Puis redémarrer pour appliquer. Pour vérifier que tout est correctement défini :

locale

Note : le gestionnaire de paquets XBPS et certains autres composants n’ont pas de traductions.

⁎⁎⁎

Optimisation du texte

Afin de profiter d’un rendu correct, et surtout pour régler le problème de polices manquantes sur certaines pages web, il suffit d’en installer qui soient métriquement compatibles avec celles de Microsoft, puis de créer un fichier de configuration approprié :

Polices de substitution :

sudo xbps-install -S fonts-croscore-ttf

Configuration :

~/.config/fontconfig/fonts.conf - exécutable : non
Afficher/Masquer <?xml version='1.0'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <match target="font"> <edit mode="assign" name="antialias"> <bool>true</bool> </edit> <edit mode="assign" name="hinting"> <bool>true</bool> </edit> <edit mode="assign" name="autohint"> <bool>false</bool> </edit> <edit mode="assign" name="hintstyle"> <const>hintslight</const> </edit> <edit mode="assign" name="rgba"> <const>rgb</const> </edit> <edit mode="assign" name="lcdfilter"> <const>lcddefault</const> </edit> <edit mode="assign" name="embeddedbitmap"> <bool>false</bool> </edit> <alias> <family>Arial</family> <prefer><family>Arimo</family></prefer> </alias> <alias> <family>Helvetica</family> <prefer><family>Arimo</family></prefer> </alias> <alias> <family>Times</family> <prefer><family>Tinos</family></prefer> </alias> <alias> <family>Courier</family> <prefer><family>Tinos</family></prefer> </alias> <alias> <family>Consolas</family> <prefer><family>Cousine</family></prefer> </alias> <alias> <family>Terminal</family> <prefer><family>Cousine</family></prefer> </alias> </match> </fontconfig>

⁎⁎⁎

Pavé numérique au démarrage

Manipulations à effectuer (en administrateur) dans le fichier « /etc/rc.local ».

Ajouter ce bloc :
# Numlock at boot
for tty in /dev/tty[1-6]*;
do
setleds -D +num < $tty > /dev/null
done

⁎⁎⁎

Pulseaudio

Manipulations à effectuer (en administrateur) dans le fichier « /etc/pulse/daemon.conf ».

Pour que la journalisation ne surcharge plus inutilement le processeur :

Modifier la ligne « log-level » qui est sur « notice » par défaut en :
log-level = error

(et décommenter en retirant le point-virgule du début si il y en a un)

Bénéficier d’une meilleure qualité audio :

Modifier les lignes qui suivent avec les valeurs indiquées :
default-sample-format = s24le
default-sample-rate = 44100
alternate-sample-rate = 48000


(et décommenter en retirant le point-virgule du début si il y en a un)

⁎⁎⁎

Changer les DNS

Créer (en administrateur) le fichier « /etc/resolv.conf.head » avec le contenu suivant :

### DNS Watch
#nameserver 84.200.69.80
#nameserver 84.200.70.40

### UncensoredDNS
#nameserver 91.239.100.100
#nameserver 89.233.43.71

### FrenchDataNetwork
#nameserver 80.67.169.12
#nameserver 80.67.169.40

### Quad9
#nameserver 9.9.9.9
#nameserver 149.112.112.112

### Cloudflare
#nameserver 1.1.1.1
#nameserver 1.0.0.1

### Google Public DNS
#nameserver 8.8.8.8
#nameserver 8.8.4.4


(et décommenter en retirant chaque # les deux lignes « nameserver » du fournisseur que vous souhaitez utiliser)

Pratique si vous avez simplement gardé « dhcpcd » au lieu d’installer un gestionnaire comme NetworkManager.

⁎⁎⁎

Bloquer les mineurs de crypto‑monnaie

Ils utilisent les ressources de votre ordinateur sans votre consentement lorsque vous naviguez sur de (trop) nombreux sites web. Ajoutez (en administrateur) l’intégralité de ce fichier à la fin de « /etc/hosts » pour les en empêcher.

Fonds d’écran

Ces arrières‑plans sont inclus dans l’archive du second chapitre.

En cours de rédaction...

Ces arrières‑plans ne sont pas inclus dans l’archive du second chapitre (fichiers lourds).

En cours de rédaction...