config 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. # sway config file
  2. #
  3. # Please see https://i3wm.org/docs/userguide.html for a complete reference!
  4. # @host jellyfish
  5. set $mod Mod4
  6. # @end
  7. # @host tompot
  8. set $mod Mod1
  9. # @end
  10. # Font for window titles. Will also be used by the bar unless a different font
  11. # is used in the bar {} block below.
  12. # @host jellyfish
  13. font pango:Inter 11
  14. # @end
  15. # @host tompot
  16. font pango:monospace 12
  17. font pango:B612 12
  18. # @end
  19. # NetworkManager is the most popular way to manage wireless networks on Linux,
  20. # and nm-applet is a desktop environment-independent system tray GUI for it.
  21. exec gtklock
  22. exec wl-paste --watch cliphist store
  23. exec mako
  24. # Use Mouse+$mod to drag floating windows to their wanted position
  25. floating_modifier $mod
  26. # start a terminal
  27. bindsym $mod+Return exec ghostty
  28. # kill focused window
  29. bindsym $mod+Shift+q kill
  30. # start fuzzel (a program launcher)
  31. # $mod+d run-or-search, as before but styled like the ghostty command palette
  32. # $mod+Shift+d installed applications only, with icons, from their .desktop entries
  33. bindsym $mod+d exec ~/.config/sway/scripts/fuzzel-run-or-search.sh
  34. bindsym $mod+Shift+d exec fuzzel
  35. bindsym $mod+Shift+v exec cliphist list | fuzzel --dmenu -l 15 | cliphist decode | wl-copy
  36. # previous bemenu bindings, kept as a fallback
  37. # bindsym $mod+d exec ~/.config/sway/scripts/bemenu-run-or-search.sh
  38. # bindsym $mod+Shift+v exec cliphist list | bemenu -l 15 -p --counter always -c -W 0.4 -B 5 \
  39. # --fixed-height -H 22 --fn 'B612 11' \
  40. # --bdr "#323232" --tf "#FFFFFF" --hf "#FFFFFF" \
  41. # | cliphist decode | wl-copy
  42. # Copy and paste
  43. bindsym $mod+v exec ~/.config/sway/scripts/contextual-paste.sh
  44. bindsym $mod+c exec ~/.config/sway/scripts/contextual-copy.sh
  45. # @host tompot
  46. # Home Assistant - Toggle Desk Lamp
  47. bindsym Mod4+c exec ~/.local/bin/toggle-desk-lamp.sh
  48. # @end
  49. # focus the parent container
  50. bindsym $mod+a exec wtype -M ctrl -k a -m ctrl
  51. # change focus
  52. bindsym $mod+j focus left
  53. bindsym $mod+k focus down
  54. bindsym $mod+l focus up
  55. bindsym $mod+h focus right
  56. # alternatively, you can use the cursor keys:
  57. bindsym $mod+Left focus left
  58. bindsym $mod+Down focus down
  59. bindsym $mod+Up focus up
  60. bindsym $mod+Right focus right
  61. # move focused window
  62. bindsym $mod+Shift+j move left
  63. bindsym $mod+Shift+k move down
  64. bindsym $mod+Shift+l move up
  65. bindsym $mod+Shift+semicolon move right
  66. # alternatively, you can use the cursor keys:
  67. bindsym $mod+Shift+Left move left
  68. bindsym $mod+Shift+Down move down
  69. bindsym $mod+Shift+Up move up
  70. bindsym $mod+Shift+Right move right
  71. # enter fullscreen mode for the focused container
  72. bindsym $mod+f fullscreen toggle
  73. # change container layout (stacked, tabbed, toggle split)
  74. bindsym $mod+s layout stacking
  75. bindsym $mod+w layout tabbed
  76. bindsym $mod+e layout toggle split
  77. # toggle tiling / floating
  78. bindsym $mod+Shift+space floating toggle
  79. # change focus between tiling / floating windows
  80. bindsym $mod+space focus mode_toggle
  81. # Define names for default workspaces for which we configure key bindings later on.
  82. # We use variables to avoid repeating the names in multiple places.
  83. set $ws1 "1"
  84. set $ws2 "2"
  85. set $ws3 "3"
  86. set $ws4 "4"
  87. set $ws5 "5"
  88. set $ws6 "6"
  89. set $ws7 "7"
  90. set $ws8 "8"
  91. set $ws9 "9"
  92. set $ws10 "10"
  93. # switch to workspace
  94. bindsym $mod+1 workspace number $ws1
  95. bindsym $mod+2 workspace number $ws2
  96. bindsym $mod+3 workspace number $ws3
  97. bindsym $mod+4 workspace number $ws4
  98. bindsym $mod+5 workspace number $ws5
  99. bindsym $mod+6 workspace number $ws6
  100. bindsym $mod+7 workspace number $ws7
  101. bindsym $mod+8 workspace number $ws8
  102. bindsym $mod+9 workspace number $ws9
  103. bindsym $mod+0 workspace number $ws10
  104. # move focused container to workspace
  105. bindsym $mod+Shift+1 move container to workspace number $ws1
  106. bindsym $mod+Shift+2 move container to workspace number $ws2
  107. bindsym $mod+Shift+3 move container to workspace number $ws3
  108. bindsym $mod+Shift+4 move container to workspace number $ws4
  109. bindsym $mod+Shift+5 move container to workspace number $ws5
  110. bindsym $mod+Shift+6 move container to workspace number $ws6
  111. bindsym $mod+Shift+7 move container to workspace number $ws7
  112. bindsym $mod+Shift+8 move container to workspace number $ws8
  113. bindsym $mod+Shift+9 move container to workspace number $ws9
  114. bindsym $mod+Shift+0 move container to workspace number $ws10
  115. # reload the configuration file
  116. bindsym $mod+Shift+c reload
  117. # restart sway inplace
  118. bindsym $mod+Shift+r restart
  119. # exit sway
  120. bindsym $mod+Shift+e exec "swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'sway exit'"
  121. # resize window (you can also use the mouse for that)
  122. mode "resize" {
  123. bindsym j resize shrink width 10 px or 10 ppt
  124. bindsym k resize grow height 10 px or 10 ppt
  125. bindsym l resize shrink height 10 px or 10 ppt
  126. bindsym semicolon resize grow width 10 px or 10 ppt
  127. bindsym Left resize shrink width 10 px or 10 ppt
  128. bindsym Down resize grow height 10 px or 10 ppt
  129. bindsym Up resize shrink height 10 px or 10 ppt
  130. bindsym Right resize grow width 10 px or 10 ppt
  131. bindsym Return mode "default"
  132. bindsym Escape mode "default"
  133. bindsym $mod+r mode "default"
  134. }
  135. bindsym $mod+r mode "resize"
  136. bar {
  137. position top
  138. bar swaybar_command waybar
  139. }
  140. # Media player controls
  141. bindsym XF86AudioPlay exec playerctl play-pause
  142. bindsym XF86AudioPause exec playerctl play-pause
  143. bindsym XF86AudioNext exec playerctl next
  144. bindsym XF86AudioPrev exec playerctl previous
  145. # Brightness
  146. # @host tompot
  147. bindsym XF86MonBrightnessUp exec ddcutil setvcp --sn 6L1M413 10 + 5
  148. bindsym XF86MonBrightnessDown exec ddcutil setvcp --sn 6L1M413 10 - 5
  149. # @end
  150. # @host jellyfish
  151. bindsym --locked XF86MonBrightnessUp exec light -T 1.4
  152. bindsym --locked XF86MonBrightnessDown exec light -T 0.7142
  153. bindsym XF86Display exec wdisplays
  154. # @end
  155. # @host tompot
  156. bindsym $mod+b exec ~/.config/sway/scripts/brightness-slider.sh
  157. # @end
  158. # Audio
  159. bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
  160. bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
  161. bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
  162. bindsym Print exec 'slurp | GRIM_DEFAULT_DIR=~/Downloads/ grim -g -'
  163. # colors
  164. set $black #272822
  165. set $white #FFFFFF
  166. set $pink #F92672
  167. set $blue #444444
  168. set $green #A6E22E
  169. set $orange #FD971F
  170. set $yellow #E6DB74
  171. set $purple #AE81FF
  172. # class border bg. text indicator child_border
  173. client.focused $black $black $green $blue $blue
  174. client.focused_inactive $black $black $blue $black $black
  175. client.unfocused $black $black $white $black $black
  176. client.background #ff0000
  177. input * {
  178. xkb_options "ctrl:nocaps,grp:toggle"
  179. xkb_layout us,us
  180. xkb_variant ,intl
  181. scroll_factor 1
  182. }
  183. # @host jellyfish
  184. input type:touchpad {
  185. tap enabled
  186. natural_scroll enabled
  187. pointer_accel 0.4
  188. dwt enabled
  189. click_method clickfinger
  190. scroll_method two_finger
  191. drag enabled
  192. drag_lock disable
  193. }
  194. # @end
  195. # @host jellyfish
  196. exec swayidle -w \
  197. timeout 300 'gtklock -d -c /home/capella/.config/gtklock/config.ini' \
  198. timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
  199. timeout 1200 'systemctl hibernate' \
  200. before-sleep 'gtklock -d -c /home/capella/.config/gtklock/config.ini'
  201. bindsym $mod+q exec 'gtklock -d -c /home/capella/.config/gtklock/config.ini'
  202. bindswitch --reload --locked lid:on exec 'gtklock -d -c /home/capella/.config/gtklock/config.ini && systemctl suspend'
  203. # @end
  204. # @host tompot
  205. exec swayidle -w \
  206. timeout 300 '~/.config/sway/scripts/cpu-powersave-lock.sh && gtklock -d -c /home/capella/.config/gtklock/config.ini' \
  207. timeout 600 'swaymsg "output * power off" && ddcutil setvcp --sn 6L1M413 D6 0x05' \
  208. resume '~/.config/sway/scripts/cpu-powersave-unlock.sh && swaymsg "output * power on" && ddcutil setvcp --sn 6L1M413 D6 0x01' \
  209. before-sleep '~/.config/sway/scripts/cpu-powersave-lock.sh && gtklock -d -c /home/capella/.config/gtklock/config.ini'
  210. bindsym $mod+q exec '~/.config/sway/scripts/cpu-powersave-lock.sh && gtklock -d -c /home/capella/.config/gtklock/config.ini'
  211. # @end
  212. smart_borders on
  213. hide_edge_borders both
  214. for_window [class="^.*"] border pixel 2
  215. include @sysconfdir@/sway/config.d/*
  216. # xdg-desktop-portal / systemd session integration.
  217. # Imports the Wayland environment into the systemd user manager and starts
  218. # sway-session.target, which activates graphical-session.target so that
  219. # xdg-desktop-portal can run. Without this, file-save dialogs silently fail
  220. # (e.g. Chrome "Save as PDF" does nothing).
  221. exec systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
  222. exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
  223. exec systemctl --user start sway-session.target
  224. # @host jellyfish
  225. output * {
  226. scale 1.5
  227. }
  228. # @end
  229. # @host tompot
  230. output HDMI-A-1 pos 0 0
  231. output HDMI-A-2 {
  232. transform 270
  233. pos 930 2160
  234. scale 1
  235. }
  236. # @end