diff --git a/.Xresources b/.Xresources
index 9ae04d3..985f26c 100644
--- a/.Xresources
+++ b/.Xresources
@@ -19,10 +19,12 @@
*.color13: #FF92D0
*.color14: #9AEDFE
*.color15: #E6E6E6
-*.font: Hack:size=10:antialias=true:autohint=true
+*.font: Fira Code:pixelsize=12:antialias=true:autohint=true
*.termName: xterm-256color
*.shell: /usr/bin/zsh
*.tabspaces: 4
*.borderpx: 2
Xft.dpi: 96
+Xcursor.theme: Bibata-Modern-Amber
+Xcursor.size: 24
diff --git a/.config/.gitignore b/.config/.gitignore
index 7efd55f..40a4097 100644
--- a/.config/.gitignore
+++ b/.config/.gitignore
@@ -8,7 +8,11 @@
!/alacritty/
!/bspwm/
!/dmenu/
+!/dmenu-wl/
+!/fish/
!/nitrogen/
!/polybar/
!/rustfmt/
+!/river/
!/sxhkd/
+!/waybar/
diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
index 3ff6198..7e89767 100755
--- a/.config/bspwm/bspwmrc
+++ b/.config/bspwm/bspwmrc
@@ -63,14 +63,14 @@ else
fi
fi
-if [ -x "$(command -v /usr/lib/xfce-polkit/xfce-polkit)" ]; then
- /usr/lib/xfce-polkit/xfce-polkit &
+if [ -x "$(command -v /usr/bin/lxqt-policykit-agent)" ]; then
+ /usr/bin/lxqt-policykit-agent &
return_val=$?
if [ $return_val -ne 0 ]; then
- echo >&2 "Couldn't fire up xfce-polkit: $return_val"
+ echo >&2 "Couldn't fire up lxqt-policykit: $return_val"
fi
else
- echo >&2 "Can't seem to find the /usr/lib/xfce-polkit/xfce-polkit executable"
+ echo >&2 "Can't seem to find the /usr/bin/lxqt-policykit-agent executable"
fi
if [ -x "$(command -v polybar)" ]; then
diff --git a/.config/dmenu-wl/.gitignore b/.config/dmenu-wl/.gitignore
new file mode 100644
index 0000000..06c65f4
--- /dev/null
+++ b/.config/dmenu-wl/.gitignore
@@ -0,0 +1,8 @@
+/*
+/*/
+!/.gitignore
+
+!/dmenu_bspwm_desktop
+!/dmenu_bspwm_desktop_content
+!/dmenu_bspwm_monitor
+!/dmenu_run_with_aliases
diff --git a/.config/dmenu/dmenu_bspwm_desktop b/.config/dmenu-wl/dmenu_bspwm_desktop
similarity index 100%
rename from .config/dmenu/dmenu_bspwm_desktop
rename to .config/dmenu-wl/dmenu_bspwm_desktop
diff --git a/.config/dmenu/dmenu_bspwm_desktop_content b/.config/dmenu-wl/dmenu_bspwm_desktop_content
similarity index 100%
rename from .config/dmenu/dmenu_bspwm_desktop_content
rename to .config/dmenu-wl/dmenu_bspwm_desktop_content
diff --git a/.config/dmenu/dmenu_bspwm_monitor b/.config/dmenu-wl/dmenu_bspwm_monitor
similarity index 100%
rename from .config/dmenu/dmenu_bspwm_monitor
rename to .config/dmenu-wl/dmenu_bspwm_monitor
diff --git a/.config/dmenu-wl/dmenu_run_with_aliases b/.config/dmenu-wl/dmenu_run_with_aliases
new file mode 100755
index 0000000..f10faa6
--- /dev/null
+++ b/.config/dmenu-wl/dmenu_run_with_aliases
@@ -0,0 +1,9 @@
+#!/usr/bin/env zsh
+
+if [[ -f $HOME/.zshenv ]]; then
+ source $HOME/.zshenv
+fi
+
+command_to_run=$({ alias | awk '{split($0,alias,"="); print alias[1];}' ; dmenu-wl_path ; } | sort | dmenu-wl -i -fn "Fira Code:pixelsize=12:antialias=true:autohint=true" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2" "$@")
+
+eval ${command_to_run} &
diff --git a/.config/dmenu/.gitignore b/.config/dmenu/.gitignore
index 06c65f4..a4cd279 100644
--- a/.config/dmenu/.gitignore
+++ b/.config/dmenu/.gitignore
@@ -2,7 +2,6 @@
/*/
!/.gitignore
-!/dmenu_bspwm_desktop
-!/dmenu_bspwm_desktop_content
-!/dmenu_bspwm_monitor
-!/dmenu_run_with_aliases
+!/bspwm
+!/run
+!/run_zsh
diff --git a/.config/dmenu/bspwm b/.config/dmenu/bspwm
new file mode 100755
index 0000000..6311484
--- /dev/null
+++ b/.config/dmenu/bspwm
@@ -0,0 +1,142 @@
+#!/bin/sh
+
+dmenu_string="Wrong parameter"
+
+function desktop() {
+ case $1 in
+ "rename")
+ dmenu_string="Rename desktop to: " ;;
+ "delete")
+ dmenu_string="Really delete this desktop? (n = abort): " ;;
+ "swap")
+ dmenu_string="Swap desktop with desktop: " ;;
+ "swapfollow")
+ dmenu_string="Swap and follow desktop with desktop: " ;;
+ esac
+
+ desktop=""
+
+ if [[ $1 == "delete" || $1 == "rename" ]]; then
+ desktop=$(echo "" | dmenu -i -fn "$get_font" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2" -p "$dmenu_string")
+ else
+ if [[ $1 != "bubbleprev" && $1 != "bubblenext" && $1 != "save" && $1 != "load" ]]; then
+ desktop=$(bspc query -m focused -D --names | dmenu -i -fn "$get_font" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2" -p "$dmenu_string")
+ fi
+ fi
+
+ case $1 in
+ "rename")
+ if [[ $desktop != "" ]];
+ then
+ bspc desktop -n $desktop
+ fi
+ ;;
+ "delete")
+ echo $desktop
+ if [[ $desktop != "n" ]];
+ then
+ bspc desktop -r
+ fi
+ ;;
+ "swap")
+ bspc desktop -s $desktop ;;
+ "swapfollow")
+ bspc desktop -s $desktop --follow ;;
+ "bubbleprev")
+ bspc desktop -b prev ;;
+ "bubblenext")
+ bspc desktop -b next ;;
+ "save")
+ bspwm-save ;;
+ "load")
+ bspwm-load ;;
+ esac
+}
+
+function desktop_content() {
+ case $1 in
+ "goto")
+ dmenu_string="Switch to desktop: " ;;
+ "move")
+ dmenu_string="Move node to desktop: " ;;
+ "movefollow")
+ dmenu_string="Move and follow node to desktop: " ;;
+ esac
+
+ desktop=$(bspc query -m focused -D --names | dmenu -i -fn "$get_font" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2" -p "$dmenu_string")
+
+ found=false
+
+ desktop_list=$(bspc query -m focused -D --names)
+ desktop_array=$(echo $desktop_list | tr '\n' ' ')
+
+ if [[ $desktop != "" ]]; then
+ for name in $desktop_array; do
+ if [[ $name == $desktop ]]; then
+ found=true
+ fi
+ done
+ fi
+
+ if [ ! $found = true ]; then
+ bspc monitor -d $desktop_array $desktop
+ fi
+
+ case $1 in
+ "goto")
+ bspc desktop -f $desktop ;;
+ "move")
+ bspc node -d $desktop ;;
+ "movefollow")
+ bspc node -d $desktop --follow ;;
+ esac
+}
+
+function monitor() {
+ case $1 in
+ "goto")
+ dmenu_string="Switch to monitor: " ;;
+ "swap")
+ dmenu_string="Swap monitor with monitor: " ;;
+ "movenode")
+ dmenu_string="Move node to monitor: " ;;
+ "movenodefollow")
+ dmenu_string="Move and follow node to monitor: " ;;
+ "movedesktop")
+ dmenu_string="Move desktop to monitor: " ;;
+ "movedesktopfollow")
+ dmenu_string="Move and follow desktop to monitor: " ;;
+ esac
+
+ monitor=$(bspc query -M --names | dmenu -i -fn "$get_font" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2" -p "$dmenu_string")
+
+ case $1 in
+ "goto")
+ bspc monitor -f $monitor ;;
+ "swap")
+ bspc monitor -s $monitor ;;
+ "movenode")
+ bspc node -m $monitor ;;
+ "movenodefollow")
+ bspc node -m $monitor --follow ;;
+ "movedesktop")
+ bspc desktop -m $monitor ;;
+ "movedesktopfollow")
+ bspc desktop -m $monitor --follow ;;
+ esac
+}
+
+if [ ! -z $SHELL ]; then
+ get_font="$($SHELL -c "get-font")"
+else
+ get_font="Fira Code:pixelsize=12:antialias=true:autohint=true"
+fi
+
+case $1 in
+ "desktop")
+ desktop $2 ;;
+ "desktop_content")
+ desktop_content $2 ;;
+ "monitor")
+ monitor $2 ;;
+esac
diff --git a/.config/dmenu/run b/.config/dmenu/run
new file mode 100755
index 0000000..c1ba5b0
--- /dev/null
+++ b/.config/dmenu/run
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+fallback_command="dmenu_run -i -fn \"Fira Code:pixelsize=12:antialias=true:autohint=true\" -nb \"#282a36\" -nf \"#f8f8f2\" -sb \"#44475a\" -sf \"#f8f8f2\""
+
+if [ ! -z $SHELL ]; then
+ case $SHELL in
+ *"fish")
+ fish -c "dmenu_fish" ;;
+ *"zsh")
+ $HOME/.config/dmenu/run_zsh ;;
+ *)
+ eval ${fallback_command} &
+ esac
+else
+ eval ${fallback_command} &
+fi
diff --git a/.config/dmenu/dmenu_run_with_aliases b/.config/dmenu/run_zsh
similarity index 58%
rename from .config/dmenu/dmenu_run_with_aliases
rename to .config/dmenu/run_zsh
index ba00fa7..5c8dae0 100755
--- a/.config/dmenu/dmenu_run_with_aliases
+++ b/.config/dmenu/run_zsh
@@ -4,6 +4,6 @@ if [[ -f $HOME/.zshenv ]]; then
source $HOME/.zshenv
fi
-command_to_run=$({ alias | awk '{split($0,alias,"="); print alias[1];}' ; dmenu_path ; } | sort | dmenu -i -fn $(get-font) -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2" "$@")
+command_to_run=$({ alias | awk '{split($0,alias,"="); print alias[1];}' ; dmenu_path ; } | sort | dmenu -i -fn "$(get-font)" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2" "$@")
eval ${command_to_run} &
diff --git a/.config/fish/.gitignore b/.config/fish/.gitignore
new file mode 100644
index 0000000..4dff74f
--- /dev/null
+++ b/.config/fish/.gitignore
@@ -0,0 +1,11 @@
+/*
+/*/
+!/.gitignore
+
+
+!/config.fish
+!/fish_variables
+
+!/completions/
+!/conf.d/
+!/functions
diff --git a/.config/fish/completions/watson.fish b/.config/fish/completions/watson.fish
new file mode 100644
index 0000000..e2cf7ce
--- /dev/null
+++ b/.config/fish/completions/watson.fish
@@ -0,0 +1,189 @@
+# copy this into ~/.config/fish/completions/ to enable autocomplete for the watson time tracker
+#
+function __fish_watson_needs_sub -d "provides a list of sub commands"
+ set cmd (commandline -opc)
+ if [ (count $cmd) -eq 1 -a $cmd[1] = 'watson' ]
+ return 0
+ end
+ return 1
+end
+
+function __fish_watson_using_command -d "determine if watson is using the passed command"
+ set cmd (commandline -opc)
+ if [ (count $cmd) -ge 2 -a $cmd[1] = 'watson' ]
+ if [ $argv[1] = $cmd[2] ]
+ return 0
+ end
+ return 1
+ end
+ return 1
+end
+
+function __fish_watson_get_projects -d "return a list of projects"
+ command watson projects
+end
+
+function __fish_watson_get_tags -d "return a list of tags"
+ command watson tags
+end
+
+function __fish_watson_has_project -d "determine if watson is using a passed command and if it has a project"
+ set cmd (commandline -opc)
+ if [ (count $cmd) -gt 2 -a $cmd[1] = 'watson' ]
+ if [ $argv[1] = $cmd[2] ]
+ if contains "$cmd[3]" (__fish_watson_get_projects)
+ return 0
+ end
+ end
+ end
+ return 1
+end
+
+function __fish_watson_has_from -d "determine if watson is using a passed command and if it is using from"
+ set cmd (commandline -opc)
+ if [ (count $cmd) -gt 2 -a $cmd[1] = 'watson' ]
+ if [ $argv[1] = $cmd[2] ]
+ if contains -- "$cmd[3]" -f --from
+ return 0
+ end
+ end
+ end
+ return 1
+end
+
+function __fish_watson_get_frames -d "return a list of frames" #TODO, use watson logs to get more info
+ command watson frames
+end
+
+function __fish_watson_needs_project -d "check if we need a project"
+ set cmd (commandline -opc)
+ if [ (count $cmd) -ge 2 -a $cmd[1] = 'watson' ]
+ if [ $argv[1] = $cmd[2] ]
+ for i in $cmd
+ if contains $i (__fish_watson_get_projects)
+ return 1 # return 1 because we alredy have a project
+ end
+ end
+ return 0 # we are using $argv as our command and the command does not contain any projects
+ end
+ end
+ return 1
+end
+
+# if a backend.url is set, use it in the command description
+if [ -e ~/.config/watson/config ]
+ set url_string (command watson config backend.url 2> /dev/null)
+ if test -n "$url_string"
+ set url $url_string
+ end
+else
+ set url "a remote Crick server"
+end
+
+# ungrouped
+complete -f -c watson -n '__fish_watson_needs_sub' -a cancel -d "Cancel the last start command"
+complete -f -c watson -n '__fish_watson_needs_sub' -a frames -d "Display the list of all frame IDs"
+complete -f -c watson -n '__fish_watson_needs_sub' -a help -d "Display help information"
+complete -f -c watson -n '__fish_watson_needs_sub' -a projects -d "Display the list of projects"
+complete -f -c watson -n '__fish_watson_needs_sub' -a sync -d "sync your work with $url"
+complete -f -c watson -n '__fish_watson_needs_sub' -a tags -d "Display the list of tags"
+
+# add
+complete -f -c watson -n '__fish_watson_needs_sub' -a add -d "Add time for project with tag(s) that was not tracked live"
+complete -f -c watson -n '__fish_watson_using_command add' -s f -l from -d "Start date for add"
+complete -f -c watson -n '__fish_watson_has_from add' -s t -l to -d "end date for add"
+complete -f -c watson -n '__fish_watson_using_command add' -s c -l confirm-new-project -d "Confirm addition of new project"
+complete -f -c watson -n '__fish_watson_using_command add' -s b -l confirm-new-tag -d "Confirm addition of new tag"
+
+# aggregate
+complete -f -c watson -n '__fish_watson_needs_sub' -a aggregate -d "Display a report of the time spent on each project aggregated by day"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s c -l current -d "include the running frame"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s C -l no-current -d "exclude the running frame (default)"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s f -l from -d "Start date for aggregate"
+complete -f -c watson -n '__fish_watson_has_from aggregate' -s t -l to -d "end date for aggregate"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s p -l project -d "restrict to project" -a "(__fish_watson_get_projects)"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s T -l tag -d "restrict to tag" -a "(__fish_watson_get_tags)"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s j -l json -d "output json"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s s -l csv -d "output csv"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s g -l pager -d "view through pager"
+complete -f -c watson -n '__fish_watson_using_command aggregate' -s G -l no-pager -d "don't vew through pager"
+
+# config
+complete -f -c watson -n '__fish_watson_needs_sub' -a config -d "Get and set configuration options"
+complete -f -c watson -n '__fish_watson_using_command config' -s e -l edit -d "Edit the config with an editor"
+
+# edit
+complete -f -c watson -n '__fish_watson_needs_sub' -a edit -d "Edit a frame"
+complete -f -c watson -n '__fish_watson_using_command edit' -a "(__fish_watson_get_frames)"
+
+# log
+complete -f -c watson -n '__fish_watson_needs_sub' -a log -d "Display sessions during the given timespan"
+complete -f -c watson -n '__fish_watson_using_command log' -s c -l current -d "include the running frame"
+complete -f -c watson -n '__fish_watson_using_command log' -s C -l no-current -d "exclude the running frame (default)"
+complete -f -c watson -n '__fish_watson_using_command log' -s f -l from -d "Start date for log"
+complete -f -c watson -n '__fish_watson_has_from log' -s t -l to -d "end date for log"
+complete -f -c watson -n '__fish_watson_using_command log' -s y -l year -d "show the last year"
+complete -f -c watson -n '__fish_watson_using_command log' -s m -l month -d "show the last month"
+complete -f -c watson -n '__fish_watson_using_command log' -s l -l luna -d "show the last lunar cycle"
+complete -f -c watson -n '__fish_watson_using_command log' -s w -l week -d "show week-to-day"
+complete -f -c watson -n '__fish_watson_using_command log' -s d -l day -d "show today"
+complete -f -c watson -n '__fish_watson_using_command log' -s a -l all -d "show all"
+complete -f -c watson -n '__fish_watson_using_command log' -s p -l project -d "restrict to project" -a "(__fish_watson_get_projects)"
+complete -f -c watson -n '__fish_watson_using_command log' -s T -l tag -d "restrict to tag" -a "(__fish_watson_get_tags)"
+complete -f -c watson -n '__fish_watson_using_command log' -s j -l json -d "output json"
+complete -f -c watson -n '__fish_watson_using_command log' -s s -l csv -d "output csv"
+complete -f -c watson -n '__fish_watson_using_command log' -s g -l pager -d "view through pager"
+complete -f -c watson -n '__fish_watson_using_command log' -s G -l no-pager -d "don't vew through pager"
+
+# merge
+complete -f -c watson -n '__fish_watson_needs_sub' -a merge -d "merge existing frames with conflicting ones"
+complete -f -c watson -n '__fish_watson_using_command merge' -s f -l force -d "silently merge"
+
+# remove
+complete -f -c watson -n '__fish_watson_needs_sub' -a remove -d "Remove a frame"
+complete -f -c watson -n '__fish_watson_using_command remove' -a "(__fish_watson_get_frames)"
+complete -f -c watson -n '__fish_watson_using_command remove' -s f -l force -d "silently remove"
+
+# rename
+complete -f -c watson -n '__fish_watson_needs_sub' -a rename -d "Rename a project or tag"
+complete -f -c watson -n '__fish_watson_using_command rename' -a "(__fish_watson_get_projects) (__fish_watson_get_tags)"
+
+# report
+complete -f -c watson -n '__fish_watson_needs_sub' -a report -d "Display a report of time spent"
+complete -f -c watson -n '__fish_watson_using_command report' -s c -l current -d "include the running frame"
+complete -f -c watson -n '__fish_watson_using_command report' -s C -l no-current -d "exclude the running frame (default)"
+complete -f -c watson -n '__fish_watson_using_command report' -s f -l from -d "Start date for report"
+complete -f -c watson -n '__fish_watson_has_from report' -s t -l to -d "end date for report"
+complete -f -c watson -n '__fish_watson_using_command report' -s y -l year -d "show the last year"
+complete -f -c watson -n '__fish_watson_using_command report' -s m -l month -d "show the last month"
+complete -f -c watson -n '__fish_watson_using_command report' -s l -l luna -d "show the last lunar cycle"
+complete -f -c watson -n '__fish_watson_using_command report' -s w -l week -d "show week-to-day"
+complete -f -c watson -n '__fish_watson_using_command report' -s d -l day -d "show today"
+complete -f -c watson -n '__fish_watson_using_command report' -s a -l all -d "show all"
+complete -f -c watson -n '__fish_watson_using_command report' -s p -l project -d "restrict to project" -a "(__fish_watson_get_projects)"
+complete -f -c watson -n '__fish_watson_using_command report' -s T -l tag -d "restrict to tag" -a "(__fish_watson_get_tags)"
+complete -f -c watson -n '__fish_watson_using_command report' -s j -l json -d "output json"
+complete -f -c watson -n '__fish_watson_using_command report' -s s -l csv -d "output csv"
+complete -f -c watson -n '__fish_watson_using_command report' -s g -l pager -d "view through pager"
+complete -f -c watson -n '__fish_watson_using_command report' -s G -l no-pager -d "don't vew through pager"
+
+# restart
+complete -f -c watson -n '__fish_watson_needs_sub' -a restart -d "Restart monitoring time for a stopped project"
+complete -f -c watson -n '__fish_watson_using_command restart' -s s -l stop -d "stop running project"
+complete -f -c watson -n '__fish_watson_using_command restart' -s S -l no-stop -d "do not stop running project"
+complete -f -c watson -n '__fish_watson_using_command restart' -a "(__fish_watson_get_frames)"
+
+# start
+complete -f -c watson -n '__fish_watson_needs_sub' -a start -d "Start monitoring time for a project"
+complete -f -c watson -n '__fish_watson_needs_project start' -a "(__fish_watson_get_projects)"
+complete -f -c watson -n '__fish_watson_has_project start' -a "+(__fish_watson_get_tags)"
+
+# status
+complete -f -c watson -n '__fish_watson_needs_sub' -a status -d "Display when the current project was started and time spent"
+complete -f -c watson -n '__fish_watson_using_command status' -s p -l project -d "only show project"
+complete -f -c watson -n '__fish_watson_using_command status' -s t -l tags -d "only show tags"
+complete -f -c watson -n '__fish_watson_using_command status' -s e -l elapsed -d "only show elapsed time"
+
+# stop
+complete -f -c watson -n '__fish_watson_needs_sub' -a stop -d "Stop monitoring time for the current project"
+complete -f -c watson -n '__fish_watson_using_command stop' -l at -d "Stop frame at this time (YYYY-MM-DDT)?HH:MM(:SS)?"
diff --git a/.config/fish/conf.d/env.fish b/.config/fish/conf.d/env.fish
new file mode 100644
index 0000000..4dca111
--- /dev/null
+++ b/.config/fish/conf.d/env.fish
@@ -0,0 +1,19 @@
+set -x LANG "en_US.UTF-8"
+set -x EDITOR "nvim"
+set -x TERMINAL "alacritty"
+
+set -x SSH_AUTH_SOCK "$(gpgconf --list-dir socketdir)/S.gpg-agent.ssh"
+set -x GPG_TTY $(tty)
+
+set -x CXXFLAGS "-std=c++14"
+
+set -x LD_LIBRARY_PATH $LD_LIBRARY_PATH
+set -x XDG_CONFIG_HOME "$HOME/.config"
+
+set -x JUCE_PATH "$HOME/JUCE"
+
+set -x LIBGL_ALWAYS_INDIRECT 1
+
+set -x WINIT_X11_SCALE_FACTOR 1
+
+set -x MOZ_ENABLE_WAYLAND 1
diff --git a/.config/fish/conf.d/path.fish.example b/.config/fish/conf.d/path.fish.example
new file mode 100644
index 0000000..90a70e5
--- /dev/null
+++ b/.config/fish/conf.d/path.fish.example
@@ -0,0 +1 @@
+set -x PATH "$HOME/.local/share/gem/ruby/3.0.0/bin" "$HOME/.dotnet/tools" $PATH
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
new file mode 100644
index 0000000..f285542
--- /dev/null
+++ b/.config/fish/config.fish
@@ -0,0 +1,12 @@
+if command -q starship
+ starship init fish | source
+end
+
+if command -q zoxide
+ zoxide init fish | source
+end
+
+set fish_cursor_default block
+set fish_cursor_insert line
+set fish_cursor_replace_one underscore
+set fish_cursor_visual block
diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables
new file mode 100644
index 0000000..1f3533f
--- /dev/null
+++ b/.config/fish/fish_variables
@@ -0,0 +1,33 @@
+# This file contains fish universal variable definitions.
+# VERSION: 3.0
+SETUVAR __fish_initialized:3400
+SETUVAR fish_color_autosuggestion:555\x1ebrblack
+SETUVAR fish_color_cancel:\x2dr
+SETUVAR fish_color_command:blue
+SETUVAR fish_color_comment:red
+SETUVAR fish_color_cwd:green
+SETUVAR fish_color_cwd_root:red
+SETUVAR fish_color_end:green
+SETUVAR fish_color_error:brred
+SETUVAR fish_color_escape:brcyan
+SETUVAR fish_color_history_current:\x2d\x2dbold
+SETUVAR fish_color_host:normal
+SETUVAR fish_color_host_remote:yellow
+SETUVAR fish_color_normal:normal
+SETUVAR fish_color_operator:brcyan
+SETUVAR fish_color_param:cyan
+SETUVAR fish_color_quote:yellow
+SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
+SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d111
+SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
+SETUVAR fish_color_status:red
+SETUVAR fish_color_user:brgreen
+SETUVAR fish_color_valid_path:\x2d\x2dunderline
+SETUVAR fish_greeting:
+SETUVAR fish_key_bindings:fish_vi_key_bindings
+SETUVAR fish_pager_color_completion:normal
+SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di
+SETUVAR fish_pager_color_prefix:cyan\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
+SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
+SETUVAR fish_pager_color_selected_background:\x2dr
+SETUVAR fish_user_paths:/home/dustvoice/\x2elocal/bin\x1e/usr/local/bin
diff --git a/.config/fish/functions/battery-monitor.fish b/.config/fish/functions/battery-monitor.fish
new file mode 100644
index 0000000..8569bab
--- /dev/null
+++ b/.config/fish/functions/battery-monitor.fish
@@ -0,0 +1,3 @@
+function battery-monitor --description 'Simple stat overview regarding battery charge and power supply connection'
+ watch -t -n 60 '( if [ -f /sys/class/power_supply/ACAD/online ] && [ $(cat /sys/class/power_supply/ACAD/online) == "1" ]; then printf "Power connected\n"; else printf "Power disconnected\n"; fi; printf "\nBattery capacity: "; cat /sys/class/power_supply/BAT1/capacity; printf "\n(Updated every 60s)"; )'
+end
diff --git a/.config/fish/functions/binance_miner.fish b/.config/fish/functions/binance_miner.fish
new file mode 100644
index 0000000..28e9186
--- /dev/null
+++ b/.config/fish/functions/binance_miner.fish
@@ -0,0 +1,3 @@
+function binance_miner --wraps='ethminer --farm-recheck 200 -P stratum+tcp://DustVoiceETH.Linux@ethash.poolbinance.com:1800' --description 'alias binance_miner=ethminer --farm-recheck 200 -P stratum+tcp://DustVoiceETH.Linux@ethash.poolbinance.com:1800'
+ ethminer --farm-recheck 200 -P stratum+tcp://DustVoiceETH.Linux@ethash.poolbinance.com:1800 $argv;
+end
diff --git a/.config/fish/functions/bspwm-load.fish b/.config/fish/functions/bspwm-load.fish
new file mode 100644
index 0000000..1c29dcc
--- /dev/null
+++ b/.config/fish/functions/bspwm-load.fish
@@ -0,0 +1,12 @@
+function bspwm-load-custom
+ bspwm-workspaces-init
+
+ if test -e $BSPWM_FILES/$argv[1]
+ bspwm-save-custom $argv[2] $argv[2]
+ bspc monitor -d $(< $BSPWM_FILES/$argv[1])
+ end
+end
+
+function bspwm-load --description 'Load previously saved bspwm workspaces'
+ bspwm-load-custom workspaces workspaces.prev_save
+end
diff --git a/.config/fish/functions/bspwm-save.fish b/.config/fish/functions/bspwm-save.fish
new file mode 100644
index 0000000..8f18b8b
--- /dev/null
+++ b/.config/fish/functions/bspwm-save.fish
@@ -0,0 +1,13 @@
+function bspwm-save-custom
+ bspwm-workspaces-init
+
+ if test -e $BSPWM_FILES/$argv[1]
+ cp $BSPWM_FILES/$argv[1] $BSPWM_FILES/$argv[2]
+ end
+
+ bspc query -m focused -D --names | tr '\n' ' ' | sed 's/ $//g' > $BSPWM_FILES/$argv[1]
+end
+
+function bspwm-save --description 'Save current bspwm workspaces'
+ bspwm-save-custom workspaces workspaces.prev_save
+end
diff --git a/.config/fish/functions/bspwm-workspace-init.fish b/.config/fish/functions/bspwm-workspace-init.fish
new file mode 100644
index 0000000..fd041dd
--- /dev/null
+++ b/.config/fish/functions/bspwm-workspace-init.fish
@@ -0,0 +1,7 @@
+function bspwm-workspaces-init
+ if not set -q BSPWM_FILES
+ set -x BSPWM_FILES "$HOME/.local/share/bspwm"
+ end
+
+ mkdir -p $BSPWM_FILES
+end
diff --git a/.config/fish/functions/check-iommu.fish b/.config/fish/functions/check-iommu.fish
new file mode 100644
index 0000000..d4ff72e
--- /dev/null
+++ b/.config/fish/functions/check-iommu.fish
@@ -0,0 +1,9 @@
+function check-iommu --description 'Check iommu groups'
+ for g in /sys/kernel/iommu_groups/*
+ echo "IOMMU Group ${g##*/}:"
+
+ for d in $g/devices/*
+ echo -e "\t$(lspci -nns ${d##*/})"
+ end
+ end
+end
diff --git a/.config/fish/functions/construct_column_aware_prompt.fish b/.config/fish/functions/construct_column_aware_prompt.fish
new file mode 100644
index 0000000..a255f19
--- /dev/null
+++ b/.config/fish/functions/construct_column_aware_prompt.fish
@@ -0,0 +1,43 @@
+function construct_column_aware_prompt -a prompt_prefix prompt_dir
+ set -l prompt_concat "$prompt_prefix$prompt_dir"
+
+ if test (expr length "$prompt_concat") -le $COLUMNS
+ echo $prompt_prefix$prompt_dir
+ else
+ if test (expr length "$prompt_prefix") -le $COLUMNS
+ set -l split_prompt_concat (string split "/" $prompt_dir)
+
+ if test (count $split_prompt_concat) -lt 2
+ echo (string sub -s 1 -l (math $COLUMNS - (expr length "$prompt_prefix")) $prompt_dir)
+ else
+ for i in (seq (count $split_prompt_concat))
+ if test (expr length "> $split_prompt_concat[$i]/") -gt $COLUMNS
+ set split_prompt_concat[$i] (string sub -s 1 -l (math $COLUMNS - 8) $split_prompt_concat[$i])'[...]'
+ end
+ end
+
+ set -l tmp_lines "$prompt_prefix"
+
+ for item in $split_prompt_concat
+ set -l tmp_line "$tmp_lines$item/"
+ if test (expr length "$tmp_line") -le $COLUMNS
+ set tmp_lines $tmp_line
+ else
+ echo $tmp_lines
+ set tmp_lines "> $item/"
+ end
+ end
+
+ set -l tmp_lines_length (expr length "$tmp_lines")
+ if test $tmp_lines_length -gt 0
+ echo (string sub -s 1 -l (math $tmp_lines_length - 1) $tmp_lines)
+ end
+ end
+ else
+ set -l rec (construct_column_aware_prompt "" $prompt_dir)
+ for item in rec
+ echo $item
+ end
+ end
+ end
+end
diff --git a/.config/fish/functions/devkitARM.fish b/.config/fish/functions/devkitARM.fish
new file mode 100644
index 0000000..8b1dc4e
--- /dev/null
+++ b/.config/fish/functions/devkitARM.fish
@@ -0,0 +1,3 @@
+function devkitARM --description 'Shadow arm-none-eabi binaries with the devkitARM ones'
+ set -x PATH "/opt/devkitpro/devkitARM/bin" $PATH
+end
diff --git a/.config/fish/functions/dmenu_fish.fish b/.config/fish/functions/dmenu_fish.fish
new file mode 100644
index 0000000..7e43595
--- /dev/null
+++ b/.config/fish/functions/dmenu_fish.fish
@@ -0,0 +1,7 @@
+function dmenu_fish --description 'Open fish agnostic dmenu'
+ set fns "$(string replace -a ', ' \n $(functions))"
+
+ set commands $(string join \n $fns $(dmenu_path) | sort | dmenu -i -fn "$(get-font)" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2")
+
+ eval $command_to_run &
+end
diff --git a/.config/fish/functions/ea.fish b/.config/fish/functions/ea.fish
new file mode 100644
index 0000000..8e314ef
--- /dev/null
+++ b/.config/fish/functions/ea.fish
@@ -0,0 +1,3 @@
+function ea --wraps='exa -lah' --description 'alias ea exa -lah'
+ exa -lah $argv;
+end
diff --git a/.config/fish/functions/ee.fish b/.config/fish/functions/ee.fish
new file mode 100644
index 0000000..747f4a0
--- /dev/null
+++ b/.config/fish/functions/ee.fish
@@ -0,0 +1,3 @@
+function ee --wraps='exa -lh' --description 'alias ee exa -lh'
+ exa -lh $argv;
+end
diff --git a/.config/fish/functions/es.fish b/.config/fish/functions/es.fish
new file mode 100644
index 0000000..302f577
--- /dev/null
+++ b/.config/fish/functions/es.fish
@@ -0,0 +1,3 @@
+function es --wraps=exa --description 'alias es exa'
+ exa $argv;
+end
diff --git a/.config/fish/functions/esa.fish b/.config/fish/functions/esa.fish
new file mode 100644
index 0000000..21e60e3
--- /dev/null
+++ b/.config/fish/functions/esa.fish
@@ -0,0 +1,3 @@
+function esa --wraps='exa -a' --description 'alias esa exa -a'
+ exa -a $argv;
+end
diff --git a/.config/fish/functions/firefox-private.fish b/.config/fish/functions/firefox-private.fish
new file mode 100644
index 0000000..5217fce
--- /dev/null
+++ b/.config/fish/functions/firefox-private.fish
@@ -0,0 +1,3 @@
+function firefox-private --wraps='firefox --private-window' --description 'alias firefox-private=firefox --private-window'
+ firefox --private-window $argv;
+end
diff --git a/.config/fish/functions/fish_prompt.fish b/.config/fish/functions/fish_prompt.fish
new file mode 100644
index 0000000..727b296
--- /dev/null
+++ b/.config/fish/functions/fish_prompt.fish
@@ -0,0 +1,24 @@
+function fish_prompt --description 'Write out the prompt'
+ if test (id -u) -eq 0
+ set prompt_symbol '#'
+ else
+ set prompt_symbol '$'
+ end
+
+ set -l prompt_prefix (set_color yellow)(whoami)'@'(set_color purple)(prompt_hostname)' '
+ set -l prompt_dir (set_color green)(prompt_pwd)
+
+ set -l column_aware_prompt (construct_column_aware_prompt $prompt_prefix $prompt_dir)
+
+ if test -z $WINDOW
+ for dir in $column_aware_prompt
+ echo $dir
+ end
+
+ set_color normal
+
+ echo $prompt_symbol' '
+ else
+ printf '%s%s@%s%s%s (%s)%s%s%s\n%s ' (set_color yellow) (whoami) (set_color purple) (prompt_hostname) (set_color white) (echo $WINDOW) (set_color green) (prompt_pwd) (set_color normal) $prompt_symbol
+ end
+end
diff --git a/.config/fish/functions/fish_user_key_bindings.fish b/.config/fish/functions/fish_user_key_bindings.fish
new file mode 100644
index 0000000..5de85da
--- /dev/null
+++ b/.config/fish/functions/fish_user_key_bindings.fish
@@ -0,0 +1,3 @@
+function fish_user_key_bindings
+ fish_vi_key_bindings
+end
diff --git a/.config/fish/functions/get-font.fish b/.config/fish/functions/get-font.fish
new file mode 100644
index 0000000..5706d8c
--- /dev/null
+++ b/.config/fish/functions/get-font.fish
@@ -0,0 +1,14 @@
+function get-font
+ set fallback_font "Fira Code:pixelsize=12:antialias=true:autohint=true"
+ set font ""
+
+ if command -q xgetres
+ if not set font $(xgetres font)
+ set font $fallback_font
+ end
+ else
+ set font $fallback_font
+ end
+
+ echo "$font"
+end
diff --git a/.config/fish/functions/hyperv-forward.fish b/.config/fish/functions/hyperv-forward.fish
new file mode 100644
index 0000000..fa3fe1e
--- /dev/null
+++ b/.config/fish/functions/hyperv-forward.fish
@@ -0,0 +1,26 @@
+function hyperv-gpg-agent
+ set socket_path "$HOME/.gnupg/S.gpg-agent"
+ set host_ip $(ip route show 0.0.0.0/0 dev eth0 | cut -d\ -f3)
+
+ if test -e $socket_path
+ rm $socket_path
+ end
+
+ setsid socat UNIX-LISTEN:$socket_path,fork tcp-connect:$host_ip:59545 &
+end
+
+function hyperv-ssh-agent
+ set socket_path "$HOME/.gnupg/S.gpg-agent.ssh"
+ set host_ip $(ip route show 0.0.0.0/0 dev eth0 | cut -d\ -f3)
+
+ if test -e $socket_path
+ rm $socket_path
+ end
+
+ setsid socat UNIX-LISTEN:$socket_path,fork tcp-connect:$host_ip:59546 &
+end
+
+function hyperv-forward --description 'Setup hyperv-agent forwarding'
+ hyperv-gpg-agent
+ hyperv-ssh-agent
+end
diff --git a/.config/fish/functions/la.fish b/.config/fish/functions/la.fish
new file mode 100644
index 0000000..ad1b465
--- /dev/null
+++ b/.config/fish/functions/la.fish
@@ -0,0 +1,3 @@
+function la --wraps='ls -lah' --description 'alias la=ls -lah'
+ ls -lah $argv;
+end
diff --git a/.config/fish/functions/layout.fish b/.config/fish/functions/layout.fish
new file mode 100644
index 0000000..c9d5f42
--- /dev/null
+++ b/.config/fish/functions/layout.fish
@@ -0,0 +1,3 @@
+function layout --wraps=xkblayout-state\ print\ \"\%s\(\%v\)\"\ \&\&\ echo\ -n\ \"\\n\" --description alias\ layout=xkblayout-state\ print\ \"\%s\(\%v\)\"\ \&\&\ echo\ -n\ \"\\n\"
+ xkblayout-state print "%s(%v)" && echo -n "\n" $argv;
+end
diff --git a/.config/fish/functions/ll.fish b/.config/fish/functions/ll.fish
new file mode 100644
index 0000000..9621cb9
--- /dev/null
+++ b/.config/fish/functions/ll.fish
@@ -0,0 +1,3 @@
+function ll --wraps='ls -lh' --description 'alias ll=ls -lh'
+ ls -lh $argv;
+end
diff --git a/.config/fish/functions/lock-screen.fish b/.config/fish/functions/lock-screen.fish
new file mode 100644
index 0000000..adf2e7b
--- /dev/null
+++ b/.config/fish/functions/lock-screen.fish
@@ -0,0 +1,3 @@
+function lock-screen --wraps='xset 600 60 && env XSECURELOCK_AUTH_BACKGROUND_COLOR=rgb:28/2a/36 XSECURELOCK_AUTH_FOREGROUND_COLOR=rgb:f8/f8/f2 XSECURELOCK_AUTH_TIMEOUT=10 XSECURELOCK_BLANK_TIMEOUT=-1 XSECURELOCK_BLANK_DPMS_STATE=on XSECURELOCK_DISCARD_FIRST_KEYPRESS=1 XSECURELOCK_PASSWORD_PROMPT=cursor XSECURELOCK_SHOW_DATETIME=1 XSECURELOCK_SHOW_HOSTNAME=1 XSECURELOCK_SHOW_USERNAME=1 xsecurelock &' --description 'alias lock-screen=xset 600 60 && env XSECURELOCK_AUTH_BACKGROUND_COLOR=rgb:28/2a/36 XSECURELOCK_AUTH_FOREGROUND_COLOR=rgb:f8/f8/f2 XSECURELOCK_AUTH_TIMEOUT=10 XSECURELOCK_BLANK_TIMEOUT=-1 XSECURELOCK_BLANK_DPMS_STATE=on XSECURELOCK_DISCARD_FIRST_KEYPRESS=1 XSECURELOCK_PASSWORD_PROMPT=cursor XSECURELOCK_SHOW_DATETIME=1 XSECURELOCK_SHOW_HOSTNAME=1 XSECURELOCK_SHOW_USERNAME=1 xsecurelock &'
+ xset 600 60 && env XSECURELOCK_AUTH_BACKGROUND_COLOR=rgb:28/2a/36 XSECURELOCK_AUTH_FOREGROUND_COLOR=rgb:f8/f8/f2 XSECURELOCK_AUTH_TIMEOUT=10 XSECURELOCK_BLANK_TIMEOUT=-1 XSECURELOCK_BLANK_DPMS_STATE=on XSECURELOCK_DISCARD_FIRST_KEYPRESS=1 XSECURELOCK_PASSWORD_PROMPT=cursor XSECURELOCK_SHOW_DATETIME=1 XSECURELOCK_SHOW_HOSTNAME=1 XSECURELOCK_SHOW_USERNAME=1 xsecurelock & $argv;
+end
diff --git a/.config/fish/functions/ls.fish b/.config/fish/functions/ls.fish
new file mode 100644
index 0000000..b9a82a0
--- /dev/null
+++ b/.config/fish/functions/ls.fish
@@ -0,0 +1,3 @@
+function ls --description 'alias ls=ls --color=tty'
+ command ls --color=tty $argv;
+end
diff --git a/.config/fish/functions/lsa.fish b/.config/fish/functions/lsa.fish
new file mode 100644
index 0000000..5d99411
--- /dev/null
+++ b/.config/fish/functions/lsa.fish
@@ -0,0 +1,3 @@
+function lsa --wraps='ls -a' --description 'alias lsa=ls -a'
+ ls -a $argv;
+end
diff --git a/.config/fish/functions/octave-gui.fish b/.config/fish/functions/octave-gui.fish
new file mode 100644
index 0000000..7500ce2
--- /dev/null
+++ b/.config/fish/functions/octave-gui.fish
@@ -0,0 +1,3 @@
+function octave-gui --wraps='octave --force-gui' --description 'alias octave-gui=octave --force-gui'
+ octave --force-gui $argv;
+end
diff --git a/.config/fish/functions/pianoteq.fish b/.config/fish/functions/pianoteq.fish
new file mode 100644
index 0000000..8baaac3
--- /dev/null
+++ b/.config/fish/functions/pianoteq.fish
@@ -0,0 +1,3 @@
+function pianoteq --wraps=pianoteq\\\ 7 --description alias\ pianoteq=pianoteq\\\ 7
+ pianoteq\ 7 $argv;
+end
diff --git a/.config/fish/functions/picom-default.fish b/.config/fish/functions/picom-default.fish
new file mode 100644
index 0000000..ae1f795
--- /dev/null
+++ b/.config/fish/functions/picom-default.fish
@@ -0,0 +1,3 @@
+function picom-default --wraps='picom -bGC --backend glx --unredir-if-possible-delay 1000 --vsync' --description 'alias picom-default=picom -bGC --backend glx --unredir-if-possible-delay 1000 --vsync'
+ picom -bGC --backend glx --unredir-if-possible-delay 1000 --vsync $argv;
+end
diff --git a/.config/fish/functions/polybar-launch.fish b/.config/fish/functions/polybar-launch.fish
new file mode 100644
index 0000000..a4bfa4a
--- /dev/null
+++ b/.config/fish/functions/polybar-launch.fish
@@ -0,0 +1,3 @@
+function polybar-launch --wraps=/home/dustvoice/.config/polybar/launch --description 'alias polybar-launch=/home/dustvoice/.config/polybar/launch'
+ /home/dustvoice/.config/polybar/launch $argv;
+end
diff --git a/.config/fish/functions/resolve.fish b/.config/fish/functions/resolve.fish
new file mode 100644
index 0000000..efb0916
--- /dev/null
+++ b/.config/fish/functions/resolve.fish
@@ -0,0 +1,3 @@
+function resolve --wraps=/opt/resolve/bin/resolve --description 'alias resolve=/opt/resolve/bin/resolve'
+ /opt/resolve/bin/resolve $argv;
+end
diff --git a/.config/fish/functions/sabaki.fish b/.config/fish/functions/sabaki.fish
new file mode 100644
index 0000000..f799ed9
--- /dev/null
+++ b/.config/fish/functions/sabaki.fish
@@ -0,0 +1,3 @@
+function sabaki --wraps=/opt/Sabaki/sabaki --description 'alias sabaki=/opt/Sabaki/sabaki'
+ /opt/Sabaki/sabaki $argv;
+end
diff --git a/.config/fish/functions/screenkey-obs.fish b/.config/fish/functions/screenkey-obs.fish
new file mode 100644
index 0000000..eec9b19
--- /dev/null
+++ b/.config/fish/functions/screenkey-obs.fish
@@ -0,0 +1,5 @@
+function screenkey-obs
+ set width $(xrandr | awk '$0 ~ "*" {split($1,res,"x"); print res[1];}')
+ set height $(xrandr | awk '$0 ~ "*" {split($1,res,"x"); print res[2];}')
+ screenkey --no-systray -t 2 -p fixed -s small -g $(awk -v height=$height -v width=$width 'BEGIN {printf "%.0fx%.0f+%.0f+%.0f", (width * 0.5), (height * 0.06), (width * 0.25), (height * 0.02)}') --key-mode composed --bak-mode full --mods-mode normal -f "Fira Code" --font-color "#f8f8f2" --bg-color "#44475a" --opacity "1.0"
+end
diff --git a/.config/fish/functions/tmate-obs.fish b/.config/fish/functions/tmate-obs.fish
new file mode 100644
index 0000000..eeef337
--- /dev/null
+++ b/.config/fish/functions/tmate-obs.fish
@@ -0,0 +1,3 @@
+function tmate-obs --wraps='tmate -k tmk-ET35fx5m9cA7cxOt4jjWkSmaOy -r DustVoice' --description 'alias tmate-obs=tmate -k tmk-ET35fx5m9cA7cxOt4jjWkSmaOy -r DustVoice'
+ tmate -k tmk-ET35fx5m9cA7cxOt4jjWkSmaOy -r DustVoice $argv;
+end
diff --git a/.config/fish/functions/xfce-polkit.fish b/.config/fish/functions/xfce-polkit.fish
new file mode 100644
index 0000000..96e9969
--- /dev/null
+++ b/.config/fish/functions/xfce-polkit.fish
@@ -0,0 +1,3 @@
+function xfce-polkit --wraps=/usr/lib/xfce-polkit/xfce-polkit --description 'alias xfce-polkit=/usr/lib/xfce-polkit/xfce-polkit'
+ /usr/lib/xfce-polkit/xfce-polkit $argv;
+end
diff --git a/.config/nvim b/.config/nvim
index f34eee4..424a3a5 160000
--- a/.config/nvim
+++ b/.config/nvim
@@ -1 +1 @@
-Subproject commit f34eee43999373028f67964e1335bf49e0bd700a
+Subproject commit 424a3a58af34da0f2d41a3558050e3839aaa15b2
diff --git a/.config/polybar/config b/.config/polybar/config
index 84490f4..b3b2c86 100644
--- a/.config/polybar/config
+++ b/.config/polybar/config
@@ -14,7 +14,7 @@ error = #ff5555
[bar/top]
monitor = ${env:MONITOR:}
dpi = ${xrdb:Xft.dpi:-1}
-font-0 = ${xrdb:font:Hack:size=10:antialias=true:autohint=true}
+font-0 = ${xrdb:font:Fira Code:pixelsize=12:antialias=true:autohint=true}
monitor-strict = false
override-redirect = false
bottom = false
diff --git a/.config/river/init b/.config/river/init
new file mode 100755
index 0000000..e68df26
--- /dev/null
+++ b/.config/river/init
@@ -0,0 +1,166 @@
+#!/bin/sh
+
+# This is the example configuration file for river.
+#
+# If you wish to edit this, you will probably want to copy it to
+# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
+#
+# See the river(1), riverctl(1), and rivertile(1) man pages for complete
+# documentation.
+
+# Note: the "Alt" modifier is also known as Logo, GUI, Windows, Mod4, etc.
+
+# Alt+Shift+Return to start an instance of alacritty
+riverctl map normal Alt Return spawn alacritty
+
+# dmenu-wl
+riverctl map normal Alt d spawn $HOME/.config/dmenu-wl/dmenu_run
+
+# Alt+Q to close the focused view
+riverctl map normal Alt+Shift c close
+
+# Alt+Shift+E to exit river
+riverctl map normal Alt+Shift q exit
+
+# Alt+J and Alt+K to focus the next/previous view in the layout stack
+riverctl map normal Alt J focus-view next
+riverctl map normal Alt K focus-view previous
+
+# Alt+Shift+J and Alt+Shift+K to swap the focused view with the next/previous
+# view in the layout stack
+riverctl map normal Alt+Shift J swap next
+riverctl map normal Alt+Shift K swap previous
+
+# Alt+Period and Alt+Comma to focus the next/previous output
+riverctl map normal Alt Period focus-output next
+riverctl map normal Alt Comma focus-output previous
+
+# Alt+Shift+{Period,Comma} to send theAlt focused view to the next/previous output
+riverctl map normal Alt+Shift Period send-to-output next
+riverctl map normal Alt+Shift Comma send-to-output previous
+
+# Alt+Return to bump the focused view to the top of the layout stack
+riverctl map normal Alt+Shift Return zoom
+
+# Alt+H and Alt+L to decrease/increase the main ratio of rivertile(1)
+riverctl map normal Alt H send-layout-cmd rivertile "main-ratio -0.05"
+riverctl map normal Alt L send-layout-cmd rivertile "main-ratio +0.05"
+
+# Alt+Shift+H and Alt+Shift+L to increment/decrement the main count of rivertile(1)
+riverctl map normal Alt+Shift H send-layout-cmd rivertile "main-count +1"
+riverctl map normal Alt+Shift L send-layout-cmd rivertile "main-count -1"
+
+# Alt+Alt+{H,J,K,L} to move views
+riverctl map normal Super+Alt H move left 100
+riverctl map normal Super+Alt J move down 100
+riverctl map normal Super+Alt K move up 100
+riverctl map normal Super+Alt L move right 100
+
+# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
+riverctl map normal Super+Alt+Control H snap left
+riverctl map normal Super+Alt+Control J snap down
+riverctl map normal Super+Alt+Control K snap up
+riverctl map normal Super+Alt+Control L snap right
+
+# Super+Alt+Shif+{H,J,K,L} to resize views
+riverctl map normal Super+Alt+Shift H resize horizontal -100
+riverctl map normal Super+Alt+Shift J resize vertical 100
+riverctl map normal Super+Alt+Shift K resize vertical -100
+riverctl map normal Super+Alt+Shift L resize horizontal 100
+
+# Alt + Left Mouse Button to move views
+riverctl map-pointer normal Alt BTN_LEFT move-view
+
+# Alt + Right Mouse Button to resize views
+riverctl map-pointer normal Alt BTN_RIGHT resize-view
+
+for i in $(seq 1 9)
+do
+ tags=$((1 << ($i - 1)))
+
+ # Alt+[1-9] to focus tag [0-8]
+ riverctl map normal Alt $i set-focused-tags $tags
+
+ # Alt+Shift+[1-9] to tag focused view with tag [0-8]
+ riverctl map normal Alt+Shift $i set-view-tags $tags
+
+ # Alt+Ctrl+[1-9] to toggle focus of tag [0-8]
+ riverctl map normal Alt+Control $i toggle-focused-tags $tags
+
+ # Alt+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view
+ riverctl map normal Alt+Shift+Control $i toggle-view-tags $tags
+done
+
+# Alt+0 to focus all tags
+# Alt+Shift+0 to tag focused view with all tags
+all_tags=$(((1 << 32) - 1))
+riverctl map normal Alt 0 set-focused-tags $all_tags
+riverctl map normal Alt+Shift 0 set-view-tags $all_tags
+
+# Alt+S to toggle float
+riverctl map normal Alt S toggle-float
+
+# Alt+M to toggle fullscreen
+riverctl map normal Alt M toggle-fullscreen
+
+# Alt+{Up,Right,Down,Left} to change layout orientation
+riverctl map normal Alt Up send-layout-cmd rivertile "main-location top"
+riverctl map normal Alt Right send-layout-cmd rivertile "main-location right"
+riverctl map normal Alt Down send-layout-cmd rivertile "main-location bottom"
+riverctl map normal Alt Left send-layout-cmd rivertile "main-location left"
+
+# Declare a passthrough mode. This mode has only a single mapping to return to
+# normal mode. This makes it useful for testing a nested wayland compositor
+riverctl declare-mode passthrough
+
+# Alt+F11 to enter passthrough mode
+riverctl map normal Alt F11 enter-mode passthrough
+
+# Alt+F11 to return to normal mode
+riverctl map passthrough Alt F11 enter-mode normal
+
+# Various media key mapping examples for both normal and locked mode which do
+# not have a modifier
+for mode in normal locked
+do
+ # Eject the optical drive (well if you still have one that is)
+ riverctl map $mode None XF86Eject spawn 'eject -T'
+
+ # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
+ riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
+ riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
+ riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
+
+ # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
+ riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
+ riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
+ riverctl map $mode None XF86AudioNext spawn 'playerctl next'
+
+ # Control screen backlight brighness with light (https://github.com/haikarainen/light)
+ riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
+ riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
+done
+
+# Set background and border color
+riverctl background-color 0x282a36
+riverctl border-color-focused 0xff79c6
+riverctl border-color-unfocused 0x44475a
+
+# Set keyboard repeat rate
+riverctl set-repeat 50 300
+
+# Make certain views start floating
+riverctl float-filter-add app-id float
+riverctl float-filter-add title "popup title with spaces"
+
+# Set app-ids and titles of views which should use client side decorations
+riverctl csd-filter-add app-id "gedit"
+
+# Set and exec into the default layout generator, rivertile.
+# River will send the process group of the init executable SIGTERM on exit.
+
+waybar &
+
+riverctl default-layout rivertile
+exec rivertile -view-padding 0 -outer-padding 0
diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc
index d56ba7b..19b4c9a 100644
--- a/.config/sxhkd/sxhkdrc
+++ b/.config/sxhkd/sxhkdrc
@@ -123,52 +123,52 @@ alt + Return
# run program launcher
alt + d
- if [ -x $(command -v zsh) ]; then $HOME/.config/dmenu/dmenu_run_with_aliases; else dmenu_run -i -fn "Hack:size=10:antialias=true:autohint=true" -nb "#282a36" -nf "#f8f8f2" -sb "#44475a" -sf "#f8f8f2"; fi
+ $HOME/.config/dmenu/run;
alt + x
- $HOME/.config/dmenu/dmenu_bspwm_desktop_content goto
+ $HOME/.config/dmenu/bspwm desktop_content goto
alt + shift + x
- $HOME/.config/dmenu/dmenu_bspwm_desktop_content move
+ $HOME/.config/dmenu/bspwm desktop_content move
alt + ctrl + shift + x
- $HOME/.config/dmenu/dmenu_bspwm_desktop_content movefollow
+ $HOME/.config/dmenu/bspwm desktop_content movefollow
alt + z; r
- $HOME/.config/dmenu/dmenu_bspwm_desktop rename
+ $HOME/.config/dmenu/bspwm desktop rename
alt + z; d
- $HOME/.config/dmenu/dmenu_bspwm_desktop delete
+ $HOME/.config/dmenu/bspwm desktop delete
alt + z; s
- $HOME/.config/dmenu/dmenu_bspwm_desktop swap
+ $HOME/.config/dmenu/bspwm desktop swap
alt + z; h
- $HOME/.config/dmenu/dmenu_bspwm_desktop bubbleprev
+ $HOME/.config/dmenu/bspwm desktop bubbleprev
alt + z; l
- $HOME/.config/dmenu/dmenu_bspwm_desktop bubblenext
+ $HOME/.config/dmenu/bspwm desktop bubblenext
alt + z; y
- $HOME/.config/dmenu/dmenu_bspwm_desktop save
+ $HOME/.config/dmenu/bspwm desktop save
alt + z; p
- $HOME/.config/dmenu/dmenu_bspwm_desktop load
+ $HOME/.config/dmenu/bspwm desktop load
alt + a; g
- $HOME/.config/dmenu/dmenu_bspwm_monitor goto
+ $HOME/.config/dmenu/bspwm monitor goto
alt + a; s
- $HOME/.config/dmenu/dmenu_bspwm_monitor swap
+ $HOME/.config/dmenu/bspwm monitor swap
alt + a; shift + n
- $HOME/.config/dmenu/dmenu_bspwm_monitor movenode
+ $HOME/.config/dmenu/bspwm monitor movenode
alt + a; ctrl + shift + n
- $HOME/.config/dmenu/dmenu_bspwm_monitor movenodefollow
+ $HOME/.config/dmenu/bspwm monitor movenodefollow
alt + a; shift + d
- $HOME/.config/dmenu/dmenu_bspwm_monitor movedesktop
+ $HOME/.config/dmenu/bspwm monitor movedesktop
alt + a; ctrl + shift + d
- $HOME/.config/dmenu/dmenu_bspwm_movement_monitor movedesktopfollow
+ $HOME/.config/dmenu/bspwm monitor movedesktopfollow
diff --git a/.config/waybar/config b/.config/waybar/config
new file mode 100644
index 0000000..89d060b
--- /dev/null
+++ b/.config/waybar/config
@@ -0,0 +1,132 @@
+{
+ // "layer": "top", // Waybar at top layer
+ "position": "top", // Waybar position (top|bottom|left|right)
+ "height": 10, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 0, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": ["river/tags", "river/mode"],
+ "modules-center": ["river/window"],
+ "modules-right": ["pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "battery", "battery#bat2", "clock", "tray"],
+ // Modules configuration
+ // "sway/workspaces": {
+ // "disable-scroll": true,
+ // "all-outputs": true,
+ // "format": "{name}: {icon}",
+ // "format-icons": {
+ // "1": "",
+ // "2": "",
+ // "3": "",
+ // "4": "",
+ // "5": "",
+ // "urgent": "",
+ // "focused": "",
+ // "default": ""
+ // }
+ // },
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "river/mode": {
+ "format": "{}"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "clock": {
+ // "timezone": "America/New_York",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}"
+ },
+ "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-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"
+ },
+ "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} {}",
+ // "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
+ // }
+}
diff --git a/.config/waybar/dracula.style.css b/.config/waybar/dracula.style.css
new file mode 100644
index 0000000..4386f78
--- /dev/null
+++ b/.config/waybar/dracula.style.css
@@ -0,0 +1,137 @@
+* {
+ border: none;
+ border-radius: 0;
+ font-family: Roboto,'Font Awesome 5', 'SFNS Display', Helvetica, Arial, sans-serif;
+ font-size: 15px;
+ min-height: 0;
+}
+
+window#waybar {
+ background: rgba(0,0,0,0);
+ color: #ffffff;
+}
+
+window#waybar.hidden {
+ opacity: 0.0;
+}
+
+#workspaces {
+ background-color: #282a36;
+ border-radius: 20px;
+ padding: 0 15px;
+}
+
+#workspaces button {
+ margin: 0 5px;
+ padding: 0;
+ background: transparent;
+ color: #ffffff;
+ border-bottom: 2px solid transparent;
+}
+
+#workspaces button.focused {
+ border-bottom: 2px solid #ff79c6;
+ color: #ff79c6;
+}
+
+#workspaces button.urgent {
+ color: #ff5555;
+}
+
+#workspaces button:hover {
+ box-shadow: none;
+ text-shadow: none;
+ border-bottom: 2px solid #ff79c6;
+}
+
+#window {
+ background-color: #282a36;
+ border-radius: 0 20px 20px 0;
+ padding: 0 20px;
+ margin: 0 10px 0 0;
+}
+
+#clock, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #custom-media, #tray, #mode, #idle_inhibitor {
+ padding: 0 20px;
+ margin: 0 10px;
+ background-color: #282a36;
+ color: #ffffff;
+ border-radius: 20px;
+}
+
+#clock {
+
+}
+
+#battery {
+}
+
+#battery.charging {
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background: #f53c3c;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#cpu {
+}
+
+#memory {
+}
+
+#backlight {
+}
+
+#network {
+ margin: 0 0 0 10px;
+ padding: 0 10px 0 20px;
+ border-radius: 20px 0 0 20px;
+}
+
+#network.disconnected {
+}
+
+#pulseaudio {
+}
+
+#pulseaudio.muted {
+}
+
+#custom-media {
+}
+
+.custom-spotify {
+}
+
+.custom-vlc {
+}
+
+#temperature {
+}
+
+#temperature.critical {
+}
+
+#tray {
+ border-radius: 0;
+ margin: 0;
+ padding: 0 20px 0 0;
+}
+
+#idle_inhibitor {
+}
+
+#idle_inhibitor.activated {
+}
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..9639b98
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,261 @@
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ font-family: Fira Code, FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 12px;
+}
+
+window#waybar {
+ background-color: #282a36;
+ /*border: 2px solid #ff79c6;*/
+ color: #f8f8f2;
+ 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;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #282a36;
+ border: none;
+}
+
+#tags button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #f8f8f2;
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -2px transparent;
+ /* Avoid rounded borders under each workspace name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+#tags button:hover {
+ background: #f8f8f2;
+ /*background: rgba(0, 0, 0, 0.2);*/
+ /*box-shadow: inset 0 -2px #282a36;*/
+ /*background-color: #6272a4;*/
+ color: #282a36;
+}
+
+#tags button.focused {
+ background-color: #44475a;
+ box-shadow: inset 0 -2px #f8f8f2;
+}
+
+#tags button.urgent {
+ background-color: #ffb86c;
+}
+
+#mode {
+ background-color: #44475a;
+ border-bottom: 2px solid #f8f8f2;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#mpd {
+ padding: 0 10px;
+ color: #f8f8f2;
+}
+
+#window,
+#tags {
+ margin: 0 4px;
+}
+
+/* If workspaces is the leftmost module, omit left margin */
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+/* If workspaces is the rightmost module, omit right margin */
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+#clock {
+ background-color: #44475a;
+}
+
+#battery {
+ background-color: #8be9fd;
+ color: #282a36;
+}
+
+#battery.charging, #battery.plugged {
+ color: #282a36;
+ background-color: #50fa7b;
+}
+
+@keyframes blink {
+ to {
+ background-color: #f8f8f2;
+ color: #282a36;
+ }
+}
+
+#battery.critical:not(.charging) {
+ background-color: #ff5555;
+ color: #282a36;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+label:focus {
+ background-color: #282a36;
+}
+
+#cpu {
+ background-color: #50fa7b;
+ color: #282a36;
+}
+
+#memory {
+ color: #282a36;
+ background-color: #bd93f9;
+}
+
+#disk {
+ background-color: #8be9fd;
+}
+
+#backlight {
+ background-color: #6272a4;
+}
+
+#network {
+ background-color: #6272a4;
+ color: #f8f8f2;
+}
+
+#network.disconnected {
+ background-color: #8be9fd;
+ color: #282a36;
+}
+
+#pulseaudio {
+ background-color: #ffb86c;
+ color: #282a36;
+}
+
+#pulseaudio.muted {
+ background-color: #ff5555;
+ color: #282a36;
+}
+
+#custom-media {
+ background-color: #66cc99;
+ color: #2a5c45;
+ min-width: 100px;
+}
+
+#custom-media.custom-spotify {
+ background-color: #66cc99;
+}
+
+#custom-media.custom-vlc {
+ background-color: #ffa000;
+}
+
+#temperature {
+ color: #282a36;
+ background-color: #f1fa8c;
+}
+
+#temperature.critical {
+ background-color: #ff5555;
+}
+
+#tray {
+ background-color: #282a36;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #ffb86c;
+}
+
+#idle_inhibitor {
+ background-color: #2d3436;
+}
+
+#idle_inhibitor.activated {
+ background-color: #ecf0f1;
+ color: #2d3436;
+}
+
+#mpd {
+ background-color: #66cc99;
+ color: #2a5c45;
+}
+
+#mpd.disconnected {
+ background-color: #f53c3c;
+}
+
+#mpd.stopped {
+ background-color: #90b1b1;
+}
+
+#mpd.paused {
+ background-color: #51a37a;
+}
+
+#language {
+ background: #00b093;
+ color: #740864;
+ padding: 0 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#keyboard-state {
+ background: #97e1ad;
+ color: #282a36;
+ padding: 0 0px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#keyboard-state > label {
+ padding: 0 5px;
+}
+
+#keyboard-state > label.locked {
+ background: rgba(0, 0, 0, 0.2);
+}
diff --git a/.gnupg/gpg.conf b/.gnupg/gpg.conf
index 1682a99..a4cf20f 100644
--- a/.gnupg/gpg.conf
+++ b/.gnupg/gpg.conf
@@ -113,7 +113,7 @@
# servers. To see the IP address of the server actually used, you may use
# the "--keyserver-options debug".
-keyserver hkp://keys.gnupg.net
+keyserver hkp://keys.openpgp.org
#keyserver mailto:pgp-public-keys@keys.nl.pgp.net
#keyserver ldap://keyserver.pgp.com
diff --git a/.ssh/known_hosts b/.ssh/known_hosts
index 94c3d41..e467e36 100644
--- a/.ssh/known_hosts
+++ b/.ssh/known_hosts
@@ -9,3 +9,5 @@ aur.archlinux.org,95.216.144.15 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAy
140.82.121.3 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
140.82.121.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
10.2.34.5 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIODBbJvBzvkTjqdOmd6kjj9N+q/AMzVYj8b5uGHFl89T
+10.2.34.7 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIuSRDDg6CrpmoCK6Gps0v1mV0ATLt69nx6Az4tU1rsl
+10.2.34.7 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC7koNqkejOnGh65X/vNmXtnX2IDAH1d9GEIrFji8pK0uZvebnMpwfOAVxG5Ul/LvOIuHe0iCzqm5oZKLbSQdQE=
diff --git a/.zsh_alias b/.zsh_alias
index 341e80f..4a794ed 100644
--- a/.zsh_alias
+++ b/.zsh_alias
@@ -70,7 +70,7 @@ alias tmate-obs='tmate -k tmk-ET35fx5m9cA7cxOt4jjWkSmaOy -r DustVoice'
function screenkey-obs-func() {
width=$(xrandr | awk '$0 ~ "*" {split($1,res,"x"); print res[1];}')
height=$(xrandr | awk '$0 ~ "*" {split($1,res,"x"); print res[2];}')
- screenkey --no-systray -t 2 -p fixed -s small -g $(awk -v height=$height -v width=$width 'BEGIN {printf "%.0fx%.0f+%.0f+%.0f", (width * 0.5), (height * 0.06), (width * 0.25), (height * 0.02)}') --key-mode composed --bak-mode full --mods-mode normal -f Hack --font-color "#f8f8f2" --bg-color "#44475a" --opacity "1.0"
+ screenkey --no-systray -t 2 -p fixed -s small -g $(awk -v height=$height -v width=$width 'BEGIN {printf "%.0fx%.0f+%.0f+%.0f", (width * 0.5), (height * 0.06), (width * 0.25), (height * 0.02)}') --key-mode composed --bak-mode full --mods-mode normal -f "Fira Code" --font-color "#f8f8f2" --bg-color "#44475a" --opacity "1.0"
}
alias screenkey-obs='screenkey-obs-func'
@@ -93,7 +93,7 @@ alias polybar-launch="$HOME/.config/polybar/launch"
# Font
# ===
function get-font-func() {
- fallback_font="Hack:size=10:antialias=true:autohint=true"
+ fallback_font="Fira Code:pixelsize=12:antialias=true:autohint=true"
font=""
if [ -x $(command -v xgetres) ]; then
font=$(xgetres font || echo $fallback_font);
@@ -126,7 +126,7 @@ function check-iommu-func() {
alias check-iommu='check-iommu-func'
function battery-monitor-func() {
- watch1 -t -n 60 '( if [ $(cat /sys/class/power_supply/ACAD/online) == "1" ]; then printf "Power connected\n"; else printf "Power disconnected\n"; fi; printf "\nBattery capacity: "; cat /sys/class/power_supply/BAT1/capacity; printf "\n(Updated every 60s)"; )';
+ watch -t -n 60 '( if [ $(cat /sys/class/power_supply/ACAD/online) == "1" ]; then printf "Power connected\n"; else printf "Power disconnected\n"; fi; printf "\nBattery capacity: "; cat /sys/class/power_supply/BAT1/capacity; printf "\n(Updated every 60s)"; )';
}
alias battery-monitor='battery-monitor-func'
@@ -192,3 +192,13 @@ alias hyperv-gpg-forward="hyperv-gpg-agent"
alias hyperv-ssh-forward="hyperv-ssh-agent"
alias hyperv-forward="hyperv-agents"
# ===
+
+# ===
+# devkitPro development
+# ===
+function devkitPro-devkitARM() {
+ path=("/opt/devkitpro/devkitARM/bin" $path)
+}
+
+alias devkitARM="devkitPro-devkitARM"
+# ===
diff --git a/.zshenv b/.zshenv
index 8c83780..a7471c0 100755
--- a/.zshenv
+++ b/.zshenv
@@ -38,7 +38,7 @@ export EDITOR='nvim'
export SSH_AUTH_SOCK="$(gpgconf --list-dir socketdir)/S.gpg-agent.ssh"
export GPG_TTY=$(tty)
-export TERMINAL='st'
+export TERMINAL='alacritty'
export JUCE_PATH="$HOME/JUCE"
@@ -50,6 +50,17 @@ export XDG_CONFIG_HOME="$HOME/.config"
export WINIT_X11_SCALE_FACTOR=1
+export MOZ_ENABLE_WAYLAND=1
+
if [[ -f $HOME/.zsh_alias ]]; then
source $HOME/.zsh_alias
fi
+
+# export HTTP_PROXY=http://ldiproxy.lsjv.rlp.de:8080
+# export HTTPS_PROXY=$HTTP__PROXY
+# export FTP_PROXY=$HTTP__PROXY
+# export NO_PROXY=svr-*,nas-*,web-*,lsjvko*,lsjvmz*,*.lsjv.rlp,10.5.*,localhost,127.0.0.1,*-ldi.rlp.de,kidz.lsjv.rlp.de,webmail.lsjv.rlp.de,webmail.lsjv.de,tickets.lsjv.rlp.de,i-doit.lsjv.rlp.de,rdweb.lsjv.rlp.de,rds.lsjv.rlp.de,rdgw.lsjv.rlp.de
+# export http_proxy=$HTTP_PROXY
+# export https_proxy=$HTTP_PROXY
+# export ftp_proxy=$HTTP_PROXY
+# export no_proxy=$NO_PROXY
diff --git a/.zshrc b/.zshrc
index 6b64049..36566f4 100644
--- a/.zshrc
+++ b/.zshrc
@@ -21,7 +21,7 @@ setopt COMPLETE_ALIASES
if [[ -a $ZNAP_ZSH ]]; then
ZSH_AUTOSUGGEST_USE_ASYNC="true"
ZSH_AUTOSUGGEST_STRATEGY=(history)
- ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=fg=5
+ #ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=fg=5
ZSH_HIGHLIGHT_HIGHLIGHTERS=( main brackets )
@@ -38,12 +38,6 @@ if [[ -a $ZNAP_ZSH ]]; then
znap source ohmyzsh/ohmyzsh lib/{git,theme-and-appearance,colored-man-pages,colorzie,command-not-found,history}
- if [ -x "$(command -v starship)" ]; then
- znap eval starship 'starship init zsh --print-full-init'
- else
- znap prompt dustvoice/dustvoice-zsh-theme
- fi
-
znap source marlonrichert/zsh-hist
znap source zsh-users/zsh-completions
@@ -61,6 +55,12 @@ if [[ -a $ZNAP_ZSH ]]; then
bindkey -M vicmd '^H' push-line-or-edit
bindkey -M vicmd '^L' get-line
+
+ if [ -x "$(command -v starship)" ]; then
+ znap eval starship 'starship init zsh --print-full-init'
+ else
+ znap prompt dustvoice/dustvoice-zsh-theme
+ fi
else
PS1=$'%b%n@%M %~
%(!.#.$) '