# ============================================================================= # ~/.config/sway/config — Configuration Sway (Wayland) # ============================================================================= # Sway est un gestionnaire de fenêtres en tuiles pour Wayland, compatible # avec la syntaxe de configuration de i3. # # Documentation officielle : https://man.archlinux.org/man/sway.5 # Pour recharger la configuration sans redémarrer : Super + Maj + C # Pour quitter Sway : Super + Maj + E # ============================================================================= # ============================================================================= # 1. TOUCHE MODIFICATEUR (Super / Meta) # ============================================================================= # $mod est la touche principale utilisée pour tous les raccourcis. # Mod4 = touche Super (touche Windows / Commande) # Mod1 = touche Alt (alternative si Super est indisponible) set $mod Mod4 # ============================================================================= # 2. CLAVIER — DISPOSITION AZERTY FRANÇAISE # ============================================================================= # Configurez ici votre clavier. Tous les paramètres sont optionnels. # # Options courantes pour `xkb_options` : # caps:escape → Caps Lock fonctionne comme Échap # caps:ctrl_modifier → Caps Lock fonctionne comme Ctrl # compose:ralt → Alt droit = touche Compose (accents) # grp:alt_shift_toggle → Alt+Maj pour changer de disposition # # Délai et répétition (repeat_delay / repeat_rate) : # repeat_delay : temps en ms avant que la répétition commence (défaut : 600) # repeat_rate : frappes par seconde en répétition (défaut : 25) input "type:keyboard" { xkb_layout fr xkb_variant azerty xkb_options caps:escape repeat_delay 300 repeat_rate 40 } # --- Claviers spécifiques (optionnel) --- # Si vous avez plusieurs claviers et voulez des réglages différents, # trouvez l'identifiant avec : swaymsg -t get_inputs # Exemple : # input "1:1:AT_Translated_Set_2_keyboard" { # xkb_layout fr # } # ============================================================================= # 3. SOURIS ET PAVÉ TACTILE # ============================================================================= # Trouvez les identifiants de vos périphériques avec : swaymsg -t get_inputs input "type:touchpad" { # Activer/désactiver le clic en tapant sur le pavé tap enabled # Désactiver le pavé tactile pendant la frappe dwt enabled # Défilement naturel (comme sur macOS) : disabled | enabled natural_scroll disabled # Accélération du pointeur : valeur entre -1.0 (lent) et 1.0 (rapide) pointer_accel 0.2 # Mode d'accélération : adaptive | flat accel_profile adaptive } input "type:pointer" { # Désactiver l'accélération pour une souris (utile en jeu) # accel_profile flat pointer_accel 0.0 } # ============================================================================= # 4. MONITEURS / ÉCRANS # ============================================================================= # Configurez vos moniteurs ici. # Listez les sorties disponibles avec : swaymsg -t get_outputs # # Syntaxe : output # # Résolutions courantes : 1920x1080, 2560x1440, 3840x2160 # Fréquences courantes : 60Hz, 75Hz, 144Hz, 165Hz # Position (multi-écran): pos 0 0 (principal), pos 1920 0 (à droite), etc. # Rotation : transform normal | 90 | 180 | 270 # Mise à l'échelle HiDPI: scale 1.5 (pour les écrans 4K par exemple) # Écran principal (adaptez le nom à votre matériel) output * bg #1e1e2e solid_color # Exemples de configurations d'écrans (décommentez et adaptez) : # # output HDMI-A-1 { # resolution 1920x1080 # refresh 60 # pos 0 0 # transform normal # scale 1 # } # # output DP-1 { # resolution 2560x1440 # refresh 144 # pos 1920 0 # } # # Désactiver un écran : # output eDP-1 disable # ============================================================================= # 5. POLICE D'AFFICHAGE # ============================================================================= # Police utilisée pour les titres de fenêtres et la barre swaybar. # Formats : pango: # Exemples : pango:monospace 10 | pango:Noto Sans 11 | pango:JetBrains Mono 10 font pango:monospace 10 # ============================================================================= # 6. APPARENCE DES FENÊTRES # ============================================================================= # Épaisseur de la bordure des fenêtres (en pixels). 0 = sans bordure. default_border pixel 2 # Taille des espaces entre les fenêtres en tuiles (gaps) # inner = espace entre les fenêtres # outer = espace entre les fenêtres et le bord de l'écran gaps inner 6 gaps outer 4 # Masquer les bordures quand une seule fenêtre est visible # none | smart | smart_no_gaps smart_borders smart_no_gaps # Couleurs des bordures # Format : client.<état> # # États : # focused → fenêtre active # unfocused → fenêtre inactive # focused_inactive → fenêtre inactive d'un conteneur actif # urgent → fenêtre avec une alerte set $bleu #89b4fa set $surface #313244 set $fond #1e1e2e set $texte #cdd6f4 set $urgence #f38ba8 client.focused $bleu $surface $texte $bleu $bleu client.unfocused $fond $fond $texte $fond $fond client.focused_inactive $surface $surface $texte $surface $surface client.urgent $urgence $urgence $texte $urgence $urgence # ============================================================================= # 7. APPLICATIONS PAR DÉFAUT # ============================================================================= # Définissez ici vos applications favorites. # Ces variables sont utilisées dans les raccourcis clavier ci-dessous. # # Terminal : foot (léger, natif Wayland) | alacritty | kitty | wezterm # Navigateur : firefox | chromium | brave-browser | librewolf # Explorateur : thunar | nautilus | nemo | dolphin # Éditeur : code | gedit | mousepad | kate # Lanceur : wofi --show drun | rofi -show drun (via XWayland) # Messagerie : telegram-desktop | signal-desktop | discord # Mail : thunderbird | evolution # Musique : spotify | rhythmbox | lollypop set $terminal foot set $browser firefox set $displaymgr nwg-displays set $files nemo set $editor idea set $launcher wofi --show drun --allow-markup --insensitive set $screenshot grim -g "$(slurp)" - | wl-copy set $screenclip grim ~/Images/capture-$(date +%Y%m%d-%H%M%S).png # ============================================================================= # 8. RACCOURCIS CLAVIER — APPLICATIONS DIRECTES # ============================================================================= # Principe : une touche = une application. Pas de cycling, pas de Alt+Tab. # Chaque raccourci lance l'application ou y retourne si elle est déjà ouverte. # # Syntaxe : bindsym $mod+ exec # # Sur AZERTY, les touches disponibles facilement avec Super : # Lettres : a z e r t y u i o p q s d f g h j k l m w x c v b n # Chiffres : 1 2 3 4 5 6 7 8 9 0 (pour les espaces de travail) # Autres : Return (Entrée), space (Espace), Tab, F1-F12 # # Astuce : utilisez `xev` ou `wev` pour identifier le nom d'une touche # --- Lanceur et terminal --- bindsym $mod+Return exec $terminal bindsym $mod+space exec $launcher # --- Applications courantes (modifiez selon vos besoins) --- bindsym $mod+b exec $browser bindsym $mod+e exec $files bindsym $mod+c exec $editor bindsym $mod+p exec $displaymgr # --- Capture d'écran --- # Super + Impr → capture d'une zone sélectionnée (copie dans le presse-papier) # Super + Maj + Impr → capture de tout l'écran (sauvegarde dans ~/Images) bindsym $mod+Print exec $screenshot bindsym $mod+Shift+Print exec $screenclip # --- Applications supplémentaires (décommentez et adaptez) --- # bindsym $mod+m exec thunderbird # bindsym $mod+s exec spotify # bindsym $mod+t exec telegram-desktop # bindsym $mod+n exec $terminal -e nvim # bindsym $mod+p exec pavucontrol # ============================================================================= # 9. RACCOURCIS CLAVIER — GESTION DES FENÊTRES # ============================================================================= # --- Fermer la fenêtre active --- bindsym $mod+q kill # --- Recharger la configuration sans redémarrer --- bindsym $mod+Shift+c reload # --- Quitter Sway (déconnexion) --- bindsym $mod+Shift+e exec swaynag \ -t warning \ -m 'Voulez-vous vraiment quitter Sway ?' \ -b 'Oui, quitter' 'swaymsg exit' # --- Déplacer le focus entre les fenêtres --- # Avec les flèches directionnelles bindsym $mod+Left focus left bindsym $mod+Down focus down bindsym $mod+Up focus up bindsym $mod+Right focus right # Avec les touches hjkl (style Vim) — optionnel bindsym $mod+h focus left bindsym $mod+j focus down bindsym $mod+k focus up bindsym $mod+l focus right # --- Déplacer les fenêtres --- bindsym $mod+Shift+Left move left bindsym $mod+Shift+Down move down bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right # --- Changer le mode de découpe (split) --- # Horizontal : les nouvelles fenêtres s'ouvrent à droite bindsym $mod+Shift+h split h # Vertical : les nouvelles fenêtres s'ouvrent en bas bindsym $mod+Shift+v split v # Alterner automatiquement selon la dimension du conteneur bindsym $mod+Shift+t split toggle # --- Changer la disposition du conteneur actif --- # stacking : fenêtres empilées avec onglets en haut # tabbed : fenêtres en onglets # toggle split : alterner horizontal/vertical bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+z layout toggle split # --- Fenêtre en plein écran --- bindsym $mod+f fullscreen toggle # --- Mode flottant --- # Basculer la fenêtre active entre tuile et flottante bindsym $mod+Shift+f floating toggle # Garder le focus sur les fenêtres tuiles même quand une flottante est présente focus_follows_mouse no # Passer le focus sur tuiles / flottantes bindsym $mod+Shift+space focus mode_toggle # Déplacer une fenêtre flottante avec Super + clic gauche # Redimensionner une fenêtre flottante avec Super + clic droit floating_modifier $mod normal # ============================================================================= # 10. ESPACES DE TRAVAIL (BUREAUX VIRTUELS) # ============================================================================= # Les espaces de travail permettent d'organiser vos fenêtres par thème. # Exemple d'organisation : # 1 → Terminal 2 → Navigateur 3 → Éditeur # 4 → Messagerie 5 → Musique 6 → Fichiers # Noms des espaces de travail (modifiez selon vos préférences) set $ws1 "1" set $ws2 "2" set $ws3 "3" set $ws4 "4" set $ws5 "5" set $ws6 "6" set $ws7 "7" set $ws8 "8" set $ws9 "9" set $ws10 "10" # --- Aller à un espace de travail --- # Note AZERTY : les chiffres sont accessibles directement (pas besoin de Maj) bindsym $mod+ampersand workspace $ws1 bindsym $mod+eacute workspace $ws2 bindsym $mod+quotedbl workspace $ws3 bindsym $mod+apostrophe workspace $ws4 bindsym $mod+parenleft workspace $ws5 bindsym $mod+minus workspace $ws6 bindsym $mod+egrave workspace $ws7 bindsym $mod+underscore workspace $ws8 bindsym $mod+ccedilla workspace $ws9 bindsym $mod+agrave workspace $ws10 # Variante avec les touches numériques directes (si les touches ci-dessus # ne fonctionnent pas selon votre configuration) : # bindsym $mod+1 workspace $ws1 # ... # bindsym $mod+0 workspace $ws10 # --- Déplacer la fenêtre active vers un espace de travail --- bindsym $mod+Shift+ampersand move container to workspace $ws1 bindsym $mod+Shift+eacute move container to workspace $ws2 bindsym $mod+Shift+quotedbl move container to workspace $ws3 bindsym $mod+Shift+apostrophe move container to workspace $ws4 bindsym $mod+Shift+parenleft move container to workspace $ws5 bindsym $mod+Shift+minus move container to workspace $ws6 bindsym $mod+Shift+egrave move container to workspace $ws7 bindsym $mod+Shift+underscore move container to workspace $ws8 bindsym $mod+Shift+ccedilla move container to workspace $ws9 bindsym $mod+Shift+agrave move container to workspace $ws10 # --- Navigation entre espaces de travail --- # Aller à l'espace de travail précédent/suivant bindsym $mod+Tab workspace next bindsym $mod+Shift+Tab workspace prev # Revenir à l'espace de travail précédemment actif bindsym $mod+BackSpace workspace back_and_forth # --- Affecter des applications à des espaces de travail --- # Trouvez le nom de classe avec : swaymsg -t get_tree | grep app_id # Pour les apps XWayland, cherchez "class" au lieu de "app_id" # # assign [app_id="firefox"] $ws2 # assign [app_id="org.gnome.Nautilus"] $ws6 # assign [class="code-oss"] $ws3 # assign [app_id="thunderbird"] $ws4 # assign [app_id="spotify"] $ws5 # ============================================================================= # 11. MODE REDIMENSIONNEMENT # ============================================================================= # Appuyez sur Super+R pour entrer en mode redimensionnement. # Utilisez les flèches pour redimensionner, Échap ou Entrée pour sortir. mode "resize" { bindsym Left resize shrink width 40px bindsym Down resize grow height 40px bindsym Up resize shrink height 40px bindsym Right resize grow width 40px # Sorties du mode redimensionnement bindsym Return mode "default" bindsym Escape mode "default" bindsym $mod+r mode "default" } bindsym $mod+r mode "resize" # ============================================================================= # 12. TOUCHES MULTIMÉDIA ET SYSTÈME # ============================================================================= # --- Volume (PulseAudio / PipeWire) --- bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle # --- Luminosité (nécessite brightnessctl) --- bindsym XF86MonBrightnessUp exec brightnessctl set +10% bindsym XF86MonBrightnessDown exec brightnessctl set 10%- # --- Contrôle multimédia (nécessite playerctl) --- bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous bindsym XF86AudioStop exec playerctl stop # ============================================================================= # 13. VERROUILLAGE ET MISE EN VEILLE # ============================================================================= # Verrouiller l'écran manuellement bindsym Mod1+l exec swaylock --color 1e1e2e --inside-color 313244 \ --ring-color 89b4fa --key-hl-color cdd6f4 --line-color 00000000 \ --separator-color 00000000 --fade-in 0.2 # Mise en veille automatique avec swayidle : # - après 5 min sans activité → verrouillage # - après 10 min → extinction de l'écran # - au retour → rallumage de l'écran exec swayidle -w \ timeout 300 'swaylock --color 1e1e2e' \ timeout 600 'swaymsg "output * dpms off"' \ resume 'swaymsg "output * dpms on"' \ before-sleep 'swaylock --color 1e1e2e' # ============================================================================= # 14. RÈGLES DE FENÊTRES (COMPORTEMENTS SPÉCIFIQUES) # ============================================================================= # Vous pouvez forcer certaines fenêtres à être flottantes, à s'ouvrir # sur un espace de travail particulier, ou à ne pas avoir de bordure. # # Trouvez app_id avec : swaymsg -t get_tree | grep app_id # Trouvez class avec : swaymsg -t get_tree | grep '"class"' # (class = apps XWayland comme certaines apps Electron) # # Paramètres disponibles : # floating enable/disable # border normal | pixel | none # move to workspace # inhibit_idle focus | visible | open | none # Fenêtres flottantes par défaut (boîtes de dialogue, utilitaires) for_window [window_role="dialog"] floating enable for_window [window_role="bubble"] floating enable for_window [window_role="pop-up"] floating enable for_window [window_type="dialog"] floating enable for_window [window_type="menu"] floating enable for_window [app_id="pavucontrol"] floating enable, resize set 700 450 for_window [app_id="nm-connection-editor"] floating enable # Exemples supplémentaires (décommentez selon vos besoins) : # for_window [app_id="firefox" title="Téléchargements"] floating enable # for_window [app_id="mpv"] floating enable, border none # for_window [class="Steam" title="Friends List"] floating enable # ============================================================================= # 15. BARRE D'ÉTAT # ============================================================================= # Deux options : # A) swaybar (intégré, simple, recommandé pour débuter) # B) waybar (externe, très personnalisable — voir ~/.config/waybar/) # # Pour utiliser waybar, commentez le bloc "bar { ... }" ci-dessous # et décommentez la ligne "exec waybar". # --- Option A : swaybar intégré --- # bar { # # Position : top | bottom # position top # # # Commande de statut (status_command) # # swaybar-status : basique | i3status : plus d'infos | i3blocks : scripts # status_command while date +'%a %d %b %H:%M:%S'; do sleep 1; done # # colors { # # Fond et texte de la barre # background #1e1e2e # statusline #cdd6f4 # separator #45475a # # # Couleurs des espaces de travail # # format : # focused_workspace #89b4fa #313244 #cdd6f4 # active_workspace #313244 #313244 #cdd6f4 # inactive_workspace #1e1e2e #1e1e2e #585b70 # urgent_workspace #f38ba8 #f38ba8 #1e1e2e # } # } # --- Option B : waybar (décommentez pour activer) --- exec_always pkill waybar; waybar # ============================================================================= # 16. DÉMARRAGE AUTOMATIQUE DES APPLICATIONS # ============================================================================= # `exec` : lancé une seule fois au démarrage de Sway # `exec_always` : lancé aussi à chaque rechargement de la configuration exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway exec systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # config écrans exec_always pkill kanshi; kanshi # sync cloud boulot exec nextcloud # Notifications exec mako # Gestionnaire d'authentification (nécessaire pour certaines apps graphiques) exec /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 exec gnome-keyring-daemon --start --components=secrets,ssh,pkcs11 # Gestionnaire de réseau (barre système) exec nm-applet --indicator # Presse-papier persistant (optionnel — nécessite wl-paste) exec wl-paste --watch cliphist store # Démarrer des apps au lancement (décommentez selon vos besoins) : exec firefox exec mattermost-desktop # ============================================================================= # FIN DE LA CONFIGURATION # ============================================================================= # Pour tester les changements : Super + Maj + C (recharge la config) # Manuel complet : man 5 sway # Dépôt officiel : https://github.com/swaywm/sway