nakedSway -- sway sur nakedeb
afin de découvrir sway dans une session préconfigurée, je vous propose nakedsway
.
ce paquet contient tous les fichiers
de configuration nécessaires pour une prise en main rapide de sway/wayland à
la manière de nakedfluxbox
et nakedi3wm
.
nakedsway
est disponible dans
les dépôts nakedeb depuis la version 1.5.5.
pour l'instant, la session sway
n'est pas intégrée par défaut sur nakeDeb mais
les outils nakedtools
sont déjà adaptés pour une session de type wayland.
cette page n'est pas une présentation de sway, le site officiel s'en charge très bien. vous pouvez aussi consulter le wiki debian. mais pour faire simple, sway est l'équivalent de i3 pour wayland, le successeur de x11.
Sommaire :
- les pages de man indispensables
- nakedsway : installation
- nakedsway : configuration
- waybar : configuration de la barre de statuts
- swaylock : configuration du verrouillage d'écran
- foot : le terminal par défaut pour sway/wayland
- sway : lancement de la session
- sway : utilisation et raccourcis clavier
- wayland vs x11 : les différents outils selon la session
- reset de la configuration utilisateur
- liens & ressources
sway & waybar : les pages de man indispensables
sway est très bien documenté depuis ses nombreuses pages de man (en anglais) :
man sway
: le manuel général du compositeur sway/waylandman 5 sway
: manuel du fichier de configuration et des commandesman 5 sway-bar
: configuration de la swaybarman 5 sway-input
: configuration des inputs (clavier, touchpad...)man 7 sway-ipc
: manuel du protocole IPC sur swayman 5 sway-output
: configuration des outputs (écrans)man 7 swaybar-protocol
: manuel du protocole JSON sur swayman swaybg
: configuration du fond d'écranman swayidle
: configuration de l'économiseur sur waylandman swaylock
: configuration du verrouillage d'écran sur waylandman swaymsg
: envoi de messages à une instance de swayman swaynag
: manuel de la barre de notification/action sur swayman 5 swaynag
: manuel de la configuration de swaynag
la session sway de nakedsway utilise waybar
pour l'affichage des espaces de travail
et des informations par défaut. une alternative utilisant un script bash (infosbar
)
est disponible dans le paquet. vous pouvez également utiliser i3status
comme générateur.
tout comme sway, waybar est parfaitement documenté via ses pages de man. man waybar
vous
renseignera sur la barre de statut et sa configuration. vous trouverez en fin de manuel la
liste des manuels dédiés à chaque modules (+25 modules).
nakedsway : installation
nakeDeb est une Debian, l'installation se déroule de façon classique :
sudo apt update && sudo apt install nakedsway
cette commande installera :
sway
: le compositeur,swaybg
: pour le fond d'écran,swayidle
: pour la gestion de l'économiseur,swaylock
: pour le verrouillage d'écran,grim
: pour la capture d'écran,foot
: l'émulateur de terminal,xwayland
: pour la prise en charge des applications x11,waybar
: pour la gestion de la barre de statuts,wlsunset
: pour la gestion de la coloration de l'écran,btop
: pour la surveillance du système,dex
: pour la prise en charge de l'autostart système et utilisateur- et leurs dépendances...
les différents fichiers de configuration, scripts et autres thèmes sont placés
dans /usr/share/nakedsway/
et dans /etc/skel/.config/
afin
d'être ajoutés au dossier personnel de tout nouvel utilisateur.
une fois nakedsway installé, et avant de lancer votre session, copier les
fichiers adéquates dans votre dossier personnel :
mkdir -p ~/.config/sway ~/.config/swaylock ~/.config/waybar ~/.config/foot
cp -u -R /etc/skel/.config/sway/* ~/.config/sway/
cp -u -R /etc/skel/.config/swaylock/* ~/.config/swaylock/
cp -u -R /etc/skel/.config/waybar/* ~/.config/waybar/
cp -u -R /etc/skel/.config/foot/* ~/.config/foot/
note : vous pouvez aussi télécharger le paquet nakedsway sans l'installer et piocher dans les différents fichiers après avoir décompressé le paquet comme une archive traditionnelle.
nakedsway : configuration de sway
la configuration de sway passe par l'édition de son fichier principal
~/.config/sway/config
et des fichiers annexes situés généralement
dans ~/.config/sway/config.d/
. si vous éditez des fichiers annexes,
prenez soin de les inclure (grâce à include /path/to/file
) dans le
fichier principal comme c'est le cas par défaut sur nakedsway.
si vous choisissez l'option d'un fichier unique de configuration, considérez
chaque fichier de conf annexe décrit ici comme une section du fichier sway/config.
voici la liste des fichiers intégrés pour sway :
tree ~/.config/sway/
sway/
├── config > le fichier de configuration principal
├── config.d
│ ├── 00-vars.conf > déterminer les variables utilisées dans les autres fichiers
│ ├── 01-outputs.conf > gestion des écrans
│ ├── 02-inputs.conf > gestion clavier/souris/touchpad
│ ├── 03-statusbar.conf > configurer la barre statut, gérée par waybar sur nakedsway
│ ├── 04-autostart.conf > lancer services/apps au démarrage de la session
│ ├── 05-scratchpad.conf > configurer le terminal flottant en pop-up
│ ├── 06-theme.conf > look & feel
│ ├── 07-window-rules.conf > règles spéciales pour clients spéciaux
│ ├── 08-launchers.conf > raccourcis clavier pour les applications
│ ├── 09-controls.conf > raccourcis clavier pour sway
│ └── 10-modess.conf > configuration des modes pour sway
├── fr
│ ├── fr-kbd.conf > la configuration des raccourcis pour un clavier azerty/fr
│ ├── fr-bepo-kbd.conf > la configuration des raccourcis pour un clavier bepo/fr
│ └── fr-apple-kbd.conf > la configuration des raccourcis pour un clavier apple/fr
└── scripts
├── import-gsettings > importer les préférences GTK
├── inactive-windows-transparency.py > opacité des fenêtres inactives
├── infosbar > script bash pour la barre de statut (option)
├── screentemp > script pour la coloration de l'écran
├── wallrdm > script pour le fond d'écran aléatoire
└── window-switcher > script pour naviguer entre les fenêtres ouvertes
petites explications sur le rôle de chaque fichier/section. n'oubliez pas de les consulter et les modifier selon vos préférences avant de lancer votre session :
- sway/config : le fichier principal ne contient presque rien sur nakedsway mais
intègre les fichiers annexes grâce à la commande
include /path-to-file
(un seul fichier cible) ouinclude /path-to-directory/*
(tous les fichiers contenus dans le répertoire cible).
exemple :include $HOME/.config/sway/config.d/*
lira et intègrera tous les fichiers dans~/.config/sway/config.d/*
- sway/config.d/00-vars.conf : ce fichier déclare les variables qui seront utilisées
dans les autres fichiers de configuration. la déclaration se fait sous la forme
set $var value|command
exemple :set $mod Mod1
définira la toucheAlt
comme touche de modification principale tandis queset $term "footclient"
définirafootclient
comme terminal par défaut dans les autres fichiers mentionnant$term
- sway/config.d/01-outputs.conf : la déclaration du ou des écrans. la déclaration
se fait sous la forme
output <identifiant écran> resolution <résolution> position <x,y>
exemple :output LVDS-1 resolution 1280x800 position 0,0
- sway/config.d/02-inputs.conf : la déclaration des périphériques d'entrée (clavier/souris/pad).
sur nakedsway, une auto-détetion est activée mais il est préférable de déclarer vos inputs
directement. le fichier dédié intègre des exemples et une prise en charge des pilotes
evdev
par défaut. - sway/config.d/03-statusbar.conf : sur nakedsway,
waybar
gère l'affichage de la barre de statuts mais d'autres options sont disponibles : un script bashsway/scripts/infosbar
permettant de générer un rendu d'informations. une commande simple pour en afficher le minimum. vous pouvez aussi utiliseri3status
déjà disponible sur nakedeb afin de prendre en charge l'affichage de la barre de statuts. prenez soin d'éditer ces fichiers avant de vous en servir afin de choisir les infos affichées ou les modules activés. le fichier dédié contient toutes les options, il vous suffit de dé/commenter les sections voulues. - sway/config.d/04-autostart.conf : les services ou applications à lancer en début de
session sous la forme
exec|exec_always (--no-startup-id) "command [options]"
.
exec
pour lancer en début de session,exec_always
pour lancer à chaque rechargement de la configuration de sway,--no-startup-id
pour ne pas activer la notification de démarrage (option), et enfincommand
qui sera traité parsh -c
et peut donc contenir plusieurs commandes et/ou options.
exemple :exec --no-startup-id "sleep 30s; $HOME/.config/sway/scripts/screentemp toggle; pkill -RTMIN+5 waybar"
lancera "screentemp" en mode "toggle" après un délai de 30 secondes puis relancera le module dédié danswaybar
. - sway/config.d/05-scratchpad.conf : sway dispose d'une fonction de masquage/affichage, qui
permet d'envoyer une fenêtre dans le scratchpad (non visible) depuis le raccourci
Super+Shift+Enter puis de la faire revenir avec Super+Enter.
si plusieurs fenêtres sont dans le scratchpad, elles s'afficheront à tour de rôle.
sur nakedsway, une instance de terminal est ouverte dès le début de session puis envoyée directement dans le scratchpad, permettant l'accès à un terminal pop-up avec Super+Enter. - sway/config.d/06-theme.conf : la configuration graphique de sway, la couleur des bordures,
la police utilisée, les marges, le fond d'écran...
sway ne prend pas en charge vos préférences GTK par défaut, il faut les déclarer ou les importer. sur nakedsway, c'est le scriptimport-gsettings
qui s'en charge (cf plus bas). - sway/config.d/07-window-rules.conf : certaines règles peuvent s'appliquer sous conditions à
déclarer dans ce fichier sous la forme
for_window [condition] propriétés
.
exemple :for_window [app_id="file-roller"] floating enable, move absolute position center
déclare que l'applicationfile-roller
sera libre (pas de pavage) et positionnée au centre de l'écran.
ce fichier assigne également certains clients à un espace de travail dédié. cette assignation se fait sous la formeassign [condition] workspace
.
exemple :assign [app_id="firefox-esr"] $ws2
assigneFirefox
à l'espace de travail$ws2
.
pour trouver la condition, ici pour "firefox", ouvrir l'applications puis lancerswaymsg -t get_tree | grep -i firefox
. - sway/config.d/08-launchers.conf : les lanceurs d'applications se déclarent sous la forme
bindsym <[modifier]+touche> exec (--no-startup-id) "command [options]"
exemple :bindsym $mod+Shift+m exec "$term --title=htop --app-id=htop htop"
lancera une instance de terminal exécutanthtop
après le raccourci Alt+Shift+m. - sway/config.d/09-controls.conf : les raccourcis claviers pour contrôler sway, l'agencement des
fenêtres, la navigation entre les clients ou les espaces de travail etc. la déclaration se fait
de la même façon que pour les lanceurs :
bindsym <[modifier]+touche> fonction [options]"
exemple :bindsym $mod+Ctrl+Right workspace next
affichera l'espace de travail occupé suivant lors d'une pression sur Alt+Control+→ tandis quebindsym $mod+Ctrl+Left workspace prev
affichera l'espace de travail occupé précédent avec Alt+Control+←. - sway/config.d/10-modes.conf : les différents modes pour sway. comme i3, sway accepte les modes, un genre de menu d'action intégré déclenché par un raccourci et qui permet d'accéder à des fonctionnalités supplémentaires.
- sway/fr/fr-[bepo|apple]kbd.conf : fichiers bonus pour remplacer une partie du
09-controls.conf
afin d'adapter sway à un clavier fr. - sway/scripts/import-gsettings : comme précisé plus haut, sway ne prend pas en charge les préférences GTK par défaut. ce script permet de les importer à chaque début de session et à chaque rechargement de sway. le script propose aussi un thème "fallback" au cas où les préférences soient introuvables.
- sway/scripts/inactive-windows-transparency.py : un petit script python qui fait ce qu'il dit,
il applique une opacité (passée en argument) aux fenêtres inactives. ce script est lancé depuis
le fichier de configuration
06-theme.conf
. - sway/scripts/infosbar : un exemple de script bash utilisable pour générer la barre de statuts,
une alternative à
waybar
qui prend en charge cet aspect par défaut sur nakedsway. pour tester le rendu directement dans votre terminal, placez-vous dans le dossier des scripts puis lancez./infosbar
. - sway/scripts/screentemp : nakeDeb utilise
redshift
par défaut pour corriger les couleurs de l'écran sur i3wm et fluxbox. cependant, sur wayland, redshift fontionne moins bien. j'ai donc opté pourwlsunset
, son équivalent. le scriptscreentemp
permet de vérifier l'activation (screentemp check
) ou de permuter l'état (screentemp toggle
). dans tous les cas, une notification est envoyée pour afficher le statut de l'application. - sway/scripts/wallrdm : un fond d'écran aléatoire depuis /usr/share/backgrounds/ ou le dossier passé en argument.
- sway/scripts/window-switcher : le retour du Alt+Tab pour naviguer entre les fenêtres actives
en choisissant dans un menu généré par
rofi
.
nakedsway : configuration de waybar
waybar
prend en charge la barre de statut sur sway comme polybar
le fait sur i3wm par défaut.
waybar
fonctionne de façon modulaire : une série de modules à activer pour afficher les informations
désirées. la configuration passe par un fichier déclaratif des modules (~/.config/waybar/config)
accompagné d'un fichier de style en CSS (~/.config/waybar/style.css). vous pouvez créer vos modules
via des scripts (~/.config/waybar/scripts) et utiliser la syntaxe JSON pour changer la couleur,
l'info-bulle ou les actions au clic.
nakedsway
intègre tout le nécessaire pour découvrir facilement waybar
et ses différentes
possibilités : la plupart des modules communs sont activés et devraient fonctionner out-of-the-box.
il vous suffit de dé/commenter (avec //) et/ou déplacer les modules désirés dans le fichier de
configuration, section "Modules order".
les modules déroulent ensuite leurs propriétés dans le même fichier, classés par ordre alphabétique
sur nakedsway mais c'est pour faciliter la recherche, vous faites bien comme vous voulez, pensez
cependant à bien respecter la syntaxe car à la moindre virgule manquante, waybar plantera.
pour tester avec de confirmer, vous pouvez lancer pkill -9 waybar && waybar
sans relancer votre
session sway. lorsque le résultat vous convient, fermez votre terminal et relancer sway avec
Alt+Shit+r.
comme pour sway, waybar est particulièrement bien documenté via ses pages de man : man waybar
est ton ami :)
nakedsway : configuration de swaylock
swaylock
est l'outil natif pour verrouiller votre écran. il se rapproche graphiquement de
i3lock
avec un disque de couleur pour visualiser les touches frappées lors de la saisie du mot
de passe. cet outil accepte les options en ligne de commande (man swaylock
pour une liste
exhaustive) mais peut aussi se configurer depuis un fichier présent par défaut sur nakedsway.
pour configurer swaylock
, éditez le fichier ad hoc ~/.config/swaylock/config
.
les options sont assez intuitives sauf pour les couleurs du disque qui sont au format #RRGGBBAA... mais j'ai posé
une table de conversion dans la cave pour vous aider
à personnaliser votre écran de verrouillage.
nakedsway : configuration de foot
foot
est le terminal par défaut sur nakedsway. il peut fonctionner en mode server/client pour
économiser la mémoire. sa configuration passe par le fichier dédié ~/.config/foot/foot.ini
.
par défaut, c'est le colorscheme NordTheme
qui est utilisé, avec une légère transparence. pour les grandes résolutions, je vous conseille
de modifier la taille de la police (Hack 7) et la taille de la fenêtre par défaut, qui détermine la
taille du terminal ouvert dans le scratchpad
en début de session.
nakedsway : lancement
la session sway/wayland est reconnue par lightdm, votre gestionnaire de connexion sur
nakedeb. une fois nakedsway
installé et vos fichiers configurés, quittez votre session
puis choisissez "sway" dans la liste des sessions de lightdm.
cf wiki nakedeb.
pour quitter sway, utilisez le raccourci par défaut Alt+Shift+e
qui lancera le nakedquit
comme sur les autres sessions.
nakedsway : utilisation
important : l'utilisation de sway dépend de votre configuration. les indications listées ici reprennent la configuration par défaut fournie avec nakedsway.
pour commencer, les raccourcis sont quasi identiques à ceux utilisés sur la session
i3wm : vous ne serez pas dépaysés si vous utilisez déjà un tiling.
voici les principaux raccourcis utilisés pour contrôler sway ou lancer des
applications sur une session nakedsway
:
- sway-control :
- Alt+Shift+r > relancer sway
- Alt+Shift+e > quitter sway
- Alt+e > naviguer entre les dispositions pavées
- Alt+t/s > disposition par onglets/empilements
- Alt+b/v > tiling horizontal/vertical
- Alt+f > fullscreen
- Alt+r > mode redimensionnement (quitter avec Esc)
- Alt+Shift+c > éditer la configuration sway
- Alt+N[1,2,3...] > passer à l'espace de travail N
- Super+←/→ > passer à l'espace de travail précédent/suivant
- Alt+Shift+q > fermer la fenêtre active
- Alt+h/j/k/l > focaliser selon la direction
- Alt+←/↑/→/↓ > focaliser selon la direction
- Alt+Shift+Space > libérer/contraindre une fenêtre
- Alt+Shift+h/j/k/l > déplacer selon la direction
- Alt+Shift+←/↑/→/↓ > déplacer selon la direction
- Ctrl+Alt+w > modifier le fond d'écran avec
nakedwalls
- Print > capture d'écran
- sway-apps :
- Super+Enter > afficher/masquer le scratchpad
- Super+Shift+Enter > envoyer dans le scratchpad
- Alt+Enter > ouvrir un terminal
- Alt+p > ouvrir le menu d'applications
- Alt+d > ouvrir le menu des exécutables
- Super+w > lancer le navigateur par défaut
- Super+r > lancer
lf
- Super+Shift+r > lancer pcmanfm
- Alt+x > ouvrir IRC
- Super+v > ouvrir le contrôleur de volume
- Super+m > lancer htop
- Super+i > afficher neofetch
- Super+Shift+i > afficher les infos système grâce à
btop
- Super+BackSpace > lancer le dotcleaner
wayland vs x11
un petit récapitulatif des outils utilisés sur les différentes sessions :
┌─────────────────┬───────────────────┬────────────────┐
│ outils/sessions │ sway/wayland │ i3/fluxbox/x11 │
├─────────────────┼───────────────────┼────────────────┤
│autostart │ dex │ fbautostart │
│terminal │ foot │ rxvt-unicode │
│économiseur │ swayidle │ acpi/dpms │
│verrouillage │ swaylock │ i3lock │
│composite │ natif │ picom/eyecandy │
│fond d'écran │ swaybg/nakedwalls │ feh/nakedwalls │
│couleur d'écran │ wlsunset │ redshift │
│capture d'écran │ grim │ scrot │
│visionneuse │ nsxiv │ nsxiv │
│menu automatique │ rofi │ rofi/fluxmenu │
└─────────────────┴───────────────────┴────────────────┘
reset de la configuration utilisateur
si vous avez modifié votre configuration et que vous souhaitez revenir à la configuration par défaut de Debian ou celle de nakeDeb, suivez ces méthodes.
- revenir à la configuration Debian :
- sauvegardez votre configuration personnelle :
mv $HOME/.config/sway $HOME/.config/sway.back
- quittez sway depuis son raccourci : Alt+Shift+e puis clic sur 'Exit'
- au redémarrage de votre session, vous utiliserez la configuration par défaut du paquet.
- revenir à la configuration nakeDeb :
- sauvegardez votre configuration personnelle :
mv $HOME/.config/sway $HOME/.config/sway.back
- copiez la configuration nakeDeb par défaut :
cp -R /etc/skel/.config/sway $HOME/.config/sway
- quittez sway depuis son raccourci : Alt+Shift+e puis clic sur 'Exit'
- au redémarrage de votre session, sway sera configuré comme au premier lancement de nakeDeb.
les configurations par défaut sont situées dans /etc/sway
pour Debian
et dans /etc/skel/.config/sway
pour nakeDeb.
tous les fichiers de nakedsway
sont rassemblés dans /usr/share/nakedsway
.
les liens sway
- sway : site principal
- sway : wiki officiel
- sway : wiki Debian
- sway : wiki ArchLinux
- i3 to sway migration guide
- sway : outils utiles
- sway-contrib : scripts & bonus
quelques articles pertinents
- https://www.getrichordevtryin.com/sway.html : article en français court et pratique avec en bonus un agencement clavier BEPO
- https://eirenicon.org/knowledge-base/sway-on-debian-arch/ : tutoriel complet multi-distro en anglais