dotfiles/.config/sway/config
2024-12-08 20:05:32 +01:00

364 lines
15 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ------------------------------------------------------------------------------
# Variables
# ------------------------------------------------------------------------------
set $mod Mod4
set $mod2 Mod1
set $color_bg_focused #2F343F
set $color_bg_unfocused #383C4A
set $color_fg_unfocused #D3DAE3
set $color_fg_focused #FFFFFF
set $color_indicator #4DADD4
set $color_warn #F27835
set $color_error #FC4138
set $font_family Roboto
set $font_size 14
set $gtk_font_size 11
set $font $font_family $font_size
set $background $HOME/.local/share/backgrounds/mountain.jpg
# ------------------------------------------------------------------------------
# Device specific include
# ------------------------------------------------------------------------------
# This needs to set the following variables and additionally can override any of the above variables:
# $primary_monitor_identifier - Identifier of the primary monitor
# $primary_monitor_resolution - Resolution for the primary monitor
# $primary_monitor_scale - Scale factor for thr primary monitor
# $secondary_monitor_identifier - Identifier of the primary monitor
# $secondary_monitor_x_offset - X offset for the secondary monitor
include config.local
# ------------------------------------------------------------------------------
# Inputs
# ------------------------------------------------------------------------------
input * {
xkb_layout "de,de,us"
xkb_variant "nodeadkeys,,"
xkb_options grp:shifts_toggle
}
input 9011:26214:ydotoold_virtual_device {
xkb_layout "us"
xkb_variant ""
}
input 9456:311:Metadot_-_Das_Keyboard_Das_Keyboard_Model_S xkb_model "pc105"
input 1386:212:Wacom_Bamboo_Pen_Pen map_to_output $secondary_monitor_identifier
# ------------------------------------------------------------------------------
# Outputs
# ------------------------------------------------------------------------------
output $primary_monitor_identifier pos 0 0 res $primary_monitor_resolution scale $primary_monitor_scale
output $secondary_monitor_identifier pos $secondary_monitor_x_offset $secondary_monitor_y_offset res $secondary_monitor_resolution scale $secondary_monitor_scale
output $tertiary_monitor_identifier pos $tertiary_monitor_x_offset $tertiary_monitor_y_offset res $tertiary_monitor_resolution scale $tertiary_monitor_scale transform 90
output $primary_monitor_identifier bg $primary_monitor_background fill
output $secondary_monitor_identifier bg $secondary_monitor_background fill
output $tertiary_monitor_identifier bg $tertiary_monitor_background fill
bindswitch --reload --locked lid:on output $internal_monitor_identifier disable
bindswitch --reload --locked lid:off output $internal_monitor_identifier enable
# ------------------------------------------------------------------------------
# Font
# ------------------------------------------------------------------------------
font pango:$font
# ------------------------------------------------------------------------------
# Launcher
# ------------------------------------------------------------------------------
bindsym $mod+d exec rofi -show drun
bindsym $mod+x exec rofi -show run
bindsym $mod+o exec rofi-pass
bindsym $mod+p exec rofi-ykman type
# ------------------------------------------------------------------------------
# Window management
# ------------------------------------------------------------------------------
# terminate the active window
bindsym $mod+Shift+q kill
# floating modifier
floating_modifier $mod
# change focus
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+odiaeresis focus right
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
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 up
bindsym $mod+Shift+odiaeresis move right
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
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 toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
bindsym $mod+y focus child
# resize window (you can also use the mouse for that)
mode resize {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym odiaeresis resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape
bindsym Return mode default
bindsym Escape mode default
bindsym $mod+r mode default
}
bindsym $mod+r mode resize
# ------------------------------------------------------------------------------
# Workspaces
# ------------------------------------------------------------------------------
set $workspace1 "1:"
set $workspace2 "2:"
set $workspace3 "3:"
set $workspace4 "4:"
set $workspace5 "5:"
set $workspace6 "6:"
set $workspace7 "7:"
set $workspace8 "8:"
set $workspace9 "9:"
set $workspace10 "10:"
# switch to workspace
bindsym $mod+1 workspace $workspace1
bindsym $mod+2 workspace $workspace2
bindsym $mod+3 workspace $workspace3
bindsym $mod+4 workspace $workspace4
bindsym $mod+5 workspace $workspace5
bindsym $mod+6 workspace $workspace6
bindsym $mod+7 workspace $workspace7
bindsym $mod+8 workspace $workspace8
bindsym $mod+9 workspace $workspace9
bindsym $mod+0 workspace $workspace10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace $workspace1
bindsym $mod+Shift+2 move container to workspace $workspace2
bindsym $mod+Shift+3 move container to workspace $workspace3
bindsym $mod+Shift+4 move container to workspace $workspace4
bindsym $mod+Shift+5 move container to workspace $workspace5
bindsym $mod+Shift+6 move container to workspace $workspace6
bindsym $mod+Shift+7 move container to workspace $workspace7
bindsym $mod+Shift+8 move container to workspace $workspace8
bindsym $mod+Shift+9 move container to workspace $workspace9
bindsym $mod+Shift+0 move container to workspace $workspace10
# move current workspace to output
bindsym $mod+$mod2+Right move workspace to output right
bindsym $mod+$mod2+Left move workspace to output left
bindsym $mod+$mod2+Up move workspace to output up
bindsym $mod+$mod2+Down move workspace to output down
# ------------------------------------------------------------------------------
# sway management
# ------------------------------------------------------------------------------
# reload the configuration file
bindsym $mod+Shift+c reload
# exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec "swaynag -f 'pango:$font' -t warning -m 'sway beenden?' -b 'Ja' 'swaymsg exit'"
# ------------------------------------------------------------------------------
# Program shortcuts
# ------------------------------------------------------------------------------
bindsym $mod+Return exec alacritty
bindsym $mod+c exec chromium
bindsym $mod+b exec librewolf
bindsym $mod+t exec thunderbird
bindsym $mod+g exec code
bindsym $mod+z exec zeditor
bindsym $mod+u exec thunar
# ------------------------------------------------------------------------------
# Audio shortcuts
# ------------------------------------------------------------------------------
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pactl get-default-sink) +1%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pactl get-default-sink) -1%
bindsym Shift+XF86AudioRaiseVolume exec pactl set-source-volume $(pactl get-default-source) +1%
bindsym Shift+XF86AudioLowerVolume exec pactl set-source-volume $(pactl get-default-source) -1%
bindsym XF86AudioMicMute exec $HOME/.local/bin/toggle-default-audio --source
bindsym XF86AudioMute exec $HOME/.local/bin/toggle-default-audio --sink
bindsym $mod+m exec $HOME/.local/bin/toggle-default-audio --source
bindsym $mod+Shift+m exec $HOME/.local/bin/toggle-default-audio --sink
# ------------------------------------------------------------------------------
# Video shortcuts
# ------------------------------------------------------------------------------
bindsym XF86MonBrightnessUp exec xbacklight +5
bindsym XF86MonBrightnessDown exec xbacklight -5
# ------------------------------------------------------------------------------
# Assignment of programs to workspaces
# ------------------------------------------------------------------------------
assign [app_id="^Alacritty$"] $workspace1
assign [class="^code-oss$"] $workspace2
assign [app_id="^code-oss$"] $workspace2
assign [app_id="^dev.zed.Zed$"] $workspace2
assign [class="^VSCodium$"] $workspace2
assign [app_id="^codium$"] $workspace2
assign [class="^jetbrains-idea$"] $workspace2
assign [class="^jetbrains-idea-ce$"] $workspace2
assign [class="^firefox$"] $workspace3
assign [app_id="^firefox$"] $workspace3
assign [app_id="^LibreWolf$"] $workspace3
assign [class="^Thunderbird$"] $workspace4
assign [app_id="^thunderbird$"] $workspace4
assign [app_id="^thunderbird-beta$"] $workspace4
assign [app_id="^thunar$"] $workspace5
assign [class="^Chromium$"] $workspace7
assign [app_id="^chromium$"] $workspace7
assign [class="^Slack$"] $workspace8
assign [app_id="^Slack$"] $workspace8
assign [class="^Element$"] $workspace8
assign [class="^discord$"] $workspace8
assign [class="^Aseprite$"] $workspace9
assign [app_id="^@joplin/app-desktop$"] $workspace9
# ------------------------------------------------------------------------------
# Floating windows
# ------------------------------------------------------------------------------
for_window [app_id="xfce-polkit"] floating enable
for_window [title="^Password Required - Mozilla Thunderbird$"] floating enable
# ------------------------------------------------------------------------------
# Screenshot shortcuts
# ------------------------------------------------------------------------------
bindsym Print exec $HOME/.local/bin/swaygrim --focused-output
bindsym Shift+Print exec $HOME/.local/bin/swaygrim --focused-window
bindsym $mod+Print exec $HOME/.local/bin/swaygrim --output
bindsym $mod+Shift+Print exec $HOME/.local/bin/swaygrim --window
bindsym $mod2+Print exec $HOME/.local/bin/swaygrim --manual
bindsym $mod+$mod2+Print exec $HOME/.local/bin/swaygrim --all
# ------------------------------------------------------------------------------
# Lockscreen
# ------------------------------------------------------------------------------
exec swayidle -w \
timeout 30 'makoctl -a away' \
timeout 300 'swaylock -f' \
timeout 600 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
resume 'makoctl -r away' \
before-sleep 'swaylock -f'
bindsym control+$mod2+l exec swaylock
# ------------------------------------------------------------------------------
# Window theming
# ------------------------------------------------------------------------------
# border background text indicator
client.focused $color_bg_focused $color_bg_focused $color_fg_focused $color_bg_focused
client.focused_inactive $color_bg_unfocused $color_bg_unfocused $color_fg_unfocused $color_bg_unfocused
client.unfocused $color_bg_unfocused $color_bg_unfocused $color_fg_unfocused $color_bg_unfocused
client.urgent $color_bg_unfocused $color_warn $color_fg_focused $color_bg_unfocused
# do not display edge borders
#hide_edge_borders both
# do not display a titlebar in tiled layout
default_border none
# gaps
gaps inner 10
# gaps outer -5
# ------------------------------------------------------------------------------
# Workspace bar
# ------------------------------------------------------------------------------
bar {
swaybar_command waybar
}
# ------------------------------------------------------------------------------
# Applets
# ------------------------------------------------------------------------------
exec nm-applet --indicator
# ------------------------------------------------------------------------------
# Notification daemon
# ------------------------------------------------------------------------------
exec /usr/bin/mako
# ------------------------------------------------------------------------------
# Polkit
# ------------------------------------------------------------------------------
exec /usr/lib/xfce-polkit/xfce-polkit
# ------------------------------------------------------------------------------
# GTK3
# ------------------------------------------------------------------------------
set $gnome-schema org.gnome.desktop.interface
exec_always {
gsettings set $gnome-schema gtk-theme 'Arc-Darker'
gsettings set $gnome-schema icon-theme 'Arc'
gsettings set $gnome-schema cursor-theme 'Adwaita'
gsettings set $gnome-schema font-name '$font_family $gtk_font_size'
}
# ------------------------------------------------------------------------------
# xdg-desktop-portal
# ------------------------------------------------------------------------------
exec $HOME/.local/bin/fix_xdg_desktop_portal_sharing.sh
include /etc/sway/config.d/50-systemd-user.conf
# ------------------------------------------------------------------------------
# Clipboard Manager
# ------------------------------------------------------------------------------
exec wl-paste --type text --watch cliphist store
exec wl-paste --type image --watch cliphist store
bindsym $mod+Shift+v exec cliphist list | rofi -dmenu | cliphist decode | wl-copy