Configuration de Regolith sur une Debian 12
Après l'installation de Regolith sur une Debian 12, il faut faire les différentes configurations nécessaires à son bon fonctionnement. Et ce n'est pas une mince affaire...
La première chose à noter, c'est que je m'amuse à installer une "distribution" assez particulière et qu'en plus je passe d'X11 avec i3 à Wayland avec Sway. Et ça change plus de choses que ce que j'aurais pu penser au départ. Il y a un article indispensable à lire pour comprendre les changements (Foundations for Regolith on Wayland (GSoC'22)). Évidemment j'ai trouvé cet article après m'être déjà bien cassé la tête...
Quelques changements :
- La plupart de la documentation de Regolith est axée sur i3... Passer à Sway c'est se retrouver avec peu de documentation...
- Rofi est remplacé par Ilia
- Certains programmes ne marchent plus à cause du passage à Wayland (greenclip par exemple)
Avant de m'attaquer à tout ce que ces changements impliquent, j'ai tout d'abord commencé par réinstaller et reconfigurer les essentiels pour pouvoir travailler.
- Installation de Firefox (et réimport du profil que j'avais sauvegardé)
- Installation de Thunderbird (et réimport du profil également)
- Réinstallation de plein d'autres petits programmes utiles et configurations (SSH, Nextcloud, Ferdium, Signal, etc.)
- Configuration de bash, de mes alias, etc...
Je ne m'attarderai pas sur tout ça, c'est du classique. Passons au cœur de cet article et aux configurations liées à Regolith sur une Debian 12 Bookworm avec Wayland et Sway!
Changer le terminal par défaut :
Par défaut, le raccourci zutty
alors que gnome-terminal
est tout bien configuré avec le thème lié à Regolith. Voilà comment on vérifie tout ça et comment on change ensuite le terminal appelé par le raccourcis :
$ cat /usr/share/regolith/common/config.d/15_base_launchers
###############################################################################
# Launcher dialogs
###############################################################################
## Launch // Terminal // < > Enter ##
set_from_resource $wm.binding.terminal wm.binding.terminal Return
bindsym $mod+$wm.binding.terminal exec --no-startup-id /usr/bin/x-terminal-emulator
(...)
On voit que le raccourci lance x-terminal-emulator
. On peut regarder sur quoi il pointe :
$ ls -al /usr/bin/x-terminal-emulator
lrwxrwxrwx 1 root root 37 25 sep 2023 /usr/bin/x-terminal-emulator -> /etc/alternatives/x-terminal-emulator
$ ls -al /etc/alternatives/x-terminal-emulator
lrwxrwxrwx 1 root root 31 27 sep 11:43 /etc/alternatives/x-terminal-emulator -> /usr/bin/zutty
Il pointe sur zutty
, on va changer ça :
$ sudo update-alternatives --config x-terminal-emulator
Il existe 4 choix pour l'alternative x-terminal-emulator (qui fournit /usr/bin/x-terminal-emulator).
Sélection Chemin Priorité État
------------------------------------------------------------
* 0 /usr/bin/zutty 40 mode automatique
1 /usr/bin/foot 20 mode manuel
2 /usr/bin/footclient 10 mode manuel
3 /usr/bin/gnome-terminal.wrapper 40 mode manuel
4 /usr/bin/zutty 40 mode manuel
Appuyez sur <enter> pour conserver le choix actuel [*], ou tapez le numéro de sélection : 3
Changer les raccourcis clavier :
Là, on rentre dans un vrai dossier... Ça devrait être super simple. Sauf que... Ça l'est pas du tout. Il y a des configurations un peu partout et chacun a sa propre solution pour changer les raccourcis par défaut. J'ai trouvé par exemple une explications sur ce fil github.
Il y a plusieurs raccourcis que je dois absolument enlever, changer ou ajouter. Les raccourcis de navigations ne sont pas cohérents sur un clavier azerty belge, où les chiffres ne sont pas en accès direct. Il y a aussi des raccourcis qui ouvrent des parties spécifiques de gnome-settings que je veux retirer (pas d'intérêt et je les déclenche régulièrement par erreur...).
Les raccourcis clavier sont définis dans ce dossier : /usr/share/regolith/
:
$ ls -al /usr/share/regolith/
total 28
drwxr-xr-x 5 root root 4096 26 sep 19:12 .
drwxr-xr-x 237 root root 12288 27 sep 13:10 ..
drwxr-xr-x 3 root root 4096 26 sep 19:08 common
drwxr-xr-x 3 root root 4096 26 sep 19:12 i3
drwxr-xr-x 3 root root 4096 26 sep 19:08 sway
$ ls -al /usr/share/regolith/common/config.d/
total 48
drwxr-xr-x 2 root root 4096 26 sep 19:12 .
drwxr-xr-x 3 root root 4096 26 sep 19:08 ..
-rw-r--r-- 1 root root 592 27 aoû 2023 15_base_launchers
-rw-r--r-- 1 root root 3848 27 aoû 2023 30_navigation
-rw-r--r-- 1 root root 263 27 aoû 2023 40_i3-swap-focus
-rw-r--r-- 1 root root 718 27 aoû 2023 40_next-workspace
-rw-r--r-- 1 root root 7568 27 aoû 2023 40_workspace-config
-rw-r--r-- 1 root root 2141 27 aoû 2023 50_resize-mode
-rw-r--r-- 1 root root 488 27 aoû 2023 82_rofication-ilia
-rw-r--r-- 1 root root 155 27 aoû 2023 84_ftue
-rw-r--r-- 1 root root 183 27 aoû 2023 88_network-manager
$ ls -al /usr/share/regolith/sway/config.d/
total 68
drwxr-xr-x 2 root root 4096 26 sep 19:08 .
drwxr-xr-x 3 root root 4096 26 sep 19:08 ..
-rw-r--r-- 1 root root 1946 27 aoû 2023 20_ilia
-rw-r--r-- 1 root root 110 27 aoû 2023 25_xdg_desktop_portal
-rw-r--r-- 1 root root 1403 27 aoû 2023 35_gaps
-rw-r--r-- 1 root root 1385 27 aoû 2023 40_default-style
-rw-r--r-- 1 root root 303 27 aoû 2023 42_gtklock
-rw-r--r-- 1 root root 2742 27 aoû 2023 55_session_keybindings
-rw-r--r-- 1 root root 1554 27 aoû 2023 60_config_keybindings
-rw-r--r-- 1 root root 1022 27 aoû 2023 65_media_keybindings
-rw-r--r-- 1 root root 2091 27 aoû 2023 70_bar_i3status-rs
-rw-r--r-- 1 root root 56 27 aoû 2023 80_swaybg
-rw-r--r-- 1 root root 575 27 aoû 2023 81_gsd_integrations
-rw-r--r-- 1 root root 29 27 aoû 2023 82_audio_idle_inhibit
-rw-r--r-- 1 root root 90 27 aoû 2023 85_polkit
-rw-r--r-- 1 root root 315 27 aoû 2023 86_unclutter
-rw-r--r-- 1 root root 218 27 aoû 2023 95_dbus-activation
Idéalement, il ne faut pas toucher à ces fichiers (sinon on risque des galères lors des prochaines mises à jour...). Selon kgilmer, il faut ajouter nos nouveaux raccourcis dans le fichier suivant :
$ ls -al ~/.config/regolith3/Xresources
-rw-r--r-- 1 simon simon 222 27 sep 12:07 /home/simon/.config/regolith3/Xresources
Toute l'astuce, c'est de trouver le raccourci qu'on veut changer dans un des fichiers dans /usr/share/regolith/
et bien comprendre la syntaxe à recopier... Déjà rien que ça... Et même quand on pense avoir trouvé, on se rend compte que ce qu'on a ajouté dans le fichier Xresources rentre en conflit quand on tente de redémarrer Sway... Une solution consiste à supprimer les paquets qui créent ces configurations dans /usr/share/regolith/... C'est tout sauf pratique!
Donc, après réflexion, je vais modifier directement les raccourcis dans /usr/share/regolith/
mais pas à la main (parce que ça va se faire écraser par les prochaines mises à jour...) : avec un gros script à base de sed que je pourrai relancer facilement au besoin.
Avant toute chose, on va créer un dossier de backup de toute cette configuration :
$ mkdir /home/simon/backup
$ sudo cp -r /usr/share/regolith* /home/simon/backup/
$ sudo chown -R simon:simon /home/simon/backup/
$ ls -al /home/simon/backup/
total 28
drwxr-xr-x 7 simon simon 4096 28 sep 13:50 .
drwx------ 22 simon simon 4096 28 sep 13:51 ..
drwxr-xr-x 5 simon simon 4096 28 sep 13:50 regolith
drwxr-xr-x 2 simon simon 4096 28 sep 13:50 regolith-compositor
drwxr-xr-x 4 simon simon 4096 28 sep 13:50 regolith-control-center
drwxr-xr-x 2 simon simon 4096 28 sep 13:50 regolith-ftue
drwxr-xr-x 4 simon simon 4096 28 sep 13:50 regolith-look
Supprimer des raccourcis
Maintenant il faut regarder ce qu'on veut modifier. Commençons par supprimer des raccourcis inutiles. Ça c'est facile, il suffit de commenter quelques lignes. Je vais donc commencer par enlever des raccourcis que je n'utilise pas et que je déclenche parfois par erreur... On va modifier le fichier 60_config_keybindings
et commenter les parties qui concerne le bluetooth, le wifi et la configuration des écrans.
$ cat /usr/share/regolith/sway/config.d/60_config_keybindings
###############################################################################
# System Management
###############################################################################
## Modify // Settings // <> c ##
set_from_resource $wm.binding.settings wm.binding.settings c
set_from_resource $wm.program.settings wm.program.settings regolith-control-center
bindsym $mod+$wm.binding.settings exec --no-startup-id $wm.program.settings
## Modify // Display Settings // <> d ##
#set_from_resource $wm.binding.display wm.binding.display d
set_from_resource $wm.program.display wm.program.display regolith-control-center display
bindsym $mod+$wm.binding.display exec --no-startup-id $wm.program.display
## Modify // Wifi Settings // <> w ##
set_from_resource $wm.binding.wifi wm.binding.wifi w
set_from_resource $wm.program.wifi wm.program.wifi regolith-control-center wifi
bindsym $mod+$wm.binding.wifi exec --no-startup-id $wm.program.wifi
## Modify // Bluetooth Settings // <> b ##
set_from_resource $wm.binding.bluetooth wm.binding.bluetooth b
set_from_resource $wm.program.bluetooth wm.program.bluetooth regolith-control-center bluetooth
bindsym $mod+$wm.binding.bluetooth exec --no-startup-id $wm.program.bluetooth
## Launch // File Browser // <><Shift> n ##
set_from_resource $wm.binding.files wm.binding.files Shift+n
set_from_resource $wm.program.files wm.program.files /usr/bin/nautilus --new-window
bindsym $mod+$wm.binding.files exec --no-startup-id $wm.program.files
Comme on va modifier potentiellement beaucoup de raccourcis, on passe par l'utilisation d'un fichier pour sed
.
$ cat 60_config_keybindings.sed
#display
s/^[^#]*display/#&/
#bluetooth
s/^[^#]*bluetooth/#&/
#wifi
s/^[^#]*wifi/#&/
(Explications pour sed
sur stackoverflow)
On lance la commande sed
avec le fichier comme ceci :
#pour tester:
$ sed -f 60_config_keybindings.sed /usr/share/regolith/sway/config.d/60_config_keybindings
###############################################################################
# System Management
###############################################################################
## Modify // Settings // <> c ##
set_from_resource $wm.binding.settings wm.binding.settings c
set_from_resource $wm.program.settings wm.program.settings regolith-control-center
bindsym $mod+$wm.binding.settings exec --no-startup-id $wm.program.settings
## Modify // Display Settings // <> d ##
#set_from_resource $wm.binding.display wm.binding.display d
#set_from_resource $wm.program.display wm.program.display regolith-control-center display
#bindsym $mod+$wm.binding.display exec --no-startup-id $wm.program.display
## Modify // Wifi Settings // <> w ##
#set_from_resource $wm.binding.wifi wm.binding.wifi w
#set_from_resource $wm.program.wifi wm.program.wifi regolith-control-center wifi
#bindsym $mod+$wm.binding.wifi exec --no-startup-id $wm.program.wifi
## Modify // Bluetooth Settings // <> b ##
#set_from_resource $wm.binding.bluetooth wm.binding.bluetooth b
#set_from_resource $wm.program.bluetooth wm.program.bluetooth regolith-control-center bluetooth
#bindsym $mod+$wm.binding.bluetooth exec --no-startup-id $wm.program.bluetooth
## Launch // File Browser // <><Shift> n ##
set_from_resource $wm.binding.files wm.binding.files Shift+n
set_from_resource $wm.program.files wm.program.files /usr/bin/nautilus --new-window
bindsym $mod+$wm.binding.files exec --no-startup-id $wm.program.files
for_window [app_id="org.regolith.Settings"] floating enable
Et pour appliquer vraiment la modification :
$ sudo sed -i -f 60_config_keybindings.sed /usr/share/regolith/sway/config.d/60_config_keybindings
Pour relancer Sway
:
$ swaymsg reload
Là, normalement, ces trois raccourcis claviers ne déclenchent plus rien. \o/
Continuons sur notre lancée et passons ensuite à la configuration des raccourcis de navigation.
Modification des raccourcis de navigation
Actuellement, pour me déplacer d'un workspace à l'autre, je dois taper <Super><Maj><&>
(pour me rendre sur le workspace "1"). Si je veux aller sur le workspace 11, je dois taper <Super><Maj><Ctrl><&>
... Je voudrais simplifier ça en en supprimant la touche <Maj>
de l'équation.
Les raccourcis de navigation sont dans le fichier 30_navigation
:
$ cat /usr/share/regolith/common/config.d/30_navigation
(...)
## Navigate // Workspaces 1-10 // <> 0..9 ##
bindsym $mod+$ws1_key workspace number $ws1
bindsym $mod+$ws2_key workspace number $ws2
bindsym $mod+$ws3_key workspace number $ws3
(...)
On va également créer un script pour sed :
$ cat 30_navigation.sed
s/$mod+$ws1_key/$mod+\&/
Pour tester :
$ sed -f 30_navigation.sed /usr/share/regolith/common/config.d/30_navigation
(...)
## Navigate // Workspaces 1-10 // <> 0..9 ##
bindsym $mod+& workspace number $ws1
(...)
Simple, non ? Sauf que... J'ai une erreur quand je relance sway.
'Error on line 30 (/usr/share/regolith/common/config.d/30_navigation) 'bindsym $mod+& workspace number $ws1' : Unknown key or button '&'
En cherchant, je suis tombé sur cette issue github qui conseille d'utiliser xev ou wev pour récupérer le code de la touche.
$ xev -event keyboard
KeyPress event, serial 28, synthetic NO, window 0x2000001,
root 0x49c, subw 0x0, time 58386908, (210,824), root:(3414,924),
state 0x10, keycode 10 (keysym 0x26, ampersand), same_screen YES,
XLookupString gives 1 bytes: (26) "&"
XmbLookupString gives 1 bytes: (26) "&"
XFilterEvent returns: False
$ wev | grep 'sym'
sym: ampersand (38), utf8: '&'
L'information importante, c'est "ampersand". Reste à faire pareil pour les autres touches.
$ wev | grep 'sym'
sym: ampersand (38), utf8: '&'
sym: eacute (233), utf8: 'é'
sym: quotedbl (34), utf8: '"'
sym: apostrophe (39), utf8: '''
sym: parenleft (40), utf8: '('
sym: section (167), utf8: '§'
sym: egrave (232), utf8: 'è'
sym: exclam (33), utf8: '!'
sym: ccedilla (231), utf8: 'ç'
sym: agrave (224), utf8: 'à'
J'arrive à ce script :
$ cat 30_navigation.sed
s/$mod+$ws1_key/$mod+ampersand/
s/$mod+$ws2_key/$mod+eacute/
s/$mod+$ws3_key/$mod+quotedbl/
s/$mod+$ws4_key/$mod+apostrophe/
s/$mod+$ws5_key/$mod+parenleft/
s/$mod+$ws6_key/$mod+section/
s/$mod+$ws7_key/$mod+egrave/
s/$mod+$ws8_key/$mod+exclam/
s/$mod+$ws9_key/$mod+ccedilla/
s/$mod+$ws10_key/$mod+agrave/
s/$mod+Ctrl+$ws1_key/$mod+Ctrl+ampersand/
s/$mod+Ctrl+$ws2_key/$mod+Ctrl+eacute/
s/$mod+Ctrl+$ws3_key/$mod+Ctrl+quotedbl/
s/$mod+Ctrl+$ws4_key/$mod+Ctrl+apostrophe/
s/$mod+Ctrl+$ws5_key/$mod+Ctrl+parenleft/
s/$mod+Ctrl+$ws6_key/$mod+Ctrl+section/
s/$mod+Ctrl+$ws7_key/$mod+Ctrl+egrave/
s/$mod+Ctrl+$ws8_key/$mod+Ctrl+exclam/
s/$mod+Ctrl+$ws9_key/$mod+Ctrl+ccedilla/
Pour lancer le script :
$ sudo sed -i -f 30_navigation.sed /usr/share/regolith/common/config.d/30_navigation
On relance sway :
$ swaymsg reload
Et, cette fois, pas d'erreur! Tout fonctionne comme prévu. C'est presque surprenant... ;-)
Modification des raccourcis pour déplacer les fenêtres d'un workspace à l'autre
Les raccourcis pour déplacer une fenêtre d'un workspace à l'autre posent réellement un problème. En effet, pour déplacer une fenêtre dans le workspace 1, on est censé utiliser $mod+Shift+$ws1_key
(soit <Super><Maj><&>
dans mon cas) mais ça ne marche pas. Pour déplacer une fenêtre sur le workspace 1, je dois utiliser <Super><Alt><Shift><&>
(Ce qui devrait déplacer vers le workspace 11 ?!). Bref, il faut modifier ça !
Ces raccourcis sont dans 40_workspace-config
:
$ cat /usr/share/regolith/common/config.d/40_workspace-config
(...)
## Modify // Move Window to Workspace 1 - 10 // <><Shift> 0..9 ##
bindsym $mod+Shift+$ws1_key move container to workspace number $ws1
bindsym $mod+Shift+$ws2_key move container to workspace number $ws2
(...)
# move focused container to workspace, move to workspace
## Modify // Carry Window to Workspace 1 - 10// <><Alt> 0..9 ##
bindsym $mod+$alt+$ws1_key move container to workspace number $ws1; workspace number $ws1
bindsym $mod+$alt+$ws2_key move container to workspace number $ws2; workspace number $ws2
(...)
Comme pour les autres, on fait un fichier pour sed
:
$ cat 40_workspace-config.sed
s/$ws1_key/ampersand/
s/$ws2_key/eacute/
s/$ws3_key/quotedbl/
s/$ws4_key/apostrophe/
s/$ws5_key/parenleft/
s/$ws6_key/section/
s/$ws7_key/egrave/
s/$ws8_key/exclam/
s/$ws9_key/ccedilla/
s/$ws10_key/agrave/
Et on lance ça :
$ sudo sed -i -f 40_workspace-config.sed /usr/share/regolith/common/config.d/40_workspace-config
On relance Sway
:
$ swaymsg reload
Et ça marche!!!
Modifier les raccourcis de gestion de session
Par défaut, les raccourcis permettant de se déconnecter, de mettre en veille l'ordinateur, d'éteindre ou de rédémarrer l'ordinateur sont assez... Moches et peu fonctionnels au clavier.
Ils sont dans le fichiers suivants :
$ cat /usr/share/regolith/sway/config.d/55_session_keybindings
(...)
## Session // Logout // <><Shift> e ##
set_from_resource $wm.binding.logout wm.binding.logout Shift+e
set_from_resource $wm.program.logout wm.program.logout /usr/bin/gnome-session-quit --logout --no-prompt && swaymsg exit
set_from_resource $sway.prompt.logout sway.prompt.logout "swaynag -t warning -m 'Do you really want to logout?' -b 'Logout' '$wm.program.logout'"
bindsym $mod+$wm.binding.logout exec $sway.prompt.logout
## Session // Reboot // <><Shift> b ##
set_from_resource $wm.binding.reboot wm.binding.reboot Shift+b
set_from_resource $wm.program.reboot wm.program.reboot /usr/bin/gnome-session-quit --reboot --no-prompt
set_from_resource $sway.prompt.reboot sway.prompt.reboot "swaynag -t warning -m 'Do you really want to reboot your system?' -b 'Reboot' '$wm.program.reboot'"
bindsym $mod+$wm.binding.reboot exec $sway.prompt.reboot
## Session // Power Down // <><Shift> p ##
set_from_resource $wm.binding.shutdown wm.binding.shutdown Shift+p
set_from_resource $wm.program.shutdown wm.program.shutdown /usr/bin/gnome-session-quit --power-off --no-prompt
set_from_resource $sway.prompt.shutdown sway.prompt.shutdown "swaynag -t warning -m 'Do you really want to shutdown' -b 'Shutdown' '$wm.program.shutdown'"
bindsym $mod+$wm.binding.shutdown exec $sway.prompt.shutdown
## Session // Sleep // <><Shift> s ##
set_from_resource $wm.binding.sleep wm.binding.sleep Shift+s
set_from_resource $wm.program.sleep wm.program.sleep systemctl suspend
bindsym --locked $mod+$wm.binding.sleep exec $wm.program.sleep
Quand on veut, par exemple, redémarrer et qu'on tape Super+Shift+b
, ça affiche un bandeau jaune immonde au dessude l'écran. Et ce bandeau n'est pas contrôlable au clavier donc il faut utiliser la souris pour aller cliquer sur "ok"... Sérieusement ? Tout ça pour ça ?
En plus, il y a un problème dans cette configuration. Les commandes pour éteindre ou redémarrer utiliser l'argument --no-prompt
de gnome-session-quit
mais cet argument ne fonctionne qu'avec l'option --logout
. Utilisé pour éteindre ou redémarrer, il fait bloquer la commande avec cette erreur :
Failed to call Shutdown: Le délai d'attente est dépassé
$ man gnome-session-quit
(...)
--no-prompt
End the session without user interaction. This only works with --logout.
(...)
Comme pour les autres modifications de raccourcis, j'utilise sed
:
$ cat 55_session_keybindings.sed
s/gnome-session-quit --reboot --no-prompt/gnome-session-quit --reboot/
s/gnome-session-quit --power-off --no-prompt/gnome-session-quit --power-off/
#pour tester la commande :
$ sed -f 55_session_keybindings.sed /usr/share/regolith/sway/config.d/55_session_keybindings
(...)
set_from_resource $wm.program.reboot wm.program.reboot /usr/bin/gnome-session-quit --reboot
set_from_resource $wm.program.shutdown wm.program.shutdown /usr/bin/gnome-session-quit --power-off
(...)
#pour écrire vraiment la modification dans le fichier :
$ sudo sed -i -f 55_session_keybindings.sed /usr/share/regolith/sway/config.d/55_session_keybindings
Ok, une fois Sway
relancé, on a des commandes fonctionnelles. Mais on a encore le bandeau moche et pas pratique. Alors pour faire mieux que ça, on va faire un autre petit script et utiliser ilia
.
$ cat gestion-session.sh
#!/bin/bash
set -euo pipefail
#Script pour gérer la session en passant par Ilia
#Si aucun argument :
if [ $# -eq 0 ]; then
echo -e "Verrouiller\nDéconnexion\nVeille\nRedémarrer\nÉteindre"
exit
fi
#Si il y a un argument, on regarde s'il correspond à ce qu'on attend :
if [ $1 = 'Verrouiller' ]; then
#verrouiller
#echo "choix: Verrouiller la session"
gtklock --background $(trawlcat regolith.lockscreen.wallpaper.file /dev/null)
elif [ $1 = 'Déconnexion' ]; then
#logout
#echo "choix: Déconnexion"
/usr/bin/gnome-session-quit --logout --no-prompt && swaymsg exit
elif [ $1 = 'Redémarrer' ]; then
#reboot
#echo "choix: Redémarrer"
/usr/bin/gnome-session-quit --reboot
elif [ $1 = 'Éteindre' ]; then
#shutdown
#echo "choix: Éteindre"
/usr/bin/gnome-session-quit --power-off
elif [ $1 = 'Veille' ]; then
#sleep
#echo "choix: Veille"
systemctl suspend
else
echo "Mauvais argument"
fi
Pour tester le script on peut faire cette combinaison :
$ ./gestion-session.sh | ilia -p textlist -l Session | xargs ./gestion-session.sh
Il n'y a plus qu'à faire un lien dans /usr/local/bin/
pour pouvoir utiliser ce script à partir de n'importe où et à ajouter un raccourcis pour l'utiliser facilement.
$ sudo ln gestion-session.sh /usr/local/bin/gestion-session.sh
J'ai ajouté une ligne dans mon fichier 99_custom
(voir détails plus bas) :
$ cat 99_custom
(...)
#Session
bindsym $mod+Delete exec 'gestion-session.sh | ilia -p textlist -l Session | xargs gestion-session.sh'
On relance Sway
:
$ swaymsg reload
Et ça marche! :-)
Ajouter des raccourcis
Captures d'écran
Maintenant qu'on a retiré des raccourcis inutiles (dans mon cas) et modifié d'autres, nous pouvons aussi en ajouter.
Je souhaite par exemple ajouter des raccourcis pour faire des captures d'écrans. Je souhaitais au départ ces trois fonctionnalités :
- Capturer une partie de l'écran (sélection)
- Capturer une fenêtre
- Capturer tout le bureau
J'ai testé plusieurs outils, fouillé un peu le net (détails : Les programmes à tester pour Regolith) et j'ai trouvé une solution qui me convient. Je vais utiliser grimshot
:
#Capturer la fenêtre active
$ grimshot save active
/home/simon/Images/2024-09-29T14:37:49,992903816+02:00.png
#Capturer une sélection
$ grimshot save area
/home/simon/Images/2024-09-29T14:37:54,912595358+02:00.png
#Capturer tout l'écran (seulement l'écran sur lequel on est)
$ grimshot save output
/home/simon/Images/2024-09-29T14:38:06,800475463+02:00.png
#Capturer une fenêtre (avec choix)
$ grimshot save window
/home/simon/Images/2024-09-29T14:38:16,145512180+02:00.png
#Capturer l'ensemble du bureau (si plusieurs écrans)
$ grimshot save screen
/home/simon/Images/2024-09-29T14:43:33,855852387+02:00.png
À noter qu'il est aussi possible d'utiliser slurp
et grim
avec différentes combinaisons, par exemple :
#Capturer une sélection :
$ slurp | grim -g -
$ ls -al Images/
(...)
-rw-r--r-- 1 simon simon 15907 29 sep 14:31 20240929_14h31m36s_grim.png
(...)
J'ai décidé d'ajouter les raccourcis dans un fichier séparé des autres.
$ cat /usr/share/regolith/sway/config.d/99_custom | grep Print
# Printscreens
bindsym Print exec 'grimshot save area'
bindsym $mod+Print exec 'grimshot save active'
bindsym Shift+Print exec 'grimshot save output'
bindsym $mod+Shift+Print exec 'grimshot save window'
bindsym Ctrl+Print exec 'grimshot save screen'
Et comme ce fichier 99_custom
n'existe pas dans la config d'origine, je peux simplement le copier dans le bon dossier :
## Ajout de nouveaux raccourcis :
# Raccourcis pour les captures d'écran
customFile='/usr/share/regolith/sway/config.d/99_custom'
sudo cp 99_custom $customFile
Gestion du clipboard
Il est indispensable pour moi d'avoir une gestion efficace du clipboard et de pouvoir garder plusieurs bouts de textes copiés pour les recoller plus tard.
J'utilisais avant greenclip
mais il ne fonctionne pas sur Wayland.
Avec Wayland, l'enregistrement de l'écran (capture photo ou vidéo) doit être géré par l'environnement, alors qu'il était jusqu'à présent indépendant de l'environnement utilisé. Vos anciens logiciels de capture d'écran pour Xorg risquent de ne plus fonctionner !
Il s'agit là d'une question de sécurité : les applications n'ayant pas la possibilité de "connaître" la position et le contenu des fenêtres de leurs voisines avec Wayland, ces informations doivent être "demandées" à l'environnement (et notamment au compositeur en ce qui concerne les fenêtres). (Source: ubuntu-fr.org)
Après plusieurs essais et la découverte des commandes wl-copy
et wl-paste
(qui appartiennent à wl-clipboard
), j'ai finalement décidé d'utilisé cliphist.
On commence par télécharger la dernière version de cliphist
:
$ wget https://github.com/sentriz/cliphist/releases/download/v0.5.0/v0.5.0-linux-amd64 -O cliphist-v0.5.0
(Pensez à vérifier si cliphist
n'est pas présent dans les dépôts de votre distribution. Ce nn'est pas -encore?- le cas pour Debian 12 à l'heure où j'écris ces lignes.)
On rend cliphist
exécutable et on fait un lien (ou on copie) l'exécutable dans /usr/bin/
:
$ chmod +x cliphist-v0.5.0
$ sudo ln cliphist-v0.5.0 /usr/bin/cliphist
Il faut maintenant l'ajouter dans la configuration de Sway pour qu'il démarre en arrière plan au lancement de la session. J'ajoute donc quelques lignes dans mon fichiers 99_custom
:
#Clipboard
exec wl-paste --watch cliphist store
bindsym $mod+v exec 'cliphist list | ilia -p textlist | cliphist decode | wl-copy'
bindsym $mod+Shift+v exec 'cliphist list | ilia -p textlist | cliphist delete'
On relance Sway
:
$ swaymsg reload
Maintenant si on appuie sur Super + v
, on a une belle fenêtre ilia
qui s'ouvre avec le contenu du clipboard :
Si on copie du texte et qu'on réouvre cette fenêtre :
Si on veut supprimer une des entrée du clipboard, on peut utiliser le raccourci Super+Maj+v
ou on peut utiliser cette commande :
$ cliphist list | ilia -p textlist | cliphist delete
Un script pour faire tout ça d'un coup
Pour les différentes étapes de modification/suppression/ajout de raccourcis, j'ai essayé de faire ça de manière à pouvoir automatiser d'un coup l'ensemble des modifications sur la configuration.
Je me retrouve donc avec ce dossier (que je gère avec git
) :
$ ls -l regolith-config/
total 36
-rw-r--r-- 1 simon simon 1705 28 sep 15:23 30_navigation.sed
-rw-r--r-- 1 simon simon 3807 28 sep 15:56 40_workspace-config.sed
-rw-r--r-- 1 simon simon 149 2 oct 13:52 55_session_keybindings.sed
-rw-r--r-- 1 simon simon 87 28 sep 14:48 60_config_keybindings.sed
-rw-r--r-- 1 simon simon 461 2 oct 10:31 99_custom
-rwxr-xr-x 1 simon simon 1083 2 oct 11:22 gestion-session.sh
-rwxr-xr-x 1 simon simon 711 2 oct 13:53 modification-regolith-keybindings.sh
-rw-r--r-- 1 simon simon 3759 28 sep 14:18 README.md
-rw-r--r-- 1 simon simon 54 2 oct 10:56 session.txt
$ cat regolith-config/modification-regolith-keybindings.sh
#!/bin/bash
set -euo pipefail
#Script pour modifier les raccourcis clavier de Regolith à grand coups de sed
sudo sed -i -f 60_config_keybindings.sed /usr/share/regolith/sway/config.d/60_config_keybindings
sudo sed -i -f 30_navigation.sed /usr/share/regolith/common/config.d/30_navigation
sudo sed -i -f 40_workspace-config.sed /usr/share/regolith/common/config.d/40_workspace-config
sudo sed -i -f 55_session_keybindings.sed /usr/share/regolith/sway/config.d/55_session_keybindings
## Ajout de nouveaux raccourcis :
# Raccourcis pour les captures d'écran
customFile='/usr/share/regolith/sway/config.d/99_custom'
sudo cp 99_custom $customFile
Changer d'utilisateur sans quitter la session en cours
Grâce à @charles@akk.de-lacom.be et son message sur mastodon, voici la solution choisie pour changer de session sans devoir tout fermer et se déconnecter : Ctrl + Alt + F1
Je pensais arriver sur un invite de commande mais j'arrive sur le gestionnaire de connexion (dans mon cas gdm3, installé avec gnome pour que les autres utilisateurs de l'ordinateur puisse avoir une session normale ;-)
). C'est juste parfait. Et quand on est sur cette autre session et qu'on tape Ctrl + Alt + F2
, on revient sur ma session principale.
Ce qu'il reste à faire
- Je pensais changer le lockscreen (parce qu'il bloque complètement l'ordinateur pour une autre personne qui voudrait l'utiliser et qui ne connait pas le mot de passe de ma session...) mais l'astuce du
Ctrl + Alt + F1
permet de revenir au gestionnaire de connexion donc ça va rester comme ça. - Investiguer programmes trouvés pendant mes recherches et qui pourraient améliorer encore mon utilisation de Regolith
- Vérifier les autres raccourcis clavier pour voir si tout marche comme je veux / ai besoin