diff --git a/.gitignore b/.gitignore
index 2528399..92ed52b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
+# Ignore everything by default
/*
!.gitignore
!README.md
+*.log
!/assets/
@@ -13,10 +15,9 @@
!/kitty/
!/helix/
+# tree sitter cache
/helix/runtime/
-!/btop/
-
!/fish/
-
-*.log
+!/river/
+!/waybar/
diff --git a/btop/btop.conf b/btop/btop.conf
deleted file mode 100644
index db82a10..0000000
--- a/btop/btop.conf
+++ /dev/null
@@ -1,248 +0,0 @@
-#? Config file for btop v. 1.3.2
-
-#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
-#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
-color_theme = "/usr/share/btop/themes/ayu.theme"
-
-#* If the theme set background should be shown, set to False if you want terminal background transparency.
-theme_background = False
-
-#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
-truecolor = True
-
-#* Set to true to force tty mode regardless if a real tty has been detected or not.
-#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
-force_tty = False
-
-#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
-#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
-#* Use whitespace " " as separator between different presets.
-#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
-presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
-
-#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
-#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
-vim_keys = False
-
-#* Rounded corners on boxes, is ignored if TTY mode is ON.
-rounded_corners = True
-
-#* Default symbols to use for graph creation, "braille", "block" or "tty".
-#* "braille" offers the highest resolution but might not be included in all fonts.
-#* "block" has half the resolution of braille but uses more common characters.
-#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
-#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
-graph_symbol = "braille"
-
-# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
-graph_symbol_cpu = "default"
-
-# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
-graph_symbol_gpu = "default"
-
-# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
-graph_symbol_mem = "default"
-
-# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
-graph_symbol_net = "default"
-
-# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
-graph_symbol_proc = "default"
-
-#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
-shown_boxes = "mem net proc cpu"
-
-#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
-update_ms = 500
-
-#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
-#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
-proc_sorting = "cpu lazy"
-
-#* Reverse sorting order, True or False.
-proc_reversed = False
-
-#* Show processes as a tree.
-proc_tree = False
-
-#* Use the cpu graph colors in the process list.
-proc_colors = True
-
-#* Use a darkening gradient in the process list.
-proc_gradient = True
-
-#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
-proc_per_core = True
-
-#* Show process memory as bytes instead of percent.
-proc_mem_bytes = True
-
-#* Show cpu graph for each process.
-proc_cpu_graphs = True
-
-#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
-proc_info_smaps = False
-
-#* Show proc box on left side of screen instead of right.
-proc_left = False
-
-#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
-proc_filter_kernel = False
-
-#* In tree-view, always accumulate child process resources in the parent process.
-proc_aggregate = False
-
-#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
-#* Select from a list of detected attributes from the options menu.
-cpu_graph_upper = "total"
-
-#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
-#* Select from a list of detected attributes from the options menu.
-cpu_graph_lower = "total"
-
-#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
-show_gpu_info = "Auto"
-
-#* Toggles if the lower CPU graph should be inverted.
-cpu_invert_lower = True
-
-#* Set to True to completely disable the lower CPU graph.
-cpu_single_graph = False
-
-#* Show cpu box at bottom of screen instead of top.
-cpu_bottom = False
-
-#* Shows the system uptime in the CPU box.
-show_uptime = True
-
-#* Show cpu temperature.
-check_temp = True
-
-#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
-cpu_sensor = "Auto"
-
-#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
-show_coretemp = True
-
-#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
-#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
-#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
-#* Example: "4:0 5:1 6:3"
-cpu_core_map = ""
-
-#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
-temp_scale = "celsius"
-
-#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
-base_10_sizes = False
-
-#* Show CPU frequency.
-show_cpu_freq = True
-
-#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
-#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
-clock_format = "%X"
-
-#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
-background_update = True
-
-#* Custom cpu model name, empty string to disable.
-custom_cpu_name = ""
-
-#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
-#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
-disks_filter = ""
-
-#* Show graphs instead of meters for memory values.
-mem_graphs = True
-
-#* Show mem box below net box instead of above.
-mem_below_net = False
-
-#* Count ZFS ARC in cached and available memory.
-zfs_arc_cached = True
-
-#* If swap memory should be shown in memory box.
-show_swap = True
-
-#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
-swap_disk = True
-
-#* If mem box should be split to also show disks info.
-show_disks = True
-
-#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
-only_physical = True
-
-#* Read disks list from /etc/fstab. This also disables only_physical.
-use_fstab = True
-
-#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
-zfs_hide_datasets = False
-
-#* Set to true to show available disk space for privileged users.
-disk_free_priv = False
-
-#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
-show_io_stat = True
-
-#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
-io_mode = False
-
-#* Set to True to show combined read/write io graphs in io mode.
-io_graph_combined = False
-
-#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
-#* Example: "/mnt/media:100 /:20 /boot:1".
-io_graph_speeds = ""
-
-#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
-net_download = 100
-
-net_upload = 100
-
-#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
-net_auto = False
-
-#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
-net_sync = True
-
-#* Starts with the Network Interface specified here.
-net_iface = ""
-
-#* Show battery stats in top right if battery is present.
-show_battery = True
-
-#* Which battery to use if multiple are present. "Auto" for auto detection.
-selected_battery = "Auto"
-
-#* Show power stats of battery next to charge indicator.
-show_battery_watts = True
-
-#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
-#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
-log_level = "WARNING"
-
-#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
-nvml_measure_pcie_speeds = True
-
-#* Horizontally mirror the GPU graph.
-gpu_mirror_graph = True
-
-#* Custom gpu0 model name, empty string to disable.
-custom_gpu_name0 = "RTX 4070"
-
-#* Custom gpu1 model name, empty string to disable.
-custom_gpu_name1 = ""
-
-#* Custom gpu2 model name, empty string to disable.
-custom_gpu_name2 = ""
-
-#* Custom gpu3 model name, empty string to disable.
-custom_gpu_name3 = ""
-
-#* Custom gpu4 model name, empty string to disable.
-custom_gpu_name4 = ""
-
-#* Custom gpu5 model name, empty string to disable.
-custom_gpu_name5 = ""
diff --git a/fish/config.fish b/fish/config.fish
index c1f1ac3..c1e7a66 100644
--- a/fish/config.fish
+++ b/fish/config.fish
@@ -1,5 +1,7 @@
+set fish_greeting
+
if status is-interactive
# Commands to run in interactive sessions can go here
end
-export PATH="$PATH:/home/marvin/bin/010editor_data:$HOME/opt/cross/bin/:$HOME/.cargo/bin/"
+set PATH "$PATH:$HOME/.local/bin:$HOME/.cargo/bin/"
diff --git a/fish/fish_variables b/fish/fish_variables
index 1a82b8a..ad10b9b 100644
--- a/fish/fish_variables
+++ b/fish/fish_variables
@@ -1,31 +1,3 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
-SETUVAR __fish_initialized:3400
-SETUVAR fish_color_autosuggestion:555\x1ebrblack
-SETUVAR fish_color_cancel:\x2dr
-SETUVAR fish_color_command:blue
-SETUVAR fish_color_comment:red
-SETUVAR fish_color_cwd:green
-SETUVAR fish_color_cwd_root:red
-SETUVAR fish_color_end:green
-SETUVAR fish_color_error:brred
-SETUVAR fish_color_escape:brcyan
-SETUVAR fish_color_history_current:\x2d\x2dbold
-SETUVAR fish_color_host:normal
-SETUVAR fish_color_host_remote:yellow
-SETUVAR fish_color_normal:normal
-SETUVAR fish_color_operator:brcyan
-SETUVAR fish_color_param:cyan
-SETUVAR fish_color_quote:yellow
-SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
-SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
-SETUVAR fish_color_status:red
-SETUVAR fish_color_user:brgreen
-SETUVAR fish_color_valid_path:\x2d\x2dunderline
-SETUVAR fish_key_bindings:fish_default_key_bindings
-SETUVAR fish_pager_color_completion:normal
-SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di
-SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
-SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
-SETUVAR fish_pager_color_selected_background:\x2dr
+SETUVAR __fish_initialized:4300
diff --git a/gtk-3.0/bookmarks b/gtk-3.0/bookmarks
index 7792b20..12239ee 100644
--- a/gtk-3.0/bookmarks
+++ b/gtk-3.0/bookmarks
@@ -1,4 +1,5 @@
file:///home/marvin/Documents
+file:///home/marvin/Music
+file:///home/marvin/Pictures
+file:///home/marvin/Videos
file:///home/marvin/Downloads
-file:///home/marvin/repos
-smb://192.168.178.146/
diff --git a/gtk-3.0/settings.ini b/gtk-3.0/settings.ini
index 324be04..7c6461a 100644
--- a/gtk-3.0/settings.ini
+++ b/gtk-3.0/settings.ini
@@ -1,16 +1,2 @@
[Settings]
gtk-application-prefer-dark-theme=0
-gtk-button-images=true
-gtk-cursor-theme-name=Breeze_Light
-gtk-cursor-theme-size=24
-gtk-decoration-layout=icon:minimize,maximize,close
-gtk-enable-animations=true
-gtk-font-name=Nimbus Sans L [urw], 11
-gtk-icon-theme-name=Tela
-gtk-menu-images=true
-gtk-modules=colorreload-gtk-module:window-decorations-gtk-module
-gtk-primary-button-warps-slider=true
-gtk-sound-theme-name=ocean
-gtk-theme-name=Breeze
-gtk-toolbar-style=3
-gtk-xft-dpi=98304
diff --git a/gtk-4.0/settings.ini b/gtk-4.0/settings.ini
index 5f979e4..7c6461a 100644
--- a/gtk-4.0/settings.ini
+++ b/gtk-4.0/settings.ini
@@ -1,12 +1,2 @@
[Settings]
gtk-application-prefer-dark-theme=0
-gtk-cursor-theme-name=Breeze_Light
-gtk-cursor-theme-size=24
-gtk-decoration-layout=icon:minimize,maximize,close
-gtk-enable-animations=true
-gtk-font-name=Nimbus Sans L [urw], 11
-gtk-icon-theme-name=Tela
-gtk-modules=colorreload-gtk-module:window-decorations-gtk-module
-gtk-primary-button-warps-slider=true
-gtk-sound-theme-name=ocean
-gtk-xft-dpi=98304
diff --git a/helix/config.toml b/helix/config.toml
index 9a2b985..880438d 100644
--- a/helix/config.toml
+++ b/helix/config.toml
@@ -2,3 +2,8 @@ theme = "dark_plus"
[editor.lsp]
display-inlay-hints = true
+
+[keys.normal]
+# Move lines up and down
+A-up = ["extend_to_line_bounds", "delete_selection", "move_line_up", "paste_before"]
+A-down = ["extend_to_line_bounds", "delete_selection", "paste_after"]
diff --git a/kitty/kitty.conf b/kitty/kitty.conf
index 9abcbc4..6eb3f7b 100644
--- a/kitty/kitty.conf
+++ b/kitty/kitty.conf
@@ -1,11 +1,14 @@
-font_family MartianMono Nerd Font
-bold_font auto
-italic_font auto
-bold_italic_font auto
+cursor_shape beam
+scrollback_lines 4000
+background_opacity 0.70
+shell /usr/bin/fish
+background #000000
+window_margin_width 5
-cursor_shape beam
-scrollback_lines 4000
-background_opacity 0.91
-shell /usr/bin/fish
-hide_window_decorations yes
-background #1C2430
\ No newline at end of file
+# BEGIN_KITTY_FONTS
+font_family Cascadia Code
+bold_font auto
+italic_font auto
+bold_italic_font auto
+disable_ligatures always
+# END_KITTY_FONTS
diff --git a/kitty/kitty.conf.bak b/kitty/kitty.conf.bak
new file mode 100644
index 0000000..597cd9b
--- /dev/null
+++ b/kitty/kitty.conf.bak
@@ -0,0 +1,11 @@
+font_family Cascadia Code Mono
+bold_font auto
+italic_font auto
+bold_italic_font auto
+
+cursor_shape beam
+scrollback_lines 4000
+background_opacity 0.91
+shell /usr/bin/fish
+hide_window_decorations yes
+background #1C2430
diff --git a/river/init b/river/init
new file mode 100755
index 0000000..502a201
--- /dev/null
+++ b/river/init
@@ -0,0 +1,151 @@
+#!/bin/sh
+
+# Keyboard
+riverctl keyboard-layout "de(e2)"
+# Top bar
+riverctl spawn waybar
+# Background
+riverctl spawn "swaybg --mode fill --image ~/.config/assets/clouds.jpg"
+# Change scroll direction for everything but the touchpad
+riverctl input "*" natural-scroll disabled
+riverctl input "*Touchpad*" natural-scroll enabled
+# Terminal
+riverctl map normal Super T spawn kitty
+# Close window
+riverctl map normal Super C close
+# Lock screen
+riverctl map normal Super L spawn waylock
+# Exit river
+riverctl map normal Super+Shift E exit
+
+# 1.5x scale for integrated screen
+riverctl spawn "wlr-randr --output eDP-1 --mode 2880x1800@120 --scale 1.5 --adaptive-sync enabled"
+
+# Super+J and Super+K to focus the next/previous view in the layout stack
+riverctl map normal Alt Tab focus-view next
+riverctl map normal Shift+Alt Tab focus-view previous
+
+# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
+# view in the layout stack
+riverctl map normal Super+Shift J swap next
+riverctl map normal Super+Shift K swap previous
+
+# Super+Period and Super+Comma to focus the next/previous output
+riverctl map normal Super Period focus-output next
+riverctl map normal Super Comma focus-output previous
+
+# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
+riverctl map normal Super+Shift Period send-to-output next
+riverctl map normal Super+Shift Comma send-to-output previous
+
+# Super+Return to bump the focused view to the top of the layout stack
+riverctl map normal Super Return zoom
+
+# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
+riverctl map normal Super+Alt+Control H snap left
+riverctl map normal Super+Alt+Control J snap down
+riverctl map normal Super+Alt+Control K snap up
+riverctl map normal Super+Alt+Control L snap right
+
+# Super+Alt+Shift+{H,J,K,L} to resize views
+riverctl map normal Super+Alt+Shift H resize horizontal -100
+riverctl map normal Super+Alt+Shift J resize vertical 100
+riverctl map normal Super+Alt+Shift K resize vertical -100
+riverctl map normal Super+Alt+Shift L resize horizontal 100
+
+# Super + Left Mouse Button to move views
+riverctl map-pointer normal Super BTN_LEFT move-view
+
+# Super + Right Mouse Button to resize views
+riverctl map-pointer normal Super BTN_RIGHT resize-view
+
+# Super + Middle Mouse Button to toggle float
+riverctl map-pointer normal Super BTN_MIDDLE toggle-float
+
+for i in $(seq 1 9)
+do
+ tags=$((1 << ($i - 1)))
+
+ # Super+[1-9] to focus tag [0-8]
+ riverctl map normal Super $i set-focused-tags $tags
+
+ # Super+Shift+[1-9] to tag focused view with tag [0-8]
+ riverctl map normal Super+Shift $i set-view-tags $tags
+
+ # Super+Control+[1-9] to toggle focus of tag [0-8]
+ riverctl map normal Super+Control $i toggle-focused-tags $tags
+
+ # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
+ riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
+done
+
+# Super+0 to focus all tags
+# Super+Shift+0 to tag focused view with all tags
+all_tags=$(((1 << 32) - 1))
+riverctl map normal Super 0 set-focused-tags $all_tags
+riverctl map normal Super+Shift 0 set-view-tags $all_tags
+
+# Super+Space to toggle float
+riverctl map normal Super Space toggle-float
+
+# Super+F to toggle fullscreen
+riverctl map normal Super F toggle-fullscreen
+
+# Super+{Up,Right,Down,Left} to change layout orientation
+riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
+riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
+riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
+riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
+
+# Declare a passthrough mode. This mode has only a single mapping to return to
+# normal mode. This makes it useful for testing a nested wayland compositor
+riverctl declare-mode passthrough
+
+# Super+F11 to enter passthrough mode
+riverctl map normal Super F11 enter-mode passthrough
+
+# Super+F11 to return to normal mode
+riverctl map passthrough Super F11 enter-mode normal
+
+# Various media key mapping examples for both normal and locked mode which do
+# not have a modifier
+for mode in normal locked
+do
+ riverctl map $mode None XF86AudioRaiseVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'
+ riverctl map $mode None XF86AudioLowerVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'
+ riverctl map $mode None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'
+
+ riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
+ riverctl map $mode None XF86AudioNext spawn 'playerctl next'
+
+ # TODO
+ riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set +5%'
+ riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 5%-'
+done
+
+riverctl map normal Super+Shift S spawn 'grim -g "$(slurp -d)" -t png - | wl-copy -t image/png'
+
+# Set background and border color
+riverctl background-color 0x000000
+riverctl border-color-focused 0x5050B0FF
+riverctl border-color-unfocused 0xFFFFFF50
+riverctl border-width 5
+
+# Set keyboard repeat rate
+riverctl set-repeat 50 300
+
+# Make all views with an app-id that starts with "float" and title "foo" start floating.
+riverctl rule-add -app-id 'float*' -title 'foo' float
+
+# Make all views with app-id "bar" and any title use client-side decorations
+riverctl rule-add -app-id "bar" csd
+
+# Screensharing
+systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river
+systemctl --user restart xdg-desktop-portal
+
+riverctl default-layout bsp-layout
+river-bsp-layout --inner-gap 5 --outer-gap 10 --split-perc 0.5 &
diff --git a/waybar/config.jsonc b/waybar/config.jsonc
new file mode 100644
index 0000000..58458be
--- /dev/null
+++ b/waybar/config.jsonc
@@ -0,0 +1,149 @@
+// -*- mode: jsonc -*-
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 6, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": [
+ "river/tags",
+ "sway/workspaces",
+ "river/window",
+ "sway/window"
+ ],
+ "modules-center": [
+ "clock"
+ ],
+ "modules-right": [
+ "wireplumber#sink",
+ "wireplumber#source",
+ "network",
+ "power-profiles-daemon",
+ "cpu",
+ "temperature",
+ "memory",
+ "backlight",
+ "battery",
+ "tray",
+ "custom/power"
+ ],
+ // Modules configuration
+ "sway/workspaces": {
+ "all-outputs": true
+ },
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "clock": {
+ "interval": 10,
+ "format": "{:%T %d.%m.%Y}",
+ "locale": "de_DE.UTF-8",
+ // "timezone": "America/New_York",
+ "tooltip-format": "{:%Y %B}\n{calendar}"
+ },
+ "cpu": {
+ "format": "cpu {icon}",
+ "tooltip-format": "{usage}%",
+ "format-icons": [ "⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿" ]
+ },
+ "memory": {
+ "format": "mem {icon}",
+ "format-icons": [ "⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿" ],
+ "tooltip-format": "{}%"
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "critical-threshold": 80,
+ // "format-critical": "{temperatureC}°C {icon}",
+ "format": "{temperatureC}°C"
+ },
+ "backlight": {
+ // "device": "acpi_video1",
+ "format": "screen {icon}",
+ "tooltip-format": "{percent}%",
+ "format-icons": [ "⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿" ],
+ "scroll-step": 5
+ },
+ "battery": {
+ "states": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "bat {icon}",
+ "format-charging": "bat {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "tooltip-format": "{capacity}%",
+ "format-icons": [ "⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿" ]
+ },
+ "power-profiles-daemon": {
+ "format": "profile {icon}",
+ "tooltip-format": "profile: {profile}\ndriver: {driver}",
+ "tooltip": true,
+ "format-icons": {
+ "default": "-",
+ "performance": "p",
+ "balanced": "-",
+ "power-saver": "e"
+ }
+ },
+ "network": {
+ "format-wifi": "net {icon}",
+ "tooltip-format-wifi": "interface {ifname}\nip {ipaddr}/{cidr}\ngateway {gwaddr}\nssid {essid}",
+ "format-ethernet": "net e",
+ "tooltip-format": "interface {ifname}\nip {ipaddr}/{cidr}\ngateway {gwaddr}",
+ "format-linked": "net ?",
+ "format-disconnected": "net -",
+ "format-icons": [ "⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿" ]
+ },
+ "wireplumber#sink": {
+ "format": "vol {icon}",
+ "tooltip-format": "{node_name}: {volume}%",
+ "format-icons": [ "⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿" ],
+ "format-muted": "vol m",
+ "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
+ "scroll-step": 5
+ },
+ "wireplumber#source": {
+ "node-type": "Audio/Source",
+ "format": "mic {icon}",
+ "tooltip-format": "{node_name}: {volume}%",
+ "format-icons": [ "⡀", "⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿" ],
+ "format-muted": "mic m",
+ "on-click": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle",
+ "scroll-step": 5
+ },
+ "custom/media": {
+ "format": "{icon} {text}",
+ "return-type": "json",
+ "max-length": 40,
+ "format-icons": {
+ "spotify": "",
+ "default": "🎜"
+ },
+ "escape": true,
+ "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
+ // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
+ },
+ "custom/power": {
+ "format": "⏻ ",
+ "tooltip": false,
+ "menu": "on-click",
+ "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
+ "menu-actions": {
+ "shutdown": "shutdown",
+ "reboot": "reboot",
+ "suspend": "systemctl suspend",
+ "hibernate": "systemctl hibernate"
+ }
+ }
+}
diff --git a/waybar/power_menu.xml b/waybar/power_menu.xml
new file mode 100644
index 0000000..c9867a6
--- /dev/null
+++ b/waybar/power_menu.xml
@@ -0,0 +1,28 @@
+
+
+
+
diff --git a/waybar/style.css b/waybar/style.css
new file mode 100644
index 0000000..3c9db80
--- /dev/null
+++ b/waybar/style.css
@@ -0,0 +1,178 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: Cascadia Code, Roboto, Helvetica, Arial, monospace;
+ font-size: 13px;
+}
+
+window#waybar {
+ background-color: rgba(0, 0, 0, 0.7);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .1s;
+}
+
+window#waybar.hidden {
+ opacity: 1;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #000000;
+ border: none;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#tags button {
+}
+
+#tags button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#tags button.focused {
+ background-color: rgba(30, 30, 30, 0.7);
+ /* color: #7f7f7f; */
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#tags button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#power-profiles-daemon,
+#mpd {
+ padding: 10px 10px;
+ color: #ffffff;
+}
+
+#window,
+#workspaces {
+ margin: 0 4px;
+}
+
+/* If workspaces is the leftmost module, omit left margin */
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+/* If workspaces is the rightmost module, omit right margin */
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+/* Using steps() instead of linear as a timing function to limit cpu usage */
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: #ffffff;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#language {
+ background: #00b093;
+ color: #740864;
+ padding: 0 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#keyboard-state {
+ background: #97e1ad;
+ color: #000000;
+ padding: 0 0px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#keyboard-state > label {
+ padding: 0 5px;
+}
+
+#keyboard-state > label.locked {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad.empty {
+ background-color: transparent;
+}
+
+#privacy {
+ padding: 0;
+}
+
+#privacy-item {
+ padding: 0 5px;
+ color: white;
+}
+
+#privacy-item.screenshare {
+ background-color: #cf5700;
+}
+
+#privacy-item.audio-in {
+ background-color: #1ca000;
+}
+
+#privacy-item.audio-out {
+ background-color: #0069d4;
+}