diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
index 262b011..f5d371f 100644
--- a/.config/dunst/dunstrc
+++ b/.config/dunst/dunstrc
@@ -6,7 +6,7 @@
history_length = 100
corner_radius = 5
ignore_dbusclose = true
- timeout = 30
+ timeout = 0
background = "#333333"
frame_color = "#009900"
diff --git a/.config/i3/config b/.config/i3/config
deleted file mode 100644
index 679f9db..0000000
--- a/.config/i3/config
+++ /dev/null
@@ -1,201 +0,0 @@
-set $mod Mod4
-
-font pango:monospace 8
-
-# poweroff stuff
-set $mode_system System: (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
-mode "$mode_system" {
- bindsym l exec --no-startup-id i3exit lock, mode "default"
- bindsym e exec --no-startup-id i3exit logout, mode "default"
- bindsym s exec --no-startup-id i3exit suspend, mode "default"
- bindsym h exec --no-startup-id i3exit hibernate, mode "default"
- bindsym r exec --no-startup-id i3exit reboot, mode "default"
- bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
-
- bindsym Return mode "default"
- bindsym Escape mode "default"
-}
-bindsym $mod+Pause mode "$mode_system"
-
-# Use Mouse+$mod to drag floating windows to their wanted position
-floating_modifier $mod
-
-# start a terminal
-bindsym $mod+Return exec i3-sensible-terminal
-
-# start emacs
-bindsym $mod+Shift+Return exec i3-sensible-editor
-
-# take screenshot
-bindsym $mod+Print exec scrot ~/tmp/screenshots/'%Y-%m-%d_%H:%M:%S_$wx$h.png'
-
-# lock screen
-bindsym $mod+Shift+l exec fuzzy-i3lock
-
-# kill focused window
-bindsym $mod+Shift+q kill
-
-# start dmenu (a program launcher)
-bindsym $mod+d exec --no-startup-id dmenu_run
-
-# toggle i3bar
-bindsym $mod+m bar hidden_state toggle
-
-# change focus
-bindsym $mod+b focus left
-bindsym $mod+n focus down
-bindsym $mod+p focus up
-bindsym $mod+f 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+b move left 25 px
-bindsym $mod+Shift+n move down 25 px
-bindsym $mod+Shift+p move up 25 px
-bindsym $mod+Shift+f move right 25 px
-
-bindsym $mod+Shift+Left move left 25 px
-bindsym $mod+Shift+Down move down 25 px
-bindsym $mod+Shift+Up move up 25 px
-bindsym $mod+Shift+Right move right 25 px
-
-# 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+c 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+q focus child
-
-# 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
-
-# set input keyboard to us english
-bindsym $mod+Control+e exec "ibus engine xkb:us::eng"
-
-# set input keyboard to Chỡ Quố Ngữ (vietnamese)
-bindsym $mod+Control+v exec "ibus engine Unikey"
-
-# 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'"
-
-# media keys
-set $refresh_i3status killall -SIGUSR1 i3status-rs
-bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
-bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
-bindsym $mod+XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1% && $refresh_i3status
-bindsym $mod+XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1% && $refresh_i3status
-bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
-bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
-bindsym XF86AudioNext exec --no-startup-id mpc next
-bindsym XF86AudioPlay exec --no-startup-id mpc toggle
-bindsym XF86AudioPrev exec --no-startup-id mpc prev
-bindsym XF86AudioStop exec --no-startup-id mpc stop
-
-# dunst control
-bindsym $mod+comma exec dunstctl close
-bindsym $mod+Shift+comma exec dunstctl close-all
-bindsym $mod+period exec dunstctl history-pop
-
-# open login screen on another vt (virtual terminal)
-bindsym $mod+Shift+XF86HomePage exec "dm-tool switch-to-greeter"
-
-# resize window (you can also use the mouse for that)
-mode "resize" {
- # These bindings trigger as soon as you enter the resize mode
- bindsym Right resize shrink width 10 px or 10 ppt
- bindsym Up resize grow height 10 px or 10 ppt
- bindsym Down resize shrink height 10 px or 10 ppt
- bindsym Left resize grow width 10 px or 10 ppt
-
- bindsym $mod+f resize grow width 10 px or 10 ppt
- bindsym $mod+n resize shrink height 10 px or 10 ppt
- bindsym $mod+p resize grow height 10 px or 10 ppt
- bindsym $mod+b resize shrink 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"
-
-# constraining floating window size
-# floating_minimum_size 75 x 50
-floating_maximum_size -1 x -1
-
-# colors & style
-new_window normal 1
-new_float normal 1
-client.focused #000000 #009900 #ffffff #ff0000
-client.unfocused #000000 #005500 #000000 #ff0000
-
-# use variables for screens
-set $screen0 "DP-1"
-set $screen1 "HDMI-2"
-
-# Start i3bar to display a workspace bar (plus the system information
-# i3status-rust finds out, if available)
-bar {
- status_command i3status-rs
- font pango:NotoSansMono-Regular, forkawesome 8
- position top
- tray_output primary
- workspace_buttons yes
- mode dock
- modifier $mod
- output $screen0
-
- colors {
- statusline #00ff00
- focused_workspace #00cc00 #00ff00 #000000
- inactive_workspace #00cc00 #008b00 #cccccc
- #client.orientation #ff0000
- }
-}
-
-bar {
- status_command i3status-rs ~/.config/i3status-rust/secondary.toml
- font pango:NotoSansMono-Regular, forkawesome 8
- position top
- tray_output primary
- workspace_buttons yes
- mode dock
- modifier $mod
- output $screen1
-
- colors {
- statusline #00ff00
- focused_workspace #00cc00 #00ff00 #000000
- inactive_workspace #00cc00 #008b00 #cccccc
- #client.orientation #ff0000
- }
-}
-
-include ~/.config/i3/config.d/*.conf
diff --git a/.config/i3/config.d/workspaces.conf b/.config/i3/config.d/workspaces.conf
deleted file mode 100644
index a0cd82a..0000000
--- a/.config/i3/config.d/workspaces.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-# create workspace names
-set $ws0 "0"
-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"
-
-# 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 $ws6
-bindsym $mod+7 workspace $ws7
-bindsym $mod+8 workspace $ws8
-bindsym $mod+9 workspace $ws9
-bindsym $mod+0 workspace $ws10
-bindsym $mod+minus workspace $ws11
-bindsym $mod+equal workspace $ws12
-
-# 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 $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 $ws10
-bindsym $mod+Shift+underscore move container to workspace $ws11
-bindsym $mod+Shift+plus move container to workspace $ws12
-
-# put workspaces on fixed screens
-workspace $ws0 output $screen0
-workspace $ws1 output $screen0
-workspace $ws2 output $screen0
-workspace $ws3 output $screen0
-workspace $ws4 output $screen0
-workspace $ws5 output $screen0
-workspace $ws6 output $screen1
-workspace $ws7 output $screen1
-workspace $ws8 output $screen1
-workspace $ws9 output $screen1
-workspace $ws10 output $screen1
-workspace $ws11 output $screen1
-workspace $ws12 output $screen1
diff --git a/.config/i3status-rust/config.toml b/.config/i3status-rust/config.toml
index fd1e336..d07d1fd 100644
--- a/.config/i3status-rust/config.toml
+++ b/.config/i3status-rust/config.toml
@@ -1,5 +1,5 @@
[icons]
-icons = "awesome"
+icons = "awesome6"
[theme]
theme = "solarized-dark"
@@ -11,90 +11,94 @@ separator = "|"
separator_fg = "#00cc00"
separator_bg = "#222222"
-[[block]]
-block = "maildir"
-interval = 15
-inboxes = ["/home/finga/mail/onders.org/Inbox", "/home/finga/mail/chaostreff.at/Inbox"]
-display_type = "new"
-
[[block]]
block = "weather"
-format = "$weather $temp, $humidity, $wind m/s $direction"
service = { name = "openweathermap", api_key = "8271cc3c23dbae82eda2123c55c050be", city_id = "2766824", units = "metric" }
+format = " $icon $weather $temp, $humidity, $wind m/s $direction "
[[block]]
block = "sound"
+driver = "pulseaudio"
[[block]]
-block = "music"
-format = "$combo.rot-str(30) $play"
-player = "mpd"
+block = "net"
+device = "enp9s0"
+format = " $icon $ip $graph_down $speed_down^icon_net_down $graph_up $speed_up^icon_net_up "
[[block]]
block = "net"
device = "enp0s31f6"
-format = "$ip $graph_down $speed_down $graph_up $speed_up"
+format = " $icon $ip $graph_down $speed_down^icon_net_down $graph_up $speed_up^icon_net_up "
-# [[block]]
-# block = "disk_space"
-# path = "/"
-# info_type = "used"
-# format = "{path} {percentage}"
+[[block]]
+block = "disk_space"
+path = "/"
+warning = 80.0
+alert = 90.0
+info_type = "used"
+format = " $icon $path $percentage "
-# [[block]]
-# block = "disk_space"
-# path = "/home"
-# info_type = "used"
-# format = "{path} {percentage}"
+[[block]]
+block = "disk_space"
+path = "/boot"
+warning = 70.0
+alert = 85.0
+info_type = "used"
+format = " $icon $path $percentage "
-# [[block]]
-# block = "disk_space"
-# path = "/var"
-# info_type = "used"
-# warning = 20.0
-# format = "{path} {percentage}"
+[[block]]
+block = "disk_space"
+path = "/home"
+warning = 75.0
+alert = 90.0
+info_type = "used"
+format = " $icon $path $percentage "
-# [[block]]
-# block = "disk_space"
-# path = "/tmp"
-# info_type = "used"
-# format = "{path} {percentage}"
+[[block]]
+block = "disk_space"
+path = "/tmp"
+warning = 70.0
+alert = 80.0
+info_type = "used"
+format = " $icon $path $percentage "
+
+[[block]]
+block = "disk_space"
+path = "/var"
+warning = 70.0
+alert = 80.0
+info_type = "used"
+format = " $icon $path $percentage "
[[block]]
block = "memory"
-display_type = "memory"
-format_mem = "$mem_total_used_percents.eng(3)"
-clickable = false
+format = " $icon $mem_used_percents.eng(w:3) "
[[block]]
block = "memory"
-display_type = "swap"
-format_swap = "$swap_used_percents.eng(3)"
-clickable = false
+format = " $icon_swap $swap_used_percents.eng(w:3) "
[[block]]
block = "cpu"
interval = 1
-format = "$barchart $utilization $frequency.eng(4)"
+format = " $icon $barchart $utilization $frequency.eng(w:4) "
[[block]]
block = "temperature"
-collapsed = false
-format = "$min min, $max max, $average avg"
-chip = "*-isa-*"
+format = " $icon $min min, $max max, $average avg "
[[block]]
block = "load"
-format = "$1m.eng(4) $5m.eng(4) $15m.eng(4)"
+format = " $icon $1m.eng(w:4) $5m.eng(w:4) $15m.eng(w:4) "
[[block]]
block = "time"
interval = 1
-format = "%F (%Z) %T"
+format = " $icon $timestamp.datetime(f:'%F (%Z) %T') "
timezone = "Europe/Vienna"
[[block]]
block = "time"
interval = 1
-format = "(%Z) %T"
+format = " $icon $timestamp.datetime(f:'(%Z) %T') "
timezone = "Etc/UTC"
diff --git a/.config/i3status-rust/secondary.toml b/.config/i3status-rust/secondary.toml
index 88569de..412297d 100644
--- a/.config/i3status-rust/secondary.toml
+++ b/.config/i3status-rust/secondary.toml
@@ -1,5 +1,5 @@
[icons]
-icons = "awesome"
+icons = "awesome4"
[theme]
theme = "solarized-dark"
@@ -13,45 +13,40 @@ separator_bg = "#222222"
[[block]]
block = "sound"
+driver = "pulseaudio"
[[block]]
block = "uptime"
[[block]]
block = "memory"
-display_type = "memory"
-format_mem = "$mem_total_used_percents.eng(3)"
-clickable = false
+format = " $icon $mem_used_percents.eng(w:3) "
[[block]]
block = "memory"
-display_type = "swap"
-format_swap = "$swap_used_percents.eng(3)"
-clickable = false
+format = " $icon_swap $swap_used_percents.eng(w:3) "
[[block]]
block = "cpu"
interval = 1
-format = "$barchart $utilization"
+format = " $icon $barchart $utilization $frequency.eng(w:4) "
[[block]]
block = "temperature"
-collapsed = false
-format = "$min min, $max max, $average avg"
-chip = "*-isa-*"
+format = " $icon $min min, $max max, $average avg "
[[block]]
block = "load"
-format = "$1m.eng(4) $5m.eng(4) $15m.eng(4)"
+format = " $icon $1m.eng(w:4) $5m.eng(w:4) $15m.eng(w:4) "
[[block]]
block = "time"
interval = 1
-format = "%Y-%m-%d %a (%Z) %H:%M:%S"
+format = " $icon $timestamp.datetime(f:'%F (%Z) %T') "
timezone = "Europe/Vienna"
[[block]]
block = "time"
interval = 1
-format = "(%Z) %H:%M:%S"
+format = " $icon $timestamp.datetime(f:'(%Z) %T') "
timezone = "Etc/UTC"
diff --git a/.config/sway/config b/.config/sway/config
new file mode 100644
index 0000000..11cf6fe
--- /dev/null
+++ b/.config/sway/config
@@ -0,0 +1,178 @@
+# Basic keys
+set $mod Mod4
+set $left b
+set $down n
+set $up p
+set $right f
+
+# Program variables
+set $term alacritty
+set $editor em
+set $menu wmenu-run -i -M "#222222" -s "#00FF00" -S "#333333"
+set $screenshot grim
+
+# use mouse + $mod to drag floating windows to their wanted position
+floating_modifier $mod normal
+
+# start a terminal
+bindsym $mod+Return exec $term
+
+# start emacs
+bindsym $mod+Shift+Return exec $editor
+
+# take screenshot
+bindsym $mod+Print exec $screenshot
+
+# kill focused window
+bindsym $mod+Shift+q kill
+
+# start launcher
+bindsym $mod+d exec $menu
+
+# reload config
+bindsym $mod+Shift+r reload
+
+# split in horizontal orientation
+bindsym $mod+h splith
+
+# split in vertical orientation
+bindsym $mod+v splitv
+
+# toggle fullscreen mode
+bindsym $mod+c 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+space focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# focus the child container
+bindsym $mod+q focus child
+
+# exit sway
+bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
+
+#
+# Scratchpad:
+#
+# Sway has a "scratchpad", which is a bag of holding for windows.
+# You can send windows there and get them back later.
+
+# Move the currently focused window to the scratchpad
+bindsym $mod+Shift+minus 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 $mod+minus scratchpad show
+
+#
+# Moving around:
+#
+# 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]
+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
+
+#
+# Resizing containers:
+#
+mode "resize" {
+ bindsym Right resize shrink width 10 px or 10 ppt
+ bindsym Up resize grow height 10 px or 10 ppt
+ bindsym Down resize shrink height 10 px or 10 ppt
+ bindsym Left resize grow width 10 px or 10 ppt
+
+ bindsym $mod+$right resize grow width 10 px or 10 ppt
+ bindsym $mod+$down resize shrink height 10 px or 10 ppt
+ bindsym $mod+$up resize grow height 10 px or 10 ppt
+ bindsym $mod+$left resize shrink width 10 px or 10 ppt
+
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+ bindsym $mod+r mode "default"
+}
+
+# resize container
+bindsym $mod+r mode "resize"
+
+# constraining floating window size
+floating_maximum_size -1 x -1
+
+# border style
+default_border normal 1
+
+# floating border style
+default_floating_border normal 1
+
+# colors
+client.focused #000000 #009900 #ffffff #ff0000
+client.unfocused #000000 #005500 #000000 #ff0000
+
+# titlebar style
+titlebar_padding 5 2
+
+# use variables for screens
+set $screen0 "DP-1"
+set $screen1 "HDMI-A-2"
+
+bar {
+ status_command i3status-rs
+ font pango:NotoSansMono-Regular, forkawesome 8
+ position top
+ tray_output primary
+ workspace_buttons yes
+ mode dock
+ modifier $mod
+ output $screen0
+
+ colors {
+ statusline #00ff00
+ focused_workspace #00cc00 #00ff00 #000000
+ inactive_workspace #00cc00 #008b00 #cccccc
+ }
+}
+
+bar {
+ status_command i3status-rs ~/.config/i3status-rust/secondary.toml
+ font pango:NotoSansMono-Regular, forkawesome 8
+ position top
+ tray_output primary
+ workspace_buttons yes
+ mode dock
+ modifier $mod
+ output $screen1
+
+ colors {
+ statusline #00ff00
+ focused_workspace #00cc00 #00ff00 #000000
+ inactive_workspace #00cc00 #008b00 #cccccc
+ }
+}
+
+include /etc/sway/config.d/*
+include /$HOME/.config/sway/config.d/*
diff --git a/.config/sway/config.d/00-rotate.conf b/.config/sway/config.d/00-rotate.conf
new file mode 100644
index 0000000..318a7cf
--- /dev/null
+++ b/.config/sway/config.d/00-rotate.conf
@@ -0,0 +1,2 @@
+output DP-1 pos 0 0
+output HDMI-A-2 pos 1920 -380 transform 270
diff --git a/.config/sway/config.d/10-workspaces.conf b/.config/sway/config.d/10-workspaces.conf
new file mode 100644
index 0000000..4560d67
--- /dev/null
+++ b/.config/sway/config.d/10-workspaces.conf
@@ -0,0 +1,46 @@
+#
+# Workspace setup
+#
+set $ws0 "0"
+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"
+
+# Switch to workspace
+bindsym $mod+grave workspace number $ws0
+bindsym $mod+1 workspace number $ws1
+bindsym $mod+2 workspace number $ws2
+bindsym $mod+3 workspace number $ws3
+bindsym $mod+4 workspace number $ws4
+bindsym $mod+5 workspace number $ws5
+bindsym $mod+6 workspace number $ws6
+bindsym $mod+7 workspace number $ws7
+bindsym $mod+8 workspace number $ws8
+bindsym $mod+9 workspace number $ws9
+bindsym $mod+0 workspace number $ws10
+bindsym $mod+minus workspace number $ws11
+bindsym $mod+equal workspace number $ws12
+
+# Move focused container to workspace
+bindsym $mod+Shift+grave move container to workspace number $ws0
+bindsym $mod+Shift+1 move container to workspace number $ws1
+bindsym $mod+Shift+2 move container to workspace number $ws2
+bindsym $mod+Shift+3 move container to workspace number $ws3
+bindsym $mod+Shift+4 move container to workspace number $ws4
+bindsym $mod+Shift+5 move container to workspace number $ws5
+bindsym $mod+Shift+6 move container to workspace number $ws6
+bindsym $mod+Shift+7 move container to workspace number $ws7
+bindsym $mod+Shift+8 move container to workspace number $ws8
+bindsym $mod+Shift+9 move container to workspace number $ws9
+bindsym $mod+Shift+0 move container to workspace number $ws10
+bindsym $mod+Shift+underscore move container to workspace number $ws11
+bindsym $mod+Shift+plus move container to workspace number $ws12
diff --git a/.config/sway/config.d/20-screenlock.conf b/.config/sway/config.d/20-screenlock.conf
new file mode 100644
index 0000000..019985c
--- /dev/null
+++ b/.config/sway/config.d/20-screenlock.conf
@@ -0,0 +1,3 @@
+# screenlock
+set $lock fuzzy-swaylock 37c3
+bindsym $mod+Shift+l exec $lock
diff --git a/.config/sway/config.d/30-dunst.conf b/.config/sway/config.d/30-dunst.conf
new file mode 100644
index 0000000..f95ae4d
--- /dev/null
+++ b/.config/sway/config.d/30-dunst.conf
@@ -0,0 +1,4 @@
+# dunst control
+bindsym $mod+comma exec dunstctl close
+bindsym $mod+Shift+comma exec dunstctl close-all
+bindsym $mod+period exec dunstctl history-pop
diff --git a/.config/sway/config.d/50-systemd-user.conf b/.config/sway/config.d/50-systemd-user.conf
new file mode 100644
index 0000000..8781db9
--- /dev/null
+++ b/.config/sway/config.d/50-systemd-user.conf
@@ -0,0 +1,16 @@
+# sway does not set DISPLAY/WAYLAND_DISPLAY in the systemd user environment
+# See FS#63021
+# Adapted from xorg's 50-systemd-user.sh, which achieves a similar goal.
+
+# Upstream refuses to set XDG_CURRENT_DESKTOP so we have to.
+exec systemctl --user set-environment XDG_CURRENT_DESKTOP=sway
+exec systemctl --user import-environment DISPLAY \
+ SWAYSOCK \
+ WAYLAND_DISPLAY \
+ XDG_CURRENT_DESKTOP
+
+exec hash dbus-update-activation-environment 2>/dev/null && \
+ dbus-update-activation-environment --systemd DISPLAY \
+ SWAYSOCK \
+ XDG_CURRENT_DESKTOP=sway \
+ WAYLAND_DISPLAY
diff --git a/.config/sway/config.d/60-media.conf b/.config/sway/config.d/60-media.conf
new file mode 100644
index 0000000..02cd8f0
--- /dev/null
+++ b/.config/sway/config.d/60-media.conf
@@ -0,0 +1,12 @@
+# media keys
+set $refresh_i3status killall -SIGUSR1 i3status-rs
+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
+bindsym $mod+XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1% && $refresh_i3status
+bindsym $mod+XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1% && $refresh_i3status
+bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
+bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
+bindsym XF86AudioNext exec --no-startup-id mpc next
+bindsym XF86AudioPlay exec --no-startup-id mpc toggle
+bindsym XF86AudioPrev exec --no-startup-id mpc prev
+bindsym XF86AudioStop exec --no-startup-id mpc stop
diff --git a/.gitignore.d/i3 b/.gitignore.d/i3
deleted file mode 100644
index 41822eb..0000000
--- a/.gitignore.d/i3
+++ /dev/null
@@ -1,8 +0,0 @@
-*
-!/.config/dunst/dunstrc
-!/.config/i3/config
-!/.config/i3status-rust/config.toml
-!/.config/i3status-rust/secondary.toml
-!/.gitignore.d/i3
-!/.local/bin/fuzzy-i3lock
-!/.local/bin/i3-run
diff --git a/.gitignore.d/sway b/.gitignore.d/sway
new file mode 100644
index 0000000..bd33188
--- /dev/null
+++ b/.gitignore.d/sway
@@ -0,0 +1,22 @@
+*
+!/.config
+!/.config/dunst
+!/.config/dunst/dunstrc
+!/.config/i3status-rust
+!/.config/i3status-rust/config.toml
+!/.config/i3status-rust/secondary.toml
+!/.config/sway
+!/.config/sway/config
+!/.config/sway/config.d
+!/.config/sway/config.d/00-rotate.conf
+!/.config/sway/config.d/10-workspaces.conf
+!/.config/sway/config.d/20-screenlock.conf
+!/.config/sway/config.d/30-dunst.conf
+!/.config/sway/config.d/50-systemd-user.conf
+!/.config/sway/config.d/60-media.conf
+!/.gitignore.d
+!/.gitignore.d/sway
+!/.local
+!/.local/bin
+!/.local/bin/fuzzy-swaylock
+!/.local/bin/i3-run
diff --git a/.local/bin/fuzzy-i3lock b/.local/bin/fuzzy-i3lock
deleted file mode 100755
index ef62c6b..0000000
--- a/.local/bin/fuzzy-i3lock
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh -e
-#
-# Show a pixelated screenshot as background image of i3lock
-#
-# See
-# Copied from
-#
-
-screenshot="${TMPDIR:-/tmp}/fuzzy-i3lock.png"
-
-scrot -o "$screenshot"
-mogrify -scale 10% -scale 1000% "$screenshot"
-exec i3lock -i "$screenshot"
diff --git a/.local/bin/fuzzy-swaylock b/.local/bin/fuzzy-swaylock
new file mode 100755
index 0000000..358230d
--- /dev/null
+++ b/.local/bin/fuzzy-swaylock
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+#
+# Show a pixelated screenshot as background image of i3lock
+#
+# See
+# Copied from
+#
+
+screenshot="${TMPDIR:-/tmp}/fuzzy-swaylock.png"
+
+grim "$screenshot"
+
+case $1 in
+ "37c3") mogrify -scale 10% -scale 500% -dither FloydSteinberg -colors 32 -scale 200% "$screenshot"
+ ;;
+ *) mogrify -scale 10% -scale 1000% "$screenshot"
+ ;;
+esac
+
+exec swaylock -i "$screenshot"