summary refs log tree commit diff
path: root/.config/sway/config.d
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2023-01-19 18:45:46 +0100
committerRobert Günzler <r@gnzler.io>2023-03-21 12:35:42 +0100
commit75d666322acfb6d8a58cbb4bf6a95782fe14b124 (patch)
treec2df99bc6372b7ba28558261911336e4e797ebdf /.config/sway/config.d
parent3d594f8a0da0e4e297df7ea1652048a80f7c8a96 (diff)
sway: make most of config auto-loading
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '.config/sway/config.d')
-rw-r--r--.config/sway/config.d/auto.conf52
-rw-r--r--.config/sway/config.d/binds.conf304
-rw-r--r--.config/sway/config.d/colors.conf18
-rw-r--r--.config/sway/config.d/gsettings.conf14
-rw-r--r--.config/sway/config.d/input.conf71
5 files changed, 459 insertions, 0 deletions
diff --git a/.config/sway/config.d/auto.conf b/.config/sway/config.d/auto.conf
new file mode 100644
index 0000000..1898e06
--- /dev/null
+++ b/.config/sway/config.d/auto.conf
@@ -0,0 +1,52 @@
+# vim: ft=i3config
+# NOTE: never use assign, it crashes sway for some reason...
+
+# for_window [floating] border csd
+for_window [app_id="[tT]elegram[-_][dD]esktop"] mark mail
+for_window [app_id="[tT]elegram[-_][dD]esktop" title="Choose Files"] floating enable; exec centercon -w .6
+for_window [app_id="[tT]elegram[-_][dD]esktop" title="Media viewer"] floating enable
+for_window [app_id="[tT]elegram[-_][dD]esktop" title="TelegramDesktop"] floating enable
+for_window [app_id="^__floating-.*"] floating enable
+for_window [app_id="com.github.wwmm.easyeffects"] floating enable; border none; exec centercon -w .4
+for_window [app_id="(fire|libre|work)fox" title="Picture-in-Picture"] floating enable, sticky enable, border none
+for_window [app_id="(fire|libre|work)fox" title="Sharing Indicator$"] floating enable, border none, sticky enable; exec centercon 1 tr; focus mode_toggle
+for_window [app_id="(fire|libre|work)fox" title="^About Mozilla Firefox$"] floating enable
+for_window [app_id="(fire|libre|work)fox" title="^Close tabs?"] floating enable
+# for_window [app_id="firefox" title="^Developer Tools"] floating enable
+for_window [app_id="(fire|libre|work)fox" title="^Extension: (Yomichan)"] floating enable
+for_window [app_id="(fire|libre|work)fox" title="^File Upload$"] floating enable
+for_window [app_id="(fire|libre|work)fox" title="^Open Firefox in Troubleshoot Mode?$"] floating enable
+for_window [app_id="(fire|libre|work)fox" title="^Save As$"] floating enable
+for_window [app_id="(fire|libre|work)fox"] mark browser
+for_window [app_id="imv"] floating enable; inhibit_idle open
+for_window [app_id="launcher"] floating enable
+for_window [app_id="mpv"] floating enable; inhibit_idle fullscreen
+for_window [app_id="mpv"] max_render_time off
+# for_window [app_id="mpv" title=".* - mvi$"] border pixel $bpix;
+for_window [app_id="obs" title="^Local File$"] floating enable; exec centercon -w .6
+for_window [app_id="org.polymc.PolyMC" title="$Console"] floating enable
+for_window [app_id="slack"] mark mail
+for_window [app_id="zoom" title="Settings"] floating enable
+for_window [app_id="zoom" title="^as_toolbar$"] floating enable
+for_window [app_id="zoom" title="^zoom$"] floating enable
+for_window [class="Chromium-browser"] mark browser
+#for_window [class="discord"] mark mail
+#for_window [class="parsecd"] inhibit_idle fullscreen
+#for_window [class="pinentry"] floating enable; border normal
+for_window [con_mark="browser"] inhibit_idle fullscreen
+# fix primary clipboard paste not working
+for_window [con_mark="browser"] bindsym Shift-Insert exec 'wl-paste -p -n | wtype -'
+for_window [title="tridactyledit"] floating enable
+
+set $outputSide eDP-1
+for_window [con_mark="work"] move workspace $wsWork
+for_window [con_mark="mail"] move workspace $wsMail, move workspace to output $outputSide, layout tabbed
+#for_window [class="Spotify"] move workspace $wsMusic, move workspace to output $outputSide
+#for_window [class="osu!"] move workspace $wsGame, layout tabbed, exec osu-mode on
+for_window [app_id="org.keepassxc.KeePassXC"] move scratchpad; scratchpad show
+#for_window [class="Gvncviewer"] move workspace __vnc; fullscreen
+for_window [app_id="retroarch"] fullscreen
+#for_window [class="^Minecraft"] fullscreen; sway output - scale 1
+
+for_window [app_id="gramps"] floating disable
+for_window [app_id="xdg-desktop-portal-gtk"] floating enable
diff --git a/.config/sway/config.d/binds.conf b/.config/sway/config.d/binds.conf
new file mode 100644
index 0000000..1e7c066
--- /dev/null
+++ b/.config/sway/config.d/binds.conf
@@ -0,0 +1,304 @@
+# vim: ft=i3config
+
+# Basics {{{
+bindsym --no-repeat {
+  $mod+Return exec $term
+  $mod+Shift+Return exec $floating_term
+  $mod+b exec pkill -USR1 waybar
+
+  # bindsym $mod+w exec $firefox
+  # $mod+w exec firefox --private-window
+
+  # start launcher
+  $mod+d exec menu -run
+}
+
+# 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.
+# Despite the name, also works for non-floating windows.
+# Change normal to inverse to use left mouse button for resizing and right
+# mouse button for dragging.
+floating_modifier $mod normal
+
+# reload the configuration file
+bindsym $mod+Shift+c reload
+
+# exit sway (logs you out of your wayland session)
+bindsym $mod+Shift+e exec swaynag \
+    -t warning \
+    -m 'exit: what now?' \
+    -b 'exit' 'swaymsg exec -- doas s6-rc -d change desktop' \
+    -b 'restart' 'swaymsg exec -- doas s6-rc -d change desktop && sleep 0.5 && doas s6-rc -u change desktop' \
+    -b 'poweroff' 'swaymsg exec -- doas poweroff' \
+    -b 'reboot' 'swaymsg exec -- doas reboot'
+
+bindsym $mod+Shift+backspace exec lock
+
+bindsym $mod+Shift+b border toggle
+
+# rotate the screen 90 degress to read books/manga
+bindsym $mod+Shift+r mode "read"; output - transform 90 clockwise
+mode "read" {
+  bindsym Escape mode "default"; output - transform 90 anticlockwise
+  bindsym Return mode "default"; output - transform 90 anticlockwise
+}
+
+# }}}
+
+bindsym --no-repeat Print exec grimshot copy output
+bindsym $mod+Shift+s mode "screengrab"
+# {{{
+mode "screengrab" {
+  bindsym a exec grimshot save screen; mode "default"
+  bindsym o exec grimshot save output; mode "default"
+  bindsym s exec grimshot save area; mode "default"
+  bindsym w exec grimshot save win; mode "default"
+  bindsym c exec grimshot copy area; mode "default"
+  bindsym p exec colorpick; mode "default"
+
+  bindsym r exec grimshot rec win; mode "default"
+  bindsym q exec pkill -INT wf-recorder; mode "default"
+
+  bindsym m exec grimocr -m mangaocr; mode "default"
+  bindsym Shift+m exec grimocr -m tesseract; mode "default"
+
+  bindsym Escape mode "default"
+  bindsym Return mode "default"
+}
+# }}}
+
+# Move your focus around
+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]
+
+# _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
+
+bindsym $mod+Next focus child
+bindsym $mod+Prior focus parent
+
+bindsym $mod+Delete [urgent="latest"] focus
+
+# for_window [app_id="^firefox" title="^MAIN/main"] mark browser_main
+# for_window [app_id="^firefox" title="^WORK/main"] mark browser_work
+# bindsym $mod+Semicolon [con_mark="browser_main"] focus
+# bindsym $mod+Apostrophe [con_mark="browser_work"] focus
+bindsym $mod+Semicolon [app_id="^firefox" title="^MAIN/main"] focus
+bindsym $mod+Apostrophe [app_id="^firefox" title="^WORK/main"] focus
+
+# Workspaces {{{
+# Note: workspaces can have any name you want, not just numbers.
+# We just use 1-10 as the default.
+bindsym $mod+Shift+n workspace next
+bindsym $mod+Shift+p workspace prev
+
+# switch to workspace
+bindsym $mod+1 workspace $ws1
+bindsym $mod+2 workspace $ws2
+bindsym $mod+3 workspace $ws3
+bindsym $mod+4 workspace $ws4
+bindsym $mod+5 workspace $ws5
+bindsym $mod+6 workspace $ws6
+bindsym $mod+7 workspace $ws7
+bindsym $mod+8 workspace $ws8
+bindsym $mod+9 workspace $ws9
+bindsym $mod+0 workspace $ws0
+
+bindsym $mod+Ctrl+m workspace $wsMusic
+bindsym $mod+Ctrl+v workspace $wsVideo
+bindsym $mod+Ctrl+g workspace $wsGame
+bindsym $mod+Tab workspace back_and_forth
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace $ws1
+bindsym $mod+Shift+2 move container to workspace $ws2
+bindsym $mod+Shift+3 move container to workspace $ws3
+bindsym $mod+Shift+4 move container to workspace $ws4
+bindsym $mod+Shift+5 move container to workspace $ws5
+bindsym $mod+Shift+6 move container to workspace $ws6
+bindsym $mod+Shift+7 move container to workspace $ws7
+bindsym $mod+Shift+8 move container to workspace $ws8
+bindsym $mod+Shift+9 move container to workspace $ws9
+bindsym $mod+Shift+0 move container to workspace $ws0
+
+# move focused workspce to output
+bindsym $mod+Ctrl+$left move workspace to output left
+bindsym $mod+Ctrl+$down move workspace to output down
+bindsym $mod+Ctrl+$up move workspace to output up
+bindsym $mod+Ctrl+$right move workspace to output right
+
+bindsym $mod+g mode "go"
+mode "go" {
+  bindsym 1 workspace $ws1; mode "default"
+  bindsym 2 workspace $ws2; mode "default"
+  bindsym 3 workspace $ws3; mode "default"
+  bindsym 4 workspace $ws4; mode "default"
+  bindsym 5 workspace $ws5; mode "default"
+  bindsym 6 workspace $ws6; mode "default"
+  bindsym 7 workspace $ws7; mode "default"
+  bindsym 8 workspace $ws8; mode "default"
+  bindsym 9 workspace $ws9; mode "default"
+  bindsym 0 workspace $ws0; mode "default"
+
+  bindsym m workspace $wsMusic; mode "default"
+  bindsym g workspace $wsGame; mode "default"
+  bindsym v workspace $wsVideo; mode "default"
+
+  # return to default mode
+  bindsym Return mode "default"
+  bindsym Escape mode "default"
+}
+
+# }}}
+
+bindsym $mod+Minus splitv
+bindsym $mod+Equal splith
+bindsym $mod+Shift+y layout toggle split
+
+bindsym $mod+f fullscreen
+bindsym $mod+Shift+f fullscreen global
+bindsym $mod+Shift+t bar mode toggle topbar; default_border pixel
+
+bindsym $mod+space focus mode_toggle
+bindsym $mod+Ctrl+space floating toggle
+
+bindsym $mod+y mode "layout"
+# {{{
+mode "layout" {
+    # Switch the current container between different layout styles
+    bindsym s layout stacking; mode "default"
+    bindsym w layout tabbed; mode "default"
+    bindsym e layout splitv; mode "default"
+
+    # move focus to the parent container
+    bindsym p focus parent
+    bindsym Shift+p focus child
+
+    # make a sticky container
+    bindsym t sticky toggle; mode "default"; exec notify-send sway "container pinned"
+    bindsym Shift+t \
+        floating enable; \
+        sticky enable; \
+        exec sh -c 'centercon -w 0.3 tr && swaymsg move left 10px && swaymsg move down 10px && swaymsg focus mode_toggle'; \
+        mode "default"
+
+    # return to default mode
+    bindsym Return mode "default"
+    bindsym Escape mode "default"
+}
+# }}}
+
+bindsym $mod+Ctrl+backspace move scratchpad
+bindsym $mod+backspace scratchpad show
+
+bindsym $mod+r mode "resize"
+# {{{
+mode "resize" {
+    set $rate 25
+    bindsym $left resize shrink width $rate
+    bindsym $down resize shrink height $rate
+    bindsym $up resize grow height $rate
+    bindsym $right resize grow width $rate
+
+    bindsym Shift+$down resize shrink width $rate; resize shrink height $rate
+    bindsym Shift+$up resize grow width $rate; resize grow height $rate
+
+    # make a centered container
+    bindsym c exec centercon -w 0.6; mode "default"
+    bindsym Shift+c exec centercon -w 1.0; mode "default"
+
+    # return to default mode
+    bindsym Return mode "default"
+    bindsym Escape mode "default"
+}
+# }}}
+
+bindsym $mod+Shift+g mode "gaps"
+# {{{
+mode "gaps" {
+    set $gapDefault 4
+    bindsym g gaps inner all toggle $gapDefault
+    bindsym t gaps inner all toggle $gapDefault
+    bindsym r gaps outer all set 0; gaps inner all set 0
+
+    set $gapRate 2
+    bindsym $up gaps inner all plus $gapRate
+    bindsym $down gaps inner all minus $gapRate
+
+    # return to default mode
+    bindsym Return mode "default"
+    bindsym Escape mode "default"
+}
+# }}}
+
+bindsym $mod+m mode "menu"
+# {{{
+mode "menu" {
+  bindsym a exec soundswitch; mode "default"
+  bindsym m exec mnts; mode "default"
+  bindsym n exec notifmenu; mode "default"
+  bindsym p exec secretmenu; mode "default"
+  bindsym r exec rcmenu; mode "default"
+  bindsym c exec connmenu; mode "default"
+  # bindsym x exec menu -drun; mode "default"
+  bindsym d exec swdo; mode "default"
+
+  bindsym Return mode "default"
+  bindsym Escape mode "default"
+  bindsym q mode "default"
+}
+# }}}
+
+# Misc {{{
+bindsym $mod+Shift+i exec anthywl-toggle
+# bindsym $mod+Shift+x mark --toggle "x"
+# bindsym $mod+x [con_mark="x"] focus
+# bindsym $mod+Ctrl+x swap container with mark "x"
+
+# https://whynothugo.nl/journal/2022/11/04/copying-with-super-c/
+bindsym $mod+x exec wtype -P XF86Cut
+bindsym $mod+c exec wtype -P XF86Copy
+bindsym $mod+v exec wtype -P XF86Paste
+
+# Media volume controls
+bindsym XF86AudioMute exec soundswitch -m
+#bindsym XF86AudioMicMute exec soundswitch -M
+bindsym XF86AudioLowerVolume exec soundswitch -v
+bindsym XF86AudioRaiseVolume exec soundswitch -V
+
+# Sreen brightness controls
+bindsym XF86MonBrightnessDown exec light -U 10
+bindsym XF86MonBrightnessUp exec light -A 10
+
+# Media player controls
+bindsym XF86AudioPrev exec playerctl -p playerctld previous
+bindsym XF86AudioPlay exec playerctl -p playerctld play-pause
+bindsym XF86AudioNext exec playerctl -p playerctld next
+
+# fn + f10
+bindsym XF86RFKill exec notify-send "hello from rfkill"
+# fn + f12
+bindsym XF86AudioMedia exec notify-send "hello from audio media"
+
+#bindsym XF86WakeUp exec true
+#bindsym XF86Display output eDP-1 power off; output eDP-1 power on; exec kanshictl reload
+#bindsym XF86Tools output eDP-1 power toggle
+#bindsym XF86Keyboard exec true
+#bindsym XF86Favorites exec s6-svc -r $HOME/.local/share/s6/wlsunset
+
+bindsym $mod+F1 exec notify-send "hello from F1"
+bindsym $mod+F2 exec notify-send "hello from F2"
+bindsym $mod+F3 exec notify-send "hello from F3"
+# }}}
+
+# go to sleep when lid is closed
+bindswitch --reload lid:on exec r2mem
diff --git a/.config/sway/config.d/colors.conf b/.config/sway/config.d/colors.conf
new file mode 100644
index 0000000..498a50c
--- /dev/null
+++ b/.config/sway/config.d/colors.conf
@@ -0,0 +1,18 @@
+
+set $text              #fffffb
+set $text2             #bdc0ba
+set $bg                #1c1c1c
+set $bg2               #bdc0ba
+set $main              #8a6bbe
+set $main2             #70649a
+set $urgent            #cb1b45
+set $urgent2           #db4d6d
+set $indicator_focused #fad689
+set $indicator_unfocused $bg
+
+client.focused           $main    $main   $text  $indicator_focused   $main
+#client.focused_inactive $bg      $bg     $text2 $indicator_unfocused $bg
+client.focused_inactive  $main2   $main2  $text2 $indicator_unfocused $main2
+client.unfocused         $bg      $bg     $text2 $indicator_unfocused $bg
+#client.unfocused        $main2   $main2  $text2 $indicator_unfocused $main2
+client.urgent            $urgent2 $urgent $text  $indicator_focused   $urgent
diff --git a/.config/sway/config.d/gsettings.conf b/.config/sway/config.d/gsettings.conf
new file mode 100644
index 0000000..08d184a
--- /dev/null
+++ b/.config/sway/config.d/gsettings.conf
@@ -0,0 +1,14 @@
+exec_always {
+	gsettings set org.gnome.desktop.interface gtk-theme Adwaita
+	gsettings set org.gnome.desktop.interface icon-theme Adwaita
+	gsettings set org.gnome.desktop.interface cursor-theme WinSur
+	# gsettings set org.gnome.desktop.interface font-name "Noto Sans"
+	gsettings set org.gnome.desktop.interface font-name "Iosevka Aile"
+	gsettings set org.gnome.desktop.interface enable-animations false
+	gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark
+	gsettings set org.gnome.desktop.interface color-scheme prefer-dark
+	gsettings set org.gnome.desktop.privacy remember-recent-files false
+	gsettings set org.gnome.desktop.privacy recent-files-max-age 0
+	gsettings set org.gtk.Settings.FileChooser show-hidden false
+	gsettings set org.gtk.Settings.FileChooser startup-mode cwd
+}
diff --git a/.config/sway/config.d/input.conf b/.config/sway/config.d/input.conf
new file mode 100644
index 0000000..67ee374
--- /dev/null
+++ b/.config/sway/config.d/input.conf
@@ -0,0 +1,71 @@
+# vim: ft=i3config fdm=marker fen
+
+seat * hide_cursor when-typing enable
+
+input type:keyboard {
+	# set via $HOME/.config/sway/env
+	# xkb_layout us
+	# xkb_variant mac
+	# xkb_options 'caps:hyper,lvl3:ralt_switch_multikey,eurosign:5'
+	# xkb_options 'caps:hyper,eurosign:5'
+
+	repeat_rate 70
+	repeat_delay 200
+}
+
+input type:pointer {
+	accel_profile adaptive
+	pointer_accel 0
+	natural_scroll enabled
+}
+
+input type:touchpad {
+	accel_profile adaptive
+	tap enabled
+	natural_scroll enabled
+	dwt enabled
+	#events disabled
+}
+
+set {
+	$keyboard 1:1:AT_Translated_Set_2_keyboard
+	$trackpad 1739:0:Synaptics_TM3289-021
+	$trackpoint 2:10:TPPS/2_Elan_TrackPoint
+
+	$planck 12951:50895:ZSA_Technology_Labs_Planck_EZ_Glow
+	$slimblade 1149:8257:Kensington_Kensington_Slimblade_Trackball
+	$mouse 1133:16500:Logitech_G305
+	$pen 10429:148:XP-PEN_STAR_G640_Pen
+	$penmouse 10429:148:XP-PEN_STAR_G640_Mouse
+	$virtpen 0:0:OpenTabletDriver_Virtual_Tablet
+}
+
+input $trackpoint {
+	pointer_accel 1
+}
+
+# $slimblade:
+# button layout:
+# ---------
+# | 2 | 8 |
+# ---------
+# | 1 | 3 |
+# ---------
+input $slimblade {
+	natural_scroll disabled
+	pointer_accel 1
+}
+bindsym --input-device=$slimblade --whole-window button8 seat - cursor press button3, seat - cursor release button3
+bindsym --input-device=$slimblade --whole-window button3 seat - cursor press button8, seat - cursor release button8
+
+# seat pen attach $pen
+# seat pen hide_cursor 10000
+# seat pen idle_inhibit tablet_tool
+# seat pen idle_wake tablet_tool
+
+# input $pen {
+#   accel_profile flat
+# }
+# input $penmouse {
+#   events disabled
+# }