aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rwxr-xr-x.config/foot/foot.ini221
-rw-r--r--.config/fuzzel/fuzzel.ini49
-rw-r--r--.config/kanshi/config9
-rw-r--r--.config/lf/colors174
-rw-r--r--.config/lf/icons357
-rw-r--r--.config/lf/lfrc65
-rwxr-xr-x.config/lf/previewer.sh41
-rwxr-xr-x.config/mango/autostart.sh40
-rw-r--r--.config/mango/config.conf285
-rw-r--r--.config/qutebrowser/config.py145
-rw-r--r--.config/qutebrowser/gruvbox.py332
-rw-r--r--.config/qutebrowser/stylesheet.qss1
-rw-r--r--.config/waybar/config92
-rwxr-xr-x.config/waybar/scripts/battery.sh53
-rwxr-xr-x.config/waybar/scripts/brightnesscontrol.sh40
-rwxr-xr-x.config/waybar/scripts/calendar.sh26
-rwxr-xr-x.config/waybar/scripts/date-time.sh12
-rwxr-xr-x.config/waybar/scripts/idleinhibit.sh28
-rwxr-xr-x.config/waybar/scripts/layout.sh14
-rwxr-xr-x.config/waybar/scripts/swayidle-update.sh7
-rwxr-xr-x.config/waybar/scripts/volumecontrol.sh130
-rw-r--r--.config/waybar/style.css185
-rw-r--r--.config/zathura/zathurarc39
23 files changed, 2345 insertions, 0 deletions
diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini
new file mode 100755
index 0000000..f4fd899
--- /dev/null
+++ b/.config/foot/foot.ini
@@ -0,0 +1,221 @@
+# -*- conf -*-
+
+# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
+# term=foot (or xterm-256color if built with -Dterminfo=disabled)
+# login-shell=no
+
+# app-id=foot
+# title=foot
+# locked-title=no
+
+font=GoMono Nerd Font Mono:size=10
+font-bold=GoMono Nerd Font Mono:style=Bold:size=10
+font-italic=GoMono Nerd Font Mono:style=Italic:size=10
+
+# font=monospace:size=8
+# font-bold=<bold variant of regular font>
+# font-italic=<italic variant of regular font>
+# font-bold-italic=<bold+italic variant of regular font>
+# line-height=<font metrics>
+# letter-spacing=0
+# horizontal-letter-offset=0
+# vertical-letter-offset=0
+# underline-offset=<font metrics>
+# underline-thickness=<font underline thickness>
+# box-drawings-uses-font-glyphs=no
+dpi-aware=no
+
+# initial-window-size-pixels=700x500 # Or,
+# initial-window-size-chars=<COLSxROWS>
+# initial-window-mode=windowed
+# pad=0x0 # optionally append 'center'
+# resize-delay-ms=100
+
+# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
+
+# bold-text-in-bright=no
+# word-delimiters=,│`|:"'()[]{}<>
+# selection-target=primary
+# workers=<number of logical CPUs>
+# utempter=/usr/lib/utempter/utempter
+
+[environment]
+# name=value
+
+[bell]
+# urgent=no
+# notify=no
+# command=
+# command-focused=no
+
+[scrollback]
+# lines=1000
+# multiplier=3.0
+# indicator-position=relative
+# indicator-format=
+
+[url]
+# launch=xdg-open ${url}
+# label-letters=sadfjklewcmpgh
+# osc8-underline=url-mode
+# protocols=http, https, ftp, ftps, file, gemini, gopher
+# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
+
+[cursor]
+style=block
+# color=<inverse foreground/background>
+blink=no
+unfocused-style=none
+# beam-thickness=1.5
+# underline-thickness=<font underline thickness>
+
+[mouse]
+# hide-when-typing=no
+# alternate-scroll-mode=yes
+
+[colors]
+alpha=0.8
+# background=002b36
+# foreground=839496
+
+background=000000
+foreground=ebdbb2
+regular0=282828
+regular1=cc241d
+regular2=98971a
+regular3=d79921
+regular4=458588
+regular5=b16286
+regular6=689d6a
+regular7=a89984
+bright0=928374
+bright1=fb4934
+bright2=b8bb26
+bright3=fabd2f
+bright4=83a598
+bright5=d3869b
+bright6=8ec07c
+bright7=ebdbb2
+
+## Normal/regular colors (color palette 0-7)
+# regular0=073642 # black
+# regular1=dc322f # red
+# regular2=859900 # green
+# regular3=b58900 # yellow
+# regular4=268bd2 # blue
+# regular5=d33682 # magenta
+# regular6=2aa198 # cyan
+# regular7=eee8d5 # white
+
+## Bright colors (color palette 8-15)
+# bright0=08404f # bright black
+# bright1=e35f5c # bright red
+# bright2=9fb700 # bright green
+# bright3=d9a400 # bright yellow
+# bright4=4ba1de # bright blue
+# bright5=dc619d # bright magenta
+# bright6=32c1b6 # bright cyan
+# bright7=ffffff # bright white
+
+## dimmed colors (see foot.ini(5) man page)
+# dim0=<not set>
+# ...
+# dim7=<not-set>
+
+## The remaining 256-color palette
+# 16 = <256-color palette #16>
+# ...
+# 255 = <256-color palette #255>
+
+## Misc colors
+# selection-foreground=<inverse foreground/background>
+# selection-background=<inverse foreground/background>
+# jump-labels=<regular0> <regular3> # black-on-yellow
+# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
+# search-box-no-match=<regular0> <regular1> # black-on-red
+# search-box-match=<regular0> <regular3> # black-on-yellow
+# urls=<regular3>
+
+[csd]
+# preferred=server
+# size=26
+# font=<primary font>
+# color=<foreground color>
+# hide-when-typing=no
+# border-width=0
+# border-color=<csd.color>
+# button-width=26
+# button-color=<background color>
+# button-minimize-color=<regular4>
+# button-maximize-color=<regular2>
+# button-close-color=<regular1>
+
+[key-bindings]
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# clipboard-copy=Control+Shift+c XF86Copy
+# clipboard-paste=Control+Shift+v XF86Paste
+# primary-paste=Shift+Insert
+# search-start=Control+Shift+r
+# font-increase=Control+plus Control+equal Control+KP_Add
+# font-decrease=Control+minus Control+KP_Subtract
+# font-reset=Control+0 Control+KP_0
+# spawn-terminal=Control+Shift+n
+# minimize=none
+# maximize=none
+# fullscreen=none
+# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-selected=[xargs -r firefox] none
+# show-urls-launch=Control+Shift+u
+# show-urls-copy=none
+# show-urls-persistent=none
+# prompt-prev=Control+Shift+z
+# prompt-next=Control+Shift+x
+# unicode-input=none
+# noop=none
+
+[search-bindings]
+# cancel=Control+g Control+c Escape
+# commit=Return
+# find-prev=Control+r
+# find-next=Control+s
+# cursor-left=Left Control+b
+# cursor-left-word=Control+Left Mod1+b
+# cursor-right=Right Control+f
+# cursor-right-word=Control+Right Mod1+f
+# cursor-home=Home Control+a
+# cursor-end=End Control+e
+# delete-prev=BackSpace
+# delete-prev-word=Mod1+BackSpace Control+BackSpace
+# delete-next=Delete
+# delete-next-word=Mod1+d Control+Delete
+# extend-to-word-boundary=Control+w
+# extend-to-next-whitespace=Control+Shift+w
+# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
+# primary-paste=Shift+Insert
+# unicode-input=none
+
+[url-bindings]
+# cancel=Control+g Control+c Control+d Escape
+# toggle-url-visible=t
+
+[text-bindings]
+# \x03=Mod4+c # Map Super+c -> Ctrl+c
+
+[mouse-bindings]
+# selection-override-modifiers=Shift
+# primary-paste=BTN_MIDDLE
+# select-begin=BTN_LEFT
+# select-begin-block=Control+BTN_LEFT
+# select-extend=BTN_RIGHT
+# select-extend-character-wise=Control+BTN_RIGHT
+# select-word=BTN_LEFT-2
+# select-word-whitespace=Control+BTN_LEFT-2
+# select-row=BTN_LEFT-3
+
+# vim: ft=dosini
diff --git a/.config/fuzzel/fuzzel.ini b/.config/fuzzel/fuzzel.ini
new file mode 100644
index 0000000..aedc7e4
--- /dev/null
+++ b/.config/fuzzel/fuzzel.ini
@@ -0,0 +1,49 @@
+# output=<not set>
+font=GoMono Nerd Font:size=10
+dpi-aware=no
+# prompt=>
+icon-theme=hicolor
+icons-enabled=yes
+# fields=filename,name,generic
+# password-character=*
+match-mode=fzf
+# sort-result=yes
+# match-counter=no
+# show-actions=no
+# terminal=$TERMINAL -e # Note: you cannot actually use environment variables here
+# launch-prefix=<not set>
+
+# Setting this to false can be useful on compositors where enabling
+# "focus-follows-mouse" causes fuzzel to exit as soon as the mouse
+# is moved over another window. Sway (<= 1.7) exhibits this
+# behavior, for example.
+# Default: _yes_
+exit-on-keyboard-focus-loss=no
+
+# lines=15
+width=35
+horizontal-pad=10
+vertical-pad=10
+inner-pad=10
+
+# image-size-ratio=0.5
+
+# line-height=<use font metrics>
+# letter-spacing=0
+line-height=18
+[colors]
+background=000000AA
+text=efefefef
+match=fabd2fff
+selection-match=fabd2fff
+selection=666666ff
+selection-text=efefefef
+border=33ffccff
+
+[border]
+width=2
+radius=0
+
+[dmenu]
+# mode=text # text|index
+# exit-immediately-if-empty=no
diff --git a/.config/kanshi/config b/.config/kanshi/config
new file mode 100644
index 0000000..c3d9fdb
--- /dev/null
+++ b/.config/kanshi/config
@@ -0,0 +1,9 @@
+profile Laptop {
+ output eDP-1 position 0,0 mode 1920x1080
+}
+
+profile Dock {
+ output HDMI-A-1 position 0,0 mode 1920x1080
+ output eDP-1 position 1920,0 mode 1920x1080
+ exec mmsg -d focusmon,HDMI-A-1
+}
diff --git a/.config/lf/colors b/.config/lf/colors
new file mode 100644
index 0000000..b65d3f0
--- /dev/null
+++ b/.config/lf/colors
@@ -0,0 +1,174 @@
+# vim:ft=dircolors
+# (This is not a dircolors file but it helps to highlight colors and comments)
+
+# default values from dircolors
+# (entries with a leading # are not implemented in lf)
+# #no 00 # NORMAL
+# fi 00 # FILE
+# #rs 0 # RESET
+# di 01;34 # DIR
+# ln 01;36 # LINK
+# #mh 00 # MULTIHARDLINK
+# pi 40;33 # FIFO
+# so 01;35 # SOCK
+# #do 01;35 # DOOR
+# bd 40;33;01 # BLK
+# cd 40;33;01 # CHR
+# or 40;31;01 # ORPHAN
+# #mi 00 # MISSING
+# su 37;41 # SETUID
+# sg 30;43 # SETGID
+# #ca 30;41 # CAPABILITY
+# tw 30;42 # STICKY_OTHER_WRITABLE
+# ow 34;42 # OTHER_WRITABLE
+# st 37;44 # STICKY
+# ex 01;32 # EXEC
+
+# default values from lf (with matching order)
+# ln 01;36 # LINK
+# or 31;01 # ORPHAN
+# tw 01;34 # STICKY_OTHER_WRITABLE
+# ow 01;34 # OTHER_WRITABLE
+# st 01;34 # STICKY
+# di 01;34 # DIR
+# pi 33 # FIFO
+# so 01;35 # SOCK
+# bd 33;01 # BLK
+# cd 33;01 # CHR
+# su 01;32 # SETUID
+# sg 01;32 # SETGID
+# ex 01;32 # EXEC
+# fi 00 # FILE
+
+# file types (with matching order)
+ln 01;36 # LINK
+or 31;01 # ORPHAN
+tw 34 # STICKY_OTHER_WRITABLE
+ow 34 # OTHER_WRITABLE
+st 01;34 # STICKY
+di 01;34 # DIR
+pi 33 # FIFO
+so 01;35 # SOCK
+bd 33;01 # BLK
+cd 33;01 # CHR
+su 01;32 # SETUID
+sg 01;32 # SETGID
+ex 01;32 # EXEC
+fi 00 # FILE
+
+# archives or compressed (dircolors defaults)
+*.tar 01;31
+*.tgz 01;31
+*.arc 01;31
+*.arj 01;31
+*.taz 01;31
+*.lha 01;31
+*.lz4 01;31
+*.lzh 01;31
+*.lzma 01;31
+*.tlz 01;31
+*.txz 01;31
+*.tzo 01;31
+*.t7z 01;31
+*.zip 01;31
+*.z 01;31
+*.dz 01;31
+*.gz 01;31
+*.lrz 01;31
+*.lz 01;31
+*.lzo 01;31
+*.xz 01;31
+*.zst 01;31
+*.tzst 01;31
+*.bz2 01;31
+*.bz 01;31
+*.tbz 01;31
+*.tbz2 01;31
+*.tz 01;31
+*.deb 01;31
+*.rpm 01;31
+*.jar 01;31
+*.war 01;31
+*.ear 01;31
+*.sar 01;31
+*.rar 01;31
+*.alz 01;31
+*.ace 01;31
+*.zoo 01;31
+*.cpio 01;31
+*.7z 01;31
+*.rz 01;31
+*.cab 01;31
+*.wim 01;31
+*.swm 01;31
+*.dwm 01;31
+*.esd 01;31
+
+# image formats (dircolors defaults)
+*.jpg 01;35
+*.jpeg 01;35
+*.mjpg 01;35
+*.mjpeg 01;35
+*.gif 01;35
+*.bmp 01;35
+*.pbm 01;35
+*.pgm 01;35
+*.ppm 01;35
+*.tga 01;35
+*.xbm 01;35
+*.xpm 01;35
+*.tif 01;35
+*.tiff 01;35
+*.png 01;35
+*.svg 01;35
+*.svgz 01;35
+*.mng 01;35
+*.pcx 01;35
+*.mov 01;35
+*.mpg 01;35
+*.mpeg 01;35
+*.m2v 01;35
+*.mkv 01;35
+*.webm 01;35
+*.ogm 01;35
+*.mp4 01;35
+*.m4v 01;35
+*.mp4v 01;35
+*.vob 01;35
+*.qt 01;35
+*.nuv 01;35
+*.wmv 01;35
+*.asf 01;35
+*.rm 01;35
+*.rmvb 01;35
+*.flc 01;35
+*.avi 01;35
+*.fli 01;35
+*.flv 01;35
+*.gl 01;35
+*.dl 01;35
+*.xcf 01;35
+*.xwd 01;35
+*.yuv 01;35
+*.cgm 01;35
+*.emf 01;35
+*.ogv 01;35
+*.ogx 01;35
+
+# audio formats (dircolors defaults)
+*.aac 00;36
+*.au 00;36
+*.flac 00;36
+*.m4a 00;36
+*.mid 00;36
+*.midi 00;36
+*.mka 00;36
+*.mp3 00;36
+*.mpc 00;36
+*.ogg 00;36
+*.ra 00;36
+*.wav 00;36
+*.oga 00;36
+*.opus 00;36
+*.spx 00;36
+*.xspf 00;36
diff --git a/.config/lf/icons b/.config/lf/icons
new file mode 100644
index 0000000..68d53e3
--- /dev/null
+++ b/.config/lf/icons
@@ -0,0 +1,357 @@
+# vim:ft=conf
+
+# These examples require Nerd Fonts or a compatible font to be used.
+# See https://www.nerdfonts.com for more information.
+
+# default values from lf (with matching order)
+# ln l # LINK
+# or l # ORPHAN
+# tw t # STICKY_OTHER_WRITABLE
+# ow d # OTHER_WRITABLE
+# st t # STICKY
+# di d # DIR
+# pi p # FIFO
+# so s # SOCK
+# bd b # BLK
+# cd c # CHR
+# su u # SETUID
+# sg g # SETGID
+# ex x # EXEC
+# fi - # FILE
+
+# file types (with matching order)
+ln  # LINK
+or  # ORPHAN
+tw t # STICKY_OTHER_WRITABLE
+ow  # OTHER_WRITABLE
+st t # STICKY
+di  # DIR
+pi p # FIFO
+so s # SOCK
+bd b # BLK
+cd c # CHR
+su u # SETUID
+sg g # SETGID
+ex  # EXEC
+fi  # FILE
+
+# file extensions (vim-devicons)
+*.styl 
+*.sass 
+*.scss 
+*.htm 
+*.html 
+*.slim 
+*.haml 
+*.ejs 
+*.css 
+*.less 
+*.md 
+*.mdx 
+*.markdown 
+*.rmd 
+*.json 
+*.webmanifest 
+*.js 
+*.mjs 
+*.jsx 
+*.rb 
+*.gemspec 
+*.rake 
+*.php 
+*.py 
+*.pyc 
+*.pyo 
+*.pyd 
+*.coffee 
+*.mustache 
+*.hbs 
+*.conf 
+*.ini 
+*.yml 
+*.yaml 
+*.toml 
+*.bat 
+*.mk 
+*.jpg 
+*.jpeg 
+*.bmp 
+*.png 
+*.webp 
+*.gif 
+*.ico 
+*.twig 
+*.cpp 
+*.c++ 
+*.cxx 
+*.cc 
+*.cp 
+*.c 
+*.cs 
+*.h 
+*.hh 
+*.hpp 
+*.hxx 
+*.hs 
+*.lhs 
+*.nix 
+*.lua 
+*.java 
+*.sh 
+*.fish 
+*.bash 
+*.zsh 
+*.ksh 
+*.csh 
+*.awk 
+*.ps1 
+*.ml λ
+*.mli λ
+*.diff 
+*.db 
+*.sql 
+*.dump 
+*.clj 
+*.cljc 
+*.cljs 
+*.edn 
+*.scala 
+*.go 
+*.dart 
+*.xul 
+*.sln 
+*.suo 
+*.pl 
+*.pm 
+*.t 
+*.rss 
+'*.f#' 
+*.fsscript 
+*.fsx 
+*.fs 
+*.fsi 
+*.rs 
+*.rlib 
+*.d 
+*.erl 
+*.hrl 
+*.ex 
+*.exs 
+*.eex 
+*.leex 
+*.heex 
+*.vim 
+*.ai 
+*.psd 
+*.psb 
+*.ts 
+*.tsx 
+*.jl 
+*.pp 
+*.vue ﵂
+*.elm 
+*.swift 
+*.xcplayground 
+*.tex ﭨ
+*.r ﳒ
+*.rproj 鉶
+*.sol ﲹ
+*.pem 
+
+# file names (vim-devicons) (case-insensitive not supported in lf)
+*gruntfile.coffee 
+*gruntfile.js 
+*gruntfile.ls 
+*gulpfile.coffee 
+*gulpfile.js 
+*gulpfile.ls 
+*mix.lock 
+*dropbox 
+*.ds_store 
+*.gitconfig 
+*.gitignore 
+*.gitattributes 
+*.gitlab-ci.yml 
+*.bashrc 
+*.zshrc 
+*.zshenv 
+*.zprofile 
+*.vimrc 
+*.gvimrc 
+*_vimrc 
+*_gvimrc 
+*.bashprofile 
+*favicon.ico 
+*license 
+*node_modules 
+*react.jsx 
+*procfile 
+*dockerfile 
+*docker-compose.yml 
+*rakefile 
+*config.ru 
+*gemfile 
+*makefile 
+*cmakelists.txt 
+*robots.txt ﮧ
+
+# file names (case-sensitive adaptations)
+*Gruntfile.coffee 
+*Gruntfile.js 
+*Gruntfile.ls 
+*Gulpfile.coffee 
+*Gulpfile.js 
+*Gulpfile.ls 
+*Dropbox 
+*.DS_Store 
+*LICENSE 
+*React.jsx 
+*Procfile 
+*Dockerfile 
+*Docker-compose.yml 
+*Rakefile 
+*Gemfile 
+*Makefile 
+*CMakeLists.txt 
+
+# file patterns (vim-devicons) (patterns not supported in lf)
+# .*jquery.*\.js$ 
+# .*angular.*\.js$ 
+# .*backbone.*\.js$ 
+# .*require.*\.js$ 
+# .*materialize.*\.js$ 
+# .*materialize.*\.css$ 
+# .*mootools.*\.js$ 
+# .*vimrc.* 
+# Vagrantfile$ 
+
+# file patterns (file name adaptations)
+*jquery.min.js 
+*angular.min.js 
+*backbone.min.js 
+*require.min.js 
+*materialize.min.js 
+*materialize.min.css 
+*mootools.min.js 
+*vimrc 
+Vagrantfile 
+
+# archives or compressed (extensions from dircolors defaults)
+*.tar 
+*.tgz 
+*.arc 
+*.arj 
+*.taz 
+*.lha 
+*.lz4 
+*.lzh 
+*.lzma 
+*.tlz 
+*.txz 
+*.tzo 
+*.t7z 
+*.zip 
+*.z 
+*.dz 
+*.gz 
+*.lrz 
+*.lz 
+*.lzo 
+*.xz 
+*.zst 
+*.tzst 
+*.bz2 
+*.bz 
+*.tbz 
+*.tbz2 
+*.tz 
+*.deb 
+*.rpm 
+*.jar 
+*.war 
+*.ear 
+*.sar 
+*.rar 
+*.alz 
+*.ace 
+*.zoo 
+*.cpio 
+*.7z 
+*.rz 
+*.cab 
+*.wim 
+*.swm 
+*.dwm 
+*.esd 
+
+# image formats (extensions from dircolors defaults)
+*.jpg 
+*.jpeg 
+*.mjpg 
+*.mjpeg 
+*.gif 
+*.bmp 
+*.pbm 
+*.pgm 
+*.ppm 
+*.tga 
+*.xbm 
+*.xpm 
+*.tif 
+*.tiff 
+*.png 
+*.svg 
+*.svgz 
+*.mng 
+*.pcx 
+*.mov 
+*.mpg 
+*.mpeg 
+*.m2v 
+*.mkv 
+*.webm 
+*.ogm 
+*.mp4 
+*.m4v 
+*.mp4v 
+*.vob 
+*.qt 
+*.nuv 
+*.wmv 
+*.asf 
+*.rm 
+*.rmvb 
+*.flc 
+*.avi 
+*.fli 
+*.flv 
+*.gl 
+*.dl 
+*.xcf 
+*.xwd 
+*.yuv 
+*.cgm 
+*.emf 
+*.ogv 
+*.ogx 
+
+# audio formats (extensions from dircolors defaults)
+*.aac 
+*.au 
+*.flac 
+*.m4a 
+*.mid 
+*.midi 
+*.mka 
+*.mp3 
+*.mpc 
+*.ogg 
+*.ra 
+*.wav 
+*.oga 
+*.opus 
+*.spx 
+*.xspf 
+
+# other formats
+*.pdf 
diff --git a/.config/lf/lfrc b/.config/lf/lfrc
new file mode 100644
index 0000000..1073b16
--- /dev/null
+++ b/.config/lf/lfrc
@@ -0,0 +1,65 @@
+# interpreter for shell commands
+set shell bash
+
+# set '-eu' options for shell commands
+# These options are used to have safer shell commands. Option '-e' is used to
+# exit on error and option '-u' is used to give error for unset variables.
+# Option '-f' disables pathname expansion which can be useful when $f, $fs, and
+# $fx variables contain names with '*' or '?' characters. However, this option
+# is used selectively within individual commands as it can be limiting at
+# times.
+set shellopts '-eu'
+
+# set internal field separator (IFS) to "\n" for shell commands
+# This is useful to automatically split file names in $fs and $fx properly
+# since default file separator used in these variables (i.e. 'filesep' option)
+# is newline. You need to consider the values of these options and create your
+# commands accordingly.
+set ifs "\n"
+
+# leave some space at the top and the bottom of the screen
+set scrolloff 10
+
+# Use the `dim` attribute instead of underline for the cursor in the preview pane
+set cursorpreviewfmt "\033[7;2m"
+
+# Show number of files in dirs instead of single size
+set info size
+set dircounts
+
+# Custom Additions
+set drawbox true
+
+# Toggle hidden files
+map . set hidden!
+
+# Set previewer and cleaner
+#set sixel
+set previewer ~/.config/lf/previewer.sh
+
+# Set colours and icons
+set icons
+
+# Custom Functions
+cmd open ${{
+ case $(file --mime-type $f -bL) in
+ image/*) setsid imv $f >/dev/null 2>&1 & ;;
+ *pdf*) setsid zathura $f >/dev/null 2>&1 & ;;
+ text/*|application/json) $EDITOR "$f";;
+ video/*) setsid mpv $f -quiet >/dev/null 2>&1 & ;;
+ *) for f in $fx; do setsid $OPENER $f 2>/dev/null & done ;;
+ esac
+}}
+
+cmd setwallpaper ${{
+ echo "$f" > ~/.cache/wallpaper
+ if pgrep "swayidle" > /dev/null
+ then
+ sh "$HOME/.config/waybar/scripts/swayidle-update.sh"
+ fi
+ pkill swaybg > /dev/null 2>&1
+ nohup swaybg -m fill -i "$f" > /dev/null 2>&1 &
+}}
+
+# Key Mappings
+map bg setwallpaper
diff --git a/.config/lf/previewer.sh b/.config/lf/previewer.sh
new file mode 100755
index 0000000..764758b
--- /dev/null
+++ b/.config/lf/previewer.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+if command -v bat >/dev/null 2>&1; then
+ pagercmd="bat --color=always --style=plain --pager=never"
+else
+ pagercmd="less -FRiX"
+fi
+
+case "$(printf "%s\n" "$(readlink -f "$1")" | awk '{print tolower($0)}')" in
+ *.tgz|*.tar.gz) tar tzf "$1";;
+ *.tar.bz2|*.tbz2) tar tjf "$1";;
+ *.tar.txz|*.txz) xz --list "$1";;
+ *.tar) tar tf "$1";;
+ *.zip|*.jar|*.war|*.ear|*.oxt|*.apkg|*.apk) unzip -l "$1";;
+ *.rar) unrar l "$1";;
+ *.7z) 7z l "$1";;
+ *.[1-8]) man "$1" | col -b ;;
+ *.epub|*.rtf|*.doc|*.docx|*.odt|*.ods|*.odp|*.sxw)
+ pandoc -s -t markdown -- "$1" | $pagercmd
+ exit 1
+ ;;
+ *.jpg|*.jpeg|*.png|*.bmp|*.xpm|*.gif)
+ chafa -f sixel -s "$2x$3" --animate false "$1" --polite on
+ exit 1
+ ;;
+ *.pdf)
+ CACHE=$(mktemp)
+ pdftoppm -png -f 1 -singlefile "$1" "$CACHE"
+ chafa -f sixel -s "$2x$3" --animate false "$CACHE.png" --polite on
+ rm "$CACHE"
+ ;;
+ *.avi|*.mp4|*.wmv|*.dat|*.3gp|*.ogv|*.mkv|*.mpg|*.mpeg|*.vob|*.fl[icv]|*.m2v|*.mov|*.webm|*.ts|*.mts|*.m4v|*.r[am]|*.qt|*.divx)
+ CACHE=$(mktemp)
+ ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
+ chafa -f sixel -s "$2x$3" --animate false "$CACHE" --polite on
+ rm "$CACHE"
+ ;;
+ *)
+ bat --color=always --style=plain --pager=never "$1"
+ ;;
+esac
diff --git a/.config/mango/autostart.sh b/.config/mango/autostart.sh
new file mode 100755
index 0000000..025027b
--- /dev/null
+++ b/.config/mango/autostart.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# Authentication dialog
+
+pkill -f /usr/local/libexec/polkit-gnome-authentication-agent-1
+/usr/local/libexec/polkit-gnome-authentication-agent-1 &
+
+# Start xdg-desktop-portal-wlr
+
+pkill -f /usr/local/libexec/xdg-desktop-portal-wlr
+/usr/local/libexec/xdg-desktop-portal-wlr &
+
+# Start Waybar
+pkill -f waybar
+waybar &
+
+# Start Kanshi
+pkill -f kanshi
+kanshi &
+
+# $wallpaper is set in your shells config file like below.
+read -r wallpaper<"$HOME/.cache/wallpaper"
+pkill -f swaybg
+swaybg -m fill -i "$wallpaper" &
+
+pkill -f dunst
+dunst &
+
+pkill -f wlsunset
+wlsunset -l 57.4 -L -1.9 &
+
+# Restore previous brightness
+backlight "$(grep 'brightness:' ~/.cache/brightness | awk '{print $2}')"
+
+# Restore audio volume
+mixer vol.volume="$(grep 'vol.volume=' ~/.cache/audio-volume | awk -F ':' '{print $2}')"
+mixer vol.mute="$(grep 'vol.mute=' ~/.cache/audio-volume | awk -F '=' '{print $2}')"
+
+sh "$HOME/.config/waybar/scripts/swayidle-update.sh"
+
diff --git a/.config/mango/config.conf b/.config/mango/config.conf
new file mode 100644
index 0000000..1030cef
--- /dev/null
+++ b/.config/mango/config.conf
@@ -0,0 +1,285 @@
+# More option see https://github.com/DreamMaoMao/maomaowm/wiki/
+
+exec=~/.config/mango/autostart.sh
+
+# Animation Configuration(support type:zoom,slide)
+# tag_animation_direction: 0-horizontal,1-vertical
+animations=1
+layer_animations=1
+animation_type_open=slide
+animation_type_close=slide
+layer_animation_type_open = slide
+layer_animation_type_close = slide
+animation_fade_in=1
+animation_fade_out=1
+tag_animation_direction=1
+zoom_initial_ratio=0.5
+fadein_begin_opacity=0.5
+fadeout_begin_opacity=0.8
+animation_duration_move=500
+animation_duration_open=400
+animation_duration_tag=350
+animation_duration_close=300
+animation_curve_open=0.46,1.0,0.29,1
+animation_curve_move=0.46,1.0,0.29,1
+animation_curve_tag=0.46,1.0,0.29,1
+animation_curve_close=0.08,0.92,0,1
+
+# Scroller Layout Setting
+scroller_structs=20
+scroller_default_proportion=0.8
+scroller_focus_center=0
+scroller_prefer_center=0
+scroller_default_proportion_single=1.0
+scroller_proportion_preset=0.5,0.8,1.0
+
+# Master-Stack Layout Setting (tile,spiral,dwindle)
+new_is_master=0
+default_mfact=0.50
+default_nmaster=1
+smartgaps=0
+
+# Overview Setting
+hotarea_size=10
+enable_hotarea=0
+ov_tab_mode=0
+overviewgappi=5
+overviewgappo=30
+
+# Misc
+no_border_when_single=0
+axis_bind_apply_timeout=100
+focus_on_activate=1
+sloppyfocus=1
+warpcursor=1
+focus_cross_monitor=0
+focus_cross_tag=1
+enable_floating_snap=0
+snap_distance=30
+cursor_size=24
+cursor_theme=Adwaita
+cursor_hide_timeout=4
+drag_tile_to_tile=1
+
+# keyboard
+repeat_rate=25
+repeat_delay=600
+numlockon=0
+xkb_rules_layout=us,gb
+xkb_rules_options=grp:ctrl_space_toggle
+
+# Trackpad
+# need relogin to make it apply
+tap_to_click=1
+tap_and_drag=1
+drag_lock=1
+trackpad_natural_scrolling=0
+disable_while_typing=1
+left_handed=0
+middle_button_emulation=0
+swipe_min_threshold=20
+
+# mouse
+# need relogin to make it apply
+mouse_natural_scrolling=0
+
+# Appearance
+gappih=10
+gappiv=10
+gappoh=10
+gappov=10
+borderpx=2
+rootcolor=0x201b14ff
+bordercolor=0x666666ff
+focuscolor=0x33ffccff
+maximizescreencolor=0x33ffccff
+urgentcolor=0xad401fff
+scratchpadcolor=0x516c93ff
+globalcolor=0xb153a7ff
+overlaycolor=0x14a57cff
+
+# Blur settings
+blur=1
+blur_layer=1
+blur_optimized = 0
+blur_params_num_passes = 1
+blur_params_radius = 5
+blur_params_noise = 0.02
+blur_params_brightness = 0.9
+blur_params_contrast = 0.9
+blur_params_saturation = 1.2
+
+# Shadow settings
+shadows = 1
+layer_shadows = 1
+shadow_only_floating = 0
+shadows_size = 8
+shadows_blur = 10
+shadows_position_x = 0
+shadows_position_y = 0
+shadowscolor= 0x000000ff
+
+# Window appearance
+border_radius=0
+no_radius_when_single=0
+focused_opacity=1.0
+unfocused_opacity=1.0
+
+# no blur slurp select layer
+layerrule=noblur:1,layer_name:selection
+
+# layout support: tile,scroller,grid,monocle,spiral,dwindle
+tagrule=id:1,layout_name:tile
+tagrule=id:2,layout_name:tile
+tagrule=id:3,layout_name:tile
+tagrule=id:4,layout_name:tile
+tagrule=id:5,layout_name:tile
+tagrule=id:6,layout_name:tile
+tagrule=id:7,layout_name:tile
+tagrule=id:8,layout_name:tile
+tagrule=id:9,layout_name:tile
+
+# Key Bindings
+# key name refer to `xev` or `wev` command output,
+# mod keys name: super,ctrl,alt,shift,none
+
+# reload config
+bind=SUPER,r,reload_config
+
+# menu and terminal
+bind=SUPER,d,spawn,fuzzel
+bind=SUPER,Return,spawn,foot
+
+# power menu
+bind=SUPER+SHIFT,p,spawn,sh ~/.local/bin/power-menu-fuzzel.sh
+
+# emoji menu
+bind=SUPER+SHIFT,z,spawn,sh ~/.local/bin/emoji-menu.sh
+
+# Take a screenshot of the focused output
+bind=NONE,Print,spawn,sh ~/.local/bin/screenshot.sh
+
+# Take a screenshot of the focused window
+bind=SHIFT,Print,spawn,sh ~/.local/bin/screenshot.sh focused-window
+
+# Take a screenshot of the selected region
+bind=SUPER,Print,spawn,sh ~/.local/bin/screenshot.sh selected-region
+
+# Take a screenshot and save it to the clipboard
+bind=SUPER+SHIFT,Print,spawn,sh ~/.local/bin/screenshot.sh save-to-clipboard
+
+# Toggle Waybar
+bind=SUPER,w,spawn,killall -SIGUSR1 waybar
+
+# exit
+bind=SUPER+SHIFT,e,quit
+bind=SUPER+SHIFT,q,killclient,
+
+# switch window focus
+bind=SUPER,Tab,focusstack,next
+bind=ALT,Left,focusdir,left
+bind=ALT,Right,focusdir,right
+bind=ALT,Up,focusdir,up
+bind=ALT,Down,focusdir,down
+
+# swap window
+bind=SUPER+SHIFT,Up,exchange_client,up
+bind=SUPER+SHIFT,Down,exchange_client,down
+bind=SUPER+SHIFT,Left,exchange_client,left
+bind=SUPER+SHIFT,Right,exchange_client,right
+
+# switch window status
+bind=SUPER,g,toggleglobal,
+bind=ALT,Tab,toggleoverview,
+bind=ALT,backslash,togglefloating,
+bind=ALT,a,togglemaximizescreen,
+bind=ALT,f,togglefullscreen,
+bind=ALT+SHIFT,f,togglefakefullscreen,
+bind=SUPER,i,minimized,
+bind=SUPER,o,toggleoverlay,
+bind=SUPER+SHIFT,I,restore_minimized
+bind=ALT,z,toggle_scratchpad
+
+# scroller layout
+bind=ALT,e,set_proportion,1.0
+bind=ALT,x,switch_proportion_preset,
+
+# switch layout
+bind=SUPER,n,switch_layout
+
+# tag switch
+bind=SUPER,Left,viewtoleft,
+bind=CTRL,Left,viewtoleft_have_client,
+bind=SUPER,Right,viewtoright,
+bind=CTRL,Right,viewtoright_have_client,
+bind=CTRL+SUPER,Left,tagtoleft,
+bind=CTRL+SUPER,Right,tagtoright,
+
+bind=SUPER,1,view,1
+bind=SUPER,2,view,2
+bind=SUPER,3,view,3
+bind=SUPER,4,view,4
+bind=SUPER,5,view,5
+bind=SUPER,6,view,6
+bind=SUPER,7,view,7
+bind=SUPER,8,view,8
+bind=SUPER,9,view,9
+
+# tag: move client to the tag and focus it
+# tagsilent: move client to the tag and not focus it
+# bind=Alt,1,tagsilent,1
+bind=SUPER+SHIFT,1,tag,1
+bind=SUPER+SHIFT,2,tag,2
+bind=SUPER+SHIFT,3,tag,3
+bind=SUPER+SHIFT,4,tag,4
+bind=SUPER+SHIFT,5,tag,5
+bind=SUPER+SHIFT,6,tag,6
+bind=SUPER+SHIFT,7,tag,7
+bind=SUPER+SHIFT,8,tag,8
+bind=SUPER+SHIFT,9,tag,9
+
+# monitor switch
+bind=alt+shift,Left,focusmon,left
+bind=alt+shift,Right,focusmon,right
+bind=SUPER+Alt,Left,tagmon,left
+bind=SUPER+Alt,Right,tagmon,right
+
+# Move focused window to the output left or right on the same tag
+bind=SUPER,period,tagmon,left,1
+bind=SUPER,comma,tagmon,right,1
+
+# gaps
+bind=ALT+SHIFT,X,incgaps,1
+bind=ALT+SHIFT,Z,incgaps,-1
+bind=ALT+SHIFT,R,togglegaps
+
+# movewin
+bind=CTRL+SHIFT,Up,movewin,+0,-50
+bind=CTRL+SHIFT,Down,movewin,+0,+50
+bind=CTRL+SHIFT,Left,movewin,-50,+0
+bind=CTRL+SHIFT,Right,movewin,+50,+0
+
+# resizewin
+bind=CTRL+ALT,Up,resizewin,+0,-50
+bind=CTRL+ALT,Down,resizewin,+0,+50
+bind=CTRL+ALT,Left,resizewin,-50,+0
+bind=CTRL+ALT,Right,resizewin,+50,+0
+
+# Mouse Button Bindings
+# NONE mode key only work in ov mode
+mousebind=SUPER,btn_left,moveresize,curmove
+mousebind=NONE,btn_middle,togglemaximizescreen,0
+mousebind=SUPER,btn_right,moveresize,curresize
+mousebind=NONE,btn_left,toggleoverview,-1
+mousebind=NONE,btn_right,killclient,0
+
+# Axis Bindings
+axisbind=SUPER,UP,viewtoleft_have_client
+axisbind=SUPER,DOWN,viewtoright_have_client
+
+# Monitor Rules - Not used as I'm using kanshi
+#monitorrule=eDP-1,0.50,1,tile,0,1,0,1,1920,0,60
+#monitorrule=HDMI-A-1,0.50,1,tile,0,1,0,1,0,0,60
+
+# Window Rules
+windowrule=isfloating:1,width:640,height:360,offsetx:95,offsety:90,appid:mpv
diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py
new file mode 100644
index 0000000..27f5bce
--- /dev/null
+++ b/.config/qutebrowser/config.py
@@ -0,0 +1,145 @@
+# config.py
+#
+# NOTE: config.py is intended for advanced users who are comfortable
+# with manually migrating the config file on qutebrowser upgrades. If
+# you prefer, you can also configure qutebrowser using the
+# :set/:bind/:config-* commands without having to write a config.py
+# file.
+#
+# Documentation:
+# qute://help/configuring.html
+# qute://help/settings.html
+
+# pylint: disable=C0111
+c = c # noqa: F821 pylint: disable=E0602,C0103
+config = config # noqa: F821 pylint: disable=E0602,C0103
+
+config.load_autoconfig(False)
+
+c.auto_save.session = True
+
+# Format of timestamps (e.g. for the history completion).
+c.completion.timestamp_format = '%d-%m-%Y %H:%M'
+
+# Confirm quit if downloading
+c.confirm_quit = ["downloads"]
+
+# Download locations
+c.downloads.location.directory = "~/Downloads"
+
+c.url.searchengines = {'DEFAULT': 'https://start.duckduckgo.com/?q={}',
+ 'aw': 'https://wiki.archlinux.org/?search={}',
+ 'goog': 'https://www.google.com/search?q={}',
+ 're': 'https://www.reddit.com/search?q={}',
+ # Go to a given subreddit
+ 'sr': 'https://www.reddit.com/r/{unquoted}',
+ 'gh': 'https://github.com/search?q={}',
+ # Jumpt to github repo or user
+ 'ghr': 'https://github.com/{unquoted}',
+ 'wiki': 'https://en.wikipedia.org/wiki/{}',
+ 'yt': 'https://www.youtube.com/results?search_query={}'}
+
+c.url.default_page = 'https://start.duckduckgo.com'
+
+# Which cookies to accept. With QtWebEngine, this setting also controls
+# other features with tracking capabilities similar to those of cookies;
+# including IndexedDB, DOM storage, filesystem API, service workers, and
+# AppCache. Note that with QtWebKit, only `all` and `never` are
+# supported as per-domain values. Setting `no-3rdparty` or `no-
+# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
+# `all`. If this setting is used with URL patterns, the pattern gets
+# applied to the origin/first party URL of the page making the request,
+# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
+# from URLs, so URL patterns using paths will not match. With
+# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
+# you will typically need to set this setting for `example.com` when the
+# cookie is set on `somesubdomain.example.com` for it to work properly.
+# To debug issues with this setting, start qutebrowser with `--debug
+# --logfilter network --debug-flag log-cookies` which will show all
+# cookies being set.
+# Type: String
+# Valid values:
+# - all: Accept all cookies.
+# - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
+# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
+# - never: Don't accept cookies at all.
+c.content.cookies.accept = 'all'
+
+# Value to send in the Accept-Language header
+c.content.headers.accept_language = 'en-GB,en,el;q=0.9'
+
+# User agent to send. The following placeholders are defined: *
+# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
+# The underlying WebKit version (set to a fixed value with
+# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
+# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
+# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
+# QtWebEngine. * `{upstream_browser_version}`: The corresponding
+# Safari/Chrome version. * `{qutebrowser_version}`: The currently
+# running qutebrowser version. The default value is equal to the
+# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
+# read from JavaScript is always the global value. With QtWebEngine
+# between 5.12 and 5.14 (inclusive), changing the value exposed to
+# JavaScript requires a restart.
+# Type: FormatString
+
+# Not using a custom user agent for now as it causes issues on various sites
+# c.content.headers.user_agent = 'Mozilla/5.0 ({os_info}) QtWebEngine/{qt_version} qutebrowser/{qutebrowser_version} Chrome/130.0.0.0'
+
+# Load images automatically in web pages.
+# Type: Bool
+c.content.images = True
+
+# Enable JavaScript.
+# Type: Bool
+c.content.javascript.enabled = True
+
+# Allow websites to show notifications.
+# Type: BoolAsk
+# Valid values:
+# - true
+# - false
+# - ask
+c.content.notifications.enabled = 'ask'
+
+# Allow websites to register protocol handlers via
+# `navigator.registerProtocolHandler`.
+# Type: BoolAsk
+# Valid values:
+# - true
+# - false
+# - ask
+c.content.register_protocol_handler = 'ask'
+
+c.editor.command = ['foot', '-e', 'nvim', '{file}', '-c', 'normal {line}G{column0}l']
+
+c.fileselect.multiple_files.command = ['foot', '-e', 'ranger', '--choosefiles={}']
+
+c.fileselect.folder.command = ['foot', '-e', 'ranger', '--choosedir={}']
+
+c.spellcheck.languages = ['en-GB']
+
+c.tabs.padding = {'bottom': 4, 'left': 5, 'right': 5, 'top': 2}
+
+c.tabs.select_on_remove = 'prev'
+
+c.fonts.default_family = 'GoMono Nerd Font'
+c.fonts.default_size = '10pt'
+c.fonts.web.family.standard = 'GoMono Nerd Font'
+c.fonts.web.size.default = 14
+
+# Font used for the context menu. If set to null, the Qt default is
+# used.
+# Type: Font
+c.fonts.contextmenu = 'default_size default_family'
+
+config.bind(',M', 'hint links spawn mpv {hint-url}')
+config.bind('xb', 'config-cycle statusbar.show never always')
+config.bind('xt', 'config-cycle tabs.show never always ')
+config.bind('xx', 'config-cycle statusbar.show never always;; config-cycle tabs.show never always ')
+
+# Custom stylesheet for qt to set tab mouse hover info window font size
+c.qt.args += ['stylesheet=/home/justine/.config/qutebrowser/stylesheet.qss']
+
+c.content.autoplay = False
+config.source('gruvbox.py')
diff --git a/.config/qutebrowser/gruvbox.py b/.config/qutebrowser/gruvbox.py
new file mode 100644
index 0000000..7c96968
--- /dev/null
+++ b/.config/qutebrowser/gruvbox.py
@@ -0,0 +1,332 @@
+# gruvbox dark hard qutebrowser theme by Florian Bruhin <me@the-compiler.org>
+#
+# Originally based on:
+# base16-qutebrowser (https://github.com/theova/base16-qutebrowser)
+# Base16 qutebrowser template by theova and Daniel Mulford
+# Gruvbox dark, hard scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+
+bg0_hard = "#1d2021"
+bg0_soft = '#32302f'
+bg0_normal = '#282828'
+
+bg0 = bg0_normal
+bg1 = "#3c3836"
+bg2 = "#504945"
+bg3 = "#665c54"
+bg4 = "#7c6f64"
+
+fg0 = "#fbf1c7"
+fg1 = "#ebdbb2"
+fg2 = "#d5c4a1"
+fg3 = "#bdae93"
+fg4 = "#a89984"
+
+bright_red = "#fb4934"
+bright_green = "#b8bb26"
+bright_yellow = "#fabd2f"
+bright_blue = "#83a598"
+bright_purple = "#d3869b"
+bright_aqua = "#8ec07c"
+bright_gray = "#928374"
+bright_orange = "#fe8019"
+
+dark_red = "#cc241d"
+dark_green = "#98971a"
+dark_yellow = "#d79921"
+dark_blue = "#458588"
+dark_purple = "#b16286"
+dark_aqua = "#689d6a"
+dark_gray = "#a89984"
+dark_orange = "#d65d0e"
+
+### Completion
+
+# Text color of the completion widget. May be a single color to use for
+# all columns or a list of three colors, one for each column.
+c.colors.completion.fg = [fg1, bright_aqua, bright_yellow]
+
+# Background color of the completion widget for odd rows.
+c.colors.completion.odd.bg = bg0
+
+# Background color of the completion widget for even rows.
+c.colors.completion.even.bg = c.colors.completion.odd.bg
+
+# Foreground color of completion widget category headers.
+c.colors.completion.category.fg = bright_blue
+
+# Background color of the completion widget category headers.
+c.colors.completion.category.bg = bg1
+
+# Top border color of the completion widget category headers.
+c.colors.completion.category.border.top = c.colors.completion.category.bg
+
+# Bottom border color of the completion widget category headers.
+c.colors.completion.category.border.bottom = c.colors.completion.category.bg
+
+# Foreground color of the selected completion item.
+c.colors.completion.item.selected.fg = fg0
+
+# Background color of the selected completion item.
+c.colors.completion.item.selected.bg = bg4
+
+# Top border color of the selected completion item.
+c.colors.completion.item.selected.border.top = bg2
+
+# Bottom border color of the selected completion item.
+c.colors.completion.item.selected.border.bottom = c.colors.completion.item.selected.border.top
+
+# Foreground color of the matched text in the selected completion item.
+c.colors.completion.item.selected.match.fg = bright_orange
+
+# Foreground color of the matched text in the completion.
+c.colors.completion.match.fg = c.colors.completion.item.selected.match.fg
+
+# Color of the scrollbar handle in the completion view.
+c.colors.completion.scrollbar.fg = c.colors.completion.item.selected.fg
+
+# Color of the scrollbar in the completion view.
+c.colors.completion.scrollbar.bg = c.colors.completion.category.bg
+
+### Context menu
+
+# Background color of disabled items in the context menu.
+c.colors.contextmenu.disabled.bg = bg3
+
+# Foreground color of disabled items in the context menu.
+c.colors.contextmenu.disabled.fg = fg3
+
+# Background color of the context menu. If set to null, the Qt default is used.
+c.colors.contextmenu.menu.bg = bg0
+
+# Foreground color of the context menu. If set to null, the Qt default is used.
+c.colors.contextmenu.menu.fg = fg2
+
+# Background color of the context menu’s selected item. If set to null, the Qt default is used.
+c.colors.contextmenu.selected.bg = bg2
+
+#Foreground color of the context menu’s selected item. If set to null, the Qt default is used.
+c.colors.contextmenu.selected.fg = c.colors.contextmenu.menu.fg
+
+### Downloads
+
+# Background color for the download bar.
+c.colors.downloads.bar.bg = bg0
+
+# Color gradient start for download text.
+c.colors.downloads.start.fg = bg0
+
+# Color gradient start for download backgrounds.
+c.colors.downloads.start.bg = bright_blue
+
+# Color gradient end for download text.
+c.colors.downloads.stop.fg = c.colors.downloads.start.fg
+
+# Color gradient stop for download backgrounds.
+c.colors.downloads.stop.bg = bright_aqua
+
+# Foreground color for downloads with errors.
+c.colors.downloads.error.fg = bright_red
+
+### Hints
+
+# Font color for hints.
+c.colors.hints.fg = bg0
+
+# Background color for hints.
+c.colors.hints.bg = 'rgba(250, 191, 47, 200)' # bright_yellow
+
+# Font color for the matched part of hints.
+c.colors.hints.match.fg = bg4
+
+### Keyhint widget
+
+# Text color for the keyhint widget.
+c.colors.keyhint.fg = fg4
+
+# Highlight color for keys to complete the current keychain.
+c.colors.keyhint.suffix.fg = fg0
+
+# Background color of the keyhint widget.
+c.colors.keyhint.bg = bg0
+
+### Messages
+
+# Foreground color of an error message.
+c.colors.messages.error.fg = bg0
+
+# Background color of an error message.
+c.colors.messages.error.bg = bright_red
+
+# Border color of an error message.
+c.colors.messages.error.border = c.colors.messages.error.bg
+
+# Foreground color of a warning message.
+c.colors.messages.warning.fg = bg0
+
+# Background color of a warning message.
+c.colors.messages.warning.bg = bright_purple
+
+# Border color of a warning message.
+c.colors.messages.warning.border = c.colors.messages.warning.bg
+
+# Foreground color of an info message.
+c.colors.messages.info.fg = fg2
+
+# Background color of an info message.
+c.colors.messages.info.bg = bg0
+
+# Border color of an info message.
+c.colors.messages.info.border = c.colors.messages.info.bg
+
+### Prompts
+
+# Foreground color for prompts.
+c.colors.prompts.fg = fg2
+
+# Border used around UI elements in prompts.
+c.colors.prompts.border = f'1px solid {bg1}'
+
+# Background color for prompts.
+c.colors.prompts.bg = bg3
+
+# Background color for the selected item in filename prompts.
+c.colors.prompts.selected.bg = bg2
+
+### Statusbar
+
+# Foreground color of the statusbar.
+c.colors.statusbar.normal.fg = fg2
+
+# Background color of the statusbar.
+c.colors.statusbar.normal.bg = bg0
+
+# Foreground color of the statusbar in insert mode.
+c.colors.statusbar.insert.fg = bg0
+
+# Background color of the statusbar in insert mode.
+c.colors.statusbar.insert.bg = dark_aqua
+
+# Foreground color of the statusbar in passthrough mode.
+c.colors.statusbar.passthrough.fg = bg0
+
+# Background color of the statusbar in passthrough mode.
+c.colors.statusbar.passthrough.bg = dark_blue
+
+# Foreground color of the statusbar in private browsing mode.
+c.colors.statusbar.private.fg = bright_purple
+
+# Background color of the statusbar in private browsing mode.
+c.colors.statusbar.private.bg = bg0
+
+# Foreground color of the statusbar in command mode.
+c.colors.statusbar.command.fg = fg3
+
+# Background color of the statusbar in command mode.
+c.colors.statusbar.command.bg = bg1
+
+# Foreground color of the statusbar in private browsing + command mode.
+c.colors.statusbar.command.private.fg = c.colors.statusbar.private.fg
+
+# Background color of the statusbar in private browsing + command mode.
+c.colors.statusbar.command.private.bg = c.colors.statusbar.command.bg
+
+# Foreground color of the statusbar in caret mode.
+c.colors.statusbar.caret.fg = bg0
+
+# Background color of the statusbar in caret mode.
+c.colors.statusbar.caret.bg = dark_purple
+
+# Foreground color of the statusbar in caret mode with a selection.
+c.colors.statusbar.caret.selection.fg = c.colors.statusbar.caret.fg
+
+# Background color of the statusbar in caret mode with a selection.
+c.colors.statusbar.caret.selection.bg = bright_purple
+
+# Background color of the progress bar.
+c.colors.statusbar.progress.bg = bright_blue
+
+# Default foreground color of the URL in the statusbar.
+c.colors.statusbar.url.fg = fg4
+
+# Foreground color of the URL in the statusbar on error.
+c.colors.statusbar.url.error.fg = dark_red
+
+# Foreground color of the URL in the statusbar for hovered links.
+c.colors.statusbar.url.hover.fg = bright_orange
+
+# Foreground color of the URL in the statusbar on successful load
+# (http).
+c.colors.statusbar.url.success.http.fg = bright_red
+
+# Foreground color of the URL in the statusbar on successful load
+# (https).
+c.colors.statusbar.url.success.https.fg = fg0
+
+# Foreground color of the URL in the statusbar when there's a warning.
+c.colors.statusbar.url.warn.fg = bright_purple
+
+### tabs
+
+# Background color of the tab bar.
+c.colors.tabs.bar.bg = bg0
+
+# Color gradient start for the tab indicator.
+c.colors.tabs.indicator.start = bright_blue
+
+# Color gradient end for the tab indicator.
+c.colors.tabs.indicator.stop = bright_aqua
+
+# Color for the tab indicator on errors.
+c.colors.tabs.indicator.error = bright_red
+
+# Foreground color of unselected odd tabs.
+c.colors.tabs.odd.fg = fg2
+
+# Background color of unselected odd tabs.
+c.colors.tabs.odd.bg = bg2
+
+# Foreground color of unselected even tabs.
+c.colors.tabs.even.fg = c.colors.tabs.odd.fg
+
+# Background color of unselected even tabs.
+c.colors.tabs.even.bg = bg3
+
+# Foreground color of selected odd tabs.
+c.colors.tabs.selected.odd.fg = fg2
+
+# Background color of selected odd tabs.
+c.colors.tabs.selected.odd.bg = bg0
+
+# Foreground color of selected even tabs.
+c.colors.tabs.selected.even.fg = c.colors.tabs.selected.odd.fg
+
+# Background color of selected even tabs.
+c.colors.tabs.selected.even.bg = bg0
+
+# Background color of pinned unselected even tabs.
+c.colors.tabs.pinned.even.bg = bright_green
+
+# Foreground color of pinned unselected even tabs.
+c.colors.tabs.pinned.even.fg = bg2
+
+# Background color of pinned unselected odd tabs.
+c.colors.tabs.pinned.odd.bg = bright_green
+
+# Foreground color of pinned unselected odd tabs.
+c.colors.tabs.pinned.odd.fg = c.colors.tabs.pinned.even.fg
+
+# Background color of pinned selected even tabs.
+c.colors.tabs.pinned.selected.even.bg = bg0
+
+# Foreground color of pinned selected even tabs.
+c.colors.tabs.pinned.selected.even.fg = c.colors.tabs.selected.odd.fg
+
+# Background color of pinned selected odd tabs.
+c.colors.tabs.pinned.selected.odd.bg = c.colors.tabs.pinned.selected.even.bg
+
+# Foreground color of pinned selected odd tabs.
+c.colors.tabs.pinned.selected.odd.fg = c.colors.tabs.selected.odd.fg
+
+# Background color for webpages if unset (or empty to use the theme's
+# color).
+# c.colors.webpage.bg = bg4
diff --git a/.config/qutebrowser/stylesheet.qss b/.config/qutebrowser/stylesheet.qss
new file mode 100644
index 0000000..0266bac
--- /dev/null
+++ b/.config/qutebrowser/stylesheet.qss
@@ -0,0 +1 @@
+* { font-family "GoMono Nerd Font"; font-size: 11pt }
diff --git a/.config/waybar/config b/.config/waybar/config
new file mode 100644
index 0000000..ea128e9
--- /dev/null
+++ b/.config/waybar/config
@@ -0,0 +1,92 @@
+{
+ "layer": "top",
+ "height": 27,
+ "spacing": 5,
+ "margin-top" :5,
+ "margin-right" :10,
+ "margin-left" :10,
+ "margin-bottom" :-5,
+
+ "modules-left": [
+ "dwl/tags",
+ "custom/layout",
+ ],
+
+ "modules-center": ["custom/clock"],
+
+ "modules-right": [
+ "custom/keyboard-layout",
+ "idle_inhibitor",
+ "custom/brightness",
+ "custom/audio",
+ "custom/battery",
+ ],
+
+ "dwl/tags": {
+ "num-tags": 9,
+ "tag-labels": ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
+ },
+
+ "custom/layout": {
+ "format": "<span color='#202020' bgcolor='#d79921'>  </span> {}",
+ "return-type": "json",
+ "exec": "~/.config/waybar/scripts/layout.sh",
+ "on-click": "~/.config/waybar/scripts/layout.sh toggle",
+ "interval" : 1,
+ "tooltip" : false
+ },
+
+ "custom/keyboard-layout": {
+ "format": "<span color='#202020' bgcolor='#98971a' >  </span> {}",
+ "return-type": "text",
+ "interval": 1,
+ "exec": "mmsg -k | awk '{print toupper($3); exit}'",
+ "tooltip" : false
+ },
+
+ "idle_inhibitor": {
+ "format": "<span color='#202020' bgcolor='#458588' > {icon} </span>",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+
+ "custom/brightness": {
+ "format": "<span color='#202020' bgcolor='#d79921'>  </span> {}%",
+ "return-type": "json",
+ "exec": "~/.config/waybar/scripts/brightnesscontrol.sh",
+ "on-click": "~/.config/waybar/scripts/brightnesscontrol.sh down",
+ "on-click-right": "~/.config/waybar/scripts/brightnesscontrol.sh up",
+ "interval" : 1,
+ "tooltip" : false
+ },
+
+ "custom/battery": {
+ "format-icons": ["󰂎","󰁺","󰁻","󰁽","󰁾","󰁿","󰂀","󰂁","󰂂","󰁹"],
+ "format": "<span color='#202020' bgcolor='#689d6a' > {icon}{alt} </span> {text}%",
+ "return-type": "json",
+ "interval": 1,
+ "exec": "~/.config/waybar/scripts/battery.sh",
+ "tooltip": false
+ },
+
+ "custom/audio": {
+ "format": "{}%",
+ "return-type": "json",
+ "interval": 1,
+ "exec": "~/.config/waybar/scripts/volumecontrol.sh",
+ "on-scroll-up": "~/.config/waybar/scripts/volumecontrol.sh up",
+ "on-scroll-down": "~/.config/waybar/scripts/volumecontrol.sh down",
+ "on-click": "~/.config/waybar/scripts/volumecontrol.sh mute",
+ "tooltip": false
+ },
+
+ "custom/clock": {
+ "format": "<span color='#202020' bgcolor='#689d6a' >  </span> {}",
+ "return-type": "json",
+ "interval": 1,
+ "exec": "~/.config/waybar/scripts/date-time.sh",
+ "on-click": "~/.config/waybar/scripts/calendar.sh show"
+ },
+}
diff --git a/.config/waybar/scripts/battery.sh b/.config/waybar/scripts/battery.sh
new file mode 100755
index 0000000..73fe1cd
--- /dev/null
+++ b/.config/waybar/scripts/battery.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Send a notification if battery is low, change status in info file accordingly
+notify_low () {
+
+ # Battery isn't much but is charging (don't notify)
+ [ "$status" = "on-line" ] && return
+
+ # Battery critically low
+ if [ "$capacity" -le 10 ] && ! grep -q critically-low "$lowinfo"; then
+ notify-send -i "$HOME/.config/icons/critical-battery.png" -u critical "Battery critically low!"
+ echo critically-low >"$lowinfo"
+
+ # Battery is low
+ elif [ "$capacity" -le 20 ] && ! grep -q low "$lowinfo"; then
+ notify-send -i "$HOME/.config/icons/low-battery.png" -t 5500 "Battery low!"
+ echo low >"$lowinfo"
+ fi
+}
+
+status="$(apm | grep -E "AC Line status:" | sed -n -e 's/^.*AC Line status: //p')"
+capacity="$(apm | grep -E "Remaining battery life:" | head -1 | sed -n -e 's/^.*Remaining battery life: //p' | sed 's/.$//')"
+
+# Get the low battery status from file ~/.cache/battery-low-status
+lowinfo="$HOME/.cache/battery-low-status"
+[ ! -e "$lowinfo" ] && touch "$lowinfo"
+
+
+case $1 in
+ left-click)
+ ;;
+ *)
+ # Set charging icon and capacity icon
+ [ "$status" = "on-line" ] && charging_icon="" || charging_icon=""
+ [ "$capacity" -gt 100 ] && capacity=100
+ if [ "$capacity" -lt 15 ]; then capacity_icon=' '
+ elif [ "$capacity" -lt 40 ]; then capacity_icon=' '
+ elif [ "$capacity" -lt 60 ]; then capacity_icon=' '
+ elif [ "$capacity" -lt 90 ]; then capacity_icon=' '
+ else capacity_icon=' '
+ fi
+
+ # Report low battery
+ [ "$capacity" -le 20 ] && notify_low
+
+ # Reset low battery information in these cases
+ { [ "$capacity" -gt 20 ] || [ "$status" = "Charging" ]; } && [ -n "$(cat "$lowinfo")" ] && echo "" >"$lowinfo"
+
+ text=$capacity
+ alt=" "$charging_icon
+ echo "{\"text\": \"$text"\", \"alt\": \"$alt"\", \"tooltip\":\"$tooltip\", \"class\": \"$class\", \"percentage\":"$capacity"}"
+ ;;
+esac
diff --git a/.config/waybar/scripts/brightnesscontrol.sh b/.config/waybar/scripts/brightnesscontrol.sh
new file mode 100755
index 0000000..a59e410
--- /dev/null
+++ b/.config/waybar/scripts/brightnesscontrol.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# You can call this script like this:
+# brightnessControl up
+# brightnessControl down
+
+# Script inspired by these wonderful people:
+# https://github.com/dastorm/volume-notification-dunst/blob/master/volume.sh
+# https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a
+
+send_notification() {
+ icon="/usr/share/icons/Adwaita/symbolic/status/daytime-sunrise-symbolic.svg"
+ brightness=$(backlight -q)
+ # Make the bar with the special character ─ (it's not dash -)
+ # https://en.wikipedia.org/wiki/Box-drawing_character
+ bar=$(seq -s "─" 0 $((brightness / 10 )) | sed 's/[0-9]//g')
+ # Send the notification
+ fyi -i "$icon" --hint=string:x-canonical-private-synchronous:brightness -u normal "$bar $brightness"
+}
+
+case $1 in
+ up)
+ backlight + 4
+ backlight > ~/.cache/brightness
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ ;;
+ down)
+ backlight - 4
+ backlight > ~/.cache/brightness
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ ;;
+ *)
+ text=$(backlight -q)
+ icon=""
+ # printf "%s" "$icon $brightness" "%"
+ echo "{\"text\":\""$text"\", \"tooltip\":\""$tooltip"\"}"
+ ;;
+esac
diff --git a/.config/waybar/scripts/calendar.sh b/.config/waybar/scripts/calendar.sh
new file mode 100755
index 0000000..82ddd92
--- /dev/null
+++ b/.config/waybar/scripts/calendar.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Calendar script
+
+ShowCalendar() {
+ fyi -a "Calendar" --hint string:x-canonical-private-synchronous:calendar " 📅 Calendar" "$(cal | sed "s/\<$(date +%-d)\>/<span color='#fabd2f'><b>$(date +%-d)<\/b><\/span>/")"
+}
+
+EditCalendar() {
+ echo
+}
+
+case "$1" in
+ show)
+ ShowCalendar
+ ;;
+
+ edit)
+ EditCalendar
+ ;;
+
+ *)
+ echo $"Usage: ${0##*/} {show|edit}"
+ exit 1
+
+esac
diff --git a/.config/waybar/scripts/date-time.sh b/.config/waybar/scripts/date-time.sh
new file mode 100755
index 0000000..6ce5e30
--- /dev/null
+++ b/.config/waybar/scripts/date-time.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+DaySuffix() {
+ case `date +%-d` in
+ 1|21|31) echo "st";;
+ 2|22) echo "nd";;
+ 3|23) echo "rd";;
+ *) echo "th";;
+ esac
+}
+text=$(date "+%A %-d`DaySuffix` %B %Y - %H:%M ")
+
+echo "{\"text\":\""$text"\", \"tooltip\":\""$tooltip"\"}"
diff --git a/.config/waybar/scripts/idleinhibit.sh b/.config/waybar/scripts/idleinhibit.sh
new file mode 100755
index 0000000..c24f715
--- /dev/null
+++ b/.config/waybar/scripts/idleinhibit.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Swayidle toggle
+toggle() {
+ if pgrep "swayidle" > /dev/null
+ then
+ pkill swayidle
+ notify-send --hint=string:x-canonical-private-synchronous:idleinhibit -u normal " Swayidle Inactive"
+ else
+ sh "$HOME/.config/river/scripts/swayidle-update.sh"
+ notify-send --hint=string:x-canonical-private-synchronous:idleinhibit -u normal " Swayidle Active"
+ fi
+}
+
+case $1 in
+ toggle)
+ toggle
+ ;;
+ *)
+ if pgrep "swayidle" > /dev/null
+ then
+ icon=""
+ else
+ icon=""
+ fi
+ printf "%s" "$icon "
+ ;;
+esac
diff --git a/.config/waybar/scripts/layout.sh b/.config/waybar/scripts/layout.sh
new file mode 100755
index 0000000..997d837
--- /dev/null
+++ b/.config/waybar/scripts/layout.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Get focused output
+output="$(mmsg -g | grep "selmon 1" | awk '{print$1}')"
+
+case $1 in
+ toggle)
+ mmsg -d switch_layout
+ ;;
+ *)
+ text=$(mmsg -g | grep " layout" | sort -t: -k2,2nr | awk '{ print $3 }' FS=' ')
+ echo "{\"text\":\""$text"\", \"tooltip\":\""$tooltip"\"}"
+ ;;
+esac
diff --git a/.config/waybar/scripts/swayidle-update.sh b/.config/waybar/scripts/swayidle-update.sh
new file mode 100755
index 0000000..1f905a9
--- /dev/null
+++ b/.config/waybar/scripts/swayidle-update.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+pkill -f swayidle
+read -r wallpaper<"$HOME/.cache/wallpaper"
+swayidle -w \
+ timeout 300 "swaylock -f -i $wallpaper --effect-blur 10x5 --clock --datestr '%a %d %b %Y' --indicator" \
+ timeout 600 "wlopm --off \*;swaylock -F -i $wallpaper --effect-blur 10x5 --clock --datestr '%a %d %b %Y' --indicator" resume "wlopm --on \*" &
+# before-sleep "swaylock -f -i $wallpaper --effect-blur 10x5 --clock --datestr '%a %d %b %Y' --indicator" &
diff --git a/.config/waybar/scripts/volumecontrol.sh b/.config/waybar/scripts/volumecontrol.sh
new file mode 100755
index 0000000..3359046
--- /dev/null
+++ b/.config/waybar/scripts/volumecontrol.sh
@@ -0,0 +1,130 @@
+#!/bin/sh
+
+# You can call this script like this:
+# volumecontrol up
+# volumecontrol down
+# volumecontrol mute
+
+get_volume() {
+ # pactl get-sink-volume @DEFAULT_SINK@ | grep '%' | cut -d '%' -f 1 | cut -d ' ' -f 6
+ echo "scale=1; $(mixer vol | grep 'vol.volume=' | cut -d '=' -f 2 | cut -d ':' -f 1)*100" | bc | cut -d '.' -f 1
+}
+
+is_mute() {
+ # pactl get-sink-mute @DEFAULT_SINK@ | grep 'Mute: yes' >> /dev/null
+ mixer vol | grep 'vol.mute=on' >> /dev/null
+}
+
+send_notification() {
+ volume=$(get_volume)
+ # Make the bar with the special character ─ (it's not dash -)
+ # https://en.wikipedia.org/wiki/Box-drawing_character
+ if [ "$volume" = "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "89" ] && [ "$volume" -le "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "79" ] && [ "$volume" -le "90" ]; then
+ icon=""
+ elif [ "$volume" -ge "69" ] && [ "$volume" -le "80" ]; then
+ icon=""
+ elif [ "$volume" -ge "59" ] && [ "$volume" -le "70" ]; then
+ icon=""
+ elif [ "$volume" -ge "49" ] && [ "$volume" -le "60" ]; then
+ icon=""
+ elif [ "$volume" -ge "39" ] && [ "$volume" -le "50" ]; then
+ icon=""
+ elif [ "$volume" -ge "29" ] && [ "$volume" -le "40" ]; then
+ icon=""
+ elif [ "$volume" -ge "19" ] && [ "$volume" -le "30" ]; then
+ icon=""
+ elif [ "$volume" -ge "9" ] && [ "$volume" -le "20" ]; then
+ icon=""
+ elif [ "$volume" -gt "0" ] && [ "$volume" -le "10" ]; then
+ icon=""
+ elif [ "$volume" -eq "0" ]; then
+ icon=""
+ class="muted"
+ fi
+bar=$(seq -s "─" $(($volume/5)) | sed 's/[0-9]//g')
+# Send the notification
+fyi --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon $bar $volume"
+}
+
+case $1 in
+ up)
+ # pactl set-sink-mute @DEFAULT_SINK@ 0
+ mixer vol.mute=off
+ # Up the volume (+ 2%)
+ # pactl set-sink-volume @DEFAULT_SINK@ +2%
+ mixer vol.volume=+2%
+ mixer vol > ~/.cache/audio-volume
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ ;;
+ down)
+ # pactl set-sink-mute @DEFAULT_SINK@ 0
+ mixer vol.mute=off
+ # pactl set-sink-volume @DEFAULT_SINK@ -2%
+ mixer vol.volume=-2%
+ mixer vol > ~/.cache/audio-volume
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ ;;
+ mute)
+ # Toggle mute
+ # pactl set-sink-mute @DEFAULT_SINK@ toggle
+ mixer vol.mute=toggle
+ mixer vol > ~/.cache/audio-volume
+ if is_mute ; then
+ icon="󰝟"
+ class="muted"
+ text="<span color='#202020' bgcolor='#ff00aa' > $icon </span> $volume"
+ fyi --hint=string:x-canonical-private-synchronous:volumecontrol -u normal "$icon Audio Muted"
+ else
+ send_notification
+ # canberra-gtk-play -i audio-volume-change
+ fi
+ ;;
+ *)
+ volume="$(get_volume)"
+
+ if [ "$volume" = "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "89" ] && [ "$volume" -le "100" ]; then
+ icon=""
+ elif [ "$volume" -ge "79" ] && [ "$volume" -le "90" ]; then
+ icon=""
+ elif [ "$volume" -ge "69" ] && [ "$volume" -le "80" ]; then
+ icon=""
+ elif [ "$volume" -ge "59" ] && [ "$volume" -le "70" ]; then
+ icon=""
+ elif [ "$volume" -ge "49" ] && [ "$volume" -le "60" ]; then
+ icon=""
+ elif [ "$volume" -ge "39" ] && [ "$volume" -le "50" ]; then
+ icon=""
+ elif [ "$volume" -ge "29" ] && [ "$volume" -le "40" ]; then
+ icon=""
+ elif [ "$volume" -ge "19" ] && [ "$volume" -le "30" ]; then
+ icon=""
+ elif [ "$volume" -ge "9" ] && [ "$volume" -le "20" ]; then
+ icon=""
+ elif [ "$volume" -gt "0" ] && [ "$volume" -le "10" ]; then
+ icon=""
+ elif [ "$volume" -eq "0" ]; then
+ icon="󰝟"
+ class="muted"
+ fi
+
+
+if is_mute || [ "$class" = 'muted' ]; then
+ icon="󰝟"
+ class="muted"
+ text="<span color='#202020' bgcolor='#cc241d' > $icon </span> $volume"
+ else
+ text="<span color='#202020' bgcolor='#d65d0e' > $icon </span> $volume"
+fi
+
+alt=$icon
+echo "{\"text\": \"$text"\", \"alt\": \"$alt"\", \"tooltip\":\"$tooltip\", \"class\": \"$class\", \"percentage\":"$volume"}"
+ ;;
+esac
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
new file mode 100644
index 0000000..182a733
--- /dev/null
+++ b/.config/waybar/style.css
@@ -0,0 +1,185 @@
+/* ================================ */
+/* Common CSS */
+/* ================================ */
+* {
+ /* `otf-font-awesome` is required to be installed for icons */
+ padding: 0;
+ margin: 0;
+ min-height: 0;
+ border-radius: 0;
+ border: none;
+ text-shadow: none;
+ text-decoration: none;
+ transition: none;
+}
+
+/* the whole window */
+window#waybar {
+ color: #fff4d2;
+ background: none;
+}
+
+window#waybar.hidden {
+ opacity: 1;
+}
+
+#tags,
+#tags button,
+/* #tags button.occupied, */
+/* #tags button.focused, */
+/* #tags button.urgent, */
+/* #window, */
+#idle_inhibitor,
+#language,
+#custom-layout,
+#custom-keyboard-layout,
+#custom-brightness,
+#custom-memory,
+#custom-battery,
+#custom-battery.critical,
+#custom-battery.warning,
+#custom-audio,
+#custom-clock {
+ font-family: GoMono Nerd Font;
+ font-size: 12px;
+ font-weight: 800;
+ color: #202020;
+ background: #202020;
+ border: 2px solid #202020;
+ margin: 0px 4px 4px 0px;
+ box-shadow: 3px 4px 2px -2px rgba(0, 0, 0, 0.5);
+}
+
+/* #window, */
+#idle_inhibitor,
+#language,
+#custom-layout,
+#custom-keyboard-layout,
+#custom-brightness,
+#custom-memory,
+#custom-battery,
+#custom-battery.critical,
+#custom-battery.warning,
+#custom-audio,
+#clock {
+ padding-right: 4px;
+}
+
+/* ================================ */
+/* idle_inhibitor */
+/* ================================ */
+
+#idle_inhibitor {
+ color: #458588;
+ padding: 0;
+}
+
+/* ================================ */
+/* language */
+/* ================================ */
+
+#language {
+ color: #fb4934;
+}
+
+/* ================================ */
+/* custom-audio */
+/* ================================ */
+#custom-audio {
+ color: #d65d0e;
+}
+
+#custom-audio.muted {
+ color: #cc241d;
+}
+
+/* ================================ */
+/* custom-brightness */
+/* ================================ */
+#custom-brightness {
+ color: #d79921;
+}
+
+/* ================================ */
+/* custom-layout */
+/* ================================ */
+#custom-layout {
+ color: #d79921;
+}
+
+/*================================= */
+/* custom-keyboard-layout */
+/*==================================*/
+#custom-keyboard-layout {
+ color: #98971a;
+}
+
+/* ================================ */
+/* pulseaudio */
+/* ================================ */
+#pulseaudio {
+ color: #83a598;
+}
+
+#pulseaudio.muted {
+ color: #fb4934;
+}
+
+/* ================================ */
+/* custom-battery */
+/* ================================ */
+#custom-battery {
+ color: #689d6a;
+}
+
+#custom-battery.warning {
+ color: #fe8019;
+}
+
+#custom-battery.critical {
+ color: #cc241d;
+}
+
+/* ================================ */
+/* clock */
+/* ================================ */
+#custom-clock {
+ color: #689d6a;
+}
+
+/* ================================ */
+/* Tags */
+/* ================================ */
+
+#tags {
+ padding: 0;
+}
+
+#tags button {
+ color: #928374;
+ background: #3c3836;
+ padding: 0 4px;
+ margin: 0px -0.5px;
+ min-width: 15px;
+}
+
+#tags button:hover {
+ color: #fff4d2;
+ background: #fe8019;
+}
+
+#tags button.occupied {
+ color: #fff4d2;
+ background: #98971a;
+}
+
+#tags button.focused {
+ color: #fff4d2;
+ background: #fe8019;
+}
+
+#tags button.urgent {
+ color: #fff4d2;
+ background: #cc241d;
+}
+
diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc
new file mode 100644
index 0000000..bfc65e1
--- /dev/null
+++ b/.config/zathura/zathurarc
@@ -0,0 +1,39 @@
+set selection-clipboard clipboard
+
+# Gruvbox theme
+# https://github.com/eastack/zathura-gruvbox/blob/master/zathura-gruvbox-dark
+set notification-error-bg "#282828" # bg
+set notification-error-fg "#fb4934" # bright:red
+set notification-warning-bg "#282828" # bg
+set notification-warning-fg "#fabd2f" # bright:yellow
+set notification-bg "#282828" # bg
+set notification-fg "#b8bb26" # bright:green
+
+set completion-bg "#504945" # bg2
+set completion-fg "#ebdbb2" # fg
+set completion-group-bg "#3c3836" # bg1
+set completion-group-fg "#928374" # gray
+set completion-highlight-bg "#83a598" # bright:blue
+set completion-highlight-fg "#504945" # bg2
+
+# Define the color in index mode
+set index-bg "#504945" # bg2
+set index-fg "#ebdbb2" # fg
+set index-active-bg "#83a598" # bright:blue
+set index-active-fg "#504945" # bg2
+
+set inputbar-bg "#282828" # bg
+set inputbar-fg "#ebdbb2" # fg
+
+set statusbar-bg "#504945" # bg2
+set statusbar-fg "#ebdbb2" # fg
+
+set highlight-color "#fabd2f" # bright:yellow
+set highlight-active-color "#fe8019" # bright:orange
+
+#set default-bg "#282828" # bg
+set default-bg rgba(0,0,0,0.7) #bg
+set default-fg "#ebdbb2" # fg
+set render-loading true
+set render-loading-bg "#282828" # bg
+set render-loading-fg "#ebdbb2" # fg