From b9d5240175a22a1591139683d1b7f92a188bfa8a Mon Sep 17 00:00:00 2001 From: Frieder Schlesier Date: Tue, 23 Apr 2024 22:44:28 +0200 Subject: [PATCH] update sway/config --- sway/config | 387 +++++++++++++++++++++------------------------------- 1 file changed, 158 insertions(+), 229 deletions(-) diff --git a/sway/config b/sway/config index 27f17f9..2a31b11 100755 --- a/sway/config +++ b/sway/config @@ -1,210 +1,166 @@ -# Default config for sway -# -# Copy this to ~/.config/sway/config and edit it to your liking. -# -# Read `man 5 sway` for a complete reference. - -# Logo key. Use Mod1 for Alt. set $mod Mod4 +# at some point check https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway -font pango:DejaVu Sans Mono 8 +# Configure displays -set $term alacritty +# The annoying thing is that sometimes the display ID changes when hotplugging +# my Thunderbolt dock... +set $primary DP-7 DP-8 HDMI-A-1 +set $laptop eDP-1 + +output $laptop pos 1920 135 scale 2 +output DP-7 pos 0 0 scale 2 +output DP-8 pos 0 0 scale 2 +output HDMI-A-1 scale 2 + +# output * bg ~/.dotfiles/backgrounds/samuel-ferrara-uOi3lg8fGl4-unsplash.jpg fill +# output * bg ~/.dotfiles/backgrounds/scott-rodgerson-lRtzEExP0H8-unsplash.jpg fill + +bindsym $mod+Shift+s exec ~/.bin/toggle-display $primary + +input type:keyboard { + xkb_layout de,de + xkb_options ctrl:nocaps +} + +font pango:Iosevka ss08 7 # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod -hide_edge_borders both # none|vertical|horizontal|both - -output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill - -# start a terminal -bindsym $mod+Return exec alacritty - # kill focused window bindsym $mod+Shift+q kill +bindsym $mod+Shift+x exit +bindsym $mod+Shift+r reload +# bindsym $mod+r resize +bindsym $mod+r mode "resize" -# start dmenu (a program launcher) -# for_window [app_id="^launcher$"] floating enable, sticky enable, resize set 30 ppt 60 ppt, border pixel 10 -# set $menu exec $term --class=launcher -e /home/fschl/projects/sway-launcher-desktop/sway-launcher-desktop.sh -# bindsym $mod+d exec $menu -bindsym $mod+d exec wofi --show=drun --lines=10 --prompt="" - -# bindsym Ctrl+Shift+l exec i3lock-fancy -bindsym Ctrl+Shift+l exec swaylock \ - --screenshots \ - --clock \ - --indicator \ - --indicator-radius 100 \ - --indicator-thickness 7 \ - --effect-blur 7x9 \ - --effect-vignette 0.5:0.5 \ - --ring-color 859900 \ - --key-hl-color 2aa198 \ - --line-color 00000000 \ - --inside-color 00000088 \ - --separator-color 00000000 \ - --grace 2 \ - --fade-in 0.2 - -input * { - xkb_layout "de" - xkb_variant "nodeadkeys" - xkb_options "ctrl:nocaps" -} - -# change focus -bindsym $mod+j focus left -bindsym $mod+k focus down -bindsym $mod+l focus right - -# alternatively, you can use the cursor keys: -bindsym $mod+Left focus left -bindsym $mod+Down focus down -bindsym $mod+Right focus right - -# move focused window -bindsym $mod+Shift+j move left -bindsym $mod+Shift+k move down -bindsym $mod+Shift+l move right - -# alternatively, you can use the cursor keys: -bindsym $mod+Shift+Left move left -bindsym $mod+Shift+Down move down -bindsym $mod+Shift+Right move right - -# split in horizontal orientation -bindsym $mod+h split h - -# split in vertical orientation -bindsym $mod+v split v - -# enter fullscreen mode for the focused container -bindsym $mod+f fullscreen +bindsym $mod+Shift+Return exec kitty # change container layout (stacked, tabbed, toggle split) bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+e layout toggle split +# use vim keys for window movement +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# move workspace +bindsym $mod+Mod1+h move workspace to output left +bindsym $mod+Mod1+l move workspace to output right +bindsym $mod+Mod1+Left move workspace to output left +bindsym $mod+Mod1+Right move workspace to output right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left 30 px +bindsym $mod+Shift+Down move down 30 px +bindsym $mod+Shift+Up move up 30 px +bindsym $mod+Shift+Right move right 30 px +bindsym $mod+Shift+h move left 30 px +bindsym $mod+Shift+j move down 30 px +bindsym $mod+Shift+k move up 30 px +bindsym $mod+Shift+l move right 30 px + +# split in horizontal orientation +# bindsym $mod+s split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + # toggle tiling / floating -bindsym $mod+Shift+space floating toggle +bindsym $mod+Shift+f floating toggle + +# toggle pinned floating window +bindsym $mod+Shift+p sticky toggle # change focus between tiling / floating windows -bindsym $mod+space focus mode_toggle -# float some applications -for_window [class="Tor Browser"] floating enable +bindsym $mod+Control+space focus mode_toggle -bindsym $mod+a focus parent # focus the parent container +# focus the parent container +bindsym $mod+a focus parent -# manage workspaces -# look for icons: https://fontawesome.com/icons?d=gallery -# firefox - browser is placed on this Workspace -set $WS1 "1 " -# git - emacs <3 -set $WS2 "2 " -# terminal - place for urxvt -set $WS3 "3 " -# envelope - thunderbird windows on here -set $WS4 "4 " -# code - eclise, intellij IDEs, etc -set $WS5 "5 " +# focus the child container +#bindsym $mod+d focus child + +# App launcher +bindsym $mod+space exec fuzzel -w 50 -x 8 -y 8 -r 3 -b 232635ff -t A6Accdff -s A6Accdff -S 232635ff -C c792eacc -m c792eacc -f "Iosevka ss08:weight=light:size=11" --no-fuzzy --icon-theme="Papirus-Dark" + +# Set defaults +default_orientation horizontal +workspace_layout tabbed + +# Configure gaps and borders +default_border pixel 1 +gaps outer 0 +gaps inner 4 +smart_borders off +hide_edge_borders --i3 none + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws0 "chat" +set $ws1 "1 " +set $ws2 "2 " +set $ws3 "3 " +set $ws4 "4 " +set $ws5 "5 " # unlock-alt - keepassxc defaults here -set $WS8 "8 " +set $ws8 "8 " # linux - less often used terminals for background processes -set $WS9 "9 " +set $ws9 "9 " -assign [class="^Firefox$"] $WS1 -assign [class="^Eclipse$"] $WS5 -assign [class="^Thunderbird$"] $WS4 -assign [class=".*ee.*ass.*"] $WS8 +assign [class="^Firefox$"] $ws1 +assign [class="^DebugScreen"] $ws3 +assign [class="^Thunderbird$"] $ws4 +assign [class=".*ee.*ass.*"] $ws8 -# https://faq.i3wm.org/question/3726/workspace-output-multiple-values/index.html%3Fanswer=3731.html#post-id-3731 -set $LAPTOP LVDS-1 -# set $EXTERN HDMI-1 -set $EXTERN VGA-1 +# Move specific workspaces to outputs +workspace $ws0 output $laptop +workspace $ws1 output $primary $laptop +workspace $ws2 output $primary $laptop +workspace $ws3 output $laptop +workspace $ws4 output $laptop +workspace $ws5 output $laptop -# monitor settings -bindsym $mod+m mode "monitor" -mode "monitor" { - # only laptop - # bindsym 1 exec xrandr --output $LAPTOP --auto --primary --output $CENTER --off $RIGHT --off - # HDMI main, laptop secondary - # bindsym 2 exec xrandr --output $CENTER --primary --auto --output $LAPTOP --auto --left-of $CENTER --output $RIGHT --off - # HDMI main, laptop left, VGA right, *not* supported on X230 - # bindsym 3 exec xrandr --output $CENTER --primary --auto --output $LAPTOP --auto --left-of $CENTER --output $RIGHT --auto --right-of $CENTER - # HDMI main, VGA right, laptop off - # bindsym 4 exec xrandr --output $CENTER --primary --auto --output $RIGHT --right-of $CENTER --rotate left --auto --output $LAPTOP --off - # VGA main, laptop left, HDMI off - # bindsym 8 exec xrandr --output $RIGHT --primary --auto --output $LAPTOP --auto --left-of $RIGHT --output $CENTER --off - # HDMI main, VGA right, laptop off - # bindsym 9 exec xrandr --output $CENTER --primary --auto --output $RIGHT --auto --right-of $CENTER --output $LAPTOP --off +# Switch to dev workspace by default +#workspace $ws1 - # back to normal: Enter or Escape - bindsym Return mode "default" - bindsym Escape mode "default" - bindsym $mod+m mode "default" -} - -bindsym $mod+p exec xrandr-toggle - -workspace $WS1 output $EXTERN -workspace $WS2 output $EXTERN -# workspace $WS3 output $LAPTOP -workspace $WS3 output $LAPTOP -workspace $WS4 output $LAPTOP -workspace $WS5 output $EXTERN -workspace $WS8 output $LAPTOP -workspace $WS9 output $LAPTOP - -# 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 +# Switch to workspace +bindsym $mod+grave workspace $ws0 +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 6 bindsym $mod+7 workspace 7 -bindsym $mod+8 workspace $WS8 -bindsym $mod+9 workspace $WS9 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 bindsym $mod+0 workspace 10 -# 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 +# Move focused container to workspace +bindsym $mod+Shift+grave move container to workspace $ws0 +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 6 bindsym $mod+Shift+7 move container to workspace 7 -bindsym $mod+Shift+8 move container to workspace $WS8 -bindsym $mod+Shift+9 move container to workspace $WS9 +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 10 -# https://github.com/francma/wob -set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock -exec mkfifo $WOBSOCK && tail -f $WOBSOCK | wob - -# audio controls -bindsym XF86AudioRaiseVolume exec amixer sset Master 5%+ | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $WOBSOCK -bindsym XF86AudioLowerVolume exec amixer sset Master 5%- | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $WOBSOCK -bindsym XF86AudioMute exec amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > $WOBSOCK - -bindsym XF86MonBrightnessDown exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK -bindsym XF86MonBrightnessUp exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK - - -# bindsym XF86AudioRaiseVolume exec amixer set Master 5+ #increase sound volume -# bindsym XF86AudioLowerVolume exec amixer set Master 5- #decrease sound volume -# bindsym XF86AudioMute exec amixer set Master 1+ toggle # mute sound -# bindsym XF86AudioMicMute exec amixer set Capture toggle # mute mic - -# reload the configuration file -bindsym $mod+Shift+c reload -# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) -bindsym $mod+Shift+r restart -# exit i3 (logs you out of your X session) -bindsym $mod+Shift+e exec "i3-nagbar -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' 'i3-msg exit'" +# Bind hotkeys for brightness and volume +bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- +bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ +bindsym --locked $mod+p exec playerctl play-pause # resize window (you can also use the mouse for that) mode "resize" { @@ -230,66 +186,39 @@ mode "resize" { bindsym Escape mode "default" } -bindsym $mod+r mode "resize" +# Screenshots +bindsym Print exec grimshot --notify save output +bindsym Alt+Print exec grimshot --notify save area -# Start i3bar to display a workspace bar (plus the system information i3status -# finds out, if available) -# actually use the rust port https://github.com/greshake/i3status-rust -bar { - colors { - background #223232 - statusline #93b4a6 - # focused_workspace #7d9683 #6c71c4 #fdf6e3 - # active_workspace #fdf6e3 #6c71c4 #fdf6e3 - # inactive_workspace #002b36 #586e75 #002b36 - # urgent_workspace #d33682 #d33682 #fdf6e3 - } +# Style the UI +client.focused #c792eacc #232635dd #ffffffff #ffffffff #c792eacc +client.unfocused #c792eacc #1c1f2bef #ffffffff #ffffffff #c792eacc - status_command ~/.cargo/bin/i3status-rs ~/dotfiles/sway/status-rust.toml - # tray_output $LAPTOP - tray_output primary +# Set up screen locking +set $lock 'swaylock -f -i ~/.dotfiles/backgrounds/samuel-ferrara-uOi3lg8fGl4-unsplash.jpg -s fill --font "Iosevka ss08" --indicator-idle-visible' +exec swayidle -w \ + timeout 900 $lock \ + timeout 960 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on"' \ + before-sleep $lock - output $LAPTOP - output $EXTERN - font pango:DejaVu Sans Mono, FontAwesome 8 -} +bindsym Ctrl+Shift+L exec $lock +# Window rules +#for_window [title="Firefox — Sharing Indicator"] kill +for_window [title=".* - mpv$"] floating enable, sticky enable -bar { - # position top - colors { - background #323232 - statusline #93b4a6 - focused_workspace #7d9683 #6c71b4 #ede6b3 - active_workspace #fdf6e3 #6c71b4 #ede6b3 - # focused_workspace #7d9683 #6c71c4 #fdf6e3 - # active_workspace #fdf6e3 #6c71c4 #fdf6e3 - inactive_workspace #002b36 #586e75 #002b36 - urgent_workspace #d33682 #d33682 #fdf6e3 - } +# Autostart applications +exec waybar +exec mako --border-radius=2 --font="Iosevka ss08 10" --max-visible=5 --outer-margin=5 --margin=3 --background="#1c1f26" --border-color="#89AAEB" --border-size=1 --default-timeout=7000 +exec nm-applet --indicator +exec udiskie -t +exec gammastep-indicator -l 50.8643:12.1124 -t 6500:3500 -b 1.0:0.7 +exec emacs - status_command i3status --config ~/dotfiles/.i3/status.conf - tray_output $LAPTOP - - # i3blocks: http://kumarcode.com/Colorful-i3/ - # status_command i3blocks -c ~/.i3/i3blocks.conf - output $LAPTOP - output $CENTER - font pango:DejaVu Sans Mono, FontAwesome 8 -} - -# bar { -# # output $CENTER -# output $RIGHT -# status_command i3status --config ~/.i3/status_small.conf -# tray_output $LAPTOP -# } - -# startup programs -exec swaymsg 'exec mako -c /home/fschl/dotfiles/sway/mako.conf' -exec swaymsg 'udiskie' -exec swaymsg 'workspace $WS1; exec firefox;' -exec swaymsg 'workspace $WS2; exec emacs-29.0.50' -exec swaymsg 'workspace $WS3; exec alacritty;' -exec swaymsg 'workspace $WS4; exec thunderbird' -exec swaymsg 'workspace $WS8; exec keepassxc' +# Set GNOME settings (requires "glib:bin" in Guix) +exec gsettings set org.gnome.desktop.interface gtk-theme "Matcha-dark-azul" +exec gsettings set org.gnome.desktop.interface icon-theme "Papirus-Dark" +exec gsettings set org.gnome.desktop.interface font-name "Iosevka Aile 11" +# Update DBUS activation records to ensure Flatpak apps work +exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway \ No newline at end of file