aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bashrc47
-rw-r--r--.config/alacritty/alacritty.yml92
-rwxr-xr-x.config/bspwm/bspcmd37
-rwxr-xr-x.config/bspwm/bspwmrc90
-rwxr-xr-x.config/bspwm/menu.sh64
-rw-r--r--.config/bspwm/noswallow2
-rwxr-xr-x.config/bspwm/scripts/external_rules.sh39
-rw-r--r--.config/bspwm/swallow3
-rwxr-xr-x.config/bspwm/sysmenu.sh70
-rw-r--r--.config/bspwm/terminals1
-rw-r--r--.config/dunst/dunstrc500
-rw-r--r--.config/eww/bar/main.yuck193
-rw-r--r--.config/eww/bar/style.scss16
-rw-r--r--.config/eww/dock/main.yuck94
-rw-r--r--.config/eww/dock/style.scss16
-rw-r--r--.config/eww/eww.scss21
-rw-r--r--.config/eww/eww.yuck26
-rw-r--r--.config/eww/panel/drives.yuck77
-rw-r--r--.config/eww/panel/main.yuck142
-rw-r--r--.config/eww/panel/style.scss69
-rw-r--r--.config/eww/status/main.yuck44
-rw-r--r--.config/eww/status/style.scss14
-rw-r--r--.config/kitty/kitty.conf818
-rw-r--r--.config/nvim/.gitignore (renamed from .gitignore)0
-rw-r--r--.config/nvim/README.md (renamed from README.md)0
-rw-r--r--.config/nvim/autoload/scripts.vim (renamed from autoload/scripts.vim)0
-rw-r--r--.config/nvim/init.lua (renamed from init.lua)0
-rw-r--r--.config/nvim/lua/plugins/autopairs.lua (renamed from lua/plugins/autopairs.lua)0
-rw-r--r--.config/nvim/lua/plugins/cmp-gh-source.lua (renamed from lua/plugins/cmp-gh-source.lua)0
-rw-r--r--.config/nvim/lua/plugins/cmp.lua (renamed from lua/plugins/cmp.lua)0
-rw-r--r--.config/nvim/lua/plugins/colorizer.lua (renamed from lua/plugins/colorizer.lua)0
-rw-r--r--.config/nvim/lua/plugins/colorscheme.lua (renamed from lua/plugins/colorscheme.lua)0
-rw-r--r--.config/nvim/lua/plugins/git.lua (renamed from lua/plugins/git.lua)0
-rw-r--r--.config/nvim/lua/plugins/gitsigns.lua (renamed from lua/plugins/gitsigns.lua)0
-rw-r--r--.config/nvim/lua/plugins/heirline.lua (renamed from lua/plugins/heirline.lua)0
-rw-r--r--.config/nvim/lua/plugins/lsp.lua (renamed from lua/plugins/lsp.lua)0
-rw-r--r--.config/nvim/lua/plugins/lspsaga.lua (renamed from lua/plugins/lspsaga.lua)0
-rw-r--r--.config/nvim/lua/plugins/luasnip.lua (renamed from lua/plugins/luasnip.lua)0
-rw-r--r--.config/nvim/lua/plugins/mason.lua (renamed from lua/plugins/mason.lua)0
-rw-r--r--.config/nvim/lua/plugins/modify-blend.lua (renamed from lua/plugins/modify-blend.lua)0
-rw-r--r--.config/nvim/lua/plugins/neoscroll.lua (renamed from lua/plugins/neoscroll.lua)0
-rw-r--r--.config/nvim/lua/plugins/null-ls.lua (renamed from lua/plugins/null-ls.lua)0
-rw-r--r--.config/nvim/lua/plugins/nvim-tree.lua (renamed from lua/plugins/nvim-tree.lua)0
-rw-r--r--.config/nvim/lua/plugins/prettier.lua (renamed from lua/plugins/prettier.lua)0
-rw-r--r--.config/nvim/lua/plugins/scripts/lsp-ext.lua (renamed from lua/plugins/scripts/lsp-ext.lua)0
-rw-r--r--.config/nvim/lua/plugins/scripts/setcolors.lua (renamed from lua/plugins/scripts/setcolors.lua)0
-rw-r--r--.config/nvim/lua/plugins/scripts/toggleLsp.lua (renamed from lua/plugins/scripts/toggleLsp.lua)0
-rw-r--r--.config/nvim/lua/plugins/telescope.lua (renamed from lua/plugins/telescope.lua)0
-rw-r--r--.config/nvim/lua/plugins/toggleterm.lua (renamed from lua/plugins/toggleterm.lua)0
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua (renamed from lua/plugins/treesitter.lua)0
-rw-r--r--.config/nvim/lua/plugins/web-devicons.lua (renamed from lua/plugins/web-devicons.lua)0
-rw-r--r--.config/nvim/lua/plugins/zen-mode.lua (renamed from lua/plugins/zen-mode.lua)0
-rw-r--r--.config/nvim/lua/user/keys.lua (renamed from lua/user/keys.lua)0
-rw-r--r--.config/nvim/lua/user/mods.lua (renamed from lua/user/mods.lua)0
-rw-r--r--.config/nvim/lua/user/opts.lua (renamed from lua/user/opts.lua)0
-rw-r--r--.config/nvim/lua/user/pack.lua (renamed from lua/user/pack.lua)0
-rw-r--r--.config/nvim/lua/user/utils.lua (renamed from lua/user/utils.lua)0
-rw-r--r--.config/nvim/snippets/boilerplate.lua (renamed from snippets/boilerplate.lua)0
-rw-r--r--.config/nvim/snippets/lua.lua (renamed from snippets/lua.lua)0
-rw-r--r--.config/nvim/snippets/markdown.lua (renamed from snippets/markdown.lua)0
-rw-r--r--.config/picom/picom.conf487
-rw-r--r--.config/polybar/config816
-rwxr-xr-x.config/polybar/launch.sh18
-rwxr-xr-x.config/polybar/scripts/bluetooth.sh12
-rwxr-xr-x.config/polybar/scripts/check-network.sh21
-rwxr-xr-x.config/polybar/scripts/check_updates.sh118
-rwxr-xr-x.config/polybar/scripts/cmus.sh39
-rwxr-xr-x.config/polybar/scripts/get_spotify_status.sh52
-rwxr-xr-x.config/polybar/scripts/menu.sh63
-rwxr-xr-x.config/polybar/scripts/menu.shsave63
-rwxr-xr-x.config/polybar/scripts/menu_full.sh65
-rwxr-xr-x.config/polybar/scripts/now-playing.sh217
-rwxr-xr-x.config/polybar/scripts/polybar_wrapper92
-rwxr-xr-x.config/polybar/scripts/popup-calendar.sh41
-rwxr-xr-x.config/polybar/scripts/rofi-power.sh45
-rwxr-xr-x.config/polybar/scripts/scroll_spotify_status.sh12
-rwxr-xr-x.config/polybar/scripts/sysmenu.sh40
-rwxr-xr-x.config/polybar/scripts/sysmenu.shsave40
-rwxr-xr-x.config/polybar/scripts/system-usb-mount.sh53
-rwxr-xr-x.config/polybar/scripts/toggle_bluetooth.sh8
-rwxr-xr-x.config/sxhkd/show_help.sh3
-rwxr-xr-x.config/sxhkd/sxhkdrc412
-rwxr-xr-x.config/tmux/left-status.sh24
-rwxr-xr-x.config/tmux/right-status.sh20
-rw-r--r--.config/tmux/tmux.conf306
-rw-r--r--.config/zsh/.zprofile5
-rw-r--r--.config/zsh/.zshenv155
-rw-r--r--.config/zsh/.zshrc419
-rwxr-xr-x.local/bin/scripts/Heads-Up-Display13
-rw-r--r--.local/bin/scripts/README.md1
-rwxr-xr-x.local/bin/scripts/bspwm_resize.sh67
-rwxr-xr-x.local/bin/scripts/cryptocheck31
-rwxr-xr-x.local/bin/scripts/cryptonotify19
-rwxr-xr-x.local/bin/scripts/layer.sh24
-rwxr-xr-x.local/bin/scripts/opacity-change.sh34
-rwxr-xr-x.local/bin/scripts/powermenu38
-rwxr-xr-x.local/bin/scripts/scratchpad30
-rw-r--r--.xbindkeysrc31
-rw-r--r--.xprofile43
99 files changed, 6452 insertions, 0 deletions
diff --git a/.bashrc b/.bashrc
new file mode 100644
index 0000000..0e51e42
--- /dev/null
+++ b/.bashrc
@@ -0,0 +1,47 @@
+#
+#██████╗ █████╗ ███████╗██╗ ██╗██████╗ ██████╗
+#██╔══██╗██╔══██╗██╔════╝██║ ██║██╔══██╗██╔════╝
+#██████╔╝███████║███████╗███████║██████╔╝██║
+#██╔══██╗██╔══██║╚════██║██╔══██║██╔══██╗██║
+#██████╔╝██║ ██║███████║██║ ██║██║ ██║╚██████╗
+#╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
+#
+# ~/.bashrc
+#
+
+# Get the current active terminal
+term="$(cat /proc/$PPID/comm)"
+
+# Set a default prompt
+p='\[\033[01;37m\]┌─[\[\033[01;32m\]srdusr\[\033[01;37m\]]-[\[\033[01;36m\]archlinux\[\033[01;37m\]]-[\[\033[01;33m\]\W\]\[\033[00;37m\]\[\033
+\[\033[01;37m\]└─[\[\033[05;33m\]$\[\033[00;37m\]\[\033[01;37m\]]\[\033[00;37m\] '
+
+# Set transparency and prompt while using st
+if [[ $term = "st" ]]; then
+ transset-df "0.65" --id "$WINDOWID" >/dev/null
+
+# [Your_Name]-----| |=======|------[Your_Distro]
+# [Color]--------| | [Color]------| |
+# [Style]------------| | | [Style]---------| | |
+# V V V V V V
+ p='\[\033[01;37m\]┌─[\[\033[01;32m\]srdusr\[\033[01;37m\]]-[\[\033[01;36m\]archlinux\[\033[01;37m\]]-[\[\033[01;33m\]\W\[\033[00;37m\]\[\033[01;37m\]]
+\[\033[01;37m\]└─[\[\033[05;33m\]$\[\033[00;37m\]\[\033[01;37m\]]\[\033[00;37m\] '
+# A A A
+# [Style]----| | |-------- [Your_Choice]
+# [Color]------------|
+
+fi
+
+# If not running interactively, dont do anything
+[[ $- != *i* ]] && return
+
+# My alias commands
+alias ls='ls --color=auto -1'
+alias shred='shred -uzvn3'
+alias wallset='feh --bg-fill'
+
+PS1=$p
+
+# pfetch
+. "/home/srdusr/.local/share/cargo/env"
+. "$HOME/.cargo/env"
diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml
new file mode 100644
index 0000000..6cddbeb
--- /dev/null
+++ b/.config/alacritty/alacritty.yml
@@ -0,0 +1,92 @@
+# ~/.config/alacritty/alacritty.yml
+
+
+live_config_reload: true
+
+window:
+ opacity: 0.8
+ dynamic_title: true
+ dimensions:
+ columns: 0
+ lines: 0
+
+
+ #startup_mode: SimpleFullscreen
+ #position:
+ #x: 0
+ #y: 0
+
+ padding:
+ x: 9
+ y: 9
+
+ dynamic_padding: false
+ decorations: none
+
+scrolling:
+ history: 50000
+ multiplier: 3
+
+
+
+font:
+ normal:
+ family: JetBrains Mono Medium
+ #family: UbuntuMono Nerd Font Regular
+ size: 8.5
+ #size: 8.5
+key_bindings:
+- { key: V, mods: Control, action: Paste }
+- { key: C, mods: Control, action: Copy }
+- { key: C, mods: Control|Shift, chars: "\x03" }
+- { key: N, mods: Control|Shift, action: SpawnNewInstance }
+- { key: O, mods: Control|Shift, command: { program: "opacity-change.sh", args: ["-"] } }
+- { key: P, mods: Control|Shift, command: { program: "opacity-change.sh", args: ["+"] } }
+save_to_clipboard: true
+
+colors:
+ primary:
+ background: '#000000'
+ foreground: '#FFFACD'
+ normal:
+ black: '#313539'
+ red: '#b02626'
+ green: '#40a62f'
+ yellow: '#f2e635'
+ blue: '#314ad0'
+ magenta: '#b30ad0'
+ cyan: '#32d0fc'
+ white: '#acadb1'
+ bright:
+ black: '#676f78'
+ red: '#b55454'
+ green: '#78a670'
+ yellow: '#faf380'
+ blue: '#707fd0'
+ magenta: '#c583d0'
+ cyan: '#8adaf1'
+ white: '#e0e3e7'
+
+
+#colors:
+# primary:
+# background: '#0F111A'
+# foreground: '#8F93A2'
+# normal:
+# black: '#0F111A'
+# red: '#FF5370'
+# green: '#99C794'
+# yellow: '#C4E88D'
+# blue: '#82AAFF'
+# magenta: '#C792EA'
+# cyan: '#89DDFF'
+# white: '#464B5D'
+# bright:
+# black: '#0F111A'
+# red: '#FF5370'
+# green: '#99C794'
+# yellow: '#C4E88D'
+# blue: '#82AAFF'
+# magenta: '#C792EA'
+ # cyan: '#89DDFF'
+ # white: '#8F93A2'
diff --git a/.config/bspwm/bspcmd b/.config/bspwm/bspcmd
new file mode 100755
index 0000000..94bed26
--- /dev/null
+++ b/.config/bspwm/bspcmd
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+CMD=${1:-help}; shift
+
+help() {
+ echo "Available commands:"
+ echo " * unhide - select and unhide window"
+}
+
+unhide() {
+ action=${1:-list}
+ case $action in
+ "list")
+ selection=`for id in $(bspc query -N -n .hidden); do
+ title=$(xtitle $id)
+ [[ -z "$title" ]] && title="<unnamed>"
+ echo $id $title
+ done | rofi -dmenu -i -p "Hidden windows" | cut -f1 -d' '`
+
+ [[ -z "$selection" ]] && exit 1
+
+ bspc node $selection -g hidden=off
+ ;;
+ esac
+}
+
+case $CMD in
+ "help")
+ help
+ ;;
+ "unhide")
+ unhide $1
+ ;;
+ *)
+ help
+ ;;
+esac
diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
new file mode 100755
index 0000000..9b2e393
--- /dev/null
+++ b/.config/bspwm/bspwmrc
@@ -0,0 +1,90 @@
+#! /bin/sh
+
+#░█▀▄░█▀▀░█▀█░█░█░█▄█
+#░█▀▄░▀▀█░█▀▀░█▄█░█░█
+#░▀▀░░▀▀▀░▀░░░▀░▀░▀░▀
+
+bspc monitor LVDS-1 -d 1 2 3 4 5
+bspc monitor HDMI-1 -d 6 7 8 9 0
+
+###---Global Settings---###
+bspc config automatic_scheme alternate
+bspc config initial_polarity second_child
+bspc config pointer_action1 move
+bspc config pointer_action2 resize_side
+bspc config pointer_action2 resize_corner
+bspc config focus_follows_pointer false
+bspc config remove_disabled_monitors true
+bspc config remove_unplugged_monitors true
+bspc config merge_overlapping_monitors true
+bspc config border_width 2
+bspc config window_gap 10
+bspc config split_ratio 0.52
+bspc config borderless_monocle true
+bspc config gapless_monocle true
+bspc config swallow_first_click false
+bspc config pointer_modifier mod1
+#bspc config pointer_action1 resize_side
+#bspc config pointer_action1 resize_corner
+#bspc config pointer_action3 move
+bspc config normal_border_color "#282828"
+bspc config active_border_color "#ebdbb2"
+bspc config focused_border_color "#77dd77"
+bspc config presel_feedback_color "#BF616A"
+#bspc config normal_border_color "#282828"
+#bspc config active_border_color "#ebdbb2"
+#bspc config focused_border_color "#fe8019"
+
+# remove all rules first
+bspc rule -r *:*
+
+bspc rule -a Plank layer=above border=off
+
+
+###---Autostart---####
+pgrep -x sxhkd > /dev/null || sxhkd &
+picom -b --experimental-backends &
+if [[ $(xrandr -q | grep 'HDMI-1 connected') ]]; then
+ xrandr --output LVDS-1 --primary --mode 1366x768 --rotate normal --output HDMI-1 --mode 1920x1080 --rotate normal --right-of LVDS-1
+fi
+xfce4-panel --disable-wm-check &
+"$HOME"/.config/polybar/launch.sh &
+dunst & # notification daemon
+unclutter & # Remove mouse when idle
+nitrogen --force-setter=xinerama --restore &
+bspc rule -a \* rectangle=680x700+340+40
+bspc rule -a '*:*:Picture-in-Picture' state=floating sticky=on layer=above
+bspc rule -a '*:*:Picture in picture' state=floating sticky=on layer=above
+bspc rule -a firefox:Toolkit focus=on state=floating sticky=on layer=above rectangle=320x190+1030+480
+bspc rule -a "https://www.youtube.com - Enhancer for YouTube™ — Mozilla Firefox" state=floating sticky=on layer=above
+bspc rule -a Zathura state=floating
+
+#eww daemon &
+
+# SCRATCHPAD
+bspc rule -a scratch sticky=on state=floating rectangle=575x320+393+370
+
+# Heads Up Display (scratchpad)
+bspc rule -a Heads-Up-Display sticky=on state=floating rectangle=360x160+990+40
+
+[ "$1" = 0 ] && {
+ nm-applet &
+ plank &
+}
+
+pkill xfce4-power-manager; sleep 1 && nice -n 1 xfce4-power-manager &
+pkill volumeicon; sleep 2 && nice -n 2 volumeicon &
+pkill mictray; sleep 2 && nice -n 2 mictray &
+
+bspc subscribe node_state | while read -r _ _ _ _ state flag; do
+ if [[ "$state" != fullscreen ]]; then continue; fi
+ if [[ "$flag" == on ]]; then
+ xdo lower -N Plank
+ else
+ xdo raise -N Plank
+ fi
+done &
+
+xrdb ~/.config/X11/.Xresources &
+
+bspc config external_rules_command ~/.config/bspwm/scripts/external_rules.sh
diff --git a/.config/bspwm/menu.sh b/.config/bspwm/menu.sh
new file mode 100755
index 0000000..f678ae1
--- /dev/null
+++ b/.config/bspwm/menu.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Custom Rofi Script
+
+BORDER="#1F1F1F"
+SEPARATOR="#1F1F1F"
+FOREGROUND="#A9ABB0"
+BACKGROUND="#1F1F1F"
+BACKGROUND_ALT="#252525"
+HIGHLIGHT_BACKGROUND="#1A237E"
+HIGHLIGHT_FOREGROUND="#FFFFFF"
+
+BLACK="#000000"
+WHITE="#ffffff"
+RED="#e53935"
+GREEN="#43a047"
+YELLOW="#fdd835"
+BLUE="#1e88e5"
+MAGENTA="#00897b"
+CYAN="#00acc1"
+PINK="#d81b60"
+PURPLE="#8e24aa"
+INDIGO="#3949ab"
+TEAL="#00897b"
+LIME="#c0ca33"
+AMBER="#ffb300"
+ORANGE="#fb8c00"
+BROWN="#6d4c41"
+GREY="#757575"
+BLUE_GREY="#546e7a"
+DEEP_PURPLE="#5e35b1"
+DEEP_ORANGE="#f4511e"
+LIGHT_BLUE="#039be5"
+LIGHT_GREEN="#7cb342"
+
+# Launch Rofi
+rofi -no-lazy-grab -show drun \
+-display-drun "Applications " -drun-display-format "{name}" \
+-hide-scrollbar true \
+-bw 0 \
+-lines 10 \
+-line-padding 10 \
+-padding 20 \
+-width 30 \
+-xoffset 27 -yoffset 60 \
+-location 1 \
+-columns 2 \
+-show-icons -icon-theme "Papirus" \
+-font "Fantasque Sans Mono 10" \
+-color-enabled true \
+-color-window "$BACKGROUND,$BORDER,$SEPARATOR" \
+-color-normal "$BACKGROUND_ALT,$FOREGROUND,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-active "$BACKGROUND,$MAGENTA,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-urgent "$BACKGROUND,$YELLOW,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND"
+
+# More Options
+# -fullscreen \
+
+# Theming help
+# color window = background, border, separator
+# color normal = background, foreground, background-alt, highlight-background, highlight-foreground
+# color active = background, foreground, background-alt, highlight-background, highlight-foreground
+# color urgent = background, foreground, background-alt, highlight-background, highlight-foreground
+
diff --git a/.config/bspwm/noswallow b/.config/bspwm/noswallow
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/.config/bspwm/noswallow
@@ -0,0 +1,2 @@
+
+
diff --git a/.config/bspwm/scripts/external_rules.sh b/.config/bspwm/scripts/external_rules.sh
new file mode 100755
index 0000000..74fdaa0
--- /dev/null
+++ b/.config/bspwm/scripts/external_rules.sh
@@ -0,0 +1,39 @@
+#!/bin/env bash
+
+#instance=$3
+#[!-z"$3"] && xdo raise -a polybar-bottom_LVDS-1
+#[!-z"$3"] && xdo below -a polybar-bottom_LVDS-1 -t $(xdo id -N Bspwm -n root)
+
+
+#bspc subscribe node_state | while read -r _ _ _ _ state flag; do
+# if [[ "$state" != fullscreen ]]; then continue; fi
+# if [[ "$flag" == on ]]; then
+# xdo lower -N Plank
+# else
+# xdo raise -N Plank
+# fi
+#done &
+#
+#eval $4
+#bspc query -N -d ${desktop:-focused} -n .fullscreen >/dev/null &&
+# echo layer=above
+
+
+#bspc subscribe node_state | while read -r _ _ _ _ state flag; do
+# if [[ "$state" != fullscreen ]]; then continue; fi
+# if [[ "$flag" == on ]]; then
+# xdo lower -a polybar-bottom_LVDS-1
+# else
+# xdo raise -a polybar-bottom_LVDS-1
+# fi
+#done &
+
+# Allow any type of window to ignore fullscreen windows (allow fullscreen to
+# stay)
+wid="$1"
+class="$2"
+instance="$3"
+eval "$4"
+
+[[ "$state" = floating ]] \
+ && echo 'layer=above'
diff --git a/.config/bspwm/swallow b/.config/bspwm/swallow
new file mode 100644
index 0000000..21b7f00
--- /dev/null
+++ b/.config/bspwm/swallow
@@ -0,0 +1,3 @@
+sxiv
+Sxiv
+zathura
diff --git a/.config/bspwm/sysmenu.sh b/.config/bspwm/sysmenu.sh
new file mode 100755
index 0000000..1bdc35e
--- /dev/null
+++ b/.config/bspwm/sysmenu.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+# Custom Rofi Script
+
+BORDER="#1F1F1F"
+SEPARATOR="#1F1F1F"
+FOREGROUND="#A9ABB0"
+BACKGROUND="#1F1F1F"
+BACKGROUND_ALT="#252525"
+HIGHLIGHT_BACKGROUND="#1A237E"
+HIGHLIGHT_FOREGROUND="#FFFFFF"
+
+BLACK="#000000"
+WHITE="#ffffff"
+RED="#e53935"
+GREEN="#43a047"
+YELLOW="#fdd835"
+BLUE="#1e88e5"
+MAGENTA="#00897b"
+CYAN="#00acc1"
+PINK="#d81b60"
+PURPLE="#8e24aa"
+INDIGO="#3949ab"
+TEAL="#00897b"
+LIME="#c0ca33"
+AMBER="#ffb300"
+ORANGE="#fb8c00"
+BROWN="#6d4c41"
+GREY="#757575"
+BLUE_GREY="#546e7a"
+DEEP_PURPLE="#5e35b1"
+DEEP_ORANGE="#f4511e"
+LIGHT_BLUE="#039be5"
+LIGHT_GREEN="#7cb342"
+
+# Launch Rofi
+MENU="$(rofi -no-lazy-grab -sep "|" -dmenu -i -p 'System :' \
+-hide-scrollbar true \
+-bw 0 \
+-lines 4 \
+-line-padding 10 \
+-padding 20 \
+-width 15 \
+-xoffset -27 -yoffset 60 \
+-location 3 \
+-columns 1 \
+-show-icons -icon-theme "Papirus" \
+-font "Fantasque Sans Mono 10" \
+-color-enabled true \
+-color-window "$BACKGROUND,$BORDER,$SEPARATOR" \
+-color-normal "$BACKGROUND_ALT,$FOREGROUND,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-active "$BACKGROUND,$MAGENTA,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-urgent "$BACKGROUND,$YELLOW,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+<<< " Lock| Logout| Reboot| Shutdown")"
+case "$MENU" in
+ *Lock) i3lock -c 282a36 -n ;;
+ *Logout) openbox --exit;;
+ *Reboot) sudo reboot ;;
+ *Shutdown) sudo shutdown -r now
+esac
+
+# More Options
+# -fullscreen \
+
+# Theming help
+# color window = background, border, separator
+# color normal = background, foreground, background-alt, highlight-background, highlight-foreground
+# color active = background, foreground, background-alt, highlight-background, highlight-foreground
+# color urgent = background, foreground, background-alt, highlight-background, highlight-foreground
+
diff --git a/.config/bspwm/terminals b/.config/bspwm/terminals
new file mode 100644
index 0000000..414337e
--- /dev/null
+++ b/.config/bspwm/terminals
@@ -0,0 +1 @@
+Alacritty
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..b9cf04f
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,500 @@
+# See dunst(5) for all configuration options
+
+[global]
+ ### Display ###
+
+ # Which monitor should the notifications be displayed on.
+ monitor = 0
+
+ # Display notification on focused monitor. Possible modes are:
+ # mouse: follow mouse pointer
+ # keyboard: follow window with keyboard focus
+ # none: don't follow anything
+ #
+ # "keyboard" needs a window manager that exports the
+ # _NET_ACTIVE_WINDOW property.
+ # This should be the case for almost all modern window managers.
+ #
+ # If this option is set to mouse or keyboard, the monitor option
+ # will be ignored.
+ follow = mouse
+
+ # The geometry of the window:
+ #[{width}]x{height}[+/-{x}+/-{y}]
+ # The geometry of the message window.
+ # The height is measured in number of notifications everything else
+ # in pixels. If the width is omitted but the height is given
+ # ("-geometry x2"), the message window expands over the whole screen
+ # (dmenu-like). If width is 0, the window expands to the longest
+ # message displayed. A positive x is measured from the left, a
+ # negative from the right side of the screen. Y is measured from
+ # the top and down respectively.
+ # The width can be negative. In this case the actual width is the
+ # screen width minus the width defined in within the geometry option.
+ geometry = "300x5-7+30"
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Turn on the progess bar. It appears when a progress hint is passed with
+ # for example dunstify -h int:value:12
+ progress_bar = true
+
+ # Set the progress bar height. This includes the frame, so make sure
+ # it's at least twice as big as the frame width.
+ progress_bar_height = 10
+
+ # Set the frame width of the progress bar
+ progress_bar_frame_width = 1
+
+ # Set the minimum width for the progress bar
+ progress_bar_min_width = 150
+
+ # Set the maximum width for the progress bar
+ progress_bar_max_width = 300
+
+
+ # Show how many messages are currently hidden (because of geometry).
+ indicate_hidden = yes
+
+ # Shrink window if it's smaller than the width. Will be ignored if
+ # width is 0.
+ shrink = no
+
+ # The transparency of the window. Range: [0; 100].
+ # This option will only work if a compositing window manager is
+ # present (e.g. xcompmgr, compiz, etc.). (X11 only)
+ transparency = 0
+
+ # The height of the entire notification. If the height is smaller
+ # than the font height and padding combined, it will be raised
+ # to the font height and padding.
+ notification_height = 45
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ separator_height = 2
+
+ # Padding between text and separator.
+ padding = 8
+
+ # Horizontal padding.
+ horizontal_padding = 15
+
+ # Padding between text and icon.
+ text_icon_padding = 12
+
+ # Defines width in pixels of frame around the notification window.
+ # Set to 0 to disable.
+ frame_width = 3
+
+ # Defines color of the frame around the notification window.
+ frame_color = "#f0f2f5"
+ #frame_color = "#2E3440"
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ # idle_threshold = 120
+
+ ### Text ###
+
+ font = UbuntuMono Nerd Font 9
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 0
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # <b>bold</b>
+ # <i>italic</i>
+ # <s>strikethrough</s>
+ # <u>underline</u>
+ #
+ # For a complete reference see
+ # <https://developer.gnome.org/pango/stable/pango-Markup.html>.
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = strip
+ show_indicators = false
+
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "<b>%s</b>\n%b"
+
+ # Alignment of message text.
+ # Possible values are "left", "center" and "right".
+ alignment = left
+
+ # Vertical alignment of message text and icon.
+ # Possible values are "top", "center" and "bottom".
+ vertical_alignment = top
+
+ # Show age of message if message is older than show_age_threshold
+ # seconds.
+ # Set to -1 to disable.
+ show_age_threshold = 60
+
+ # Split notifications into multiple lines if they don't fit into
+ # geometry.
+ word_wrap = yes
+
+ # When word_wrap is set to no, specify where to make an ellipsis in long lines.
+ # Possible values are "start", "middle" and "end".
+ ellipsize = middle
+
+ # Ignore newlines '\n' in notifications.
+ ignore_newline = no
+
+ # Stack together notifications with the same content
+ stack_duplicates = true
+
+ # Hide the count of stacked notifications with the same content
+ hide_duplicate_count = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = false
+
+ ### Icons ###
+
+ # Align icons left/right/off
+ icon_position = left
+
+ # Scale small icons up to this size, set to 0 to disable. Helpful
+ # for e.g. small files or high-dpi screens. In case of conflict,
+ # max_icon_size takes precedence over this.
+ min_icon_size = 0
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 32
+
+ # Paths to default icons.
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 20
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = /usr/bin/dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/brave -new-tab
+
+ # Always run rule-defined scripts, even if the notification is suppressed
+ always_run_script = true
+
+ # Define the title of the windows spawned by dunst
+ title = Dunst
+
+ # Define the class of the windows spawned by dunst
+ class = Dunst
+
+ # Print a notification on startup.
+ # This is mainly for error detection, since dbus (re-)starts dunst
+ # automatically after a crash.
+ startup_notification = false
+
+ # Manage dunst's desire for talking
+ # Can be one of the following values:
+ # crit: Critical features. Dunst aborts
+ # warn: Only non-fatal warnings
+ # mesg: Important Messages
+ # info: all unimportant stuff
+ # debug: all less than unimportant stuff
+ verbosity = mesg
+
+ # Define the corner radius of the notification window
+ # in pixel size. If the radius is 0, you have no rounded
+ # corners.
+ # The radius will be automatically lowered if it exceeds half of the
+ # notification height to avoid clipping text and/or icons.
+ corner_radius = 0
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = close_all
+ mouse_right_click = do_action
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#00101212"
+ #background = "#fafafa"
+ foreground = "#CECCC9"
+ #foreground = "#2e2e2e"
+ timeout = 5
+ # Icon for notifications with low urgency, uncomment to enable
+ #icon = /path/to/icon
+
+[urgency_normal]
+ background = "#00101212"
+ #background = "#fafafa"
+ foreground = "#CECCC9"
+ #foreground = "#2e2e2e"
+ timeout = 10
+ # Icon for notifications with normal urgency, uncomment to enable
+ #icon = /path/to/icon
+
+[urgency_critical]
+ background = "#00101212"
+ background = "#fafafa"
+ foreground = "#CECCC9"
+ #foreground = "#2e2e2e"
+ frame_color = #a1dde7
+ timeout = 30
+ # Icon for notifications with critical urgency, uncomment to enable
+ #icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# timeout
+# urgency
+# action_name
+#
+# Shell-like globbing will get expanded.
+#
+# Instead of the appname filter, it's recommended to use the desktop_entry filter.
+# GLib based applications export their desktop-entry name. In comparison to the appname,
+# the desktop-entry won't get localized.
+#
+# SCRIPTING
+# You can specify a script that gets run when the rule matches by
+# setting the "script" option.
+# The script will be called as follows:
+# script appname summary body icon urgency
+# where urgency can be "LOW", "NORMAL" or "CRITICAL".
+#
+# NOTE: if you don't want a notification to be displayed, set the format
+# to "".
+# NOTE: It might be helpful to run dunst -print in a terminal in order
+# to find fitting options for rules.
+
+# Disable the transient hint so that idle_threshold cannot be bypassed from the
+# client
+#[transient_disable]
+# match_transient = yes
+# set_transient = no
+#
+# Make the handling of transient notifications more strict by making them not
+# be placed in history.
+#[transient_history_ignore]
+# match_transient = yes
+# history_ignore = yes
+
+# fullscreen values
+# show: show the notifications, regardless if there is a fullscreen window opened
+# delay: displays the new notification, if there is no fullscreen window active
+# If the notification is already drawn, it won't get undrawn.
+# pushback: same as delay, but when switching into fullscreen, the notification will get
+# withdrawn from screen again and will get delayed like a new notification
+#[fullscreen_delay_everything]
+# fullscreen = delay
+#[fullscreen_show_critical]
+# msg_urgency = critical
+# fullscreen = show
+
+#[espeak]
+# summary = "*"
+# script = dunst_espeak.sh
+
+#[script-test]
+# summary = "*script*"
+# script = dunst_test.sh
+
+#[ignore]
+# # This notification will not be displayed
+# summary = "foobar"
+# format = ""
+
+#[history-ignore]
+# # This notification will not be saved in history
+# summary = "foobar"
+# history_ignore = yes
+
+#[skip-display]
+# # This notification will not be displayed, but will be included in the history
+# summary = "foobar"
+# skip_display = yes
+
+#[signed_on]
+# appname = Pidgin
+# summary = "*signed on*"
+# urgency = low
+#
+#[signed_off]
+# appname = Pidgin
+# summary = *signed off*
+# urgency = low
+#
+#[says]
+# appname = Pidgin
+# summary = *says*
+# urgency = critical
+#
+#[twitter]
+# appname = Pidgin
+# summary = *twitter.com*
+# urgency = normal
+[spotify]
+ appname = Spotify
+ Summary = *Song*
+ urgency = critical
+ background = "#00101212"
+ #background = "#fafafa"
+ foreground = "#CECCC9"
+ #foreground = "#2e2e2e"
+
+[Telegram]
+ appname = Telegram
+ summary = *New msg*
+ urgency = critical
+ background = "#00101212"
+ #background = "#fafafa"
+ foreground = "#CECCC9"
+ #foreground = "#2e2e2e"
+
+[Discord]
+ appname = Discord
+ Summary = *Ping*
+ urgency = critical
+ background = "#00101212"
+ #background = "#fafafa"
+ foreground = "#CECCC9"
+ #foreground = "#2e2e2e"
+
+
+
+[Brave]
+ appname = Brave
+ Summary = *Notification*
+ urgency = critical
+ background = "#00101212"
+ #background = "#fafafa"
+ foreground = "#CECCC9"
+ #foreground = "#2e2e2e"
+
+
+#
+#[stack-volumes]
+# appname = "some_volume_notifiers"
+# set_stack_tag = "volume"
+
+#
+# vim: ft=cfg
diff --git a/.config/eww/bar/main.yuck b/.config/eww/bar/main.yuck
new file mode 100644
index 0000000..a379ace
--- /dev/null
+++ b/.config/eww/bar/main.yuck
@@ -0,0 +1,193 @@
+(defwindow bar
+ :monitor 0
+ :geometry (geometry :x -28 :y 0 :anchor "center right")
+(bar))
+
+(defwidget bar []
+ (box
+ :class "bar"
+ :orientation "v"
+ :space-evenly false
+ (bar-group
+ (bar-item-center-window)
+ (bar-item-resize-ratio)
+ (bar-item-resize)
+ (bar-item-toggle-floaty)
+ (bar-item-close-window)
+ )
+ (bar-group
+ (bar-item-balance)
+ (bar-item-rotate)
+ (bar-item-focus-parent)
+ )
+ (bar-group
+ (bar-item-toggle-borders)
+ (bar-item-toggle-hidden)
+ (bar-item-toggle-monocle)
+ )
+ (bar-group
+ (bar-item-empty-desktop)
+ (bar-item-cycle-desktops)
+ )
+ (bar-group
+ ;(bar-item-clipboard)
+ (bar-item-screenshot)
+ (bar-item-power)
+ )
+ )
+)
+
+(defwidget bar-group []
+ (box
+ :class "bar-group"
+ :orientation "v"
+ (children)
+ )
+)
+
+(defwidget bar-item [icon ?color ?lclick ?rclick]
+ (box
+ :class "bar-item"
+ (eventbox
+ :onscroll "resize-window {}"
+ (button
+ :onclick lclick
+ :onrightclick rclick
+ ;:timeout 200
+ (icon :name icon :color color)
+ )
+ )
+ )
+)
+
+(defwidget bar-item-balance []
+ (bar-item
+ :icon "columns"
+ :color "yellow"
+ :lclick "bspc node @/ -B"
+ )
+)
+
+(defwidget bar-item-center-window []
+ (bar-item
+ :icon "minimize"
+ :color "yellow"
+ :lclick "center-window"
+ )
+)
+
+(defwidget bar-item-clipboard []
+ (bar-item
+ :icon "clipboard"
+ :color "yellow"
+ )
+)
+
+(defwidget bar-item-close-window []
+ (bar-item
+ :icon "x-circle"
+ :color "red"
+ :lclick "close-window"
+ )
+)
+
+(defwidget bar-item-cycle-desktops []
+ (bar-item
+ :icon "skip-forward"
+ :color "blue"
+ :lclick "show-desktop next"
+ :rclick "show-desktop prev"
+ )
+)
+
+(defwidget bar-item-empty-desktop []
+ (bar-item
+ :icon "plus-circle"
+ :color "green"
+ :lclick "show-desktop empty"
+ )
+)
+
+(defwidget bar-item-focus-parent []
+ (bar-item
+ :icon "arrow-up-circle"
+ :color "blue"
+ :lclick "bspc node -f @parent"
+ )
+)
+
+(defwidget bar-item-power []
+ (bar-item
+ :icon "power"
+ :color "red"
+ :lclick "shut-down"
+ )
+)
+
+(defwidget bar-item-resize []
+ (bar-item
+ :icon "maximize-2"
+ :color "blue"
+ :lclick "bspc node -z top_left -16 -9 \
+ && bspc node -z bottom_right 16 9"
+ :rclick "bspc node -z top_left 16 9 \
+ && bspc node -z bottom_right -16 -9"
+ )
+)
+
+(defwidget bar-item-resize-ratio []
+ (bar-item
+ :icon "youtube"
+ :color "green"
+ :lclick "resize-ratio 16 9"
+ )
+)
+
+(defwidget bar-item-rotate []
+ (bar-item
+ :icon "rotate-cw"
+ :color "green"
+ :lclick "bspc node -R 90"
+ )
+)
+
+(defwidget bar-item-screenshot []
+ (bar-item
+ :icon "camera"
+ :color "purple"
+ :lclick "notify hello"
+ :rclick "scrot -s -l mode=edge,width=7,color=\"#FFFFFF\",opacity=20 -e 'mv $f ~/unsorted/screenshots'"
+ )
+)
+
+(defwidget bar-item-toggle-borders []
+ (bar-item
+ :icon "maximize"
+ :icon {disableBorders ? "square" : "maximize"}
+ :color "purple"
+ :lclick "toggle-borders"
+ )
+)
+
+(defwidget bar-item-toggle-floaty []
+ (bar-item
+ :icon {focusIsFloaty ? "corner-left-down" : "corner-right-up"}
+ :color "purple"
+ :lclick "toggle-floaty"
+ )
+)
+
+(defwidget bar-item-toggle-hidden []
+ (bar-item
+ :icon "eye"
+ :color "red"
+ :lclick "toggle-hidden"
+ )
+)
+(defwidget bar-item-toggle-monocle []
+ (bar-item
+ :icon {monocleMode ? "zoom-out" : "zoom-in"}
+ :color "yellow"
+ :lclick "toggle-monocle"
+ )
+)
diff --git a/.config/eww/bar/style.scss b/.config/eww/bar/style.scss
new file mode 100644
index 0000000..121cd12
--- /dev/null
+++ b/.config/eww/bar/style.scss
@@ -0,0 +1,16 @@
+.bar {
+ background-color: $borderColor;
+ // border: $borderSize solid $borderColor;
+ padding: $borderSize 0 0 0;
+}
+
+.bar-group {
+ background-color: $bgColor;
+ border-radius: $borderRadius;
+ margin: 0 $borderSize $borderSize $borderSize;
+ padding: 7;
+}
+
+.bar-item {
+ padding: 7;
+}
diff --git a/.config/eww/dock/main.yuck b/.config/eww/dock/main.yuck
new file mode 100644
index 0000000..a3ec73f
--- /dev/null
+++ b/.config/eww/dock/main.yuck
@@ -0,0 +1,94 @@
+(defwindow dock
+ :monitor 0
+ :geometry (geometry :x 0 :y -28 :anchor "bottom center")
+ (dock))
+
+(defwidget dock []
+ (box
+ :class "dock"
+ :space-evenly false
+ (dock-group
+ (dock-item
+ :icon "firefox"
+ :lclick "quick-app -c firefox -i Navigator&"
+ :rclick "firefox&"
+ )
+ (dock-item
+ :icon "nautilus"
+ :lclick "quick-app -c Thunar -f thunar ~/unsorted"
+ )
+ (dock-item
+ :icon "terminal"
+ :lclick "quick-app -c kitty -i quick -f kitty --name quick"
+ :rclick "cd ~ && kitty&"
+ )
+ )
+ (dock-group
+ (dock-item
+ :icon "email"
+ )
+ (dock-item
+ :icon "telegram"
+ :lclick "quick-app -c TelegramDesktop -f telegram-desktop"
+ )
+ (dock-item
+ :icon "weechat"
+ )
+ (dock-item
+ :icon "discord-development"
+ :lclick "quick-app -c discord -f"
+ )
+ )
+ (dock-group
+ (dock-item
+ :icon "preferences-desktop-color"
+ ;:icon "openrgb"
+ ;:icon "gcolor3"
+ :lclick "quick-app -c Gcolor3 -f gcolor3"
+ )
+ (dock-item
+ :icon "gnome-calculator"
+ :lclick "quick-app -c gnome-calculator -f"
+ )
+ (dock-item
+ :icon "easyeffects"
+ :lclick "quick-app -c easyeffects -f"
+ )
+ (dock-item
+ :icon "obs"
+ :lclick "quick-app -c obs -f"
+ )
+ (dock-item
+ :icon "deepin-music-player"
+ )
+ )
+ (dock-group
+ (dock-item :icon "youtube" :lclick "quick-app -c mpv&")
+ (dock-item
+ :icon "steam"
+ :lclick "quick-app -c Steam steam&"
+ )
+ (dock-item :icon "blender" :lclick "quick-app -c Blender blender&")
+ (dock-item :icon "godot" :lclick "quick-app -c Godot -f godot&")
+ (dock-item :icon "inkscape" :lclick "quick-app -c Inkscape inkscape&")
+ )
+ )
+)
+
+(defwidget dock-group []
+ (box
+ :class "dock-group"
+ (children)
+ )
+)
+
+(defwidget dock-item [icon ?lclick ?rclick]
+ (box
+ :class "dock-item"
+ (button
+ :onclick lclick
+ :onrightclick rclick
+ (image :path "${appIcons}${icon}.svg")
+ )
+ )
+)
diff --git a/.config/eww/dock/style.scss b/.config/eww/dock/style.scss
new file mode 100644
index 0000000..4cc4515
--- /dev/null
+++ b/.config/eww/dock/style.scss
@@ -0,0 +1,16 @@
+.dock {
+ background-color: $borderColor;
+ // border: $borderSize solid $borderColor;
+ padding: 0 0 0 $borderSize;
+}
+
+.dock-group {
+ background-color: $bgColor;
+ border-radius: $borderRadius;
+ margin: $borderSize $borderSize $borderSize 0;
+ padding: 5;
+}
+
+.dock-item {
+ padding: 5;
+}
diff --git a/.config/eww/eww.scss b/.config/eww/eww.scss
new file mode 100644
index 0000000..3c46de1
--- /dev/null
+++ b/.config/eww/eww.scss
@@ -0,0 +1,21 @@
+$borderColor: #24283b;
+$borderRadius: 5px;
+$borderSize: 5px;
+$bgColor: #1a1b26;
+$fgColor: #c0caf5;
+
+* {
+ all: unset;
+ color: $fgColor;
+}
+
+// .window {
+// background-color: $bgColor;
+// border: $borderSize solid $borderColor;
+// color: $fgColor;
+// }
+
+@import "bar/style.scss";
+@import "dock/style.scss";
+@import "panel/style.scss";
+@import "status/style.scss";
diff --git a/.config/eww/eww.yuck b/.config/eww/eww.yuck
new file mode 100644
index 0000000..fbd1bc3
--- /dev/null
+++ b/.config/eww/eww.yuck
@@ -0,0 +1,26 @@
+(defvar appIcons "/usr/share/icons/Papirus-Dark/48x48/apps/")
+(defvar barIcons "/home/sxrdusr/.local/share/icons/feather-icons/")
+
+(defvar disableBorders false)
+(defvar externalMonitor false)
+(defvar focusIsFloaty false)
+(defvar monocleMode false)
+(defvar ultrawide true)
+(defvar brightness 10)
+(defvar nightlight 0)
+(defvar volume 10)
+
+(defpoll date :interval "1m" "date '+%B %d'")
+(defpoll time :interval "2s" "date '+%H:%M'")
+
+(defwidget icon [name ?color ?size]
+ (image
+ :image-width {size?:20}
+ :path "${barIcons}/${color?:'white'}/${name}.svg"
+ )
+)
+
+(include "bar/main.yuck")
+(include "dock/main.yuck")
+(include "panel/main.yuck")
+(include "status/main.yuck")
diff --git a/.config/eww/panel/drives.yuck b/.config/eww/panel/drives.yuck
new file mode 100644
index 0000000..122f0d8
--- /dev/null
+++ b/.config/eww/panel/drives.yuck
@@ -0,0 +1,77 @@
+(defwidget dock-drives []
+ (box
+ :orientation "v"
+ (disk
+ :label "System"
+ :mount "/"
+ :space "100"
+ )
+ (disk
+ :label "SSD 1"
+ :mount "/mnt/ssd250"
+ :space "250"
+ )
+ (disk
+ :label "SSD 2"
+ :mount "/mnt/games"
+ :space "250"
+ )
+ (disk
+ :label "HDD"
+ :mount "/mnt/hdd500"
+ :space "500"
+ )
+ (disk
+ :label "RAID"
+ :mount "/mnt/raid"
+ :space "3000"
+ )
+ )
+)
+
+(defwidget disk [label mount space]
+ (eventbox
+ :class "disk-wrapper"
+ (button
+ :onclick "quick file ${mount}"
+ (box
+ :class "disk"
+ :space-evenly false
+ (box
+ :class "disk-icon"
+ :width 30
+ (image :path "/home/edwin/workspace/icons/hard-drive.svg")
+ )
+ (box
+ :class "disk-usage"
+ :orientation "v"
+ :spacing 3
+ :space-evenly false
+ (box
+ :class "disk-usage-text"
+ :width 140
+ (box
+ :halign "start"
+ :valign "start"
+ label
+ )
+ (box
+ :halign "end"
+ :valign "end"
+ :hexpand true
+ :vexpand true
+ "${round(EWW_DISK[mount].free/1000000000, 0)} GB"
+ )
+ )
+ (scale
+ :class "disk-usage-bar"
+ :marks "false"
+ :max 100
+ :min 0
+ :value {EWW_DISK[mount].used_perc}
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/.config/eww/panel/main.yuck b/.config/eww/panel/main.yuck
new file mode 100644
index 0000000..ac8b559
--- /dev/null
+++ b/.config/eww/panel/main.yuck
@@ -0,0 +1,142 @@
+(defwindow panel
+ :monitor 0
+ :geometry (geometry :x 28 :y 0 :anchor "center left")
+ (panel))
+
+(defwidget panel []
+ (box
+ :class "panel"
+ :orientation "v"
+ :space-evenly false
+ (panel-audio)
+ (panel-video)
+ )
+)
+
+; Panel Items
+
+(defwidget panel-buttons []
+ (box
+ :class "panel-buttons"
+ :space-evenly false
+ (children)
+ )
+)
+
+(defwidget panel-checkbox [?change text ?value]
+ (button
+ :onclick change
+ (box
+ :class "panel-checkbox"
+ :space-evenly false
+ (icon :name {value ? "check-square" : "square"})
+ text
+ )
+ )
+)
+
+(defwidget panel-slider [icon ?setter ?value]
+ (eventbox
+ ;:onscroll setter
+ (box
+ :space-evenly false
+ (icon :name icon)
+ (scale
+ :class "panel-slider"
+ :min 0
+ :max 11
+ :onchange setter
+ :value value
+ )
+ )
+ )
+)
+
+; Panel Sections
+
+(defwidget panel-section [color icon title]
+ (box
+ :class "panel-section"
+ :orientation "v"
+ :space-evenly false
+ (box
+ :class "panel-header"
+ :spacing 10
+ :space-evenly false
+ (icon :name icon :color color)
+ title
+ )
+ (box
+ :orientation "v"
+ :space-evenly false
+ :spacing 14
+ (children)
+ )
+ )
+)
+
+(defwidget panel-audio []
+ (panel-section
+ :color "green"
+ :icon "sliders"
+ :title "Audio"
+
+ ; audio device
+ (panel-buttons
+ (button :onclick "set-output -a pci-0000_00_1b" "Bar")
+ (button :onclick "set-output -a stereo-game" "Headset")
+ (button :onclick "set-output -a HD3" "Speakers")
+ )
+
+ ; volume slider
+ (panel-slider
+ :icon "volume-2"
+ :setter "set-volume {}"
+ :value volume
+ )
+ )
+)
+
+(defwidget panel-video []
+ (panel-section
+ :color "red"
+ :icon "monitor"
+ :title "Video"
+
+ ; wallpaper setter
+ (eventbox
+ :ondropped "set-wallpaper {}"
+ (button
+ :onclick "quick-app -c Thunar -f \
+ && thunar /home/edwin/.local/share/backgrounds"
+ (image
+ :class "panel-wallpaper"
+ :path "/home/edwin/.config/wallpaper"
+ :image-height 108
+ :image-width 256
+ )
+ )
+ )
+
+ ; brightness slider
+ (panel-slider
+ :icon "sun"
+ :setter "set-brightness {}"
+ :value brightness
+ )
+
+ ; external monitor
+ (panel-checkbox
+ :change "set-output -e ${!externalMonitor}"
+ :text "External Monitor"
+ :value externalMonitor
+ )
+
+ ; ultrawide resolution
+ (panel-checkbox
+ :change "set-output -u ${!ultrawide}"
+ :text "Ultrawide Resolution"
+ :value ultrawide
+ )
+ )
+)
diff --git a/.config/eww/panel/style.scss b/.config/eww/panel/style.scss
new file mode 100644
index 0000000..0f39959
--- /dev/null
+++ b/.config/eww/panel/style.scss
@@ -0,0 +1,69 @@
+.panel {
+ background-color: $borderColor;
+ padding: $borderSize;
+
+ .button {
+ background-color: $borderColor;
+ border-radius: $borderRadius;
+ margin-left: 10;
+ padding: 8;
+
+ &:first-child {
+ margin-left: 0;
+ }
+ }
+}
+
+.panel-buttons {
+ button {
+ background-color: $borderColor;
+ border-radius: $borderRadius;
+ margin-left: 14;
+ padding: 7 9;
+
+ &:first-child {
+ margin-left: 0;
+ }
+ }
+}
+
+.panel-checkbox {
+ image {
+ margin-right: 10;
+ }
+}
+
+.panel-header {
+ margin-bottom: 14;
+}
+
+.panel-section {
+ background-color: $bgColor;
+ border-radius: $borderRadius;
+ margin-top: $borderSize;
+ padding: 14;
+
+ &:first-child {
+ margin-top: 0;
+ }
+}
+
+.panel-slider {
+ margin-left: 10;
+
+ trough {
+ background-color: $borderColor;
+ border-radius: 5;
+ min-height: 10px;
+ min-width: 232px;
+
+ highlight {
+ border-radius: 5;
+ background-color: #414868;
+ }
+ }
+}
+
+.panel-wallpaper {
+ border: 3px solid $borderColor;
+}
diff --git a/.config/eww/status/main.yuck b/.config/eww/status/main.yuck
new file mode 100644
index 0000000..c6ebd3e
--- /dev/null
+++ b/.config/eww/status/main.yuck
@@ -0,0 +1,44 @@
+; windows
+(defwindow status
+ :monitor 0
+ :geometry (geometry :x 0 :y 28 :anchor "top center")
+ (status))
+
+(defwidget status []
+ (box
+ :class "status"
+ :space-evenly false
+ :spacing 5
+ (status-item :color "green" :icon "clock" :text time)
+ (status-item :color "yellow" :icon "calendar" :text date)
+ (status-item
+ :color "red"
+ :icon "thermometer"
+ :text "${EWW_TEMPS["CPU"]}°"
+ )
+ (status-item
+ :color "blue"
+ :icon "cpu"
+ :text "${round(EWW_CPU["avg"],0)}%"
+ )
+ (status-item
+ :color "purple"
+ :icon "database"
+ :text "${round(EWW_RAM["used_mem_perc"],0)}%"
+ )
+ )
+)
+
+(defwidget status-item [icon ?color text]
+ (box
+ :class "status-item"
+ :space-evenly false
+ :spacing 7
+ (icon :color color :name icon)
+ text
+ )
+)
+
+(defwidget status-seperator []
+ (box :class "status-seperator")
+)
diff --git a/.config/eww/status/style.scss b/.config/eww/status/style.scss
new file mode 100644
index 0000000..a31257e
--- /dev/null
+++ b/.config/eww/status/style.scss
@@ -0,0 +1,14 @@
+.status {
+ background-color: $borderColor;
+ border: $borderSize solid $borderColor;
+}
+
+.status-item {
+ background-color: $bgColor;
+ border-radius: $borderRadius;
+ font-family: "Inter";
+ font-size: 13;
+ font-weight: 700;
+ min-width: 60px;
+ padding: 7;
+}
diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf
new file mode 100644
index 0000000..c4e26eb
--- /dev/null
+++ b/.config/kitty/kitty.conf
@@ -0,0 +1,818 @@
+
+# vim:fileencoding=utf-8:ft=conf:foldmethod=marker
+
+#: Fonts {{{
+
+#: kitty has very powerful font management. You can configure
+#: individual font faces and even specify special fonts for particular
+#: characters.
+
+font_family JetBrains Mono Medium
+bold_font auto
+italic_font auto
+bold_italic_font auto
+
+#: You can specify different fonts for the bold/italic/bold-italic
+#: variants. By default they are derived automatically, by the OSes
+#: font system. Setting them manually is useful for font families that
+#: have many weight variants like Book, Medium, Thick, etc. For
+#: example:
+
+#: font_family Operator Mono Book
+#: bold_font Operator Mono Medium
+#: italic_font Operator Mono Book Italic
+#: bold_italic_font Operator Mono Medium Italic
+
+font_size 11.0
+
+#: Font size (in pts)
+
+# adjust_line_height 0
+# adjust_column_width 0
+
+#: Change the size of each character cell kitty renders. You can use
+#: either numbers, which are interpreted as pixels or percentages
+#: (number followed by %), which are interpreted as percentages of the
+#: unmodified values. You can use negative pixels or percentages less
+#: than 100% to reduce sizes (but this might cause rendering
+#: artifacts).
+
+# symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols
+
+#: Map the specified unicode codepoints to a particular font. Useful
+#: if you need special rendering for some symbols, such as for
+#: Powerline. Avoids the need for patched fonts. Each unicode code
+#: point is specified in the form U+<code point in hexadecimal>. You
+#: can specify multiple code points, separated by commas and ranges
+#: separated by hyphens. symbol_map itself can be specified multiple
+#: times. Syntax is::
+
+#: symbol_map codepoints Font Family Name
+
+# box_drawing_scale 0.001, 1, 1.5, 2
+
+#: Change the sizes of the lines used for the box drawing unicode
+#: characters These values are in pts. They will be scaled by the
+#: monitor DPI to arrive at a pixel value. There must be four values
+#: corresponding to thin, normal, thick, and very thick lines.
+
+#: }}}
+
+#: Cursor customization {{{
+
+# cursor magenta
+cursor white
+
+#: Default cursor color
+
+# cursor_shape block
+
+#: The cursor shape can be one of (block, beam, underline)
+
+cursor_blink_interval 0.5
+cursor_stop_blinking_after 15.0
+
+#: The interval (in seconds) at which to blink the cursor. Set to zero
+#: to disable blinking. Note that numbers smaller than repaint_delay
+#: will be limited to repaint_delay. Stop blinking cursor after the
+#: specified number of seconds of keyboard inactivity. Set to zero to
+#: never stop blinking.
+
+#: }}}
+
+#: Scrollback {{{
+
+scrollback_lines 20000
+
+#: Number of lines of history to keep in memory for scrolling back.
+#: Memory is allocated on demand.
+
+# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
+
+#: Program with which to view scrollback in a new window. The
+#: scrollback buffer is passed as STDIN to this program. If you change
+#: it, make sure the program you use can handle ANSI escape sequences
+#: for colors and text formatting. INPUT_LINE_NUMBER in the command
+#: line above will be replaced by an integer representing which line
+#: should be at the top of the screen.
+
+wheel_scroll_multiplier 5
+
+#: Modify the amount scrolled by the mouse wheel or touchpad. Use
+#: negative numbers to change scroll direction.
+
+#: }}}
+
+#: Mouse {{{
+
+url_color #0087BD
+url_style curly
+
+#: The color and style for highlighting URLs on mouse-over. url_style
+#: can be one of: none, single, double, curly
+
+open_url_modifiers kitty_mod
+
+#: The modifier keys to press when clicking with the mouse on URLs to
+#: open the URL
+
+open_url_with default
+
+#: The program with which to open URLs that are clicked on. The
+#: special value default means to use the operating system's default
+#: URL handler.
+
+copy_on_select yes
+
+#: Copy to clipboard on select. With this enabled, simply selecting
+#: text with the mouse will cause the text to be copied to clipboard.
+#: Useful on platforms such as macOS/Wayland that do not have the
+#: concept of primary selectons. Note that this is a security risk,
+#: as all programs, including websites open in your browser can read
+#: the contents of the clipboard.
+
+# rectangle_select_modifiers ctrl+alt
+
+#: The modifiers to use rectangular selection (i.e. to select text in
+#: a rectangular block with the mouse)
+
+# select_by_word_characters :@-./_~?&=%+#
+
+#: Characters considered part of a word when double clicking. In
+#: addition to these characters any character that is marked as an
+#: alpha-numeric character in the unicode database will be matched.
+
+click_interval 0.5
+
+#: The interval between successive clicks to detect double/triple
+#: clicks (in seconds)
+
+# mouse_hide_wait 3.0
+
+#: Hide mouse cursor after the specified number of seconds of the
+#: mouse not being used. Set to zero to disable mouse cursor hiding.
+
+# focus_follows_mouse no
+
+#: Set the active window to the window under the mouse when moving the
+#: mouse around
+
+#: }}}
+
+#: Performance tuning {{{
+
+repaint_delay 10
+
+#: Delay (in milliseconds) between screen updates. Decreasing it,
+#: increases frames-per-second (FPS) at the cost of more CPU usage.
+#: The default value yields ~100 FPS which is more than sufficient for
+#: most uses. Note that to actually achieve 100 FPS you have to either
+#: set sync_to_monitor to no or use a monitor with a high refresh
+#: rate.
+
+# input_delay 3
+
+#: Delay (in milliseconds) before input from the program running in
+#: the terminal is processed. Note that decreasing it will increase
+#: responsiveness, but also increase CPU usage and might cause flicker
+#: in full screen programs that redraw the entire screen on each loop,
+#: because kitty is so fast that partial screen updates will be drawn.
+
+# sync_to_monitor yes
+
+#: Sync screen updates to the refresh rate of the monitor. This
+#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing)
+#: when scrolling. However, it limits the rendering speed to the
+#: refresh rate of your monitor. With a very high speed mouse/high
+#: keyboard repeat rate, you may notice some slight input latency. If
+#: so, set this to no.
+
+#: }}}
+
+#: Terminal bell {{{
+
+enable_audio_bell no
+
+#: Enable/disable the audio bell. Useful in environments that require
+#: silence.
+
+# visual_bell_duration 0.5
+
+#: Visual bell duration. Flash the screen when a bell occurs for the
+#: specified number of seconds. Set to zero to disable.
+
+window_alert_on_bell yes
+
+#: Request window attention on bell. Makes the dock icon bounce on
+#: macOS or the taskbar flash on linux.
+
+bell_on_tab yes
+
+#: Show a bell symbol on the tab if a bell occurs in one of the
+#: windows in the tab and the window is not the currently focused
+#: window
+
+#: }}}
+
+#: Window layout {{{
+
+# remember_window_size yes
+# initial_window_width 640
+# initial_window_height 400
+
+#: If enabled, the window size will be remembered so that new
+#: instances of kitty will have the same size as the previous
+#: instance. If disabled, the window will initially have size
+#: configured by initial_window_width/height, in pixels. You can use a
+#: suffix of "c" on the width/height values to have them interpreted
+#: as number of cells instead of pixels.
+
+enabled_layouts *
+
+#: The enabled window layouts. A comma separated list of layout names.
+#: The special value * means all layouts. The first listed layout will
+#: be used as the startup layout. For a list of available layouts, see
+#: the layouts.
+
+# window_resize_step_cells 2
+# window_resize_step_lines 2
+
+#: The step size (in units of cell width/cell height) to use when
+#: resizing windows. The cells value is used for horizontal resizing
+#: and the lines value for vertical resizing.
+
+window_border_width 1
+
+#: The width (in pts) of window borders. Will be rounded to the
+#: nearest number of pixels based on screen resolution. Note that
+#: borders are displayed only when more than one window is visible.
+#: They are meant to separate multiple windows.
+
+window_margin_width 0
+
+#: The window margin (in pts) (blank area outside the border)
+
+# single_window_margin_width -1000.0
+
+#: The window margin (in pts) to use when only a single window is
+#: visible. Negative values will cause the value of
+#: window_margin_width to be used instead.
+
+window_padding_width 0
+
+#: The window padding (in pts) (blank area between the text and the
+#: window border)
+
+active_border_color #282c34
+
+#: The color for the border of the active window
+
+inactive_border_color #22262d
+
+#: The color for the border of inactive windows
+
+# bell_border_color #ff5a00
+
+#: The color for the border of inactive windows in which a bell has
+#: occurred
+
+inactive_text_alpha .6
+
+#: Fade the text in inactive windows by the specified amount (a number
+#: between zero and one, with zero being fully faded).
+
+#: }}}
+
+#: Tab bar {{{
+
+# tab_bar_edge bottom
+
+#: Which edge to show the tab bar on, top or bottom
+
+tab_bar_margin_width 4
+
+#: The margin to the left and right of the tab bar (in pts)
+
+tab_bar_style fade
+
+#: The tab bar style, can be one of: fade or separator. In the fade
+#: style, each tab's edges fade into the background color, in the
+#: separator style, tabs are separated by a configurable separator.
+
+# tab_fade 0.25 0.5 0.75 1
+tab_fade 1 1 1
+
+#: Control how each tab fades into the background when using fade for
+#: the tab_bar_style. Each number is an alpha (between zero and one)
+#: that controls how much the corresponding cell fades into the
+#: background, with zero being no fade and one being full fade. You
+#: can change the number of cells used by adding/removing entries to
+#: this list.
+
+# tab_separator " "
+
+#: The separator between tabs in the tab bar when using separator as
+#: the tab_bar_style.
+
+active_tab_foreground #282c34
+active_tab_background #abb2bf
+active_tab_font_style bold
+inactive_tab_foreground #5c6370
+inactive_tab_background #22262d
+inactive_tab_font_style normal
+
+#: Tab bar colors and styles
+
+#: }}}
+
+#: Color scheme {{{
+
+foreground #d8dee9
+#background #1d1f21
+background #000000
+
+#: The foreground and background colors
+
+background_opacity 0.6
+dynamic_background_opacity yes
+# Increase background opacity ctrl+shift+a>m
+
+# Decrease background opacity ctrl+shift+a>l
+
+# Full background opacity ctrl+shift+a>1
+
+# Reset background opacity ctrl+shift+a>d
+
+#: The opacity of the background. A number between 0 and 1, where 1 is
+#: opaque and 0 is fully transparent. This will only work if
+#: supported by the OS (for instance, when using a compositor under
+#: X11). Note that it only sets the default background color's
+#: opacity. This is so that things like the status bar in vim,
+#: powerline prompts, etc. still look good. But it means that if you
+#: use a color theme with a background color in your editor, it will
+#: not be rendered as transparent. Instead you should change the
+#: default background color in your kitty config and not use a
+#: background color in the editor color scheme. Or use the escape
+#: codes to set the terminals default colors in a shell script to
+#: launch your editor. Be aware that using a value less than 1.0 is a
+#: (possibly significant) performance hit. If you want to dynamically
+#: change transparency of windows set dynamic_background_opacity to
+#: yes (this is off by default as it has a performance cost)
+
+dim_opacity 1.0
+
+#: How much to dim text that has the DIM/FAINT attribute set. One
+#: means no dimming and zero means fully dimmed (i.e. invisible).
+
+selection_foreground #000000
+selection_background #FFFACD
+
+#: The foreground and background for text selected with the mouse
+
+
+#: The 16 terminal colors. There are 8 basic colors, each color has a
+#: dull and bright version. You can also set the remaining colors from
+#: the 256 color table as color16 to color255.
+
+#: black
+color0 #313539
+color8 #676f78
+
+#: red
+color1 #b02626
+color9 #b55454
+
+#: green
+color2 #40a62f
+color10 #78a670
+
+#: yellow
+color3 #f2e635
+color11 #faf380
+
+#: blue
+color4 #314ad0
+color12 #707fd0
+
+#: magenta
+color5 #b30ad0
+color13 #c583d0
+
+#: cyan
+color6 #32d0fc
+color14 #8adaf1
+
+#: white
+color7 #acadb1
+color15 #e0e3e7
+
+
+#: }}}
+
+#: Advanced {{{
+
+# shell zsh
+
+#: The shell program to execute. The default value of . means to use
+#: whatever shell is set as the default shell for the current user.
+#: Note that on macOS if you change this, you might need to add
+#: --login to ensure that the shell starts in interactive mode and
+#: reads its startup rc files.
+
+editor .
+
+#: The console editor to use when editing the kitty config file or
+#: similar tasks. A value of . means to use the environment variable
+#: EDITOR. Note that this environment variable has to be set not just
+#: in your shell startup scripts but system-wide, otherwise kitty will
+#: not see it.
+
+# close_on_child_death nvim
+
+#: Close the window when the child process (shell) exits. If no (the
+#: default), the terminal will remain open when the child exits as
+#: long as there are still processes outputting to the terminal (for
+#: example disowned or backgrounded processes). If yes, the window
+#: will close as soon as the child process exits. Note that setting it
+#: to yes means that any background processes still using the terminal
+#: can fail silently because their stdout/stderr/stdin no longer work.
+
+# allow_remote_control no
+
+#: Allow other programs to control kitty. If you turn this on other
+#: programs can control all aspects of kitty, including sending text
+#: to kitty windows, opening new windows, closing windows, reading the
+#: content of windows, etc. Note that this even works over ssh
+#: connections.
+
+# startup_session none
+
+#: Path to a session file to use for all kitty instances. Can be
+#: overridden by using the kitty --session command line option for
+#: individual instances. See sessions in the kitty documentation for
+#: details. Note that relative paths are interpreted with respect to
+#: the kitty config directory. Environment variables in the path are
+#: expanded.
+
+# clipboard_control write-clipboard write-primary
+clipboard_control write-primary write-clipboard no-append
+
+#: Allow programs running in kitty to read and write from the
+#: clipboard. You can control exactly which actions are allowed. The
+#: set of possible actions is: write-clipboard read-clipboard write-
+#: primary read-primary The default is to allow writing to the
+#: clipboard and primary selection. Note that enabling the read
+#: functionality is a security risk as it means that any program, even
+#: one running on a remote server via SSH can read your clipboard.
+
+#term xterm-kitty
+
+#: The value of the TERM environment variable to set. Changing this
+#: can break many terminal programs, only change it if you know what
+#: you are doing, not because you read some advice on Stack Overflow
+#: to change it.
+
+#: }}}
+
+#: OS specific tweaks {{{
+
+# macos_titlebar_color #22262d
+
+#: Change the color of the kitty window's titlebar on macOS. A value
+#: of system means to use the default system color, a value of
+#: background means to use the background color of the currently
+#: active window and finally you can use an arbitrary color, such as
+#: #12af59 or red. WARNING: This option works by using a hack, as
+#: there is no proper Cocoa API for it. It sets the background color
+#: of the entire window and makes the titlebar transparent. As such it
+#: is incompatible with background_opacity. If you want to use both,
+#: you are probably better off just hiding the titlebar with
+#: macos_hide_titlebar.
+
+# macos_hide_titlebar no
+
+#: Hide the kitty window's title bar on macOS.
+
+hide_window_decorations no
+
+#: Hide the window decorations (title bar and window borders) on X11
+#: and Wayland. Whether this works and exactly what effect it has
+#: depends on the window manager, as it is the job of the window
+#: manager/compositor to draw window decorations.
+
+# macos_option_as_alt yes
+
+#: Use the option key as an alt key. With this set to no, kitty will
+#: use the macOS native Option+Key = unicode character behavior. This
+#: will break any Alt+key keyboard shortcuts in your terminal
+#: programs, but you can use the macOS unicode input technique.
+
+# macos_hide_from_tasks no
+
+#: Hide the kitty window from running tasks (Option+Tab) on macOS.
+
+# macos_quit_when_last_window_closed no
+
+#: Have kitty quit when all the top-level windows are closed. By
+#: default, kitty will stay running, even with no open windows, as is
+#: the expected behavior on macOS.
+
+#: }}}
+
+#: Keyboard shortcuts {{{
+
+#: For a list of key names, see: GLFW keys
+#: <http://www.glfw.org/docs/latest/group__keys.html>. The name to use
+#: is the part after the GLFW_KEY_ prefix. For a list of modifier
+#: names, see: GLFW mods
+#: <http://www.glfw.org/docs/latest/group__mods.html>
+
+#: On Linux you can also use XKB key names to bind keys that are not
+#: supported by GLFW. See XKB keys
+#: <https://github.com/xkbcommon/libxkbcommon/blob/master/xkbcommon/xkbcommon-
+#: keysyms.h> for a list of key names. The name to use is the part
+#: after the XKB_KEY_ prefix. Note that you should only use an XKB key
+#: name for keys that are not present in the list of GLFW keys.
+
+#: You can use the special action no_op to unmap a keyboard shortcut
+#: that is assigned in the default configuration.
+
+#: You can combine multiple actions to be triggered by a single
+#: shortcut, using the syntax below::
+
+#: map key combine <separator> action1 <separator> action2 <separator> action3 ...
+
+#: For example::
+
+#: map kitty_mod+e combine : new_window : next_layout
+
+#: this will create a new window and switch to the next available
+#: layout
+
+#: You can use multi-key shortcuts using the syntax shown below::
+
+#: map key1>key2>key3 action
+
+#: For example::
+
+#: map ctrl+f>2 set_font_size 20
+
+# kitty_mod ctrl+shift
+
+#: The value of kitty_mod is used as the modifier for all default
+#: shortcuts, you can change it in your kitty.conf to change the
+#: modifiers for all the default shortcuts.
+
+# clear_all_shortcuts no
+
+#: You can have kitty remove all shortcut definition seen up to this
+#: point. Useful, for instance, to remove the default shortcuts.
+
+#: Clipboard {{{
+
+# map cmd+c copy_to_clipboard
+#map kitty_mod+c copy_to_clipboard
+# map cmd+v paste_from_clipboard
+#map kitty_mod+v paste_from_clipboard
+#map kitty_mod+s paste_from_selection
+map shift+insert paste_from_selection
+# map kitty_mod+o pass_selection_to_program
+map ctrl+c copy_to_clipboard
+map ctrl+v paste_from_clipboard
+
+#: You can also pass the contents of the current selection to any
+#: program using pass_selection_to_program. By default, the system's
+#: open program is used, but you can specify your own, for example::
+
+#: map kitty_mod+o pass_selection_to_program firefox
+
+#: You can pass the current selection to a terminal program running in
+#: a new kitty window, by using the @selection placeholder::
+
+#: map kitty_mod+y new_window less @selection
+
+#: }}}
+
+#: Scrolling {{{
+
+#map kitty_mod+up scroll_line_up
+#map ctrl+k scroll_line_up
+#map kitty_mod+k scroll_line_up
+#map kitty_mod+down scroll_line_down
+#map ctrl+j scroll_line_down
+#map kitty_mod+j scroll_line_down
+map kitty_mod+page_up scroll_page_up
+map kitty_mod+page_down scroll_page_down
+map kitty_mod+b scroll_page_up
+map kitty_mod+f scroll_page_down
+# map kitty_mod+home scroll_home
+# map kitty_mod+end scroll_end
+# map kitty_mod+h show_scrollback
+
+#: You can send the contents of the current screen + history buffer as
+#: stdin to an arbitrary program using the placeholders @text (which
+#: is the plain text) and @ansi (which includes text styling escape
+#: codes). For only the current screen, use @screen or @ansi_screen.
+#: For example, the following command opens the scrollback buffer in
+#: less in a new window::
+
+#: map kitty_mod+y new_window @ansi less +G -R
+
+#: }}}
+
+#: Window management {{{
+
+# map kitty_mod+enter new_window
+map kitty_mod+enter no_op
+map kitty_mod+enter new_window_with_cwd
+
+#: You can open a new window running an arbitrary program, for
+#: example::
+
+#: map kitty_mod+y new_window mutt
+
+#: You can open a new window with the current working directory set to
+#: the working directory of the current window using::
+
+#: map ctrl+alt+enter new_window_with_cwd
+
+# map cmd+n new_os_window
+# map kitty_mod+n new_os_window
+# map kitty_mod+w close_window
+# map kitty_mod+] next_window
+# map kitty_mod+[ previous_window
+map kitty_mod+j previous_window
+map kitty_mod+k next_window
+map kitty_mod+up move_window_forward
+map kitty_mod+down move_window_backward
+# map kitty_mod+f move_window_forward
+# map kitty_mod+b move_window_backward
+# map kitty_mod+` move_window_to_top
+# map kitty_mod+r start_resizing_window
+# map kitty_mod+1 first_window
+# map kitty_mod+2 second_window
+# map kitty_mod+3 third_window
+# map kitty_mod+4 fourth_window
+# map kitty_mod+5 fifth_window
+# map kitty_mod+6 sixth_window
+# map kitty_mod+7 seventh_window
+# map kitty_mod+8 eighth_window
+# map kitty_mod+9 ninth_window
+# map kitty_mod+0 tenth_window
+#: }}}
+
+#: Tab management {{{
+
+# map kitty_mod+right next_tab
+# map kitty_mod+left previous_tab
+map kitty_mod+] no_op
+map kitty_mod+] next_tab
+map kitty_mod+[ no_op
+map kitty_mod+[ previous_tab
+# map kitty_mod+t new_tab
+# map kitty_mod+q close_tab
+# map kitty_mod+. move_tab_forward
+# map kitty_mod+, move_tab_backward
+map kitty_mod+right no_op
+map kitty_mod+right move_tab_forward
+map kitty_mod+left no_op
+map kitty_mod+left move_tab_backward
+# map kitty_mod+alt+t set_tab_title
+map kitty_mod+t no_op
+map kitty_mod+t new_tab_with_cwd
+
+#: You can also create shortcuts to go to specific tabs, with 1 being
+#: the first tab::
+
+#: map ctrl+alt+1 goto_tab 1
+#: map ctrl+alt+2 goto_tab 2
+
+#: Just as with new_window above, you can also pass the name of
+#: arbitrary commands to run when using new_tab and use
+#: new_tab_with_cwd.
+#: }}}
+
+#: Layout management {{{
+
+# map kitty_mod+l next_layout
+
+#: You can also create shortcuts to switch to specific layouts::
+
+map kitty_mod+0 no_op
+map kitty_mod+0 goto_layout stack
+map kitty_mod+9 no_op
+map kitty_mod+9 goto_layout tall
+map kitty_mod+8 no_op
+map kitty_mod+8 goto_layout fat
+#: map ctrl+alt+t goto_layout tall
+#: map ctrl+alt+s goto_layout stack
+#: }}}
+
+#: Font sizes {{{
+
+#: You can change the font size for all top-level kitty windows at a
+#: time or only the current one.
+
+map kitty_mod+equal change_font_size all +2.0
+map kitty_mod+minus change_font_size all -2.0
+map kitty_mod+backspace change_font_size all 0
+
+#: To setup shortcuts for specific font sizes::
+
+#: map kitty_mod+f6 change_font_size all 10.0
+
+#: To setup shortcuts to change only the current window's font size::
+
+#: map kitty_mod+f6 change_font_size current 10.0
+#: }}}
+
+#: Select and act on visible text {{{
+
+#: Use the hints kitten to select text and either pass it to an
+#: external program or insert it into the terminal or copy it to the
+#: clipboard.
+
+# map kitty_mod+e kitten hints
+
+#: Open a currently visible URL using the keyboard. The program used
+#: to open the URL is specified in open_url_with.
+
+# map kitty_mod+p>f kitten hints --type path --program -
+
+#: Select a path/filename and insert it into the terminal. Useful, for
+#: instance to run git commands on a filename output from a previous
+#: git command.
+
+# map kitty_mod+p>shift+f kitten hints --type path
+
+#: Select a path/filename and open it with the default open program.
+
+# map kitty_mod+p>l kitten hints --type line --program -
+
+#: Select a line of text and insert it into the terminal. Use for the
+#: output of things like: ls -1
+
+# map kitty_mod+p>w kitten hints --type word --program -
+
+#: Select words and insert into terminal.
+
+# map kitty_mod+p>h kitten hints --type hash --program -
+
+#: Select something that looks like a hash and insert it into the
+#: terminal. Useful with git, which uses sha1 hashes to identify
+#: commits
+
+
+#: The hints kitten has many more modes of operation that you can map
+#: to different shortcuts. For a full description see kittens/hints.
+#: }}}
+
+#: Miscellaneous {{{
+
+
+# map kitty_mod+f11 toggle_fullscreen
+# map kitty_mod+u input_unicode_character
+# map kitty_mod+f2 edit_config_file
+# map kitty_mod+escape kitty_shell window
+
+#: Open the kitty shell in a new window/tab/overlay/os_window to
+#: control kitty using commands.
+
+# map kitty_mod+a>m set_background_opacity +0.1
+# map kitty_mod+a>l set_background_opacity -0.1
+# map kitty_mod+a>1 set_background_opacity 1
+# map kitty_mod+a>d set_background_opacity default
+#
+# map kitty_mod+a>m set_background_opacity +0.1
+# map kitty_mod+a>l set_background_opacity -0.1
+map kitty_mod+, set_background_opacity 1
+map kitty_mod+. set_background_opacity default
+
+#: You can tell kitty to send arbitrary (UTF-8) encoded text to the
+#: client program when pressing specified shortcut keys. For example::
+
+#: map ctrl+alt+a send_text all Special text
+
+#: This will send "Special text" when you press the ctrl+alt+a key
+#: combination. The text to be sent is a python string literal so you
+#: can use escapes like \x1b to send control codes or \u21fb to send
+#: unicode characters (or you can just input the unicode characters
+#: directly as UTF-8 text). The first argument to send_text is the
+#: keyboard modes in which to activate the shortcut. The possible
+#: values are normal or application or kitty or a comma separated
+#: combination of them. The special keyword all means all modes. The
+#: modes normal and application refer to the DECCKM cursor key mode
+#: for terminals, and kitty refers to the special kitty extended
+#: keyboard protocol.
+
+#: Another example, that outputs a word and then moves the cursor to
+#: the start of the line (same as pressing the Home key)::
+
+#: map ctrl+alt+a send_text normal Word\x1b[H
+#: map ctrl+alt+a send_text application Word\x1bOH
+
+#: }}}
+
+map ctrl+space send_text all \x10
+
+# }}}
diff --git a/.gitignore b/.config/nvim/.gitignore
index 308d183..308d183 100644
--- a/.gitignore
+++ b/.config/nvim/.gitignore
diff --git a/README.md b/.config/nvim/README.md
index 630b8e5..630b8e5 100644
--- a/README.md
+++ b/.config/nvim/README.md
diff --git a/autoload/scripts.vim b/.config/nvim/autoload/scripts.vim
index 5c695d3..5c695d3 100644
--- a/autoload/scripts.vim
+++ b/.config/nvim/autoload/scripts.vim
diff --git a/init.lua b/.config/nvim/init.lua
index 49397d4..49397d4 100644
--- a/init.lua
+++ b/.config/nvim/init.lua
diff --git a/lua/plugins/autopairs.lua b/.config/nvim/lua/plugins/autopairs.lua
index fc39d2e..fc39d2e 100644
--- a/lua/plugins/autopairs.lua
+++ b/.config/nvim/lua/plugins/autopairs.lua
diff --git a/lua/plugins/cmp-gh-source.lua b/.config/nvim/lua/plugins/cmp-gh-source.lua
index 05bba55..05bba55 100644
--- a/lua/plugins/cmp-gh-source.lua
+++ b/.config/nvim/lua/plugins/cmp-gh-source.lua
diff --git a/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
index 829a448..829a448 100644
--- a/lua/plugins/cmp.lua
+++ b/.config/nvim/lua/plugins/cmp.lua
diff --git a/lua/plugins/colorizer.lua b/.config/nvim/lua/plugins/colorizer.lua
index 14d25e2..14d25e2 100644
--- a/lua/plugins/colorizer.lua
+++ b/.config/nvim/lua/plugins/colorizer.lua
diff --git a/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
index 6b4e6f9..6b4e6f9 100644
--- a/lua/plugins/colorscheme.lua
+++ b/.config/nvim/lua/plugins/colorscheme.lua
diff --git a/lua/plugins/git.lua b/.config/nvim/lua/plugins/git.lua
index 963f7f9..963f7f9 100644
--- a/lua/plugins/git.lua
+++ b/.config/nvim/lua/plugins/git.lua
diff --git a/lua/plugins/gitsigns.lua b/.config/nvim/lua/plugins/gitsigns.lua
index 53d1a1e..53d1a1e 100644
--- a/lua/plugins/gitsigns.lua
+++ b/.config/nvim/lua/plugins/gitsigns.lua
diff --git a/lua/plugins/heirline.lua b/.config/nvim/lua/plugins/heirline.lua
index c05844b..c05844b 100644
--- a/lua/plugins/heirline.lua
+++ b/.config/nvim/lua/plugins/heirline.lua
diff --git a/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
index 4c5cf70..4c5cf70 100644
--- a/lua/plugins/lsp.lua
+++ b/.config/nvim/lua/plugins/lsp.lua
diff --git a/lua/plugins/lspsaga.lua b/.config/nvim/lua/plugins/lspsaga.lua
index 4161ce9..4161ce9 100644
--- a/lua/plugins/lspsaga.lua
+++ b/.config/nvim/lua/plugins/lspsaga.lua
diff --git a/lua/plugins/luasnip.lua b/.config/nvim/lua/plugins/luasnip.lua
index de2177e..de2177e 100644
--- a/lua/plugins/luasnip.lua
+++ b/.config/nvim/lua/plugins/luasnip.lua
diff --git a/lua/plugins/mason.lua b/.config/nvim/lua/plugins/mason.lua
index c0fdca6..c0fdca6 100644
--- a/lua/plugins/mason.lua
+++ b/.config/nvim/lua/plugins/mason.lua
diff --git a/lua/plugins/modify-blend.lua b/.config/nvim/lua/plugins/modify-blend.lua
index 7c48815..7c48815 100644
--- a/lua/plugins/modify-blend.lua
+++ b/.config/nvim/lua/plugins/modify-blend.lua
diff --git a/lua/plugins/neoscroll.lua b/.config/nvim/lua/plugins/neoscroll.lua
index d122584..d122584 100644
--- a/lua/plugins/neoscroll.lua
+++ b/.config/nvim/lua/plugins/neoscroll.lua
diff --git a/lua/plugins/null-ls.lua b/.config/nvim/lua/plugins/null-ls.lua
index 4573a54..4573a54 100644
--- a/lua/plugins/null-ls.lua
+++ b/.config/nvim/lua/plugins/null-ls.lua
diff --git a/lua/plugins/nvim-tree.lua b/.config/nvim/lua/plugins/nvim-tree.lua
index df4e282..df4e282 100644
--- a/lua/plugins/nvim-tree.lua
+++ b/.config/nvim/lua/plugins/nvim-tree.lua
diff --git a/lua/plugins/prettier.lua b/.config/nvim/lua/plugins/prettier.lua
index 05d4665..05d4665 100644
--- a/lua/plugins/prettier.lua
+++ b/.config/nvim/lua/plugins/prettier.lua
diff --git a/lua/plugins/scripts/lsp-ext.lua b/.config/nvim/lua/plugins/scripts/lsp-ext.lua
index c4378c6..c4378c6 100644
--- a/lua/plugins/scripts/lsp-ext.lua
+++ b/.config/nvim/lua/plugins/scripts/lsp-ext.lua
diff --git a/lua/plugins/scripts/setcolors.lua b/.config/nvim/lua/plugins/scripts/setcolors.lua
index 605bc84..605bc84 100644
--- a/lua/plugins/scripts/setcolors.lua
+++ b/.config/nvim/lua/plugins/scripts/setcolors.lua
diff --git a/lua/plugins/scripts/toggleLsp.lua b/.config/nvim/lua/plugins/scripts/toggleLsp.lua
index 28af698..28af698 100644
--- a/lua/plugins/scripts/toggleLsp.lua
+++ b/.config/nvim/lua/plugins/scripts/toggleLsp.lua
diff --git a/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index d4a54fa..d4a54fa 100644
--- a/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
diff --git a/lua/plugins/toggleterm.lua b/.config/nvim/lua/plugins/toggleterm.lua
index 912729a..912729a 100644
--- a/lua/plugins/toggleterm.lua
+++ b/.config/nvim/lua/plugins/toggleterm.lua
diff --git a/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
index b081ca3..b081ca3 100644
--- a/lua/plugins/treesitter.lua
+++ b/.config/nvim/lua/plugins/treesitter.lua
diff --git a/lua/plugins/web-devicons.lua b/.config/nvim/lua/plugins/web-devicons.lua
index b8396bc..b8396bc 100644
--- a/lua/plugins/web-devicons.lua
+++ b/.config/nvim/lua/plugins/web-devicons.lua
diff --git a/lua/plugins/zen-mode.lua b/.config/nvim/lua/plugins/zen-mode.lua
index 7e52854..7e52854 100644
--- a/lua/plugins/zen-mode.lua
+++ b/.config/nvim/lua/plugins/zen-mode.lua
diff --git a/lua/user/keys.lua b/.config/nvim/lua/user/keys.lua
index 1aa5124..1aa5124 100644
--- a/lua/user/keys.lua
+++ b/.config/nvim/lua/user/keys.lua
diff --git a/lua/user/mods.lua b/.config/nvim/lua/user/mods.lua
index ec77173..ec77173 100644
--- a/lua/user/mods.lua
+++ b/.config/nvim/lua/user/mods.lua
diff --git a/lua/user/opts.lua b/.config/nvim/lua/user/opts.lua
index 57b2949..57b2949 100644
--- a/lua/user/opts.lua
+++ b/.config/nvim/lua/user/opts.lua
diff --git a/lua/user/pack.lua b/.config/nvim/lua/user/pack.lua
index e2d1cb1..e2d1cb1 100644
--- a/lua/user/pack.lua
+++ b/.config/nvim/lua/user/pack.lua
diff --git a/lua/user/utils.lua b/.config/nvim/lua/user/utils.lua
index bfb5faa..bfb5faa 100644
--- a/lua/user/utils.lua
+++ b/.config/nvim/lua/user/utils.lua
diff --git a/snippets/boilerplate.lua b/.config/nvim/snippets/boilerplate.lua
index 04e973a..04e973a 100644
--- a/snippets/boilerplate.lua
+++ b/.config/nvim/snippets/boilerplate.lua
diff --git a/snippets/lua.lua b/.config/nvim/snippets/lua.lua
index 523d2f4..523d2f4 100644
--- a/snippets/lua.lua
+++ b/.config/nvim/snippets/lua.lua
diff --git a/snippets/markdown.lua b/.config/nvim/snippets/markdown.lua
index d0d1487..d0d1487 100644
--- a/snippets/markdown.lua
+++ b/.config/nvim/snippets/markdown.lua
diff --git a/.config/picom/picom.conf b/.config/picom/picom.conf
new file mode 100644
index 0000000..f7096d8
--- /dev/null
+++ b/.config/picom/picom.conf
@@ -0,0 +1,487 @@
+#################################
+# Animations #
+#################################
+# requires https://github.com/jonaburg/picom
+# (These are also the default values)
+transition-length = 300
+transition-pow-x = 0.1
+transition-pow-y = 0.1
+transition-pow-w = 0.1
+transition-pow-h = 0.1
+size-transition = true
+
+
+#################################
+# Corners #
+#################################
+# requires: https://github.com/sdhand/compton or https://github.com/jonaburg/picom
+corner-radius = 10.0;
+rounded-corners-exclude = [
+#"window_type = 'normal'",
+# "class_g = 'Bspwm' && class_i = 'presel_feedback'",
+# "class_g = 'URxvt'",
+# "class_g = 'alacritty'",
+# "class_g = 'Org.gnome.Nautilus'",
+# "class_g = 'Nemo'",
+ "class_g = 'firefox'",
+# "class_g = 'Rofi'",
+# "class_g = 'Spotify'",
+# "class_g = 'discord'",
+# "class_g = 'Code'",
+# "class_g = 'TelegramDesktop'",
+# "class_g = 'YouTube Music'",
+ "class_g = 'Polybar'"
+# "class_g = 'qutebrowser'",
+# "class_g = 'Zathura'",
+# "class_g = 'Pavucontrol'"
+
+];
+round-borders = 1;
+#round-borders-exclude = [
+# "class_g = 'TelegramDesktop'",
+#];
+
+
+
+#################################
+# Shadows #
+#################################
+
+
+# Enabled client-side shadows on windows. Note desktop windows
+# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
+# unless explicitly requested using the wintypes option.
+#
+# shadow = false
+shadow = true;
+
+# The blur radius for shadows, in pixels. (defaults to 12)
+# shadow-radius = 12
+shadow-radius = 20;
+
+# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
+# shadow-opacity = .75
+
+# The left offset for shadows, in pixels. (defaults to -15)
+# shadow-offset-x = -15
+shadow-offset-x = -5;
+
+# The top offset for shadows, in pixels. (defaults to -15)
+# shadow-offset-y = -15
+shadow-offset-y = -5;
+
+# Avoid drawing shadows on dock/panel windows. This option is deprecated,
+# you should use the *wintypes* option in your config file instead.
+#
+# no-dock-shadow = false
+
+# Don't draw shadows on drag-and-drop windows. This option is deprecated,
+# you should use the *wintypes* option in your config file instead.
+#
+# no-dnd-shadow = false
+
+# Red color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-red = 0
+
+# Green color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-green = 0
+
+# Blue color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-blue = 0
+
+# Do not paint shadows on shaped windows. Note shaped windows
+# here means windows setting its shape through X Shape extension.
+# Those using ARGB background is beyond our control.
+# Deprecated, use
+# shadow-exclude = 'bounding_shaped'
+# or
+# shadow-exclude = 'bounding_shaped && !rounded_corners'
+# instead.
+#
+# shadow-ignore-shaped = ''
+
+# Specify a list of conditions of windows that should have no shadow.
+#
+# examples:
+# shadow-exclude = "n:e:Notification";
+#
+# shadow-exclude = []
+shadow-exclude = [
+ "name = 'Notification'",
+ "class_g = 'Conky'",
+ "class_g ?= 'Notify-osd'",
+ "class_g = 'Cairo-clock'",
+ "class_g = 'Polybar'",
+ # "class_g = 'Rofi'"
+ "_GTK_FRAME_EXTENTS@:c"
+ ];
+
+# Specify a X geometry that describes the region in which shadow should not
+# be painted in, such as a dock window region. Use
+# shadow-exclude-reg = "x10+0+0"
+# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
+#
+# shadow-exclude-reg = ""
+
+# Crop shadow of a window fully on a particular Xinerama screen to the screen.
+# xinerama-shadow-crop = false
+
+
+#################################
+# Fading #
+#################################
+
+
+# Fade windows in/out when opening/closing and when opacity changes,
+# unless no-fading-openclose is used.
+# fading = false
+fading = true
+
+# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
+# fade-in-step = 0.028
+fade-in-step = 0.08;
+
+# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
+# fade-out-step = 0.03
+fade-out-step = 0.08;
+
+# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
+# fade-delta = 10
+
+# Specify a list of conditions of windows that should not be faded.
+# fade-exclude = []
+
+# Do not fade on window open/close.
+# no-fading-openclose = false
+
+# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
+# no-fading-destroyed-argb = false
+
+
+#################################
+# Transparency / Opacity #
+#################################
+
+# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
+# inactive-opacity = 1
+inactive-opacity = 1;
+
+# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
+# frame-opacity = 1.0
+frame-opacity = 1;
+
+# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
+# menu-opacity = 1.0
+
+# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
+# inactive-opacity-override = true
+inactive-opacity-override = false;
+
+# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
+active-opacity = 1.0;
+
+# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
+inactive-dim = 0.2
+
+# Specify a list of conditions of windows that should always be considered focused.
+# focus-exclude = []
+focus-exclude = ["class_g = 'Plank'", "class_g = 'st'", "class_g = 'kitty'", "class_g = 'Alacritty'", "class_g = 'firefox'"];
+
+# Use fixed inactive dim value, instead of adjusting according to window opacity.
+# inactive-dim-fixed = 1.0
+
+# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
+# like `50:name *= "Firefox"`. picom-trans is recommended over this.
+# Note we don't make any guarantee about possible conflicts with other
+# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
+# example:
+# opacity-rule = [ "80:class_g = 'URxvt'" ];
+opacity-rule = ["80:class_g = 'URxvt'", "100:class_g = 'firefox'", "100:class_g = 'Zathura'", "80:class_g = 'Spotify'", "80:class_g *?= 'Rofi'", "100:class_g = 'kitty' && focused", "100:class_g = 'kitty' && !focused", "100:class_g = 'Alacritty' && focused", "100:class_g = 'Alacritty' && !focused"];
+#
+#opacity-rule = ["85:class_g ?= 'Alacritty' && focused"];
+
+#blur-background-exclude = ["class_g = 'scratchpad'"];
+
+#################################
+# Background-Blurring #
+#################################
+
+
+# Parameters for background blurring, see the *BLUR* section for more information.
+blur-method = "dual_kawase";
+#blur-method = "gaussian";
+blur-strength = 6;
+# blur-size = 12
+#
+# blur-deviation = false
+
+# Blur background of semi-transparent / ARGB windows.
+# Bad in performance, with driver-dependent behavior.
+# The name of the switch may change without prior notifications.
+#
+blur-background = false;
+
+# Blur background of windows when the window frame is not opaque.
+# Implies:
+# blur-background
+# Bad in performance, with driver-dependent behavior. The name may change.
+#
+# blur-background-frame = false
+
+
+# Use fixed blur strength rather than adjusting according to window opacity.
+#blur-background-fixed = false
+
+
+# Specify the blur convolution kernel, with the following format:
+# example:
+# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
+#
+# blur-kern = ''
+#blur-kern = "3x3box";
+blur-kern = "7x7box";
+
+# Exclude conditions for background blur.
+# blur-background-exclude = []
+blur-background-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "_GTK_FRAME_EXTENTS@:c",
+ "class_g = 'kitty'",
+ "class_g = 'Alacritty'",
+# "class_g = 'Polybar'",
+ "class_g = 'URxvt'",
+ "class_g = 'scratch'",
+ "class_g = 'Heads-Up-Display'",
+ "class_g = 'Firefox'",
+ "class_g = 'firefox'",
+ "class_g = 'discord'",
+ "class_g = 'Rofi'",
+ "class_g = 'Zathura'"
+];
+
+#################################
+# General Settings #
+#################################
+
+# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
+# daemon = false
+
+# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
+# `xrender` is the default one.
+#
+experimental-backends = true;
+#backend = 'glx'
+backend = "glx";
+#backend = "xrender";
+
+# Enable/disable VSync.
+# vsync = false
+vsync = true
+
+# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
+# dbus = false
+
+# Try to detect WM windows (a non-override-redirect window with no
+# child that has 'WM_STATE') and mark them as active.
+#
+# mark-wmwin-focused = false
+mark-wmwin-focused = true;
+
+# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
+mark-ovredir-focused = false;
+#mark-ovredir-focused = true;
+
+# Try to detect windows with rounded corners and don't consider them
+# shaped windows. The accuracy is not very high, unfortunately.
+#
+# detect-rounded-corners = false
+detect-rounded-corners = true;
+
+# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
+# not passing '_NET_WM_OPACITY' of client windows to frame windows.
+#
+# detect-client-opacity = false
+detect-client-opacity = true;
+
+# Specify refresh rate of the screen. If not specified or 0, picom will
+# try detecting this with X RandR extension.
+#
+# refresh-rate = 60
+refresh-rate = 0
+
+# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
+# boost performance. This should not be used with
+# vsync drm/opengl/opengl-oml
+# as they essentially does sw-opti's job already,
+# unless you wish to specify a lower refresh rate than the actual value.
+#
+# sw-opti =
+
+# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
+# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
+# provided that the WM supports it.
+#
+# use-ewmh-active-win = false
+
+# Unredirect all windows if a full-screen opaque window is detected,
+# to maximize performance for full-screen windows. Known to cause flickering
+# when redirecting/unredirecting windows.
+#
+# unredir-if-possible = false
+
+# Delay before unredirecting the window, in milliseconds. Defaults to 0.
+# unredir-if-possible-delay = 0
+
+# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
+# unredir-if-possible-exclude = []
+
+# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
+# in the same group focused at the same time.
+#
+# detect-transient = false
+detect-transient = true
+
+# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
+# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
+# detect-transient is enabled, too.
+#
+# detect-client-leader = false
+detect-client-leader = true
+
+# Resize damaged region by a specific number of pixels.
+# A positive value enlarges it while a negative one shrinks it.
+# If the value is positive, those additional pixels will not be actually painted
+# to screen, only used in blur calculation, and such. (Due to technical limitations,
+# with use-damage, those pixels will still be incorrectly painted to screen.)
+# Primarily used to fix the line corruption issues of blur,
+# in which case you should use the blur radius value here
+# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
+# with a 5x5 one you use `--resize-damage 2`, and so on).
+# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
+#
+# resize-damage = 1
+
+# Specify a list of conditions of windows that should be painted with inverted color.
+# Resource-hogging, and is not well tested.
+#
+# invert-color-include = []
+
+# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
+# Might cause incorrect opacity when rendering transparent content (but never
+# practically happened) and may not work with blur-background.
+# My tests show a 15% performance boost. Recommended.
+#
+# glx-no-stencil = false
+
+# GLX backend: Avoid rebinding pixmap on window damage.
+# Probably could improve performance on rapid window content changes,
+# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
+# Recommended if it works.
+#
+# glx-no-rebind-pixmap = false
+
+# Disable the use of damage information.
+# This cause the whole screen to be redrawn everytime, instead of the part of the screen
+# has actually changed. Potentially degrades the performance, but might fix some artifacts.
+# The opposing option is use-damage
+#
+# no-use-damage = false
+use-damage = true
+
+# Use X Sync fence to sync clients' draw calls, to make sure all draw
+# calls are finished before picom starts drawing. Needed on nvidia-drivers
+# with GLX backend for some users.
+#
+# xrender-sync-fence = false
+
+# GLX backend: Use specified GLSL fragment shader for rendering window contents.
+# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
+# in the source tree for examples.
+#
+# glx-fshader-win = ''
+
+# Force all windows to be painted with blending. Useful if you
+# have a glx-fshader-win that could turn opaque pixels transparent.
+#
+# force-win-blend = false
+
+# Do not use EWMH to detect fullscreen windows.
+# Reverts to checking if a window is fullscreen based only on its size and coordinates.
+#
+# no-ewmh-fullscreen = false
+
+# Dimming bright windows so their brightness doesn't exceed this set value.
+# Brightness of a window is estimated by averaging all pixels in the window,
+# so this could comes with a performance hit.
+# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
+#
+# max-brightness = 1.0
+
+# Make transparent windows clip other windows like non-transparent windows do,
+# instead of blending on top of them.
+#
+# transparent-clipping = false
+
+# Set the log level. Possible values are:
+# "trace", "debug", "info", "warn", "error"
+# in increasing level of importance. Case doesn't matter.
+# If using the "TRACE" log level, it's better to log into a file
+# using *--log-file*, since it can generate a huge stream of logs.
+#
+# log-level = "debug"
+log-level = "warn";
+
+# Set the log file.
+# If *--log-file* is never specified, logs will be written to stderr.
+# Otherwise, logs will to written to the given file, though some of the early
+# logs might still be written to the stderr.
+# When setting this option from the config file, it is recommended to use an absolute path.
+#
+# log-file = '/path/to/your/log/file'
+
+# Show all X errors (for debugging)
+# show-all-xerrors = false
+
+# Write process ID to a file.
+# write-pid-path = '/path/to/your/log/file'
+
+# Window type settings
+#
+# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
+# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
+# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
+# "tooltip", "notification", "combo", and "dnd".
+#
+# Following per window-type options are available: ::
+#
+# fade, shadow:::
+# Controls window-type-specific shadow and fade settings.
+#
+# opacity:::
+# Controls default opacity of the window type.
+#
+# focus:::
+# Controls whether the window of this type is to be always considered focused.
+# (By default, all window types except "normal" and "dialog" has this on.)
+#
+# full-shadow:::
+# Controls whether shadow is drawn under the parts of the window that you
+# normally won't be able to see. Useful when the window has parts of it
+# transparent, and you want shadows in those areas.
+#
+# redir-ignore:::
+# Controls whether this type of windows should cause screen to become
+# redirected again after been unredirected. If you have unredir-if-possible
+# set, and doesn't want certain window to cause unnecessary screen redirection,
+# you can set this to `true`.
+#
+wintypes:
+{
+ tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
+ dock = { shadow = false; }
+ dnd = { shadow = false; }
+ popup_menu = { opacity = 0.8; }
+ dropdown_menu = { opacity = 0.8; }
+};
+
diff --git a/.config/polybar/config b/.config/polybar/config
new file mode 100644
index 0000000..24ac5e3
--- /dev/null
+++ b/.config/polybar/config
@@ -0,0 +1,816 @@
+;==========================================================
+;
+;
+; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
+; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
+; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
+; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
+; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
+; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
+;
+;
+; To learn more about how to configure Polybar
+; go to https://github.com/polybar/polybar
+;
+; The README contains a lot of information
+;
+;==========================================================
+
+[colors]
+background = #aa000000
+;background = #aa101212
+;background = #00000000
+background-alt = #aaCECCC9
+;foreground = #aaCECCC9
+foreground = #fafafa
+foreground-alt = #aaCECCC9
+primary = #aaCECCC9
+secondary = #aaCECCC9
+alert = #aaCECCC9
+non = #aaCECCC9
+;background = #aa000000
+blue = #61afef
+dark_blue = #42A5F5
+nord = #81a1c1
+light_blue = #ADD8E6
+;green = #a0c980
+purple = #c882e7
+orange = #E57C46
+;orange = #d08770
+gray = #676E95
+red = #EC7875
+pink = #EC407A
+yellow = #FDD835
+;yellow = #ECBE7B
+amber = #FBC02D
+indigo = #6C77BB
+green = #61C766
+lime = #B9C244
+cyber = #53E2AE
+
+[bar/top]
+;width = 100%
+width = 99.15%
+height = 24
+offset-x = 0.5%
+offset-y = 0.5%
+radius = 10.0
+;radius = 0
+fixed-center = true
+bottom = false
+enable-ipc = true
+tray-position = right
+tray-padding = 4
+tray-background = ${colors.background}
+;tray-offest-x = -15
+;tray-offset-x = 400
+;tray-offset-x = -95
+;tray-offset-x = -208
+;tray-offset-x = -178
+;tray-offset-x = -183
+tray-offset-x = -188
+;tray-offset-x = -210
+tray-offset-y = -0.9
+tray-detached = true
+
+background = ${colors.background}
+foreground = ${colors.foreground}
+
+line-size = 0
+line-color = ${colors.background-alt}
+
+;border-top-size = 1
+;border-bottom-size = 1
+;border-right-size = 1
+;border-left-size = 1
+;border-color = ${colors.foreground}
+;border-size = 2
+;border-color = ${colors.background}
+
+padding-left = 0
+padding-right = 0
+
+module-margin-left = 0
+module-margin-right = 0
+; Font for date
+font-0 = "SF Pro Mono:style=Display Bold:size=10;2"
+; Font for crypto, dunst
+font-1 = "Material Design Icons:style=Bold:size=11.5;2"
+; Font for menu
+font-2 = "Material Design Icons:style=Bold:size=13.5;2"
+; Font for controlCenter
+font-3 = "SF Pro:style=Medium:size=10.5;2"
+; Font for search
+font-4 = "SF Pro:style=Medium:size=9.5;2"
+; Font for bspwm/workspaces
+font-5 = "UbuntuMono Nerd font:size=11;2"
+
+modules-left = sep menu sep close sep minimize sep maximize sep xwindow sep
+modules-center = bspwm
+modules-right = spotify spotify-prev spotify-play-pause spotify-next long-sep dunst search control date sep
+
+;modules-left = sep menu
+;modules-center = date
+;modules-right = bspwm whitespace crypto dunst search control space
+
+;modules-right = crypto dunst search date sep powermenu sep
+;modules-right = crypto toggle_spotify volume backlight battery network notification powermenu
+
+wm-restack = bspwm
+;wm-restack = bspwm
+
+override-redirect = true
+
+;; scroll-up = bspwm-desknext
+;; scroll-down = bspwm-deskprev
+
+;scroll-up = i3wm-wsnext
+;scroll-down = i3wm-wsprev
+
+cursor-click = pointer
+cursor-scroll = ns-resize
+
+[module/menu]
+type = custom/text
+content = 󰣇
+content-font = 3
+content-padding = 1
+content-foreground = ${colors.foreground}
+click-left = ~/.config/polybar/scripts/menu.sh
+click-right = ~/.config/polybar/scripts/menu_full.sh
+
+[module/bspwm]
+type = internal/bspwm
+format = <label-state>
+;format = <label-state> <label-mode>
+format-padding = 0
+;format-padding-right = 2
+format-foreground = ${colors.foreground}
+index-sort = true
+enable-click = true
+reverse-scroll = true
+#reverse-scroll = false
+
+label-focused = 
+label-focused-padding = 2
+
+label-occupied = 
+label-occupied-padding = 2
+
+label-empty = 
+label-empty-padding = 2
+
+
+[module/sepp]
+type = custom/text
+content = " "
+
+
+[module/close]
+type = custom/text
+content-foreground = ${colors.red}
+content-padding = 1
+content = 
+click-left = "xdotool getwindowfocus windowkill"
+
+[module/minimize]
+type = custom/text
+content-foreground = ${colors.yellow}
+content-padding = 1
+content = 
+click-left = bspc node -g hidden
+click-right = ${HOME}/.config/bspwm/bspcmd unhide
+
+;label = 
+[module/maximize]
+type = custom/text
+content-foreground = ${colors.green}
+content-padding = 1
+content = 
+;click-left = bspc node -t {fullscreen}
+click-left = bspc node -t ~floating
+click-right = bspc desktop -l next
+#bspc node -t \~{fullscreen};
+
+[module/blur-toggle]
+type = custom/ipc
+hook-0 = echo 
+hook-1 = echo 
+click-left = ~/.local/bin/scripts/blurtoggle.sh
+initial = 1
+format-foreground = ${colors.foreground}
+
+
+[module/battery]
+type = internal/battery
+full-t = 99
+time-format = %H:%M
+battery = BAT1
+adapter = ACAD
+format-padding = 1
+format-charging = <animation-charging> <label-charging>
+format-charging-background =
+label-charging = %percentage%%
+format-discharging = <ramp-capacity> <label-discharging>
+format-discharging-background =
+label-discharging = %percentage%%
+format-full = <label-full>
+format-full-prefix = " "
+format-full-prefix-foreground = ${colors.green}
+;format-foreground = ${colors.green}
+ramp-capacity-0 = 
+ramp-capacity-1 = 
+ramp-capacity-2 = 
+ramp-capacity-3 = 
+ramp-capacity-4 = 
+ramp-capacity-5 = 
+ramp-capacity-6 = 
+ramp-capacity-7 = 
+ramp-capacity-8 = 
+ramp-capacity-9 = 
+
+ramp-capacity-0-foreground = ${colors.red}
+ramp-capacity-1-foreground = ${colors.red}
+ramp-capacity-foreground = ${colors.green}
+;ramp-capacity-foreground = ${colors.foreground}
+bar-capacity-width = 10
+
+animation-charging-0 = 
+animation-charging-1 = 
+animation-charging-2 = 
+animation-charging-3 = 
+animation-charging-4 = 
+animation-charging-5 = 
+animation-charging-6 = 
+animation-charging-foreground = ${colors.green}
+
+animation-charging-framerate = 750
+
+[module/xbacklight]
+type = internal/xbacklight
+enable-scroll = true
+
+[module/backlight]
+inherit = module/xbacklight
+type = internal/backlight
+card = intel_backlight
+format-backlight = <ramp-backlight> <label>
+format-padding = 1
+format-prefix = "  "
+format-prefix-foreground = ${colors.indigo}
+label = %percentage%%
+label-foreground = ${colors.foreground}
+
+[module/bluetooth]
+type = custom/script
+exec = ~/.config/polybar/scripts/bluetooth.sh
+tail = true
+click-left = exec blueberry &
+click-right = exec $HOME/.config/polybar/scripts/toggle_bluetooth.sh
+
+[module/network]
+type = custom/script
+exec = ~/.config/polybar/scripts/check-network.sh
+format-background =
+format-foreground = ${colors.light_blue}
+click-left = networkmanager_dmenu &
+click-right = nm-applet
+tail = true
+format-padding = 1
+
+
+;[module/date]
+;type = internal/date
+;interval = 30
+;label = %time%
+;label-padding = 2
+;label-background =
+;time =  %H:%M
+;time-alt =  %Y-%m-%d
+
+[module/date]
+type = internal/date
+interval = 1
+label = %date%, %time%
+label-padding = 2.5
+label-background =
+date = %a %d %b
+time = %H:%M
+
+;[module/powermenu]
+;type = custom/text
+;content = 󰐥
+;;content = 襤
+;content-foreground = ${colors.red}
+;content-padding = 1
+;label-margin = 3
+;click-left = ~/.config/polybar/scripts/sysmenu.sh
+;click-right = ~/.config/polybar/scripts/sysmenu.sh
+
+[module/control]
+type = custom/text
+content = 􀜊
+;content = 襤
+content-foreground = ${colors.foreground}
+content-padding = 1
+label-margin = 10
+click-left = ~/.config/polybar/scripts/sysmenu.sh
+click-right = ~/.config/polybar/scripts/sysmenu.sh
+
+
+;[module/title]
+;type = internal/xwindow
+;; Available tags:
+;; <label> (default)
+;format = <label>
+;format-background = ${colors.background}
+;format-foreground = ${colors.foreground}
+;format-padding = 1
+;label-maxlen = 10
+;label-empty = " "
+
+
+;[module/bspwm]
+;type = internal/bspwm
+;format = <label-state>
+;;format = <label-state> <label-mode>
+;format-padding = 1
+;format-foreground = ${colors.foreground}
+;index-sort = true
+;enable-click = true
+;reverse-scroll = true
+;#reverse-scroll = false
+;
+;label-focused = 
+;label-focused-padding = 2
+;
+;label-occupied = 
+;label-occupied-padding = 2
+;
+;label-empty = 
+;label-empty-padding = 2
+;
+;label-monocle = "  "
+;label-tiled = " "
+;label-fullscreen = "  "
+;label-floating = "  "
+;label-pseudotiled = "  "
+;label-locked = "  "
+;;label-sticky = "  "
+;label-private = " 󱁘 "
+
+; Separator in between workspaces
+;label-separator = |
+;label-separator-padding = 10
+;label-separator-foreground = #ffb52a
+[module/search]
+type = custom/text
+content = "􀊫"
+; hack nerd
+content-padding = 1
+content-font = 5
+;content-padding-right = 5
+content-foreground = ${colors.foreground}
+click-left = rofi -show drun
+;click-left = ~/.config/polybar/scripts/menu.sh
+
+
+
+[module/crypto]
+type = custom/script
+exec = echo 󰅸
+format = <label>
+format-padding = 1
+label-padding =
+content-background =
+format-foreground = ${colors.foreground}
+interval = 60
+click-left = cryptonotify
+click-right = $TERMINAL -e cointop &
+
+[module/now-playing]
+type = custom/script
+tail = true
+;format-prefix = ""
+format = <label>
+exec = ~/.config/polybar/scripts/now-playing.sh
+click-right = "kill -USR1 $(pgrep --oldest --parent %pid%)"
+
+
+[module/sep]
+type = custom/text
+content = " "
+
+[module/long-sep]
+type = custom/text
+content = " "
+
+[module/space]
+type = custom/text
+content = " "
+
+[module/whitespace]
+type = custom/text
+content = " "
+
+[module/xwindow]
+type = internal/xwindow
+label = %title:0:60:...%
+format-foreground = ${colors.foreground}
+format-padding = 6
+
+[module/arch]
+typ = custom/text
+content = "  "
+format-foreground = ${colors.foreground}
+format-padding = 4
+
+
+
+[module/workspaces]
+type = internal/xworkspaces
+pin-workspaces = true
+enable-click = true
+enable-scroll = true
+format-padding = 1
+
+icon-default = 
+
+format = <label-state>
+format-background = ${colors.bg1}
+label-active = "  "
+label-occupied = "  "
+label-urgent = "  "
+label-empty = "  "
+
+label-empty-padding = 1
+label-active-padding = 1
+label-urgent-padding = 1
+label-occupied-padding = 1
+
+label-empty-foreground = ${colors.foreground}
+label-active-foreground = ${colors.acolor}
+label-urgent-foreground = ${colors.curgent}
+label-occupied-foreground = ${colors.foreground}
+
+[module/spotify]
+type = custom/script
+tail = true
+interval = 1
+; prefix symbol is shown before the text
+format-prefix = ""
+format = <label>
+exec = ~/.config/polybar/scripts/scroll_spotify_status.sh
+
+[module/spotify-prev]
+type = custom/script
+tail = true
+interval = 1
+exec = echo " 􁋮 "
+format = <label>
+click-left = playerctl previous -p spotify
+
+[module/spotify-play-pause]
+type = custom/ipc
+tail = true
+interval = 1
+hook-0 = echo "􀊗"
+hook-1 = echo "􀊕"
+initial = 1
+click-left = playerctl play-pause -p spotify
+
+[module/spotify-next]
+type = custom/script
+#type = custom/ipc
+tail = true
+interval = 1
+exec = echo " 􁋰"
+format = <label>
+click-left = playerctl next -p spotify
+
+[module/toggle_spotify]
+type = custom/text
+content = "  "
+content-padding = 1
+content-foreground = ${colors.pink}
+click-left = spotify
+click-right = spotify
+
+[module/cmus]
+type = custom/script
+
+exec = ~/.config/polybar/scripts/cmus.sh
+exec-if = pgrep -x cmus
+interval = 1
+
+click-left = cmus-remote --next
+click-right = cmus-remote --prev
+click-middle = cmus-remote --pause
+scroll-up = cmus-remote --volume +5%
+scroll-down = cmus-remote --volume -5%
+
+label-font = 1
+format = <label>
+format-underline = ${colors.foreground-alt}
+label = %output%
+label-maxlen = 50
+
+[module/notification]
+type = custom/text
+content = 
+content-padding = 0
+content-foreground = ${colors.foreground-alt}
+click-left = sh rofi_notif_center.sh
+click-right = sh rofi_notif_center.sh
+
+[module/dunst]
+type = custom/text
+content-foreground = ${colors.foreground}
+content-padding = 1
+content = 󰂜
+click-left = "dunstctl history-pop"
+
+[module/popup-calendar]
+type = custom/script
+exec = ~/.config/polybar/scripts/popup-calendar.sh
+interval = 5
+click-left = ~/.config/polybar/scripts/popup-calendar.sh --popup &
+
+;[module/dunst]
+;type = custom/ipc
+;initial = 1
+;format-foreground = ${colors.foreground}
+;hook-0 = echo "%{A1:notify-send dunstctl && polybar-msg hook dunst 2:}%{A}" &
+;hook-1 = echo "%{A1:notify-send dunstctl && polybar-msg hook dunst 1:}%{A}" &
+
+[module/eww]
+type = custom/text
+content = 
+content-padding = 0
+content-foreground = #d8dee9
+click-left = sh toggle_eww.sh
+click-right = sh toggle_eww.sh
+
+[module/pulseaudio]
+type = internal/pulseaudio
+ramp-volume-foreground = #8959a8
+format-volume-padding = 0
+format-volume-margin = 0
+format-volume = <ramp-volume>
+use-ui-max = true
+interval = 5
+
+ramp-volume-0 = " "
+ramp-volume-1 = " "
+ramp-volume-2 = " "
+
+
+label-muted = 
+label-muted-background = #3e999f
+format-muted-foreground = #3e999f
+format-muted-overline = #3e999f
+format-muted-margin = 2
+format-muted-padding = 2
+
+[module/volume]
+type = internal/pulseaudio
+format-volume = <ramp-volume> <label-volume>
+format-volume-font = 10
+format-volume-padding = 0
+;ramp-volume-foreground = ${colors.foreground}
+label-volume = %percentage%%
+label-volume-padding = 0
+;label-muted-foreground = ${colors.foreground}
+;format-volume-foreground = ${colors.purple}
+format-muted-foreground = ${colors.red}
+format-muted-underline = ${colors.red}
+ramp-volume-foreground = ${colors.purple}
+label-muted = "婢 "
+ramp-volume-0 = ""
+ramp-volume-1 = ""
+ramp-volume-2 = ""
+ramp-volume-3 = ""
+ramp-volume-4 = ""
+ramp-volume-5 = ""
+ramp-volume-6 = ""
+
+
+[module/xkeyboard]
+type = internal/xkeyboard
+blacklist-0 = num lock
+
+format-prefix = 
+format-foreground = ${colors.foreground-alt}
+label-layout = " %layout%"
+
+label-indicator-foreground = ${colors.alert}
+label-indicator-padding = 2
+
+[module/filesystem]
+type = internal/fs
+interval = 25
+
+mount-0 = /
+
+format-mounted = <label-mounted>
+format-mounted-foreground = #b48ead
+format-mounted-prefix = " "
+label-mounted = " %free%"
+
+format-unmounted = <label-unmounted>
+format-unmounted-prefix =
+label-unmounted = %mountpoint%: not mounted
+
+[module/updates]
+type = custom/script
+exec = xbps-updates
+format = <label>
+interval = 4600
+label = %output%
+label-padding = 2
+label-foreground = #81A1C1
+
+
+[module/cpu]
+type = internal/cpu
+interval = 2
+format-prefix = " "
+format-prefix-foreground = #b48ead
+label = %percentage:2%%
+
+
+[module/memory]
+type = internal/memory
+interval = 2
+format-prefix = " "
+format-prefix-foreground = #5e81ac
+label = %percentage_used%%
+
+[module/globalmenu]
+type = custom/script
+exec = ~/.config/polybar/globalmenu.sh
+format = <label>
+label = %output%
+;type = custom/ipc
+;hook-0 = xfce4-panel | sed -e 's/^"//' -e 's/"$//'
+;;exec = awk /usr/bin/xfce4-panel
+;initial = 1
+;format-underline = ${colors.cyber}
+;format-padding = 1
+
+[module/global]
+type = custom/script
+exec = ~/.config/polybar/globaldmenu
+label = %output%
+
+[settings]
+screenchange-reload = true
+;compositing-background = xor
+;compositing-background = screen
+;compositing-foreground = source
+;compositing-border = over
+;pseudo-transparency = false
+
+[global/wm]
+margin-top = 0
+margin-bottom = 0
+
+[module/options_open]
+type = custom/text
+content-foreground = ${colors.foreground}
+content = ""
+click-left = ~/.config/polybar/scripts/polybar_wrapper options
+
+[module/options_close]
+type = custom/text
+content-foreground = ${colors.primary}
+content = ""
+click-left = ~/.config/polybar/scripts/polybar_wrapper options
+
+;[bar/bottom]
+;width = 8%
+;height = 15
+;offset-x = 46%
+;;offset-x = 35%
+;;offset-x = 0.5%
+;offset-y = 2.5%
+;radius = 7.0
+;fixed-center = true
+;bottom = false
+;enable-ipc = true
+;;tray-offset-x = 515
+;;tray-detached = true
+;
+;background = ${colors.background}
+;foreground = ${colors.foreground}
+;
+;line-size = 0
+;line-color = ${colors.background-alt}
+;
+;;border-top-size = 1
+;;border-bottom-size = 1
+;;border-right-size = 1
+;;border-left-size = 1
+;;border-color = ${colors.foreground}
+;;border-size = 2
+;;border-color = ${colors.background}
+;
+;padding-left = 0
+;padding-right = 0
+;
+;module-margin-left = 0
+;module-margin-right = 0
+;; Font for date
+;font-0 = "SF Pro Mono:style=Display Bold:size=10;2"
+;; Font for bspwm/workspaces
+;font-1 = "UbuntuMono Nerd font:size=10.5;2"
+;; Font for crypto, dunst
+;font-2 = "Material Design Icons:style=Bold:size=11;3"
+;; Font for menu
+;font-3 = "Material Design Icons:style=Bold:size=14;5"
+;; Font for search and controlCenter
+;font-4 = "SF Pro:style=Medium:size=10.5;3"
+;
+;modules-center = bspwm sepp
+;
+;;wm-restack = bspwm
+;
+;override-redirect = true
+;
+;;; scroll-up = bspwm-desknext
+;;; scroll-down = bspwm-deskprev
+;
+;;scroll-up = i3wm-wsnext
+;;scroll-down = i3wm-wsprev
+;
+;cursor-click = pointer
+;cursor-scroll = ns-resize
+;
+;
+;[bar/left]
+;width = 5%
+;height = 15
+;offset-x = 2.5%
+;;offset-x = 35%
+;;offset-x = 0.5%
+;offset-y = 2.5%
+;radius = 7.0
+;fixed-center = true
+;bottom = false
+;enable-ipc = true
+;;tray-offset-x = 515
+;;tray-detached = true
+;
+;background = ${colors.background}
+;foreground = ${colors.foreground}
+;
+;line-size = 0
+;line-color = ${colors.background-alt}
+;
+;;border-top-size = 1
+;;border-bottom-size = 1
+;;border-right-size = 1
+;;border-left-size = 1
+;;border-color = ${colors.foreground}
+;;border-size = 2
+;;border-color = ${colors.background}
+;
+;padding-left = 0
+;padding-right = 0
+;
+;module-margin-left = 0
+;module-margin-right = 0
+;; Font for date
+;font-0 = "SF Pro Mono:style=Display Bold:size=10;2"
+;; Font for bspwm/workspaces
+;font-1 = "UbuntuMono Nerd font:size=11.5;2"
+;; Font for crypto, dunst
+;font-2 = "Material Design Icons:style=Bold:size=11;3"
+;; Font for menu
+;font-3 = "Material Design Icons:style=Bold:size=14;5"
+;; Font for search and controlCenter
+;font-4 = "SF Pro:style=Medium:size=10.5;3"
+;
+;modules-left = close blank minimize blank maximize blank
+;
+;;wm-restack = bspwm
+;
+;override-redirect = true
+;
+;;; scroll-up = bspwm-desknext
+;;; scroll-down = bspwm-deskprev
+;
+;;scroll-up = i3wm-wsnext
+;;scroll-down = i3wm-wsprev
+;
+;cursor-click = pointer
+;cursor-scroll = ns-resize
+;
+;;[module/decorations]
+;;type = custom/text
+;
+;[module/blank]
+;type = custom/text
+;content = " "
+
+; vim:ft=dosini
diff --git a/.config/polybar/launch.sh b/.config/polybar/launch.sh
new file mode 100755
index 0000000..1c0ac10
--- /dev/null
+++ b/.config/polybar/launch.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env sh
+
+# Terminate already running bar instances
+killall -q polybar
+
+# Wait until the processes have been shut down
+while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
+
+# Launch bar
+polybar top &
+#polybar bottom &
+#polybar left &
+#polybar top_external &
+
+#sleep 5 && xdo raise -N "polybar-bottom_LVDS-1" &
+if [[ $(xrandr -q | grep 'HDMI-1 connected') ]]: then
+ polybar top_external &
+fi
diff --git a/.config/polybar/scripts/bluetooth.sh b/.config/polybar/scripts/bluetooth.sh
new file mode 100755
index 0000000..061604b
--- /dev/null
+++ b/.config/polybar/scripts/bluetooth.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ]
+then
+ echo ""
+else
+ if [ $(echo info | bluetoothctl | grep 'Device' | wc -c) -eq 0 ]
+ then
+ echo ""
+ fi
+ echo ""
+fi
+
diff --git a/.config/polybar/scripts/check-network.sh b/.config/polybar/scripts/check-network.sh
new file mode 100755
index 0000000..dabe74c
--- /dev/null
+++ b/.config/polybar/scripts/check-network.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+count=0
+disconnected="睊"
+wireless_connected="直"
+ethernet_connected="泌"
+
+ID="$(ip link | awk '/state UP/ {print $2}')"
+
+while true; do
+ if (ping -c 1 archlinux.org || ping -c 1 google.com || ping -c 1 bitbucket.org || ping -c 1 github.com || ping -c 1 sourceforge.net) &>/dev/null; then
+ if [[ $ID == e* ]]; then
+ echo "$ethernet_connected" ; sleep 25
+ else
+ echo "$wireless_connected" ; sleep 25
+ fi
+ else
+ echo "$disconnected" ; sleep 0.5
+ fi
+done
+
diff --git a/.config/polybar/scripts/check_updates.sh b/.config/polybar/scripts/check_updates.sh
new file mode 100755
index 0000000..52e51a9
--- /dev/null
+++ b/.config/polybar/scripts/check_updates.sh
@@ -0,0 +1,118 @@
+
+#!/usr/bin/bash
+#
+# checkupdates: Safely print a list of pending updates.
+#
+# Copyright (c) 2013 Kyle Keen <keenerd@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+declare -r myname='checkupdates'
+declare -r myver='1.0.0'
+
+plain() {
+ (( QUIET )) && return
+ local mesg=$1; shift
+ printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1
+}
+
+msg() {
+ (( QUIET )) && return
+ local mesg=$1; shift
+ printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1
+}
+
+msg2() {
+ (( QUIET )) && return
+ local mesg=$1; shift
+ printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1
+}
+
+ask() {
+ local mesg=$1; shift
+ printf "${BLUE}::${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}" "$@" >&1
+}
+
+warning() {
+ local mesg=$1; shift
+ printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+}
+
+error() {
+ local mesg=$1; shift
+ printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+}
+
+# check if messages are to be printed using color
+unset ALL_OFF BOLD BLUE GREEN RED YELLOW
+if [[ -t 2 && ! $USE_COLOR = "n" ]]; then
+ # prefer terminal safe colored and bold text when tput is supported
+ if tput setaf 0 &>/dev/null; then
+ ALL_OFF="$(tput sgr0)"
+ BOLD="$(tput bold)"
+ BLUE="${BOLD}$(tput setaf 4)"
+ GREEN="${BOLD}$(tput setaf 2)"
+ RED="${BOLD}$(tput setaf 1)"
+ YELLOW="${BOLD}$(tput setaf 3)"
+ else
+ ALL_OFF="\e[1;0m"
+ BOLD="\e[1;1m"
+ BLUE="${BOLD}\e[1;34m"
+ GREEN="${BOLD}\e[1;32m"
+ RED="${BOLD}\e[1;31m"
+ YELLOW="${BOLD}\e[1;33m"
+ fi
+fi
+readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
+
+
+if (( $# > 0 )); then
+ echo "${myname} v${myver}"
+ echo
+ echo "Safely print a list of pending updates"
+ echo
+ echo "Usage: ${myname}"
+ echo
+ echo 'Note: Export the "CHECKUPDATES_DB" variable to change the path of the temporary database.'
+ exit 0
+fi
+
+if ! type -P fakeroot >/dev/null; then
+ error 'Cannot find the fakeroot binary.'
+ exit 1
+fi
+
+if [[ -z $CHECKUPDATES_DB ]]; then
+ CHECKUPDATES_DB="${TMPDIR:-/tmp}/checkup-db-${USER}/"
+fi
+
+trap 'rm -f $CHECKUPDATES_DB/db.lck' INT TERM EXIT
+
+DBPath="$(pacman-conf DBPath)"
+if [[ -z "$DBPath" ]] || [[ ! -d "$DBPath" ]]; then
+ DBPath="/var/lib/pacman/"
+fi
+
+mkdir -p "$CHECKUPDATES_DB"
+ln -s "${DBPath}/local" "$CHECKUPDATES_DB" &> /dev/null
+if ! fakeroot -- pacman -Sy --dbpath "$CHECKUPDATES_DB" --logfile /dev/null &> /dev/null; then
+ error 'Cannot fetch updates'
+ exit 1
+fi
+pacman -Qu --dbpath "$CHECKUPDATES_DB" 2> /dev/null | grep -v '\[.*\]'
+
+exit 0
+
+# vim: set noet:
diff --git a/.config/polybar/scripts/cmus.sh b/.config/polybar/scripts/cmus.sh
new file mode 100755
index 0000000..2f42c63
--- /dev/null
+++ b/.config/polybar/scripts/cmus.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+prepend_zero () {
+ seq -f "%02g" $1 $1
+}
+
+artist=$(echo -n $(cmus-remote -C status | grep "tag artist" | cut -c 12-))
+
+if [[ $artist = *[!\ ]* ]]; then
+ song=$(echo -n $(cmus-remote -C status | grep title | cut -c 11-))
+ position=$(cmus-remote -C status | grep position | cut -c 10-)
+ minutes1=$(prepend_zero $(($position / 60)))
+ seconds1=$(prepend_zero $(($position % 60)))
+ duration=$(cmus-remote -C status | grep duration | cut -c 10-)
+ minutes2=$(prepend_zero $(($duration / 60)))
+ seconds2=$(prepend_zero $(($duration % 60)))
+ echo -n "$artist - $song "
+else
+ echo
+fi
+
+#prepend_zero () {
+# seq -f "%02g" $1 $1
+#}
+#
+#artist=$(echo -n $(cmus-remote -C status | grep "tag artist" | cut -c 12-))
+#
+#if [[ $artist = *[!\ ]* ]]; then
+# song=$(echo -n $(cmus-remote -C status | grep title | cut -c 11-))
+# position=$(cmus-remote -C status | grep position | cut -c 10-)
+# minutes1=$(prepend_zero $(($position / 60)))
+# seconds1=$(prepend_zero $(($position % 60)))
+# duration=$(cmus-remote -C status | grep duration | cut -c 10-)
+# minutes2=$(prepend_zero $(($duration / 60)))
+# seconds2=$(prepend_zero $(($duration % 60)))
+# echo -n "$artist - $song [$minutes1:$seconds1/$minutes2:$seconds2]"
+#else
+# echo
+#fi
diff --git a/.config/polybar/scripts/get_spotify_status.sh b/.config/polybar/scripts/get_spotify_status.sh
new file mode 100755
index 0000000..f04400d
--- /dev/null
+++ b/.config/polybar/scripts/get_spotify_status.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+# The name of polybar bar which houses the main spotify module and the control modules.
+PARENT_BAR="now-playing"
+PARENT_BAR_PID=$(pgrep -a "polybar" | grep "$PARENT_BAR" | cut -d" " -f1)
+
+# Set the source audio player here.
+# Players supporting the MPRIS spec are supported.
+# Examples: spotify, vlc, chrome, mpv and others.
+# Use `playerctld` to always detect the latest player.
+# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
+#PLAYER="spotify"
+PLAYER="playerctld"
+
+# Format of the information displayed
+# Eg. {{ artist }} - {{ album }} - {{ title }}
+# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
+FORMAT="{{ title }} - {{ artist }}"
+
+# Sends $2 as message to all polybar PIDs that are part of $1
+update_hooks() {
+ while IFS= read -r id
+ do
+ polybar-msg -p "$id" hook spotify-play-pause $2 1>/dev/null 2>&1
+ done < <(echo "$1")
+}
+
+PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
+EXIT_CODE=$?
+
+if [ $EXIT_CODE -eq 0 ]; then
+ STATUS=$PLAYERCTL_STATUS
+else
+ STATUS="No player is running"
+fi
+
+if [ "$1" == "--status" ]; then
+ echo "$STATUS"
+else
+ if [ "$STATUS" = "Stopped" ]; then
+ echo "No music is playing"
+ elif [ "$STATUS" = "Paused" ]; then
+ update_hooks "$PARENT_BAR_PID" 2
+ playerctl --player=$PLAYER metadata --format "$FORMAT"
+ elif [ "$STATUS" = "No player is running" ]; then
+ echo ""
+ else
+ update_hooks "$PARENT_BAR_PID" 1
+ playerctl --player=$PLAYER metadata --format "$FORMAT"
+ fi
+fi
+
diff --git a/.config/polybar/scripts/menu.sh b/.config/polybar/scripts/menu.sh
new file mode 100755
index 0000000..93f3779
--- /dev/null
+++ b/.config/polybar/scripts/menu.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Custom Rofi Script
+
+BORDER="#1F1F1F"
+SEPARATOR="#1F1F1F"
+FOREGROUND="#A9ABB0"
+BACKGROUND="#1F1F1F"
+BACKGROUND_ALT="#252525"
+HIGHLIGHT_BACKGROUND="#FF6F00"
+HIGHLIGHT_FOREGROUND="#FFFFFF"
+
+BLACK="#000000"
+WHITE="#ffffff"
+RED="#e53935"
+GREEN="#43a047"
+YELLOW="#fdd835"
+BLUE="#1e88e5"
+MAGENTA="#00897b"
+CYAN="#00acc1"
+PINK="#d81b60"
+PURPLE="#8e24aa"
+INDIGO="#3949ab"
+TEAL="#00897b"
+LIME="#c0ca33"
+AMBER="#ffb300"
+ORANGE="#fb8c00"
+BROWN="#6d4c41"
+GREY="#757575"
+BLUE_GREY="#546e7a"
+DEEP_PURPLE="#5e35b1"
+DEEP_ORANGE="#f4511e"
+LIGHT_BLUE="#039be5"
+LIGHT_GREEN="#7cb342"
+
+# Launch Rofi
+rofi -no-lazy-grab -show drun -display-drun "Applications " -drun-display-format "{name}" -hide-scrollbar true \
+-hide-sidebar-mode true \
+-bw 0 \
+-lines 15 \
+-line-padding 10 \
+-padding 0 \
+-width 20 \
+-xoffset 7 -yoffset 28 \
+-location 1 \
+-columns 1 \
+-show-icons -icon-theme "Papirus" \
+-color-enabled true \
+-color-window "$BACKGROUND,$BORDER,$SEPARATOR" \
+-color-normal "$BACKGROUND_ALT,$FOREGROUND,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-active "$BACKGROUND,$MAGENTA,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-urgent "$BACKGROUND,$YELLOW,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND"
+#rofi -no-lazy-grab -show drun -display-drun "Applications " -drun-display-format "{name}" -hide-scrollbar true -sidebar-mode false -bw 0 -lines 6 -line-padding 10 -padding 20 -width 30 -xoffset 7 -yoffset 25 -location 1 -columns 2 -show-icons -icon-theme "Papirus"
+
+# More Options
+# -fullscreen \
+
+# Theming help
+# color window = background, border, separator
+# color normal = background, foreground, background-alt, highlight-background, highlight-foreground
+# color active = background, foreground, background-alt, highlight-background, highlight-foreground
+# color urgent = background, foreground, background-alt, highlight-background, highlight-foreground
+
diff --git a/.config/polybar/scripts/menu.shsave b/.config/polybar/scripts/menu.shsave
new file mode 100755
index 0000000..ea5bf8e
--- /dev/null
+++ b/.config/polybar/scripts/menu.shsave
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Custom Rofi Script
+
+BORDER="#1F1F1F"
+SEPARATOR="#1F1F1F"
+FOREGROUND="#A9ABB0"
+BACKGROUND="#1F1F1F"
+BACKGROUND_ALT="#252525"
+HIGHLIGHT_BACKGROUND="#FF6F00"
+HIGHLIGHT_FOREGROUND="#FFFFFF"
+
+BLACK="#000000"
+WHITE="#ffffff"
+RED="#e53935"
+GREEN="#43a047"
+YELLOW="#fdd835"
+BLUE="#1e88e5"
+MAGENTA="#00897b"
+CYAN="#00acc1"
+PINK="#d81b60"
+PURPLE="#8e24aa"
+INDIGO="#3949ab"
+TEAL="#00897b"
+LIME="#c0ca33"
+AMBER="#ffb300"
+ORANGE="#fb8c00"
+BROWN="#6d4c41"
+GREY="#757575"
+BLUE_GREY="#546e7a"
+DEEP_PURPLE="#5e35b1"
+DEEP_ORANGE="#f4511e"
+LIGHT_BLUE="#039be5"
+LIGHT_GREEN="#7cb342"
+
+# Launch Rofi
+rofi -no-lazy-grab -show drun -display-drun "Applications " -drun-display-format "{name}" -hide-scrollbar false \
+-hide-sidebar-mode true \
+-bw 0 \
+-lines 15 \
+-line-padding 10 \
+-padding 0 \
+-width 20 \
+-xoffset 7 -yoffset 28 \
+-location 1 \
+-columns 1 \
+-show-icons -icon-theme "Papirus" \
+-color-enabled true \
+-color-window "$BACKGROUND,$BORDER,$SEPARATOR" \
+-color-normal "$BACKGROUND_ALT,$FOREGROUND,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-active "$BACKGROUND,$MAGENTA,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-urgent "$BACKGROUND,$YELLOW,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND"
+#rofi -no-lazy-grab -show drun -display-drun "Applications " -drun-display-format "{name}" -hide-scrollbar true -sidebar-mode false -bw 0 -lines 6 -line-padding 10 -padding 20 -width 30 -xoffset 7 -yoffset 25 -location 1 -columns 2 -show-icons -icon-theme "Papirus"
+
+# More Options
+# -fullscreen \
+
+# Theming help
+# color window = background, border, separator
+# color normal = background, foreground, background-alt, highlight-background, highlight-foreground
+# color active = background, foreground, background-alt, highlight-background, highlight-foreground
+# color urgent = background, foreground, background-alt, highlight-background, highlight-foreground
+
diff --git a/.config/polybar/scripts/menu_full.sh b/.config/polybar/scripts/menu_full.sh
new file mode 100755
index 0000000..9f898a4
--- /dev/null
+++ b/.config/polybar/scripts/menu_full.sh
@@ -0,0 +1,65 @@
+
+#!/bin/bash
+
+# Custom Rofi Script
+
+BORDER="#1F1F1F"
+SEPARATOR="#1F1F1F"
+FOREGROUND="#A9ABB0"
+BACKGROUND="#1F1F1F"
+BACKGROUND_ALT="#252525"
+HIGHLIGHT_BACKGROUND="#FF6F00"
+HIGHLIGHT_FOREGROUND="#FFFFFF"
+
+BLACK="#000000"
+WHITE="#ffffff"
+RED="#e53935"
+GREEN="#43a047"
+YELLOW="#fdd835"
+BLUE="#1e88e5"
+MAGENTA="#00897b"
+CYAN="#00acc1"
+PINK="#d81b60"
+PURPLE="#8e24aa"
+INDIGO="#3949ab"
+TEAL="#00897b"
+LIME="#c0ca33"
+AMBER="#ffb300"
+ORANGE="#fb8c00"
+BROWN="#6d4c41"
+GREY="#757575"
+BLUE_GREY="#546e7a"
+DEEP_PURPLE="#5e35b1"
+DEEP_ORANGE="#f4511e"
+LIGHT_BLUE="#039be5"
+LIGHT_GREEN="#7cb342"
+
+# Launch Rofi
+rofi -no-lazy-grab -show drun \
+-display-drun "Applications " -drun-display-format "{name}" \
+-hide-scrollbar true \
+-bw 0 \
+-lines 10 \
+-line-padding 15 \
+-padding 60 \
+-width 30 \
+-xoffset 10 -yoffset 40 \
+-location 1 \
+-fullscreen \
+-columns 4 \
+-show-icons -icon-theme "Papirus" \
+-font "Fantasque Sans Mono 10" \
+-color-enabled true \
+-color-window "$BACKGROUND,$BORDER,$SEPARATOR" \
+-color-normal "$BACKGROUND_ALT,$FOREGROUND,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-active "$BACKGROUND,$MAGENTA,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND" \
+-color-urgent "$BACKGROUND,$YELLOW,$BACKGROUND_ALT,$HIGHLIGHT_BACKGROUND,$HIGHLIGHT_FOREGROUND"
+
+# More Options
+# -fullscreen \
+
+# Theming help
+# color window = background, border, separator
+# color normal = background, foreground, background-alt, highlight-background, highlight-foreground
+# color active = background, foreground, background-alt, highlight-background, highlight-foreground
+# color urgent = background, foreground, background-alt, highlight-background, highlight-foreground
diff --git a/.config/polybar/scripts/now-playing.sh b/.config/polybar/scripts/now-playing.sh
new file mode 100755
index 0000000..8fa6000
--- /dev/null
+++ b/.config/polybar/scripts/now-playing.sh
@@ -0,0 +1,217 @@
+#!/usr/bin/env python3
+import dbus
+import signal
+import time
+from unicodedata import east_asian_width
+
+# Config options
+
+# (int) : Length of media info string. If length of string exceedes this value, the text will scroll. Default value is 20
+message_display_len = 20
+
+# (int) : Font index of polybar. this value should be 1 more than the font value specified in polybar config.
+font_index = 1
+
+# (float) : Update speed of the text in seconds.
+update_delay = 0.3
+
+# (list) : list of chars containing previous, play, pause, next glyphs for media controls in respective order
+control_chars = ['','','','']
+
+# (dict) : dict of char icons to display as prefix.
+# If player name is available as key, then use the corressponding icon,
+# else default key value.
+# example:
+display_player_prefix = {
+ "spotify": ' ',
+ "firefox": ' ',
+ "default": ' '
+}
+
+# (list) : list of metadata fields based on mpris sepecification.
+# For more details/ field names, refer [mpris sepecification](https://www.freedesktop.org/wiki/Specifications/mpris-spec/metadata/)
+metadata_fields = ["xesam:title", "xesam:artist"]
+
+# (char) : separator for metadata fields
+metadata_separator = "-"
+
+# (bool) : Hide text when no player is available? True disables the output for no players.
+hide_output = False
+
+# Defult initialization
+current_player = None
+player_names = None
+players = None
+message = None
+display_text = ""
+display_prefix = " "
+display_suffix = ""
+last_player_name = None
+
+session_bus = dbus.SessionBus()
+
+def get_name(player_name ):
+ if player_name not in player_names:
+ return
+ name = ".".join(player_name.split(".")[3:])
+ return name
+
+def get_name_by_index(index):
+ if index >= len(player_names):
+ return
+ return get_name(player_names[index])
+
+def get_status(player):
+ status = ""
+ try:
+ status = player.Get('org.mpris.MediaPlayer2.Player', 'PlaybackStatus', dbus_interface='org.freedesktop.DBus.Properties')
+ except Exception as e:
+ pass
+ return status
+
+def get_metadata(player):
+ metadata = {}
+ try:
+ metadata = player.Get('org.mpris.MediaPlayer2.Player', 'Metadata', dbus_interface='org.freedesktop.DBus.Properties')
+ except Exception as e:
+ pass
+ return metadata
+
+def update_prefix_suffix(player_name="", status=""):
+ global display_prefix, display_suffix, status_paused
+
+ player_option = ""
+ if player_name != "":
+ player_option = "-p " + player_name
+
+ prev_button = "%%{A:playerctl %s previous :}%c%%{A}" %(player_option,control_chars[0])
+ play_button = "%%{A:playerctl %s play :}%c%%{A}" %(player_option,control_chars[1])
+ pause_button = "%%{A:playerctl %s pause :}%c%%{A}" %(player_option,control_chars[2])
+ next_button = "%%{A:playerctl %s next :}%c%%{A}" %(player_option,control_chars[3])
+
+ suffix = "| " + prev_button
+ if status == "Playing":
+ suffix += " "+pause_button
+ status_paused = False
+ else:
+ suffix += " "+play_button
+ status_paused = True
+ suffix += " "+next_button
+ # print(suffix)
+ display_suffix = suffix
+
+ for key in display_player_prefix.keys():
+ if key in player_name:
+ display_prefix = display_player_prefix[key]
+ break
+ else:
+ display_prefix = display_player_prefix["default"]
+
+def update_players():
+ global player_names, players, session_bus, current_player, last_player_name
+ player_names = [service for service in session_bus.list_names() if service.startswith('org.mpris.MediaPlayer2.')]
+ players = [session_bus.get_object(service, '/org/mpris/MediaPlayer2') for service in player_names]
+ if last_player_name != get_name(current_player):
+ for index, player in enumerate(player_names):
+ if get_name(player) == last_player_name:
+ current_player = index
+
+def handle_event(*args):
+ global current_player, players, last_player_name
+ update_players()
+ if len(players) == 0:
+ return
+ current_player += 1
+ current_player %= len(players)
+ last_player_name = getname_by_index(current_player)
+# print("SIGUSR1: updated values - current_player = %d players len = %d"%(current_player,len(players)))
+
+def update_message():
+ global players, current_player,player_names, message, display_text, message_display_len, display_suffix, last_player_name
+ if len(players) == 0:
+ tmp_message = "No player available"
+ update_prefix_suffix()
+ else:
+ name = get_name_by_index(current_player)
+ status = get_status(players[current_player])
+ metadata_obj = get_metadata(players[current_player])
+ metadata_string_list = []
+ for field in metadata_fields:
+ result = metadata_obj.get(field)
+ if type(result) == dbus.Array:
+ result = result[0]
+ if not result:
+ result = "No "+field.split(":")[1]
+ metadata_string_list.append(str(result))
+ metadata_string = (" "+metadata_separator+" ").join(metadata_string_list)
+ if visual_len(metadata_string) > message_display_len:
+ metadata_string = " " + metadata_string + " |"
+ update_prefix_suffix(name,status)
+ tmp_message = ""
+ if metadata_string:
+ tmp_message += str(metadata_string)
+ last_player_name = name
+ if message != tmp_message:
+ message = tmp_message
+ display_text = message
+
+def scroll():
+ global display_text, message_display_len, status_paused
+ if not status_paused:
+ if len(display_text) > message_display_len:
+ display_text = display_text[1:] + display_text[0]
+ elif len(display_text) < message_display_len:
+ display_text += " "*(message_display_len - len(display_text))
+
+def visual_len(text):
+ visual_length = 0
+ for ch in text:
+ width = east_asian_width(ch)
+ if width == 'W' or width == 'F':
+ visual_length += 1
+ visual_length += 1
+ return visual_length
+
+def make_visual_len(text, visual_desired_length):
+ visual_length = 0
+ altered_text = ''
+ for char in text:
+ if visual_length < visual_desired_length:
+ width = east_asian_width(char)
+ if width == 'W' or width == 'F':
+ visual_length += 2
+ else:
+ visual_length += 1
+ altered_text += char
+ else:
+ break
+ if visual_length == visual_desired_length + 1:
+ altered_text = altered_text[:-1] + ' '
+ elif visual_length < visual_desired_length:
+ altered_text += ' ' * (visual_desired_length - visual_length)
+ return altered_text
+
+def print_text():
+ global display_text, message_display_len, players, player_names, display_prefix, display_suffix
+ if hide_output and len(players)==0:
+ print("", flush = True)
+ return
+ scroll()
+ print(display_prefix + " " +
+ "%%{T%d}" % (font_index) +
+ make_visual_len(display_text, message_display_len) +
+ "%{T-}" + display_suffix, flush=True)
+
+def main():
+ global current_player, players
+ update_players()
+ current_player = 0
+ while True:
+ time.sleep(update_delay)
+ update_players()
+ update_message()
+ print_text()
+
+if __name__ == '__main__':
+ signal.signal(signal.SIGUSR1, handle_event)
+ main()
diff --git a/.config/polybar/scripts/polybar_wrapper b/.config/polybar/scripts/polybar_wrapper
new file mode 100755
index 0000000..901bb28
--- /dev/null
+++ b/.config/polybar/scripts/polybar_wrapper
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+DIR=$(dirname $(realpath $0))
+
+WINDOW_ID_CONKY=/tmp/conky_window_id
+WINDOW_ID_TOP=/tmp/polybar_top_window_id
+WINDOW_ID_EXPANDED=/tmp/polybar_expanded_window_id
+
+conky_launch() {
+ # Hacky X11 magic to make Conky appear above polybar
+ killall conky
+ # xdotool search can't find Conky's window but fortunately Conky outputs it
+ conky -c ~/.config/conky/config 2> /tmp/conky_out
+ # Extract the hex window id from Conky's output
+ HEX=$(awk '/drawing to created window/ {print $NF}' /tmp/conky_out | tr -d '()' | awk -Fx '{print $2}')
+ WIN_ID=$(( 16#$HEX )) # convert to decimal
+ xdotool windowunmap $WIN_ID
+ echo $WIN_ID > $WINDOW_ID_CONKY
+}
+
+polybar_launch() {
+ killall polybar
+
+ polybar top &
+ xdotool search --sync --pid $! > $WINDOW_ID_TOP
+
+ polybar expanded &
+ xdotool search --sync --pid $! > $WINDOW_ID_EXPANDED
+
+ bar_collapse
+}
+
+launch() {
+ # Temporarily disable conky until I update the config
+ # conky_launch
+ # sleep 0.2
+ polybar_launch
+}
+
+bar_expand() {
+ xdotool windowmap $(cat $WINDOW_ID_EXPANDED)
+ xdotool windowunmap $(cat $WINDOW_ID_TOP)
+}
+
+bar_collapse() {
+ xdotool windowunmap $(cat $WINDOW_ID_EXPANDED)
+ xdotool windowmap $(cat $WINDOW_ID_TOP)
+}
+
+rofi_open() {
+ options_close
+ bar_expand &
+ rofi -modi run -show run
+ bar_collapse
+}
+
+drun_open() {
+ bar_expand &
+ rofi -theme drun -modi drun -show drun -drun-categories Custom
+ bar_collapse
+}
+
+search_open() {
+ options_close
+ bar_expand &
+ rofi -theme window -modi window -show window
+ bar_collapse
+}
+
+options_open() {
+ bar_expand
+ $DIR/rofi_option_menu
+ bar_collapse
+ # echo "open" > /tmp/polybar_side_panel_state
+ # ID_CONKY=$(cat $WINDOW_ID_CONKY)
+ # xdotool windowmap $ID_CONKY
+ # xdotool windowraise $ID_CONKY
+ # ~/.config/i3/scripts/music_player show_applet
+}
+
+case "$1" in
+ rofi)
+ rofi_open;;
+ search)
+ search_open;;
+ drun)
+ drun_open;;
+ options)
+ options_open;;
+ launch)
+ launch;;
+esac
diff --git a/.config/polybar/scripts/popup-calendar.sh b/.config/polybar/scripts/popup-calendar.sh
new file mode 100755
index 0000000..4e5303c
--- /dev/null
+++ b/.config/polybar/scripts/popup-calendar.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+BAR_HEIGHT=22 # polybar height
+BORDER_SIZE=1 # border size from your wm settings
+YAD_WIDTH=222 # 222 is minimum possible value
+YAD_HEIGHT=193 # 193 is minimum possible value
+DATE="$(date +"%a %d %b, %H:%M")"
+
+case "$1" in
+--popup)
+ if [ "$(xdotool getwindowfocus getwindowname)" = "yad-calendar" ]; then
+ exit 0
+ fi
+
+ eval "$(xdotool getmouselocation --shell)"
+ eval "$(xdotool getdisplaygeometry --shell)"
+
+ # X
+ if [ "$((X + YAD_WIDTH / 2 + BORDER_SIZE))" -gt "$WIDTH" ]; then #Right side
+ : $((pos_x = WIDTH - YAD_WIDTH - BORDER_SIZE))
+ elif [ "$((X - YAD_WIDTH / 2 - BORDER_SIZE))" -lt 0 ]; then #Left side
+ : $((pos_x = BORDER_SIZE))
+ else #Center
+ : $((pos_x = X - YAD_WIDTH / 2))
+ fi
+
+ # Y
+ if [ "$Y" -gt "$((HEIGHT / 2))" ]; then #Bottom
+ : $((pos_y = HEIGHT - YAD_HEIGHT - BAR_HEIGHT - BORDER_SIZE))
+ else #Top
+ : $((pos_y = BAR_HEIGHT + BORDER_SIZE))
+ fi
+
+ yad --calendar --undecorated --fixed --close-on-unfocus --no-buttons \
+ --width="$YAD_WIDTH" --height="$YAD_HEIGHT" --posx="$pos_x" --posy="$pos_y" \
+ --title="yad-calendar" --borders=0 >/dev/null &
+ ;;
+*)
+ echo "$DATE"
+ ;;
+esac
diff --git a/.config/polybar/scripts/rofi-power.sh b/.config/polybar/scripts/rofi-power.sh
new file mode 100755
index 0000000..87ac92c
--- /dev/null
+++ b/.config/polybar/scripts/rofi-power.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env sh
+#
+# A rofi powered menu to execute power related action.
+# Uses: amixer mpc poweroff reboot rofi rofi-prompt
+
+power_off=''
+reboot=''
+lock=''
+suspend='鈴'
+log_out=''
+
+chosen=$(printf '%s;%s;%s;%s;%s\n' "$power_off" "$reboot" "$lock" "$suspend" \
+ "$log_out" \
+ | rofi -theme '~/.config/rofi/themes/power.rasi' \
+ -dmenu \
+ -sep ';' \
+ -selected-row 2)
+
+case "$chosen" in
+ "$power_off")
+ rofi-prompt --query 'Shutdown?' && poweroff
+ ;;
+
+ "$reboot")
+ rofi-prompt --query 'Reboot?' && reboot
+ ;;
+
+ "$lock")
+ # TODO Add your lockscreen command.
+ ;;
+
+ "$suspend")
+ # Pause music and mute volume before suspending.
+ mpc --quiet pause
+ amixer set Master mute
+ # TODO Add your suspend command.
+ ;;
+
+ "$log_out")
+ # TODO Add your log out command.
+ ;;
+
+ *) exit 1 ;;
+esac
+
diff --git a/.config/polybar/scripts/scroll_spotify_status.sh b/.config/polybar/scripts/scroll_spotify_status.sh
new file mode 100755
index 0000000..74e0bfd
--- /dev/null
+++ b/.config/polybar/scripts/scroll_spotify_status.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# see man zscroll for documentation of the following parameters
+zscroll -l 20 \
+ --delay 0.1 \
+ --scroll-padding " " \
+ --match-command "$HOME/.config/polybar/scripts/get_spotify_status.sh --status" \
+ --match-text "Playing" "--scroll 1" \
+ --match-text "Paused" "--scroll 0" \
+ --update-check true "$HOME/.config/polybar/scripts/get_spotify_status.sh" &
+
+wait
diff --git a/.config/polybar/scripts/sysmenu.sh b/.config/polybar/scripts/sysmenu.sh
new file mode 100755
index 0000000..721bc1d
--- /dev/null
+++ b/.config/polybar/scripts/sysmenu.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# display a power menu to: shutdown, reboot,
+# lock, logout, and suspend. This script can be
+# executed by clicking on the polybar powermenu module
+# or with a keyboard shortcut
+
+
+# options to be displayed
+shutdown=" Shutdown"
+reboot=" Reboot"
+lock=" Lock"
+logout=" Logout"
+suspend=" Suspend"
+
+uptime=$(uptime -p | sed -e 's/up //g')
+
+# options passed into variable
+options="$shutdown\n$reboot\n$lock\n$logout\n$suspend"
+
+chosen="$(echo -e "$options" | rofi -no-lazy-grab -sep -lines 5 -hide-scrollbar true -border 0 -padding 0 -height 2px -width 15 -xoffset -8 -yoffset 28 -location 3 -columns 1 -dmenu -p 'System ' "$uptime")"
+
+case $chosen in
+$shutdown)
+ systemctl poweroff
+ ;;
+$reboot)
+ systemctl reboot
+ ;;
+$lock)
+ betterlockscreen --lock dimblur
+ ;;
+$logout)
+ bspc quit
+ ;;
+$suspend)
+ systemctl suspend
+ ;;
+esac
+
diff --git a/.config/polybar/scripts/sysmenu.shsave b/.config/polybar/scripts/sysmenu.shsave
new file mode 100755
index 0000000..00ce125
--- /dev/null
+++ b/.config/polybar/scripts/sysmenu.shsave
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# display a power menu to: shutdown, reboot,
+# lock, logout, and suspend. This script can be
+# executed by clicking on the polybar powermenu module
+# or with a keyboard shortcut
+
+
+# options to be displayed
+shutdown=" Shutdown"
+reboot=" Reboot"
+lock=" Lock"
+logout=" Logout"
+suspend=" Suspend"
+
+uptime=$(uptime -p | sed -e 's/up //g')
+
+# options passed into variable
+options="$shutdown\n$reboot\n$lock\n$logout\n$suspend"
+
+chosen="$(echo -e "$options" | rofi -no-lazy-grab -sep -lines 5 -hide-scrollbar true -border 0 -padding 0 -height 2px -width 15 -xoffset -10 -yoffset 28 -location 3 -columns 1 -dmenu -p 'System ' "$uptime")"
+
+case $chosen in
+$shutdown)
+ systemctl poweroff
+ ;;
+$reboot)
+ systemctl reboot
+ ;;
+$lock)
+ betterlockscreen --lock dimblur
+ ;;
+$logout)
+ bspc quit
+ ;;
+$suspend)
+ systemctl suspend
+ ;;
+esac
+
diff --git a/.config/polybar/scripts/system-usb-mount.sh b/.config/polybar/scripts/system-usb-mount.sh
new file mode 100755
index 0000000..63e9187
--- /dev/null
+++ b/.config/polybar/scripts/system-usb-mount.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+devices=$(lsblk -Jplno NAME,TYPE,RM,SIZE,MOUNTPOINT,VENDOR)
+
+case "$1" in
+ --mount)
+ for mount in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == true) | select(.mountpoint == null) | .name'); do
+ udisksctl mount --no-user-interaction -b "$mount"
+
+ mountpoint=$(udisksctl mount --no-user-interaction -b $mount)
+ mountpoint=$(echo $mountpoint | cut -d " " -f 4- | tr -d ".")
+ kitty -e "bash -lc 'pcmanfm $mountpoint'" &
+ done
+ ;;
+ --unmount)
+ for unmount in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == true) | select(.mountpoint != null) | .name'); do
+ udisksctl unmount --no-user-interaction -b "$unmount"
+ udisksctl power-off --no-user-interaction -b "$unmount"
+ done
+ ;;
+ *)
+ output=""
+ counter=0
+
+ for unmounted in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == true) | select(.mountpoint == null) | .name'); do
+ unmounted=$(echo "$unmounted" | tr -d "[:digit:]")
+ unmounted=$(echo "$devices" | jq -r '.blockdevices[] | select(.name == "'"$unmounted"'") | .vendor')
+ unmounted=$(echo "$unmounted" | tr -d ' ')
+
+ if [ $counter -eq 0 ]; then
+ space=""
+ else
+ space=" "
+ fi
+ counter=$((counter + 1))
+
+ output="$output$space#1 $unmounted"
+ done
+
+ for mounted in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == true) | select(.mountpoint != null) | .size'); do
+ if [ $counter -eq 0 ]; then
+ space=""
+ else
+ space=" "
+ fi
+ counter=$((counter + 1))
+
+ output="$output$space#2 $mounted"
+ done
+
+ echo "$output"
+ ;;
+esac
diff --git a/.config/polybar/scripts/toggle_bluetooth.sh b/.config/polybar/scripts/toggle_bluetooth.sh
new file mode 100755
index 0000000..899d5ec
--- /dev/null
+++ b/.config/polybar/scripts/toggle_bluetooth.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ]
+then
+ bluetoothctl power on
+else
+ bluetoothctl power off
+fi
+
diff --git a/.config/sxhkd/show_help.sh b/.config/sxhkd/show_help.sh
new file mode 100755
index 0000000..bd0cd6c
--- /dev/null
+++ b/.config/sxhkd/show_help.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+cat ~/.config/sxhkd/sxhkdrc | awk '/^[a-z]/ && last {print $0,"\t",last} {last=""} /^#/{last=$0}' | column -t -s $'\t' | rofi -dmenu -i -no-show-icons -width 1000
+
diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc
new file mode 100755
index 0000000..7437c3e
--- /dev/null
+++ b/.config/sxhkd/sxhkdrc
@@ -0,0 +1,412 @@
+# __ __ __
+# /\ \ /\ \ /\ \
+# ____ __ _\ \ \___\ \ \/'\ \_\ \
+# /',__\/\ \/'\\ \ _ `\ \ , < /'_` \
+#/\__, `\/> </ \ \ \ \ \ \ \\`\ /\ \L\ \
+#\/\____//\_/\_\ \ \_\ \_\ \_\ \_\ \___,_\
+# \/___/ \//\/_/ \/_/\/_/\/_/\/_/\/__,_ /
+#
+
+#---------------------------------------------------------------
+#
+# WM independent hotkeys
+#
+
+# Help
+super + F1
+ ~/.config/sxhkd/show_help.sh -m -3
+
+# Application menu
+super + a
+ ~/.config/polybar/scripts/menu.sh
+
+# Shutdown menu
+#super + alt + Delete
+# ~/.config/polybar/scripts/sysmenu.sh
+
+# lockscreen
+super + Escape
+ betterlockscreen -l
+
+# Program launcher
+super + @space
+ rofi -show drun
+
+# Run launcher (commands)
+super + r
+ rofi -show run
+
+# Task switcher
+alt + Tab
+ rofi -show window
+
+# Turn off compositor
+super + shift + p
+ toggleprogram "picom" "--experimental-backends"
+
+#picom-trans -c -10
+#picom-trans -c +10
+
+# Launch eww
+#super + ctrl + a
+# ~/.config/eww/launch_widgets.sh
+
+# Terminal emulator
+super + Return
+ $TERMINAL
+
+# Browser
+super + w
+ $BROWSER
+
+# Show clipmenu
+alt + x
+ rofi -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}' \
+ -location 1 \
+ -m -3 \
+ -no-show-icons \
+ -theme-str '* \{ font: 10px; \}' \
+ -theme-str 'listview \{ spacing: 0; \}' \
+ -theme-str 'window \{ width: 20em; \}'
+
+# Screenshots tool (selection)
+ctrl + Print
+ flameshot gui -p ~/pictures/screenshots
+
+# Screenshots tool (screen)
+shift + Print
+ flameshot full -p ~/pictures/screenshots
+
+# make sxhkd reload its configuration files:
+super + ctrl + x
+ pkill -USR1 -x sxhkd; dunstify "Sxhkd configuration reloaded"
+
+
+
+#---------------------------------------------------------------
+#
+# bspwm hotkeys
+#
+
+# Quit/restart bspwm
+super + alt + shift + {q,r}
+ bspc {quit,wm -r}
+
+# Close and kill
+super + d
+ bspc node -c
+
+# Alternate between the tiled and monocle layout
+super + m
+ bspc desktop -l next
+super + z
+ bspc desktop -l next
+
+# Send the newest marked node to the newest preselected node
+super + y
+ bspc node newest.marked.local -n newest.!automatic.local
+
+# Swap the current node and the biggest window
+super + g
+ bspc node -s biggest.window
+
+
+#---------------------------------------------------------------
+#
+# state/flags
+#
+
+# Set the window state
+#super + {t,shift + t,s,f}
+# bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
+
+# Floating into monocle layout
+super + shift + m
+ bspc node -t pseudo_tiled; bspc node -t floating && wtp 10 40 1342 716 "$(pfw)"
+
+# Set the window state
+super + {t,shift + t,s}
+ bspc node -t {tiled,pseudo_tiled,floating}; \
+ xdo raise -N Plank; \
+ xdo raise -N '*:*:Picture in picture'; \
+ xdo raise -N "Picture-in-Picture"
+
+# Toggle fullscreen
+super + {f}
+ bspc node -t \~fullscreen
+
+# Toggle sticky
+#super + q
+# bspc node -g sticky=on
+
+# Set the node flags
+super + ctrl + {m,x,y,z}
+ bspc node -g {marked,locked,sticky,private}
+
+# Move layers of windows above/below each other (script)
+super + {equal,minus}
+ layer.sh {+,-}
+
+
+#---------------------------------------------------------------
+#
+# Focus/Swap
+#
+
+# Focus the node in the given direction
+super + {_,shift + }{h,j,k,l}
+ bspc node -{f,s} {west,south,north,east}
+
+# Focus the node for the given path jump
+#super + {p,b,comma,period}
+# bspc node -f @{parent,brother,first,second}
+
+# Focus the next/previous window in the current desktop
+super + {_,shift + }c
+ bspc node -f {next,prev}.local.!hidden.window
+
+# Focus the next/previous desktop in the current monitor
+super + bracket{left,right}
+ bspc desktop -f {prev,next}.local
+
+# Focus the last node/desktop
+super + {grave,Tab}
+ bspc {node,desktop} -f last
+
+# Focus the older or newer node in the focus history
+#super + {o,i}
+# bspc wm -h off; \
+# bspc node {older,newer} -f; \
+# bspc wm -h on
+
+# Focus or send to the given desktop
+super + {_,shift + }{1-9,0}
+ bspc {desktop -f,node -d} '^{1-9,10}'
+
+# Hide window
+super + comma
+ bspc node -g hidden
+
+# Unhide window (script)
+super + period
+ ${HOME}/.config/bspwm/bspcmd unhide
+
+
+#---------------------------------------------------------------
+#
+# Preselect
+#
+
+# Preselect the direction
+super + ctrl + {h,j,k,l}
+ bspc node -p {west,south,north,east}
+
+# Preselect the ratio
+super + ctrl + {1-9}
+ bspc node -o 0.{1-9}
+
+# Cancel the preselection for the focused node
+super + ctrl + space
+ bspc node -p cancel
+
+# Cancel the preselection for the focused desktop
+super + ctrl + shift + space
+ bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
+
+# Close all receptacle
+super + shift + i
+ for win in `bspc query -N -n .leaf.\!window`; do bspc node $win -k ; done;
+
+# Insert receptacle
+super + i; {h,j,k,l}
+ bspc node --presel-dir {west,south,north,east} -i
+
+# Move to rectacle
+super + ctrl + i
+ bspreceptacle
+
+# Balance nodes
+super + alt + i
+ bspc node @/ -B
+
+
+
+#---------------------------------------------------------------
+#
+# Move/resize
+#
+
+# Move a floating window or swap with any other adjacent tiled/pseudo_tiled window
+ctrl + alt + {h,j,k,l}
+ { dir=west dx=-20 dy=0 \
+ , dir=south dx=0 dy=20 \
+ , dir=north dx=0 dy=-20 \
+ , dir=east dx=20 dy=0 \
+ }; \
+ bspc node --move "$dx" "$dy" || bspc node --swap $dir
+
+# Move a tiled window to any direction
+super + shift + {h,j,k,l}
+ /path/to/bspwm_smart_move {west,south,north,east}
+
+# Rotate windows to different nodes
+super + ctrl + r
+ bspc node @parent -R 90
+
+# Resize tiled/floating windows (script)
+shift + alt + {h,j,k,l}
+ bspwm_resize.sh {west,south,north,east}
+
+# Resize window into predefined pseudo_tiled window
+super + shift + s
+ bspc node -t pseudo_tiled; bspc node -t floating && wtp 340 40 680 700 "$(pfw)"
+
+# Spawn next window/program into predefined floating window
+ctrl + alt + 1
+ bspc rule -a '*' -o state=floating rectangle=680x700+340+40
+
+# Spawn next window/program into predefined smaller Heads-Up-Display like floating window
+ctrl + alt + 2
+ bspc rule -a '*' -o state=floating rectangle=320x140+1030+32
+
+# Spawn next window/program into another desktop
+super + alt + {1-9,0}
+ bspc rule -a '*' -o desktop=^{1-9,10}
+
+
+#---------------------------------------------------------------
+#
+# Multimedia
+#
+# Multimedia control
+{XF86AudioStop,XF86AudioPlay,XF86AudioPrev,XF86AudioNext}
+ playerctl {stop,play-pause,previous,next}
+
+# Use arrow keys as multimedia keys
+alt + shift + {Left,Up,Right}
+ playerctl {previous,play-pause,next}
+
+# Brightness control
+XF86MonBrightness{Up,Down}
+ brightnessctl s 5%{+,-}
+
+# Use arrow keys as brightness keys
+alt + {Up,Down}
+ brightnessctl s 5%{+,-}
+
+# Volume control
+XF86Audio{Raise,Lower}Volume
+ pulsemixer --change-volume {+,-}10
+
+# Use arrow keys as volume keys
+alt + {Right,Left}
+ pulsemixer --change-volume {+,-}10
+
+
+#---------------------------------------------------------------
+#
+# Xdotool keys
+#
+
+# Move mouse cursor north, west, south, east
+alt + {w,a,s,d}
+ xdotool mousemove_relative --sync {-- 0 -24, -- -24 0, 0 24, 24 0}
+
+# Move mouse cursor diagonally north-west, north-east, south-west, south-east
+shift + alt + {q,e,a,d}
+ xdotool mousemove_relative --sync {-- -24 -24, -- 24 -24, -- -24 24,-- 24 24}
+
+# Emulate left mouse click
+alt + i
+ xdotool click --clearmodifiers 1
+
+# Emulate left mouse click select
+alt + shift + i
+ xdotool mousedown 1 sleep 0.5 mousemove_relative --sync {-- -8 0, 0 8, -- 0 -8, 8 0} sleep 0.5 mouseup 1
+
+# Emulate mouse right click
+alt + o
+ xdotool click --clearmodifiers 3
+
+# Emulate mouse scroll up
+alt + n
+ xdotool click --clearmodifiers 4
+
+# Emulate mouse scroll down
+alt + m
+ xdotool click --clearmodifiers 5
+
+# Emulate mouse scroll button
+alt + p
+ xdotool click --clearmodifiers 2
+
+# Emulate home key
+alt + ctrl + Left
+ xdotool keyup Left key --clearmodifiers Home
+
+# Emulate end key
+alt + ctrl + Right
+ xdotool keyup Right key --clearmodifiers End
+
+# Emulate delete key
+~alt + BackSpace
+ xte 'keyup Alt_L' 'key Delete' 'keydown Alt_L'
+
+
+#---------------------------------------------------------------
+#
+# Programs
+#
+
+# Scratchpad
+super + semicolon
+ ~/.local/bin/scripts/scratchpad
+
+super + x
+ ~/.local/bin/scripts/scratchpad
+
+# Heads-Up-Display scratchpad terminal
+super + e
+ ~/.local/bin/scripts/Heads-Up-Display
+
+# File manager nnn
+super + shift + n
+ $TERMINAL -e nnn
+
+# File manager pcmanfm (GUI)
+super + shift + f
+ pcmanfm
+
+# Bitwarden-rofi
+super + shift + b
+ rofi-rbw
+
+# Thunderbird mail
+#super + shift + m
+# thunderbird
+
+# VirtualBox gui
+super + v
+ /usr/bin/VirtualBox -- :0 vt1
+
+# Discord
+super + shift + d
+ discord
+
+# Spotify
+super + shift + y
+ spotify
+
+# Book reader (zathura)
+super + shift + z
+ zathura
+
+# Dictionary
+super + ctrl + w
+ goldendict
+
+# Thesaurus
+super + shift + w
+ artha
+
+
diff --git a/.config/tmux/left-status.sh b/.config/tmux/left-status.sh
new file mode 100755
index 0000000..afceea8
--- /dev/null
+++ b/.config/tmux/left-status.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+function ip-address() {
+ # Loop through the interfaces and check for the interface that is up.
+ for file in /sys/class/net/*; do
+ iface=$(basename $file);
+ read status < $file/operstate;
+ [ "$status" == "up" ] && ip addr show $iface | awk '/inet /{printf $2" "}'
+ done
+}
+
+function vpn-connection() {
+ # Check for tun0 interface.
+ [ -d /sys/class/net/tun0 ] && printf "%s " 'VPN*'
+}
+
+function main() {
+ # Comment out any function you do not need.
+ ip-address
+ vpn-connection
+}
+
+# Calling the main function which will call the other functions.
+main
diff --git a/.config/tmux/right-status.sh b/.config/tmux/right-status.sh
new file mode 100755
index 0000000..82502c4
--- /dev/null
+++ b/.config/tmux/right-status.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+function memory-usage() {
+ if [ "$(which bc)" ]; then
+ # Display used, total, and percentage of memory using the free command.
+ read used total <<< $(free -m | awk '/Mem/{printf $2" "$3}')
+ # Calculate the percentage of memory used with bc.
+ percent=$(bc -l <<< "100 * $total / $used")
+ # Feed the variables into awk and print the values with formating.
+ awk -v u=$used -v t=$total -v p=$percent 'BEGIN {printf "%s/%s Mem %.1f% ", t, u, p}'
+ fi
+}
+
+function main() {
+ # Comment out any function you do not need.
+ memory-usage
+}
+
+# Calling the main function which will call the other functions.
+main
diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf
new file mode 100644
index 0000000..3085f2b
--- /dev/null
+++ b/.config/tmux/tmux.conf
@@ -0,0 +1,306 @@
+# ████████╗███╗ ███╗██╗ ██╗██╗ ██╗
+# ╚══██╔══╝████╗ ████║██║ ██║╚██╗██╔╝
+# ██║ ██╔████╔██║██║ ██║ ╚███╔╝
+# ██║ ██║╚██╔╝██║██║ ██║ ██╔██╗
+# ██║ ██║ ╚═╝ ██║╚██████╔╝██╔╝ ██╗
+# ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
+#――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
+# Setting the prefix from C-b to C-s
+unbind C-b
+set -g prefix C-s
+# Ensure that we can send Ctrl-S to other apps
+bind C-s send-prefix
+#set -g prefix M-Space
+#set -g prefix C-Space
+#setting the delay between prefix and command
+set-option -sg escape-time 10
+#set -s escape-time 0
+# Vi mode in tmux, can confirm this working by pressing <prefix>:list-keys -T copy-mode-vi
+# <prefix>[ to enter copy-mode to allow copying text or view history buffer, including search with / and ?. Screenwise vertical movemont with <ctrl-f> or <ctrl-b>
+set-window-option -g mode-keys vi
+# Reload the file with Prefix r
+#bind r source-file ~/.tmux.conf \; display "Reloaded!"
+bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!"
+#set -g history-limit 10000
+
+# use the mouse
+#set-window-option -g mode-mouse on
+#set -g mouse-select-pane on
+#set -g mouse-resize-pane on
+#set -g mouse-select-window on
+
+# pane movement
+bind-key j command-prompt -p "send pane to:" "join-pane -t '%%'"
+
+# Pane resizing, default is D,U,L,R
+bind -r H resize-pane -L 20
+bind -r J resize-pane -D 20
+bind -r K resize-pane -U 20
+bind -r L resize-pane -R 20
+
+bind-key M-j resize-pane -D 5
+bind-key M-k resize-pane -U 5
+bind-key M-h resize-pane -L 5
+bind-key M-l resize-pane -R 5
+
+# Hide a pane and bring it back with <prefix>! and <prefix>@ respectively
+bind-key ! break-pane -d -n _hidden_pane
+bind-key @ join-pane -s $.0
+# enable activity alerts
+#setw -g monitor-activity on
+#set -g visual-activity on
+
+# Update the status bar every sixty seconds
+#set -g status-interval 60
+
+# set colors for the active window
+#setw -g window-status-current-fg white
+#setw -g window-status-current-bg red
+#setw -g window-status-current-attr bright
+#set -g status-style fg="#000000",bg="#53E2AE"
+#set -g pane-active-border-style bg=default,fg="#fe8019"
+#set -g pane-border-style fg="#53E2AE"
+
+## COLOUR (Solarized light)
+
+## default statusbar colors
+#set-option -g status-bg default
+#set-option -g status-fg green
+#set-option -g status-attr default
+#
+## default window title colors
+#set-window-option -g window-status-fg magenta
+#set-window-option -g window-status-bg default
+#set-window-option -g window-status-attr dim
+#
+#set -g status-left-length 85
+#set -g status-left "#[fg=yellow bg=default]#h #[fg=blue] #S #[fg=yellow] #I "
+#set -g window-status-current-format "#[fg=black,bold bg=default]│#[fg=white bg=cyan]#W#[fg=black,bold bg=default]│"
+#set -g status-right "#[fg=magenta] #[bg=gray] %b %d %Y %l:%M %p"
+#set -g status-justify centre
+
+
+# active window title colors
+#set-window-option -g window-status-current-fg cyan
+#set-window-option -g window-status-current-bg default
+#set-window-option -g window-status-current-attr bright
+
+
+# pane border
+# set-option -g pane-border-fg black
+# set-option -g pane-border-bg black
+# set-option -g pane-active-border-fg red
+# set-option -g pane-active-border-bg default
+# allow 'autoread' to work in neovim by focus events
+# focus events enabled for terminals that support them
+set-option -g focus-events on
+
+# super useful when using "grouped sessions" and multi-monitor setup
+setw -g aggressive-resize on
+
+
+
+set -g mouse on
+
+# Vi mode in tmux, can confirm this working by pressing <prefix>:list-keys -T copy-mode-vi
+# <prefix>[ to enter copy-mode to allow copying text or view history buffer, including search with / and ?. Screenwise vertical movemont with <ctrl-f> or <ctrl-b>
+set-window-option -g mode-keys vi
+
+
+# change selection <space> and enter to vi keybinding
+#bind-key -T copy-mode-vi 'v' send -X begin-selection
+#bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
+
+# X clipboard integration
+# Vim style
+#bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -i -sel clip > /dev/null"
+
+#for copying to sys clipboard
+#bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
+#bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
+#bind -T copy-mode-vi C-c send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
+
+# map copy mode to ctrl+alt+v
+bind-key -n 'M-v' copy-mode
+
+bind-key -T copy-mode-vi v send -X begin-selection
+
+if-shell -b 'echo $XDG_SESSION_TYPE | grep -q x11' "\
+ bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard > /dev/null'; \
+ bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard > /dev/null'; \
+ bind-key C-M-v run 'xclip -out -selection clipboard | tmux load-buffer - ; tmux paste-buffer'"
+
+if-shell -b 'echo $XDG_SESSION_TYPE | grep -q wayland' "\
+ bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'wl-copy'; \
+ bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'wl-copy'; \
+ bind-key C-p run 'wl-paste --no-newline | tmux load-buffer - ; tmux paste-buffer'" "\
+ \
+ bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'cat - >/dev/clipboard'; \
+ bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'cat - >/dev/clipboard'; \
+ bind-key C-M-v run 'cat /dev/clipboard | tmux load-buffer - ; tmux paste-buffer'"
+
+
+
+
+# Vim style copy to clipboard
+#bind-key p run "xclip -o -sel clip | tmux load-buffer - ; tmux paste-buffer"
+
+
+# Change split <Prefix>% and <Prefix>" to <Prefix>| and <Prefix>-
+bind v split-window -h -c "#{pane_current_path}"
+bind h split-window -v -c "#{pane_current_path}"
+#bind-key v split-window -h
+#bind-key s split-window -v
+
+
+# smart pane switching with awareness of vim splits
+bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-h) || tmux select-pane -L"
+bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-j) || tmux select-pane -D"
+bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-k) || tmux select-pane -U"
+bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-l) || tmux select-pane -R"
+#bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-\\') || tmux select-pane -l"
+
+# use prefix + l to clear terminal
+bind C-l send-keys 'C-l'
+## set the default TERM
+#set-option -g default-terminal "screen-256color"
+#set-option -g default-terminal "tmux-256color"
+#set -g default-terminal screen
+# update the TERM variable of terminal emulator when creating a new session or attaching a existing session
+#set -g update-environment 'DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY TERM'
+# determine if we should enable 256-colour support
+#if "[[ ${TERM} =~ 256color || ${TERM} == fbterm ]]" 'set -g default-terminal screen-256color'
+#set -g default-terminal "tmux-256color"
+#set -ga terminal-overrides ",xterm-256color:Tc"
+#set-option -g default-terminal "tmux-256color"
+set-option -sa terminal-overrides ",tmux-256color:Tc"
+#set-option -sa terminal-overrides ",xterm*:Tc"
+set-option -sa terminal-overrides ",xterm*:Tc,alacritty*:Tc"
+# Enable RGB colour if running in xterm(1)
+#set-option -sa terminal-overrides ",xterm*:Tc"
+#set -ga terminal-overrides ",*256col*:Tc"
+
+## Detach from current session
+#bind -n M-d detach-client
+#
+## Popup scratch session
+#bind -n M-g display-popup -E "tmux new-session -A -s scratch"
+#
+## non-popup
+#bind C-j new-window -n "session-switcher" "\
+# tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
+# sed '/^$/d' |\
+# fzf --reverse --header jump-to-session --preview 'tmux capture-pane -pt {}' |\
+# xargs tmux switch-client -t"
+## popup
+#bind C-j display-popup -E "\
+# tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
+# sed '/^$/d' |\
+# fzf --reverse --header jump-to-session --preview 'tmux capture-pane -pt {}' |\
+# xargs tmux switch-client -t"
+#bind -n M-f display-popup -E "\
+# tmux list-sessions -F '#{?session_attached,,#{session_name}}' |\
+# sed '/^$/d' |\
+# fzf --reverse --header jump-to-session --preview 'tmux capture-pane -pt {}' |\
+# xargs tmux switch-client -t"
+#
+#bind -n M-? list-keys
+#bind -n M-1 select-window -t :=1
+#bind -n M-2 select-window -t :=2
+#bind -n M-3 select-window -t :=3
+#bind -n M-4 select-window -t :=4
+#bind -n M-5 select-window -t :=5
+#bind -n M-6 select-window -t :=6
+#bind -n M-7 select-window -t :=7
+#bind -n M-8 select-window -t :=8
+#bind -n M-9 select-window -t :=9
+#bind -n M-0 select-window -t :=0
+
+# Colors for pane borders(default)
+setw -g pane-border-style fg=white
+setw -g pane-active-border-style fg=green
+
+# Active pane normal, other shaded out
+setw -g window-style fg=colour240
+setw -g window-active-style fg=white
+
+
+#set -g focus-events on
+#set -g status-style bg=default
+# Set the position of window lists
+#set -g status-justify centre
+# Set the status bar position
+set -g status-position bottom # [top, bottom]
+set -g status on
+set -g status-interval 1
+
+
+set -g status-style fg=#50fa7b,bg=black
+#set -g status-style fg=DeepSkyBlue1,bg=black
+#set -g status-style fg=black,bg=gray
+
+#set -g status-left-style default
+# Display the session name
+#set -g status-left "#[fg=green] ❐ #S #[default]"
+
+## Left
+#set -g status-left ''
+set -g status-left-length 60
+set -g status-left "#[fg=#50fa7b] ❐ #S #( ~/.config/tmux/left-status.sh )"
+bind o set-option status-left "#[fg=#50fa7b] ❐ #S" # toggle left-status script off
+bind C-o set-option status-left "#[fg=#50fa7b] ❐ #S #( ~/.config/tmux/left-status.sh )" # toggle left status script on
+#set -g status-left "#[fg=DeepSkyBlue1] ❐ #S #( ~/.config/tmux/left-status.sh )"
+#set -g status-left "#[fg=black] ❐ #S #( ~/.config/tmux/left-status.sh )"
+
+# Highlight the current window.
+setw -g window-status-current-style fg=#50fa7b,bg=black,bright
+#setw -g window-status-current-style fg=DeepSkyBlue1,bg=black,bright
+#setw -g window-status-current-style fg=color235,bg=silver,bright
+set -g window-status-current-format ' #I:#W '
+#set -g status-format[0] '#[align=left] ❐ #S #( ~/.config/tmux/left-status.sh )#[align=absolute-centre]#[list=on] #I #W #[nolist]#[align=right] %H:%M %d-%m-%Y #H '
+set -g status-justify absolute-centre
+## Right
+# Set right side status bar length and style
+set-option -g status-right ""
+set -g status-right-length 60
+#set -g status-right-length 140
+#set -g status-right-style default
+#set -ag status-right "#[fg=black] %H:%M %d-%m-%Y #H "
+set -ag status-right "#[fg=#50fa7b] #{?client_prefix,#[reverse] Prefix #[noreverse] ,} #( ~/.config/tmux/right-status.sh ) %H:%M %d-%m-%Y #H "
+#set -ag status-right "#[fg=DeepSkyBlue1] #( ~/.config/tmux/right-status.sh ) %H:%M %d-%m-%Y #H "
+#set -ag status-right "#[fg=black] #( ~/.config/tmux/right-status.sh ) %H:%M %d-%m-%Y #H "
+
+# list of plugins
+set -g @plugin 'tmux-plugins/tpm'
+#set -g @plugin 'tmux-plugins/tmux-sensible'
+set -g @plugin 'tmux-plugins/tmux-resurrect'
+set -g @plugin 'tmux-plugins/tmux-continuum'
+set -g @plugin 'christoomey/vim-tmux-navigator'
+#set -g @plugin 'tmux-plugins/tmux-yank'
+
+
+# Plugins settings
+# Plugin to save and restore tmux sessions after restart
+# * Save with: prefix + Ctrl-s
+# * Restore with: prefix + Ctlr-r
+ # restore vim and nvim sessions as well
+ # for vim
+ set -g @resurrect-strategy-vim 'session'
+ # for neovim
+ set -g @resurrect-strategy-nvim 'session'
+# Automatic restore
+ set -g @continuum-restore 'on'
+# Change default save and restore keybindings
+ set -g @resurrect-save 'W'
+ set -g @resurrect-restore 'E'
+# set -g @continuum-boot 'on'
+## Restore Panes
+# set -g @resurrect-capture-pane-contents 'on'
+# This a hook for tmux-resurrect which tells it to kill session 0 before restoring the panels
+set -g @resurrect-hook-pre-restore-pane-processes 'tmux switch-client -n && tmux kill-session -t=0'
+# plugin uninstall
+ # Delete or comment out the plugin in .tmux.conf.
+ # Press <prefix> + alt + u to remove the plugin.
+# TMUX plugin manager (keep at the bottom of tmux.conf)
+#run -b '~/.tmux/plugins/tpm/tpm'
+run -b '~/.config/tmux/plugins/tpm/tpm'
diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile
new file mode 100644
index 0000000..8ab0499
--- /dev/null
+++ b/.config/zsh/.zprofile
@@ -0,0 +1,5 @@
+if [[ "$(tty)" = "/dev/tty1" ]]; then
+ pgrep bspwm || startx "$XDG_CONFIG_HOME/X11/xinitrc"
+fi
+
+#eval "$(gh completion -s zsh)"
diff --git a/.config/zsh/.zshenv b/.config/zsh/.zshenv
new file mode 100644
index 0000000..abacc95
--- /dev/null
+++ b/.config/zsh/.zshenv
@@ -0,0 +1,155 @@
+
+#export XINITRC="$HOME/.config/X11/.xinitrc"
+#export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/X11/.inputrc"
+#export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
+#export XAUTHORITY="$XDG_RUNTIME_DIR/.Xauthority" # This line will break some DMs.
+#export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc
+#export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
+
+# Path
+#export PATH="$PATH:${$(find ~/.local/bin ~/.local/share/npm/bin -type d -printf %p:)%%:}"
+export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local:$HOME/.local/bin:$HOME/.local/bin/scripts:$HOME/Scripts:$HOME/.local/bin/statusbar
+
+
+# Default Programs:
+export EDITOR="nvim"
+export VISUAL="nvim"
+export READER="zathura"
+export TERMINAL="alacritty"
+export COLORTERM="truecolor"
+export TERM="xterm-256color"
+export BROWSER="firefox"
+export OPENER="xdg-open"
+export PAGER="less"
+export WM="bspwm"
+export XDG_SESSION_TYPE=X11
+
+# XDG Paths:
+export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"}
+#export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"}
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_CACHE_HOME=${XDG_CACHE_HOME:="$HOME/.cache"}
+export XINITRC="$HOME/.config/X11/.xinitrc"
+export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/X11/.inputrc"
+export ICEAUTHORITY="$XDG_CACHE_HOME"/.ICEauthority
+export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
+export HISTFILE="$ZDOTDIR/.zhistory" # History filepath
+export HISTSIZE=1000000 # Maximum events for internal history
+export SAVEHIST=1000000 # Maximum events in history file
+export BANG_HIST # Treat the '!' character specially during expansion.
+export EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
+export INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
+export SHARE_HISTORY # Share history between all sessions.
+export HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
+export HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
+export HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate.
+export HIST_FIND_NO_DUPS # Do not display a line previously found.
+export HIST_IGNORE_SPACE # Don't record an entry starting with a space.
+export HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file.
+export HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry.
+export HIST_VERIFY # Don't execute immediately upon history expansion.
+export HIST_BEEP # Beep when accessing nonexistent history.
+
+# Other XDG Paths:
+export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
+export NVM_DIR="$XDG_DATA_HOME"/nvm
+export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
+export ASPROOT="${XDG_CACHE_HOME:-$HOME/.cache}/asp"
+# fixing paths
+export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc
+#export GEM_PATH="$XDG_DATA_HOME/ruby/gems"
+#export GEM_SPEC_CACHE="$XDG_DATA_HOME/ruby/specs"
+#export GEM_HOME="$XDG_DATA_HOME/ruby/gems"
+#export GOPATH="$XDG_DATA_HOME"/go
+export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
+export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
+#export CARGO_HOME="$XDG_DATA_HOME"/cargo
+#export PATH=$CARGO_HOME/bin:$PATH
+export RIPGREP_CONFIG_PATH="$XDG_CONFIG_HOME/ripgrep/ripgreprc"
+#export WORKON_HOME="$XDG_DATA_HOME"/virtualenvs
+export WGETRC="$XDG_CONFIG_HOME"/wget/wgetrc
+export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker
+export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter, export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter
+export CARGO_HOME=$HOME/.cargo
+export PATH="$HOME/.cargo/bin:$PATH"
+#export RUSTUP_HOME=$HOME/.cargo/bin
+## RUST
+#typeset -U path
+#path+=(~/.cargo/bin)
+#export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/src
+#export RUST_SRC_PATH=$HOME/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/src/rust/src
+#export GOPATH=$HOME/go
+#export GORACE=''
+#export KINDLEGEN_HOME=/Users/adben/Downloads/KindleGen_Mac_i386_v2_9
+#export GOROOT=$GO_HOME
+#export PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
+#export PATH=$PATH:$HOME/.local/bin # for stack - haskell
+#export PATH=$PATH:/usr/local/lib/ruby/gems/2.6.0/bin
+
+# xsession start script
+
+#export USERXSESSION="$XDG_CONFIG_HOME/X11/xsession"
+#export USERXSESSIONRC="$XDG_CONFIG_HOME/X11/xsessionrc"
+#export ALTUSERXSESSION="$XDG_CONFIG_HOME/X11/Xsession"
+#export ERRFILE="$XDG_CONFIG_HOME/X11/xsession-errors"
+
+# Doesn't seem to work
+#export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
+#export ANDROID_AVD_HOME="$XDG_DATA_HOME"/android
+#export ANDROID_EMULATOR_HOME="$XDG_DATA_HOME"/android
+#export ADB_VENDOR_KEY="$XDG_CONFIG_HOME"/android
+# Disable files
+#export LESSHISTFILE=-
+
+
+# Program settings
+#export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
+
+
+#export tmux.conf=XDG_CONFIG_HOME/tmux/tmux.conf
+#export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo"
+#export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
+# Scaling
+#export QT_AUTO_SCREEN_SCALE_FACTOR=0
+#export QT_SCALE_FACTOR=1
+#export QT_SCREEN_SCALE_FACTORS="1;1;1"
+#export GDK_SCALE=1
+#export GDK_DPI_SCALE=1
+
+
+#export VIDEO="mpv"
+#export IMAGE="sxiv"
+
+#xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config
+# Path
+#path=("$HOME/scripts" "$HOME/scripts/alsa" "$HOME/scripts/dragon" "$HOME/scripts/lf" "$HOME/scripts/i3" "$HOME/scripts/pulse"
+# "$HOME/scripts/polybar" "$HOME/scripts/bspwm" "$HOME/scripts/lemonbar" "$HOME/scripts/transmission"
+# "$HOME/bin/tweetdeck-linux-x64" "$XDG_DATA_HOME/ruby/gems/bin" "$HOME/go/bin" "$HOME/.local/share/cargo/bin"
+# "$XDG_DATA_HOME/npm/bin" "$HOME/.local/bin" "$path[@]")
+#export PATH
+
+#typeset -U PATH path
+export GTK_IM_MODULE='fcitx'
+export QT_IM_MODULE='fcitx'
+export SDL_IM_MODULE='fcitx'
+export XMODIFIERS='@im=fcitx'
+
+
+
+
+# Start blinking
+#export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
+# Start bold
+#export LESS_TERMCAP_md=$(tput bold; tput setaf 2) # green
+# Start stand out
+#export LESS_TERMCAP_so=$(tput bold; tput setaf 3) # yellow
+# End standout
+#export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
+# Start underline
+#export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 1) # red
+# End Underline
+#export LESS_TERMCAP_ue=$(tput sgr0)
+# End bold, blinking, standout, underline
+#export LESS_TERMCAP_me=$(tput sgr0).
+#. "/home/sxrdusr/.local/share/cargo/env"
+. "$HOME/.cargo/env"
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
new file mode 100644
index 0000000..65c10c8
--- /dev/null
+++ b/.config/zsh/.zshrc
@@ -0,0 +1,419 @@
+
+# ███████╗███████╗██╗ ██╗██████╗ ██████╗
+# ╚══███╔╝██╔════╝██║ ██║██╔══██╗██╔════╝
+# ███╔╝ ███████╗███████║██████╔╝██║
+# ███╔╝ ╚════██║██╔══██║██╔══██╗██║
+# ███████╗███████║██║ ██║██║ ██║╚██████╗
+# ╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
+
+export PATH=$HOME/bin:/usr/local/bin:/sbin:/usr/sbin:$PATH
+#export PYTHONPATH=/usr/local/bin/python3
+#if [[ ! $(tmux list-sessions) ]]; then
+# tmux
+#fi
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# Allow CTRL+D to exit zsh with partial command line (non empty line)
+exit_zsh() { exit }
+zle -N exit_zsh
+bindkey '^D' exit_zsh
+
+# Some other useful functionalities
+setopt autocd # Automatically cd into typed directory.
+stty intr '^q' # free Ctrl+C for copy use Ctrl+q instead
+stty lnext '^-' # free Ctrl+V for paste use ^- instead
+stty stop undef # Disable ctrl-s to freeze terminal.
+stty start undef
+
+export PATH="$HOME/.local/bin:$PATH"
+export VIRTUAL_ENV_DISABLE_PROMPT=true
+#unsetopt BEEP
+# Enable various options
+setopt interactive_comments beep extendedglob nomatch notify completeinword prompt_subst
+
+########## Prompt(s) ##########
+
+# Enable colors and change prompt:
+autoload -U colors && colors # Load colors
+#autoload -U promptinit && promptinit
+#prompt fade red
+# Prompt with Vi insert-mode/normal-mode and blinking '$', note blinking '$' only works on some terminals.
+terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1]
+
+function insert-mode () { echo "-- INSERT --" }
+function normal-mode () { echo "-- NORMAL --" }
+
+
+git_branch_test_color() {
+ local ref=$(git symbolic-ref --short HEAD 2> /dev/null)
+ if [ -n "${ref}" ]; then
+ if [ -n "$(git status --porcelain)" ]; then
+ local gitstatuscolor='%F{196}'
+ else
+ local gitstatuscolor='%F{82}'
+ fi
+ echo "${gitstatuscolor}${ref}"
+ else
+ echo ""
+ fi
+}
+#PROMPT='%9c$(git_branch_test_color)%F{none} %# '
+
+#echo "${gitstatuscolor} (${ref})"
+
+autoload -Uz add-zsh-hook vcs_info
+zstyle ':vcs_info:*' stagedstr ' +%F{15}staged%f'
+zstyle ':vcs_info:*' unstagedstr ' -%F{15}unstaged%f'
+zstyle ':vcs_info:*' check-for-changes true
+zstyle ':vcs_info:*' actionformats '%F{5}%F{2}%b%F{3}|%F{1}%a%F{5}%f '
+zstyle ':vcs_info:*' formats \
+ '%F{208} '$'\uE0A0'' %f$(git_branch_test_color)%f%F{76}%c%F{3}%u%f '
+ #'%{-[%F{226}'$'\uE0A0''%f%{%F{76}%b%f%}]%} %F{76}%c%F{3}%u%f'
+ #'%F{226}'$'\uE0A0''%f%{(%F{76}%b%f)%} %F{76}%c%F{3}%u%f'
+zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
+zstyle ':vcs_info:*' enable git
++vi-git-untracked() {
+ if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
+ [[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then
+ hook_com[unstaged]+='%F{196} !%f%F{15}untracked%f'
+fi
+}
+#hook_com[unstaged]+=' %F{15}(%f%F{196}!%f%F{15})untracked%f'
+
+
+#RPROMPT='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_} %f%# '
+#add-zsh-hook
+function my_precmd () {
+ vcs_info
+ PS1="%{┌─[%F{145}%n%f] %F{39}%0~%f%} ${vcs_info_msg_0_}
+ %{%{$terminfo_down_sc$(insert-mode)$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+}
+
+function set-prompt () {
+ case ${KEYMAP} in
+ (vicmd) VI_MODE="$(normal-mode)" ;;
+ (main|viins) VI_MODE="$(insert-mode)" ;;
+ (*) VI_MODE="$(insert-mode)" ;;
+ esac
+ PS1="%{┌─[%F{145}%n%f] %F{39}%0~%f%} ${vcs_info_msg_0_}
+ %{%{$terminfo_down_sc$VI_MODE$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+}
+add-zsh-hook precmd my_precmd
+RPROMPT='%(?..[%F{196}%?%f] )'
+#RPROMPT="%K{172}${vcs_info_msg_0_}%k%(?..[%F{196}%?%f] )"
+
+#autoload -Uz vcs_info
+#zstyle ':vcs_info:*' stagedstr 'M'
+#zstyle ':vcs_info:*' unstagedstr 'M'
+#zstyle ':vcs_info:*' check-for-changes true
+#zstyle ':vcs_info:*' actionformats '%{(%F{76}%b%F{3}|%F{1}%a%%f%}) '
+#zstyle ':vcs_info:*' formats \
+# '%{(%F{76}%b%f)%} %F{76}%c%F{3}%u%f'
+#zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
+#zstyle ':vcs_info:*' enable git
+#+vi-git-untracked() {
+# if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
+# [[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then
+# hook_com[unstaged]+='%F{1}??%f'
+#fi
+#}
+#
+#
+##RPROMPT='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_} %f%# '
+#precmd () {
+# print -rP "
+#"
+# #PS1="┌─[%F{48}%n%f]-[%F{154}%B%m%b%f]-[%F{202}%#%f%F{39}%0~%f]
+# PS1="%{┌─[%F{48}%n%f] %F{119}%#%f%F{119}%0~%f%}] ${vcs_info_msg_0_}
+# %{%{$terminfo_down_sc$(insert-mode)$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+#} && { vcs_info }
+#
+#function set-prompt () {
+# case ${KEYMAP} in
+# (vicmd) VI_MODE="$(normal-mode)" ;;
+# (main|viins) VI_MODE="$(insert-mode)" ;;
+# (*) VI_MODE="$(insert-mode)" ;;
+# esac
+# PS1="%{┌─[%F{48}%n%f] %F{119}%#%f%F{119}%0~%f%} ${vcs_info_msg_0_}
+# %{%{$terminfo_down_sc$VI_MODE$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+#}
+#PS1="%{┌─[%F{48}%n%f]-[%F{48}%B%m%b%f]-[%F{48}%#%f%F{48}%0~%f]%}
+function zle-line-init zle-keymap-select {
+ set-prompt
+ zle reset-prompt
+ case $KEYMAP in
+ vicmd) echo -ne '\e[1 q';; # block
+ viins|main) echo -ne '\e[5 q';; # beam
+ esac
+}
+
+preexec () { print -rn -- $terminfo[el]; echo -ne '\e[5 q' ; }
+
+zle -N zle-line-init
+zle -N zle-keymap-select
+
+# Load version control information
+#autoload -Uz vcs_info
+#precmd() { vcs_info }
+
+# Format the vcs_info_msg_0_ variable
+#zstyle ':vcs_info:git:*' formats 'on branch %b'
+
+# Set up the right-side prompt (with git branch name) and throw conditional error Code
+
+
+## function to return current branch name while suppressing errors.
+#function git_branch() {
+# branch=$(git symbolic-ref HEAD 2> /dev/null | awk 'BEGIN{FS="/"} {print $NF}')
+# if [[ $branch == "" ]]; then
+# :
+# else
+# echo ' (' $branch ') '
+# fi
+#}
+
+#setopt prompt_subst # allow command substitution inside the prompt
+#PROMPT='%~ $(git_branch) >' # set the prompt value
+
+#autoload -Uz add-zsh-hook vcs_info
+#setopt prompt_subst
+#add-zsh-hook precmd my_precmd
+#
+#zstyle ':vcs_info:git:*' formats '%b'
+#
+#function my_precmd {
+# local theUser='%B%F{39}%n%f%b'
+# local theHost='%B%F{white}@%m%f%b'
+# local git1="%F{220}~%f$(git_prompt_info)"
+# local rcAndArrow='%(?.%F{white}.%B%F{red}[%?])»%f%b'
+#
+# vcs_info
+# local git2color='cyan'
+# [[ "${vcs_info_msg_0_}" == "master" ]] && git2color='196'
+# local git2="||%F{${git2color}}${vcs_info_msg_0_}%f||"
+#
+# psvar[1]="${theUser}${theHost} ${git1} ${rcAndArrow} "
+# psvar[2]="${git2}"
+#}
+#
+#PROMPT='${psvar[1]}'
+#RPROMPT='${psvar[2]}'
+
+
+
+########## Auto-completion ##########
+
+#autoload -U promptinit && promptinit
+autoload -Uz compinit && compinit
+
+# Accept completion with <tab> or Ctrl+i and go to next/previous suggestions with Vi like keys: Ctrl+n/p
+zmodload -i zsh/complist
+accept-and-complete-next-history() {
+ zle expand-or-complete-prefix
+}
+
+zle -N accept-and-complete-next-history
+bindkey -M menuselect '^i' accept-and-complete-next-history
+bindkey '^n' expand-or-complete
+bindkey '^p' reverse-menu-complete
+zstyle ':completion:*' menu select=1
+
+
+
+########## Vi mode ##########
+
+export KEYTIMEOUT=25
+export EDITOR=$VISUAL
+export VISUAL=nvim
+bindkey -M viins '^?' backward-delete-char
+bindkey -M viins '^[[3~' delete-char
+bindkey -M vicmd '^[[3~' delete-char
+bindkey -r '\e/'
+bindkey -M viins 'jj' vi-cmd-mode
+bindkey "^W" backward-kill-word
+bindkey "^H" backward-delete-char # Control-h also deletes the previous char
+bindkey "^U" backward-kill-line
+
+bindkey "^[j" history-search-forward # or you can bind it to the down key "^[[B"
+bindkey "^[k" history-search-backward # or you can bind it to Up key "^[[A"
+bindkey '^X' autosuggest-execute
+bindkey '^Y' autosuggest-accept
+
+# Edit line in vim with alt-e
+autoload edit-command-line; zle -N edit-command-line
+bindkey '^e' edit-command-line
+#bindkey '^[e' edit-command-line # alt + e
+
+########## Useful Commands/Alias ##########
+
+# Enter directory and list contents
+cd() {
+ if [ -n "$1" ]; then
+ builtin cd "$@" && ls -pvA --color=auto --group-directories-first
+ else
+ builtin cd ~ && ls -pvA --color=auto --group-directories-first
+ fi
+}
+
+# Back up a file. Usage "backupthis <filename>"
+backupthis() {
+ cp -riv $1 ${1}-$(date +%Y%m%d%H%M).backup;
+}
+
+# Let FZF use ripgrep by default
+if type rg &> /dev/null; then
+ export FZF_DEFAULT_COMMAND='rg --files'
+ export FZF_DEFAULT_OPTS='-m --height 50% --border'
+fi
+# Setup fzf
+# ---------
+if [[ ! "$PATH" == */root/.local/share/nvim/plugged/fzf/bin* ]]; then
+ export PATH="${PATH:+${PATH}:}/root/.local/share/nvim/plugged/fzf/bin"
+fi
+
+# Spawn a clone of current terminal
+putstate () {
+ declare +x >~/environment.tmp
+ declare -x >>~/environment.tmp
+ echo cd "$PWD" >>~/environment.tmp
+}
+
+getstate () {
+ . ~/environment.tmp
+}
+
+# cd using "up n" as a command up as many directories, example "up 3"
+up() {
+ # default parameter to 1 if non provided
+ declare -i d=${@:-1}
+ # ensure given parameter is non-negative. Print error and return if it is
+ (( $d < 0 )) && (>&2 echo "up: Error: negative value provided") && return 1;
+ # remove last d directories from pwd, append "/" in case result is empty
+ cd "$(pwd | sed -E 's;(/[^/]*){0,'$d'}$;;')/";
+}
+
+# More history for cd and use "cd -TAB"
+setopt AUTO_PUSHD # pushes the old directory onto the stack
+zstyle ':completion:*:directory-stack' list-colors '=(#b) #([0-9]#)*( *)==95=38;5;12'
+
+# List upto last 10 visited directories using "d" and quickly cd into any specific one
+# using just a number from "0" to "9"
+alias d="dirs -v | head -10"
+alias 0="cd +0"
+alias 1="cd +1"
+alias 2="cd +2"
+alias 3="cd +3"
+alias 4="cd +4"
+alias 5="cd +5"
+alias 6="cd +6"
+alias 7="cd +7"
+alias 8="cd +8"
+alias 9="cd +9"
+
+# Allow nnn filemanager to cd on quit
+nnn() {
+ declare -x +g NNN_TMPFILE=$(mktemp --tmpdir $0.XXXX)
+ trap "rm -f $NNN_TMPFILE" EXIT
+ =nnn $@
+ [ -s $NNN_TMPFILE ] && source $NNN_TMPFILE
+}
+
+# Use lf to switch directories and bind it to ctrl-o
+#lfcd () {
+# tmp="$(mktemp)"
+# lf -last-dir-path="$tmp" "$@"
+# if [ -f "$tmp" ]; then
+# dir="$(cat "$tmp")"
+# rm -f "$tmp" >/dev/null
+# [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
+# fi
+#}
+#bindkey -s '^o' 'lfcd\n'
+#bindkey -s '^a' 'bc -lq\n'
+#bindkey -s '^f' 'cd "$(dirname "$(fzf)")"\n'
+
+alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
+#alias cfg='config subtree pull --prefx'
+#alias gsp="git subtree push --prefix=_site git@github.com:mertnuhoglu/blog_datascience.git"
+#alias gsp="git subtree push.local/bin/scripts https://github.com/srdusr/scripts.git main --squash
+function gsp
+{
+ # Config file for subtrees
+ #
+ # Format:
+ # <prefix>;<remote address>;<remote branch>
+ # # Lines starting with '#' will be ignored
+ GIT_SUBTREE_FILE="$PWD/.gitsubtrees"
+
+ if [ ! -f $GIT_SUBTREE_FILE ]; then
+ echo "Nothing to do - file <`basename $GIT_SUBTREE_FILE`> does not exist."
+ return
+ fi
+
+ OLD_IFS=$IFS
+ IFS=$'\n'
+ for LINE in $(cat $GIT_SUBTREE_FILE); do
+
+ # Skip lines starting with '#'.
+ if [[ $LINE = \#* ]]; then
+ continue
+ fi
+
+ # Parse the current line.
+ PREFIX=`echo $LINE | cut -d';' -f 1`
+ REMOTE=`echo $LINE | cut -d';' -f 2`
+ BRANCH=`echo $LINE | cut -d';' -f 3`
+
+ # Push to the remote.
+ echo "config subtree pull --prefix=$PREFIX $REMOTE $BRANCH"
+ config subtree pull --prefix=$PREFIX $REMOTE $BRANCH
+ done
+}
+alias vi='nvim'
+alias nv='nvim'
+alias trash="gio trash"
+alias trash_restore='gio trash --restore "$(gio trash --list | fzf | cut -f 1)"'
+alias ec='$EDITOR $HOME/.config/zsh/.zshrc'
+alias sc="source $HOME/.config/zsh/.zshrc"
+
+# Print previous command into a file
+getlast () {
+ fc -nl $((HISTCMD - 1))
+}
+
+alias pp='getlast 2>&1 |&tee -a output.txt'
+
+# Print output of a command NOTE: Must be used in conjunction but no need for "|" symbol
+alias -g cap='2>&1 | tee -a output.txt'
+
+# confirmation #
+alias mv='mv -i'
+alias cp='cp -i'
+alias ln='ln -i'
+alias rm='rm -i'
+
+# suspend(sleep)/hibernate and lock screen if using systemctl
+alias suspend='systemctl suspend && betterlockscreen --lock dimblur'
+alias hibernate='systemctl hibernate'
+
+########## Source Plugins, should be last ##########
+
+# load zsh-vi-mode
+#source /usr/share/zsh/plugins/zsh-vi-mode/zsh-vi-mode.plugin.zsh
+
+# Load zsh-syntax-highlighting
+source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2>/dev/null
+
+# Load fzf keybindings and completion
+source /usr/share/fzf/key-bindings.zsh
+source /usr/share/fzf/completion.zsh
+source /usr/share/fzf-marks/fzf-marks.plugin.zsh 2>/dev/null
+
+# Suggest aliases for commands
+source /usr/share/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh 2>/dev/null
+
+# Load fish like auto suggestions
+source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
+source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
diff --git a/.local/bin/scripts/Heads-Up-Display b/.local/bin/scripts/Heads-Up-Display
new file mode 100755
index 0000000..cac8681
--- /dev/null
+++ b/.local/bin/scripts/Heads-Up-Display
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+id=$(xdotool search --class Heads-Up-Display);
+if [ -z "$id" ]; then
+ st -c Heads-Up-Display -e tmux attach -t HUD || tmux new -s HUD;
+else
+ if [ ! -f /tmp/hide_hud ]; then
+ touch /tmp/hide_hud && xdo hide "$id"
+ elif [ -f /tmp/hide_hud ]; then
+ rm /tmp/hide_hud && xdo show "$id"
+ fi
+fi
+
diff --git a/.local/bin/scripts/README.md b/.local/bin/scripts/README.md
new file mode 100644
index 0000000..458b3cc
--- /dev/null
+++ b/.local/bin/scripts/README.md
@@ -0,0 +1 @@
+# scripts
diff --git a/.local/bin/scripts/bspwm_resize.sh b/.local/bin/scripts/bspwm_resize.sh
new file mode 100755
index 0000000..29ab5cf
--- /dev/null
+++ b/.local/bin/scripts/bspwm_resize.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+size=${2:-'10'}
+dir=$1
+
+# Find current window mode
+is_tiled() {
+bspc query -T -n | grep -q '"state":"tiled"'
+}
+# If the window is floating, move it
+if ! is_tiled; then
+#only parse input if window is floating,tiled windows accept input as is
+ case "$dir" in
+ west) switch="-w"
+ sign="-"
+ ;;
+ east) switch="-w"
+ sign="+"
+ ;;
+ north) switch="-h"
+ sign="-"
+ ;;
+ south) switch="-h"
+ sign="+"
+ ;;
+ esac
+ xdo resize ${switch} ${sign}${size}
+
+# Otherwise, window is tiled: switch with window in given direction
+else
+ case "$dir" in
+ west) bspc node @west -r -$size || bspc node @east -r -${size}
+ ;;
+ east) bspc node @west -r +$size || bspc node @east -r +${size}
+ ;;
+ north) bspc node @south -r -$size || bspc node @north -r -${size}
+ ;;
+ south) bspc node @south -r +$size || bspc node @north -r +${size}
+ ;;
+ esac
+fi
+
+##!/bin/bash
+#
+#[ "$#" -eq 3 ] || { echo "Needs exactly three arguments."; exit 1; }
+#
+#motion="$1"
+#direction="$2"
+#size="$3"
+#
+#if [ "$motion" = 'expand' ]; then
+# # These expand the window's given side
+# case "$direction" in
+# north) bspc node -z top 0 -"$size" ;;
+# east) bspc node -z right "$size" 0 ;;
+# south) bspc node -z bottom 0 "$size" ;;
+# west) bspc node -z left -"$size" 0 ;;
+# esac
+#else
+# # These contract the window's given side
+# case "$direction" in
+# north) bspc node -z top 0 "$size" ;;
+# east) bspc node -z right -"$size" 0 ;;
+# south) bspc node -z bottom 0 -"$size" ;;
+# west) bspc node -z left "$size" 0 ;;
+# esac
+#fi
diff --git a/.local/bin/scripts/cryptocheck b/.local/bin/scripts/cryptocheck
new file mode 100755
index 0000000..02ba42d
--- /dev/null
+++ b/.local/bin/scripts/cryptocheck
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+if [ ! -d ~/.cache/crypto ]; then
+ mkdir ~/.cache/crypto
+fi
+ticker=(BTC ETH ADA DOT SOL XMR)
+
+for currency in "${ticker[@]}"; do
+ echo "$currency"
+done | while read coin
+ do
+ price=$(curl rate.sx/1$coin)
+ if [ $coin = "BTC" ]; then
+ icon=󰠓
+ elif [ $coin = "ETH" ]; then
+ icon=󰡪
+ elif [ $coin = "ADA" ]; then
+ icon=󰝨
+ elif [ $coin = "DOT" ]; then
+ icon=󰐇
+ elif [ $coin = "SOL" ]; then
+ icon=󰘙
+ elif [ $coin = "XMR" ]; then
+ icon=󰝴
+ fi
+
+ echo "$icon $coin: $price" > ~/.cache/crypto/$coin
+
+ done
+
+date > ~/.cache/crypto/time
+
diff --git a/.local/bin/scripts/cryptonotify b/.local/bin/scripts/cryptonotify
new file mode 100755
index 0000000..47883c3
--- /dev/null
+++ b/.local/bin/scripts/cryptonotify
@@ -0,0 +1,19 @@
+#!/bin/sh
+source cryptocheck
+Output=
+for file in ~/.cache/crypto/*
+do
+ if [ ! -z "$Output" ]; then
+ if [ ! $(basename $file) = "time" ]; then
+ Output="$Output\n$(cat $file)"
+ fi
+ else
+ if [ ! $(basename $file) = "time" ]; then
+ Output="$Output$(cat $file)"
+ fi
+ fi
+
+done
+
+Output="$Output\n$(cat ~/.cache/crypto/time)"
+notify-send "Crypto Prices" "$Output"
diff --git a/.local/bin/scripts/layer.sh b/.local/bin/scripts/layer.sh
new file mode 100755
index 0000000..4b17ed1
--- /dev/null
+++ b/.local/bin/scripts/layer.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+current_layer="$(bspc query -T -n | jq -r '.client.layer')"
+case $1 in
+ +|-)
+ declare -A _layers=( [below]=0 [normal]=1 [above]=2 )
+ layers=( below normal above )
+ maxl=$(( ${#layers[@]} - 1 ))
+ current_layer="$(bspc query -T -n | jq -r '.client.layer')"
+ i=$(( ${_layers[$current_layer]} $1 1 ))
+ if [[ $i -lt 0 ]]; then
+ i=0
+ elif [[ $i -gt $maxl ]]; then
+ i=$maxl
+ fi
+ #cycle? nah
+ #i=$(( (${_layers[$current_layer]} + ${#layers[@]} ${1} 1) % ${#layers[@]} ))
+ new_layer="${layers[$i]}"
+ ;;
+ *)
+ new_layer="$(bspc query -T -n | jq -r '.client.lastLayer')"
+ ;;
+esac
+[[ "$current_layer" != "$new_layer" ]] && bspc node -l "$new_layer"
diff --git a/.local/bin/scripts/opacity-change.sh b/.local/bin/scripts/opacity-change.sh
new file mode 100755
index 0000000..b509936
--- /dev/null
+++ b/.local/bin/scripts/opacity-change.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+set -eu
+[[ -n ${DEBUG:-} ]] && set -x
+
+#### Example alacritty.yml usage
+#key_bindings:
+# - { key: N, mods: Control|Shift, action: SpawnNewInstance }
+# - { key: O, mods: Control|Shift, command: { program: "opacity-change.sh", args: ["-"] } }
+# - { key: P, mods: Control|Shift, command: { program: "opacity-change.sh", args: ["+"] } }
+
+
+operation="${1:-}${2:-}" # Arg #1 & #2 (in case the user misinterpreted a space in the usage), Default ''
+step="${operation:1}" # Substring from char index 1
+step="${step:-1}" # Default '1'
+operation="${operation:0:1}" # Substring from char index 0 length of 1
+config_file="$HOME/.config/alacritty/alacritty.yml"
+config_field="opacity"
+tmp_file="/tmp/$(basename $config_file).$(date +%s)"
+current_value=$(sed 's/#.*//g; /\b'"$config_field"':/!d; s/.*: \?//' < "$config_file")
+
+case $operation in
+"-")
+ verb="Decreasing" ;;
+"+")
+ verb="Increasing" ;;
+*)
+ echo "Usage: ${BASH_SOURCE[0]} (-|+)[int]"; exit 255 ;;
+esac
+
+new_value="$(awk '{n=$1+$2/10; print (n<0 ? 0 : n>1 ? 1 : n)}' <<<"$current_value $operation$step")"
+echo "$verb $config_field from $current_value to $new_value" >&2
+cp "$config_file" "$tmp_file"
+sed "s/\b$config_field:.*/$config_field: $new_value/" "$tmp_file" > "$config_file"
+
diff --git a/.local/bin/scripts/powermenu b/.local/bin/scripts/powermenu
new file mode 100755
index 0000000..7bd913e
--- /dev/null
+++ b/.local/bin/scripts/powermenu
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# display a power menu to: shutdown, reboot,
+# lock, logout, and suspend. This script can be
+# executed by clicking on the polybar powermenu module
+# or with a keyboard shortcut
+
+# options to be displayed
+shutdown=" Shutdown"
+reboot=" Reboot"
+lock=" Lock"
+logout=" Logout"
+suspend=" Suspend"
+
+uptime=$(uptime -p | sed -e 's/up //g')
+
+# options passed into variable
+options="$shutdown\n$reboot\n$lock\n$logout\n$suspend"
+
+chosen="$(echo -e "$options" | rofi -theme ~/.config/rofi/styles/powermenu.rasi -lines 5 -dmenu -p "$uptime")"
+
+case $chosen in
+$shutdown)
+ systemctl poweroff
+ ;;
+$reboot)
+ systemctl reboot
+ ;;
+$lock)
+ betterlockscreen --lock dimblur
+ ;;
+$logout)
+ bspc quit
+ ;;
+$suspend)
+ systemctl suspend
+ ;;
+esac
diff --git a/.local/bin/scripts/scratchpad b/.local/bin/scripts/scratchpad
new file mode 100755
index 0000000..331f8a2
--- /dev/null
+++ b/.local/bin/scripts/scratchpad
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+#sid=$(wmctrl -lx | grep scratch.scratchpad| cut -d' ' -f1| head -1) \
+#&& [ -z "$(echo $sid)" ] \
+# && alacritty -t scratchpad --class scratch,scratchpad -e tmux new-session -A -s scratchpad
+# & sleep 1 \
+# && sid=$(wmctrl -lx | grep scratch.scratchpad| cut -d' ' -f1| head -1) \
+# && echo "$sid" > /tmp/scratchID ;
+if id="$(xdo id -N scratch)"
+ then bspc node "$id" -g hidden -f
+ else alacritty --class scratch,scratchpad -e tmux new-session -A -s scratch -e bash > /dev/null 2>&1 &
+ #else alacritty --class scratch,scratchpad -e tmux new-session -A -s scratch -e bash > /dev/null 2>&1 &
+fi
+
+#id=$(xdotool search --class scratchpad);
+#if [ -z "$id" ]; then
+# alacritty --class scratch,scratchpad -e tmux new-session -A -s scratch;
+#else
+# if [ ! -f /tmp/hide_scratch ]; then
+# touch /tmp/hide_scratch && xdo hide "$id"
+# elif [ -f /tmp/hide_scratch ]; then
+# rm /tmp/hide_scratch && xdo show "$id"
+# fi
+#fi
+
+# alacritty -t scratchpad --class scratch,scratchpad -e zsh -c "zsh tmux attach -t scratch || tmux new -s scratch";
+# st -c scratchy -e tmux attach -t scratchy || tmux new -s scratchy;
+# && alacritty -t scratchpad --class scratch,scratchpad -e zsh -c "zsh tmux attach -t scratch || tmux new -s scratch"\
+# alacritty --class scratch,scratchpad -e tmux attach -t scratch || tmux new -s scratch;
+
diff --git a/.xbindkeysrc b/.xbindkeysrc
new file mode 100644
index 0000000..481943d
--- /dev/null
+++ b/.xbindkeysrc
@@ -0,0 +1,31 @@
+# # Up
+# "xdotool mousemove_relative --sync -- 0 -24"
+# alt + w
+#
+# # Left
+# "xdotool mousemove_relative --sync -- -24 0"
+# alt + a
+#
+# # Down
+# "xdotool mousemove_relative --sync -- 0 24"
+# alt + s
+#
+# # Right
+# "xdotool mousemove_relative --sync -- 24 0"
+# alt + d
+#
+# # left + up
+# "xdotool mousemove_relative --sync -- -24 -24"
+# Shift+alt + q
+#
+# # right + up
+# "xdotool mousemove_relative --sync -- 24 -24"
+# Shift+alt + e
+#
+# # right + down
+# "xdotool mousemove_relative --sync -- 24 24"
+# Shift+alt + d
+#
+# # left + down
+# "xdotool mousemove_relative --sync -- -24 24"
+# Shift+alt + a
diff --git a/.xprofile b/.xprofile
new file mode 100644
index 0000000..d75092e
--- /dev/null
+++ b/.xprofile
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# profile file. Runs on login. Environmental variables are set here.
+
+# If you don't plan on reverting to bash, you can remove the link in ~/.profile
+# to clean up.
+
+#If running bash
+#if [ -n "$BASH_VERSION" ]; then
+# # include .bashrc if it exists
+# if [ -f "$HOME/.bashrc" ]; then
+# . "$HOME/.bashrc"
+# fi
+#fi
+
+[[ -f ~/.config/zsh/.zshenv ]] && source ~/.config/zsh/.zshenv
+
+
+# Xresources
+[[ -f ~/.config/X11/.Xresources ]] && xrdb -merge ~/.config/X11/.Xresources
+
+# Adds `~/.local/bin` to $PATH
+#export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local:$HOME/.local/bin:$HOME/scripts
+#export PATH=$HOME/bin:/usr/local/bin:/sbin:/usr/sbin:$PATH
+#unsetopt PROMPT_SP
+#export XDG_CONFIG_HOME="$HOME/.config"
+#export XDG_DATA_HOME="$HOME/.local/share"
+#export XDG_CACHE_HOME="$HOME/.cache"
+
+
+#export XAUTHORITY="$XDG_RUNTIME_DIR/.Xauthority" # This line will break some DMs.
+export USERXSESSION="$XDG_CACHE_HOME/X11/xsession"
+export USERXSESSIONRC="$XDG_CACHE_HOME/X11/xsessionrc"
+export ALTUSERXSESSION="$XDG_CACHE_HOME/X11/Xsession"
+export ERRFILE="$XDG_CACHE_HOME/X11/xsession-errors"
+
+
+if [[ "$(tty)" = "/dev/tty1" ]]; then
+ pgrep bspwm || startx "$XDG_CONFIG_HOME/X11/.xinitrc"
+fi
+#if [[ "$(tty)" = "/dev/tty1" ]]; then
+# pgrep startxfce4 || startx "$XDG_CONFIG_HOME/X11/.xinitrc"
+#fi