nakesway!
parent
0da07f94d0
commit
97d82bd18e
|
|
@ -1,533 +1,12 @@
|
||||||
# =============================================================================
|
# sway main config file ~/.config/sway/config
|
||||||
# ~/.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
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
|
# include system config files
|
||||||
|
include /etc/sway/config.d/*
|
||||||
|
|
||||||
# =============================================================================
|
# include user config files
|
||||||
# 1. TOUCHE MODIFICATEUR (Super / Meta)
|
include $HOME/.config/sway/config.d/*
|
||||||
# =============================================================================
|
|
||||||
# $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
|
# no x11
|
||||||
|
#xwayland disable
|
||||||
|
# preload x11
|
||||||
# =============================================================================
|
xwayland force
|
||||||
# 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 <NOM> <PARAMÈTRE> <VALEUR>
|
|
||||||
#
|
|
||||||
# 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:<Nom> <taille>
|
|
||||||
# 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> <bordure> <fond> <texte> <indicateur> <bordure_enfant>
|
|
||||||
#
|
|
||||||
# É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+<touche> exec <commande>
|
|
||||||
#
|
|
||||||
# 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 <taille> | pixel <taille> | none
|
|
||||||
# move to workspace <nom>
|
|
||||||
# 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 : <bordure> <fond> <texte>
|
|
||||||
# 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
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
# sway # variables
|
||||||
|
# used on all other sway config files
|
||||||
|
|
||||||
|
# modifiers: Alt & Super
|
||||||
|
set $mod Mod1
|
||||||
|
set $mad Mod4
|
||||||
|
|
||||||
|
# direction vim like
|
||||||
|
set $left h
|
||||||
|
set $down j
|
||||||
|
set $up k
|
||||||
|
set $right l
|
||||||
|
|
||||||
|
# custom workspace names
|
||||||
|
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:"
|
||||||
|
set $ws11 "11:"
|
||||||
|
set $ws12 "12:"
|
||||||
|
|
||||||
|
# default apps
|
||||||
|
set $term "footclient"
|
||||||
|
set $browser "export MOZ_ENABLE_WAYLAND=1 && firefox"
|
||||||
|
set $mailer "export MOZ_ENABLE_WAYLAND=1 && thunderbird"
|
||||||
|
set $p2p "transmission-gtk"
|
||||||
|
set $player "$term --title=player --app-id=player mocp"
|
||||||
|
set $mixer "$term -W 80x25 --title=mixer --app-id=mixer alsamixer"
|
||||||
|
set $infosbox "xterm -g 110x30 -e 'neowofetch;$SHELL'"
|
||||||
|
set $infosystem "foot -W 140x40 --title Infos-System btop"
|
||||||
|
|
||||||
|
# menu by rofi
|
||||||
|
set $menup "popmenu 0"
|
||||||
|
set $menud "rofi -modi 'run,drun,ssh' -show run -sidebar-mode"
|
||||||
|
|
||||||
|
# nice locker
|
||||||
|
set $locker "nakedquit lock"
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# sway # outputs
|
||||||
|
|
||||||
|
### Output configuration
|
||||||
|
# You can get the names of your outputs by running: swaymsg -t get_outputs
|
||||||
|
# Example configuration:
|
||||||
|
# output HDMI-A-1 resolution 1920x1080 position 1920,0
|
||||||
|
# output LVDS-1 resolution 1280x800 position 0,0
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
# sway # inputs
|
||||||
|
|
||||||
|
### Input configuration
|
||||||
|
# Example configuration:
|
||||||
|
# input "2:14:SynPS/2_Synaptics_TouchPad" {
|
||||||
|
# dwt enabled
|
||||||
|
# tap enabled
|
||||||
|
# natural_scroll enabled
|
||||||
|
# middle_emulation enabled
|
||||||
|
# }
|
||||||
|
# You can get the names of your inputs by running: swaymsg -t get_inputs
|
||||||
|
# Read `man 5 sway-input` for more information about this section.
|
||||||
|
|
||||||
|
# evdev is an Xorg input driver for Linux's generic event devices,
|
||||||
|
# including most mice, keyboards, tablets and touchscreens.
|
||||||
|
input * xkb_rules evdev
|
||||||
|
|
||||||
|
#input "type:keyboard" {
|
||||||
|
# xkb_layout gb
|
||||||
|
# xkb_options altwin:menu_win
|
||||||
|
#}
|
||||||
|
|
||||||
|
# trying auto-detection
|
||||||
|
exec_always {
|
||||||
|
'swaymsg input type:keyboard xkb_layout "$(localectl status | grep "X11 Layout" | sed -e "s/^.*X11 Layout://")"'
|
||||||
|
'swaymsg input type:keyboard xkb_variant "$(localectl status | grep "X11 Variant" | sed -e "s/^.*X11 Variant://")"'
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
# sway # statusbar
|
||||||
|
|
||||||
|
# bar with waybar with desktop icons, glyphs and infos
|
||||||
|
bar {
|
||||||
|
mode dock
|
||||||
|
hidden_state hide
|
||||||
|
swaybar_command waybar
|
||||||
|
}
|
||||||
|
|
||||||
|
# bar with swaybar with options: [1]command, [2]infobar or [3]i3status
|
||||||
|
#bar {
|
||||||
|
# position bottom
|
||||||
|
# font Hack 9
|
||||||
|
# height 22
|
||||||
|
# separator_symbol |
|
||||||
|
# status_padding 0
|
||||||
|
# strip_workspace_name yes
|
||||||
|
# mode dock
|
||||||
|
# hidden_state hide
|
||||||
|
# swaybar_command swaybar
|
||||||
|
# #[1]#status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
|
||||||
|
# #[2]#status_command while $HOME/.config/sway/scripts/infosbar; do sleep 2; done
|
||||||
|
# #[3]#status_command i3status
|
||||||
|
# colors {
|
||||||
|
# statusline #d8dee9ff
|
||||||
|
# background #2e3440d9
|
||||||
|
# focused_statusline #d8dee9ff
|
||||||
|
# focused_background #2e3440d9
|
||||||
|
# separator #d8dee9ff
|
||||||
|
# #bar colors border bground texte
|
||||||
|
# focused_workspace #5e81acff #5e81acff #d8dee9ff
|
||||||
|
# active_workspace #5e81acff #5e81acff #d8dee9ff
|
||||||
|
# inactive_workspace #2e3440d9 #2e3440d9 #d8dee9d9
|
||||||
|
# urgent_workspace #bf616aff #bf616aff #d8dee9ff
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
# show/hide bar
|
||||||
|
bindsym $mad+b exec "swaymsg bar mode hide bar-0"
|
||||||
|
bindsym $mad+Shift+b exec "swaymsg bar mode dock bar-0"
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
# sway # autostart apps
|
||||||
|
|
||||||
|
# system & user autostart
|
||||||
|
exec --no-startup-id "dex -e sway -a -s /etc/xdg/autostart/:~/.config/autostart/"
|
||||||
|
# authentification
|
||||||
|
exec --no-startup-id "/usr/libexec/polkit-mate-authentication-agent-1"
|
||||||
|
|
||||||
|
# exec on sway start
|
||||||
|
exec --no-startup-id "xrdb -load ~/.Xresources"
|
||||||
|
exec --no-startup-id "foot --server"
|
||||||
|
exec --no-startup-id "sleep 20s; $HOME/.config/sway/scripts/screentemp toggle; pkill -RTMIN+5 waybar"
|
||||||
|
|
||||||
|
# apps on start
|
||||||
|
exec "sleep 5 && $browser"
|
||||||
|
#exec "sleep 10 && $mailer"
|
||||||
|
#exec "sleep 15 && $p2p"
|
||||||
|
|
||||||
|
# launch idle configuration : man swayidle ~ man swaylock
|
||||||
|
#exec swayidle -w \
|
||||||
|
# timeout 300 'nakedquit lock' \
|
||||||
|
# timeout 360 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||||
|
# timeout 420 'acpi -b | grep Discharging && systemctl suspend' \
|
||||||
|
# before-sleep 'nakedquit lock'
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
# sway # scratchpad
|
||||||
|
|
||||||
|
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||||
|
# You can send windows there and get them back later.
|
||||||
|
|
||||||
|
# launch a terminal and move it to scratch at launch
|
||||||
|
exec --no-startup-id "sleep 10 && $term -t scratch -a scratch -W 130x25"
|
||||||
|
for_window [app_id="scratch"] floating enable, move absolute position center
|
||||||
|
for_window [app_id="scratch"] move scratchpad
|
||||||
|
|
||||||
|
# Move the currently focused window to the scratchpad
|
||||||
|
bindsym $mad+Shift+Return move scratchpad
|
||||||
|
|
||||||
|
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||||
|
# If there are multiple scratchpad windows, this command cycles through them.
|
||||||
|
bindsym $mad+Return scratchpad show
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
# sway # look
|
||||||
|
|
||||||
|
font pango:Hack,forkawesome 9
|
||||||
|
workspace_layout tabbed
|
||||||
|
default_border pixel 3
|
||||||
|
default_floating_border pixel 2
|
||||||
|
titlebar_border_thickness 1
|
||||||
|
hide_edge_borders --i3 smart
|
||||||
|
smart_borders on
|
||||||
|
smart_gaps on
|
||||||
|
gaps inner 5
|
||||||
|
focus_follows_mouse no
|
||||||
|
focus_on_window_activation smart
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
# class border bground text indicator child_border
|
||||||
|
client.focused #5E81AC #5E81AC #D8DEE9 #5E81AC #5E81AC
|
||||||
|
client.focused_inactive #4C566A #2E3440 #D8DEE9 #2E3440 #4C566A
|
||||||
|
client.unfocused #4C566A #2E3440 #88C0D0 #2E3440 #4C566A
|
||||||
|
client.urgent #4C566A #BF616A #D8DEE9 #BF616A #BF616A
|
||||||
|
|
||||||
|
# gtk
|
||||||
|
exec_always $HOME/.config/sway/scripts/import-gsettings
|
||||||
|
|
||||||
|
# hide cursor (ms)
|
||||||
|
seat * hide_cursor 5000
|
||||||
|
|
||||||
|
# opacity for inactive windows (0...1)
|
||||||
|
exec python3 $HOME/.config/sway/scripts/inactive-windows-transparency.py -o 0.95
|
||||||
|
|
||||||
|
# wallpaper
|
||||||
|
output * bg /usr/share/backgrounds/nakedeb-logo.jpg fill
|
||||||
|
exec_always --no-startup-id "$HOME/.config/sway/scripts/wallrdm"
|
||||||
|
#exec --no-startup-id "while $HOME/.config/sway/scripts/wallrdm; do sleep 180; done"
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
# sway # window rules
|
||||||
|
|
||||||
|
# auto floating
|
||||||
|
for_window [class="XTerm|XCalc|Xmessage|Lxappearance|Sxiv|Nsxiv|Tk"] floating enable, move absolute position center
|
||||||
|
for_window [app_id="org.keepassxc.KeePassXC|org.gnome.Calculator|engrampa|file-roller|lxappearance|mpv|swayimg*|mixer|pavucontrol"] floating enable, move absolute position center
|
||||||
|
for_window [title="Infos-System|Infos System"] floating enable, move absolute position center
|
||||||
|
for_window [window_role="pop-up|bubble|task_dialog|Preferences|About"] floating enable, move absolute position center
|
||||||
|
for_window [window_type="dialog"] floating enable, move absolute position center
|
||||||
|
|
||||||
|
# no idle on movies
|
||||||
|
for_window [app_id="mpv"] inhibit_idle focus
|
||||||
|
for_window [title="VLC"] inhibit_idle focus
|
||||||
|
|
||||||
|
# no transparency for Gimp tools
|
||||||
|
for_window [class="Gimp"] mark --add no3d
|
||||||
|
|
||||||
|
# special icons on title for special apps
|
||||||
|
# inspired by https://github.com/iguanajuice/sway-font-awesome
|
||||||
|
for_window [app_id="foot|footclient"] title_format " %title"
|
||||||
|
for_window [app_id="file-roller"] title_format " %title"
|
||||||
|
for_window [app_id="eog|eom|feh|ristretto|xviewer|imv|gthumb|org.inkscape.Inkscape"] title_format " %title"
|
||||||
|
for_window [app_id="epiphany|org.qutebrowser.qutebrowser|firefox|Firefox-esr"] title_format " %title"
|
||||||
|
for_window [app_id="thunderbird-*"] title_format " %title"
|
||||||
|
for_window [app_id="mpv"] title_format " %title"
|
||||||
|
for_window [app_id="irc"] title_format " %title"
|
||||||
|
for_window [app_id="libreoffice*"] title_format " %title"
|
||||||
|
for_window [app_id="gedit|geany|kate|mousepad|xed"] title_format " %title"
|
||||||
|
for_window [app_id="filezilla"] title_format " %title"
|
||||||
|
for_window [app_id="transmission-gtk"] title_format " %title"
|
||||||
|
for_window [app_id="player"] title_format " %title"
|
||||||
|
for_window [app_id="btop"] title_format " %title"
|
||||||
|
for_window [title="filer"] title_format " %title"
|
||||||
|
for_window [class="Unison"] title_format " %title"
|
||||||
|
for_window [class="Pcmanfm"] title_format " %title"
|
||||||
|
for_window [class="Sxiv|Nsxiv|Gimp"] title_format " %title"
|
||||||
|
|
||||||
|
# assign clients to specific workspace
|
||||||
|
# ws1 mail
|
||||||
|
assign [app_id="thunderbird*"] $ws1
|
||||||
|
# ws2 web
|
||||||
|
assign [app_id="firefox-esr"] $ws2
|
||||||
|
assign [class="Firefox-esr|Dillo"] $ws2
|
||||||
|
# ws3 irc
|
||||||
|
assign [app_id="irc|xmpp"] $ws3
|
||||||
|
# ws4 edit
|
||||||
|
assign [app_id="geany|libreoffice*"] $ws4
|
||||||
|
# ws5 media
|
||||||
|
assign [app_id="fr.handbrake.ghb"] $ws5
|
||||||
|
assign [class="avidemux3_*|Pitivi|openshot|Flowblade"] $ws5
|
||||||
|
# ws6 gfx
|
||||||
|
assign [app_id="gimp|org.gnome.gThumb|org.inkscape.Inkscape"] $ws6
|
||||||
|
# ws7 vbox
|
||||||
|
assign [class="VirtualBox Manager|VirtualBox Machine|Qemu-system-x86_64"] $ws7
|
||||||
|
assign [app_id="qemu"] $ws7
|
||||||
|
# ws8 bkp
|
||||||
|
assign [app_id="filezilla"] $ws8
|
||||||
|
assign [app_id="unison*"] $ws8
|
||||||
|
# ws9 p2p
|
||||||
|
assign [app_id="transmission*"] $ws9
|
||||||
|
# ws10 top
|
||||||
|
assign [app_id="btop"] $ws10
|
||||||
|
assign [class="Psensor"] $ws10
|
||||||
|
# ws11 deb
|
||||||
|
# ws12 zik
|
||||||
|
assign [app_id="player"] $ws12
|
||||||
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
# sway # launchers
|
||||||
|
|
||||||
|
# menus: exec & apps
|
||||||
|
bindsym $mod+d exec $menud
|
||||||
|
bindsym $mod+p exec $menup
|
||||||
|
|
||||||
|
# terminal
|
||||||
|
bindsym $mod+Return exec $term
|
||||||
|
|
||||||
|
# help center
|
||||||
|
bindsym $mad+F1 exec "nakedhelp"
|
||||||
|
|
||||||
|
# infos system
|
||||||
|
bindsym $mad+m exec "$term --title=btop --app-id=btop btop"
|
||||||
|
bindsym $mad+i exec "$infosbox"
|
||||||
|
bindsym $mad+Shift+i exec "$infosystem"
|
||||||
|
|
||||||
|
# lockscreen
|
||||||
|
bindsym $mad+l exec "$locker"
|
||||||
|
|
||||||
|
# wall: set or random
|
||||||
|
bindsym $mod+Ctrl+w exec --no-startup-id "nakedwalls"
|
||||||
|
bindsym $mad+Ctrl+w exec --no-startup-id "$HOME/.config/sway/scripts/wallrdm"
|
||||||
|
|
||||||
|
# screenshot
|
||||||
|
bindsym Print exec "grim $HOME/screenshot-$(date +%Y%m%d-%H%M%S).png"
|
||||||
|
|
||||||
|
# apps launchers keybinds
|
||||||
|
bindsym $mad+r exec "$term --title=filer --app-id=filer lf"
|
||||||
|
bindsym $mad+Shift+r exec "pcmanfm --no-desktop"
|
||||||
|
bindsym $mad+e exec "$term --title=vim --app-id=vim vim"
|
||||||
|
bindsym $mad+Shift+e exec "geany"
|
||||||
|
bindsym $mad+x exec "foot --title=irc --app-id=irc weechat-curses"
|
||||||
|
bindsym $mad+Shift+x exec "$mailer"
|
||||||
|
bindsym $mad+w exec "$browser"
|
||||||
|
bindsym $mad+Shift+w exec "$browser"
|
||||||
|
|
||||||
|
# audio bindings
|
||||||
|
bindsym $mad+v exec "$mixer"
|
||||||
|
bindsym XF86AudioRaiseVolume exec --no-startup-id "amixer -q sset Master 1%+ unmute"
|
||||||
|
bindsym XF86AudioLowerVolume exec --no-startup-id "amixer -q sset Master 1%- unmute"
|
||||||
|
bindsym XF86AudioMute exec --no-startup-id "amixer set Master toggle"
|
||||||
|
bindsym XF86AudioMicMute exec --no-startup-id "amixer set Capture toggle"
|
||||||
|
|
||||||
|
# brightness bindings
|
||||||
|
bindsym XF86MonBrightnessUp exec --no-startup-id "brightnessctl s 5%+"
|
||||||
|
bindsym XF86MonBrightnessDown exec --no-startup-id "brightnessctl s 5%-"
|
||||||
|
|
||||||
|
# mocp bindings
|
||||||
|
bindsym $mad+z exec "$player"
|
||||||
|
bindsym XF86AudioPrev exec --no-startup-id "mocp --previous"
|
||||||
|
bindsym XF86AudioPlay exec --no-startup-id "mocp --toggle-pause"
|
||||||
|
bindsym XF86AudioNext exec --no-startup-id "mocp --next"
|
||||||
|
|
||||||
|
# start search
|
||||||
|
bindsym $mad+f exec "nakedlocate"
|
||||||
|
|
||||||
|
# cleaner
|
||||||
|
bindsym $mad+Backspace exec "dotcleaner"
|
||||||
|
|
||||||
|
# screentemp toggle
|
||||||
|
bindsym $mad+Shift+s exec "$HOME/.config/sway/scripts/screentemp toggle; pkill -RTMIN+5 waybar"
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
# sway # controls
|
||||||
|
|
||||||
|
# Basics:
|
||||||
|
# Kill focused window
|
||||||
|
bindsym $mod+Shift+q kill
|
||||||
|
# Drag floating windows by holding down $mod and left mouse button.
|
||||||
|
# Resize them with right mouse button + $mod.
|
||||||
|
floating_modifier $mod normal
|
||||||
|
# Edit configuration files
|
||||||
|
bindsym $mod+Shift+c exec "$term lf -command cd $HOME/.config/sway/"
|
||||||
|
# Reload the configuration file
|
||||||
|
bindsym $mod+Shift+r reload
|
||||||
|
|
||||||
|
# Moving around:
|
||||||
|
# Move your focus around vim like
|
||||||
|
bindsym $mod+$left focus left
|
||||||
|
bindsym $mod+$down focus down
|
||||||
|
bindsym $mod+$up focus up
|
||||||
|
bindsym $mod+$right focus right
|
||||||
|
# Or use $mod+[up|down|left|right]
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# Move the focused window with the same, but add Shift
|
||||||
|
bindsym $mod+Shift+$left move left
|
||||||
|
bindsym $mod+Shift+$down move down
|
||||||
|
bindsym $mod+Shift+$up move up
|
||||||
|
bindsym $mod+Shift+$right move right
|
||||||
|
# Ditto, with arrow keys
|
||||||
|
bindsym $mod+Shift+Left move left
|
||||||
|
bindsym $mod+Shift+Down move down
|
||||||
|
bindsym $mod+Shift+Up move up
|
||||||
|
bindsym $mod+Shift+Right move right
|
||||||
|
# window switcher Alt+Tab
|
||||||
|
bindsym $mod+Tab exec "$HOME/.config/sway/scripts/window-switcher"
|
||||||
|
|
||||||
|
# Workspaces: for french keyboard, see ~/.config/sway/fr
|
||||||
|
# switch to workspace
|
||||||
|
bindsym $mad+ampersand workspace $ws1
|
||||||
|
bindsym $mad+eacute workspace $ws2
|
||||||
|
bindsym $mad+quotedbl workspace $ws3
|
||||||
|
bindsym $mad+apostrophe workspace $ws4
|
||||||
|
bindsym $mad+parenleft workspace $ws5
|
||||||
|
bindsym $mad+minus workspace $ws6
|
||||||
|
bindsym $mad+egrave workspace $ws7
|
||||||
|
bindsym $mad+underscore workspace $ws8
|
||||||
|
bindsym $mad+ccedilla workspace $ws9
|
||||||
|
bindsym $mad+agrave workspace $ws10
|
||||||
|
bindsym $mad+parenright workspace $ws11
|
||||||
|
bindsym $mad+equal workspace $ws12
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
bindsym $mad+Shift+ampersand move container to workspace $ws1
|
||||||
|
bindsym $mad+Shift+eacute move container to workspace $ws2
|
||||||
|
bindsym $mad+Shift+quotedbl move container to workspace $ws3
|
||||||
|
bindsym $mad+Shift+apostrophe move container to workspace $ws4
|
||||||
|
bindsym $mad+Shift+parenleft move container to workspace $ws5
|
||||||
|
bindsym $mad+Shift+minus move container to workspace $ws6
|
||||||
|
bindsym $mad+Shift+egrave move container to workspace $ws7
|
||||||
|
bindsym $mad+Shift+underscore move container to workspace $ws8
|
||||||
|
bindsym $mad+Shift+ccedilla move container to workspace $ws9
|
||||||
|
bindsym $mad+Shift+agrave move container to workspace $ws10
|
||||||
|
bindsym $mad+Shift+parenright move container to workspace $ws11
|
||||||
|
bindsym $mad+Shift+equal move container to workspace $ws12
|
||||||
|
# Note: workspaces can have any name you want, not just numbers.
|
||||||
|
# We just use 1-10 as the default.
|
||||||
|
# change workspaces
|
||||||
|
bindsym $mod+Ctrl+Right workspace next
|
||||||
|
bindsym Mod4+Right workspace next
|
||||||
|
bindsym $mod+Ctrl+Left workspace prev
|
||||||
|
bindsym Mod4+Left workspace prev
|
||||||
|
#
|
||||||
|
# Layout stuff:
|
||||||
|
# You can "split" the current object of your focus
|
||||||
|
bindsym $mod+b splith
|
||||||
|
bindsym $mod+v splitv
|
||||||
|
# Switch the current container between different layout styles
|
||||||
|
bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+t layout tabbed
|
||||||
|
bindsym $mod+e layout toggle split
|
||||||
|
# Make the current focus fullscreen
|
||||||
|
bindsym $mod+f fullscreen
|
||||||
|
# Toggle the current focus between tiling and floating mode
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
# Swap focus between the tiling area and the floating area
|
||||||
|
bindsym $mod+space focus mode_toggle
|
||||||
|
# Move focus to the parent container
|
||||||
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
|
# Exit sway (logs you out of your Wayland session)
|
||||||
|
#bindsym $mod+Shift+e exec swaynag --background 4c566a --border d8dee9 --border-bottom d8dee9 --button-background 81a1c1 --text d8dee9 --button-text 2e3440 --border-bottom-size 1 --button-border-size 1 -m 'You pressed the exit shortcut...' -B ' shutdown!' 'systemctl poweroff' -B ' lockscreen' 'swaylock' -B ' exit sway' 'swaymsg exit'
|
||||||
|
bindsym $mod+Shift+e exec "nakedquit"
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
# sway # modes
|
||||||
|
|
||||||
|
# Resizing containers:
|
||||||
|
set $mode_resize "<b>Resize</b>(<b>←↑↓→</b>) <b>Gaps</b>(<b>+/-</b>)"
|
||||||
|
mode --pango_markup $mode_resize {
|
||||||
|
# resize windows vimlike
|
||||||
|
bindsym $left resize shrink width 10px
|
||||||
|
bindsym $down resize grow height 10px
|
||||||
|
bindsym $up resize shrink height 10px
|
||||||
|
bindsym $right resize grow width 10px
|
||||||
|
# with arrow keys
|
||||||
|
bindsym Left resize shrink width 10px
|
||||||
|
bindsym Down resize grow height 10px
|
||||||
|
bindsym Up resize shrink height 10px
|
||||||
|
bindsym Right resize grow width 10px
|
||||||
|
# resize window Gaps with +/-
|
||||||
|
bindsym minus gaps inner current minus 5px
|
||||||
|
bindsym plus gaps inner current plus 5px
|
||||||
|
# Return to default mode
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
# launch resize mode (Alt+r)
|
||||||
|
bindsym $mod+r mode $mode_resize
|
||||||
|
|
||||||
|
# Audio menu
|
||||||
|
set $mode_audio "<b>Audio</b>(<b>↑/↓/m</b>) <b>Micro</b>(<b>+/-/n</b>)"
|
||||||
|
mode --pango_markup $mode_audio {
|
||||||
|
# volume control
|
||||||
|
bindsym Up exec --no-startup-id "amixer -q sset Master 1%+ unmute"
|
||||||
|
bindsym Down exec --no-startup-id "amixer -q sset Master 1%- unmute"
|
||||||
|
bindsym m exec --no-startup-id "amixer set Master toggle"
|
||||||
|
# micro control
|
||||||
|
bindsym minus exec --no-startup-id "amixer -q sset Capture 1%- cap"
|
||||||
|
bindsym plus exec --no-startup-id "amixer -q sset Capture 1%+ cap"
|
||||||
|
bindsym n exec --no-startup-id "amixer set Capture toggle"
|
||||||
|
# Return to default mode
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
# launch audio mode (Super+s)
|
||||||
|
bindsym $mad+s mode $mode_audio
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# french keyboard ~ workspace section
|
||||||
|
# usage : replace keybind in ~/.config/sway/config.d/09-controls.conf
|
||||||
|
#
|
||||||
|
# switch to workspace
|
||||||
|
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+section workspace $ws6
|
||||||
|
bindsym $mod+egrave workspace $ws7
|
||||||
|
bindsym $mod+exclam workspace $ws8
|
||||||
|
bindsym $mod+ccedilla workspace $ws9
|
||||||
|
bindsym $mod+agrave workspace $ws10
|
||||||
|
bindsym $mod+parenright workspace $ws11
|
||||||
|
bindsym $mod+minus workspace $ws12
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
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+section move container to workspace $ws6
|
||||||
|
bindsym $mod+Shift+egrave move container to workspace $ws7
|
||||||
|
bindsym $mod+Shift+exclam move container to workspace $ws8
|
||||||
|
bindsym $mod+Shift+ccedilla move container to workspace $ws9
|
||||||
|
bindsym $mod+Shift+agrave move container to workspace $ws10
|
||||||
|
bindsym $mod+Shift+parenright move container to workspace $ws11
|
||||||
|
bindsym $mod+Shift+minus move container to workspace $ws12
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# french keyboard ~ workspace section
|
||||||
|
# usage : replace keybind in ~/.config/sway/config.d/09-controls.conf
|
||||||
|
#
|
||||||
|
# switch to workspace
|
||||||
|
bindsym $mod+quotedbl workspace $ws1
|
||||||
|
bindsym $mod+guillemotleft workspace $ws2
|
||||||
|
bindsym $mod+guillemotright workspace $ws3
|
||||||
|
bindsym $mod+parenleft workspace $ws4
|
||||||
|
bindsym $mod+parenright workspace $ws5
|
||||||
|
bindsym $mod+at workspace $ws6
|
||||||
|
bindsym $mod+plus workspace $ws7
|
||||||
|
bindsym $mod+minus workspace $ws8
|
||||||
|
bindsym $mod+slash workspace $ws9
|
||||||
|
bindsym $mod+asterisk workspace $ws10
|
||||||
|
bindsym $mod+equal workspace $ws11
|
||||||
|
bindsym $mod+percent workspace $ws12
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
bindsym $mod+Shift+quotedbl move container to workspace $ws1
|
||||||
|
bindsym $mod+Shift+guillemotleft move container to workspace $ws2
|
||||||
|
bindsym $mod+Shift+guillemotright move container to workspace $ws3
|
||||||
|
bindsym $mod+Shift+parenleft move container to workspace $ws4
|
||||||
|
bindsym $mod+Shift+parenright move container to workspace $ws5
|
||||||
|
bindsym $mod+Shift+at move container to workspace $ws6
|
||||||
|
bindsym $mod+Shift+plus move container to workspace $ws7
|
||||||
|
bindsym $mod+Shift+minus move container to workspace $ws8
|
||||||
|
bindsym $mod+Shift+slash move container to workspace $ws9
|
||||||
|
bindsym $mod+Shift+asterisk move container to workspace $ws10
|
||||||
|
bindsym $mod+Shift+equal move container to workspace $ws11
|
||||||
|
bindsym $mod+Shift+percent move container to workspace $ws12
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# french keyboard ~ workspace section
|
||||||
|
# usage : replace keybind in ~/.config/sway/config.d/09-controls.conf
|
||||||
|
#
|
||||||
|
# switch to workspace
|
||||||
|
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
|
||||||
|
bindsym $mod+parenright workspace $ws11
|
||||||
|
bindsym $mod+equal workspace $ws12
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
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
|
||||||
|
bindsym $mod+Shift+parenright move container to workspace $ws11
|
||||||
|
bindsym $mod+Shift+equal move container to workspace $ws12
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# get gtk settings from gtk-3.0 for swaywm
|
||||||
|
# usage:
|
||||||
|
# exec_always $HOME/.config/sway/scripts/import-gsettings
|
||||||
|
|
||||||
|
gnome_schema="org.gnome.desktop.interface"
|
||||||
|
|
||||||
|
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
|
||||||
|
if [ ! -f "$config" ]; then
|
||||||
|
# fallback theme
|
||||||
|
gtk_theme="Nordic"
|
||||||
|
icon_theme="Zafiro-Nord-Dark"
|
||||||
|
cursor_theme="Nordzy-dark-cursor"
|
||||||
|
font_name="Hack 9"
|
||||||
|
else
|
||||||
|
gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')"
|
||||||
|
icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')"
|
||||||
|
cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')"
|
||||||
|
font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
|
||||||
|
gsettings set "$gnome_schema" icon-theme "$icon_theme"
|
||||||
|
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
|
||||||
|
gsettings set "$gnome_schema" font-name "$font_name"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# This script requires i3ipc-python package (install it from a system package manager
|
||||||
|
# or pip).
|
||||||
|
# It makes inactive windows transparent. Use `transparency_val` variable to control
|
||||||
|
# transparency strength in range of 0…1 or use the command line argument -o.
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
|
import i3ipc
|
||||||
|
|
||||||
|
|
||||||
|
def on_window(args, ipc, event):
|
||||||
|
global focused_set
|
||||||
|
|
||||||
|
# To get the workspace for a container, we need to have received its
|
||||||
|
# parents, so fetch the whole tree
|
||||||
|
tree = ipc.get_tree()
|
||||||
|
|
||||||
|
focused = tree.find_focused()
|
||||||
|
if focused is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
focused_workspace = focused.workspace()
|
||||||
|
|
||||||
|
focused.command("opacity " + args.focused)
|
||||||
|
focused_set.add(focused.id)
|
||||||
|
|
||||||
|
to_remove = set()
|
||||||
|
for window_id in focused_set:
|
||||||
|
if window_id == focused.id:
|
||||||
|
continue
|
||||||
|
window = tree.find_by_id(window_id)
|
||||||
|
if window is None:
|
||||||
|
to_remove.add(window_id)
|
||||||
|
elif args.global_focus or window.workspace() == focused_workspace:
|
||||||
|
window.command("opacity " + args.opacity)
|
||||||
|
to_remove.add(window_id)
|
||||||
|
|
||||||
|
focused_set -= to_remove
|
||||||
|
|
||||||
|
def remove_opacity(ipc, focused_opacity):
|
||||||
|
for workspace in ipc.get_tree().workspaces():
|
||||||
|
for w in workspace:
|
||||||
|
w.command("opacity " + focused_opacity)
|
||||||
|
ipc.main_quit()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="This script allows you to set the transparency of unfocused windows in sway."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--opacity",
|
||||||
|
"-o",
|
||||||
|
type=str,
|
||||||
|
default="0.80",
|
||||||
|
help="set inactive opacity value in range 0...1",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--focused",
|
||||||
|
"-f",
|
||||||
|
type=str,
|
||||||
|
default="1.0",
|
||||||
|
help="set focused opacity value in range 0...1",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--global-focus",
|
||||||
|
"-g",
|
||||||
|
action="store_true",
|
||||||
|
help="only have one opaque window across all workspaces",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
ipc = i3ipc.Connection()
|
||||||
|
focused_set = set()
|
||||||
|
|
||||||
|
for window in ipc.get_tree():
|
||||||
|
if window.focused:
|
||||||
|
focused_set.add(window.id)
|
||||||
|
window.command("opacity " + args.focused)
|
||||||
|
else:
|
||||||
|
window.command("opacity " + args.opacity)
|
||||||
|
for sig in [signal.SIGINT, signal.SIGTERM]:
|
||||||
|
signal.signal(sig, lambda signal, frame: remove_opacity(ipc, args.focused))
|
||||||
|
ipc.on("window", partial(on_window, args))
|
||||||
|
ipc.main()
|
||||||
|
|
@ -0,0 +1,158 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# minimal infos for swaybar
|
||||||
|
|
||||||
|
# active window
|
||||||
|
wfoc=`swaymsg -t get_tree | jq ".. | select(.type?) | select(.focused==true).name"`
|
||||||
|
wfocnb=`echo ${#wfoc}`
|
||||||
|
if [ "$wfocnb" -gt 60 ]; then
|
||||||
|
wfocus=`echo "${wfoc:0:59}...\""`
|
||||||
|
else
|
||||||
|
wfocus="$wfoc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# apt updates
|
||||||
|
updates="$(($(apt list --upgradable 2>/dev/null | wc -l) - 1))"
|
||||||
|
if [[ ${updates} -gt 0 ]]; then
|
||||||
|
wapt=" [ ${updates}] "
|
||||||
|
else
|
||||||
|
wapt=" "
|
||||||
|
fi
|
||||||
|
|
||||||
|
# cpu - source: i3block
|
||||||
|
PREV_TOTAL=0
|
||||||
|
PREV_IDLE=0
|
||||||
|
cpuFile="/tmp/.cpu"
|
||||||
|
if [[ -f "${cpuFile}" ]]; then
|
||||||
|
fileCont=$(cat "${cpuFile}")
|
||||||
|
PREV_TOTAL=$(echo "${fileCont}" | head -n 1)
|
||||||
|
PREV_IDLE=$(echo "${fileCont}" | tail -n 1)
|
||||||
|
fi
|
||||||
|
CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
|
||||||
|
unset CPU[0] # Discard the "cpu" prefix.
|
||||||
|
IDLE=${CPU[4]} # Get the idle CPU time.
|
||||||
|
# Calculate the total CPU time.
|
||||||
|
TOTAL=0
|
||||||
|
for VALUE in "${CPU[@]:0:4}"; do
|
||||||
|
let "TOTAL=$TOTAL+$VALUE"
|
||||||
|
done
|
||||||
|
if [[ "${PREV_TOTAL}" != "" ]] && [[ "${PREV_IDLE}" != "" ]]; then
|
||||||
|
# Calculate the CPU usage since we last checked.
|
||||||
|
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
|
||||||
|
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
|
||||||
|
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
|
||||||
|
wcpu="$(echo "${DIFF_USAGE}%")"
|
||||||
|
else
|
||||||
|
wcpu="?"
|
||||||
|
fi
|
||||||
|
# Remember the total and idle CPU times for the next check.
|
||||||
|
echo "${TOTAL}" > "${cpuFile}"
|
||||||
|
echo "${IDLE}" >> "${cpuFile}"
|
||||||
|
|
||||||
|
# ram
|
||||||
|
mem_total=`free -m | grep "Mem" | awk '{print $2}'`
|
||||||
|
mem_used=`free -m | grep "Mem" | awk '{print $3}'`
|
||||||
|
mem_perc="$(($mem_used*100/$mem_total))"
|
||||||
|
# disk
|
||||||
|
hd_used=`df | grep "sda1" | awk '{print $3}'`
|
||||||
|
hd_total=`df | grep "sda1" | awk '{print $2}'`
|
||||||
|
hd_perc="$(($hd_used*100/$hd_total))"
|
||||||
|
|
||||||
|
# network
|
||||||
|
if [ "$(cat /sys/class/net/enp0s25/operstate)" = "up" ] || [ "$(cat /sys/class/net/wls1/operstate)" = "up" ]; then
|
||||||
|
myip="$(wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g')"
|
||||||
|
else
|
||||||
|
myip=""
|
||||||
|
fi
|
||||||
|
if [ "$(cat /sys/class/net/enp0s25/operstate)" = "up" ]; then
|
||||||
|
wnet=" $myip"
|
||||||
|
elif
|
||||||
|
[ "$(cat /sys/class/net/wls1/operstate)" = "up" ]; then
|
||||||
|
wnet=" $myip"
|
||||||
|
else
|
||||||
|
wnet=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# temp
|
||||||
|
wtemp=$(sensors | grep CPU | awk '{print $2}' | cut -d'+' -f2)
|
||||||
|
|
||||||
|
# battery
|
||||||
|
urgent=15
|
||||||
|
batt_info=$(acpi -b | grep "Battery ${BATTERY}")
|
||||||
|
batt_state=$(echo "$batt_info" | grep -wo "Full\|Charging\|Discharging")
|
||||||
|
batt_time=$(echo "$batt_info" | awk '{print $5}' | cut -c1-5)
|
||||||
|
batt_perc=$(echo "$batt_info" | grep -o '[0-9]\+%' | tr -d '%')
|
||||||
|
case $batt_state in
|
||||||
|
FULL) wbatt="" ;;
|
||||||
|
Charging) wbatt=" $batt_perc%" ;;
|
||||||
|
Discharging)
|
||||||
|
if [ "$batt_perc" -gt 80 ]; then
|
||||||
|
wbatt=" $batt_perc%"
|
||||||
|
elif [ "$batt_perc" -gt 50 ]; then
|
||||||
|
wbatt=" $batt_perc%"
|
||||||
|
elif [ "$batt_perc" -gt "$urgent" ]; then
|
||||||
|
wbatt=" $batt_perc%"
|
||||||
|
else
|
||||||
|
wbatt=" $batt_time"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*) wbatt=" $batt_perc%" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# brightness
|
||||||
|
level=`cat "/sys/class/backlight/acpi_video0/brightness"`
|
||||||
|
max=`cat "/sys/class/backlight/acpi_video0/max_brightness"`
|
||||||
|
wbright="$(( $level * 100 / $max ))"
|
||||||
|
if [ "$wbright" -gt 70 ]; then
|
||||||
|
wbrighti=""
|
||||||
|
elif [ "$wbright" -gt 50 ]; then
|
||||||
|
wbrighti=""
|
||||||
|
elif [ "$wbright" -gt 30 ]; then
|
||||||
|
wbrighti=""
|
||||||
|
else
|
||||||
|
wbrighti=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# audio
|
||||||
|
mastervol=$(amixer get Master | tail -n 1)
|
||||||
|
status=$(echo "${mastervol}" | grep -wo "on")
|
||||||
|
volume=$(echo "${mastervol}" | awk -F ' ' '{print $5}' | tr -d '[]%')
|
||||||
|
if [ "$status" == "on" ]; then
|
||||||
|
if [ $volume -gt 60 ]; then
|
||||||
|
wvol=" $volume%"
|
||||||
|
elif [ $volume -gt 30 ]; then
|
||||||
|
wvol=" $volume%"
|
||||||
|
else
|
||||||
|
wvol=" $volume%"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
wvol=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# capture
|
||||||
|
captvol=$(amixer get Capture | tail -n 1)
|
||||||
|
captstat=$(echo "${captvol}" | grep -wo "on")
|
||||||
|
captlev=$(echo "${captvol}" | awk -F ' ' '{print $5}' | tr -d '[]%')
|
||||||
|
if [ "$captstat" == "on" ]; then
|
||||||
|
wcap=" $captlev%"
|
||||||
|
else
|
||||||
|
wcap=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# trash
|
||||||
|
if [ ! -e $HOME/.local/share/Trash/files ]; then
|
||||||
|
wtrash=""
|
||||||
|
else
|
||||||
|
trashcount="$(ls -U -1 "$HOME/.local/share/Trash/files" | wc -l)"
|
||||||
|
#wtrash="[ $trashcount] "
|
||||||
|
if [[ ${trashcount} > 0 ]]; then
|
||||||
|
wtrash=" [ $trashcount] "
|
||||||
|
else
|
||||||
|
wtrash=" "
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# date-time
|
||||||
|
sw_date=`date +'%Y-%m-%d'`
|
||||||
|
sw_time=`date +'%I:%M%p'`
|
||||||
|
|
||||||
|
echo "[$wfocus]$wapt[ $wcpu] [ $mem_perc%] [ $hd_perc%] [$wnet] [ $wtemp] [$wbatt] [$wbrighti $wbright%] [$wvol] [$wcap]$wtrash[ $sw_date $sw_time]"
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# gps - get yours https://arpinux.org/public/arpinux-docs-pdf/gps.pdf
|
||||||
|
lat="43.21"
|
||||||
|
long="2.14"
|
||||||
|
# screen temp 6500~2800
|
||||||
|
cmax="6300"
|
||||||
|
cmin="3200"
|
||||||
|
|
||||||
|
# check and/or toggle screentemp
|
||||||
|
userlocale=$(echo $LANG | cut -b-2)
|
||||||
|
case $userlocale in
|
||||||
|
fr) messageon="coloration d'écran activée"
|
||||||
|
messageoff="coloration d'écran désactivée"
|
||||||
|
;;
|
||||||
|
*) messageon="screen temp enabled"
|
||||||
|
messageoff="screen temp disabled"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
toggle)
|
||||||
|
if ! pgrep -x wlsunset > /dev/null 2>&1; then
|
||||||
|
wlsunset -l $lat -L $long -g 0.8 -T $cmax -t $cmin &
|
||||||
|
notify-send "$messageon"
|
||||||
|
else
|
||||||
|
pkill wlsunset
|
||||||
|
notify-send "$messageoff"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
check)
|
||||||
|
if ! pgrep -x wlsunset > /dev/null 2>&1; then
|
||||||
|
echo '{"text": "", "class": "off", "tooltip": "'$messageoff'"}'
|
||||||
|
else
|
||||||
|
echo '{"text": "", "class": "on", "tooltip": "'$messageon'"}'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if ! pgrep -x wlsunset > /dev/null 2>&1; then
|
||||||
|
notify-send "$messageoff"
|
||||||
|
else
|
||||||
|
notify-send "$messageon"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# sources: https://framagit.org/3hg/isotop/-/blob/master/src/files/usr/local/share/isotop/bin/rdmwall
|
||||||
|
# by prx <prx@ybad.name>
|
||||||
|
#-----------------------
|
||||||
|
#Set as wallpaper a random picture located in any DIRS path
|
||||||
|
|
||||||
|
if [ -d "$1" ]; then
|
||||||
|
DIRS="$1"
|
||||||
|
else
|
||||||
|
DIRS="/usr/share/backgrounds
|
||||||
|
$HOME/pics/walls"
|
||||||
|
fi
|
||||||
|
|
||||||
|
getrdmwall() {
|
||||||
|
for D in $DIRS; do
|
||||||
|
find $D -maxdepth 1 \
|
||||||
|
-type f \
|
||||||
|
-iname "*.jpg" -o \
|
||||||
|
-iname "*.png"
|
||||||
|
done | sort -R | head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
|
img=""
|
||||||
|
while [ ! -f "${img}" ]; do
|
||||||
|
img="$(getrdmwall)"
|
||||||
|
done
|
||||||
|
|
||||||
|
swaymsg output "*" bg "$img" fill &
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# window switcher for sway by rofi
|
||||||
|
|
||||||
|
swaymsg -t get_tree |
|
||||||
|
jq -r '.nodes[].nodes[] | if .nodes then [recurse(.nodes[])] else [] end + .floating_nodes | .[] | select(.nodes==[]) | ((.id | tostring) + " " + .name)' |
|
||||||
|
rofi -dmenu -p "window switcher" | {
|
||||||
|
read -r id name
|
||||||
|
swaymsg "[con_id=$id]" focus
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 301 KiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
ignore-empty-password
|
||||||
|
daemonize
|
||||||
|
#indicator-idle-visible
|
||||||
|
image=~/.config/swaylock/cloudy_moon.jpg
|
||||||
|
scaling=fill
|
||||||
|
font=Hack
|
||||||
|
font-size=18
|
||||||
|
color=2e3440ff
|
||||||
|
indicator-radius=100
|
||||||
|
indicator-thickness=50
|
||||||
|
bs-hl-color=d08770ff
|
||||||
|
caps-lock-bs-hl-color=d08770ff
|
||||||
|
key-hl-color=a3be8cd9
|
||||||
|
caps-lock-key-hl-color=a3be8cd9
|
||||||
|
inside-color=d8dee9cc
|
||||||
|
inside-caps-lock-color=d8dee9cc
|
||||||
|
inside-ver-color=81a1c1cc
|
||||||
|
inside-clear-color=ebcb8bcc
|
||||||
|
inside-wrong-color=bf616aff
|
||||||
|
line-color=eceff480
|
||||||
|
line-caps-lock-color=eceff480
|
||||||
|
line-clear-color=eceff400
|
||||||
|
line-caps-lock-color=2e344080
|
||||||
|
line-ver-color=2e344000
|
||||||
|
line-wrong-color=bf616a00
|
||||||
|
ring-color=d8dee980
|
||||||
|
ring-ver-color=81a1c1cc
|
||||||
|
ring-clear-color=d8dee900
|
||||||
|
ring-wrong-color=bf616a00
|
||||||
|
separator-color=d8dee900
|
||||||
|
text-color=2e3440ff
|
||||||
|
text-clear-color=2e3440ff
|
||||||
|
text-caps-lock-color=2e3440ff
|
||||||
|
text-ver-color=2e3440ff
|
||||||
|
text-wrong-color=eceff4ff
|
||||||
|
|
@ -0,0 +1,296 @@
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Design
|
||||||
|
//
|
||||||
|
"ipc": true,
|
||||||
|
"layer": "top",
|
||||||
|
"position": "bottom",
|
||||||
|
//"height": 22,
|
||||||
|
//"width": 1280,
|
||||||
|
"margin": "0 0 0 0",
|
||||||
|
"spacing": 2,
|
||||||
|
"fixed-center": true,
|
||||||
|
//
|
||||||
|
// Modules order
|
||||||
|
//
|
||||||
|
"modules-left": [
|
||||||
|
"custom/popmenu",
|
||||||
|
"custom/ssh",
|
||||||
|
"custom/filezilla",
|
||||||
|
"custom/lftp",
|
||||||
|
"sway/mode",
|
||||||
|
"keyboard-state",
|
||||||
|
"keyboard-state#numlock",
|
||||||
|
"sway/scratchpad",
|
||||||
|
//"idle_inhibitor",
|
||||||
|
"sway/window"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"sway/workspaces",
|
||||||
|
"custom/update"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"cpu",
|
||||||
|
"temperature",
|
||||||
|
"memory",
|
||||||
|
"disk",
|
||||||
|
//"disk#disk2",
|
||||||
|
"network",
|
||||||
|
"pulseaudio",
|
||||||
|
"backlight",
|
||||||
|
"battery",
|
||||||
|
"custom/wlsunset",
|
||||||
|
"custom/infosbox",
|
||||||
|
"custom/infosystem",
|
||||||
|
"custom/trash",
|
||||||
|
"clock",
|
||||||
|
"tray",
|
||||||
|
"custom/exit"
|
||||||
|
],
|
||||||
|
//
|
||||||
|
// Modules configuration (alphabetic order)
|
||||||
|
//
|
||||||
|
"backlight": {
|
||||||
|
// "device": "acpi_video1",
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-alt": "{icon} {percent}%",
|
||||||
|
"format-icons": ["", "", "", ""]
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
"good": 80,
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
},
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-charging": "",
|
||||||
|
"format-plugged": "",
|
||||||
|
"format-alt": "{icon} {capacity}% {time}",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
"format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"timezone": "Europe/Paris",
|
||||||
|
"format": "<b>{:%I:%M}</b>",
|
||||||
|
"format-alt": "<b>{:%Y-%m-%d}</b>",
|
||||||
|
"tooltip-format": "<tt>{calendar}</tt>",
|
||||||
|
"calendar": {
|
||||||
|
"mode" : "month",
|
||||||
|
"mode-mon-col" : 3,
|
||||||
|
"weeks-pos" : "none",
|
||||||
|
"on-scroll" : 0,
|
||||||
|
"format": {
|
||||||
|
"months": "<span color='#eceff4'><b>{}</b></span>",
|
||||||
|
"days": "<span color='#d8dee9'>{}</span>",
|
||||||
|
"weekdays": "<span color='#ebcb8b'><b>{}</b></span>",
|
||||||
|
"today": "<span color='#bf616a'><b>{}</b></span>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"on-click-right": "mode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"states": {
|
||||||
|
"critical": 90,
|
||||||
|
"warning": 80
|
||||||
|
},
|
||||||
|
"interval": 1,
|
||||||
|
"format": " {usage}%",
|
||||||
|
//"format-alt": " {icon0}{icon1} {usage:>2}%",
|
||||||
|
//"format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
|
||||||
|
"on-click-right": "foot btop"
|
||||||
|
},
|
||||||
|
"custom/exit": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "nakedquit"
|
||||||
|
},
|
||||||
|
"custom/infosbox": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false,
|
||||||
|
//"on-click": "$HOME/bin/infosbox"
|
||||||
|
"on-click": "xterm -g 110x28 -e 'neowofetch;$SHELL'"
|
||||||
|
},
|
||||||
|
"custom/infosystem": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "pgrep -x btop && pkill btop || foot -W 140x40 --title Infos-System btop"
|
||||||
|
},
|
||||||
|
"custom/filezilla": {
|
||||||
|
"format": "{}",
|
||||||
|
"exec": "echo ''",
|
||||||
|
"exec-if": "pgrep -x filezilla",
|
||||||
|
"interval": 30
|
||||||
|
},
|
||||||
|
"custom/lftp": {
|
||||||
|
"format": "{}",
|
||||||
|
"exec": "echo ''",
|
||||||
|
"exec-if": "pgrep -x lftp",
|
||||||
|
"interval": 30
|
||||||
|
},
|
||||||
|
"custom/popmenu": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "popmenu"
|
||||||
|
},
|
||||||
|
"custom/ssh": {
|
||||||
|
"format": "{}",
|
||||||
|
"exec": "echo ''",
|
||||||
|
"exec-if": "pgrep -x ssh",
|
||||||
|
"interval": 5
|
||||||
|
},
|
||||||
|
"custom/trash": {
|
||||||
|
"format": "{}",
|
||||||
|
"exec": "[ $(trash-list|wc -l) -gt 0 ] && echo \" $(trash-list|wc -l)\" || echo \"\"",
|
||||||
|
"interval": 10,
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "dotcleaner"
|
||||||
|
},
|
||||||
|
"custom/update": {
|
||||||
|
"format": "{}",
|
||||||
|
"tooltip": false,
|
||||||
|
"exec": "nakedupdate -p",
|
||||||
|
"exec-on-event": true,
|
||||||
|
"on-click": "nakedupdate -m",
|
||||||
|
"interval": 600
|
||||||
|
},
|
||||||
|
"custom/wlsunset": {
|
||||||
|
"exec": "$HOME/.config/sway/scripts/screentemp check",
|
||||||
|
"return-type": "json",
|
||||||
|
"exec-on-event": "true",
|
||||||
|
"interval": "once",
|
||||||
|
"on-click": "$HOME/.config/sway/scripts/screentemp toggle; pkill -RTMIN+5 waybar",
|
||||||
|
"signal": 5
|
||||||
|
},
|
||||||
|
"disk": {
|
||||||
|
"format": " {percentage_used}%",
|
||||||
|
"format-alt": " {free} free",
|
||||||
|
"tooltip-format": " disk usage\nused: {used}\nfree: {free}\nfull: {total}",
|
||||||
|
"states": {
|
||||||
|
"warning": 65,
|
||||||
|
"critical": 90
|
||||||
|
},
|
||||||
|
"interval": 60
|
||||||
|
},
|
||||||
|
"disk#disk2": {
|
||||||
|
"path": "/media/arp/nakedback/",
|
||||||
|
"format": " {percentage_used}%",
|
||||||
|
"format-alt": " {free} free",
|
||||||
|
"tooltip-format": " nakedback usage\nused: {used}\nfree: {free}\nfull: {total}",
|
||||||
|
"states": {
|
||||||
|
"warning": 65,
|
||||||
|
"critical": 90
|
||||||
|
},
|
||||||
|
"interval": 60
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "",
|
||||||
|
"deactivated": ""
|
||||||
|
},
|
||||||
|
"tooltip-format-activated": "idle disabled",
|
||||||
|
"tooltip-format-deactivated": "idle enabled"
|
||||||
|
},
|
||||||
|
"keyboard-state": {
|
||||||
|
"numlock": false,
|
||||||
|
"capslock": true,
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"locked": "C",
|
||||||
|
"unlocked": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyboard-state#numlock": {
|
||||||
|
"numlock": true,
|
||||||
|
"capslock": false,
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"locked": "N",
|
||||||
|
"unlocked": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"format": " {}%",
|
||||||
|
"format-alt": " {used} used - {avail} free",
|
||||||
|
"tooltip-format": " mem usage\nused: {used}\nfree: {avail}\nswap: {swapPercentage}%",
|
||||||
|
"interval": 15,
|
||||||
|
"states": {
|
||||||
|
"warning": 65,
|
||||||
|
"critical": 80
|
||||||
|
},
|
||||||
|
"on-click-right": "foot btop"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||||
|
"format": "{ifname}",
|
||||||
|
"format-wifi": " {signalStrength}%",
|
||||||
|
"format-ethernet": " ",
|
||||||
|
"format-linked": " noip",
|
||||||
|
"format-disconnected": " nonet",
|
||||||
|
"tooltip-format": "{ifname} {essid}\n {bandwidthUpOctets}\n {bandwidthDownOctets}",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}",
|
||||||
|
"on-click-right": "connman-gtk"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"format": "{icon} {volume}% {format_source}",
|
||||||
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {format_source}",
|
||||||
|
"format-source": " {volume}%",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"tooltip": false,
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "foot --app-id=mixer -W 80x25 alsamixer",
|
||||||
|
"on-click-right": "pavucontrol"
|
||||||
|
},
|
||||||
|
"sway/mode": {
|
||||||
|
"format": "{}",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"sway/scratchpad": {
|
||||||
|
"format": "{icon} {count}",
|
||||||
|
"show-empty": false,
|
||||||
|
"format-icons": ["", ""],
|
||||||
|
"tooltip": true,
|
||||||
|
"tooltip-format": "{app}: {title}"
|
||||||
|
},
|
||||||
|
"sway/window": {
|
||||||
|
"format": " {}",
|
||||||
|
"max-length": 50,
|
||||||
|
"on-click-right": "swaymsg move to scratchpad $1"
|
||||||
|
},
|
||||||
|
"sway/workspaces": {
|
||||||
|
"disable-scroll": true,
|
||||||
|
"all-outputs": true,
|
||||||
|
"format": "{name}"
|
||||||
|
},
|
||||||
|
"temperature": {
|
||||||
|
// "thermal-zone": 2,
|
||||||
|
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||||
|
"critical-threshold": 85,
|
||||||
|
"format-critical": "{icon} {temperatureC}°C",
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-alt": "{temperatureC}°C",
|
||||||
|
"tooltip": true,
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 16,
|
||||||
|
"show-passive-items": true,
|
||||||
|
"spacing": 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// vim: ft=jsonc
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
* { font-family: forkawesome, Hack; font-size: 11px; }
|
||||||
|
window#waybar {
|
||||||
|
background-color: #2e3440;
|
||||||
|
color: #d8dee9;
|
||||||
|
transition-property: background-color;
|
||||||
|
transition-duration: .5s;
|
||||||
|
opacity: 0.85;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
window#waybar.hidden { opacity: 0.2; }
|
||||||
|
button:hover { background: inherit; }
|
||||||
|
#workspaces button { padding: 0 5px; background-color: transparent; color: #88c0d0; }
|
||||||
|
#workspaces button:hover { background-color: #4c566a; color: #d8dee9; }
|
||||||
|
#workspaces button.focused { background-color: #4c566a; color: #eceff4; }
|
||||||
|
#workspaces button.urgent { background-color: #bf616a; color: #d8dee9; }
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#temperature,
|
||||||
|
#backlight,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#custom-popmenu,
|
||||||
|
#custom-ssh,
|
||||||
|
#custom-filezilla,
|
||||||
|
#custom-lftp,
|
||||||
|
#custom-trash,
|
||||||
|
#custom-update,
|
||||||
|
#custom-infosbox,
|
||||||
|
#custom-infosystem,
|
||||||
|
#custom-wlsunset,
|
||||||
|
#tray,
|
||||||
|
#mode,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#scratchpad { padding: 0 5px; background-color: #2e3440; }
|
||||||
|
|
||||||
|
#window, #workspaces { margin: 0 2px; }
|
||||||
|
#mode { background-color: #d08770; color: #2e3440; }
|
||||||
|
#custom-popmenu { color: #eceff4; }
|
||||||
|
#custom-ssh, #custom-filezilla, #custom-lftp { background-color: #bf616a; }
|
||||||
|
/* If workspaces is the leftmost module, omit left margin */
|
||||||
|
.modules-left > widget:first-child > #workspaces { margin-left: 0; }
|
||||||
|
/* If workspaces is the rightmost module, omit right margin */
|
||||||
|
.modules-right > widget:last-child > #workspaces { margin-right: 0; }
|
||||||
|
#custom-update { background-color: #bf616a; padding-right: 2px; }
|
||||||
|
#battery.charging, #battery.plugged, #battery.full { color: #a3be8c; }
|
||||||
|
@keyframes blink {
|
||||||
|
to { background-color: #eceff4; color: #2e3440; }
|
||||||
|
}
|
||||||
|
#battery.good:not(.charging) { color: #a3be8c; }
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: #bf616a;
|
||||||
|
background-color: #4c566a;
|
||||||
|
}
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background-color: #bf616a;
|
||||||
|
color: #d8dee9;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
label:focus { background-color: #2e3440; }
|
||||||
|
#cpu { color: #88c0d0; padding-right: 0; }
|
||||||
|
#cpu.warning { color: #d08770; }
|
||||||
|
#cpu.critical { color: #bf616a; }
|
||||||
|
#memory { color: #a3be8c; }
|
||||||
|
#memory.warning { color: #d08770; }
|
||||||
|
#memory.critical { color: #bf616a; }
|
||||||
|
#disk { color: #ebcb8b; }
|
||||||
|
#disk.warning { color: #d08770; }
|
||||||
|
#disk.critical { color: #bf616a; }
|
||||||
|
#backlight { color: #d8dee9; }
|
||||||
|
#network { color: #81a1c1; }
|
||||||
|
#network.disconnected { color: #bf616a; }
|
||||||
|
#pulseaudio { color: #d8dee9; }
|
||||||
|
#pulseaudio.muted { color: #bf616a; }
|
||||||
|
#temperature { color: #88c0d0; }
|
||||||
|
#temperature.critical { color: #bf616a; }
|
||||||
|
#custom-wlsunset.on { color: #d08770; }
|
||||||
|
#custom-wlsunset.off { color: #d8dee9; }
|
||||||
|
#custom-infosbox { color: #88c0d0; }
|
||||||
|
#custom-infosystem { color: #b48ead; }
|
||||||
|
#tray { background-color: #4c566a; }
|
||||||
|
#tray > .passive { -gtk-icon-effect: dim; }
|
||||||
|
#tray > .needs-attention { -gtk-icon-effect: highlight; background-color: #eb4d4b; }
|
||||||
|
#idle_inhibitor.activated { background-color: #88c0d0; color: #2e3440; }
|
||||||
|
#keyboard-state { padding: 0; margin: 0; }
|
||||||
|
#keyboard-state > label.locked { background-color: #bf616a; padding: 0 5px; }
|
||||||
|
#scratchpad.empty { background-color: transparent; }
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
KEYRING="/usr/local/share/keyrings/nakedeb-keyring.gpg"
|
||||||
|
LIST="/etc/apt/sources.list.d/nakedeb.list"
|
||||||
|
REPO_URL="https://nakedeb.arpinux.org/repo/debian"
|
||||||
|
|
||||||
|
echo "==> Ajout du keyring nakeDeb"
|
||||||
|
|
||||||
|
sudo mkdir -p /usr/local/share/keyrings
|
||||||
|
|
||||||
|
if [ ! -f "$KEYRING" ]; then
|
||||||
|
curl -fsSL https://nakedeb.arpinux.org/repo/nakedeb.gpg.key \
|
||||||
|
| gpg --dearmor \
|
||||||
|
| sudo tee "$KEYRING" > /dev/null
|
||||||
|
echo "✔ Clé ajoutée"
|
||||||
|
else
|
||||||
|
echo "✔ Clé déjà présente"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Détection de la version Debian"
|
||||||
|
CODENAME=trixie
|
||||||
|
|
||||||
|
echo "==> Ajout du repo"
|
||||||
|
echo "deb [signed-by=$KEYRING] $REPO_URL $CODENAME main" | sudo tee "$LIST" > /dev/null
|
||||||
|
|
||||||
|
echo "==> Mise à jour APT"
|
||||||
|
sudo apt update
|
||||||
|
|
||||||
|
echo "==> Installation de nakedsway"
|
||||||
|
sudo apt install -y nakedsway
|
||||||
|
|
||||||
|
echo "==> Copie config (si absente)"
|
||||||
|
if [ ! -d "$HOME/.config/sway" ]; then
|
||||||
|
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/
|
||||||
|
echo "✔ Config copiée"
|
||||||
|
else
|
||||||
|
echo "✔ Config déjà existante (skip)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Installation terminée"
|
||||||
|
echo "Lance avec: sway"
|
||||||
|
|
@ -1,218 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# =============================================================================
|
|
||||||
# install-sway.sh — Installation de Sway (Wayland) sur Debian 13
|
|
||||||
# =============================================================================
|
|
||||||
# Usage :
|
|
||||||
# chmod +x install-sway.sh
|
|
||||||
# ./install-sway.sh
|
|
||||||
#
|
|
||||||
# Ce script installe :
|
|
||||||
# - sway : gestionnaire de fenêtres en tuiles (Wayland)
|
|
||||||
# - swaybar : barre de statut (inclus avec sway)
|
|
||||||
# - swaybg : fond d'écran Wayland
|
|
||||||
# - swaylock : verrouillage d'écran Wayland
|
|
||||||
# - swayidle : gestion de la mise en veille
|
|
||||||
# - waybar : barre de statut avancée (alternative à swaybar)
|
|
||||||
# - wofi : lanceur d'applications Wayland (remplace rofi/dmenu)
|
|
||||||
# - foot : terminal léger natif Wayland
|
|
||||||
# - mako : notifications Wayland
|
|
||||||
# - wl-clipboard : copier/coller en ligne de commande sous Wayland
|
|
||||||
# - grim + slurp : capture d'écran Wayland
|
|
||||||
# - brightnessctl : contrôle de la luminosité
|
|
||||||
# - playerctl : contrôle multimédia (play/pause/next)
|
|
||||||
# - kanshi : gestion dynamique des moniteurs (optionnel)
|
|
||||||
# - polkit-gnome : agent d'authentification graphique
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# --- Couleurs pour l'affichage ---
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
log() { echo -e "${GREEN}[✓]${NC} $*"; }
|
|
||||||
info() { echo -e "${BLUE}[i]${NC} $*"; }
|
|
||||||
warn() { echo -e "${YELLOW}[!]${NC} $*"; }
|
|
||||||
err() { echo -e "${RED}[✗]${NC} $*" >&2; exit 1; }
|
|
||||||
|
|
||||||
# --- Vérification des droits ---
|
|
||||||
if [[ "$EUID" -eq 0 ]]; then
|
|
||||||
err "Ne pas lancer ce script en root. Utilisez un utilisateur normal (sudo sera demandé si nécessaire)."
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "Démarrage de l'installation de Sway sur Debian 13..."
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# --- Mise à jour des paquets ---
|
|
||||||
info "Mise à jour de la liste des paquets..."
|
|
||||||
sudo apt-get update -qq
|
|
||||||
log "Liste des paquets mise à jour."
|
|
||||||
|
|
||||||
# --- Installation des paquets principaux ---
|
|
||||||
info "Installation de Sway et des outils Wayland..."
|
|
||||||
sudo apt-get install -y \
|
|
||||||
sway \
|
|
||||||
swaybg \
|
|
||||||
swaylock \
|
|
||||||
swayidle \
|
|
||||||
waybar \
|
|
||||||
wofi \
|
|
||||||
foot \
|
|
||||||
mako-notifier \
|
|
||||||
wl-clipboard \
|
|
||||||
grim \
|
|
||||||
slurp \
|
|
||||||
brightnessctl \
|
|
||||||
playerctl \
|
|
||||||
kanshi \
|
|
||||||
policykit-1-gnome \
|
|
||||||
xdg-user-dirs \
|
|
||||||
xdg-desktop-portal-wlr \
|
|
||||||
fonts-font-awesome \
|
|
||||||
fonts-noto \
|
|
||||||
pulseaudio \
|
|
||||||
pavucontrol \
|
|
||||||
nwg-displays \
|
|
||||||
xdg-desktop-portal-wlr \
|
|
||||||
network-manager-gnome
|
|
||||||
|
|
||||||
log "Paquets installés avec succès."
|
|
||||||
|
|
||||||
# --- Création des répertoires de configuration ---
|
|
||||||
info "Création des répertoires de configuration..."
|
|
||||||
mkdir -p "$HOME/.config/sway"
|
|
||||||
mkdir -p "$HOME/.config/waybar"
|
|
||||||
mkdir -p "$HOME/.config/foot"
|
|
||||||
mkdir -p "$HOME/.config/mako"
|
|
||||||
mkdir -p "$HOME/.config/wofi"
|
|
||||||
mkdir -p "$HOME/.config/kanshi"
|
|
||||||
log "Répertoires créés."
|
|
||||||
|
|
||||||
# --- Copie du fichier de configuration Sway ---
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
SWAY_CONFIG_SRC="$SCRIPT_DIR/sway-config"
|
|
||||||
SWAY_CONFIG_DEST="$HOME/.config/sway/config"
|
|
||||||
|
|
||||||
if [[ -f "$SWAY_CONFIG_SRC" ]]; then
|
|
||||||
if [[ -f "$SWAY_CONFIG_DEST" ]]; then
|
|
||||||
warn "Un fichier de configuration Sway existe déjà. Sauvegarde dans config.bak"
|
|
||||||
cp "$SWAY_CONFIG_DEST" "$SWAY_CONFIG_DEST.bak"
|
|
||||||
fi
|
|
||||||
cp "$SWAY_CONFIG_SRC" "$SWAY_CONFIG_DEST"
|
|
||||||
log "Configuration Sway copiée vers $SWAY_CONFIG_DEST"
|
|
||||||
else
|
|
||||||
warn "Fichier 'sway-config' introuvable à côté du script. Placez-le dans : $SCRIPT_DIR/"
|
|
||||||
warn "La configuration par défaut de Sway sera utilisée au premier lancement."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --- Configuration minimale de foot (terminal) ---
|
|
||||||
info "Génération d'une configuration de base pour foot..."
|
|
||||||
cat > "$HOME/.config/foot/foot.ini" << 'EOF'
|
|
||||||
# Configuration du terminal Foot
|
|
||||||
# Documentation : https://codeberg.org/dnkl/foot/src/branch/master/doc/foot.ini.5.scd
|
|
||||||
|
|
||||||
[main]
|
|
||||||
# Police et taille (modifiez selon vos préférences)
|
|
||||||
font=monospace:size=11
|
|
||||||
|
|
||||||
[colors]
|
|
||||||
# Thème sombre simple
|
|
||||||
background=1e1e2e
|
|
||||||
foreground=cdd6f4
|
|
||||||
EOF
|
|
||||||
log "Configuration foot créée."
|
|
||||||
|
|
||||||
# --- Configuration minimale de mako (notifications) ---
|
|
||||||
info "Génération d'une configuration de base pour mako..."
|
|
||||||
cat > "$HOME/.config/mako/config" << 'EOF'
|
|
||||||
# Configuration des notifications Mako
|
|
||||||
# Documentation : man mako
|
|
||||||
|
|
||||||
# Position des notifications
|
|
||||||
anchor=top-right
|
|
||||||
margin=10
|
|
||||||
|
|
||||||
# Apparence
|
|
||||||
background-color=#1e1e2edd
|
|
||||||
text-color=#cdd6f4
|
|
||||||
border-color=#89b4fadd
|
|
||||||
border-radius=8
|
|
||||||
border-size=2
|
|
||||||
|
|
||||||
# Durée d'affichage (en millisecondes)
|
|
||||||
default-timeout=5000
|
|
||||||
|
|
||||||
# Police
|
|
||||||
font=sans 10
|
|
||||||
EOF
|
|
||||||
log "Configuration mako créée."
|
|
||||||
|
|
||||||
# --- Configuration de wofi (lanceur d'apps) ---
|
|
||||||
info "Génération d'une configuration de base pour wofi..."
|
|
||||||
cat > "$HOME/.config/wofi/style.css" << 'EOF'
|
|
||||||
/* Style de Wofi - lanceur d'applications */
|
|
||||||
window {
|
|
||||||
background-color: #1e1e2e;
|
|
||||||
border: 2px solid #89b4fa;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
#input {
|
|
||||||
background-color: #313244;
|
|
||||||
color: #cdd6f4;
|
|
||||||
border: none;
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 8px;
|
|
||||||
margin: 6px;
|
|
||||||
}
|
|
||||||
#outer-box { padding: 6px; }
|
|
||||||
#entry { padding: 6px; border-radius: 6px; }
|
|
||||||
#entry:selected { background-color: #45475a; }
|
|
||||||
#text { color: #cdd6f4; }
|
|
||||||
EOF
|
|
||||||
log "Style wofi créé."
|
|
||||||
|
|
||||||
# --- Ajout de l'utilisateur aux groupes nécessaires ---
|
|
||||||
info "Ajout de l'utilisateur aux groupes video et input (pour luminosité et entrées)..."
|
|
||||||
sudo usermod -aG video,input "$USER" 2>/dev/null || warn "Impossible d'ajouter aux groupes (peut-être déjà membre)."
|
|
||||||
log "Groupes configurés."
|
|
||||||
|
|
||||||
# --- Création d'une entrée de session Wayland (si nécessaire) ---
|
|
||||||
SESSION_FILE="/usr/share/wayland-sessions/sway.desktop"
|
|
||||||
if [[ ! -f "$SESSION_FILE" ]]; then
|
|
||||||
info "Création de l'entrée de session Sway pour le gestionnaire de connexion..."
|
|
||||||
sudo bash -c "cat > $SESSION_FILE" << 'EOF'
|
|
||||||
[Desktop Entry]
|
|
||||||
Name=Sway
|
|
||||||
Comment=Sway - Compositeur Wayland en tuiles (i3-compatible)
|
|
||||||
Exec=sway
|
|
||||||
Type=Application
|
|
||||||
EOF
|
|
||||||
log "Entrée de session créée."
|
|
||||||
else
|
|
||||||
log "Entrée de session Sway déjà présente."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --- Récapitulatif ---
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}════════════════════════════════════════════════════════${NC}"
|
|
||||||
echo -e "${GREEN} Installation terminée !${NC}"
|
|
||||||
echo -e "${GREEN}════════════════════════════════════════════════════════${NC}"
|
|
||||||
echo ""
|
|
||||||
echo -e " Prochaine étape :"
|
|
||||||
echo -e " 1. Assurez-vous que le fichier ${YELLOW}sway-config${NC} est copié dans :"
|
|
||||||
echo -e " ${BLUE}~/.config/sway/config${NC}"
|
|
||||||
echo -e " 2. ${YELLOW}Déconnectez-vous${NC} de votre session actuelle."
|
|
||||||
echo -e " 3. Choisissez ${BLUE}Sway${NC} comme session dans votre gestionnaire de connexion."
|
|
||||||
echo -e " (ou lancez ${BLUE}sway${NC} depuis un TTY)"
|
|
||||||
echo ""
|
|
||||||
echo -e " Raccourcis essentiels (voir le fichier de config pour tout) :"
|
|
||||||
echo -e " ${BLUE}Super + Entrée${NC} → Terminal (foot)"
|
|
||||||
echo -e " ${BLUE}Super + Espace${NC} → Lanceur d'apps (wofi)"
|
|
||||||
echo -e " ${BLUE}Super + Q${NC} → Fermer la fenêtre active"
|
|
||||||
echo -e " ${BLUE}Super + [1-9]${NC} → Aller à l'espace de travail numéroté"
|
|
||||||
echo ""
|
|
||||||
warn "Reconnectez-vous pour que les changements de groupes (video/input) prennent effet."
|
|
||||||
echo ""
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
KEYRING="/usr/local/share/keyrings/nakedeb-keyring.gpg"
|
||||||
|
LIST="/etc/apt/sources.list.d/nakedeb.list"
|
||||||
|
|
||||||
|
echo "==> Suppression de nakedsway"
|
||||||
|
sudo apt remove --purge -y nakedsway
|
||||||
|
|
||||||
|
echo "==> Suppression des dépendances inutiles"
|
||||||
|
sudo apt autoremove -y
|
||||||
|
|
||||||
|
echo "==> Suppression du repo nakeDeb"
|
||||||
|
if [ -f "$LIST" ]; then
|
||||||
|
sudo rm "$LIST"
|
||||||
|
echo "✔ Repo supprimé"
|
||||||
|
else
|
||||||
|
echo "✔ Repo déjà absent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Suppression du keyring"
|
||||||
|
if [ -f "$KEYRING" ]; then
|
||||||
|
sudo rm "$KEYRING"
|
||||||
|
echo "✔ Clé supprimée"
|
||||||
|
else
|
||||||
|
echo "✔ Clé déjà absente"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Mise à jour APT"
|
||||||
|
sudo apt update
|
||||||
|
|
||||||
|
echo "==> (Optionnel) Suppression config utilisateur"
|
||||||
|
read -p "Supprimer ~/.config (ATTENTION) ? [y/N] " confirm
|
||||||
|
|
||||||
|
if [[ "$confirm" == "y" || "$confirm" == "Y" ]]; then
|
||||||
|
rm -rf "$HOME/.config/sway"
|
||||||
|
echo "✔ Config sway supprimée"
|
||||||
|
else
|
||||||
|
echo "✔ Config conservée"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Désinstallation terminée"
|
||||||
Loading…
Reference in New Issue