summary refs log tree commit diff
path: root/.config
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-04-08 13:18:14 +0900
committerRobert Günzler <r@gnzler.io>2026-04-08 13:18:14 +0900
commitb61b58ce2c1371d6f904f108fa7feed3abfbe5c7 (patch)
tree008a5cf54ecbfffb97ddac30e44c8ab224395ab0 /.config
parentd4620f3ac119263fee90bd819eadaf84fc8d50b7 (diff)
*
Automated-commit-by: dots
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '.config')
-rw-r--r--.config/foot/colors.ini1
-rw-r--r--.config/foot/foot.ini50
-rw-r--r--.config/foot/themes/koda55
-rw-r--r--.config/foot/themes/nvim56
-rw-r--r--.config/kanshi/config8
-rw-r--r--.config/mako/colors1
-rw-r--r--.config/mako/colors-dark25
-rw-r--r--.config/mako/colors-light25
-rw-r--r--.config/mako/config35
-rw-r--r--.config/mbsyncrc66
-rw-r--r--.config/mimeapps.list7
-rw-r--r--.config/pimsync/pimsync.conf63
-rw-r--r--.config/rbw/config.json1
-rw-r--r--.config/rc/conf.d/swaybg1
-rwxr-xr-x.config/rc/init.d/fcitx57
-rwxr-xr-x.config/rc/init.d/kanshi4
-rwxr-xr-x.config/rc/init.d/mako27
-rwxr-xr-x.config/rc/init.d/pimsync10
-rwxr-xr-x.config/rc/init.d/swaybg4
-rwxr-xr-x.config/rc/init.d/syncthing14
-rwxr-xr-x.config/rc/init.d/udiskie5
-rwxr-xr-x.config/rc/init.d/waybar8
-rwxr-xr-x.config/rc/init.d/xdg-desktop-portal14
-rwxr-xr-x.config/rc/init.d/xdg-desktop-portal-darkman13
-rwxr-xr-x.config/rc/init.d/xdg-desktop-portal-gtk11
-rwxr-xr-x.config/rc/init.d/xdg-desktop-portal-wlr11
-rw-r--r--.config/rc/rc.conf2
l---------.config/rc/runlevels/default/dbus1
l---------.config/rc/runlevels/desktop/default1
l---------.config/rc/runlevels/desktop/fcitx51
l---------.config/rc/runlevels/desktop/foot1
l---------.config/rc/runlevels/desktop/kanshi1
l---------.config/rc/runlevels/desktop/mako1
l---------.config/rc/runlevels/desktop/pipewire1
l---------.config/rc/runlevels/desktop/pipewire-pulse1
l---------.config/rc/runlevels/desktop/swaybg1
l---------.config/rc/runlevels/desktop/udiskie1
l---------.config/rc/runlevels/desktop/waybar1
l---------.config/rc/runlevels/desktop/wireplumber1
l---------.config/rc/runlevels/desktop/xdg-desktop-portal1
l---------.config/rc/runlevels/desktop/xdg-desktop-portal-darkman1
l---------.config/rc/runlevels/desktop/xdg-desktop-portal-gtk1
l---------.config/rc/runlevels/desktop/xdg-desktop-portal-wlr1
l---------.config/rc/runlevels/extras/desktop1
l---------.config/rc/runlevels/extras/pimsync1
l---------.config/rc/runlevels/extras/syncthing1
-rwxr-xr-x.config/senpai/highlight9
-rw-r--r--.config/senpai/senpai.scfg15
-rw-r--r--.config/starship.toml118
-rw-r--r--.config/tridactyl/themes/r.css84
-rw-r--r--.config/tridactyl/tridactylrc141
-rw-r--r--.config/tridactyl/tridactylrc.default38
-rw-r--r--.config/tridactyl/tridactylrc.work4
-rw-r--r--.config/xdg-desktop-portal-wlr/config5
l---------.config/xdg-desktop-portal/portals.conf1
-rw-r--r--.config/xdg-desktop-portal/river-portals.conf2
-rw-r--r--.config/yt-dlp.conf1
57 files changed, 961 insertions, 0 deletions
diff --git a/.config/foot/colors.ini b/.config/foot/colors.ini
new file mode 100644
index 0000000..cfa0f38
--- /dev/null
+++ b/.config/foot/colors.ini
@@ -0,0 +1 @@
+initial-color-theme=2
diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini
new file mode 100644
index 0000000..1265616
--- /dev/null
+++ b/.config/foot/foot.ini
@@ -0,0 +1,50 @@
+# vim: commentstring=#\ %s
+include=~/.config/foot/colors.ini
+include=~/.config/foot/themes/koda
+
+# ::start style
+font=DejaVu Sans Mono, Symbols Nerd Font Mono, Noto Color Emoji
+# ::end style
+
+term=foot-direct
+bold-text-in-bright=no
+box-drawings-uses-font-glyphs=no
+resize-delay-ms=0
+initial-window-size-pixels=2560x1440
+dpi-aware=no
+pad=2x2
+
+[tweak]
+grapheme-shaping=yes
+overflowing-glyphs=yes
+font-monospace-warn=no
+max-shm-pool-size-mb=1024
+
+[colors]
+# color overwrites
+alpha=0.99
+
+[bell]
+urgent=yes
+notify=no
+
+[scrollback]
+lines=1000
+
+[mouse]
+hide-when-typing=no
+alternate-scroll-mode=no
+
+[url]
+osc8-underline=always
+
+[url-bindings]
+cancel=Escape
+
+[regex:paths]
+regex=^((\/|\~\/)([a-zA-Z0-9_\-\.]*\/?)+)
+launch=urlopen '${match}'
+
+[key-bindings]
+regex-launch=[paths] Control+Shift+p
+pipe-scrollback=[sh -c "f=$(mktemp) && cat - > $f && foot $EDITOR -t $f; rm $f"] Control+Shift+e
diff --git a/.config/foot/themes/koda b/.config/foot/themes/koda
new file mode 100644
index 0000000..d7a7591
--- /dev/null
+++ b/.config/foot/themes/koda
@@ -0,0 +1,55 @@
+# -*- conf -*-
+# Koda theme
+# See: https://github.com/oskarnurm/koda.nvim
+
+[colors]
+cursor=101010 b0b0b0
+foreground=ffffff
+background=101010
+
+selection-foreground=b0b0b0
+selection-background=272727
+
+regular0=101010
+regular1=ff7676
+regular2=a3d6a3
+regular3=ffffff
+regular4=b3b3b3
+regular5=f4b8e4
+regular6=fafafa
+regular7=a5adce
+
+bright0=666666
+bright1=ff5733
+bright2=86cd82
+bright3=d9ba73
+bright4=ffffff
+bright5=f2a4db
+bright6=5abfb5
+bright7=b5bfe2
+
+[colors2]
+cursor=ebebeb 6a6a6a
+foreground=101010
+background=faf9f5
+
+selection-foreground=101010
+selection-background=ebebeb
+
+regular0=e2e2e2
+regular1=ca0043
+regular2=407f00
+regular3=926200
+regular4=3d3d3d
+regular5=a200d1
+regular6=007d7d
+regular7=6a6a6a
+
+bright0=ababab
+bright1=f30052
+bright2=4f9a00
+bright3=b07700
+bright4=000000
+bright5=c301fb
+bright6=009797
+bright7=101010
diff --git a/.config/foot/themes/nvim b/.config/foot/themes/nvim
new file mode 100644
index 0000000..bf629c0
--- /dev/null
+++ b/.config/foot/themes/nvim
@@ -0,0 +1,56 @@
+# -*- conf -*-
+# Neovim Dark theme
+# Uses the dark color palette from the default Neovim color scheme
+# See: https://github.com/neovim/neovim/blob/fb6c059dc55c8d594102937be4dd70f5ff51614a/src/nvim/highlight_group.c#L419
+
+[colors]
+cursor=14161b e0e2ea # NvimDarkGrey2 NvimLightGrey2
+foreground=e0e2ea # NvimLightGrey2
+background=14161b # NvimDarkGrey2
+
+selection-foreground=e0e2ea # NvimLightGrey2
+selection-background=4f5258 # NvimDarkGrey4
+
+regular0=07080d # NvimDarkGrey1
+regular1=ffc0b9 # NvimLightRed
+regular2=b3f6c0 # NvimLightGreen
+regular3=fce094 # NvimLightYellow
+regular4=a6dbff # NvimLightBlue
+regular5=ffcaff # NvimLightMagenta
+regular6=8cf8f7 # NvimLightCyan
+regular7=c4c6cd # NvimLightGrey3
+
+bright0=2c2e33 # NvimDarkGrey3
+bright1=ffc0b9 # NvimLightRed
+bright2=b3f6c0 # NvimLightGreen
+bright3=fce094 # NvimLightYellow
+bright4=a6dbff # NvimLightBlue
+bright5=ffcaff # NvimLightMagenta
+bright6=8cf8f7 # NvimLightCyan
+bright7=eef1f8 # NvimLightGrey1
+
+[colors2]
+cursor=e0e2ea 14161b # NvimLightGrey2 NvimDarkGrey2
+foreground=14161b # NvimDarkGrey2
+background=e0e2ea # NvimLightGrey2
+
+selection-foreground=14161b # NvimDarkGrey2
+selection-background=9b9ea4 # NvimLightGrey4
+
+regular0=eef1f8 # NvimLightGrey1
+regular1=590008 # NvimDarkRed
+regular2=005523 # NvimDarkGreen
+regular3=6b5300 # NvimDarkYellow
+regular4=004c73 # NvimDarkBlue
+regular5=470045 # NvimDarkMagenta
+regular6=007373 # NvimDarkCyan
+regular7=2c2e33 # NvimDarkGrey3
+
+bright0=c4c6cd # NvimLightGrey3
+bright1=590008 # NvimDarkRed
+bright2=005523 # NvimDarkGreen
+bright3=6b5300 # NvimDarkYellow
+bright4=004c73 # NvimDarkBlue
+bright5=470045 # NvimDarkMagenta
+bright6=007373 # NvimDarkCyan
+bright7=07080d # NvimDarkGrey1
diff --git a/.config/kanshi/config b/.config/kanshi/config
new file mode 100644
index 0000000..9fac1c6
--- /dev/null
+++ b/.config/kanshi/config
@@ -0,0 +1,8 @@
+profile laptop {
+    output eDP-1 scale 2.0 enable
+}
+
+profile single {
+    output "Dell Inc. DELL U2518D 3C4YP87AAK3L" mode 2560x1440 position 0,0 transform normal scale 1 enable
+    output eDP-1 position 2560,0 scale 2.0 enable
+}
diff --git a/.config/mako/colors b/.config/mako/colors
new file mode 100644
index 0000000..8d074ce
--- /dev/null
+++ b/.config/mako/colors
@@ -0,0 +1 @@
+include=~/.config/mako/colors-light
diff --git a/.config/mako/colors-dark b/.config/mako/colors-dark
new file mode 100644
index 0000000..cca216d
--- /dev/null
+++ b/.config/mako/colors-dark
@@ -0,0 +1,25 @@
+font=DejaVu Sans Mono 8
+background-color=#080808
+text-color=#e0e2ea
+border-color=#70649a
+progress-color=source #70649a
+
+[urgency=high]
+border-size=2
+border-color=#ffc0b9
+
+[category=error]
+border-size=2
+border-color=#ffc0b9
+
+[category=warning]
+border-size=2
+border-color=#fce094
+
+[category=success]
+border-size=2
+border-color=#b3f6c0
+
+[category=alert]
+border-size=0
+background-color=#590008
diff --git a/.config/mako/colors-light b/.config/mako/colors-light
new file mode 100644
index 0000000..a07a751
--- /dev/null
+++ b/.config/mako/colors-light
@@ -0,0 +1,25 @@
+font=DejaVu Sans Mono 8
+background-color=#fffffb
+text-color=#080808
+border-color=#70649a
+progress-color=source #70649a
+
+[urgency=high]
+border-size=2
+border-color=#ffc0b9
+
+[category=error]
+border-size=2
+border-color=#ffc0b9
+
+[category=warning]
+border-size=2
+border-color=#fce094
+
+[category=success]
+border-size=2
+border-color=#b3f6c0
+
+[category=alert]
+border-size=0
+background-color=#ffc0b9
diff --git a/.config/mako/config b/.config/mako/config
new file mode 100644
index 0000000..0329579
--- /dev/null
+++ b/.config/mako/config
@@ -0,0 +1,35 @@
+include=~/.config/mako/colors
+
+group-by=app-name,summary
+default-timeout=2000
+max-history=20
+max-icon-size=32
+max-visible=6
+
+border-size=1
+padding=6
+
+# on-button-right=exec makoctl menu -- fuzzel -d -p '󱧌 select action '
+
+# [urgency=high]
+# # on-notify=exec pw-play --media-role=event --volume=0.5 $HOME/music/bell.wav
+#
+# [category=error]
+# # on-notify=exec pw-play --media-role=event --volume=0.5 $HOME/music/bell.wav
+#
+# [category=warning]
+# # on-notify=exec pw-play --media-role=event --volume=0.5 $HOME/music/bell.wav
+#
+# [category=success]
+# # on-notify=exec pw-play --media-role=event --volume=0.5 $HOME/music/bell.wav
+#
+# [category=alert]
+# anchor=top-center
+# # on-notify=exec pw-play --media-role=event --volume=0.5 $HOME/music/bell.wav
+#
+# [summary=reminder]
+# # on-notify=exec pw-play --media-role=event --volume=0.5 $HOME/music/bell.wav
+#
+#
+# [mode=dnd]
+# invisible=1
diff --git a/.config/mbsyncrc b/.config/mbsyncrc
new file mode 100644
index 0000000..7ace06a
--- /dev/null
+++ b/.config/mbsyncrc
@@ -0,0 +1,66 @@
+## remote
+
+IMAPStore gnzler
+Host imap.mailfence.com
+User robert@gnzler.de
+PassCmd "rbw get 68b0ea26-733a-43cd-b8f8-e8ecc98de072"
+TLSType IMAPS
+
+IMAPStore gandi
+Host mail.gandi.net
+User robert@gnzler.io
+PassCmd "rbw get 67436053-fde1-43c3-9544-6a5289f08c76"
+TLSType IMAPS
+
+# IMAPStore selfhosted
+# Host localhost:1430
+# User postmaster@gnzler.de
+# PassCmd "secretmenu -P postmaster@gnzler.io | head -n1"
+# TLSType None
+
+## on-disk
+
+MaildirStore local
+Path ~/mail/gnzler/
+INBOX ~/mail/gnzler/INBOX
+SubFolders Verbatim
+
+MaildirStore local.bak
+Path ~/mail/gnzler.bak/
+INBOX ~/mail/gnzler.bak/INBOX
+SubFolders Verbatim
+
+## channel
+
+Channel gnzler
+Far :gnzler:
+Near :local:
+Patterns *
+# Sync Pull New
+SyncState *
+# WATCH OUT WHAT YOU'RE DOING
+Create Both
+Remove Both
+Expunge Both
+
+## backup/restore
+
+Channel pull
+Far :gandi:
+Near :local.bak:
+Patterns *
+SyncState *
+Sync Pull
+Create Near
+Remove Near
+Expunge Near
+
+Channel restore
+Far :gnzler:
+Near :local:
+Patterns lists lists/*
+SyncState *
+Sync Push
+Create Far
+Remove Far
+Expunge Far
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
new file mode 100644
index 0000000..013ffc9
--- /dev/null
+++ b/.config/mimeapps.list
@@ -0,0 +1,7 @@
+[Default Applications]
+x-scheme-handler/https=urlopen.desktop
+x-scheme-handler/http=urlopen.desktop
+application/pdf=org.gnome.Papers.desktop;
+
+[Added Associations]
+application/rss+xml=nvim.desktop;
diff --git a/.config/pimsync/pimsync.conf b/.config/pimsync/pimsync.conf
new file mode 100644
index 0000000..8fed018
--- /dev/null
+++ b/.config/pimsync/pimsync.conf
@@ -0,0 +1,63 @@
+# A folder where vdirsyncer can store some metadata about each pair.
+status_path "~/.local/state/pimsync/status/"
+
+# PAIRS
+
+pair calendars_robert {
+	storage_a calendars_robert_local
+	storage_b gzr_robert_calendar_remote
+	collections all
+}
+
+pair contacts_robert {
+	storage_a contacts_local
+	storage_b gzr_robert_contacts_remote
+	collections all
+}
+
+pair calendars_goro {
+	storage_a calendars_goro_local
+	storage_b gzr_goro_calendar_remote
+	# NOTE: only sync events
+	collection events
+}
+
+# STORAGE LOCAL
+
+storage calendars_robert_local {
+	type vdir/icalendar
+	path ~/calendars/robert/
+	fileext ics
+}
+
+storage calendars_goro_local {
+	type vdir/icalendar
+	path ~/calendars/goro/
+	fileext ics
+}
+
+storage contacts_local {
+	type vdir/vcard
+	path ~/contacts/
+	fileext vcf
+}
+
+# STORAGE GZR
+
+storage gzr_robert_calendar_remote {
+	type caldav
+	url https://cal.gzr.im/dav/
+	username robert
+}
+
+storage gzr_robert_contacts_remote {
+	type carddav
+	url https://cal.gzr.im/dav/
+	username robert
+}
+
+storage gzr_goro_calendar_remote {
+	type caldav
+	url https://cal.gzr.im/dav/
+	username goro
+}
diff --git a/.config/rbw/config.json b/.config/rbw/config.json
new file mode 100644
index 0000000..e85dafe
--- /dev/null
+++ b/.config/rbw/config.json
@@ -0,0 +1 @@
+{"email":"robert@gnzler.io","base_url":"https://vault.gzr.im","identity_url":null,"lock_timeout":3600}
diff --git a/.config/rc/conf.d/swaybg b/.config/rc/conf.d/swaybg
new file mode 100644
index 0000000..7a1d4db
--- /dev/null
+++ b/.config/rc/conf.d/swaybg
@@ -0,0 +1 @@
+command_args="--output=* --color=#70649a --image='${XDG_PICTURES_DIR}/bg.jpg' --mode=fill"
diff --git a/.config/rc/init.d/fcitx5 b/.config/rc/init.d/fcitx5
new file mode 100755
index 0000000..c28da7d
--- /dev/null
+++ b/.config/rc/init.d/fcitx5
@@ -0,0 +1,7 @@
+#!/sbin/openrc-run
+DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
+
+command="/usr/bin/fcitx5"
+command_args="--replace"
+supervisor=supervise-daemon
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
diff --git a/.config/rc/init.d/kanshi b/.config/rc/init.d/kanshi
new file mode 100755
index 0000000..dae7403
--- /dev/null
+++ b/.config/rc/init.d/kanshi
@@ -0,0 +1,4 @@
+#!/sbin/openrc-run
+command="/usr/bin/kanshi"
+supervisor=supervise-daemon
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
diff --git a/.config/rc/init.d/mako b/.config/rc/init.d/mako
new file mode 100755
index 0000000..40e8ec3
--- /dev/null
+++ b/.config/rc/init.d/mako
@@ -0,0 +1,27 @@
+#!/sbin/openrc-run
+DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
+
+description="Lightweight Wayland notification daemon"
+
+command="/usr/bin/mako"
+supervisor=supervise-daemon
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
+
+depend() {
+	need dbus
+	provide notification-daemon
+}
+
+start_pre() {
+	if [ -z "$WAYLAND_DISPLAY" ]; then
+		eerror "\$WAYLAND_DISPLAY unset, can't proceed."
+		return 1
+	fi
+}
+
+extra_started_commands="reload"
+description_reload="Reload mako configuration using makoctl"
+reload() {
+	makoctl reload
+	eend $? "Reloaded mako configuration"
+}
diff --git a/.config/rc/init.d/pimsync b/.config/rc/init.d/pimsync
new file mode 100755
index 0000000..3ff1112
--- /dev/null
+++ b/.config/rc/init.d/pimsync
@@ -0,0 +1,10 @@
+#!/sbin/openrc-run
+
+description="Synchronise calendars and contacts"
+
+command="/bin/pimsync"
+command_args="daemon -r 3"
+notify=fd:3
+
+supervisor=supervise-daemon
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
diff --git a/.config/rc/init.d/swaybg b/.config/rc/init.d/swaybg
new file mode 100755
index 0000000..02f85e8
--- /dev/null
+++ b/.config/rc/init.d/swaybg
@@ -0,0 +1,4 @@
+#!/sbin/openrc-run
+command="/usr/bin/swaybg"
+supervisor=supervise-daemon
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
diff --git a/.config/rc/init.d/syncthing b/.config/rc/init.d/syncthing
new file mode 100755
index 0000000..083b092
--- /dev/null
+++ b/.config/rc/init.d/syncthing
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+supervisor=supervise-daemon
+command="/usr/bin/syncthing"
+command_args="serve --no-browser --no-restart --logflags=0"
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
+
+extra_started_commands="browser"
+browser() {
+	syncthing browser
+	eend $? "Opened syncthing gui in the browser"
+}
diff --git a/.config/rc/init.d/udiskie b/.config/rc/init.d/udiskie
new file mode 100755
index 0000000..55a521b
--- /dev/null
+++ b/.config/rc/init.d/udiskie
@@ -0,0 +1,5 @@
+#!/sbin/openrc-run
+command="/usr/bin/udiskie"
+command_args="--config=$XDG_CONFIG_HOME/udiskie/config.yml --smart-tray"
+supervisor=supervise-daemon
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
diff --git a/.config/rc/init.d/waybar b/.config/rc/init.d/waybar
new file mode 100755
index 0000000..7eba0da
--- /dev/null
+++ b/.config/rc/init.d/waybar
@@ -0,0 +1,8 @@
+#!/sbin/openrc-run
+command="/usr/bin/waybar"
+supervisor=supervise-daemon
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
+
+depend() {
+	need pipewire-pulse wireplumber
+}
diff --git a/.config/rc/init.d/xdg-desktop-portal b/.config/rc/init.d/xdg-desktop-portal
new file mode 100755
index 0000000..aeacb00
--- /dev/null
+++ b/.config/rc/init.d/xdg-desktop-portal
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
+
+supervisor=supervise-daemon
+command="/usr/libexec/xdg-desktop-portal"
+command_args="--replace $command_args"
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
+
+depend() {
+	need dbus \
+		xdg-desktop-portal-gtk \
+		xdg-desktop-portal-wlr \
+		xdg-desktop-portal-darkman
+}
diff --git a/.config/rc/init.d/xdg-desktop-portal-darkman b/.config/rc/init.d/xdg-desktop-portal-darkman
new file mode 100755
index 0000000..8067c95
--- /dev/null
+++ b/.config/rc/init.d/xdg-desktop-portal-darkman
@@ -0,0 +1,13 @@
+#!/sbin/openrc-run
+
+name="darkman"
+description="Control dark mode and light mode transitions"
+
+supervisor=supervise-daemon
+command="/usr/bin/darkman"
+command_args="run"
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
+
+depend() {
+	need dbus
+}
diff --git a/.config/rc/init.d/xdg-desktop-portal-gtk b/.config/rc/init.d/xdg-desktop-portal-gtk
new file mode 100755
index 0000000..91bcae1
--- /dev/null
+++ b/.config/rc/init.d/xdg-desktop-portal-gtk
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
+
+supervisor=supervise-daemon
+command="/usr/libexec/xdg-desktop-portal-gtk"
+command_args="--replace"
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
+
+depend() {
+	need dbus
+}
diff --git a/.config/rc/init.d/xdg-desktop-portal-wlr b/.config/rc/init.d/xdg-desktop-portal-wlr
new file mode 100755
index 0000000..c041a05
--- /dev/null
+++ b/.config/rc/init.d/xdg-desktop-portal-wlr
@@ -0,0 +1,11 @@
+#!/sbin/openrc-run
+DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
+
+supervisor=supervise-daemon
+command="/usr/libexec/xdg-desktop-portal-wlr"
+command_args="--replace"
+error_logger="logger -t '${RC_SVCNAME}' -p daemon.error"
+
+depend() {
+	need dbus
+}
diff --git a/.config/rc/rc.conf b/.config/rc/rc.conf
new file mode 100644
index 0000000..8e5e305
--- /dev/null
+++ b/.config/rc/rc.conf
@@ -0,0 +1,2 @@
+rc_default_runlevel="default"
+rc_env_allow="*"
diff --git a/.config/rc/runlevels/default/dbus b/.config/rc/runlevels/default/dbus
new file mode 120000
index 0000000..779b9fb
--- /dev/null
+++ b/.config/rc/runlevels/default/dbus
@@ -0,0 +1 @@
+/etc/user/init.d/dbus
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/default b/.config/rc/runlevels/desktop/default
new file mode 120000
index 0000000..446d58f
--- /dev/null
+++ b/.config/rc/runlevels/desktop/default
@@ -0,0 +1 @@
+../default
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/fcitx5 b/.config/rc/runlevels/desktop/fcitx5
new file mode 120000
index 0000000..a7b382d
--- /dev/null
+++ b/.config/rc/runlevels/desktop/fcitx5
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/fcitx5
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/foot b/.config/rc/runlevels/desktop/foot
new file mode 120000
index 0000000..81b4c9f
--- /dev/null
+++ b/.config/rc/runlevels/desktop/foot
@@ -0,0 +1 @@
+/etc/user/init.d/foot
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/kanshi b/.config/rc/runlevels/desktop/kanshi
new file mode 120000
index 0000000..2cb87ce
--- /dev/null
+++ b/.config/rc/runlevels/desktop/kanshi
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/kanshi
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/mako b/.config/rc/runlevels/desktop/mako
new file mode 120000
index 0000000..5b74415
--- /dev/null
+++ b/.config/rc/runlevels/desktop/mako
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/mako
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/pipewire b/.config/rc/runlevels/desktop/pipewire
new file mode 120000
index 0000000..1eeaabd
--- /dev/null
+++ b/.config/rc/runlevels/desktop/pipewire
@@ -0,0 +1 @@
+/etc/user/init.d/pipewire
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/pipewire-pulse b/.config/rc/runlevels/desktop/pipewire-pulse
new file mode 120000
index 0000000..516d346
--- /dev/null
+++ b/.config/rc/runlevels/desktop/pipewire-pulse
@@ -0,0 +1 @@
+/etc/user/init.d/pipewire-pulse
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/swaybg b/.config/rc/runlevels/desktop/swaybg
new file mode 120000
index 0000000..0718212
--- /dev/null
+++ b/.config/rc/runlevels/desktop/swaybg
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/swaybg
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/udiskie b/.config/rc/runlevels/desktop/udiskie
new file mode 120000
index 0000000..079b70f
--- /dev/null
+++ b/.config/rc/runlevels/desktop/udiskie
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/udiskie
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/waybar b/.config/rc/runlevels/desktop/waybar
new file mode 120000
index 0000000..8a3aa9e
--- /dev/null
+++ b/.config/rc/runlevels/desktop/waybar
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/waybar
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/wireplumber b/.config/rc/runlevels/desktop/wireplumber
new file mode 120000
index 0000000..a90f273
--- /dev/null
+++ b/.config/rc/runlevels/desktop/wireplumber
@@ -0,0 +1 @@
+/etc/user/init.d/wireplumber
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/xdg-desktop-portal b/.config/rc/runlevels/desktop/xdg-desktop-portal
new file mode 120000
index 0000000..23c0d95
--- /dev/null
+++ b/.config/rc/runlevels/desktop/xdg-desktop-portal
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/xdg-desktop-portal
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/xdg-desktop-portal-darkman b/.config/rc/runlevels/desktop/xdg-desktop-portal-darkman
new file mode 120000
index 0000000..c08fa19
--- /dev/null
+++ b/.config/rc/runlevels/desktop/xdg-desktop-portal-darkman
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/xdg-desktop-portal-darkman
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/xdg-desktop-portal-gtk b/.config/rc/runlevels/desktop/xdg-desktop-portal-gtk
new file mode 120000
index 0000000..1712823
--- /dev/null
+++ b/.config/rc/runlevels/desktop/xdg-desktop-portal-gtk
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/xdg-desktop-portal-gtk
\ No newline at end of file
diff --git a/.config/rc/runlevels/desktop/xdg-desktop-portal-wlr b/.config/rc/runlevels/desktop/xdg-desktop-portal-wlr
new file mode 120000
index 0000000..683895c
--- /dev/null
+++ b/.config/rc/runlevels/desktop/xdg-desktop-portal-wlr
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/xdg-desktop-portal-wlr
\ No newline at end of file
diff --git a/.config/rc/runlevels/extras/desktop b/.config/rc/runlevels/extras/desktop
new file mode 120000
index 0000000..2c7c348
--- /dev/null
+++ b/.config/rc/runlevels/extras/desktop
@@ -0,0 +1 @@
+../desktop
\ No newline at end of file
diff --git a/.config/rc/runlevels/extras/pimsync b/.config/rc/runlevels/extras/pimsync
new file mode 120000
index 0000000..daafb20
--- /dev/null
+++ b/.config/rc/runlevels/extras/pimsync
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/pimsync
\ No newline at end of file
diff --git a/.config/rc/runlevels/extras/syncthing b/.config/rc/runlevels/extras/syncthing
new file mode 120000
index 0000000..d63c652
--- /dev/null
+++ b/.config/rc/runlevels/extras/syncthing
@@ -0,0 +1 @@
+/home/robert/.config/rc/init.d/syncthing
\ No newline at end of file
diff --git a/.config/senpai/highlight b/.config/senpai/highlight
new file mode 100755
index 0000000..3f2f3e9
--- /dev/null
+++ b/.config/senpai/highlight
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -ex
+escape() {
+	printf "%s" "$1" | sed 's#\\#\\\\#g'
+}
+
+fyi -a senpai -i senpai -c reminder \
+	"[$BUFFER] $SENDER" \
+	"$(escape "$MESSAGE")"
diff --git a/.config/senpai/senpai.scfg b/.config/senpai/senpai.scfg
new file mode 100644
index 0000000..6d5044f
--- /dev/null
+++ b/.config/senpai/senpai.scfg
@@ -0,0 +1,15 @@
+address chat.sr.ht
+username robertgzr@hibiki
+nickname robertgzr
+password-cmd rbw get f283788a-7798-4fa8-82c5-1a3e7f560fbf
+
+pane-widths {
+	nicknames 12
+}
+
+colors {
+	nicks base
+	nicks fixed {
+		self cyan
+	}
+}
diff --git a/.config/starship.toml b/.config/starship.toml
new file mode 100644
index 0000000..724526a
--- /dev/null
+++ b/.config/starship.toml
@@ -0,0 +1,118 @@
+"$schema" = 'https://starship.rs/config-schema.json'
+
+format = """
+⋮ \
+$container\
+$username\
+$hostname\
+$directory\
+\
+$git_branch\
+$git_commit\
+$git_state\
+\
+$golang\
+$nodejs\
+$python\
+$rust\
+$zig\
+\
+$jobs\
+$status\
+$cmd_duration\
+\
+$character\
+"""
+
+add_newline = false
+command_timeout = 100
+
+[container]
+symbol = ' '
+format = '[$symbol\[$name\]]($style) '
+disabled = false
+
+[username]
+format = '[$user@]($style)'
+style_user = 'dimmed'
+disabled = false
+
+[hostname]
+format = '[$hostname]($style) '
+style = 'dimmed'
+disabled = false
+
+[directory]
+truncation_length = 0
+truncate_to_repo = false
+style = "yellow"
+read_only = ''
+disabled = false
+
+[git_branch]
+format = '[$symbol$branch]($style) '
+disabled = false
+
+[git_commit]
+disabled = true
+
+[git_state]
+disabled = false
+
+[python]
+detect_extensions = []
+symbol = '󰌠 '
+format = '[${symbol}${pyenv_prefix}(${version})(\($virtualenv\))]($style) '
+disabled = true
+
+[nodejs]
+detect_extensions = []
+symbol = '󰌞 '
+format = '[$symbol($version)]($style) '
+disabled = true
+
+[golang]
+detect_extensions = []
+symbol = ' '
+format = '[$symbol($version)]($style) '
+disabled = true
+
+[rust]
+detect_extensions = []
+symbol = ' '
+format = '[$symbol($version)]($style) '
+disabled = true
+
+[zig]
+detect_extensions = []
+detect_files = ['build.zig.zon']
+symbol = ' '
+format = '[$symbol($version)]($style) '
+disabled = true
+
+[jobs]
+symbol = '∆'
+disabled = false
+
+[shlvl]
+symbol = '☰'
+disabled = false
+
+[status]
+symbol = '󰐰 $status'
+not_executable_symbol = '󰜺 '
+not_found_symbol = '󰍉 '
+sigint_symbol = '^C'
+signal_symbol = ' $status'
+format = '[$symbol]($style) '
+map_symbol = true
+disabled = false
+
+[cmd_duration]
+min_time = 1_200_000 # 100 * 60 * 20
+disabled = false
+
+[character]
+format = '$symbol '
+success_symbol = '[❯](bold)'
+error_symbol = '[❯](bold red)'
diff --git a/.config/tridactyl/themes/r.css b/.config/tridactyl/themes/r.css
new file mode 100644
index 0000000..05b47a6
--- /dev/null
+++ b/.config/tridactyl/themes/r.css
@@ -0,0 +1,84 @@
+/* vim: fdm=marker
+ * */
+:root.TridactylThemeR {
+    --tridactyl-fg: #f9f9fa;
+    --tridactyl-bg: #2a2a2e;
+
+    --tridactyl-scrollbar-color: var(--tridactyl-fg);
+
+    --tridactyl-cmdl-fg: #d7d7db;
+    --tridactyl-cmdl-bg: var(--tridactyl-bg);
+
+    --tridactyl-header-first-bg: #38383d;
+    --tridactyl-header-second-bg: #2a2a2e;
+    --tridactyl-header-third-bg: #0c0c0d;
+
+    --tridactyl-cmplt-border-top: 1px solid #2a2a2e;
+
+    --tridactyl-url-fg: #86de74;
+    --tridactyl-url-bg: var(--tridactyl-bg);
+
+    --tridactyl-of-fg: #fce19f;
+    --tridactyl-of-bg: var(--tridactyl-bg);
+
+    --tridactyl-hintspan-fg: #f9f9fa;
+    --tridactyl-hintspan-bg: rgb(185, 142, 255);
+
+    --tridactyl-hint-fg: var(--tridactyl-hintspan-fg);
+    --tridactyl-hint-bg: rgba(185, 142, 255, 0.15);
+    --tridactyl-hint-outline: 1px solid var(--tridactyl-hintspan-bg);
+
+    --tridactyl-hint-active-fg: var(--tridactyl-hint-fg);
+    --tridactyl-hint-active-bg: #fff89e;
+    --tridactyl-hint-active-outline: 2px solid #fff89e;
+
+
+    --tridactyl-highlight-box-fg: var(--tridactyl-bg);
+    --tridactyl-highlight-box-bg: var(--tridactyl-fg);
+}
+
+:root.TridactylThemeR.TridactylOwnNamespace input[id^="spoiler"] ~ .spoiler {
+    border-color: var(--tridactyl-bg);
+}
+
+:root.TridactylThemeR.TridactylOwnNamespace a {
+    color: var(--tridactyl-hintspan-bg);
+}
+
+:root.TridactylThemeR #command-line-holder {
+    order: 1;
+}
+
+:root.TridactylThemeR #completions {
+    order: 2;
+    border-top: 1px solid var(--tridactyl-complt-bg);
+}
+
+:root.TridactylThemeR #completions .sectionHeader {
+    display: none;
+}
+
+:root.TridactylThemeR #tridactyl-colon::before {
+    margin-left: 2px;
+    content: " > ";
+}
+
+:root.TridactylThemeR #completions .focused,
+:root.TridactylThemeR #completions .focused .url {
+    color: var(--tridactyl-hintspan-bg);
+    background: var(--tridactyl-hint-bg);
+    text-decoration: italic;
+}
+
+:root.TridactylThemeR #cmdline_iframe {
+    position: fixed !important;
+    bottom: unset;
+    top: -1px !important;
+    left: 0% !important;
+    box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 15px !important;
+    /* opacity: 0.9; */
+}
+
+:root.TridactylThemeR.TridactylOwnNamespace input[id^="spoiler"] ~ .spoiler {
+    border-color: var(--tridactyl-hintspan-bg);
+}
diff --git a/.config/tridactyl/tridactylrc b/.config/tridactyl/tridactylrc
new file mode 100644
index 0000000..526b7eb
--- /dev/null
+++ b/.config/tridactyl/tridactylrc
@@ -0,0 +1,141 @@
+" vim: ft=vim
+sanitise tridactyllocal tridactylsync
+colors r
+
+set browser librewolf
+set allowautofocus false
+set searchengine duckduckgonoai
+set editorcmd foot -a foot-float -T tridactyl-editor -- nvim
+set historyresults 50
+" set newtab https://html.duckduckgo.com
+set allowautofocus true
+set newtabfocus page
+set leavegithubalone true
+" set blacklistkeys ["/","<Space>",";"]
+
+set modeindicator true
+set modeindicatorshowkeys true
+
+" remove annoying binds
+unbind <C-f>
+unbind <C-a>
+unbind --mode=ex <C-a> " select all in cmdline
+unbind --mode=browser <C-,>
+
+bind n findnext 1
+bind N findnext -1
+
+" hint: mpv/video
+set exaliases.mpvsafe js -p tri.excmds.shellescape(JS_ARG).then(u => tri.excmds.exclaim_quiet(`play-mpv ${u}`))
+bind gv composite get_current_url | mpvsafe
+bind yv composite getclip | mpvsafe
+bind ;v hint -W mpvsafe
+
+"bind ;e hint -hW js -p tri.excmds.exclaim_quiet(`${tri.config.get('editorcmd')} /tmp/tridactl.${document.location.hostname}.txt '+normal!i${JS_ARG}'`)
+
+set exaliases.imgsafe js -p tri.excmds.shellescape(JS_ARG).then(u => tri.excmds.exclaim_quiet(`fyi 'tridactyl::mvi' ${u} && mvi ${u}`))
+bind ;i composite hint -Jpipe img | js -p JS_ARG.src | imgsafe
+
+bind gp composite get_current_url | winopen -popup
+bind g1 tab 2
+bind g2 tab 3
+bind g3 tab 4
+bind g4 tab 5
+bind gb tab #
+
+# mapswap
+command mapswap js tri.excmds.tabopen("https://mapswap.trailsta.sh/swap/#type="+(()=>{let q=x=>document.querySelector(x);return q('.leaflet-container')?'l':q('.maplibregl-map')||q('.mapboxgl-map')?'m':q('.ol-viewport')?'ol':''})()+"&url="+encodeURIComponent(window.location))
+bind gms mapswap
+
+" hackernews hinting
+bindurl news.ycombinator.com ;c hint -fr \d+\scomments
+bindurl news.ycombinator.com gr hint -c [class*="storylink"]
+
+" ddg result hinting
+bindurl duckduckgo.com gr hint -c article > div > h2
+
+" fix github
+unbindurl github.com /
+
+" fix gitlab
+unbindurl gitlab.freedesktop.org /
+
+" fix youtube
+seturl youtube.com noiframe true
+unbindurl youtube.com f
+unbindurl youtube.com 1
+unbindurl youtube.com 2
+unbindurl youtube.com 3
+unbindurl youtube.com 4
+unbindurl youtube.com 5
+unbindurl youtube.com 6
+unbindurl youtube.com 7
+unbindurl youtube.com 8
+unbindurl youtube.com 9
+unbindurl youtube.com <Space>
+bindurl youtube.com h hint
+bindurl youtube.com T tabopen ddg.gg
+bindurl youtube.com C recontain personal
+
+" fix twitch
+unbindurl twitch.tv <Space>
+
+" fix reddit
+seturl reddit.com allowautofocus true
+unbindurl reddit.com <Escape>
+unbindurl reddit.com j
+unbindurl reddit.com k
+unbindurl reddit.com N
+unbindurl reddit.com P
+unbindurl reddit.com n
+unbindurl reddit.com p
+unbindurl reddit.com a
+unbindurl reddit.com z
+unbindurl reddit.com c
+" unbindurl reddit.com r
+unbindurl reddit.com s
+unbindurl reddit.com h
+unbindurl reddit.com x
+unbindurl reddit.com l
+
+" fix 4chan
+unbindurl boards.4chan.*.org x
+unbindurl boards.4chan.*.org T
+unbindurl boards.4chan.*.org B
+unbindurl boards.4chan.*.org n
+unbindurl boards.4chan.*.org p
+unbindurl boards.4chan.*.org F
+unbindurl boards.4chan.*.org W
+unbindurl boards.4chan.*.org <C-j>
+unbindurl boards.4chan.*.org <C-k>
+
+" fix nebula
+unbindurl nebula.tv f
+unbindurl nebula.tv k
+unbindurl nebula.tv m
+unbindurl nebula.tv c
+unbindurl nebula.tv s
+
+" fix zigdocs
+unbindurl ziglang.org s
+
+bindurl wiki.openstreetmap.org --mode=normal E editor
+bindurl wiki.openstreetmap.org --mode=input E editor
+bindurl wikipedia.org --mode=normal E editor
+bindurl wikipedia.org --mode=input E editor
+
+" start in ignore mode
+blacklistadd console.hetzner.cloud/console
+blacklistadd docs.google.com
+blacklistadd gather.town
+blacklistadd monkeytype.com
+blacklistadd typeform.com
+blacklistadd typingclub.com
+blacklistadd maplibre.org
+blacklistadd excalidraw.com
+
+" almost fully disable tridactyl
+seturl localhost* superignore true
+
+" put autocontains into the per-profile config
+js tri.native.getProfile().then(p => tri.excmds.source_quiet(`~/.config/tridactyl/tridactylrc.${last(p.Path.split('.'))}`))
diff --git a/.config/tridactyl/tridactylrc.default b/.config/tridactyl/tridactylrc.default
new file mode 100644
index 0000000..e505eec
--- /dev/null
+++ b/.config/tridactyl/tridactylrc.default
@@ -0,0 +1,38 @@
+autocontain -u ^https?://www\.google\.com/(maps|mail) google
+autocontain -s lh3\.google\.com google
+autocontain -s accounts\.google\.com google
+autocontain -s myaccount\.google\.com google
+autocontain -s myadcenter\.google\.com google
+autocontain -s myactivity\.google\.com google
+autocontain -s calendar\.google\.com google
+autocontain -s maps\.google\.com google
+autocontain -s gmail\.com google
+autocontain -s mail\.google\.com google
+autocontain -s photos\.google\.com google
+autocontain -s photos\.fife\.usercontent\.google\.com google
+autocontain -s takeout\.google\.com google
+autocontain -s timeline\.google\.com google
+autocontain -s youtube\.com google
+autocontain -s youtu\.be google
+autocontain -s docs\.google\.com google
+autocontain -s takeout\.google\.com google
+autocontain -s cloud\.google\.com google
+autocontain -s lens\.google\.com google
+autocontain -s lens\.google\.com google
+autocontain -s chat\.google\.com google
+autocontain -s docs\.google\.com google
+autocontain -s takeout-.*\.google\.com google
+autocontain -s drive\.google\.com google
+
+autocontain -s banking\.dkb\.de banking
+autocontain -s app\.n26\.com banking
+
+autocontain -s amazon\.(com|de|co\.jp) amazon
+
+autocontain -s bakabt\.me weeb
+autocontain -s nyaa\.si weeb
+autocontain -s feralhosting\.com weeb
+autocontain -s reddit\.com weeb
+autocontain -s kitsu\.app weeb
+autocontain -s trakt\.tv weeb
+autocontain -s anilist\.co weeb
diff --git a/.config/tridactyl/tridactylrc.work b/.config/tridactyl/tridactylrc.work
new file mode 100644
index 0000000..93b6f33
--- /dev/null
+++ b/.config/tridactyl/tridactylrc.work
@@ -0,0 +1,4 @@
+blacklistadd linear.app
+bind gm tab meet.google.com
+unbindurl meet\.google\.com --mode=normal <C-d>
+" blacklistadd meet.google.com
diff --git a/.config/xdg-desktop-portal-wlr/config b/.config/xdg-desktop-portal-wlr/config
new file mode 100644
index 0000000..2a9cbb3
--- /dev/null
+++ b/.config/xdg-desktop-portal-wlr/config
@@ -0,0 +1,5 @@
+[screencast]
+#chooser_type=simple
+#chooser_cmd=slurp -b '#000000aa' -c '#4E437188' -w 50 -f '%o' -or
+exec_before=makoctl mode -a off
+exec_after=makoctl mode -r off
diff --git a/.config/xdg-desktop-portal/portals.conf b/.config/xdg-desktop-portal/portals.conf
new file mode 120000
index 0000000..c0cf083
--- /dev/null
+++ b/.config/xdg-desktop-portal/portals.conf
@@ -0,0 +1 @@
+river-portals.conf
\ No newline at end of file
diff --git a/.config/xdg-desktop-portal/river-portals.conf b/.config/xdg-desktop-portal/river-portals.conf
new file mode 100644
index 0000000..29949c0
--- /dev/null
+++ b/.config/xdg-desktop-portal/river-portals.conf
@@ -0,0 +1,2 @@
+[preferred]
+default=darkman;wlr;gtk;
diff --git a/.config/yt-dlp.conf b/.config/yt-dlp.conf
new file mode 100644
index 0000000..457cd5e
--- /dev/null
+++ b/.config/yt-dlp.conf
@@ -0,0 +1 @@
+--embed-metadata