diff --git a/configs/releng/airootfs/usr/local/share/fws/hyprland.conf.tmpl b/configs/releng/airootfs/usr/local/share/fws/hyprland.conf.tmpl index 8316f4e..8888d0b 100644 --- a/configs/releng/airootfs/usr/local/share/fws/hyprland.conf.tmpl +++ b/configs/releng/airootfs/usr/local/share/fws/hyprland.conf.tmpl @@ -1,6 +1,15 @@ # FWS — configuration Hyprland par défaut. # Le clavier (__KB_LAYOUT__ / __KB_VARIANT__) est injecté à l'installation, # depuis le choix fait dans Anaconda. Édite ce fichier librement. +# +# Raccourcis : transposition de la config i3/sway FWS (mêmes touches). +# Couleurs : nuances de bleu (palette Catppuccin Mocha). +# +# Les raccourcis sont déclarés avec « bindd » (bind + description) : la +# description alimente l'écran « Raccourcis clavier » (bouton ⌨ de la barre +# ou SUPER+K → fws-hypr-keys, qui lit les binds RÉELS via hyprctl). Ajoute +# tes propres bindd : ils apparaîtront automatiquement dans la liste. +# ⚠ Pas de virgule dans les descriptions (séparateur de champs Hyprland). monitor = , preferred, auto, 1 @@ -9,17 +18,47 @@ input { kb_variant = __KB_VARIANT__ follow_mouse = 1 numlock_by_default = true + touchpad { + natural_scroll = true + tap-to-click = true + } } general { gaps_in = 4 gaps_out = 8 border_size = 2 + # Nuances de bleu : bleu → sapphire en dégradé sur la fenêtre active. + col.active_border = rgb(89b4fa) rgb(74c7ec) 45deg + col.inactive_border = rgb(313244) layout = dwindle } decoration { - rounding = 6 + rounding = 8 + # Flou et ombres COUPÉS : rendu logiciel (llvmpipe) en VM — cf. le + # wrapper fws-hyprland écrit par l'installateur. Sur un vrai GPU tu + # peux les réactiver (enabled = true). + blur { + enabled = false + } + shadow { + enabled = false + } +} + +animations { + enabled = true + bezier = fws, 0.22, 1.0, 0.36, 1.0 + animation = windows, 1, 3, fws + animation = workspaces, 1, 3, fws + animation = fade, 1, 2, default +} + +misc { + disable_hyprland_logo = true + force_default_wallpaper = 0 + background_color = 0x1a1a2e # bleu nuit FWS (aucun fond requis) } # Barre d'état au démarrage. @@ -27,35 +66,97 @@ exec-once = waybar $mod = SUPER -# Applications -bind = $mod, Return, exec, kitty -bind = $mod, E, exec, firefox -bind = $mod, R, exec, wofi --show drun -bind = $mod, Q, killactive, -bind = $mod SHIFT, Q, exit, -bind = $mod, V, togglefloating, -bind = $mod, F, fullscreen, +# --- Applications --------------------------------------------------------- +bindd = $mod, Return, Ouvrir un terminal (kitty), exec, kitty +bindd = $mod SHIFT, Return, Terminal flottant, exec, kitty --class floating-term +bindd = $mod, R, Menu des applications, exec, wofi --show drun +bindd = $mod, E, Gestionnaire de fichiers, exec, thunar +bindd = $mod, B, Ouvrir Firefox, exec, firefox +bindd = $mod, KP_Multiply, Lancer Steam, exec, steam +bindd = $mod, K, Afficher les raccourcis clavier, exec, fws-hypr-keys -# Focus -bind = $mod, left, movefocus, l -bind = $mod, right, movefocus, r -bind = $mod, up, movefocus, u -bind = $mod, down, movefocus, d +# --- Fenêtres --------------------------------------------------------------- +bindd = $mod, Q, Fermer la fenêtre, killactive, +bindd = $mod, V, Fenêtre flottante ou ancrée, togglefloating, +bindd = $mod, F, Plein écran, fullscreen, +bindd = $mod, J, Basculer la découpe horizontale/verticale, layoutmsg, togglesplit +bindd = $mod, L, Verrouiller l'écran, exec, hyprlock +bindd = $mod SHIFT, E, Quitter la session (retour à SDDM), exit, +bindd = $mod SHIFT, C, Recharger la configuration Hyprland, exec, hyprctl reload -# Espaces de travail 1-6 -bind = $mod, 1, workspace, 1 -bind = $mod, 2, workspace, 2 -bind = $mod, 3, workspace, 3 -bind = $mod, 4, workspace, 4 -bind = $mod, 5, workspace, 5 -bind = $mod, 6, workspace, 6 -bind = $mod SHIFT, 1, movetoworkspace, 1 -bind = $mod SHIFT, 2, movetoworkspace, 2 -bind = $mod SHIFT, 3, movetoworkspace, 3 -bind = $mod SHIFT, 4, movetoworkspace, 4 -bind = $mod SHIFT, 5, movetoworkspace, 5 -bind = $mod SHIFT, 6, movetoworkspace, 6 +# --- Focus (flèches) --------------------------------------------------------- +bindd = $mod, left, Focus à gauche, movefocus, l +bindd = $mod, right, Focus à droite, movefocus, r +bindd = $mod, up, Focus en haut, movefocus, u +bindd = $mod, down, Focus en bas, movefocus, d -# Souris : déplacer / redimensionner les fenêtres +# --- Déplacer la fenêtre (Maj + flèches) --------------------------------------- +bindd = $mod SHIFT, left, Déplacer la fenêtre à gauche, movewindow, l +bindd = $mod SHIFT, right, Déplacer la fenêtre à droite, movewindow, r +bindd = $mod SHIFT, up, Déplacer la fenêtre en haut, movewindow, u +bindd = $mod SHIFT, down, Déplacer la fenêtre en bas, movewindow, d + +# --- Redimensionner (Ctrl + flèches, maintien possible) ------------------------ +binde = $mod CTRL, left, resizeactive, -30 0 +binde = $mod CTRL, right, resizeactive, 30 0 +binde = $mod CTRL, up, resizeactive, 0 -30 +binde = $mod CTRL, down, resizeactive, 0 30 + +# --- Espaces de travail 1-10 (0 = espace 10, comme i3) -------------------------- +bindd = $mod, 1, Aller à l'espace 1, workspace, 1 +bindd = $mod, 2, Aller à l'espace 2, workspace, 2 +bindd = $mod, 3, Aller à l'espace 3, workspace, 3 +bindd = $mod, 4, Aller à l'espace 4, workspace, 4 +bindd = $mod, 5, Aller à l'espace 5, workspace, 5 +bindd = $mod, 6, Aller à l'espace 6, workspace, 6 +bindd = $mod, 7, Aller à l'espace 7, workspace, 7 +bindd = $mod, 8, Aller à l'espace 8, workspace, 8 +bindd = $mod, 9, Aller à l'espace 9, workspace, 9 +bindd = $mod, 0, Aller à l'espace 10, workspace, 10 +bindd = $mod SHIFT, 1, Envoyer la fenêtre vers l'espace 1, movetoworkspace, 1 +bindd = $mod SHIFT, 2, Envoyer la fenêtre vers l'espace 2, movetoworkspace, 2 +bindd = $mod SHIFT, 3, Envoyer la fenêtre vers l'espace 3, movetoworkspace, 3 +bindd = $mod SHIFT, 4, Envoyer la fenêtre vers l'espace 4, movetoworkspace, 4 +bindd = $mod SHIFT, 5, Envoyer la fenêtre vers l'espace 5, movetoworkspace, 5 +bindd = $mod SHIFT, 6, Envoyer la fenêtre vers l'espace 6, movetoworkspace, 6 +bindd = $mod SHIFT, 7, Envoyer la fenêtre vers l'espace 7, movetoworkspace, 7 +bindd = $mod SHIFT, 8, Envoyer la fenêtre vers l'espace 8, movetoworkspace, 8 +bindd = $mod SHIFT, 9, Envoyer la fenêtre vers l'espace 9, movetoworkspace, 9 +bindd = $mod SHIFT, 0, Envoyer la fenêtre vers l'espace 10, movetoworkspace, 10 + +# --- Multi-écrans (comme i3 : Super+Ctrl+1/2 = écran gauche/droit) ------------- +bindd = $mod CTRL, 1, Envoyer la fenêtre vers l'écran de gauche, movewindow, mon:l +bindd = $mod CTRL, 2, Envoyer la fenêtre vers l'écran de droite, movewindow, mon:r + +# --- Molette = changer d'espace de travail -------------------------------------- +bindd = $mod, mouse_up, Espace de travail précédent, workspace, e-1 +bindd = $mod, mouse_down, Espace de travail suivant, workspace, e+1 + +# --- Scratchpad (espace spécial) ------------------------------------------------- +bindd = $mod, S, Afficher le scratchpad, togglespecialworkspace, magic +bindd = $mod SHIFT, S, Envoyer la fenêtre au scratchpad, movetoworkspace, special:magic + +# --- Captures d'écran (grim/slurp → presse-papier ou ~/Images) ------------------- +bindd = , Print, Capture plein écran vers le presse-papier, exec, grim - | wl-copy +bindd = $mod, Print, Capture d'une zone vers le presse-papier, exec, grim -g "$(slurp)" - | wl-copy +bindd = $mod SHIFT, Print, Capture d'une zone vers ~/Images, exec, sh -c 'mkdir -p ~/Images && grim -g "$(slurp)" ~/Images/capture_$(date +%Y-%m-%d_%H-%M-%S).png' + +# --- Multimédia (touches XF86 : volume via PipeWire, lecture via playerctl) ------ +bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ +bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPrev, exec, playerctl previous + +# --- Souris : déplacer / redimensionner les fenêtres ----------------------------- bindm = $mod, mouse:272, movewindow bindm = $mod, mouse:273, resizewindow + +# --- Règles de fenêtres (comme i3) ------------------------------------------------ +# Syntaxe Hyprland ≥ 0.55 : champs « » + cibles « match:… » +# (validé contre le binaire avec --verify-config). +windowrule = float on, match:class ^(floating-term)$ +windowrule = size 900 550, match:class ^(floating-term)$ +windowrule = float on, match:class ^([Pp]avucontrol|org.pulseaudio.pavucontrol)$ +windowrule = float on, match:title ^(Picture-in-Picture)$