diff --git a/.dot-files-laptop/.bin/sh/aur.sh b/.dot-files-laptop/.bin/sh/aur.sh
new file mode 100755
index 0000000..adb2e76
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/aur.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+auracle search --quiet --searchby=name $1 | fzf --color="border:magenta,info:green,header:green,info:yellow,hl:blue,label:magenta" --multi --preview "auracle info {1}" --preview-window=up | xargs -ro auracle clone -C ~/Downloads/AUR
diff --git a/.dot-files-laptop/.bin/sh/batterymode.sh b/.dot-files-laptop/.bin/sh/batterymode.sh
new file mode 100755
index 0000000..36be0bd
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/batterymode.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env sh
+HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==2{print $2}')
+if [ "$HYPRGAMEMODE" = 1 ] ; then
+ hyprctl --batch "\
+ keyword decoration:drop_shadow 0;\
+ keyword decoration:blur:enabled 0"
+ exit
+fi
+hyprctl reload
diff --git a/.dot-files-laptop/.bin/sh/bd.sh b/.dot-files-laptop/.bin/sh/bd.sh
new file mode 100755
index 0000000..163cad8
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/bd.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+stat / | grep "Birth" | sed 's/Birth: //g' | cut -b 2-11
diff --git a/.dot-files-laptop/.bin/sh/build.sh b/.dot-files-laptop/.bin/sh/build.sh
new file mode 100755
index 0000000..49f7bac
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/build.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Build package and prompt for cleaning
+
+{
+makepkg -si;
+read -p "Clean leftover files? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ git clean -dxfi
+fi
+}
diff --git a/.dot-files-laptop/.bin/sh/buildgames.sh b/.dot-files-laptop/.bin/sh/buildgames.sh
new file mode 100755
index 0000000..78a55ee
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/buildgames.sh
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+# Ask for confirmation to build nblood
+
+{
+read -p "Build nblood? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/nblood-compile.sh
+fi
+}
+
+# Ask for confirmation to build rednukem
+
+{
+read -p "Build rednukem? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/rednukem-compile.sh
+fi
+}
+
+
+# Ask for confirmation to build voidsw
+
+{
+read -p "Build voidsw? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/voidsw-compile.sh
+fi
+}
+
+# Ask for confirmation to build eduke32
+
+{
+read -p "Build eduke32? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/ionfury-compile.sh
+fi
+}
+
+# Ask for confirmation to build vkquake
+
+{
+read -p "Build Quakespasm-spiked? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/quakespasm-compile.sh
+fi
+}
+
+# Ask for confirmation to build crispy-doom
+
+{
+read -p "Build crispy-doom? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/crispy-doom-compile.sh
+fi
+}
diff --git a/.dot-files-laptop/.bin/sh/checkupdates.sh b/.dot-files-laptop/.bin/sh/checkupdates.sh
new file mode 100755
index 0000000..7c6abe7
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/checkupdates.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+# Check for system updates
+
+{
+echo -e "\e[94mChecking Official packages updates...
+\e[39m-------------------------------------
+"
+checkupdates
+echo -e "\e[91m
+Checking AUR packages updates...
+\e[39m--------------------------------
+"
+auracle outdated
+}
+
+# Perform system check
+
+{
+read -p "Check for errors and failed services? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ systemctl --failed && journalctl -p 3 -b
+fi
+}
+
+# Perform update
+
+{
+read -p "Perform system update? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/update.sh
+fi
+}
diff --git a/.dot-files-laptop/.bin/sh/crispy-doom-compile.sh b/.dot-files-laptop/.bin/sh/crispy-doom-compile.sh
new file mode 100755
index 0000000..5632791
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/crispy-doom-compile.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# Switch to git directory and clone source
+{
+cd /home/peter/Downloads/git;
+git clone https://github.com/fabiangreffrath/crispy-doom.git;
+}
+
+# Build binary
+
+{
+cd crispy-doom;
+autoreconf -fiv;
+./configure;
+make;
+}
+
+# Install executable @ ~/.bin
+
+{
+cd /home/peter/.bin/crispy-doom;
+mv /home/peter/.bin/crispy-doom/crispy-doom /home/peter/.bin/crispy-doom/old;
+mv /home/peter/.bin/crispy-doom/crispy-doom-setup /home/peter/.bin/crispy-doom/old;
+cd /home/peter/Downloads/git/crispy-doom;
+cp /home/peter/Downloads/git/crispy-doom/src/crispy-doom /home/peter/.bin/crispy-doom;
+cp /home/peter/Downloads/git/crispy-doom/src/crispy-doom-setup /home/peter/.bin/crispy-doom;
+chmod 755 /home/peter/.bin/crispy-doom/crispy-doom;
+}
+
+# Cleanup
+
+{
+rm -rf /home/peter/Downloads/git/crispy-doom;
+}
diff --git a/.dot-files-laptop/.bin/sh/debianbox.sh b/.dot-files-laptop/.bin/sh/debianbox.sh
new file mode 100755
index 0000000..bca505c
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/debianbox.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Ask to connect to server via SSH
+
+{
+read -p "Connect to server via SSH? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ssh kitty +kitten ssh debianbox
+fi
+}
+
diff --git a/.dot-files-laptop/.bin/sh/imageview.sh b/.dot-files-laptop/.bin/sh/imageview.sh
new file mode 100755
index 0000000..a3e0e8c
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/imageview.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+kitty --session ~/.config/kitty/session --listen-on=unix:@mykitty
diff --git a/.dot-files-laptop/.bin/sh/ionfury-compile.sh b/.dot-files-laptop/.bin/sh/ionfury-compile.sh
new file mode 100755
index 0000000..c00d178
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/ionfury-compile.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Switch to git directory and clone source
+{
+cd /home/peter/Downloads/git;
+git clone https://voidpoint.io/terminx/eduke32.git;
+}
+
+# Build binary
+
+{
+cd eduke32;
+make;
+}
+
+# Install executable @ ~/.bin
+
+{
+cd /home/peter/.bin/eduke32;
+mv /home/peter/.bin/eduke32/eduke32 /home/peter/.bin/eduke32/old;
+mv /home/peter/.bin/eduke32/mapster32 /home/peter/.bin/eduke32/old;
+cd /home/peter/Downloads/git/eduke32;
+cp /home/peter/Downloads/git/eduke32/eduke32 /home/peter/.bin/eduke32;
+cp /home/peter/Downloads/git/eduke32/mapster32 /home/peter/.bin/eduke32;
+chmod 755 /home/peter/.bin/eduke32/eduke32;
+}
+
+# Cleanup
+
+{
+rm -rf /home/peter/Downloads/git/eduke32;
+}
diff --git a/.dot-files-laptop/.bin/sh/kap.sh b/.dot-files-laptop/.bin/sh/kap.sh
new file mode 100755
index 0000000..f77e386
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/kap.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+pacman -Qq | fzf --color="border:magenta,info:green,header:green,info:yellow,hl:blue,label:magenta" --multi --preview "pacman -Qi {1}" --preview-window=up | xargs -ro sudo pacman -R
diff --git a/.dot-files-laptop/.bin/sh/lap.sh b/.dot-files-laptop/.bin/sh/lap.sh
new file mode 100755
index 0000000..48508de
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/lap.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+pacman -Slq | fzf --color="border:magenta,info:green,header:green,info:yellow,hl:blue,label:magenta" --multi --preview "pacman -Si {1}" --preview-window=up | xargs -ro sudo pacman -S
diff --git a/.dot-files-laptop/.bin/sh/nblood-compile.sh b/.dot-files-laptop/.bin/sh/nblood-compile.sh
new file mode 100755
index 0000000..536e5f2
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/nblood-compile.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Switch to git directory and clone source
+{
+cd /home/peter/Downloads/git;
+git clone https://github.com/nukeykt/NBlood.git;
+}
+
+# Build binary
+
+{
+cd NBlood;
+make blood;
+}
+
+# Install executable @ ~/.bin
+
+{
+cd /home/peter/.bin/NBlood;
+mv /home/peter/.bin/NBlood/nblood /home/peter/.bin/NBlood/old;
+mv /home/peter/.bin/NBlood/nblood.pk3 /home/peter/.bin/NBlood/old;
+cd /home/peter/Downloads/git/NBlood;
+cp /home/peter/Downloads/git/NBlood/nblood /home/peter/.bin/NBlood;
+cp /home/peter/Downloads/git/NBlood/nblood.pk3 /home/peter/.bin/NBlood;
+chmod 755 /home/peter/.bin/NBlood/nblood;
+}
+
+# Cleanup
+
+{
+rm -rf /home/peter/Downloads/git/NBlood;
+}
diff --git a/.dot-files-laptop/.bin/sh/orphans.sh b/.dot-files-laptop/.bin/sh/orphans.sh
new file mode 100755
index 0000000..237e0d4
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/orphans.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Check for orphans then asks for removal
+
+{
+while [[ $(pacman -Qtdq) ]];
+ do
+ pacman -Qtdq;
+ read -p "Remove orphaned packages? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ sudo pacman -R $(pacman -Qtdq)
+elif [[ -n $(pacman -Qtdq) ]];
+ then
+ exit
+fi
+done
+}
+
diff --git a/.dot-files-laptop/.bin/sh/pkgb.sh b/.dot-files-laptop/.bin/sh/pkgb.sh
new file mode 100755
index 0000000..afc6774
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/pkgb.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+#Check PKGBUILD file
+
+{
+less PKGBUILD;
+read -p "Build package? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/build.sh
+fi
+}
diff --git a/.dot-files-laptop/.bin/sh/quakespasm-compile.sh b/.dot-files-laptop/.bin/sh/quakespasm-compile.sh
new file mode 100755
index 0000000..b038a18
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/quakespasm-compile.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Switch to git directory and clone source
+{
+cd /home/peter/Downloads/git;
+git clone https://github.com/Shpoike/Quakespasm.git;
+}
+
+# Build binary
+
+{
+cd /home/peter/Downloads/git/Quakespasm/Quake;
+make;
+}
+
+# Install executable @ ~/.bin
+
+{
+cd /home/peter/.bin/Quakespasm;
+mv /home/peter/.bin/Quakespasm/quakespasm /home/peter/.bin/Quakespasm/old;
+mv /home/peter/.bin/Quakespasm/quakespasm.pak /home/peter/.bin/Quakespasm/old;
+cd /home/peter/Downloads/git/Quakespasm/Quake;
+cp /home/peter/Downloads/git/Quakespasm/Quake/quakespasm /home/peter/.bin/Quakespasm;
+cp /home/peter/Downloads/git/Quakespasm/Quake/quakespasm.pak /home/peter/.bin/Quakespasm;
+chmod 755 /home/peter/.bin/Quakespasm;
+}
+
+# Cleanup
+
+{
+rm -rf /home/peter/Downloads/git/Quakespasm;
+}
diff --git a/.dot-files-laptop/.bin/sh/reboot.sh b/.dot-files-laptop/.bin/sh/reboot.sh
new file mode 100755
index 0000000..4d40b4d
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/reboot.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Prompt Reboot
+
+{
+read -p "Reboot now? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ command shutdown -r now
+fi
+}
diff --git a/.dot-files-laptop/.bin/sh/rednukem-compile.sh b/.dot-files-laptop/.bin/sh/rednukem-compile.sh
new file mode 100755
index 0000000..3f22e32
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/rednukem-compile.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Switch to git directory and clone source
+{
+cd /home/peter/Downloads/git;
+git clone https://github.com/nukeykt/NBlood.git;
+}
+
+# Build binary
+
+{
+cd NBlood;
+make rednukem;
+}
+
+# Install executable @ ~/.bin
+
+{
+cd /home/peter/.bin/Rednukem;
+mv /home/peter/.bin/Rednukem/rednukem /home/peter/.bin/Rednukem/old;
+mv /home/peter/.bin/Rednukem/dn64widescreen.pk3 /home/peter/.bin/Rednukem/old;
+cd /home/peter/Downloads/git/NBlood;
+cp /home/peter/Downloads/git/NBlood/rednukem /home/peter/.bin/Rednukem;
+cp /home/peter/Downloads/git/NBlood/dn64widescreen.pk3 /home/peter/.bin/Rednukem;
+chmod 755 /home/peter/.bin/Rednukem/rednukem;
+}
+
+# Cleanup
+
+{
+rm -rf /home/peter/Downloads/git/NBlood;
+}
diff --git a/.dot-files-laptop/.bin/sh/shutdown.sh b/.dot-files-laptop/.bin/sh/shutdown.sh
new file mode 100755
index 0000000..97548e9
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/shutdown.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Prompt Reboot
+
+{
+read -p "Shutdown now? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ command shutdown -h now
+fi
+}
diff --git a/.dot-files-laptop/.bin/sh/steamskin.sh b/.dot-files-laptop/.bin/sh/steamskin.sh
new file mode 100755
index 0000000..186f82d
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/steamskin.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+#https://wiki.archlinux.org/title/steam#Changing_the_Steam_notification_position
+mkdir -p ~/.steam/root/skins
+cd ~/.steam/root/skins
+mkdir -p StopAnimations/resource
+cp -r ~/.steam/root/resource/styles StopAnimations/resource
+sed -i '/Notifications.SlideDirection/ s/"[A-Za-z]*"/"None"/' StopAnimations/resource/styles/* #no animation sliding
+sed -i '/Notifications.FadeInTime/ s/"0.[0-9+]*"/"0.0"/' StopAnimations/resource/styles/* #no fade in time for notifications
+sed -i '/Notifications.FadeOutTime/ s/"0.[0-9+]*"/"0.0"/' StopAnimations/resource/styles/* #no fade out time for notifications
+sed -i '/Notifications.StackSize/ s/"[0-9]*"/"5"/' StopAnimations/resource/styles/* #show max 5 notifications instead of max 3 at the same time
diff --git a/.dot-files-laptop/.bin/sh/swaylock.sh b/.dot-files-laptop/.bin/sh/swaylock.sh
new file mode 100755
index 0000000..447cb1b
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/swaylock.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+swaylock -f -i eDP-1:~/.wallpapers/castlevania.png --inside-color "#44475a" --inside-clear-color "#50fa7b" --ring-color "#ff79c6" --text-caps-lock-color "#f8f8f2" --ring-caps-lock-color "#f8f8f2" --key-hl-color "#50fa7b"
diff --git a/.dot-files-laptop/.bin/sh/tv_rename.sh b/.dot-files-laptop/.bin/sh/tv_rename.sh
new file mode 100755
index 0000000..3419928
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/tv_rename.sh
@@ -0,0 +1,166 @@
+#!/bin/env bash
+#
+# Written by Anthony Lobianco, 01/23/2014
+#
+# A simple script to batch rename television files
+#
+# USAGE
+# -----
+# chmod a+x tv_rename.sh
+# ./tv_rename.sh -d /path/to/show/S01
+#
+# CHANGELOG
+# ---------
+#
+# 1.0.0
+# -----
+# initial commit
+#
+# 1.0.1
+# -----
+# check to make sure input directory exists
+#
+# 1.0.2
+# -----
+# handle file types other than .mkv
+# make sure new format has same extension as old file
+# make sure new format includes the SXXEYY placeholder
+#
+# 1.0.3
+# -----
+# if SXXEYY pattern is not present, automatically determine it from filename
+#
+
+VRS=1.0.3
+
+bold=`tput bold` # bold characters in echo
+normal=`tput sgr0` # normal characters in echo
+
+echo " "
+echo "BATCH RENAME SCRIPT v$VRS"
+echo -n "server: "
+echo $SSH_CONNECTION | awk '{print $3}'
+echo " "
+
+DIR=""
+
+while getopts ":d:" OPTION
+do
+ case $OPTION in
+ d)
+ if [ "$OPTARG" = "." ]; then
+ DIR=`pwd`
+ else
+ DIR="$OPTARG"
+ fi
+ ;;
+ esac
+done
+
+if [ "$DIR" = "" ]; then
+ echo "no directory specified (use -d /path/to/directory/)"
+ echo "EXIT"
+ exit 1
+elif [ ! -d "$DIR" ]; then
+ echo "$DIR does not exist"
+ echo "EXIT"
+ exit 1
+fi
+
+echo -e "renaming files in:\t ${bold}${DIR}${normal}"
+
+LAST_FILE=`ls -l "$DIR" | tail -1 | awk '{print $NF}'`
+FILE_TYPE=`basename $LAST_FILE | awk -F . '{print $NF}'`
+
+echo -e "last file looks like:\t ${bold}${LAST_FILE}${normal}\n"
+
+rename_files() {
+ local format=$1
+ local dry_run=$2
+
+ # find SXXEYY pattern
+ REGEX="([sS]([0-9]{2,}|[X]{2,})[eE]([0-9]{2,}|[Y]{2,}))"
+ if [[ ! $format =~ $REGEX ]]; then
+ echo "could not find SXXEYY pattern in new format"
+ echo " "
+ continue
+ else
+ MATCH="${BASH_REMATCH[1]}"
+ fi
+
+ # needed if directory name has whitespace (e.g. /media/Family Guy/)
+ SAVEIFS=$IFS
+ IFS=$(echo -en "\n\b")
+
+ SEASON=`basename "$DIR"`
+ EPISODE=1
+ for ITEM in $(find "$DIR" -type f -name "*.${FILE_TYPE}" | sort); do
+ if (( $EPISODE < 10 )); then
+ SE="${SEASON}E0${EPISODE}"
+ else
+ SE="${SEASON}E${EPISODE}"
+ fi
+
+ if [[ $MATCH != $SE ]]; then
+ FILE="${format/$MATCH/$SE}"
+ else
+ FILE=$format
+ fi
+
+ # list the files during dry run, rename them otherwise
+ if $dry_run; then
+ echo -e " mv `basename $ITEM` \n -> $FILE"
+ else
+ if [[ `basename $ITEM` == $FILE ]]; then
+ echo "rename not needed for `basename $ITEM`"
+ else
+ echo -e "renaming $ITEM \n to -> \t $DIR/$FILE"
+ mv $ITEM "$DIR/$FILE"
+ fi
+ fi
+
+ echo " "
+
+ EPISODE=$((EPISODE + 1))
+ done
+
+ IFS=$SAVEIFS
+}
+
+echo "what format do you want to use to rename files?"
+echo -e "(ex: Breaking.Bad.SXXEYY.1080p.BluRay.DTS.x264-rovers.mkv)\n"
+
+while read -ep "[format]: " FORMAT
+do
+ echo " "
+
+ # do some error checks
+ if [[ $FORMAT != *.${FILE_TYPE} ]]; then
+ echo "make sure new format has same file type extension (.${FILE_TYPE})"
+ echo " "
+ continue
+ fi
+
+ rename_files $FORMAT true
+
+ echo " "
+
+ while read -ep "[continue? y/n]: " CONTINUE
+ do
+ if [[ $CONTINUE = y ]]; then
+ break
+ else
+ continue 2
+ fi
+ done
+
+ echo " "
+
+ rename_files $FORMAT false
+
+ break
+done
+
+echo " "
+echo "DONE"
+exit 0
diff --git a/.dot-files-laptop/.bin/sh/update.sh b/.dot-files-laptop/.bin/sh/update.sh
new file mode 100755
index 0000000..3fa8730
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/update.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# Perform update
+
+sudo pacman -Syu
+
+# Check pacdiff
+
+{
+read -p "Execute pacdiff? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ pacdiff -s
+fi
+}
+# Check for orphans
+{
+read -p "Check for orphan packages? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ sudo bash /home/peter/.bin/sh/orphans.sh
+fi
+}
+
+# Prompt reboot
+
+~/.bin/sh/reboot.sh
diff --git a/.dot-files-laptop/.bin/sh/updatenew.sh b/.dot-files-laptop/.bin/sh/updatenew.sh
new file mode 100755
index 0000000..079f112
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/updatenew.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Check for updates
+
+{
+read -p "Check for updates? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ ~/.bin/sh/checkupdates.sh
+fi
+}
+
+# Perform system check
+
+{
+read -p "Check for errors and failed services? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ systemctl --failed && journalctl -p 3 -b
+fi
+}
+
+# Perform update
+
+{
+read -p "Perform system update? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ sudo pacman -Syu;
+fi
+}
+
+# Check pacdiff
+
+{
+read -p "Execute pacdiff? [y/n]:" -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+ sudo pacdiff
+fi
+}
+
+# Prompt reboot
+
+~/.bin/sh/reboot.sh
diff --git a/.dot-files-laptop/.bin/sh/voidsw-compile.sh b/.dot-files-laptop/.bin/sh/voidsw-compile.sh
new file mode 100755
index 0000000..89797ef
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/voidsw-compile.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# Switch to git directory and clone source
+{
+cd /home/peter/Downloads/git;
+git clone https://voidpoint.io/terminx/eduke32.git;
+}
+
+# Build binary
+
+{
+cd eduke32;
+make voidsw;
+}
+
+# Install executable @ ~/.bin
+
+{
+cd /home/peter/.bin/voidsw;
+mv /home/peter/.bin/voidsw/voidsw /home/peter/.bin/voidsw/old;
+cd /home/peter/Downloads/git/eduke32;
+cp /home/peter/Downloads/git/eduke32/voidsw /home/peter/.bin/voidsw;
+chmod 755 /home/peter/.bin/voidsw/voidsw;
+}
+
+# Cleanup
+
+{
+rm -rf /home/peter/Downloads/git/eduke32;
+}
diff --git a/.dot-files-laptop/.bin/sh/weather.sh b/.dot-files-laptop/.bin/sh/weather.sh
new file mode 100755
index 0000000..47c5d19
--- /dev/null
+++ b/.dot-files-laptop/.bin/sh/weather.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+# weather.sh
+for i in {1..5}
+do
+ text=$(curl -s "https://v2.wttr.in/$1?format=1&m")
+ if [[ $? == 0 ]]
+ then
+ text=$(echo "$text" | sed -E "s/\s+/ /g")
+ tooltip=$(echo -ne "Santo Domingo, Dominican Republic:";curl -s "https://wttr.in/$1?format=2&m")
+ if [[ $? == 0 ]]
+ then
+ tooltip=$(echo "$tooltip" | sed -E "s/\s+/ /g")
+ echo "{\"text\":\"$text\", \"tooltip\":\"$tooltip\"}"
+ exit
+ fi
+ fi
+ sleep 2
+done
+echo "{\"text\":\"error\", \"tooltip\":\"error\"}"
diff --git a/.dot-files-laptop/.config/hypr/.zshrc.conf b/.dot-files-laptop/.config/hypr/.zshrc.conf
new file mode 100644
index 0000000..8aa94e3
--- /dev/null
+++ b/.dot-files-laptop/.config/hypr/.zshrc.conf
@@ -0,0 +1,388 @@
+# ┌───────────────────────────────────────────────────┐
+# │ ██████╗ ███████╗████████╗███████╗██████╗ ███████╗ │
+# │ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝ │
+# │ ██████╔╝█████╗ ██║ █████╗ ██████╔╝███████╗ │
+# │ ██╔═══╝ ██╔══╝ ██║ ██╔══╝ ██╔══██╗╚════██║ │
+# │ ██║ ███████╗ ██║ ███████╗██║ ██║███████║ │
+# │ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ │
+# ├───────────────────────────────────────────────────┤
+# │ depressing and totally messy hyprland config or │
+# ├───────────────────────────────────────────────────┤
+# │ How windows are the only well │
+# │ managed aspect of my life. │
+# │---------------------------------------------------│
+# │ https://gitlab.com/putridpete/dot-files │
+# └───────────────────────────────────────────────────┘
+#
+#
+
+# Programs
+
+$terminal = kitty
+$menu = rofi -show drun
+
+# Some default env vars
+
+env = XCURSOR_SIZE,24
+env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
+
+# Outputs
+
+monitor=eDP-1,1920x1080@60,0x0,1
+
+# trigger when the switch is toggled
+
+bindl=,switch:Lid Switch,exec,swaylock -f
+
+# Screen brightness
+
+bind = , XF86MonBrightnessUp, exec, brightnessctl s +10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl s 10%-
+
+# Input devices
+
+input {
+ kb_layout = us(altgr-intl)
+ kb_variant = ,nodeadkeys
+ kb_options = caps:escape
+
+ follow_mouse = 1
+
+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+}
+
+device {
+ name = tpps/2-ibm-trackpoint
+ sensitivity = 0.7
+}
+
+device {
+ name = synaptics-tm3276-022
+ sensitivity = 0.3
+}
+
+# Executables
+
+exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = udiskie -t &
+exec-once = /usr/lib/polkit-kde-authentication-agent-1
+exec-once = sleep 1; blueman-applet
+exec-once = waybar
+exec-once = swaync
+exec-once = hyprpaper
+exec-once = hypridle
+exec-once = hyprctl setcursor Dracula-cursors 24
+exec-once = [workspace 1 silent] firefox
+exec-once = jellyfinmediaplayer
+exec-once = libreoffice --writer --norestore
+exec-once = gimp
+exec-once = [workspace 2 silent] kitty btop
+exec-once = [workspace 2 silent] sleep 1; kitty
+exec-once = [workspace 2 silent] sleep 1;kitty --session ~/.config/kitty/session --listen-on=unix:@mykitty
+exec-once = [workspace special:password silent] keepassxc
+exec-once = [workspace special:scratchpad silent] signal-desktop --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations
+exec-once = nextcloud
+exec-once = killall nextcloud
+exec-once = [workspace special:music silent] sleep 1; feishin --enable-features=UseOzonePlatform --ozone-platform=wayland
+exec-once = gammastep -m wayland -O 6500K -g 1.1.0
+exec-once = [workspace special:email silent] sleep 1; tutanota-desktop --ozone-platform-hint=auto
+exec-once = discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized
+
+# Variables
+
+general {
+ gaps_in = 5
+ gaps_out = 10
+ border_size = 2
+ layout = master
+ allow_tearing = false
+}
+
+decoration {
+
+ rounding = 8
+
+ blur {
+ enabled = false
+ size = 3
+ passes = 1
+ new_optimizations = true
+ noise = 0.06
+ special = true
+ contrast = 0.8
+ popups = true
+ }
+
+}
+
+# Animations
+
+animations {
+ enabled = yes
+
+ bezier = myBezier, 0, 0.55, 0.45, 1
+
+ animation = windows, 1, 4, myBezier
+ animation = windowsIn, 1, 7, default, popin 80%
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 20, default
+ animation = borderangle, 1, 20, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default, slide
+}
+
+# Layout
+
+master {
+ new_status = slave
+}
+
+# Cursor
+
+cursor {
+ hide_on_key_press = true
+}
+
+# Miscellaneous
+
+misc {
+ force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
+ vfr = true
+}
+
+# Window rules
+
+windowrulev2 = workspace 3 silent,class:com.github.iwalton3.jellyfin-media-player
+windowrulev2 = workspace 4 silent,class:libreoffice-writer
+windowrulev2 = workspace 5 silent,class:gimp
+windowrulev2 = float,class:nmnet
+windowrulev2 = size 860 540,class:nmnet
+windowrulev2 = float,class:com.nextcloud.desktopclient.nextcloud
+windowrulev2 = move 1450 38,class:com.nextcloud.desktopclient.nextcloud
+windowrulev2 = float,class:openrgb
+windowrulev2 = size 1600 900,class:openrgb
+windowrulev2 = center,class:openrgb
+windowrulev2 = float,class:org.pulseaudio.pavucontrol
+windowrulev2 = move 1310 40,class:org.pulseaudio.pavucontrol
+windowrulev2 = float,title:foot
+windowrulev2 = float,title:Open Files
+windowrulev2 = size 1000 600,title:Open Files
+windowrulev2 = float,title:Signal
+windowrulev2 = center,title:Signal
+windowrulev2 = size 1280 720,title:Signal
+windowrulev2 = float,class:feishin
+windowrulev2 = center,class:feishin
+windowrulev2 = float,class:org.keepassxc.KeePassXC
+windowrulev2 = size 800 600,class:org.keepassxc.KeePassXC
+windowrulev2 = center,class:org.keepassxc.KeePassXC
+windowrulev2 = float,class:mpv
+windowrulev2 = monitor DP-1,class:mpv
+windowrulev2 = size 600 400,class:mpv
+windowrulev2 = move 1310 670,class:mpv
+windowrulev2 = center,class:discord
+windowrulev2 = float,class:discord
+windowrulev2 = size 1600 900, class:discord
+windowrulev2 = float,class:org.kde.polkit-kde-authentication-agent-1
+windowrulev2 = float,class:alacarte
+windowrulev2 = float,class:nwg-look
+windowrulev2 = float,class:zenity
+windowrulev2 = float,class:galculator
+windowrulev2 = move 1580 730,class:galculator
+windowrulev2 = float,class:qsynth
+windowrulev2 = float,class:qt5ct
+windowrulev2 = float,class:kvantummanager
+windowrulev2 = float,class:nm-connection-editor
+windowrulev2 = float,class:udiskie
+windowrulev2 = float,class:gsimplecal
+windowrulev2 = move 800 43,class:gsimplecal
+windowrulev2 = float,class:imv
+windowrulev2 = center,class:imv
+windowrulev2 = float,class:org.pwmt.zathura
+windowrulev2 = center,class:org.pwmt.zathura
+windowrulev2 = idleinhibit fullscreen, fullscreen:1
+windowrulev2 = float,class:tutanota-desktop
+windowrulev2 = center,class:tutanota-desktop
+windowrulev2 = size 1705 909,class:tutanota-desktop
+windowrulev2 = float,class:xdg-desktop-portal-gtk
+windowrulev2 = float,class:blueman-manager
+windowrulev2 = center,class:blueman-manager
+windowrulev2 = move 1310 38,class:blueman-manager
+windowrulev2 = size 600 900,class:blueman-manager
+
+# Keywords
+
+$mainMod = SUPER
+
+# Bindings
+
+bind = $mainMod, Return, exec, $terminal
+bind = $mainMod, Q, killactive,
+bind = $mainMod, E, exit,
+bind = $mainMod, V, togglefloating,
+bind = $mainMod, P, exec, $menu
+bind = $mainMod, F, fullscreen
+bind = $mainMod, C, exec, galculator
+bind = $mainMod, n, exec, exec swaync-client -t -sw
+bind = $mainMod CTRL, S, exec, [workspace special:scratchpad silent] signal-desktop --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations
+bind = $mainMod CTRL, P, exec, [workspace special:password silent] keepassxc
+bind = $mainMod CTRL, M, exec, [workspace special:music silent] sleep 1; feishin --enable-features=UseOzonePlatform --ozone-platform=wayland
+
+# Resize windows main keybind
+bind=ALT,R,submap,resize
+
+# Start a submap resize
+submap=resize
+
+# Set repeatable binds for resizing the active window
+binde=,right,resizeactive,10 0
+binde=,left,resizeactive,-10 0
+binde=,up,resizeactive,0 -10
+binde=,down,resizeactive,0 10
+binde=,l,resizeactive,10 0
+binde=,h,resizeactive,-10 0
+binde=,k,resizeactive,0 -10
+binde=,j,resizeactive,0 10
+
+# Use reset to go back to the global submap
+bind=,escape,submap,reset
+
+# Reset the submap
+submap=reset
+
+# Switch between floating and tiled windows
+
+bind = ALT, TAB, cyclenext, floating
+bind = ALT, SPACE, focuscurrentorlast
+
+# Media keys
+
+bind = ,XF86AudioPlay,exec,playerctl play-pause
+bind = ,XF86AudioPause,exec,playerctl pause
+bind = ,XF86AudioStop,exec,playerctl stop
+bind = ,XF86AudioNext,exec,playerctl next
+bind = ,XF86AudioPrev,exec,playerctl previous
+bind = ,XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
+bind = ,XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+bind = ,XF86AudioMute,exec,pactl set-sink-mute @DEFAULT_SINK@ toggle
+
+# Move focus with Mod + arrow keys
+
+bind = $mainMod, left, movefocus, l
+bind = $mainMod, right, movefocus, r
+bind = $mainMod, up, movefocus, u
+bind = $mainMod, down, movefocus, d
+
+# Move windows with Mod + arrow keys
+
+bind = $mainMod CTRL, left, movewindow, l
+bind = $mainMod CTRL, right, movewindow, r
+bind = $mainMod CTRL, up, movewindow, u
+bind = $mainMod CTRL, down, movewindow, d
+
+# VI keybindings like God intended
+
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+
+# Move windows with Mod + vi keys
+
+bind = $mainMod CTRL, h, movewindow, l
+bind = $mainMod CTRL, l, movewindow, r
+bind = $mainMod CTRL, k, movewindow, u
+bind = $mainMod CTRL, j, movewindow, d
+
+# Switch workspaces with Mod + [0-8]
+
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+
+# Move active window to a workspace with Mod + CTRL + [0-8]
+
+bind = $mainMod CTRL, 1, movetoworkspace, 1
+bind = $mainMod CTRL, 2, movetoworkspace, 2
+bind = $mainMod CTRL, 3, movetoworkspace, 3
+bind = $mainMod CTRL, 4, movetoworkspace, 4
+bind = $mainMod CTRL, 5, movetoworkspace, 5
+bind = $mainMod CTRL, 6, movetoworkspace, 6
+bind = $mainMod CTRL, 7, movetoworkspace, 7
+bind = $mainMod CTRL, 8, movetoworkspace, 8
+
+# Workspace monitor assignment
+
+workspace = 1, monitor:eDP-1, default:true
+workspace = 2, monitor:eDP-1
+workspace = 3, monitor:eDP-1
+workspace = 4, monitor:eDP-1
+workspace = 5, monitor:eDP-1
+workspace = 6, monitor:eDP-1
+workspace = 7, monitor:eDP-1, default:true
+workspace = 8, monitor:eDP-1
+
+# Special workspaces
+
+bind = $mainMod, U, togglespecialworkspace, scratchpad
+bind = $mainMod SHIFT, S, movetoworkspace, special:scratchpad
+
+bind = $mainMod, M, togglespecialworkspace, music
+bind = $mainMod, O, togglespecialworkspace, password
+bind = $mainMod, I, togglespecialworkspace, email
+
+# Scroll through existing workspaces with Mod + scroll
+
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Scroll through existing workspaces with Mod + vi keys
+
+bind = $mainMod ALT, l, workspace, e+1
+bind = $mainMod ALT, h, workspace, e-1
+
+# Scroll through existing workspaces with Mod + arrow keys
+
+bind = $mainMod ALT, right, workspace, e+1
+bind = $mainMod ALT, left, workspace, e-1
+
+# Move/resize windows with Mod + LMB/RMB and dragging
+
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+# Screenshot
+
+bind = ,Print,exec,grim -g "$(slurp)" - | swappy -f -
+
+# Dracula theme
+
+general {
+ col.active_border = rgb(6272A4) rgb(bd93f9) 90deg
+ col.inactive_border = rgba(44475aaa)
+ col.nogroup_border = rgba(282a36dd)
+ col.nogroup_border_active = rgb(bd93f9) rgb(44475a) 90deg
+ no_border_on_floating = false
+ border_size = 2
+
+}
+decoration:shadow {
+ color = rgba(1E202966)
+ enabled = true
+ range = 60
+ offset = 1 2
+ render_power = 3
+ scale = 0.97
+}
+
+group {
+ groupbar {
+ col.active = rgb(bd93f9) rgb(44475a) 90deg
+ col.inactive = rgba(282a36dd)
+ }
+}
+windowrulev2 = bordercolor rgb(ff5555),xwayland:1 # check if window is xwayland
diff --git a/.dot-files-laptop/.config/hypr/hypridle.conf b/.dot-files-laptop/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..d344d54
--- /dev/null
+++ b/.dot-files-laptop/.config/hypr/hypridle.conf
@@ -0,0 +1,29 @@
+general {
+ lock_cmd = pidof hyprlock || hyprlock
+ before_sleep_cmd = loginctl lock-session
+ after_sleep_cmd = hyprctl dispatch dpms on
+}
+
+listener {
+ timeout = 150
+ on-timeout = brightnessctl -s set 10
+ on-resume = brightnessctl -r
+}
+
+# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
+listener {
+ timeout = 150
+ on-timeout = brightnessctl -sd rgb:kbd_backlight set 0
+ on-resume = brightnessctl -rd rgb:kbd_backlight
+}
+
+listener {
+ timeout = 600
+ on-timeout = loginctl lock-session
+}
+
+listener {
+ timeout = 605
+ on-timeout = hyprctl dispatch dpms off
+ on-resume = hyprctl dispatch dpms on
+}
diff --git a/.dot-files-laptop/.config/hypr/hyprland.conf b/.dot-files-laptop/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..d0a7345
--- /dev/null
+++ b/.dot-files-laptop/.config/hypr/hyprland.conf
@@ -0,0 +1,390 @@
+# ┌───────────────────────────────────────────────────┐
+# │ ██████╗ ███████╗████████╗███████╗██████╗ ███████╗ │
+# │ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝ │
+# │ ██████╔╝█████╗ ██║ █████╗ ██████╔╝███████╗ │
+# │ ██╔═══╝ ██╔══╝ ██║ ██╔══╝ ██╔══██╗╚════██║ │
+# │ ██║ ███████╗ ██║ ███████╗██║ ██║███████║ │
+# │ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ │
+# ├───────────────────────────────────────────────────┤
+# │ depressing and totally messy hyprland config or │
+# ├───────────────────────────────────────────────────┤
+# │ How windows are the only well │
+# │ managed aspect of my life. │
+# │---------------------------------------------------│
+# │ https://gitlab.com/putridpete/dot-files │
+# └───────────────────────────────────────────────────┘
+#
+#
+
+# Programs
+
+$terminal = kitty
+$menu = rofi -show drun
+
+# Some default env vars
+
+env = XCURSOR_SIZE,24
+env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that
+
+# Outputs
+
+monitor=eDP-1,1920x1080@60,0x0,1
+
+# trigger when the switch is toggled
+
+bindl=,switch:Lid Switch,exec,swaylock -f
+
+# Screen brightness
+
+bind = , XF86MonBrightnessUp, exec, brightnessctl s +10%
+bind = , XF86MonBrightnessDown, exec, brightnessctl s 10%-
+
+# Input devices
+
+input {
+ kb_layout = us(altgr-intl)
+ kb_variant = ,nodeadkeys
+ kb_options = caps:escape
+
+ follow_mouse = 1
+
+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+}
+
+device {
+ name = tpps/2-ibm-trackpoint
+ sensitivity = 0.7
+}
+
+device {
+ name = synaptics-tm3276-022
+ sensitivity = 0.3
+}
+
+# Executables
+
+exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = udiskie -t &
+exec-once = /usr/lib/polkit-kde-authentication-agent-1
+exec-once = sleep 1; blueman-applet
+exec-once = waybar
+exec-once = swaync
+exec-once = hyprpaper
+exec-once = hypridle
+exec-once = hyprctl setcursor Dracula-cursors 24
+exec-once = [workspace 1 silent] firefox
+exec-once = libreoffice --writer --norestore
+exec-once = gimp
+exec-once = [workspace 2 silent] kitty btop
+exec-once = [workspace 2 silent] sleep 1; kitty
+exec-once = [workspace 2 silent] sleep 1;kitty --session ~/.config/kitty/session --listen-on=unix:@mykitty
+exec-once = [workspace special:password silent] keepassxc
+exec-once = [workspace special:scratchpad silent] signal-desktop --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations
+exec-once = nextcloud
+exec-once = killall nextcloud
+exec-once = [workspace special:music silent] sleep 1; feishin --enable-features=UseOzonePlatform --ozone-platform=wayland
+exec-once = gammastep -m wayland -O 6500K -g 1.1.0
+exec-once = [workspace special:email silent] sleep 1; tutanota-desktop --ozone-platform-hint=auto
+exec-once = discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized
+exec-once = jellyfin-mpv-shim
+
+# Variables
+
+general {
+ gaps_in = 5
+ gaps_out = 10
+ border_size = 2
+ layout = master
+ allow_tearing = false
+}
+
+decoration {
+
+ rounding = 8
+
+ blur {
+ enabled = false
+ size = 3
+ passes = 1
+ new_optimizations = true
+ noise = 0.06
+ special = true
+ contrast = 0.8
+ popups = true
+ }
+
+}
+
+# Animations
+
+animations {
+ enabled = yes
+
+ bezier = myBezier, 0, 0.55, 0.45, 1
+
+ animation = windows, 1, 4, myBezier
+ animation = windowsIn, 1, 7, default, popin 80%
+ animation = windowsOut, 1, 7, default, popin 80%
+ animation = border, 1, 20, default
+ animation = borderangle, 1, 20, default
+ animation = fade, 1, 7, default
+ animation = workspaces, 1, 6, default, slide
+}
+
+# Layout
+
+master {
+ new_status = slave
+}
+
+# Cursor
+
+cursor {
+ hide_on_key_press = true
+}
+
+# Miscellaneous
+
+misc {
+ force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
+ vfr = true
+}
+
+# Window rules
+
+windowrulev2 = workspace 3 silent,class:libreoffice-writer
+windowrulev2 = workspace 4 silent,class:gimp
+windowrulev2 = workspace special:email silent,class:tutanota-desktop
+windowrulev2 = float,class:nmnet
+windowrulev2 = size 860 540,class:nmnet
+windowrulev2 = float,class:com.nextcloud.desktopclient.nextcloud
+windowrulev2 = move 1450 38,class:com.nextcloud.desktopclient.nextcloud
+windowrulev2 = float,class:openrgb
+windowrulev2 = size 1600 900,class:openrgb
+windowrulev2 = center,class:openrgb
+windowrulev2 = float,class:org.pulseaudio.pavucontrol
+windowrulev2 = move 1310 40,class:org.pulseaudio.pavucontrol
+windowrulev2 = float,title:foot
+windowrulev2 = float,title:Save Files*
+windowrulev2 = size 1000 600,title:Save Files*
+windowrulev2 = float,title:Open Files
+windowrulev2 = size 1000 600,title:Open Files
+windowrulev2 = float,title:Signal
+windowrulev2 = center,title:Signal
+windowrulev2 = size 1280 720,title:Signal
+windowrulev2 = float,class:feishin
+windowrulev2 = center,class:feishin
+windowrulev2 = float,class:org.keepassxc.KeePassXC
+windowrulev2 = size 800 600,class:org.keepassxc.KeePassXC
+windowrulev2 = center,class:org.keepassxc.KeePassXC
+windowrulev2 = float,class:mpv
+windowrulev2 = monitor DP-1,class:mpv
+windowrulev2 = size 600 400,class:mpv
+windowrulev2 = move 1310 670,class:mpv
+windowrulev2 = center,class:discord
+windowrulev2 = float,class:discord
+windowrulev2 = size 1600 900, class:discord
+windowrulev2 = float,class:org.kde.polkit-kde-authentication-agent-1
+windowrulev2 = float,class:alacarte
+windowrulev2 = float,class:nwg-look
+windowrulev2 = float,class:zenity
+windowrulev2 = float,class:galculator
+windowrulev2 = move 1580 730,class:galculator
+windowrulev2 = float,class:qsynth
+windowrulev2 = float,class:qt5ct
+windowrulev2 = float,class:kvantummanager
+windowrulev2 = float,class:nm-connection-editor
+windowrulev2 = float,class:udiskie
+windowrulev2 = float,class:gsimplecal
+windowrulev2 = move 800 43,class:gsimplecal
+windowrulev2 = float,class:imv
+windowrulev2 = center,class:imv
+windowrulev2 = float,class:org.pwmt.zathura
+windowrulev2 = center,class:org.pwmt.zathura
+windowrulev2 = idleinhibit fullscreen, fullscreen:1
+windowrulev2 = float,class:tutanota-desktop
+windowrulev2 = center,class:tutanota-desktop
+windowrulev2 = size 1705 909,class:tutanota-desktop
+windowrulev2 = float,class:xdg-desktop-portal-gtk
+windowrulev2 = float,class:blueman-manager
+windowrulev2 = center,class:blueman-manager
+windowrulev2 = move 1310 38,class:blueman-manager
+windowrulev2 = size 600 900,class:blueman-manager
+
+# Keywords
+
+$mainMod = SUPER
+
+# Bindings
+
+bind = $mainMod, Return, exec, $terminal
+bind = $mainMod, Q, killactive,
+bind = $mainMod, E, exit,
+bind = $mainMod, V, togglefloating,
+bind = $mainMod, P, exec, $menu
+bind = $mainMod, F, fullscreen
+bind = $mainMod, C, exec, galculator
+bind = $mainMod, n, exec, exec swaync-client -t -sw
+bind = $mainMod CTRL, S, exec, [workspace special:scratchpad silent] signal-desktop --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations
+bind = $mainMod CTRL, P, exec, [workspace special:password silent] keepassxc
+bind = $mainMod CTRL, M, exec, [workspace special:music silent] sleep 1; feishin --enable-features=UseOzonePlatform --ozone-platform=wayland
+
+# Resize windows main keybind
+bind=ALT,R,submap,resize
+
+# Start a submap resize
+submap=resize
+
+# Set repeatable binds for resizing the active window
+binde=,right,resizeactive,10 0
+binde=,left,resizeactive,-10 0
+binde=,up,resizeactive,0 -10
+binde=,down,resizeactive,0 10
+binde=,l,resizeactive,10 0
+binde=,h,resizeactive,-10 0
+binde=,k,resizeactive,0 -10
+binde=,j,resizeactive,0 10
+
+# Use reset to go back to the global submap
+bind=,escape,submap,reset
+
+# Reset the submap
+submap=reset
+
+# Switch between floating and tiled windows
+
+bind = ALT, TAB, cyclenext, floating
+bind = ALT, SPACE, focuscurrentorlast
+
+# Media keys
+
+bind = ,XF86AudioPlay,exec,playerctl play-pause
+bind = ,XF86AudioPause,exec,playerctl pause
+bind = ,XF86AudioStop,exec,playerctl stop
+bind = ,XF86AudioNext,exec,playerctl next
+bind = ,XF86AudioPrev,exec,playerctl previous
+bind = ,XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
+bind = ,XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+bind = ,XF86AudioMute,exec,pactl set-sink-mute @DEFAULT_SINK@ toggle
+
+# Move focus with Mod + arrow keys
+
+bind = $mainMod, left, movefocus, l
+bind = $mainMod, right, movefocus, r
+bind = $mainMod, up, movefocus, u
+bind = $mainMod, down, movefocus, d
+
+# Move windows with Mod + arrow keys
+
+bind = $mainMod CTRL, left, movewindow, l
+bind = $mainMod CTRL, right, movewindow, r
+bind = $mainMod CTRL, up, movewindow, u
+bind = $mainMod CTRL, down, movewindow, d
+
+# VI keybindings like God intended
+
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+
+# Move windows with Mod + vi keys
+
+bind = $mainMod CTRL, h, movewindow, l
+bind = $mainMod CTRL, l, movewindow, r
+bind = $mainMod CTRL, k, movewindow, u
+bind = $mainMod CTRL, j, movewindow, d
+
+# Switch workspaces with Mod + [0-8]
+
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+
+# Move active window to a workspace with Mod + CTRL + [0-8]
+
+bind = $mainMod CTRL, 1, movetoworkspace, 1
+bind = $mainMod CTRL, 2, movetoworkspace, 2
+bind = $mainMod CTRL, 3, movetoworkspace, 3
+bind = $mainMod CTRL, 4, movetoworkspace, 4
+bind = $mainMod CTRL, 5, movetoworkspace, 5
+bind = $mainMod CTRL, 6, movetoworkspace, 6
+bind = $mainMod CTRL, 7, movetoworkspace, 7
+bind = $mainMod CTRL, 8, movetoworkspace, 8
+
+# Workspace monitor assignment
+
+workspace = 1, monitor:eDP-1, default:true
+workspace = 2, monitor:eDP-1
+workspace = 3, monitor:eDP-1
+workspace = 4, monitor:eDP-1
+workspace = 5, monitor:eDP-1
+workspace = 6, monitor:eDP-1
+workspace = 7, monitor:eDP-1, default:true
+workspace = 8, monitor:eDP-1
+
+# Special workspaces
+
+bind = $mainMod, U, togglespecialworkspace, scratchpad
+bind = $mainMod SHIFT, S, movetoworkspace, special:scratchpad
+
+bind = $mainMod, M, togglespecialworkspace, music
+bind = $mainMod, O, togglespecialworkspace, password
+bind = $mainMod, I, togglespecialworkspace, email
+
+# Scroll through existing workspaces with Mod + scroll
+
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Scroll through existing workspaces with Mod + vi keys
+
+bind = $mainMod ALT, l, workspace, e+1
+bind = $mainMod ALT, h, workspace, e-1
+
+# Scroll through existing workspaces with Mod + arrow keys
+
+bind = $mainMod ALT, right, workspace, e+1
+bind = $mainMod ALT, left, workspace, e-1
+
+# Move/resize windows with Mod + LMB/RMB and dragging
+
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+# Screenshot
+
+bind = ,Print,exec,grim -g "$(slurp)" - | swappy -f -
+
+# Dracula theme
+
+general {
+ col.active_border = rgb(6272A4) rgb(bd93f9) 90deg
+ col.inactive_border = rgba(44475aaa)
+ col.nogroup_border = rgba(282a36dd)
+ col.nogroup_border_active = rgb(bd93f9) rgb(44475a) 90deg
+ no_border_on_floating = false
+ border_size = 2
+
+}
+decoration:shadow {
+ color = rgba(1E202966)
+ enabled = true
+ range = 60
+ offset = 1 2
+ render_power = 3
+ scale = 0.97
+}
+
+group {
+ groupbar {
+ col.active = rgb(bd93f9) rgb(44475a) 90deg
+ col.inactive = rgba(282a36dd)
+ }
+}
+windowrulev2 = bordercolor rgb(ff5555),xwayland:1 # check if window is xwayland
diff --git a/.dot-files-laptop/.config/hypr/hyprlock.conf b/.dot-files-laptop/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..3922780
--- /dev/null
+++ b/.dot-files-laptop/.config/hypr/hyprlock.conf
@@ -0,0 +1,107 @@
+# BACKGROUND
+background {
+ monitor =
+ path = ~/.wallpapers/castlevania.png
+ blur_size = 3
+ blur_passes = 2
+ noise = 0.06
+ contrast = 0.8
+ brightness = 0.5
+ vibrancy = 0.2
+ vibrancy_darkness = 0.2
+}
+
+# GENERAL
+general {
+ no_fade_in = false
+ grace = 0
+ disable_loading_bar = false
+}
+
+# Profie-Photo
+image {
+ monitor =
+ path = ~/.face
+ border_size = 2
+ border_color = rgba(248, 248, 242, 0.8)
+ size = 200
+ rounding = -1
+ rotate = 0
+ reload_time = -1
+ reload_cmd =
+ position = 0, 20
+ halign = center
+ valign = center
+ shadow_passes = 2
+ shadow_size = 4
+}
+
+# Day-Month-Date
+label {
+ monitor =
+ text = cmd[update:1000] echo -e "$(date +"%A, %B %d")"
+ color = rgba(255, 121, 198, 0.70)
+ font_size = 25
+ font_family = Droid Sans Font, Font Awesome, Roboto, FreeSans, FreeSerif
+ position = 0, 350
+ halign = center
+ valign = center
+}
+
+# Time
+label {
+ monitor =
+ text = cmd[update:1000] echo "$(date +"%I:%M")"
+ color = rgba(139, 233, 253, 0.70)
+ font_size = 120
+ font_family = Droid Sans Font, Font Awesome, Roboto, FreeSans, FreeSerif
+ position = 0, 250
+ halign = center
+ valign = center
+}
+
+# USER
+label {
+ monitor =
+ text = Peter Domínguez
+ color = rgba(248, 248, 242, 0.80)
+ font_size = 20
+ font_family = Droid Sans Font, Font Awesome, Roboto, FreeSans, FreeSerif
+ position = 0, -130
+ halign = center
+ valign = center
+}
+
+# INPUT FIELD
+input-field {
+ monitor =
+ size = 300, 60
+ outline_thickness = 2
+ dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = true
+ outer_color = rgba(0, 0, 0, 0)
+ inner_color = rgba(40, 42, 54, 0.5)
+ font_color = rgb(68,71,90)
+ check_color = rgba(255, 184, 108, 0.6)
+ fail_color = rgba(255, 85, 85, 0.6)
+ fade_on_empty = false
+ placeholder_text = Enter Password
+ fail_text = Login failed! Attempt(s): $ATTEMPTS
+ hide_input = false
+ position = 0, -210
+ halign = center
+ valign = center
+}
+
+# CURRENT SONG
+label {
+ monitor =
+ text = cmd[update:1000] echo "$(~/.bin/sh/songdetail.sh)"
+ color = rgba(189, 147, 249, 0.8)
+ font_size = 18
+ font_family = Droid Sans Font, Font Awesome, Roboto, FreeSans, FreeSerif
+ position = 0, 50
+ halign = center
+ valign = bottom
+}
diff --git a/.dot-files-laptop/.config/hypr/hyprpaper.conf b/.dot-files-laptop/.config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..6e5b801
--- /dev/null
+++ b/.dot-files-laptop/.config/hypr/hyprpaper.conf
@@ -0,0 +1,5 @@
+preload = /home/peter/.wallpapers/castlevania.png
+wallpaper = eDP-1,/home/peter/.wallpapers/castlevania.png
+splash = false
+#fully disable ipc
+# ipc = off
diff --git a/.dot-files-laptop/.config/kitty/diff.conf b/.dot-files-laptop/.config/kitty/diff.conf
new file mode 100644
index 0000000..5fec447
--- /dev/null
+++ b/.dot-files-laptop/.config/kitty/diff.conf
@@ -0,0 +1,19 @@
+foreground #f8f8f2
+background #282a36
+title_fg #f8f8f2
+title_bg #282a36
+margin_bg #6272a4
+margin_fg #44475a
+removed_bg #ff5555
+highlight_removed_bg #ff5555
+removed_margin_bg #ff5555
+added_bg #50fa7b
+highlight_added_bg #50fa7b
+added_margin_bg #50fa7b
+filler_bg #44475a
+hunk_margin_bg #44475a
+hunk_bg #bd93f9
+search_bg #8be9fd
+search_fg #282a36
+select_bg #f1fa8c
+select_fg #282a36
diff --git a/.dot-files-laptop/.config/kitty/dracula.conf b/.dot-files-laptop/.config/kitty/dracula.conf
new file mode 100644
index 0000000..9f7a61d
--- /dev/null
+++ b/.dot-files-laptop/.config/kitty/dracula.conf
@@ -0,0 +1,67 @@
+# https://draculatheme.com/kitty
+#
+# Installation instructions:
+#
+# cp dracula.conf ~/.config/kitty/
+# echo "include dracula.conf" >> ~/.config/kitty/kitty.conf
+#
+# Then reload kitty for the config to take affect.
+# Alternatively copy paste below directly into kitty.conf
+
+foreground #f8f8f2
+background #282a36
+background_opacity 0.5
+selection_foreground #ffffff
+selection_background #44475a
+
+url_color #8be9fd
+
+# black
+color0 #21222c
+color8 #6272a4
+
+# red
+color1 #ff5555
+color9 #ff6e6e
+
+# green
+color2 #50fa7b
+color10 #69ff94
+
+# yellow
+color3 #f1fa8c
+color11 #ffffa5
+
+# blue
+color4 #bd93f9
+color12 #d6acff
+
+# magenta
+color5 #ff79c6
+color13 #ff92df
+
+# cyan
+color6 #8be9fd
+color14 #a4ffff
+
+# white
+color7 #f8f8f2
+color15 #ffffff
+
+# Cursor colors
+cursor #f8f8f2
+cursor_text_color background
+
+# Tab bar colors
+active_tab_foreground #282a36
+active_tab_background #f8f8f2
+inactive_tab_foreground #282a36
+inactive_tab_background #6272a4
+
+# Marks
+mark1_foreground #282a36
+mark1_background #ff5555
+
+# Splits/Windows
+active_border_color #f8f8f2
+inactive_border_color #6272a4
diff --git a/.dot-files-laptop/.config/kitty/kitty.conf b/.dot-files-laptop/.config/kitty/kitty.conf
new file mode 100644
index 0000000..da6ed2b
--- /dev/null
+++ b/.dot-files-laptop/.config/kitty/kitty.conf
@@ -0,0 +1,126 @@
+# ┌───────────────────────────────────────────────────┐
+# │ ██████╗ ███████╗████████╗███████╗██████╗ ███████╗ │
+# │ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝ │
+# │ ██████╔╝█████╗ ██║ █████╗ ██████╔╝███████╗ │
+# │ ██╔═══╝ ██╔══╝ ██║ ██╔══╝ ██╔══██╗╚════██║ │
+# │ ██║ ███████╗ ██║ ███████╗██║ ██║███████║ │
+# │ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ │
+# ├───────────────────────────────────────────────────┤
+# │ only small, mediocre thing: his kitty.conf file │
+# ├───────────────────────────────────────────────────┤
+# │Shorter than a default config, yet twice the autism│
+# │---------------------------------------------------│
+# │ https://gitlab.com/putridpete/dot-files │
+# └───────────────────────────────────────────────────┘
+
+# 1. Color Scheme
+# ========================
+
+include dracula.conf
+
+# 2. Font
+# ========================
+
+font_family Droid Sans Font
+bold_font auto
+italic_font auto
+bold_italic_font auto
+font_size 12.5
+
+# 3. Cursor
+# ========================
+
+cursor #d67fa2
+cursor_shape underline
+cursor_beam_thickness 9.0
+shell_integration no-cursor
+
+# 4. Mouse
+# ========================
+
+copy_on_select yes
+url_style dotted
+url_color #7fd67f
+focus_follows_mouse yes
+
+# 5. Terminal bell
+# ========================
+
+enable_audio_bell no
+bell_on_tab " "
+
+# 6. Window layout
+# ========================
+
+window_border_width 1.2pt
+enabled_layouts tall,fat,horizontal,splits,vertical,grid
+active_border_color #6272a4
+inactive_border_color #262733
+
+# 7. Tab bar
+# ========================
+
+tab_bar_edge top
+tab_bar_style powerline
+tab_bar_background #343850
+active_tab_background #ff79c6
+active_tab_foreground #262733
+inactive_tab_background #44475a
+inactive_tab_foreground #f8f8f2
+
+# 8. Advanced
+# ========================
+
+# startup_session ~/.config/kitty/session
+allow_remote_control yes
+repaint_delay 1
+sync_to_monitor yes
+
+# 9. OS specific tweaks
+# ========================
+
+linux_display_server wayland
+
+# 10. Keyboard shortcuts
+# ========================
+map alt+h previous_tab
+map alt+l next_tab
+map alt+n new_tab
+map alt+b set_tab_title
+map alt+x close_tab
+map ctrl+shift+k scroll_line_up
+map ctrl+shift+j scroll_line_down
+map alt+enter new_window
+map alt+\ close_window
+map ctrl+h previous_window
+map ctrl+l next_window
+map ctrl+[ layout_action decrease_num_full_size_windows
+map ctrl+] layout_action increase_num_full_size_windows
+map ctrl+/ layout_action mirror toggle
+map ctrl+y layout_action mirror true
+map ctrl+n layout_action mirror false
+map ctrl+alt+t goto_layout tall
+map ctrl+alt+f goto_layout fat
+map ctrl+alt+h goto_layout horizontal
+map ctrl+alt+s goto_layout splits
+map ctrl+alt+v goto_layout vertical
+map ctrl+alt+g goto_layout grid
+map ctrl+alt+. move_tab_forward
+map ctrl+alt+, move_tab_backward
+map ctrl+f1 launch zsh -c "source ~/.zshrc;nnn -deUxH"
+map ctrl+f2 launch newsboat
+map ctrl+f3 launch kitty +kitten ssh debianbox
+map ctrl+f4 launch kitty +kitten ssh debian11
+map ctrl+f5 launch vim ~/.config/waybar/style.css
+map ctrl+f6 launch vim ~/.config/waybar/config
+map ctrl+f7 launch vim ~/.config/hypr/hyprland.conf
+map ctrl+f8 launch vim ~/.zshrc
+map ctrl+f9 launch vim ~/.config/kitty/session
+map ctrl+f10 launch vim ~/.config/kitty/kitty.conf
+map shift+alt+left resize_window narrower
+map shift+alt+right resize_window wider
+map shift+alt+up resize_window taller
+map shift+alt+down resize_window shorter 3
+map ctrl+alt+] next_window
+map ctrl+alt+[ previous_window
+
diff --git a/.dot-files-laptop/.config/kitty/session b/.dot-files-laptop/.config/kitty/session
new file mode 100644
index 0000000..719abf5
--- /dev/null
+++ b/.dot-files-laptop/.config/kitty/session
@@ -0,0 +1,15 @@
+new_tab
+cd ~
+launch zsh -c "source ~/.zshrc;nnn -deUxH"
+new_tab
+launch newsboat
+new_tab
+launch --env EDITOR=vim glow -s dracula /mnt/M2/Nextcloud/Notes
+new_tab
+launch ttyper
+new_tab 1
+launch kitty +kitten ssh debianbox
+new_tab 2
+launch kitty +kitten ssh debbie
+new_tab 3
+launch kitty +kitten ssh debian11
diff --git a/.dot-files-laptop/.config/sway/config b/.dot-files-laptop/.config/sway/config
new file mode 100644
index 0000000..295689d
--- /dev/null
+++ b/.dot-files-laptop/.config/sway/config
@@ -0,0 +1,361 @@
+# ┌───────────────────────────────────────────────────┐
+# │ ██████╗ ███████╗████████╗███████╗██████╗ ███████╗ │
+# │ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝ │
+# │ ██████╔╝█████╗ ██║ █████╗ ██████╔╝███████╗ │
+# │ ██╔═══╝ ██╔══╝ ██║ ██╔══╝ ██╔══██╗╚════██║ │
+# │ ██║ ███████╗ ██║ ███████╗██║ ██║███████║ │
+# │ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ │
+# ├───────────────────────────────────────────────────┤
+# │ depressing and totally messy sway config or │
+# ├───────────────────────────────────────────────────┤
+# │ How windows are the only well │
+# │ managed aspect of my life. │
+# │---------------------------------------------------│
+# │ https://gitlab.com/putridpete/dot-files │
+# └───────────────────────────────────────────────────┘
+#
+# Logo key. Use Mod1 for Alt.
+
+set $mod Mod4
+
+# Home row direction keys, like vim
+
+set $left h
+set $down j
+set $up k
+set $right l
+
+# Terminal emulator
+
+set $term kitty
+
+# Application launcher
+
+set $menu exec wofi -I
+set $nmtui exec foot -a launcher -e nmtui
+set $htop exec foot -a launcher -e htop
+set $nvtop exec foot -a launcher -e nvtop
+
+# Output configuration
+
+output eDP-1 {
+ #options
+ mode 1920x1080@60.020Hz scale 1.07777777
+ position 0,0
+ bg ~/.wallpapers/castlevania.png fill
+}
+
+# Brightness control
+
+bindsym --locked XF86MonBrightnessUp exec brightnessctl s 10%+
+bindsym --locked XF86MonBrightnessDown exec brightnessctl s 10%-
+
+# Volume control
+
+bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
+bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +10%
+bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -10%
+bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
+
+
+# Input
+
+input "type:keyboard" {
+ #options
+ xkb_layout us(altgr-intl)
+ xkb_variant ,nodeadkeys
+ xkb_options caps:escape
+}
+
+input "type:touchpad" {
+ dwt enabled
+ tap enabled
+ middle_emulation enabled
+}
+
+# Key Bindings | Note: You can get the names of your inputs by running: swaymsg -t get_inputs
+
+ # Start a terminal
+ bindsym $mod+Return exec $term
+
+ # Kill focused window
+ bindsym $mod+q kill
+ # Screenshot
+ bindsym Print exec grim -g "$(slurp)" - | swappy -f -
+ # Toggle control center
+ bindsym $mod+Shift+n exec swaync-client -t -sw
+ # Start launcher
+ #bindsym $mod+d exec "dmenu_run -nf '#F8F8F2' -nb '#282A36' -sb '#6272A4' -sf '#F8F8F2' -fn 'monospace-10' -p 'dmenu'"
+ bindsym $mod+p exec $menu
+ bindsym $mod+Alt+n exec $nmtui
+ bindsym $mod+Alt+j exec $nvtop
+ bindsym $mod+m exec feishin --enable-features=UseOzonePlatform --ozone-platform=wayland
+ bindsym $mod+g exec galculator
+ bindsym $mod+c exec gsimplecal
+ bindsym $mod+Ctrl+p exec swaylock -f
+ bindsym $mod+Alt+v for_window [app_id="mpv"] floating enable, move absolute position 1270 710
+
+ # mouse button for dragging.
+ floating_modifier $mod normal
+
+ # Reload the configuration file
+ bindsym $mod+r reload
+
+ # Exit sway (logs you out of your Wayland session)
+ bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
+
+# Moving around:
+
+ # Move your focus around
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+ # Or use $mod+[up|down|left|right]
+ bindsym $mod+Left focus left
+ bindsym $mod+Down focus down
+ bindsym $mod+Up focus up
+ bindsym $mod+Right focus right
+
+ # Move the focused window with $mod+Ctrl
+ bindsym $mod+Ctrl+$left move left
+ bindsym $mod+Ctrl+$down move down
+ bindsym $mod+Ctrl+$up move up
+ bindsym $mod+Ctrl+$right move right
+ # Ditto, with arrow keys
+ bindsym $mod+Ctrl+Left move left
+ bindsym $mod+Ctrl+Down move down
+ bindsym $mod+Ctrl+Up move up
+ bindsym $mod+Ctrl+Right move right
+
+# Workspaces:
+
+ # Switch to workspace
+ bindsym $mod+1 workspace number 1
+ bindsym $mod+2 workspace number 2
+ bindsym $mod+3 workspace number 3
+ bindsym $mod+4 workspace number 4
+ bindsym $mod+5 workspace number 5
+ bindsym $mod+6 workspace number 6
+ bindsym $mod+7 workspace number 7
+ bindsym $mod+8 workspace number 8
+ bindsym $mod+9 workspace number 9
+ bindsym $mod+0 workspace number 10
+ bindsym $mod+minus workspace number 11
+ bindsym $mod+equal workspace number 12
+
+ # Move focused container to workspace
+ bindsym $mod+Ctrl+1 move container to workspace number 1
+ bindsym $mod+Ctrl+2 move container to workspace number 2
+ bindsym $mod+Ctrl+3 move container to workspace number 3
+ bindsym $mod+Ctrl+4 move container to workspace number 4
+ bindsym $mod+Ctrl+5 move container to workspace number 5
+ bindsym $mod+Ctrl+6 move container to workspace number 6
+ bindsym $mod+Ctrl+7 move container to workspace number 7
+ bindsym $mod+Ctrl+8 move container to workspace number 8
+ bindsym $mod+Ctrl+9 move container to workspace number 9
+ bindsym $mod+Ctrl+0 move container to workspace number 10
+ bindsym $mod+Ctrl+minus move container to workspace number 11
+ bindsym $mod+Ctrl+equal move container to workspace number 12
+
+# Switch to prev/next workspace on all outputs
+ bindsym $mod+Alt+Right workspace next
+ bindsym $mod+Alt+Left workspace prev
+ bindsym $mod+Alt+l workspace next
+ bindsym $mod+Alt+h workspace prev
+
+
+
+# Layout stuff:
+
+
+ bindsym $mod+b splith
+ bindsym $mod+v splitv
+
+ # Switch the current container between different layout styles
+ bindsym $mod+s layout stacking
+ bindsym $mod+w layout tabbed
+ bindsym $mod+e layout toggle split
+
+ # Make the current focus fullscreen
+ bindsym $mod+f fullscreen
+
+ # Toggle the current focus between tiling and floating mode
+ bindsym $mod+Ctrl+space floating toggle
+
+ # Swap focus between the tiling area and the floating area
+ bindsym $mod+space focus mode_toggle
+
+ # Move focus to the parent container
+ bindsym $mod+a focus parent
+
+# Scratchpad:
+
+ # Move the currently focused window to the scratchpad
+ bindsym $mod+grave move scratchpad
+
+ # Show the next scratchpad window or hide the focused scratchpad window.
+ # If there are multiple scratchpad windows, this command cycles through them.
+
+ bindsym $mod+tab scratchpad show
+
+# Resizing containers:
+
+mode "resize" {
+ # left will shrink the containers width
+ # right will grow the containers width
+ # up will shrink the containers height
+ # down will grow the containers height
+ bindsym $left resize shrink width 10px
+ bindsym $down resize grow height 10px
+ bindsym $up resize shrink height 10px
+ bindsym $right resize grow width 10px
+
+ # Ditto, with arrow keys
+ bindsym Left resize shrink width 10px
+ bindsym Down resize grow height 10px
+ bindsym Up resize shrink height 10px
+ bindsym Right resize grow width 10px
+
+ # Return to default mode
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+# GTK theme
+
+set $gnome-schema org.gnome.desktop.interface
+
+# Status Bar:
+
+bar {
+ #position top
+ mode invisible
+
+ # When the status_command prints a new line to stdout, swaybar updates.
+ # The default just shows the current date and time.
+ #status_command while date +'%A, %d-%m-%Y %H:%M %j'; do sleep 1; done
+ #
+ status_command waybar
+ workspace_buttons yes
+
+ colors {
+ background #282A36
+ statusline #F8F8F2
+ separator #44475A
+
+ focused_workspace #44475A #44475A #F8F8F2
+ active_workspace #282A36 #44475A #F8F8F2
+ inactive_workspace #282A36 #282A36 #BFBFBF
+ urgent_workspace #FF5555 #FF5555 #F8F8F2
+ binding_mode #FF5555 #FF5555 #F8F8F2
+ }
+}
+
+include /etc/sway/config.d/*
+
+# class border bground text indicator child_border
+client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4
+client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A
+client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36
+client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555
+client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36
+
+client.background #F8F8F2
+
+gaps inner 10
+default_border pixel 2
+default_floating_border pixel 2
+
+# Workspaces
+
+workspace 1 output eDP-1
+workspace 2 output eDP-1
+workspace 3 output eDP-1
+workspace 4 output eDP-1
+workspace 5 output eDP-1
+workspace 6 output eDP-1
+workspace 7 output eDP-1
+workspace 8 output eDP-1
+workspace 9 output eDP-1
+workspace 10 output eDP-1
+workspace 11 output eDP-1
+workspace 12 output eDP-1
+
+# Auto exec
+
+### Variables
+exec systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec --no-startup-id dbus-update-activation-environment --all
+
+### Polkit Agent
+exec /usr/lib/polkit-kde-authentication-agent-1
+
+### Autotiling
+exec autotiling-rs
+
+### Notification Daemon
+exec swaync
+
+### Idle configuration
+exec swayidle -w timeout 1800 'swaylock -f' timeout 1805 'swaymsg "output * power off"' resume 'swaymsg "output * power on"'
+
+# Cursor
+seat seat0 xcursor_theme Dracula-cursors
+
+# Lock screen after closing lid
+
+set $lock 'swaylock -f'
+bindswitch --reload --locked lid:on exec $lock
+
+### Dracula theme
+exec_always {
+ gsettings set $gnome-schema gtk-theme 'Dracula'
+ gsettings set $gnome-schema icon-theme 'Papirus-Dark'
+ gsettings set $gnome-schema cursor-theme 'Dracula-cursors'
+}
+
+### General
+exec nextcloud
+exec openrgb --startminimized
+exec swaymsg "workspace 1; exec firefox"
+exec steam-runtime
+exec jellyfinmediaplayer
+exec virt-manager
+exec kdenlive
+exec gimp
+exec keepassxc
+exec feishin --enable-features=UseOzonePlatform --ozone-platform=wayland
+exec heroic --ozone-platform=wayland
+exec libreoffice --writer --norestore
+exec signal-desktop --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations
+exec swaymsg "workspace 2; exec kitty --session ~/.config/kitty/session --listen-on=unix:@mykitty"
+
+# Window managment
+
+focus_on_window_activation urgent
+focus_follows_mouse yes
+xwayland disable
+
+assign [app_id="mpv"] output eDP-1
+assign [app_id="org.jellyfin.jellyfinmediaplayer"] workspace number 3
+assign [app_id="gimp"] workspace number 5
+assign [app_id="libreoffice-writer"] workspace number 4
+#assign [class="Signal"] workspace number 7
+for_window [app_id="signal"] floating enable, resize set 1280 px 768 px, move scratchpad
+for_window [app_id="nextcloud"] floating enable, resize set 600 px 800 px, move absolute position 1320 40
+for_window [app_id="nm-connection-editor"] floating enable, move absolute position 670 40
+for_window [app_id="gsimplecal"] floating enable, move absolute position 830 40
+for_window [app_id="org.keepassxc.KeePassXC"] floating enable, floating enable, move scratchpad, scratchpad show
+for_window [app_id="pavucontrol"] floating enable, move absolute position 1320 40, resize set 600 px 800 px
+for_window [app_id="galculator"] floating enable, move scratchpad, scratchpad show
+for_window [app_id="org.kde.polkit-kde-authentication-agent-1"] floating enable
+#for_window [app_id="org.rncbc.qsynth"] floating enable, resize 1280 ppt 768 ppt
+#for_window [app_id="signal"] resize set 633 px, move left, urgent deny
+#for_window [class="Signal"] resize set 633 px, move left, urgent deny
+for_window [app_id="feishin"] floating enable, resize set 1600 px 900 px, move scratchpad
+for_window [class="steam"] floating enable
+for_window [title="Steam"] floating disable
+for_window [app_id="mpv"] floating enable, resize set 640 px 320 px, move absolute position 1270 710, move scratchpad, scratchpad show
+for_window [app_id="xdg-desktop-portal-gtk"] floating enable, resize set 800 px 600px
+for_window [app_id="^launcher$"] floating enable, sticky enable, resize set 46 ppt 60 ppt, border pixel 5
diff --git a/.dot-files-laptop/.config/swaylock/config b/.dot-files-laptop/.config/swaylock/config
new file mode 100644
index 0000000..41b0c78
--- /dev/null
+++ b/.dot-files-laptop/.config/swaylock/config
@@ -0,0 +1,29 @@
+image=~/.wallpapers/castlevania2.png
+color=282a36
+inside-color=1F202A
+line-color=1F202A
+ring-color=bd93f9
+text-color=f8f8f2
+
+layout-bg-color=1F202A
+layout-text-color=f8f8f2
+
+inside-clear-color=6272a4
+line-clear-color=1F202A
+ring-clear-color=6272a4
+text-clear-color=1F202A
+
+inside-ver-color=bd93f9
+line-ver-color=1F202A
+ring-ver-color=bd93f9
+text-ver-color=1F202A
+
+inside-wrong-color=ff5555
+line-wrong-color=1F202A
+ring-wrong-color=ff5555
+text-wrong-color=1F202A
+
+bs-hl-color=ff5555
+key-hl-color=50fa7b
+
+text-caps-lock-color=f8f8f2
diff --git a/.dot-files-laptop/.config/waybar/config b/.dot-files-laptop/.config/waybar/config
new file mode 100644
index 0000000..efc1095
--- /dev/null
+++ b/.dot-files-laptop/.config/waybar/config
@@ -0,0 +1,270 @@
+[{
+ "output": "DP-1",
+ "layer": "top",
+ "modules-left": ["hyprland/workspaces", "hyprland/mode"],
+ "modules-center": ["hyprland/window"],
+ "modules-right": ["mpris"],
+
+ "mpris": {
+ "format": "{player_icon} {dynamic}",
+ "format-paused": "{status_icon} {dynamic}",
+ "tooltip-format": " {artist}: {title} ( {album})",
+ "interval": 1,
+ "album-len": 0,
+ "player-icons": {
+ "default": "",
+ "mpv": ""
+ },
+ "status-icons": {
+ "paused": ""
+ },
+// "ignored-players": ["firefox"]
+ },
+ "hyprland/window": {
+ "format": "{title} ",
+ "max-length": 60,
+ "icon": true,
+ "icon-size": 20,
+ "all-outputs" : true,
+ },
+ // "hyprland/workspaces": {
+ // "format": "{icon}",
+ // "on-click": "activate",
+ // "format-icons": {
+ // "1": "",
+ // "2": "",
+ // "3": "",
+ // "4": "",
+ // "5": "",
+ // "6": "",
+ // },
+ // "sort-by-number": true
+ //},
+ }, {
+ "output": "eDP-1",
+ "layer": "top",
+ "modules-left": ["hyprland/workspaces", "hyprland/mode"],
+ "modules-center": ["custom/gpu-usage", "cpu", "memory", "temperature", "network#wifi", "network#lan", "custom/vpn", "clock", "custom/weather", "idle_inhibitor", "custom/pacman", "battery", "battery#2", "bluetooth", "backlight", "disk", "disk#disk2", "disk#disk3", "disk#disk4"],
+ /* "modules-right": ["tray", "pulseaudio",], */
+ "modules-right": ["tray", "pulseaudio", "group/group-power"],
+
+ "hyprland/mode": {
+ "format": " {}"
+ },
+ "hyprland/workspaces": {
+ "format": "{icon}",
+ "on-click": "activate",
+ "format-icons": {
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": "",
+ "6": "",
+ "7": "",
+ "8": "",
+ },
+ "sort-by-number": true
+ },
+ "custom/pacman": {
+ "format": " {}",
+ "tooltip": false,
+ "interval": 60,
+ "exec": "checkupdates | wc -l",
+ "exec-if": "exit 0",
+ "signal": 8
+ },
+ "backlight": {
+ "device": "intel_backlight",
+ "format": "{icon} {percent}%",
+ "format-icons": ["", "", ""]
+ },
+ "battery": {
+ "bat": "BAT1",
+ "weighted-average": true,
+ "interval": 60,
+ "full-at": 84,
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{icon} {capacity}%",
+ "format-icons": ["", "", "", "", ""],
+ "max-length": 25
+ },
+ "battery#2": {
+ "bat": "BAT0",
+ "weighted-average": true,
+ "interval": 60,
+ "full-at": 84,
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{icon} {capacity}%",
+ "format-icons": ["", "", "", "", ""],
+ "max-length": 25
+ },
+
+ "group/group-power": {
+ "orientation": "inherit",
+ "drawer": {
+ "transition-duration": 500,
+ "children-class": "not-power",
+ "transition-left-to-right": false,
+ },
+ "modules": [
+ "custom/power",
+ "custom/lock",
+ "custom/reboot",
+ ]
+ },
+ "custom/lock": {
+ "format": " ",
+ "tooltip": false,
+ "on-click": "hyprlock"
+ },
+ "custom/reboot": {
+ "format": " ",
+ "tooltip": false,
+ "on-click": "shutdown -r now"
+ },
+ "custom/power": {
+ "format": " ",
+ "tooltip": false,
+ "on-click": "shutdown -h now"
+ },
+ "network#lan": {
+ "interface": "enp0s31f6",
+ "format": "",
+ "interval": 1,
+ "format-ethernet": " {ifname}",
+ "format-disconnected": "",
+ "max-length": 50,
+ "tooltip-format": "speed: {bandwidthDownBytes} / {bandwidthUpBytes}",
+ "on-click": "kitty --class nmnet --single-instance -e nmtui",
+ "on-click-right": "nm-connection-editor"
+
+ },
+ "network#wifi": {
+ "interface": "wlp3s0",
+ "format": "",
+ "interval": 1,
+ "format-wifi": " {essid} ({signalStrength}%) ",
+ "format-disconnected": "",
+ "max-length": 50,
+ "tooltip-format": "speed: {bandwidthDownBytes} / {bandwidthUpBytes}",
+ "on-click": "kitty --class nmnet --single-instance -e nmtui",
+ "on-click-right": "nm-connection-editor"
+
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ },
+ "on-click": "toggleRemote"
+ },
+ "tray": {
+ "icon-size": 20,
+ "spacing": 6
+ },
+ "clock": {
+ "format": " {:%I:%M:%OS}",
+ "interval": 1,
+ "tooltip-format": " {:%d/%m/%y}",
+ // "format-alt": "{:%Y-%m-%d}"
+ "on-click": "gsimplecal"
+ },
+ "cpu": {
+ "interval": 10,
+ "format": "{icon} {usage}%",
+ "format-icons": [""]
+ },
+ "memory": {
+ "format": "{icon} {percentage}%",
+ "format-icons": [""]
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ "hwmon-path": "/sys/class/hwmon/hwmon1/temp1_input",
+ // "critical-threshold": 80,
+ // "format-critical": " {temperatureC}°C",
+ "format": " {temperatureC}°C",
+ "tooltip": false,
+ },
+ "disk": {
+ "interval": 30,
+ "format": " /: {percentage_used}%",
+ "path": "/"
+ },
+ "disk#disk2": {
+ "interval": 30,
+ "format": " ~: {percentage_used}%",
+ "path": "/home/peter"
+ },
+ "disk#disk3": {
+ "interval": 30,
+ "format": " SSD: {percentage_used}%",
+ "path": "/mnt/SSD"
+ },
+ "disk#disk4": {
+ "interval": 30,
+ "format": " Backups: {percentage_used}%",
+ "path": "/mnt/Backups"
+ },
+ "pulseaudio": {
+ "format": "{volume}% {icon}",
+ "format-bluetooth": "{volume}% {icon} {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": "0% {icon}",
+ "format-source": "{volume}% ",
+ "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", "", ""]
+ },
+ "on-click": "pavucontrol"
+ },
+ "bluetooth": {
+ "format": " {status}",
+ "format-connected": " connected",
+ "format-connected-battery": " Connected {device_battery_percentage}%",
+ "on-click": "blueman-manager",
+ // "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device
+ "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
+ "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
+ "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
+ "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%"
+ },
+"custom/vpn": {
+ "format": " VPN",
+ "tooltip": false,
+ "exec": "echo '{\"class\": \"connected\"}'",
+ "exec-if": "test -d /proc/sys/net/ipv4/conf/tun0",
+ "return-type": "json",
+ "on-click": "kitty --class nmnet --single-instance -e nmtui",
+ "interval": 5
+},
+ "custom/weather": {
+ "exec": "python ~/.config/waybar/scripts/weather.py",
+ "restart-interval": 300,
+ "format": "{}",
+ "return-type": "json",
+ "on-click": "xdg-open https://weather.com/en-IN/weather/today/l/e42bb25a58c2e689ec85e632d82e69d7e46c82defb9ad7a5551b6c3a70fbc282"
+ // "format-alt": "{alt}",
+},
+ "custom/gpu-usage": {
+ "exec": "cat /sys/class/hwmon/hwmon1/device/gpu_busy_percent",
+ "format": " {}%",
+ "return-type": "",
+ "interval": 1,
+ "tooltip": false
+ },
+}]
diff --git a/.dot-files-laptop/.config/waybar/scripts/weather.py b/.dot-files-laptop/.config/waybar/scripts/weather.py
new file mode 100755
index 0000000..41a532d
--- /dev/null
+++ b/.dot-files-laptop/.config/waybar/scripts/weather.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python
+
+import subprocess
+from pyquery import PyQuery # install using `pip install pyquery`
+import json
+
+# weather icons
+weather_icons = {
+ "sunnyDay": "",
+ "clearNight": "",
+ "cloudyFoggyDay": "",
+ "cloudyFoggyNight": "",
+ "rainyDay": "",
+ "rainyNight": "",
+ "snowyIcyDay": "",
+ "snowyIcyNight": "",
+ "severe": "",
+ "default": "",
+}
+
+# get location_id
+# to get your own location_id, go to https://weather.com & search your location.
+# once you choose your location, you can see the location_id in the URL(64 chars long hex string)
+# like this: https://weather.com/en-IN/weather/today/l/c3e96d6cc4965fc54f88296b54449571c4107c73b9638c16aafc83575b4ddf2e
+location_id = "e42bb25a58c2e689ec85e632d82e69d7e46c82defb9ad7a5551b6c3a70fbc282" # TODO
+# location_id = "8139363e05edb302e2d8be35101e400084eadcecdfce5507e77d832ac0fa57ae"
+
+# priv_env_cmd = 'cat $PRIV_ENV_FILE | grep weather_location | cut -d "=" -f 2'
+# location_id = subprocess.run(
+# priv_env_cmd, shell=True, capture_output=True).stdout.decode('utf8').strip()
+
+# get html page
+url_fetch = "https://weather.com/en-IN/weather/today/l/" + location_id
+html_data = PyQuery(url=url_fetch)
+
+# current temperature
+temp = html_data("span[data-testid='TemperatureValue']").eq(0).text()
+# print(temp)
+
+# current status phrase
+status = html_data("div[data-testid='wxPhrase']").text()
+status = f"{status[:16]}.." if len(status) > 17 else status
+# print(status)
+
+# status code
+status_code = html_data("#regionHeader").attr("class").split(" ")[2].split("-")[2]
+# print(status_code)
+
+# status icon
+icon = (
+ weather_icons[status_code]
+ if status_code in weather_icons
+ else weather_icons["default"]
+)
+# print(icon)
+
+# temperature feels like
+temp_feel = html_data(
+ "div[data-testid='FeelsLikeSection'] > span > span[data-testid='TemperatureValue']"
+).text()
+temp_feel_text = f"Feels like {temp_feel}C"
+# print(temp_feel_text)
+
+# min-max temperature
+temp_min = (
+ html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
+ .eq(0)
+ .text()
+)
+temp_max = (
+ html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
+ .eq(1)
+ .text()
+)
+temp_min_max = f" {temp_min}\t\t {temp_max}"
+# print(temp_min_max)
+
+# wind speed
+wind_speed = html_data("span[data-testid='Wind']").text().split("\n")[1]
+wind_text = f" {wind_speed}"
+# print(wind_text)
+
+# humidity
+humidity = html_data("span[data-testid='PercentageValue']").text()
+humidity_text = f" {humidity}"
+# print(humidity_text)
+
+# visibility
+visbility = html_data("span[data-testid='VisibilityValue']").text()
+visbility_text = f" {visbility}"
+# print(visbility_text)
+
+# air quality index
+air_quality_index = html_data("text[data-testid='DonutChartValue']").text()
+# print(air_quality_index)
+
+# hourly rain prediction
+prediction = html_data("section[aria-label='Hourly Forecast']")(
+ "div[data-testid='SegmentPrecipPercentage'] > span"
+).text()
+prediction = prediction.replace("Chance of Rain", "")
+prediction = f"\n\n (hourly) {prediction}" if len(prediction) > 0 else prediction
+# print(prediction)
+
+# tooltip text
+tooltip_text = str.format(
+ "\t\t{}\t\t\n{}\n{}\n{}\n\n{}\n{}\n{}{}",
+ f'{temp}C 🇩🇴',
+ f"{icon}",
+ f"{status}",
+ f"{temp_feel_text}",
+ f"{temp_min_max}",
+ f"{wind_text}\t{humidity_text}",
+ f"{visbility_text}\tAQI {air_quality_index}",
+ f"{prediction}",
+)
+
+# print waybar module data
+out_data = {
+ "text": f"{icon} {temp}",
+ "alt": status,
+ "tooltip": tooltip_text,
+ "class": status_code,
+}
+print(json.dumps(out_data))
diff --git a/.dot-files-laptop/.config/waybar/style.css b/.dot-files-laptop/.config/waybar/style.css
new file mode 100644
index 0000000..2a0fa39
--- /dev/null
+++ b/.dot-files-laptop/.config/waybar/style.css
@@ -0,0 +1,348 @@
+* {
+ border: none;
+ border-radius: 10;
+ font-family: "Droid Sans Font, Font Awesome, Roboto, FreeSans, FreeSerif" ;
+ font-size: 16px;
+ min-height: 10px;
+}
+
+window#waybar {
+ background: transparent;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+#window {
+ margin-top: 6px;
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 10px;
+ transition: none;
+ color: transparent;
+ background: transparent;
+}
+
+#mode {
+ color: #ff5555;
+}
+
+#workspaces button {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 8px;
+ padding-right: 8px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ background-color: transparent;
+}
+#workspaces button:hover {
+ box-shadow: inherit;
+ background-color: #282a36;
+}
+
+#workspaces button.active {
+ background-color: #ff79c6;
+ color: #282a36;
+}
+
+
+#network {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+
+#pulseaudio {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #282a36;
+ background: #50fa7b;
+}
+
+#bluetooth {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+
+#battery {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+
+#battery.charging, #battery.plugged {
+ color: #f8f8f2;
+ background-color: #282a36;
+}
+
+#battery.critical:not(.charging) {
+ background-color: #282a36;
+ color: #f8f8f2;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+@keyframes blink {
+ to {
+ background-color: #282a36;
+ color: #f8f8f2;
+ }
+}
+
+#backlight {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+#clock {
+ margin-top: 6px;
+ margin-left: 6px;
+ padding-left: 8px;
+ padding-right: 3px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: transparent;
+ /*background: #1A1826;*/
+}
+
+#memory {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ margin-bottom: 0px;
+ padding-right: 10px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+#cpu {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ margin-bottom: 0px;
+ padding-right: 10px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+
+#tray {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ margin-bottom: 0px;
+ padding-right: 10px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #5d4185;
+}
+
+#disk {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+
+#temperature {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+
+#idle_inhibitor {
+ margin-top: 6px;
+ margin-left: 1px;
+ padding-left: 1px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+}
+
+#idle_inhibitor.activated {
+ color: #50fa7b;
+}
+
+#custom-vpn {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+
+#custom-weather {
+ margin-top: 6px;
+ margin-left: 3px;
+ padding-left: 3px;
+ padding-right: 8px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: transparent;
+}
+
+#custom-weather.severe {
+ color: #ff5555;
+}
+
+#custom-weather.sunnyDay {
+ color: #f1fa8c;
+}
+
+#custom-weather.clearNight {
+ color: #bd93f9;
+}
+
+#custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight {
+ color: #9599b4;
+}
+
+#custom-weather.rainyDay, #custom-weather.rainyNight {
+ color: #8be9fd;
+}
+
+#custom-weather.showyIcyDay, #custom-weather.snowyIcyNight {
+ color: #8be9fd;
+}
+
+#custom-weather.default {
+ color: #f8f8f2;
+}
+
+#custom-gpu-usage {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #282a36;
+}
+#mpris {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 6px;
+ margin-right: 6px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #bd93f9;
+ background: #282a36;
+}
+#custom-scratchpad-indicator {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f8f2;
+ background: #6272a4;
+}
+#custom-power {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 7px;
+ padding-right: 7px;
+ margin-bottom: 0px;
+ margin-right: 6px;
+ border-radius: 10px;
+ transition: none;
+ color: #282A36;
+ background: #FF5555;
+}
+#custom-lock {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 7px;
+ padding-right: 7px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #282A36;
+ background: #FFB86C;
+}
+#custom-reboot {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 7px;
+ padding-right: 7px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #282A36;
+ background: #8BE9FD;
+}
+#custom-pacman {
+ margin-top: 6px;
+ margin-left: 8px;
+ padding-left: 7px;
+ padding-right: 7px;
+ margin-bottom: 0px;
+ border-radius: 10px;
+ transition: none;
+ color: #f8f2f2;
+ background: #282a36;
+}
diff --git a/.dot-files-laptop/.config/ytfzf/conf.sh b/.dot-files-laptop/.config/ytfzf/conf.sh
new file mode 100755
index 0000000..6de9d26
--- /dev/null
+++ b/.dot-files-laptop/.config/ytfzf/conf.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+YTFZF_ENABLE_FZF_DEFAULT_OPTS=1
+FZF_DEFAULT_OPTS="--color=border:magenta,info:green,header:green,info:yellow,hl:blue,label:magenta"
+show_thumbnails=1
+load_thumbnail_viewer kitty
+thumbnail_video_info_text () {
+ printf "\n${c_cyan}%s" "$title"
+ printf "\n "
+ printf "\n${c_blue}Channel ${c_green}%s" "$channel"
+ printf "\n${c_blue}Duration ${c_yellow}%s" "$duration"
+ printf "\n${c_blue}Views ${c_magenta}%s" "$views"
+ printf "\n${c_blue}Date ${c_cyan}%s" "$date"
+ printf "\n "
+}
diff --git a/.dot-files-laptop/.config/ytfzf/extensions/comments b/.dot-files-laptop/.config/ytfzf/extensions/comments
new file mode 100644
index 0000000..e2f9155
--- /dev/null
+++ b/.dot-files-laptop/.config/ytfzf/extensions/comments
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+get_search_from_EXT_comments (){
+ _search="${selected_url}"
+}
+
+set +f
+instances=$(printf "%s\n" "${YTFZF_TEMP_DIR}"/*)
+set -f
+
+instance_count=$(echo "$instances" | wc -l)
+
+if [ "$instance_count" -gt 1 ]; then
+ printf "%s\n" "More than 1 ytfzf instance is running, please select one"
+ echo "$instances" | sed 's/.*\///' | nl
+ read -r num
+
+ instance="$(echo "$instances" | sed -n "${num}p")"
+else
+ instance="$instances"
+fi
+
+read -r selected_url < "${instance}/ids"
+
+[ -z "$selected_url" ] && {
+ printf "%s\n" "This instance is not playing a video"
+}
+
+scrape="comments"
+search_source="EXT_comments"
diff --git a/.dot-files-laptop/.config/ytfzf/subscriptions b/.dot-files-laptop/.config/ytfzf/subscriptions
new file mode 100644
index 0000000..99fef6c
--- /dev/null
+++ b/.dot-files-laptop/.config/ytfzf/subscriptions
@@ -0,0 +1,35 @@
+https://www.youtube.com/channel/UC7YOGHUfC1Tb6E4pudI9STA # Mental Outlaw
+https://www.youtube.com/channel/UCVls1GmFKf6WlTraIb_IaJg # DT
+https://www.youtube.com/channel/UCbQ4fbi0fy3d6Hb7q2FIATw # itsagundam
+https://www.youtube.com/channel/UCld68syR8Wi-GY_n4CaoJGA # Brodie
+https://www.youtube.com/channel/UC5KDiSAFxrDWhmysBcNqtMA # Eric Murphy
+https://www.youtube.com/channel/UCjSEJkpGbcZhvo0lr-44X_w # TechHut
+https://www.youtube.com/channel/UCiP_FwGyJQ_6P8k5ON5mncQ # Matt McMuscles
+https://www.youtube.com/channel/UC3ltptWa0xfrDweghW94Acg # Karl Jobst
+https://www.youtube.com/channel/UCdJdEguB1F1CiYe7OEi3SBg # jontron
+https://www.youtube.com/channel/UChIs72whgZI9w6d6FhwGGHA # Gamers Nexus
+https://www.youtube.com/channel/UC0M0rxSz3IF0CsSour1iWmw # Cinemassacre
+https://www.youtube.com/channel/UCmpaIXvID-FsN5xsUNolYAw # GTV Japan
+https://www.youtube.com/channel/UCNeU-ameY0dcKiltExqvhIw # GOG
+https://www.youtube.com/channel/UCGIY_O-8vW4rfX98KlMkvRg # Nintendo
+https://www.youtube.com/channel/UCjBp_7RuDBUYbd1LegWEJ8g # Xbox
+https://www.youtube.com/channel/UCWfXR0-F7MI-TbqikgEdJcQ # Sega
+https://www.youtube.com/channel/UCvZHe-SP3xC7DdOk4Ri8QBw # Bethesda
+https://www.youtube.com/channel/UC_ntXHv-XdKCD7CPynVvnQw # Bandai
+https://www.youtube.com/channel/UCW7h-1mymnJ96akzjrmiIgA # Capcom
+https://www.youtube.com/channel/UCnSp56qlKGr2lrPqyxtWGhw # 3D Realms
+https://www.youtube.com/channel/UCFctpiB_Hnlk3ejWfHqSm6Q # Pokémon
+https://www.youtube.com/channel/UCLx053rWZxCiYWsBETgdKrQ # LGR
+https://www.youtube.com/channel/UChbPPu6LmY3VJzW4XTgvwgA # OhNoItsAlexx
+https://www.youtube.com/channel/UCSE_JyJeiJQvg3RCnSD272Q # SmugAlana
+https://www.youtube.com/channel/UCCAfRoTJrKPbSrh_Eg3i4vg # TomDark
+https://www.youtube.com/channel/UCXoKg7Uvy4E7G3oW-Id5k1A # Acheeto
+https://www.youtube.com/channel/UCtMVHI3AJD4Qk4hcbZnI9ZQ # SomeOrdinaryGamers
+https://www.youtube.com/channel/UC3jSNmKWYA04R47fDcc1ImA # InfinitelyGalactic
+https://www.youtube.com/channel/UC1s1OsWNYDFgbROPV-q5arg # Michael Horn
+https://www.youtube.com/channel/UCl2mFZoRqjw_ELax4Yisf6w # Louis Rossmann
+https://www.youtube.com/channel/UCSuHzQ3GrHSzoBbwrIq3LLA # Naomi Brockwell TV
+https://www.youtube.com/channel/UCsVIQ2ipmCbua6s8ThFLo5A # Shrouded Hand
+https://www.youtube.com/channel/UC3yaWWA9FF9OBog5U9ml68A # SavvyNik
+https://www.youtube.com/channel/UCCzK4LJkDl73MQMbr8Lrcww # joeybtoonz
+https://www.youtube.com/channel/UCQeRaTukNYft1_6AZPACnog # Asmongold TV
diff --git a/.dot-files-laptop/.wallpapers/castlevania.png b/.dot-files-laptop/.wallpapers/castlevania.png
new file mode 100644
index 0000000..5834b72
Binary files /dev/null and b/.dot-files-laptop/.wallpapers/castlevania.png differ
diff --git a/.dot-files-laptop/.wallpapers/castlevania2.png b/.dot-files-laptop/.wallpapers/castlevania2.png
new file mode 100755
index 0000000..099537b
Binary files /dev/null and b/.dot-files-laptop/.wallpapers/castlevania2.png differ
diff --git a/.dot-files-laptop/.zshrc b/.dot-files-laptop/.zshrc
new file mode 100644
index 0000000..d498f9c
--- /dev/null
+++ b/.dot-files-laptop/.zshrc
@@ -0,0 +1,300 @@
+# ┌───────────────────────────────────────────────────┐
+# │ ██████╗ ███████╗████████╗███████╗██████╗ ███████╗ │
+# │ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝ │
+# │ ██████╔╝█████╗ ██║ █████╗ ██████╔╝███████╗ │
+# │ ██╔═══╝ ██╔══╝ ██║ ██╔══╝ ██╔══██╗╚════██║ │
+# │ ██║ ███████╗ ██║ ███████╗██║ ██║███████║ │
+# │ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ │
+# ├───────────────────────────────────────────────────┤
+# │ no good, total trash and possibly broken ~/.zshrc │
+# ├───────────────────────────────────────────────────┤
+# │ Anime traps and dank memes, one command away! │
+# │---------------------------------------------------│
+# │ https://gitlab.com/putridpete/dot-files │
+# └───────────────────────────────────────────────────┘
+
+# 1. Autoload
+
+autoload -Uz compinit history-substring-search-up history-substring-search-down bracketed-paste-url-magic && compinit
+zstyle ':completion:*' menu select # Auto completion
+zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+zle -N bracketed-paste bracketed-paste-url-magic # autoquote urls
+
+# 2. Auto correction
+
+setopt CORRECT
+
+# 3. History search
+
+zle -N history-substring-search-up
+zle -N history-substring-search-down
+
+# 4. History settings
+
+export HISTFILE="$HOME/.zsh_history"
+export HISTSIZE=10000
+export SAVEHIST=10000
+setopt EXTENDED_HISTORY
+setopt INC_APPEND_HISTORY
+
+HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND=true
+
+# 5. Git repository
+
+alias config='/usr/bin/git --git-dir=$HOME/dot-files/.git/ --work-tree=$HOME'
+
+# 6. Starship
+
+eval "$(starship init zsh)"
+
+# 7. nnn variables
+
+BLK="04" CHR="04" DIR="04" EXE="00" REG="00" HARDLINK="00" SYMLINK="06" MISSING="00" ORPHAN="01" FIFO="0F" SOCK="0F" OTHER="02"
+export NNN_FCOLORS="$BLK$CHR$DIR$EXE$REG$HARDLINK$SYMLINK$MISSING$ORPHAN$FIFO$SOCK$OTHER" NNN_COLORS="2345"
+export NNN_TRASH=1
+export NNN_ARCHIVE="\\.(7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)$"
+export NNN_PLUG='p:preview-tui;c:x2sel'
+export SPLIT='h'
+export NNN_FIFO='/tmp/nnn.fifo'
+export NNN_BMS='d:~/Downloads/;u:~/;n:~/Nextcloud;w:~/Nextcloud/Notes;c:~/.config;r:/run/media;a:~/Downloads/AUR;!:~/.bin/sh;t:~/.local/share/Trash/files;y:/media/NFS'
+export VISUAL='vim'
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# 8. Aliases
+# 8.1 zsh aliases
+
+alias ls='nnn -deUxH'
+alias aurdir='cd ~/Downloads/AUR'
+alias gitdir='cd ~/Downloads/git'
+alias notesdir='cd ~/Nextcloud/Notes'
+alias mv='mv -i'
+alias cp='cp -i'
+alias rm='rm -i'
+alias ..='cd ..'
+alias ...='cd ../..'
+alias visudo='sudo EDITOR=vim visudo'
+export EDITOR=vim
+
+# 8.2 Sway aliases
+
+alias lock='~/.bin/sh/swaylock.sh'
+alias logoff='swaymsg exit'
+alias gettree='swaymsg -pt get_tree'
+alias getoutputs='hyprctl monitors all'
+
+# 8.3 System commands aliases
+
+alias amdman='echo "manual" | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level'
+alias amdhigh='echo "high" | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level'
+alias gpumode='cat /sys/class/drm/card0/device/pp_power_profile_mode'
+alias systemcheck='systemctl --failed && journalctl -p 3 -b;'
+alias mountkf='sudo cryptsetup open /dev/disk/by-uuid/dd18906b-821e-46cc-9580-60b70ce33737 peter && sudo mount --mkdir -t ext4 /dev/mapper/peter /run/media/peter'
+alias umountkf='sudo umount /run/media/peter && sudo cryptsetup close peter'
+alias findfat='find ~ -xdev -type f -size +100M'
+
+# 8.4 Kitty aliases
+
+alias icat="kitty +kitten icat"
+alias tssh="kitty +kitten ssh"
+
+# 8.5 Misc Programs aliases
+
+alias send='ffsend'
+alias grim1='grim -t png -l 0 -o DP-1'
+alias grim2='grim -t png -l 0 -o DP-2'
+alias grimc='slurp | grim -g - - | wl-copy'
+
+# 8.5 git aliases
+
+alias gitclean='git clean -dxfi'
+alias homesync='~/.bin/sh/synchomepage.sh'
+
+# 8.6 Pacman & Auracle aliases
+
+alias get='sudo pacman -S'
+alias yap='pacman -Qq | fzf --color="border:magenta,info:green,header:green,info:yellow,hl:blue,label:magenta" --multi --preview "pacman -Qi {1}" --preview-window=up | xargs -ro sudo pacman -Rns'
+alias yeet='sudo pacman -Rns'
+alias kick='sudo pacman -R'
+alias search='pacman -Ss'
+alias spot='pacman -Qs'
+alias searchaur='auracle search'
+alias getaur='auracle clone'
+alias listaur='pacman -Qm'
+alias buildorder='auracle buildorder'
+alias updateaur='auracle update && cd ~/Downloads/AUR'
+alias check='pacman -Si'
+alias checkaur='auracle info'
+alias clear='clear && fastfetch'
+alias pkgstatus='comm -23 <(pacman -Qqm | sort) <(curl https://aur.archlinux.org/packages.gz | gzip -cd | sort)'
+
+# 8.7 Script Aliases
+
+alias checkupdates='~/.bin/sh/checkupdates.sh'
+alias update='~/.bin/sh/update.sh'
+alias reboot='~/.bin/sh/reboot.sh'
+alias shutdown='~/.bin/sh/shutdown.sh'
+alias pkgb='~/.bin/sh/pkgb.sh'
+alias build='~/.bin/sh/build.sh'
+alias buildgames='~/.bin/sh/buildgames.sh'
+alias deloldbins='rm -rf ~/.bin/*/old/*'
+alias orphans='~/.bin/sh/orphans.sh'
+alias bday='/home/peter/.bin/sh/bd.sh'
+alias kap='~/.bin/sh/kap.sh'
+alias lap='~/.bin/sh/lap.sh'
+alias aurfzf='~/.bin/sh/aur.sh'
+
+# 8.8 Meme aliases
+
+alias get-waifus='mpv "https://www.youtube.com/watch?v=sr078vS8l_4"'
+alias bullyme='mpv "https://www.youtube.com/watch?v=9jrO58mg-Qg"'
+alias archbtw='fastfetch'
+
+# 8.9 Newsboat aliases
+
+alias news='~/.bin/sh/news.sh'
+
+
+# 8.10 Offline Arch Wiki
+
+alias archwiki='lynx https://wiki.archlinux.org/'
+alias offlinewiki='lynx /usr/share/doc/arch-wiki/html/en'
+
+# 9. Android tools
+export PATH=${PATH}:~/platform-tools
+
+# 10. Arch BTW
+
+fastfetch
+
+# 11. Dracula TTY theme
+
+if [ "$TERM" = "linux" ]; then
+ printf %b '\e[40m' '\e[8]' # set default background to color 0 'dracula-bg'
+ printf %b '\e[37m' '\e[8]' # set default foreground to color 7 'dracula-fg'
+ printf %b '\e]P0282a36' # redefine 'black' as 'dracula-bg'
+ printf %b '\e]P86272a4' # redefine 'bright-black' as 'dracula-comment'
+ printf %b '\e]P1ff5555' # redefine 'red' as 'dracula-red'
+ printf %b '\e]P9ff7777' # redefine 'bright-red' as '#ff7777'
+ printf %b '\e]P250fa7b' # redefine 'green' as 'dracula-green'
+ printf %b '\e]PA70fa9b' # redefine 'bright-green' as '#70fa9b'
+ printf %b '\e]P3f1fa8c' # redefine 'brown' as 'dracula-yellow'
+ printf %b '\e]PBffb86c' # redefine 'bright-brown' as 'dracula-orange'
+ printf %b '\e]P4bd93f9' # redefine 'blue' as 'dracula-purple'
+ printf %b '\e]PCcfa9ff' # redefine 'bright-blue' as '#cfa9ff'
+ printf %b '\e]P5ff79c6' # redefine 'magenta' as 'dracula-pink'
+ printf %b '\e]PDff88e8' # redefine 'bright-magenta' as '#ff88e8'
+ printf %b '\e]P68be9fd' # redefine 'cyan' as 'dracula-cyan'
+ printf %b '\e]PE97e2ff' # redefine 'bright-cyan' as '#97e2ff'
+ printf %b '\e]P7f8f8f2' # redefine 'white' as 'dracula-fg'
+ printf %b '\e]PFffffff' # redefine 'bright-white' as '#ffffff'
+ clear
+fi
+
+# 12. FZF dracula theme
+
+export FZF_DEFAULT_OPTS='--color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4'
+
+# 13. Dracula Theme for zsh-syntax-highlighting
+
+ZSH_HIGHLIGHT_HIGHLIGHTERS=(main cursor)
+typeset -gA ZSH_HIGHLIGHT_STYLES
+
+## 13.1 General
+### 13.2 Diffs
+### 13.3 Markup
+## 13.4 Classes
+
+## 13.5 Comments
+
+ZSH_HIGHLIGHT_STYLES[comment]='fg=#6272A4'
+
+## 13.6 Constants
+## 13.7 Entitites
+
+## 13.8 Functions/methods
+
+ZSH_HIGHLIGHT_STYLES[alias]='fg=#50FA7B'
+ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=#50FA7B'
+ZSH_HIGHLIGHT_STYLES[global-alias]='fg=#50FA7B'
+ZSH_HIGHLIGHT_STYLES[function]='fg=#50FA7B'
+ZSH_HIGHLIGHT_STYLES[command]='fg=#50FA7B'
+ZSH_HIGHLIGHT_STYLES[precommand]='fg=#50FA7B,italic'
+ZSH_HIGHLIGHT_STYLES[autodirectory]='fg=#FFB86C,italic'
+ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=#FFB86C'
+ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=#FFB86C'
+ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=#BD93F9'
+## 13.9 Keywords
+
+## 13.10 Built ins
+
+ZSH_HIGHLIGHT_STYLES[builtin]='fg=#8BE9FD'
+ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#8BE9FD'
+ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=#8BE9FD'
+
+## 13.11 Punctuation
+
+ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=#FF79C6'
+ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-unquoted]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]='fg=#FF79C6'
+ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=#FF79C6'
+ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=#FF79C6'
+
+## 13.12 Serializable / Configuration Languages
+## 13.14 Storage
+
+## 13.15 Strings
+
+ZSH_HIGHLIGHT_STYLES[command-substitution-quoted]='fg=#F1FA8C'
+ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-quoted]='fg=#F1FA8C'
+ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#F1FA8C'
+ZSH_HIGHLIGHT_STYLES[single-quoted-argument-unclosed]='fg=#FF5555'
+ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#F1FA8C'
+ZSH_HIGHLIGHT_STYLES[double-quoted-argument-unclosed]='fg=#FF5555'
+ZSH_HIGHLIGHT_STYLES[rc-quote]='fg=#F1FA8C'
+
+## 13.16 Variables
+
+ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument-unclosed]='fg=#FF5555'
+ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[assign]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[named-fd]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[numeric-fd]='fg=#F8F8F2'
+
+## 13.17 No category relevant in spec
+
+ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#FF5555'
+ZSH_HIGHLIGHT_STYLES[path]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[path_pathseparator]='fg=#FF79C6'
+ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]='fg=#FF79C6'
+ZSH_HIGHLIGHT_STYLES[globbing]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=#BD93F9'
+#ZSH_HIGHLIGHT_STYLES[command-substitution]='fg=?'
+#ZSH_HIGHLIGHT_STYLES[command-substitution-unquoted]='fg=?'
+#ZSH_HIGHLIGHT_STYLES[process-substitution]='fg=?'
+#ZSH_HIGHLIGHT_STYLES[arithmetic-expansion]='fg=?'
+ZSH_HIGHLIGHT_STYLES[back-quoted-argument-unclosed]='fg=#FF5555'
+ZSH_HIGHLIGHT_STYLES[redirection]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[arg0]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[default]='fg=#F8F8F2'
+ZSH_HIGHLIGHT_STYLES[cursor]='standout'
+
+# 14. Source plugins
+
+source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh
+source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
+
+# 15. Keybinds
+
+bindkey -v '^?' backward-delete-char # Vi keybindings like God intended
+bindkey "\e[3~" delete-char
+bindkey '^[[A' history-substring-search-up
+bindkey '^[[B' history-substring-search-down
+bindkey -M vicmd 'k' history-substring-search-up
+bindkey -M vicmd 'j' history-substring-search-down