aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardofSprites <[email protected]>2026-05-26 09:58:25 -0400
committerBardofSprites <[email protected]>2026-05-26 09:58:25 -0400
commit1a0db1edb0271bfd04a8149efd1434be6a1830b8 (patch)
tree7bcadb6d7f1d199691ff6827c095d9cdecb64050
parentfd30675550bffcd3247e897f903af126fc2c0120 (diff)
niri wayland configuration
-rwxr-xr-xbin/.local/bin/scripts/grimpick62
-rwxr-xr-xbin/.local/bin/scripts/ww-tag.sh23
-rwxr-xr-xbin/.local/bin/scripts/ww.sh38
-rwxr-xr-xbin/.local/bin/scripts/xwayland-launch36
-rw-r--r--niri/.config/foot/foot.ini15
-rw-r--r--niri/.config/foot/themes/arbutus.ini23
-rw-r--r--niri/.config/foot/themes/autumn.ini23
-rw-r--r--niri/.config/foot/themes/bio.ini23
-rw-r--r--niri/.config/foot/themes/cherie.ini23
-rw-r--r--niri/.config/foot/themes/cyprus.ini23
-rw-r--r--niri/.config/foot/themes/dark.ini23
-rw-r--r--niri/.config/foot/themes/day.ini23
-rw-r--r--niri/.config/foot/themes/deuteranopia-dark.ini23
-rw-r--r--niri/.config/foot/themes/dream.ini23
-rw-r--r--niri/.config/foot/themes/duo-dark.ini23
-rw-r--r--niri/.config/foot/themes/duo-light.ini23
-rw-r--r--niri/.config/foot/themes/eagle.ini23
-rw-r--r--niri/.config/foot/themes/earth.ini23
-rw-r--r--niri/.config/foot/themes/elea-dark.ini23
-rw-r--r--niri/.config/foot/themes/elea-light.ini23
-rw-r--r--niri/.config/foot/themes/fire.ini23
-rw-r--r--niri/.config/foot/themes/frost.ini23
-rw-r--r--niri/.config/foot/themes/gruvbox.ini23
-rw-r--r--niri/.config/foot/themes/kassio.ini23
-rw-r--r--niri/.config/foot/themes/maris-dark.ini23
-rw-r--r--niri/.config/foot/themes/maris-light.ini23
-rw-r--r--niri/.config/foot/themes/melissa-dark.ini23
-rw-r--r--niri/.config/foot/themes/melissa-light.ini23
-rw-r--r--niri/.config/foot/themes/mermaid.ini23
-rw-r--r--niri/.config/foot/themes/night.ini23
-rw-r--r--niri/.config/foot/themes/oak.ini23
-rw-r--r--niri/.config/foot/themes/obsidian.ini23
-rw-r--r--niri/.config/foot/themes/operandi-tinted.ini23
-rw-r--r--niri/.config/foot/themes/operandi.ini23
-rw-r--r--niri/.config/foot/themes/orange.ini23
-rw-r--r--niri/.config/foot/themes/owl.ini23
-rw-r--r--niri/.config/foot/themes/reverie.ini23
-rw-r--r--niri/.config/foot/themes/rosa.ini23
-rw-r--r--niri/.config/foot/themes/spring.ini23
-rw-r--r--niri/.config/foot/themes/symbiosis.ini23
-rw-r--r--niri/.config/foot/themes/tao-yang.ini23
-rw-r--r--niri/.config/foot/themes/trio-dark.ini23
-rw-r--r--niri/.config/foot/themes/tritanopia-dark.ini23
-rw-r--r--niri/.config/foot/themes/vivendi-tinted.ini23
-rw-r--r--niri/.config/foot/themes/vivendi-tritanopia.ini23
-rw-r--r--niri/.config/foot/themes/vivendi.ini23
-rw-r--r--niri/.config/foot/themes/walnut.ini23
-rw-r--r--niri/.config/foot/themes/water.ini23
-rw-r--r--niri/.config/foot/themes/wind.ini23
-rw-r--r--niri/.config/foot/themes/winter.ini23
-rw-r--r--niri/.config/fuzzel/fuzzel.ini41
-rw-r--r--niri/.config/niri/config.kdl503
-rw-r--r--niri/.config/waybar/config.jsonc222
-rw-r--r--niri/.config/waybar/style.css109
54 files changed, 2084 insertions, 0 deletions
diff --git a/bin/.local/bin/scripts/grimpick b/bin/.local/bin/scripts/grimpick
new file mode 100755
index 0000000..0c12409
--- /dev/null
+++ b/bin/.local/bin/scripts/grimpick
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Ensure directory exists
+mkdir -p "$HOME/Pictures/screenshots"
+
+# Variables
+TIMESTAMP=$(date '+%y%m%d-%H%M-%S')
+DIR="$HOME/Pictures/screenshots"
+CLIP_CMD="wl-copy -t image/png"
+
+# Use fuzzel as a modern dmenu replacement (fallback to standard dmenu if running via XWayland,
+# but fuzzel/rofi-wayland is highly recommended for Wayland native surface scaling)
+MENU_CMD="fuzzel --dmenu -p"
+
+# 1. Main menu prompt
+selection=$(printf "a selected area\ncurrent window\nfull screen\na selected area (copy)\ncurrent window (copy)\nfull screen (copy)" | $MENU_CMD "Screenshot which area?")
+
+[ -z "$selection" ] && exit 0
+
+# Helper function to get active window geometry from niri
+get_active_window_geom() {
+ # Fetches active window info via Niri IPC and formats it for grim (-g)
+ niri msg --json outputs | jq -r '.[] | .focused_window | select(. != null) | "\(.position.x),\(.position.y) \(.size.width)x\(.size.height)"'
+}
+
+# 2. Execution Logic
+case "$selection" in
+ "a selected area")
+ GEOM=$(slurp)
+ [ -n "$GEOM" ] && grim -g "$GEOM" "$DIR/pic-selected-${TIMESTAMP}.png"
+ ;;
+ "current window")
+ GEOM=$(get_active_window_geom)
+ if [ -n "$GEOM" ]; then
+ grim -g "$GEOM" "$DIR/pic-window-${TIMESTAMP}.png"
+ else
+ # Fallback to manual selection if no window is focused
+ grim -g "$(slurp)" "$DIR/pic-window-${TIMESTAMP}.png"
+ fi
+ ;;
+ "full screen")
+ # Slurp -o lets you click a specific monitor, or press Escape/Click outside to cancel
+ GEOM=$(slurp -p -o)
+ [ -n "$GEOM" ] && grim -g "$GEOM" "$DIR/pic-full-${TIMESTAMP}.png"
+ ;;
+ "a selected area (copy)")
+ GEOM=$(slurp)
+ [ -n "$GEOM" ] && grim -g "$GEOM" - | $CLIP_CMD
+ ;;
+ "current window (copy)")
+ GEOM=$(get_active_window_geom)
+ if [ -n "$GEOM" ]; then
+ grim -g "$GEOM" - | $CLIP_CMD
+ else
+ grim -g "$(slurp)" - | $CLIP_CMD
+ fi
+ ;;
+ "full screen (copy)")
+ GEOM=$(slurp -p -o)
+ [ -n "$GEOM" ] && grim -g "$GEOM" - | $CLIP_CMD
+ ;;
+esac
diff --git a/bin/.local/bin/scripts/ww-tag.sh b/bin/.local/bin/scripts/ww-tag.sh
new file mode 100755
index 0000000..305937d
--- /dev/null
+++ b/bin/.local/bin/scripts/ww-tag.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+WALLPAPER_DIR="$HOME/Pictures/wallpaper"
+
+if [[ ! -d "$WALLPAPER_DIR" ]]; then
+ echo "$WALLPAPER_DIR does not exist"
+ exit 1
+fi
+
+# Extract all unique tags from filenames
+selected_tag=$(find "$WALLPAPER_DIR" -type f -print0 \
+ | xargs -0 -n1 bash -c 'grep -oP "\[\K[^\]]+" <<< "$0" | tr "," "\n"' \
+ | sed 's/^ *//;s/ *$//' \
+ | sort -u \
+ | fuzzel --dmenu -p "Select tag: ")
+[ -z "$selected_tag" ] && exit 1
+
+# Find wallpapers matching the tag, pick one via nsxiv thumbnail view
+selected_wallpaper=$(find "$WALLPAPER_DIR" -type f -regex ".*\[[^]]*${selected_tag}[^]]*\].*" -print0 \
+ | xargs -0 nsxiv -t -o)
+[ -z "$selected_wallpaper" ] && exit 1
+
+awww img "$selected_wallpaper"
diff --git a/bin/.local/bin/scripts/ww.sh b/bin/.local/bin/scripts/ww.sh
new file mode 100755
index 0000000..9f3bd76
--- /dev/null
+++ b/bin/.local/bin/scripts/ww.sh
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+
+# Exit on error
+set -e
+
+# Path to the directory containing your wallpapers
+WALLPAPER_DIRS="$HOME/Pictures/wallpaper
+$HOME/Pictures/other-wallpaper"
+
+# Modern Wayland dmenu replacement
+MENU_CMD="fuzzel --dmenu -p"
+
+# If image is passed as argument, skip selection
+if [ -n "$1" ]; then
+ selected_wallpaper="$1"
+
+ # Expand ~ and get absolute path
+ selected_wallpaper="$(realpath "$selected_wallpaper")"
+
+ if [ ! -f "$selected_wallpaper" ]; then
+ echo "Error: File does not exist: $selected_wallpaper"
+ exit 1
+ fi
+else
+ # Use Wayland menu to select directory
+ WALLPAPER_DIR=$(printf "%s\n" "$WALLPAPER_DIRS" | $MENU_CMD "Select directory:")
+
+ [ -z "$WALLPAPER_DIR" ] && exit 1
+
+ # nsxiv picker
+ selected_wallpaper=$(xwayland-launch nsxiv -t -r -o "$WALLPAPER_DIR")
+
+ [ -z "$selected_wallpaper" ] && exit 1
+fi
+
+awww img "$selected_wallpaper"
+
+echo "Wallpaper set successfully via awww."
diff --git a/bin/.local/bin/scripts/xwayland-launch b/bin/.local/bin/scripts/xwayland-launch
new file mode 100755
index 0000000..d257f3c
--- /dev/null
+++ b/bin/.local/bin/scripts/xwayland-launch
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Exit early if no command was passed
+if [ -z "$1" ]; then
+ echo "Usage: $0 <command> [arguments]"
+ exit 1
+fi
+
+# Ensure a DISPLAY environment variable is set if missing
+if [ -z "$DISPLAY" ]; then
+ export DISPLAY=:0
+ xrdb -merge ~/.Xresources
+ xrdb -merge ~/.Xresources.d/Xresources.vivendi
+fi
+
+# Check if an X11 server is already responding on this display
+if ! xset q >/dev/null 2>&1; then
+ echo "XWayland not running. Launching xwayland-satellite..."
+ # Start xwayland-satellite in the background
+ xwayland-satellite :0 &
+ SATELLITE_PID=$!
+ # Wait for the X11 server to actually become responsive
+ timeout=5
+ while ! xset q >/dev/null 2>&1; do
+ sleep 0.1
+ timeout=$((timeout - 1))
+ if [ "$timeout" -le 0 ]; then
+ echo "Error: xwayland-satellite failed to start in time."
+ kill "$SATELLITE_PID" 2>/dev/null
+ exit 1
+ fi
+ done
+fi
+
+# Execute the application with all passed arguments
+exec "$@"
diff --git a/niri/.config/foot/foot.ini b/niri/.config/foot/foot.ini
new file mode 100644
index 0000000..127e520
--- /dev/null
+++ b/niri/.config/foot/foot.ini
@@ -0,0 +1,15 @@
+[main]
+dpi-aware=no
+include=~/.config/foot/themes/vivendi.ini
+font=Terminus:size=15
+initial-window-size-chars=80x25
+pad=20x20
+
+[scrollback]
+lines=10000
+
+[url]
+launch=xdg-open ${url}
+
+[csd]
+preferred = server
diff --git a/niri/.config/foot/themes/arbutus.ini b/niri/.config/foot/themes/arbutus.ini
new file mode 100644
index 0000000..4c8a3d1
--- /dev/null
+++ b/niri/.config/foot/themes/arbutus.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = ffead8 393330
+foreground = 393330
+background = ffead8
+
+regular0 = 393330
+regular1 = aa184f
+regular2 = 007000
+regular3 = 906200
+regular4 = 5f55df
+regular5 = a23ea4
+regular6 = 3f69af
+regular7 = ffead8
+
+bright0 = c7b2ab
+bright1 = b20f00
+bright2 = 557000
+bright3 = b44405
+bright4 = 265fbf
+bright5 = 6448ca
+bright6 = 0f7688
+bright7 = ffead8
diff --git a/niri/.config/foot/themes/autumn.ini b/niri/.config/foot/themes/autumn.ini
new file mode 100644
index 0000000..0b50df1
--- /dev/null
+++ b/niri/.config/foot/themes/autumn.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 0f0e06 cfbcba
+foreground = cfbcba
+background = 0f0e06
+
+regular0 = 0f0e06
+regular1 = ff7a7f
+regular2 = 2fa526
+regular3 = c48702
+regular4 = 6a88ff
+regular5 = d570af
+regular6 = 4fb0cf
+regular7 = cfbcba
+
+bright0 = 36322f
+bright1 = f06a3f
+bright2 = 64aa0f
+bright3 = d0730f
+bright4 = 029fff
+bright5 = af8aff
+bright6 = 6fafff
+bright7 = cfbcba
diff --git a/niri/.config/foot/themes/bio.ini b/niri/.config/foot/themes/bio.ini
new file mode 100644
index 0000000..2befbc3
--- /dev/null
+++ b/niri/.config/foot/themes/bio.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 111111 cfdfd5
+foreground = cfdfd5
+background = 111111
+
+regular0 = 111111
+regular1 = ef6560
+regular2 = 3fb83f
+regular3 = d4aa02
+regular4 = 37aff6
+regular5 = d38faf
+regular6 = 6fc5ef
+regular7 = cfdfd5
+
+bright0 = 2a3644
+bright1 = f47360
+bright2 = 7fc500
+bright3 = e09a0f
+bright4 = 78afff
+bright5 = af9fff
+bright6 = 5dc0aa
+bright7 = cfdfd5
diff --git a/niri/.config/foot/themes/cherie.ini b/niri/.config/foot/themes/cherie.ini
new file mode 100644
index 0000000..e5ed11a
--- /dev/null
+++ b/niri/.config/foot/themes/cherie.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 190a0f d3cfcf
+foreground = d3cfcf
+background = 190a0f
+
+regular0 = 190a0f
+regular1 = ff7359
+regular2 = 60b444
+regular3 = e5b76f
+regular4 = 8fa5f6
+regular5 = ef80bf
+regular6 = 8fbaef
+regular7 = d3cfcf
+
+bright0 = 1a202b
+bright1 = ff7359
+bright2 = 60b444
+bright3 = e5b76f
+bright4 = 8fa5f6
+bright5 = ef80bf
+bright6 = 8fbaef
+bright7 = d3cfcf
diff --git a/niri/.config/foot/themes/cyprus.ini b/niri/.config/foot/themes/cyprus.ini
new file mode 100644
index 0000000..b867922
--- /dev/null
+++ b/niri/.config/foot/themes/cyprus.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = fcf7ef 007f00
+foreground = 242521
+background = fcf7ef
+
+regular0 = 242521
+regular1 = 9f0d0f
+regular2 = 006f00
+regular3 = a7601f
+regular4 = 444fcf
+regular5 = 9a456f
+regular6 = 3f6faf
+regular7 = fcf7ef
+
+bright0 = c5c3b8
+bright1 = dd0020
+bright2 = 557400
+bright3 = bf4400
+bright4 = 065fbf
+bright5 = 8448aa
+bright6 = 007a9f
+bright7 = fcf7ef
diff --git a/niri/.config/foot/themes/dark.ini b/niri/.config/foot/themes/dark.ini
new file mode 100644
index 0000000..d702f28
--- /dev/null
+++ b/niri/.config/foot/themes/dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 000000 ccaaee
+foreground = ffffff
+background = 000000
+
+regular0 = 332d38
+regular1 = eca28f
+regular2 = b9d0aa
+regular3 = 000000
+regular4 = 9fbfe7
+regular5 = e9acbf
+regular6 = a0c0d0
+regular7 = 000000
+
+bright0 = a2a0b2
+bright1 = eca28f
+bright2 = b9d0aa
+bright3 = c0b080
+bright4 = 9fbfe7
+bright5 = e9acbf
+bright6 = a0c0d0
+bright7 = ffffff
diff --git a/niri/.config/foot/themes/day.ini b/niri/.config/foot/themes/day.ini
new file mode 100644
index 0000000..ae9cea6
--- /dev/null
+++ b/niri/.config/foot/themes/day.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = fff5ea 584141
+foreground = 584141
+background = fff5ea
+
+regular0 = 584141
+regular1 = ba2d2f
+regular2 = 007a0a
+regular3 = a45a22
+regular4 = 375cc6
+regular5 = ca3e54
+regular6 = 3f60af
+regular7 = fff5ea
+
+bright0 = c9c0b8
+bright1 = ce3f00
+bright2 = 5a7400
+bright3 = aa4f30
+bright4 = 5f5fdf
+bright5 = 8448aa
+bright6 = 0f7b8f
+bright7 = fff5ea
diff --git a/niri/.config/foot/themes/deuteranopia-dark.ini b/niri/.config/foot/themes/deuteranopia-dark.ini
new file mode 100644
index 0000000..cd317f4
--- /dev/null
+++ b/niri/.config/foot/themes/deuteranopia-dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 000a1f ffff00
+foreground = ddddee
+background = 000a1f
+
+regular0 = 000a1f
+regular1 = cf7a7a
+regular2 = 3faa26
+regular3 = aa9f32
+regular4 = 6a9fff
+regular5 = b379bf
+regular6 = 5faaef
+regular7 = 7f8797
+
+bright0 = 243145
+bright1 = e47360
+bright2 = 7aad0f
+bright3 = cfaf00
+bright4 = 009fff
+bright5 = 9f95ff
+bright6 = 0db0ff
+bright7 = ddddee
diff --git a/niri/.config/foot/themes/dream.ini b/niri/.config/foot/themes/dream.ini
new file mode 100644
index 0000000..e0a92f7
--- /dev/null
+++ b/niri/.config/foot/themes/dream.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 232025 efd5c5
+foreground = efd5c5
+background = 232025
+
+regular0 = 232025
+regular1 = ff6f6f
+regular2 = 51b04f
+regular3 = c0b24f
+regular4 = 57b0ff
+regular5 = ffaacf
+regular6 = 6fb3c0
+regular7 = efd5c5
+
+bright0 = 3b393e
+bright1 = ff6f6f
+bright2 = 51b04f
+bright3 = c0b24f
+bright4 = 57b0ff
+bright5 = ffaacf
+bright6 = 6fb3c0
+bright7 = efd5c5
diff --git a/niri/.config/foot/themes/duo-dark.ini b/niri/.config/foot/themes/duo-dark.ini
new file mode 100644
index 0000000..ca98a6a
--- /dev/null
+++ b/niri/.config/foot/themes/duo-dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 070019 ef6f11
+foreground = d0d0d0
+background = 070019
+
+regular0 = 070019
+regular1 = ef6560
+regular2 = 3fb83f
+regular3 = d4aa02
+regular4 = 37aff6
+regular5 = d38faf
+regular6 = 6fc5ef
+regular7 = d0d0d0
+
+bright0 = 2a2739
+bright1 = f47360
+bright2 = 7fc500
+bright3 = e09a0f
+bright4 = 78afff
+bright5 = af9fff
+bright6 = 5dc0aa
+bright7 = d0d0d0
diff --git a/niri/.config/foot/themes/duo-light.ini b/niri/.config/foot/themes/duo-light.ini
new file mode 100644
index 0000000..f8a0266
--- /dev/null
+++ b/niri/.config/foot/themes/duo-light.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = fff8f0 1144ff
+foreground = 222222
+background = fff8f0
+
+regular0 = 222222
+regular1 = c04440
+regular2 = 217a3c
+regular3 = 8a5d00
+regular4 = 4250ef
+regular5 = ba35af
+regular6 = 3f70a0
+regular7 = f6ece8
+
+bright0 = c7c0ba
+bright1 = dd1100
+bright2 = 008058
+bright3 = 9f4a00
+bright4 = 065fff
+bright5 = 6052cf
+bright6 = 1f77bb
+bright7 = f6ece8
diff --git a/niri/.config/foot/themes/eagle.ini b/niri/.config/foot/themes/eagle.ini
new file mode 100644
index 0000000..0d3caf3
--- /dev/null
+++ b/niri/.config/foot/themes/eagle.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = f1ecd0 774400
+foreground = 231a1f
+background = f1ecd0
+
+regular0 = 231a1f
+regular1 = 8f0038
+regular2 = 226022
+regular3 = 6b4500
+regular4 = 3a3da0
+regular5 = 822478
+regular6 = 2f5f9f
+regular7 = f1ecd0
+
+bright0 = 685f53
+bright1 = 9a0000
+bright2 = 3a7800
+bright3 = 775228
+bright4 = 000080
+bright5 = 50119f
+bright6 = 1077ab
+bright7 = f1ecd0
diff --git a/niri/.config/foot/themes/earth.ini b/niri/.config/foot/themes/earth.ini
new file mode 100644
index 0000000..a8cb0ba
--- /dev/null
+++ b/niri/.config/foot/themes/earth.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = f0eddf 770000
+foreground = 30232e
+background = f0eddf
+
+regular0 = 504033
+regular1 = a03000
+regular2 = 206700
+regular3 = 705200
+regular4 = 103060
+regular5 = 690f44
+regular6 = 105f66
+regular7 = 000000
+
+bright0 = d1ceb6
+bright1 = a03000
+bright2 = 206700
+bright3 = 705200
+bright4 = 103060
+bright5 = 690f44
+bright6 = 105f66
+bright7 = 30232e same as foreground
diff --git a/niri/.config/foot/themes/elea-dark.ini b/niri/.config/foot/themes/elea-dark.ini
new file mode 100644
index 0000000..22e7269
--- /dev/null
+++ b/niri/.config/foot/themes/elea-dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #222524 #eaf2ef
+foreground = #eaf2ef
+background = #222524
+
+regular0 = #222524
+regular1 = #ff656a
+regular2 = #7fc87f
+regular3 = #cac85f
+regular4 = #57aff6
+regular5 = #f59acf
+regular6 = #7fcfdf
+regular7 = #eaf2ef
+
+bright0 = #969faf
+bright1 = #ff7a5f
+bright2 = #50cf89
+bright3 = #e0b02f
+bright4 = #78afff
+bright5 = #cfaaff
+bright6 = #60d5c2
+bright7 = #eaf2ef
diff --git a/niri/.config/foot/themes/elea-light.ini b/niri/.config/foot/themes/elea-light.ini
new file mode 100644
index 0000000..e839745
--- /dev/null
+++ b/niri/.config/foot/themes/elea-light.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #edf5e2 #221321
+foreground = #221321
+background = #edf5e2
+
+regular0 = #221321
+regular1 = #c3303a
+regular2 = #00601f
+regular3 = #9a501f
+regular4 = #375cc6
+regular5 = #80308f
+regular6 = #1f70af
+regular7 = #edf5e2
+
+bright0 = #676470
+bright1 = #c3303a
+bright2 = #00601f
+bright3 = #9a501f
+bright4 = #375cc6
+bright5 = #80308f
+bright6 = #1f70af
+bright7 = #edf5e2
diff --git a/niri/.config/foot/themes/fire.ini b/niri/.config/foot/themes/fire.ini
new file mode 100644
index 0000000..f64820e
--- /dev/null
+++ b/niri/.config/foot/themes/fire.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 282420 ef7839
+foreground = f5ceb0
+background = 282420
+
+regular0 = 40332b
+regular1 = eca27f
+regular2 = b9d08a
+regular3 = c5ba80
+regular4 = 9fbfe7
+regular5 = e9acbf
+regular6 = a0c0d0
+regular7 = 000000
+
+bright0 = afa497
+bright1 = eca27f
+bright2 = b9d08a
+bright3 = c5ba80
+bright4 = 9fbfe7
+bright5 = e9acbf
+bright6 = a0c0d0
+bright7 = f5ceb0 same as foreground
diff --git a/niri/.config/foot/themes/frost.ini b/niri/.config/foot/themes/frost.ini
new file mode 100644
index 0000000..c2a858a
--- /dev/null
+++ b/niri/.config/foot/themes/frost.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = fcffff 0055bb
+foreground = 232323
+background = fcffff
+
+regular0 = 232323
+regular1 = c42d2f
+regular2 = 008a00
+regular3 = aa6100
+regular4 = 4244ef
+regular5 = aa44c5
+regular6 = 3a6dd2
+regular7 = eaefef
+
+bright0 = b5b8b8
+bright1 = cf2f4f
+bright2 = 00845f
+bright3 = 996c4f
+bright4 = 065fff
+bright5 = 7f5ae0
+bright6 = 1f6fbf
+bright7 = fcffff
diff --git a/niri/.config/foot/themes/gruvbox.ini b/niri/.config/foot/themes/gruvbox.ini
new file mode 100644
index 0000000..319ec4c
--- /dev/null
+++ b/niri/.config/foot/themes/gruvbox.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 1d2021 eeddbb
+foreground = ebdbb2
+background = ffffff
+
+regular0 = #505050
+regular1 = #cc241d
+regular2 = #98971a
+regular3 = #d79921
+regular4 = #458588
+regular5 = #b16286
+regular6 = #689d6a
+regular7 = #928374
+
+bright0 = #a89984
+bright1 = #fb4934
+bright2 = #b8bb26
+bright3 = #fabd2f
+bright4 = #83a598
+bright5 = #d3869b
+bright6 = #8ec07c
+bright7 = #ebdbb2 same as foreground
diff --git a/niri/.config/foot/themes/kassio.ini b/niri/.config/foot/themes/kassio.ini
new file mode 100644
index 0000000..733c200
--- /dev/null
+++ b/niri/.config/foot/themes/kassio.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = fff7f7 201f36
+foreground = 201f36
+background = fff7f7
+
+regular0 = 201f36
+regular1 = b00234
+regular2 = 217a3c
+regular3 = 9a6012
+regular4 = 3c3bbe
+regular5 = a01f64
+regular6 = 2f5f9f
+regular7 = fff7f7
+
+bright0 = 776f79
+bright1 = e00033
+bright2 = 4a7d00
+bright3 = a04646
+bright4 = 4250ef
+bright5 = 7022bf
+bright6 = 1077ab
+bright7 = fff7f7
diff --git a/niri/.config/foot/themes/maris-dark.ini b/niri/.config/foot/themes/maris-dark.ini
new file mode 100644
index 0000000..2735d8b
--- /dev/null
+++ b/niri/.config/foot/themes/maris-dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #131c2b #eaedef
+foreground = #eaedef
+background = #131c2b
+
+regular0 = #131c2b
+regular1 = #ff6f6f
+regular2 = #31bf4f
+regular3 = #d0d24f
+regular4 = #57b0ff
+regular5 = #f59acf
+regular6 = #2fd0db
+regular7 = #eaedef
+
+bright0 = #2a3644
+bright1 = #ff6f6f
+bright2 = #31bf4f
+bright3 = #d0d24f
+bright4 = #57b0ff
+bright5 = #f59acf
+bright6 = #2fd0db
+bright7 = #eaedef
diff --git a/niri/.config/foot/themes/maris-light.ini b/niri/.config/foot/themes/maris-light.ini
new file mode 100644
index 0000000..cdbb537
--- /dev/null
+++ b/niri/.config/foot/themes/maris-light.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #edf4f8 #151a27
+foreground = #151a27
+background = #edf4f8
+
+regular0 = #131c2b
+regular1 = #c3303a
+regular2 = #007010
+regular3 = #805a1f
+regular4 = #375cc6
+regular5 = #80308f
+regular6 = #1f66af
+regular7 = #edf4f8
+
+bright0 = #afb8c3
+bright1 = #c3303a
+bright2 = #007010
+bright3 = #805a1f
+bright4 = #375cc6
+bright5 = #80308f
+bright6 = #1f66af
+bright7 = #edf4f8
diff --git a/niri/.config/foot/themes/melissa-dark.ini b/niri/.config/foot/themes/melissa-dark.ini
new file mode 100644
index 0000000..af5629c
--- /dev/null
+++ b/niri/.config/foot/themes/melissa-dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #352718 #e8e4b1
+foreground = #e8e4b1
+background = #352718
+
+regular0 = #352718
+regular1 = #ff7f7f
+regular2 = #6fd560
+regular3 = #ffa21f
+regular4 = #57aff6
+regular5 = #f0aac5
+regular6 = #6fcad0
+regular7 = #e8e4b1
+
+bright0 = #90918a
+bright1 = #ff7f7f
+bright2 = #6fd560
+bright3 = #ffa21f
+bright4 = #57aff6
+bright5 = #f0aac5
+bright6 = #6fcad0
+bright7 = #e8e4b1
diff --git a/niri/.config/foot/themes/melissa-light.ini b/niri/.config/foot/themes/melissa-light.ini
new file mode 100644
index 0000000..ad3fee6
--- /dev/null
+++ b/niri/.config/foot/themes/melissa-light.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #fff6d8 #484431
+foreground = #484431
+background = #fff6d8
+
+regular0 = #484431
+regular1 = #ba2d2f
+regular2 = #007a0a
+regular3 = #a26310
+regular4 = #375cc6
+regular5 = #aa3e74
+regular6 = #3f60af
+regular7 = #fff6d8
+
+bright0 = #c7b7a6
+bright1 = #ba2d2f
+bright2 = #007a0a
+bright3 = #a26310
+bright4 = #375cc6
+bright5 = #aa3e74
+bright6 = #3f60af
+bright7 = #fff6d8
diff --git a/niri/.config/foot/themes/mermaid.ini b/niri/.config/foot/themes/mermaid.ini
new file mode 100644
index 0000000..81e16e2
--- /dev/null
+++ b/niri/.config/foot/themes/mermaid.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 2a2f48 e08ca0
+foreground = dde0f8
+background = 2a2f48
+
+regular0 = 3c3e55
+regular1 = eca28f
+regular2 = a0d0ba
+regular3 = c0b080
+regular4 = 9fbfe7
+regular5 = e9acbf
+regular6 = a0c0d0
+regular7 = 000000
+
+bright0 = aea7c3
+bright1 = eca28f
+bright2 = a0d0ba
+bright3 = c0b080
+bright4 = 9fbfe7
+bright5 = e9acbf
+bright6 = a0c0d0
+bright7 = dde0f8 same as foreground
diff --git a/niri/.config/foot/themes/night.ini b/niri/.config/foot/themes/night.ini
new file mode 100644
index 0000000..71c8886
--- /dev/null
+++ b/niri/.config/foot/themes/night.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 000e17 afbcbf
+foreground = afbcbf
+background = 000e17
+
+regular0 = 000e17
+regular1 = ef656a
+regular2 = 1fa526
+regular3 = c48502
+regular4 = 379cf6
+regular5 = d570af
+regular6 = 4fb0cf
+regular7 = afbcbf
+
+bright0 = 1a202b
+bright1 = f47360
+bright2 = 50a22f
+bright3 = e6832f
+bright4 = 6a88ff
+bright5 = af8aff
+bright6 = 3dc0b0
+bright7 = afbcbf
diff --git a/niri/.config/foot/themes/oak.ini b/niri/.config/foot/themes/oak.ini
new file mode 100644
index 0000000..33a6235
--- /dev/null
+++ b/niri/.config/foot/themes/oak.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = e0d8c7 497020
+foreground = 3a2018
+background = e0d8c7
+
+regular0 = 000000
+regular1 = 982500
+regular2 = 226700
+regular3 = 595000
+regular4 = 103077
+regular5 = 700054
+regular6 = 005460
+regular7 = 000000
+
+bright0 = e0d8c7 same as background
+bright1 = 982500
+bright2 = 226700
+bright3 = 595000
+bright4 = 103077
+bright5 = 700054
+bright6 = 005460
+bright7 = 3a2018 same as foreground
diff --git a/niri/.config/foot/themes/obsidian.ini b/niri/.config/foot/themes/obsidian.ini
new file mode 100644
index 0000000..67f953e
--- /dev/null
+++ b/niri/.config/foot/themes/obsidian.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 181818 e7e7e7
+foreground = e7e7e7
+background = 181818
+
+regular0 = 505050
+regular1 = eca28f
+regular2 = b9d0aa
+regular3 = c0b080
+regular4 = 9fbfe7
+regular5 = e9acbf
+regular6 = a0c0d0
+regular7 = 000000
+
+bright0 = b0b0b0
+bright1 = eca28f
+bright2 = b9d0aa
+bright3 = c0b080
+bright4 = 9fbfe7
+bright5 = e9acbf
+bright6 = a0c0d0
+bright7 = e7e7e7
diff --git a/niri/.config/foot/themes/operandi-tinted.ini b/niri/.config/foot/themes/operandi-tinted.ini
new file mode 100644
index 0000000..4df252a
--- /dev/null
+++ b/niri/.config/foot/themes/operandi-tinted.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #fbf7f0 #d00000
+foreground = #000000
+background = #fbf7f0
+
+regular0 = #000000
+regular1 = #a60000
+regular2 = #006800
+regular3 = #6f5500
+regular4 = #0031a9
+regular5 = #721045
+regular6 = #005e8b
+regular7 = #fbf7f0
+
+bright0 = #595959
+bright1 = #972500
+bright2 = #00663f
+bright3 = #884900
+bright4 = #3548cf
+bright5 = #531ab6
+bright6 = #005f5f
+bright7 = #fbf7f0
diff --git a/niri/.config/foot/themes/operandi.ini b/niri/.config/foot/themes/operandi.ini
new file mode 100644
index 0000000..f71feaf
--- /dev/null
+++ b/niri/.config/foot/themes/operandi.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = ffffff 000000
+foreground = 000000
+background = ffffff
+
+regular0 = 000000
+regular1 = a60000
+regular2 = 006800
+regular3 = 6f5500
+regular4 = 0031a9
+regular5 = 721045
+regular6 = 005e8b
+regular7 = ffffff
+
+bright0 = 5c6370
+bright1 = 972500
+bright2 = 00663f
+bright3 = 884900
+bright4 = 3548cf
+bright5 = 531ab6
+bright6 = 005f5f
+bright7 = ffffff
diff --git a/niri/.config/foot/themes/orange.ini b/niri/.config/foot/themes/orange.ini
new file mode 100644
index 0000000..5282629
--- /dev/null
+++ b/niri/.config/foot/themes/orange.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = ffedc9 cf5f00
+foreground = 6c4631
+background = ffedc9
+
+regular0 = 6c4631
+regular1 = ba2d2f
+regular2 = 007a0a
+regular3 = a05a22
+regular4 = 375cc6
+regular5 = ba3e54
+regular6 = 467080
+regular7 = cfbe9b
+
+bright0 = 6f6a70
+bright1 = c13f00
+bright2 = 5f7200
+bright3 = b05115
+bright4 = 5f50df
+bright5 = c32f80
+bright6 = 3f6fa2
+bright7 = efdbac
diff --git a/niri/.config/foot/themes/owl.ini b/niri/.config/foot/themes/owl.ini
new file mode 100644
index 0000000..8142d01
--- /dev/null
+++ b/niri/.config/foot/themes/owl.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 292c2f d0d0d0
+foreground = d0d0d0
+background = 292c2f
+
+regular0 = 292c2f
+regular1 = d67869
+regular2 = 70bb70
+regular3 = c09f6f
+regular4 = 80a4e0
+regular5 = e5a0ea
+regular6 = 99bfd0
+regular7 = d0d0d0
+
+bright0 = 40474b
+bright1 = df885f
+bright2 = 98c06f
+bright3 = cf9f90
+bright4 = 72aff0
+bright5 = cfa0e8
+bright6 = 7ac0b9
+bright7 = d0d0d0
diff --git a/niri/.config/foot/themes/reverie.ini b/niri/.config/foot/themes/reverie.ini
new file mode 100644
index 0000000..8a5a8e7
--- /dev/null
+++ b/niri/.config/foot/themes/reverie.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = f3eddf 4f204f
+foreground = 4f204f
+background = f3eddf
+
+regular0 = 4f204f
+regular1 = ba2d2f
+regular2 = 5a7400
+regular3 = 87591f
+regular4 = 5059c0
+regular5 = 9f4e74
+regular6 = 3060af
+regular7 = efd5c5
+
+bright0 = 6f6877
+bright1 = b21f00
+bright2 = 008250
+bright3 = a05900
+bright4 = 265fbf
+bright5 = 7755b4
+bright6 = 0b6e8a
+bright7 = efd5c5
diff --git a/niri/.config/foot/themes/rosa.ini b/niri/.config/foot/themes/rosa.ini
new file mode 100644
index 0000000..4392519
--- /dev/null
+++ b/niri/.config/foot/themes/rosa.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 322023 ef607a
+foreground = e4d3e1
+background = 322023
+
+regular0 = 322023
+regular1 = ff707f
+regular2 = 5fbb5f
+regular3 = e4c53f
+regular4 = 57aff6
+regular5 = ffb2d6
+regular6 = 5fc0dc
+regular7 = e4d3e1
+
+bright0 = 6a5862
+bright1 = ff7f5f
+bright2 = 8ad05a
+bright3 = f2a85f
+bright4 = 78b2ff
+bright5 = cfb1ff
+bright6 = 80dfbf
+bright7 = e4d3e1
diff --git a/niri/.config/foot/themes/spring.ini b/niri/.config/foot/themes/spring.ini
new file mode 100644
index 0000000..e22d5d4
--- /dev/null
+++ b/niri/.config/foot/themes/spring.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = f6fff9 bf005f
+foreground = 34494a
+background = f6fff9
+
+regular0 = 34494a
+regular1 = c42d2f
+regular2 = 1a870f
+regular3 = b6540f
+regular4 = 5f5fdf
+regular5 = d5206f
+regular6 = 1f6fbf
+regular7 = f6fff9
+
+bright0 = 595959
+bright1 = cf2f4f
+bright2 = 007f68
+bright3 = a45f22
+bright4 = 265fbf
+bright5 = 9435b4
+bright6 = 0f7b8f
+bright7 = f6fff9
diff --git a/niri/.config/foot/themes/symbiosis.ini b/niri/.config/foot/themes/symbiosis.ini
new file mode 100644
index 0000000..4d6eb30
--- /dev/null
+++ b/niri/.config/foot/themes/symbiosis.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 130911 d0d0d0
+foreground = d0d0d0
+background = 130911
+
+regular0 = 130911
+regular1 = fe5a7a
+regular2 = 0faa26
+regular3 = bf9032
+regular4 = 6a9fff
+regular5 = d369af
+regular6 = 4fbaef
+regular7 = d0d0d0
+
+bright0 = 4b3f47
+bright1 = ff7355
+bright2 = 6aad0f
+bright3 = df8a5a
+bright4 = 029fff
+bright5 = af85ff
+bright6 = 1dbfcf
+bright7 = d0d0d0
diff --git a/niri/.config/foot/themes/tao-yang.ini b/niri/.config/foot/themes/tao-yang.ini
new file mode 100644
index 0000000..6aba884
--- /dev/null
+++ b/niri/.config/foot/themes/tao-yang.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #171717 #fcfcfc
+foreground = #fcfcfc
+background = #171717
+
+regular0 = #000000
+regular1 = #a5372e
+regular2 = #4a663c
+regular3 = #7c5618
+regular4 = #566060
+regular5 = #8e4948
+regular6 = #6d5b42
+regular7 = #8d8d8d
+
+bright0 = #2b2b2b
+bright1 = #e06c5c
+bright2 = #7b996c
+bright3 = #b38849
+bright4 = #889393
+bright5 = #c67c78
+bright6 = #a28d73
+bright7 = #c6c6c6
diff --git a/niri/.config/foot/themes/trio-dark.ini b/niri/.config/foot/themes/trio-dark.ini
new file mode 100644
index 0000000..80af867
--- /dev/null
+++ b/niri/.config/foot/themes/trio-dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #160f0f #ff99ff
+foreground = #d8cfd5
+background = #160f0f
+
+regular0 = #160f0f
+regular1 = #ff85aa
+regular2 = #60b444
+regular3 = #d4a052
+regular4 = #8895ff
+regular5 = #d37faf
+regular6 = #8fbaff
+regular7 = #d8cfd5
+
+bright0 = #564f55
+bright1 = #ff7560
+bright2 = #a0c27f
+bright3 = #ef926f
+bright4 = #72afff
+bright5 = #a698ef
+bright6 = #8fcfdf
+bright7 = #d8cfd5
diff --git a/niri/.config/foot/themes/tritanopia-dark.ini b/niri/.config/foot/themes/tritanopia-dark.ini
new file mode 100644
index 0000000..4889ab2
--- /dev/null
+++ b/niri/.config/foot/themes/tritanopia-dark.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #15050f #fd3333
+foreground = #dfd0d5
+background = #15050f
+
+regular0 = #15050f
+regular1 = #d24f7f
+regular2 = #2fa526
+regular3 = #c48702
+regular4 = #6a88ff
+regular5 = #b0648f
+regular6 = #3fafcf
+regular7 = #908890
+
+bright0 = #352f2f
+bright1 = #df4f4f
+bright2 = #64aa0f
+bright3 = #d0730f
+bright4 = #029fff
+bright5 = #a6699f
+bright6 = #4fafaf
+bright7 = #dfd0d5
diff --git a/niri/.config/foot/themes/vivendi-tinted.ini b/niri/.config/foot/themes/vivendi-tinted.ini
new file mode 100644
index 0000000..e393524
--- /dev/null
+++ b/niri/.config/foot/themes/vivendi-tinted.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #0d0e1c #ff66ff
+foreground = #ffffff
+background = #0d0e1c
+
+regular0 = #0d0e1c
+regular1 = #ff5f59
+regular2 = #44bc44
+regular3 = #d0bc00
+regular4 = #2fafff
+regular5 = #feacd0
+regular6 = #00d3d0
+regular7 = #fff7f7
+
+bright0 = #4a4f69
+bright1 = #ff6b55
+bright2 = #00c06f
+bright3 = #fec43f
+bright4 = #79a8ff
+bright5 = #b6a0ff
+bright6 = #6ae4b9
+bright7 = #fff7f7
diff --git a/niri/.config/foot/themes/vivendi-tritanopia.ini b/niri/.config/foot/themes/vivendi-tritanopia.ini
new file mode 100644
index 0000000..37ad774
--- /dev/null
+++ b/niri/.config/foot/themes/vivendi-tritanopia.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = #000000 #ff5f5f
+foreground = #ffffff
+background = #000000
+
+regular0 = #000000
+regular1 = #ff5f59
+regular2 = #44bc44
+regular3 = #cabf00
+regular4 = #2fafff
+regular5 = #feacd0
+regular6 = #00d3d0
+regular7 = #ffffff
+
+bright0 = #535353
+bright1 = #ff6b55
+bright2 = #00c06f
+bright3 = #ffa00f
+bright4 = #79a8ff
+bright5 = #b6a0ff
+bright6 = #6ae4b9
+bright7 = #ffffff
diff --git a/niri/.config/foot/themes/vivendi.ini b/niri/.config/foot/themes/vivendi.ini
new file mode 100644
index 0000000..084bad3
--- /dev/null
+++ b/niri/.config/foot/themes/vivendi.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 000000 ffffff
+foreground = ffffff
+background = 000000
+
+regular0 = 000000
+regular1 = ff5f59
+regular2 = 44bc44
+regular3 = d0bc00
+regular4 = 2fafff
+regular5 = feacd0
+regular6 = 00d3d0
+regular7 = ffffff
+
+bright0 = 595959
+bright1 = ff6b55
+bright2 = 00c06f
+bright3 = fec43f
+bright4 = 79a8ff
+bright5 = b6a0ff
+bright6 = 6ae4b9
+bright7 = ffffff
diff --git a/niri/.config/foot/themes/walnut.ini b/niri/.config/foot/themes/walnut.ini
new file mode 100644
index 0000000..a7ce93f
--- /dev/null
+++ b/niri/.config/foot/themes/walnut.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 153227 d3b18e
+foreground = b9d3b0
+background = 153227
+
+regular0 = 303931
+regular1 = e8a27f
+regular2 = 82cc7f
+regular3 = c4b980
+regular4 = 8fbae5
+regular5 = e9acbf
+regular6 = a0c0d0
+regular7 = 000000
+
+bright0 = 9ba3a2
+bright1 = e8a27f
+bright2 = 82cc7f
+bright3 = c4b980
+bright4 = 8fbae5
+bright5 = e9acbf
+bright6 = a0c0d0
+bright7 = b9d3b0 same as foreground
diff --git a/niri/.config/foot/themes/water.ini b/niri/.config/foot/themes/water.ini
new file mode 100644
index 0000000..80960b5
--- /dev/null
+++ b/niri/.config/foot/themes/water.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 2a283d 99ddee
+foreground = edf0f8
+background = 2a283d
+
+regular0 = 3a3c4c
+regular1 = eca28f
+regular2 = a0d0ba
+regular3 = c0b080
+regular4 = 9fbfe7
+regular5 = e9acbf
+regular6 = a0c0d0
+regular7 = 000000
+
+bright0 = aea6b8
+bright1 = eca28f
+bright2 = a0d0ba
+bright3 = c0b080
+bright4 = 9fbfe7
+bright5 = e9acbf
+bright6 = a0c0d0
+bright7 = edf0f8 same as foreground
diff --git a/niri/.config/foot/themes/wind.ini b/niri/.config/foot/themes/wind.ini
new file mode 100644
index 0000000..dc02091
--- /dev/null
+++ b/niri/.config/foot/themes/wind.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = e8f0e9 10600b
+foreground = 000f0f
+background = e8f0e9
+
+regular0 = 000000
+regular1 = 990020
+regular2 = 006710
+regular3 = 706000
+regular4 = 003370
+regular5 = 782050
+regular6 = 006070
+regular7 = 000000
+
+bright0 = e8f0e9 same as background
+bright1 = 990020
+bright2 = 006710
+bright3 = 706000
+bright4 = 003370
+bright5 = 782050
+bright6 = 006070
+bright7 = 000f0f same as foreground
diff --git a/niri/.config/foot/themes/winter.ini b/niri/.config/foot/themes/winter.ini
new file mode 100644
index 0000000..1ac7838
--- /dev/null
+++ b/niri/.config/foot/themes/winter.ini
@@ -0,0 +1,23 @@
+[colors]
+alpha=0.95
+cursor = 0f0b15 b8c6d5
+foreground = b8c6d5
+background = 0f0b15
+
+regular0 = 0f0b15
+regular1 = ff6a7a
+regular2 = 29a444
+regular3 = b58a52
+regular4 = 6a9fff
+regular5 = d369af
+regular6 = 4fbaef
+regular7 = b8c6d5
+
+bright0 = 2a2f42
+bright1 = ef6560
+bright2 = 6aad0f
+bright3 = d1803f
+bright4 = 029fff
+bright5 = af85ea
+bright6 = 35afbf
+bright7 = b8c6d5
diff --git a/niri/.config/fuzzel/fuzzel.ini b/niri/.config/fuzzel/fuzzel.ini
new file mode 100644
index 0000000..27e4377
--- /dev/null
+++ b/niri/.config/fuzzel/fuzzel.ini
@@ -0,0 +1,41 @@
+horizontal-pad=20
+inner-pad=20
+dpi-aware=no
+width=40
+lines=20
+y-margin=50
+placeholder=Search here...
+
+font=Terminus:size=16
+# prompt="󰍉 "
+prompt="M-x "
+terminal=foot
+layer=overlay
+icons-enabled=no
+
+[colors]
+# background=181818ff
+# input=e7e7e7ff
+# text=e7e7e7ff
+# match=b0b0b0ff
+# selection=505050ff
+# selection-text=b0b0b0ff
+# selection-match=b0b0b0ff
+# border=505050ff
+# placeholder=505050ff
+# prompt=e7e7e7ff
+
+background=000000ff
+input=ffffffff
+text=ffffffff
+match=ffffffff
+selection=2f447fff
+selection-text=ffffffff
+selection-match=ffffffff
+border=505050ff
+placeholder=989898ff
+prompt=6ae4b9ff
+
+[border]
+width=2
+radius=0 \ No newline at end of file
diff --git a/niri/.config/niri/config.kdl b/niri/.config/niri/config.kdl
new file mode 100644
index 0000000..e8907b1
--- /dev/null
+++ b/niri/.config/niri/config.kdl
@@ -0,0 +1,503 @@
+input {
+ keyboard {
+ xkb {
+ // You can set rules, model, layout, variant and options.
+ // For more information, see xkeyboard-config(7).
+
+ // For example:
+ // layout "us,ru"
+ // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps"
+ options "ctrl:nocaps"
+
+ // If this section is empty, niri will fetch xkb settings
+ // from org.freedesktop.locale1. You can control these using
+ // localectl set-x11-keymap.
+ }
+
+ // Enable numlock on startup, omitting this setting disables it.
+ numlock
+ }
+
+ // Next sections include libinput settings.
+ // Omitting settings disables them, or leaves them at their default values.
+ // All commented-out settings here are examples, not defaults.
+ touchpad {
+ // off
+ tap
+ // dwt
+ // dwtp
+ // drag false
+ // drag-lock
+ natural-scroll
+ // accel-speed 0.2
+ // accel-profile "flat"
+ // scroll-method "two-finger"
+ // disabled-on-external-mouse
+ }
+
+ mouse {
+ // off
+ // natural-scroll
+ // accel-speed 0.2
+ accel-profile "flat"
+ // scroll-method "no-scroll"
+ }
+
+ trackpoint {
+ // off
+ // natural-scroll
+ // accel-speed 0.2
+ // accel-profile "flat"
+ // scroll-method "on-button-down"
+ // scroll-button 273
+ // scroll-button-lock
+ // middle-emulation
+ }
+
+ // Uncomment this to make the mouse warp to the center of newly focused windows.
+ warp-mouse-to-focus
+
+ // Focus windows and outputs automatically when moving the mouse into them.
+ // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
+ focus-follows-mouse max-scroll-amount="0%"
+}
+
+cursor {
+ xcursor-theme "MacOS-Pixel-Dark"
+ xcursor-size 12
+}
+
+gestures {
+ hot-corners {
+ off
+ }
+}
+
+output "DP-1" {
+ scale 1.0
+}
+
+output "HDMI-A-1" {
+ scale 1.0
+}
+
+layout {
+ gaps 10
+
+ center-focused-column "never"
+
+ preset-column-widths {
+ proportion 0.33333
+ proportion 0.5
+ proportion 0.66667
+ }
+
+ default-column-width { proportion 0.5; }
+
+ focus-ring {
+ off
+ }
+
+ border {
+ on
+ width 5
+ active-color "#989898"
+ inactive-color "#000000"
+ urgent-color "#9b0000"
+ }
+
+ // You can enable drop shadows for windows.
+ shadow {
+ // Uncomment the next line to enable shadows.
+ on
+
+ // By default, the shadow draws only around its window, and not behind it.
+ // Uncomment this setting to make the shadow draw behind its window.
+ //
+ // Note that niri has no way of knowing about the CSD window corner
+ // radius. It has to assume that windows have square corners, leading to
+ // shadow artifacts inside the CSD rounded corners. This setting fixes
+ // those artifacts.
+ //
+ // However, instead you may want to set prefer-no-csd and/or
+ // geometry-corner-radius. Then, niri will know the corner radius and
+ // draw the shadow correctly, without having to draw it behind the
+ // window. These will also remove client-side shadows if the window
+ // draws any.
+ //
+ // draw-behind-window true
+
+ // You can change how shadows look. The values below are in logical
+ // pixels and match the CSS box-shadow properties.
+
+ // Softness controls the shadow blur radius.
+ softness 30
+
+ // Spread expands the shadow.
+ spread 5
+
+ // Offset moves the shadow relative to the window.
+ offset x=0 y=5
+
+ // You can also change the shadow color and opacity.
+ color "#0007"
+ }
+
+ // Struts shrink the area occupied by windows, similarly to layer-shell panels.
+ // You can think of them as a kind of outer gaps. They are set in logical pixels.
+ // Left and right struts will cause the next window to the side to always be visible.
+ // Top and bottom struts will simply add outer gaps in addition to the area occupied by
+ // layer-shell panels and regular gaps.
+ struts {
+ // left 64
+ // right 64
+ // top 64
+ // bottom 64
+ }
+}
+
+spawn-at-startup "xwayland-satellite"
+spawn-at-startup "xrandr --dpi 96"
+spawn-at-startup "xss-lock -- /usr/bin/slock"
+spawn-at-startup "$HOME/.local/bin/scripts/startpage.sh"
+spawn-at-startup "$HOME/.screenlayout/twomonitors.sh"
+spawn-at-startup "picom --daemon"
+spawn-at-startup "$HOME/.fehbg"
+spawn-at-startup "xsetroot -cursor_name left_ptr"
+spawn-at-startup "playerctld"
+spawn-at-startup "foot -s"
+spawn-at-startup "swww-daemon"
+spawn-at-startup "dunst"
+// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup:
+// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
+
+hotkey-overlay {
+ // Uncomment this line to disable the "Important Hotkeys" pop-up at startup.
+ // skip-at-startup
+}
+
+// Uncomment this line to ask the clients to omit their client-side decorations if possible.
+// If the client will specifically ask for CSD, the request will be honored.
+// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
+// This option will also fix border/focus ring drawing behind some semitransparent windows.
+// After enabling or disabling this, you need to restart the apps for this to take effect.
+prefer-no-csd
+
+// You can change the path where screenshots are saved.
+// A ~ at the front will be expanded to the home directory.
+// The path is formatted with strftime(3) to give you the screenshot date and time.
+screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
+
+// You can also set this to null to disable saving screenshots to disk.
+// screenshot-path null
+
+// Animation settings.
+// The wiki explains how to configure individual animations:
+// https://niri-wm.github.io/niri/Configuration:-Animations
+animations {
+ // Uncomment to turn off all animations.
+ // off
+
+ // Slow down all animations by this factor. Values below 1 speed them up instead.
+ slowdown 0.3
+}
+
+// Window rules let you adjust behavior for individual windows.
+// Find more information on the wiki:
+// https://niri-wm.github.io/niri/Configuration:-Window-Rules
+
+// Work around WezTerm's initial configure bug
+// by setting an empty default-column-width.
+window-rule {
+ // This regular expression is intentionally made as specific as possible,
+ // since this is the default config, and we want no false positives.
+ // You can get away with just app-id="wezterm" if you want.
+ match app-id=r#"^org\.wezfurlong\.wezterm$"#
+ default-column-width {}
+}
+
+// Open the Firefox picture-in-picture player as floating by default.
+window-rule {
+ // This app-id regular expression will work for both:
+ // - host Firefox (app-id is "firefox")
+ // - Flatpak Firefox (app-id is "org.mozilla.firefox")
+ match app-id=r#"firefox$"# title="^Picture-in-Picture$"
+ open-floating true
+}
+
+window-rule {
+ match app-id="spaudio"
+ open-floating true
+ // default-floating-position x=0 y=0
+}
+
+// Example: block out two password managers from screen capture.
+// (This example rule is commented out with a "/-" in front.)
+/-window-rule {
+ match app-id=r#"^org\.keepassxc\.KeePassXC$"#
+ match app-id=r#"^org\.gnome\.World\.Secrets$"#
+
+ block-out-from "screen-capture"
+
+ // Use this instead if you want them visible on third-party screenshot tools.
+ // block-out-from "screencast"
+}
+
+// Example: enable rounded corners for all windows.
+// (This example rule is commented out with a "/-" in front.)
+window-rule {
+ geometry-corner-radius 0
+ clip-to-geometry true
+}
+
+window-rule {
+ background-effect {
+ blur false
+ }
+}
+
+binds {
+ // Keys consist of modifiers separated by + signs, followed by an XKB key name
+ // in the end. To find an XKB name for a particular key, you may use a program
+ // like wev.
+ //
+ // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
+ // when running as a winit window.
+ //
+ // Most actions that you can bind here can also be invoked programmatically with
+ // `niri msg action do-something`.
+
+ // Mod-Shift-/, which is usually the same as Mod-?,
+ // shows a list of important hotkeys.
+ Mod+Shift+Slash { show-hotkey-overlay; }
+
+ // Suggested binds for running programs: terminal, app launcher, screen locker.
+ Mod+Return hotkey-overlay-title="Open a Terminal: foot" { spawn "footclient"; }
+ Mod+E hotkey-overlay-title="Open a GNU Emacs frame" { spawn "emacs"; }
+ Mod+N hotkey-overlay-title="Open a Emacsclient frame" { spawn "emacsclient" "-c"; }
+ Mod+W hotkey-overlay-title="Open Zen browser" { spawn "zen"; }
+ Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
+ Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
+ Super+Shift+M hotkey-overlay-title="Select wallpaper" { spawn "ww.sh"; }
+
+ // Terminal launching shortcuts
+ Super+P hotkey-overlay-title="Open alsamixer" { spawn "foot" "-e" "alsamixer"; }
+ // Super+Quote hotkey-overlay-title="Open bc calculator" { spawn "foot" "-e" "bc -lq"; }
+
+
+ // Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc.
+ // Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`.
+ // For example, this is a standard bind to toggle the screen reader (orca).
+ Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; }
+
+ // Example volume keys mappings for PipeWire & WirePlumber.
+ // The allow-when-locked=true property makes them work even when the session is locked.
+ // Using spawn-sh allows to pass multiple arguments together with the command.
+ // "-l 1.0" limits the volume to 100%.
+ XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; }
+ XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
+ XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
+ XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
+
+ // Example media keys mapping using playerctl.
+ // This will work with any MPRIS-enabled media player.
+ XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; }
+ XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; }
+ XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; }
+ XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; }
+
+ Mod+Shift+P allow-when-locked=true { spawn-sh "playerctl play-pause"; }
+ Mod+Shift+BracketLeft allow-when-locked=true { spawn-sh "playerctl previous"; }
+ Mod+Shift+BracketRight allow-when-locked=true { spawn-sh "playerctl next"; }
+
+ // Example brightness key mappings for brightnessctl.
+ // You can use regular spawn with multiple arguments too (to avoid going through "sh"),
+ // but you need to manually put each argument in separate "" quotes.
+ XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
+ XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
+
+ // Open/close the Overview: a zoomed-out view of workspaces and windows.
+ // You can also move the mouse into the top-left hot corner,
+ // or do a four-finger swipe up on a touchpad.
+ Mod+Space repeat=false { toggle-overview; }
+
+ Mod+Q repeat=false { close-window; }
+
+ Mod+Left { focus-column-left; }
+ Mod+Down { focus-window-down; }
+ Mod+Up { focus-window-up; }
+ Mod+Right { focus-column-right; }
+ Mod+H { focus-column-left; }
+ // Mod+J { focus-window-down; }
+ // Mod+K { focus-window-up; }
+ Mod+L { focus-column-right; }
+
+ Mod+Ctrl+Left { move-column-left; }
+ Mod+Ctrl+Down { move-window-down; }
+ Mod+Ctrl+Up { move-window-up; }
+ Mod+Ctrl+Right { move-column-right; }
+ Mod+Ctrl+H { move-column-left; }
+ // Mod+Ctrl+J { move-window-down; }
+ // Mod+Ctrl+K { move-window-up; }
+ Mod+Ctrl+L { move-column-right; }
+
+ // Alternative commands that move across workspaces when reaching
+ // the first or last window in a column.
+ Mod+J { focus-window-or-workspace-down; }
+ Mod+K { focus-window-or-workspace-up; }
+ Mod+Shift+J { move-window-down-or-to-workspace-down; }
+ Mod+Shift+K { move-window-up-or-to-workspace-up; }
+
+ Mod+Home { focus-column-first; }
+ Mod+End { focus-column-last; }
+ Mod+Ctrl+Home { move-column-to-first; }
+ Mod+Ctrl+End { move-column-to-last; }
+
+ Mod+Shift+Left { focus-monitor-left; }
+ Mod+Shift+Down { focus-monitor-down; }
+ Mod+Shift+Up { focus-monitor-up; }
+ Mod+Shift+Right { focus-monitor-right; }
+ Mod+Shift+H { focus-monitor-left; }
+ // Mod+Shift+J { focus-monitor-down; }
+ // Mod+Shift+K { focus-monitor-up; }
+ Mod+Shift+L { focus-monitor-right; }
+
+ Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
+ Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
+
+ Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
+ Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
+ Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
+ Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
+
+ Mod+WheelScrollRight { focus-column-right; }
+ Mod+WheelScrollLeft { focus-column-left; }
+ Mod+Ctrl+WheelScrollRight { move-column-right; }
+ Mod+Ctrl+WheelScrollLeft { move-column-left; }
+
+ Mod+WheelScrollDown { focus-column-right; }
+ Mod+WheelScrollUp { focus-column-left; }
+ Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
+ Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
+
+ Mod+1 { focus-workspace 1; }
+ Mod+2 { focus-workspace 2; }
+ Mod+3 { focus-workspace 3; }
+ Mod+4 { focus-workspace 4; }
+ Mod+5 { focus-workspace 5; }
+ Mod+6 { focus-workspace 6; }
+ Mod+7 { focus-workspace 7; }
+ Mod+8 { focus-workspace 8; }
+ Mod+9 { focus-workspace 9; }
+ Mod+Ctrl+1 { move-column-to-workspace 1; }
+ Mod+Ctrl+2 { move-column-to-workspace 2; }
+ Mod+Ctrl+3 { move-column-to-workspace 3; }
+ Mod+Ctrl+4 { move-column-to-workspace 4; }
+ Mod+Ctrl+5 { move-column-to-workspace 5; }
+ Mod+Ctrl+6 { move-column-to-workspace 6; }
+ Mod+Ctrl+7 { move-column-to-workspace 7; }
+ Mod+Ctrl+8 { move-column-to-workspace 8; }
+ Mod+Ctrl+9 { move-column-to-workspace 9; }
+
+ // Alternatively, there are commands to move just a single window:
+ // Mod+Ctrl+1 { move-window-to-workspace 1; }
+
+ // Switches focus between the current and the previous workspace.
+ // Mod+Tab { focus-workspace-previous; }
+
+ // The following binds move the focused window in and out of a column.
+ // If the window is alone, they will consume it into the nearby column to the side.
+ // If the window is already in a column, they will expel it out.
+ Mod+BracketLeft { consume-or-expel-window-left; }
+ Mod+BracketRight { consume-or-expel-window-right; }
+
+ // Consume one window from the right to the bottom of the focused column.
+ Mod+Comma { consume-window-into-column; }
+ // Expel the bottom window from the focused column to the right.
+ Mod+Period { expel-window-from-column; }
+
+ // Cycle through widths set in preset-column-widths.
+ Mod+R { switch-preset-column-width; }
+ // Cycling through the presets in reverse order is also possible.
+ Mod+Shift+R { switch-preset-column-width-back; }
+
+ Mod+Ctrl+Shift+R { switch-preset-window-height; }
+ Mod+Ctrl+R { reset-window-height; }
+
+ Mod+F { maximize-column; }
+ Mod+Shift+F { fullscreen-window; }
+
+ // While maximize-column leaves gaps and borders around the window,
+ // maximize-window-to-edges doesn't: the window expands to the edges of the screen.
+ // This bind corresponds to normal window maximizing,
+ // e.g. by double-clicking on the titlebar.
+ Mod+M { maximize-window-to-edges; }
+
+ // Expand the focused column to space not taken up by other fully visible columns.
+ // Makes the column "fill the rest of the space".
+ Mod+Ctrl+F { expand-column-to-available-width; }
+
+ Mod+C { center-column; }
+
+ // Center all fully visible columns on screen.
+ Mod+Ctrl+C { center-visible-columns; }
+
+ // Finer width adjustments.
+ // This command can also:
+ // * set width in pixels: "1000"
+ // * adjust width in pixels: "-5" or "+5"
+ // * set width as a percentage of screen width: "25%"
+ // * adjust width as a percentage of screen width: "-10%" or "+10%"
+ // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
+ // set-column-width "100" will make the column occupy 200 physical screen pixels.
+ Mod+Minus { set-column-width "-10%"; }
+ Mod+Equal { set-column-width "+10%"; }
+
+ // Finer height adjustments when in column with other windows.
+ Mod+Shift+Minus { set-window-height "-10%"; }
+ Mod+Shift+Equal { set-window-height "+10%"; }
+
+ // Move the focused window between the floating and the tiling layout.
+ Mod+V { toggle-window-floating; }
+ Mod+Shift+V { switch-focus-between-floating-and-tiling; }
+
+ // Toggle tabbed column display mode.
+ // Windows in this column will appear as vertical tabs,
+ // rather than stacked on top of each other.
+ // Mod+W { toggle-column-tabbed-display; }
+
+ // Actions to switch layouts.
+ // Note: if you uncomment these, make sure you do NOT have
+ // a matching layout switch hotkey configured in xkb options above.
+ // Having both at once on the same hotkey will break the switching,
+ // since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
+ // Mod+Space { switch-layout "next"; }
+ // Mod+Shift+Space { switch-layout "prev"; }
+
+ Shift+Print { spawn "grim \"$HOME/Pictures/screenshots/pic-full-$(date '+%y%m%d-%H%M-%S').png\""; }
+ Print { spawn "grimpick"; }
+
+ // Applications such as remote-desktop clients and software KVM switches may
+ // request that niri stops processing the keyboard shortcuts defined here
+ // so they may, for example, forward the key presses as-is to a remote machine.
+ // It's a good idea to bind an escape hatch to toggle the inhibitor,
+ // so a buggy application can't hold your session hostage.
+ //
+ // The allow-inhibiting=false property can be applied to other binds as well,
+ // which ensures niri always processes them, even when an inhibitor is active.
+ Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
+
+ // The quit action will show a confirmation dialog to avoid accidental exits.
+ Mod+Shift+E { quit; }
+ Ctrl+Alt+Delete { quit; }
+
+ // Powers off the monitors. To turn them back on, do any input like
+ // moving the mouse or pressing any other key.
+ Mod+Shift+X { power-off-monitors; }
+} \ No newline at end of file
diff --git a/niri/.config/waybar/config.jsonc b/niri/.config/waybar/config.jsonc
new file mode 100644
index 0000000..d43f13c
--- /dev/null
+++ b/niri/.config/waybar/config.jsonc
@@ -0,0 +1,222 @@
+// -*- 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": 4, // Gaps between modules (4px)
+ "expand-left": true,
+ // Choose the order of the modules
+ "modules-left": [
+ "niri/workspaces",
+ "niri/window"
+ ],
+ "modules-center": [
+ ],
+ "modules-right": [
+ "pulseaudio",
+ // "mpd",
+ // "idle_inhibitor",
+ // "network",
+ // "power-profiles-daemon",
+ // "cpu",
+ // "memory",
+ // "temperature",
+ // "backlight",
+ // "keyboard-state",
+ // "sway/language",
+ // "battery",
+ // "battery#bat2",
+ "clock",
+ "tray"
+ // "custom/power"
+ ],
+ // Modules configuration
+ // "sway/workspaces": {
+ // "disable-scroll": true,
+ // "all-outputs": true,
+ // "warp-on-scroll": false,
+ // "format": "{name}: {icon}",
+ // "format-icons": {
+ // "1": "",
+ // "2": "",
+ // "3": "",
+ // "4": "",
+ // "5": "",
+ // "urgent": "",
+ // "focused": "",
+ // "default": ""
+ // }
+ // },
+ "window": {
+ "format": "{}",
+ "expand": true
+ },
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "sway/mode": {
+ "format": "<span style=\"italic\">{}</span>"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 5,
+ "consume-icons": {
+ "on": " "
+ },
+ "random-icons": {
+ "off": "<span color=\"#f53c3c\"></span> ",
+ "on": " "
+ },
+ "repeat-icons": {
+ "on": " "
+ },
+ "single-icons": {
+ "on": "1 "
+ },
+ "state-icons": {
+ "paused": "",
+ "playing": ""
+ },
+ "tooltip-format": "MPD (connected)",
+ "tooltip-format-disconnected": "MPD (disconnected)"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10,
+ // "icons": {
+ // "blueman": "bluetooth",
+ // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
+ // }
+ },
+ "clock": {
+ // "timezone": "America/New_York",
+ "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+ "format-alt": "{:%R}",
+ "format": "{:%Y-%m-%d (%a) %R}"
+ },
+ "cpu": {
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "{}% "
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
+ "critical-threshold": 80,
+ // "format-critical": "{temperatureC}°C {icon}",
+ "format": "{temperatureC}°C {icon}",
+ "format-icons": ["", "", ""]
+ },
+ "backlight": {
+ // "device": "acpi_video1",
+ "format": "{percent}% {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", ""]
+ },
+ "battery": {
+ "states": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-full": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ // "format-good": "", // An empty format will hide the module
+ // "format-full": "",
+ "format-icons": ["", "", "", "", ""]
+ },
+ "battery#bat2": {
+ "bat": "BAT2"
+ },
+ "power-profiles-daemon": {
+ "format": "{icon}",
+ "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
+ "tooltip": true,
+ "format-icons": {
+ "default": "",
+ "performance": "",
+ "balanced": "",
+ "power-saver": ""
+ }
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ // "scroll-step": 1, // %, can be a float
+ "format": "{volume}% {icon} {format_source}",
+ "format-bluetooth": "{volume}% {icon} {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": "{volume}% ",
+ "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ },
+ "on-click": "pavucontrol"
+ },
+ "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/niri/.config/waybar/style.css b/niri/.config/waybar/style.css
new file mode 100644
index 0000000..d8ac208
--- /dev/null
+++ b/niri/.config/waybar/style.css
@@ -0,0 +1,109 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: FontAwesome, Terminus;
+ font-size: 14px;
+}
+
+window#waybar {
+ /* background-color: rgba(24, 24, 24, 0.95); */
+ background-color: rgba(0, 0, 0, 0.95);
+ /* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
+ color: #ffffff;
+ /* transition-property: background-color; */
+ /* transition-duration: .5s; */
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+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;
+}
+
+#workspaces button {
+ padding: 0 0px;
+ /* background-color: transparent; */
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#power-profiles-daemon,
+#mpd {
+ padding: 0 10px;
+}
+
+#window,
+#workspaces {
+ /* margin: 0 4px; */
+}
+
+#workspaces button.active {
+ background-color: #505050;
+}
+
+/* #window { */
+/* padding: 0 10px; */
+/* background-color: #505050; */
+/* } */
+
+/* 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;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#privacy {
+ padding: 0;
+}
+
+#privacy-item {
+ padding: 0 5px;
+ color: white;
+}