aboutsummaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
authoriceyrazor <iceyrazor@mailfence.com>2025-05-24 04:08:28 -0500
committericeyrazor <iceyrazor@mailfence.com>2025-05-24 04:08:28 -0500
commite966d5328d6f328546db213278d1a1a6cd2f58d5 (patch)
treef0d41635190d29623920fdf4732cea7a006632d2 /env
parent5010e575335939597b05f8d58bdf205c693a8004 (diff)
install scripts. reorganization. soon to be deployable
Diffstat (limited to 'env')
-rwxr-xr-xenv/.Xresources82
-rw-r--r--env/.bashrc10
-rwxr-xr-xenv/.config/.profile132
-rw-r--r--env/.config/atuin/config.toml234
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornerne.pngbin0 -> 272 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornernew.pngbin0 -> 272 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornernw.pngbin0 -> 263 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornernww.pngbin0 -> 264 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornerse.pngbin0 -> 264 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornersew.pngbin0 -> 264 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornersw.pngbin0 -> 263 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/cornersww.pngbin0 -> 264 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/dwindle.pngbin0 -> 320 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/dwindlew.pngbin0 -> 320 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/fairh.pngbin0 -> 245 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/fairhw.pngbin0 -> 245 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/fairv.pngbin0 -> 246 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/fairvw.pngbin0 -> 246 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/floating.pngbin0 -> 282 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/floatingw.pngbin0 -> 282 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/fullscreen.pngbin0 -> 866 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/fullscreenw.pngbin0 -> 865 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/magnifier.pngbin0 -> 345 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/magnifierw.pngbin0 -> 345 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/max.pngbin0 -> 574 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/maxw.pngbin0 -> 581 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/spiral.pngbin0 -> 328 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/spiralw.pngbin0 -> 328 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tile.pngbin0 -> 265 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tilebottom.pngbin0 -> 264 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tilebottomw.pngbin0 -> 264 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tileleft.pngbin0 -> 266 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tileleftw.pngbin0 -> 266 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tiletop.pngbin0 -> 260 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tiletopw.pngbin0 -> 265 bytes
-rw-r--r--env/.config/awesome/iceys-theme/layouts/tilew.pngbin0 -> 265 bytes
-rw-r--r--env/.config/awesome/iceys-theme/submenu.pngbin0 -> 440 bytes
-rw-r--r--env/.config/awesome/iceys-theme/taglist/squarefw.pngbin0 -> 187 bytes
-rw-r--r--env/.config/awesome/iceys-theme/taglist/squarew.pngbin0 -> 193 bytes
-rw-r--r--env/.config/awesome/iceys-theme/theme.lua152
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/close_focus.pngbin0 -> 966 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/close_normal.pngbin0 -> 966 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/floating_focus_active.pngbin0 -> 386 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/floating_focus_inactive.pngbin0 -> 237 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/floating_normal_active.pngbin0 -> 386 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/floating_normal_inactive.pngbin0 -> 237 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/maximized_focus_active.pngbin0 -> 480 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/maximized_focus_inactive.pngbin0 -> 452 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/maximized_normal_active.pngbin0 -> 480 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/maximized_normal_inactive.pngbin0 -> 452 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/minimize_focus.pngbin0 -> 234 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/minimize_normal.pngbin0 -> 225 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/ontop_focus_active.pngbin0 -> 467 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/ontop_focus_inactive.pngbin0 -> 604 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/ontop_normal_active.pngbin0 -> 467 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/ontop_normal_inactive.pngbin0 -> 604 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/sticky_focus_active.pngbin0 -> 654 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/sticky_focus_inactive.pngbin0 -> 758 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/sticky_normal_active.pngbin0 -> 654 bytes
-rw-r--r--env/.config/awesome/iceys-theme/titlebar/sticky_normal_inactive.pngbin0 -> 758 bytes
-rw-r--r--env/.config/awesome/keys-US-colemak.lua271
-rw-r--r--env/.config/awesome/keys-US.lua272
-rw-r--r--env/.config/awesome/rc.bak2.lua580
-rw-r--r--env/.config/awesome/rc.lua554
-rw-r--r--env/.config/cava/config283
-rw-r--r--env/.config/cava/shaders/bar_spectrum.frag79
-rw-r--r--env/.config/cava/shaders/northern_lights.frag34
-rw-r--r--env/.config/cava/shaders/pass_through.vert14
-rw-r--r--env/.config/cava/shaders/spectrogram.frag53
-rw-r--r--env/.config/cava/shaders/winamp_line_style_spectrum.frag112
-rw-r--r--env/.config/fastfetch/10.jsonc157
-rw-r--r--env/.config/fastfetch/ascii-char.jsonc164
-rw-r--r--env/.config/fastfetch/compact.jsonc103
-rwxr-xr-xenv/.config/hypr/cycle-layout.sh5
-rw-r--r--env/.config/hypr/hyprland.conf440
-rw-r--r--env/.config/hypr/hyprpaper.conf14
-rw-r--r--env/.config/lf/icons377
-rwxr-xr-xenv/.config/lf/lfrc172
-rwxr-xr-xenv/.config/nvim/.luarc.json14
-rw-r--r--env/.config/nvim/after/plugin/3rd.lua41
-rw-r--r--env/.config/nvim/after/plugin/cloak.lua31
-rw-r--r--env/.config/nvim/after/plugin/colorizer.lua1
-rw-r--r--env/.config/nvim/after/plugin/hardtime.lua1
-rwxr-xr-xenv/.config/nvim/after/plugin/harpoon.lua11
-rw-r--r--env/.config/nvim/after/plugin/indent-blankline.lua30
-rwxr-xr-xenv/.config/nvim/after/plugin/lsp.lua75
-rw-r--r--env/.config/nvim/after/plugin/lualine.lua46
-rw-r--r--env/.config/nvim/after/plugin/notify.lua4
-rwxr-xr-xenv/.config/nvim/after/plugin/telescope.lua9
-rw-r--r--env/.config/nvim/after/plugin/undotree.lua1
-rwxr-xr-xenv/.config/nvim/custom-lsp/.luarc.json3
-rwxr-xr-xenv/.config/nvim/init.lua1
-rw-r--r--env/.config/nvim/lua/yourmom/cloak.lua293
-rwxr-xr-xenv/.config/nvim/lua/yourmom/init.lua50
-rwxr-xr-xenv/.config/nvim/lua/yourmom/packer.lua73
-rwxr-xr-xenv/.config/nvim/lua/yourmom/remap.lua262
-rwxr-xr-xenv/.config/nvim/spell/en.utf-8.add21
-rwxr-xr-xenv/.config/nvim/spell/en.utf-8.add.splbin0 -> 253 bytes
-rwxr-xr-xenv/.config/picom.conf446
-rw-r--r--env/.config/rofi/config.rasi15
-rwxr-xr-xenv/.config/screenkey.json32
-rwxr-xr-xenv/.config/tmux/tmux.conf72
-rw-r--r--env/.config/waybar/config.jsonc180
-rw-r--r--env/.config/waybar/ref-style.css163
-rw-r--r--env/.config/waybar/style.css163
-rw-r--r--env/.config/wezterm/colors.lua26
-rwxr-xr-xenv/.config/wezterm/reference.lua319
-rwxr-xr-xenv/.config/wezterm/wezterm.lua31
-rwxr-xr-xenv/.local/bin/system/backup/backup.sh31
-rwxr-xr-xenv/.local/bin/system/backup/copy-to-git.sh21
-rwxr-xr-xenv/.local/bin/system/bri.sh1
-rwxr-xr-xenv/.local/bin/system/math.sh13
-rwxr-xr-xenv/.local/bin/system/neoboot.sh38
-rwxr-xr-xenv/.local/bin/system/restart-pipe.sh1
-rwxr-xr-xenv/.local/bin/system/set-pri-java.sh1
-rwxr-xr-xenv/.local/bin/system/start-scripts/autostart.sh63
-rwxr-xr-xenv/.local/bin/system/start-scripts/lessons-loop.sh7
-rwxr-xr-xenv/.local/bin/system/start-scripts/newsboat-fetch.sh16
-rw-r--r--env/.local/bin/system/stbar/config.txt1
-rwxr-xr-xenv/.local/bin/system/stbar/killbar.sh10
-rwxr-xr-xenv/.local/bin/system/stbar/stbar-awesome.sh87
-rwxr-xr-xenv/.local/bin/system/stbar/stbar.sh84
-rwxr-xr-xenv/.local/bin/system/stbar/weth_str.txt0
-rwxr-xr-xenv/.local/bin/system/url-handler.sh23
-rw-r--r--env/.p10k.zsh1739
-rwxr-xr-xenv/.urlview29
-rwxr-xr-xenv/.vimrc78
-rwxr-xr-xenv/.zshrc47
128 files changed, 8998 insertions, 0 deletions
diff --git a/env/.Xresources b/env/.Xresources
new file mode 100755
index 0000000..6be825b
--- /dev/null
+++ b/env/.Xresources
@@ -0,0 +1,82 @@
+! black
+*.color0: #263640
+*.color8: #4a697d
+
+! red
+*.color1: #d12f2c
+*.color9: #fa3935
+
+! green
+*.color2: #819400
+*.color10: #a4bd00
+
+! yellow
+*.color3: #b08500
+*.color11: #d9a400
+
+! blue
+*.color4: #2587cc
+*.color12: #09a2f5
+
+! magenta
+*.color5: #696ebf
+*.color13: #8086e8
+
+! cyan
+*.color6: #289c93
+*.color14: #00c5ba
+
+! white
+*.color7: #bfbaac
+*.color15: #fdf6e3
+
+Sxiv.background: #303030
+Sxiv.foreground: #00C0FF
+Sxiv.font: Hack-9
+
+!tabs
+!*.tabbed.tabbar-fg: 2
+!*.tabbed.tabbar-bg: 0
+!*.tabbed.tab-fg: 3
+!*.tabbed.tab-bg: 1
+
+!*.highlightColor: #bdbdbd
+!*.highlightTextColor: #000000
+
+!start size
+!URxvt.geometry: 120x30
+URxvt.scrollBar: false
+
+
+URxvt.transparent: true
+URxvt.depth: 10
+URxvt.shading: 110
+!URxvt.font: xft:cousine:size=12
+URxvt.font: xft:Inconsolata-Regular:size=10
+URxvt.foreground: #e6e6e6
+URxvt.background: #000000
+
+URxvt.tintColor: [100]#111111
+URxvt.cursorColor: #fabd2f
+
+URxvt.inputMethod: ibus
+URxvt.preeditType: OverTheSpot
+
+/*
+URxvt.keysym.Shift-Up: command:\033]720;1\007
+URxvt.keysym.Shift-Down: command:\033]721;1\007
+URxvt.keysym.Control-Up: \033[1;5A
+URxvt.keysym.Control-Down: \033[1;5B
+URxvt.keysym.Control-Right: \033[1;5C
+URxvt.keysym.Control-Left: \033[1;5D
+*/
+URxvt.iso14755: false
+!URxvt.perl-ext-common: default,resize-font
+!URxvt.perl-ext-common: default,resize-font,-tabbed
+URxvt.perl-ext-common: default
+
+URxvt.keysym.Shift-Control-V: eval:paste_clipboard
+URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
+!URxvt.keysym.C-j: resize-font:smaller
+!URxvt.keysym.C-k: resize-font:bigger
+!URxvt.keysym.C-equal: resize-font:reset
diff --git a/env/.bashrc b/env/.bashrc
new file mode 100644
index 0000000..9685785
--- /dev/null
+++ b/env/.bashrc
@@ -0,0 +1,10 @@
+#
+# ~/.bashrc
+#
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+PS1='\[\e[37;1m\][\[\e[35;1m\]\u\[\e[33m\]@\[\e[35;1m\]\h \[\e[36;1m\]\W\[\e[37;1m\]]\[\e[0;1m\]∮ '
+
+~/stuff/scripts/system/neoboot.sh
+source ~/.config/.profile
diff --git a/env/.config/.profile b/env/.config/.profile
new file mode 100755
index 0000000..caf7e21
--- /dev/null
+++ b/env/.config/.profile
@@ -0,0 +1,132 @@
+#!/bin/bash
+if [ -n "$BASH_SOURCE" ]; then
+ # Bash or zsh (if BASH_SOURCE is defined)
+ script="$BASH_SOURCE[0]"
+elif [ -n "$ZSH_VERSION" ]; then
+ # Zsh
+ script="${(%):-%x}"
+else
+ # Dash or POSIX sh
+ script="$0"
+fi
+
+if test -z "${XDG_RUNTIME_DIR}"; then
+ export XDG_RUNTIME_DIR=/tmp/${UID}-runtime-dir
+ if ! test -d "${XDG_RUNTIME_DIR}"; then
+ mkdir "${XDG_RUNTIME_DIR}"
+ chmod 0700 "${XDG_RUNTIME_DIR}"
+ fi
+fi
+
+#if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
+# exec sway > ~/.swaylog 2>&1
+#fi
+
+# . torsocks on
+export PROMPT_EOL_MARK=""
+export EDITOR="nvim"
+# idk which one works
+# export BROWSER="/home/iceyrazor/.local/bin/zen-x86_64.AppImage"
+export BROWSER="zen.desktop"
+export PREFIX=/usr
+export PATH="$PATH:$HOME/.cargo/bin:$HOME/stuff/scripts/system:$HOME/stuff/scripts/system/backup:$HOME/stuff/scripts/system/wlx:$HOME/stuff/scripts/system/youtube-playlist-cli:$HOME/.local/bin/blender-4.1.1-linux-x64:$HOME/stuff/manual-programs/app-images:$HOME/stuff/scripts/system/theme-setter"
+export MANPAGER='nvim +Man!'
+# export DWM_NOTIF_FILE="/home/iceyrazor/stuff/scripts/c/SDL/notif/notif.txt"
+
+export heartost="/home/iceyrazor/.steam/root/steamapps/music/Heartbound - OST"
+
+alias fukn="sudo $@"
+alias ls='ls --color=auto'
+alias lss="fukn du -ahd 1 | sort -hr"
+alias lsu="lsblk --filter 'NAME=~\"sd[abcde]\"' -o NAME,MOUNTPOINTS"
+alias surf="WEBKIT_DISABLE_COMPOSITING_MODE=1 surf"
+alias lsblkfs="lsblk -o PATH,FSTYPE,MOUNTPOINT"
+alias grep='grep --color=auto'
+# alias ffchar='fastfetch --logo ~/stuff/media/ICE/ascii-char.txt --logo-color-5 "light_magenta" --logo-color-1 "reset_black" --logo-color-2 "light_black" --logo-color-3 "light_blue"'
+alias ffcompact='fastfetch -c $HOME/.config/fastfetch/compact.jsonc'
+alias ff='fastfetch -c $HOME/.config/fastfetch/10.jsonc 2> /dev/null || fastfetch --localip-show-ipv4 0'
+alias ffchar='fastfetch -c $HOME/.config/fastfetch/ascii-char.jsonc'
+# alias fastfetch='fastfetch --localip-show-ipv4 0 --kitty-direct /home/iceyrazor/stuff/media/ICE/Sprite-0009.png --logo-width 40 --logo-height 20'
+[ "$(cat /etc/hostname)" = "Kasino" ] && alias fukn="doas $@"
+[ "$(cat /etc/hostname)" = "Kan" ] && alias fukn="doas $@"
+alias numen="echo key x | fukn dotool && NUMEN_DMENU=rofi NUMEN_DMENU_OPTS='-show drun' LD_LIBRARY_PATH=/usr/lib/ numen & disown"
+
+alias ascii="~/stuff/scripts/c/SDL/ascii/ascii"
+
+alias watchlss="fukn watch \"du -ah -d 1 | sort -hr\""
+alias lfub=~/.local/bin/lf-gadgets/lf-ueberzug/lf-ueberzug
+alias lfk=~/.local/bin/lf-gadgets/lf-kitty/lf-kitty
+alias ovim=/usr/bin/vim
+alias vim=nvim
+alias fzf="fzf --walker-skip=.private-parent"
+alias fcd="cd \"\$(fzf --walker dir,hidden --walker-skip=.private-parent)\""
+alias notes="cd ~/stuff/notes && vim notes.md && cd ~"
+alias ts="~/stuff/scripts/system/tmux-sessionizer.sh"
+alias fman="bash -c 'compgen -c' | fzf | xargs man"
+alias etask="$EDITOR stuff/scripts/system/task.sh"
+
+
+#alias updateL='fukn /home/iceyrazor/update_list/update_list.sh '
+alias music="nohup vlc /home/iceyrazor/stuff/scripts/system/youtube-playlist-cli/title_vids > /dev/null 2> /dev/null < /dev/null & disown && cd /home/iceyrazor/stuff/scripts/system/youtube-playlist-cli/title_vids && lfk"
+alias ibuss="ibus-daemon -rxRd"
+alias ygg="fukn bash -c 'mkdir /var/run/yggdrasil; yggdrasil -useconf < /etc/yggdrasil.conf'"
+alias alvr="WINIT_X11_SCALE_FACTOR=\"1\" /home/iceyrazor/stuff/manual-programs/dontsync/alvr_streamer_linux/bin/alvr_dashboard & disown"
+alias obss="obs && obs --enable-media-stream & disown"
+alias get_channel_id="xargs curl -s | grep -Eo 'channel_id=.{0,50}' | sed 's/\".*//g' | fzf | xargs printf \"https://www.youtube.com/feeds/videos.xml?%s\" | xclip -selection clipboard"
+
+alias killa="~/stuff/killall.sh"
+alias bbackup="~/stuff/scripts/system/backup/backup.sh"
+alias bbacklap="~/stuff/scripts/system/backup/backup-tol.sh"
+alias bgit="~/stuff/scripts/system/backup/move-to-git.sh"
+alias vasm="~/stuff/manual-programs/vasm/vasm6502_oldstyle -Fbin -dotdir "
+alias pipes="pipes.sh -t 0 -p 3 -f 30 -r 2000"
+alias anim="hyprctl keyword animations:enabled "
+
+
+alias bri="fukn ~/stuff/scripts/system/bri.sh"
+# alias drkwll="nitrogen --head=0 --set-zoom-fill ~/stuff/media/gallifreyan/linux2.png && nitrogen --head=1 --set-zoom-fill ~/stuff/media/gallifreyan/linux2.png"
+# alias drkwll="nitrogen --head=0 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png && nitrogen --head=1 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png"
+alias drkwll="[ -z $WAYLAND_DISPLAY ] && nitrogen --head=0 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png && nitrogen --head=1 --set-zoom-fill ~/stuff/media/wallpapers/dark_leaves.png || hyprctl hyprpaper wallpaper 'HDMI-A-1,/home/iceyrazor/stuff/media/wallpapers/dark_leaves.png' && hyprctl hyprpaper wallpaper 'DP-1,/home/iceyrazor/stuff/media/wallpapers/dark_leaves.png'"
+alias reswll="hyprctl hyprpaper wallpaper 'HDMI-A-1,/home/iceyrazor/stuff/media/wallpapers/4500025-retrowave-vaporwave-car-typography-purple-blue-chromatic-aberration-initial-d-hachi-roku.jpg' && hyprctl hyprpaper wallpaper 'DP-1,/home/iceyrazor/stuff/media/wallpapers/tumblr_06bbd355f3e355049446dac24f6e7c44_2c486f77_1280 ninesols.jpg'"
+
+# mounting
+alias umsu="fukn umount u"
+alias umsu2="fukn umount u2"
+alias mswin="fukn mount -o umask=0,uid=nobody,gid=nobody /dev/sdb3 ~/windir"
+alias umswin="fukn umount ~/windir"
+alias msbak="doas cryptsetup open /dev/sda1 backups && doas mount /dev/mapper/backups ~/mnt-backups" # && fukn bindfs -u iceyrazor /mnt-backups ~/mnt-backups"
+alias umsbak="doas umount ~/mnt-backups && doas cryptsetup close backups" # " fukn umount /mnt-backups && fukn cryptsetup close backups"
+alias msfd="fukn mount /dev/sdc1 u2"
+alias msf="fukn cryptsetup open /dev/sdc2 flashdrive && fukn mount /dev/mapper/flashdrive ~/u"
+alias umsf="fukn umount ~/u && fukn cryptsetup close flashdrive"
+
+alias cam="ffplay -input_format mjpeg -fast -fflags +nobuffer -i -framerate 30 -max_delay 100 -max_probe_packets 0 -analyzeduration 0 -flags +low_delay /dev/video0"
+alias sc="ffmpeg -f x11grab -framerate 1 -video_size 1920x1200 -i :0.0 -vframes 1 -crf 18 ~/Pictures/Screenshots/$(date '+%m-%d-%Y-%I-%M')_${RANDOM}_screenshot.jpeg"
+alias sccam="ffmpeg -f video4linux2 -i /dev/v4l/by-id/usb-Sonix_Technology_Co.__Ltd._USB_2.0_Camera_SN0001-video-index0 -vframes 1 -video_size 1280x720 test.jpeg"
+alias sc2="escrotum -s ~/Pictures/%Y-%m-%d-%H%M%S_$wx$h_escrotum.png"
+alias scs="sleep 3s && ffmpeg -f x11grab -framerate 1 -video_size 1920x1200 -i :0.0 -vframes 1 -crf 18 output.jpeg"
+alias wwrite="watch -d grep -e Dirty: -e Writeback: /proc/meminfo"
+alias gol="~/stuff/scripts/c/SDL/game-of-life/game-of-life & disown"
+
+# alias vrinit="echo key x | fukn dotool && drkwll && killall xcompmgr; sleep 1s && wlx-layout.sh main; \
+alias vrinit="echo key x | fukn dotool && drkwll && sleep 2s && tmux new-session -s chat-loop -c stuff/scripts/rust/chat-loop"
+
+
+alias statst="echo full_stat:true > ~/stuff/scripts/system/stbar/config.txt"
+alias statsf="echo full_stat:false > ~/stuff/scripts/system/stbar/config.txt"
+
+alias get_drm="fukn cat /sys/module/nvidia_drm/parameters/modeset"
+
+alias nodem="find . -name 'node_modules' -type d | xargs du -sh | sort -hr | fzf -m --header \"select witch ones to delete\" --preview 'cat $(dirname {})/package.json'|awk print '{print $2}' | xargs -r rm -rf"
+
+alias walltaker="stuff/manual-programs/git/walltaker-client/walltaker.sh"
+alias savewall="stuff/manual-programs/git/walltaker-client/save.sh"
+
+
+# alias session="./Downloads/session-desktop-linux-x86_64-1.12.4.AppImage > /dev/null & disown"
+# alias simplex="_JAVA_AWT_WM_NONREPARENTING=1 ./Downloads/simplex-desktop-x86_64.AppImage > /dev/null & disown"
+# alias loki="./stuff/scripts/loki-toggle.sh"
+# alias lokig="fukn Lokinet-GUI.AppImage --no-sandbox > /dev/null & disown"
+
+xset r rate 300 50
+# xset r off
diff --git a/env/.config/atuin/config.toml b/env/.config/atuin/config.toml
new file mode 100644
index 0000000..7ae0b79
--- /dev/null
+++ b/env/.config/atuin/config.toml
@@ -0,0 +1,234 @@
+## where to store your database, default is your system data directory
+## linux/mac: ~/.local/share/atuin/history.db
+## windows: %USERPROFILE%/.local/share/atuin/history.db
+# db_path = "~/.history.db"
+
+## where to store your encryption key, default is your system data directory
+## linux/mac: ~/.local/share/atuin/key
+## windows: %USERPROFILE%/.local/share/atuin/key
+# key_path = "~/.key"
+
+## where to store your auth session token, default is your system data directory
+## linux/mac: ~/.local/share/atuin/session
+## windows: %USERPROFILE%/.local/share/atuin/session
+# session_path = "~/.session"
+
+## date format used, either "us" or "uk"
+# dialect = "us"
+
+## default timezone to use when displaying time
+## either "l", "local" to use the system's current local timezone, or an offset
+## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
+## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
+# timezone = "local"
+
+## enable or disable automatic sync
+# auto_sync = true
+
+## enable or disable automatic update checks
+# update_check = true
+
+## address of the sync server
+# sync_address = "https://api.atuin.sh"
+
+## how often to sync history. note that this is only triggered when a command
+## is ran, so sync intervals may well be longer
+## set it to 0 to sync after every command
+# sync_frequency = "10m"
+
+## which search mode to use
+## possible values: prefix, fulltext, fuzzy, skim
+# search_mode = "fuzzy"
+
+## which filter mode to use
+## possible values: global, host, session, directory
+# filter_mode = "global"
+
+## With workspace filtering enabled, Atuin will filter for commands executed
+## in any directory within a git repository tree (default: false)
+# workspaces = false
+
+## which filter mode to use when atuin is invoked from a shell up-key binding
+## the accepted values are identical to those of "filter_mode"
+## leave unspecified to use same mode set in "filter_mode"
+# filter_mode_shell_up_key_binding = "global"
+
+## which search mode to use when atuin is invoked from a shell up-key binding
+## the accepted values are identical to those of "search_mode"
+## leave unspecified to use same mode set in "search_mode"
+# search_mode_shell_up_key_binding = "fuzzy"
+
+## which style to use
+## possible values: auto, full, compact
+# style = "auto"
+
+## the maximum number of lines the interface should take up
+## set it to 0 to always go full screen
+# inline_height = 0
+inline_height = 0
+
+## Invert the UI - put the search bar at the top , Default to `false`
+# invert = false
+
+## enable or disable showing a preview of the selected command
+## useful when the command is longer than the terminal width and is cut off
+# show_preview = true
+
+## what to do when the escape key is pressed when searching
+## possible values: return-original, return-query
+# exit_mode = "return-original"
+
+## possible values: emacs, subl
+# word_jump_mode = "emacs"
+
+## characters that count as a part of a word
+# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+
+## number of context lines to show when scrolling by pages
+# scroll_context_lines = 1
+
+## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
+## alt-0 .. alt-9
+# ctrl_n_shortcuts = false
+
+## default history list format - can also be specified with the --format arg
+# history_format = "{time}\t{command}\t{duration}"
+
+## prevent commands matching any of these regexes from being written to history.
+## Note that these regular expressions are unanchored, i.e. if they don't start
+## with ^ or end with $, they'll match anywhere in the command.
+## For details on the supported regular expression syntax, see
+## https://docs.rs/regex/latest/regex/#syntax
+# history_filter = [
+# "^secret-cmd",
+# "^innocuous-cmd .*--secret=.+",
+# ]
+
+## prevent commands run with cwd matching any of these regexes from being written
+## to history. Note that these regular expressions are unanchored, i.e. if they don't
+## start with ^ or end with $, they'll match anywhere in CWD.
+## For details on the supported regular expression syntax, see
+## https://docs.rs/regex/latest/regex/#syntax
+# cwd_filter = [
+# "^/very/secret/area",
+# ]
+
+## Configure the maximum height of the preview to show.
+## Useful when you have long scripts in your history that you want to distinguish
+## by more than the first few lines.
+# max_preview_height = 4
+
+## Configure whether or not to show the help row, which includes the current Atuin
+## version (and whether an update is available), a keymap hint, and the total
+## amount of commands in your history.
+# show_help = true
+
+## Configure whether or not to show tabs for search and inspect
+# show_tabs = true
+
+## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
+## 1. AWS key id
+## 2. Github pat (old and new)
+## 3. Slack oauth tokens (bot, user)
+## 4. Slack webhooks
+## 5. Stripe live/test keys
+# secrets_filter = true
+
+## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
+# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
+enter_accept = true
+
+## Defaults to "emacs". This specifies the keymap on the startup of `atuin
+## search`. If this is set to "auto", the startup keymap mode in the Atuin
+## search is automatically selected based on the shell's keymap where the
+## keybinding is defined. If this is set to "emacs", "vim-insert", or
+## "vim-normal", the startup keymap mode in the Atuin search is forced to be
+## the specified one.
+# keymap_mode = "auto"
+keymap_mode = "vim-normal"
+
+## Cursor style in each keymap mode. If specified, the cursor style is changed
+## in entering the cursor shape. Available values are "default" and
+## "{blink,steady}-{block,underline,bar}".
+# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
+
+# network_connect_timeout = 5
+# network_timeout = 5
+
+## Timeout (in seconds) for acquiring a local database connection (sqlite)
+# local_timeout = 5
+
+## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
+## Alternatively, set env NO_MOTION=true
+# prefers_reduced_motion = false
+
+[stats]
+## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
+# common_subcommands = [
+# "apt",
+# "cargo",
+# "composer",
+# "dnf",
+# "docker",
+# "git",
+# "go",
+# "ip",
+# "kubectl",
+# "nix",
+# "nmcli",
+# "npm",
+# "pecl",
+# "pnpm",
+# "podman",
+# "port",
+# "systemctl",
+# "tmux",
+# "yarn",
+# ]
+
+## Set commands that should be totally stripped and ignored from stats
+# common_prefix = ["sudo"]
+
+## Set commands that will be completely ignored from stats
+# ignored_commands = [
+# "cd",
+# "ls",
+# "vi"
+# ]
+
+[keys]
+# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
+# scroll_exits = false
+
+[sync]
+# Enable sync v2 by default
+# This ensures that sync v2 is enabled for new installs only
+# In a later release it will become the default across the board
+records = true
+
+[preview]
+## which preview strategy to use to calculate the preview height (respects max_preview_height).
+## possible values: auto, static
+## auto: length of the selected command.
+## static: length of the longest command stored in the history.
+# strategy = "auto"
+
+[daemon]
+## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon`
+# enabled = false
+
+## How often the daemon should sync in seconds
+# sync_frequency = 300
+
+## The path to the unix socket used by the daemon (on unix systems)
+## linux/mac: ~/.local/share/atuin/atuin.sock
+## windows: Not Supported
+# socket_path = "~/.local/share/atuin/atuin.sock"
+
+## Use systemd socket activation rather than opening the given path (the path must still be correct for the client)
+## linux: false
+## mac/windows: Not Supported
+# systemd_socket = false
+
+## The port that should be used for TCP on non unix systems
+# tcp_port = 8889
diff --git a/env/.config/awesome/iceys-theme/layouts/cornerne.png b/env/.config/awesome/iceys-theme/layouts/cornerne.png
new file mode 100644
index 0000000..c85bd56
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornerne.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/cornernew.png b/env/.config/awesome/iceys-theme/layouts/cornernew.png
new file mode 100644
index 0000000..c3fd986
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornernew.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/cornernw.png b/env/.config/awesome/iceys-theme/layouts/cornernw.png
new file mode 100644
index 0000000..dfe78b3
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornernw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/cornernww.png b/env/.config/awesome/iceys-theme/layouts/cornernww.png
new file mode 100644
index 0000000..f489010
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornernww.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/cornerse.png b/env/.config/awesome/iceys-theme/layouts/cornerse.png
new file mode 100644
index 0000000..023ae79
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornerse.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/cornersew.png b/env/.config/awesome/iceys-theme/layouts/cornersew.png
new file mode 100644
index 0000000..f7cfa1c
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornersew.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/cornersw.png b/env/.config/awesome/iceys-theme/layouts/cornersw.png
new file mode 100644
index 0000000..c1453c9
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornersw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/cornersww.png b/env/.config/awesome/iceys-theme/layouts/cornersww.png
new file mode 100644
index 0000000..a65a043
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/cornersww.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/dwindle.png b/env/.config/awesome/iceys-theme/layouts/dwindle.png
new file mode 100644
index 0000000..9902d22
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/dwindle.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/dwindlew.png b/env/.config/awesome/iceys-theme/layouts/dwindlew.png
new file mode 100644
index 0000000..9199049
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/dwindlew.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/fairh.png b/env/.config/awesome/iceys-theme/layouts/fairh.png
new file mode 100644
index 0000000..d41deea
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/fairh.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/fairhw.png b/env/.config/awesome/iceys-theme/layouts/fairhw.png
new file mode 100644
index 0000000..bb50e3a
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/fairhw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/fairv.png b/env/.config/awesome/iceys-theme/layouts/fairv.png
new file mode 100644
index 0000000..f5f0288
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/fairv.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/fairvw.png b/env/.config/awesome/iceys-theme/layouts/fairvw.png
new file mode 100644
index 0000000..4f4ed52
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/fairvw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/floating.png b/env/.config/awesome/iceys-theme/layouts/floating.png
new file mode 100644
index 0000000..b8061a0
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/floating.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/floatingw.png b/env/.config/awesome/iceys-theme/layouts/floatingw.png
new file mode 100644
index 0000000..4815894
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/floatingw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/fullscreen.png b/env/.config/awesome/iceys-theme/layouts/fullscreen.png
new file mode 100644
index 0000000..d02f6fc
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/fullscreen.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/fullscreenw.png b/env/.config/awesome/iceys-theme/layouts/fullscreenw.png
new file mode 100644
index 0000000..5c35bfa
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/fullscreenw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/magnifier.png b/env/.config/awesome/iceys-theme/layouts/magnifier.png
new file mode 100644
index 0000000..2925414
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/magnifier.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/magnifierw.png b/env/.config/awesome/iceys-theme/layouts/magnifierw.png
new file mode 100644
index 0000000..6209556
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/magnifierw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/max.png b/env/.config/awesome/iceys-theme/layouts/max.png
new file mode 100644
index 0000000..8d20844
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/max.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/maxw.png b/env/.config/awesome/iceys-theme/layouts/maxw.png
new file mode 100644
index 0000000..85f5ce3
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/maxw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/spiral.png b/env/.config/awesome/iceys-theme/layouts/spiral.png
new file mode 100644
index 0000000..d9434be
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/spiral.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/spiralw.png b/env/.config/awesome/iceys-theme/layouts/spiralw.png
new file mode 100644
index 0000000..b78dd86
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/spiralw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tile.png b/env/.config/awesome/iceys-theme/layouts/tile.png
new file mode 100644
index 0000000..3ede21e
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tile.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tilebottom.png b/env/.config/awesome/iceys-theme/layouts/tilebottom.png
new file mode 100644
index 0000000..6f8c257
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tilebottom.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tilebottomw.png b/env/.config/awesome/iceys-theme/layouts/tilebottomw.png
new file mode 100644
index 0000000..a1de7b2
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tilebottomw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tileleft.png b/env/.config/awesome/iceys-theme/layouts/tileleft.png
new file mode 100644
index 0000000..31d6870
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tileleft.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tileleftw.png b/env/.config/awesome/iceys-theme/layouts/tileleftw.png
new file mode 100644
index 0000000..cf14c25
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tileleftw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tiletop.png b/env/.config/awesome/iceys-theme/layouts/tiletop.png
new file mode 100644
index 0000000..98cade2
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tiletop.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tiletopw.png b/env/.config/awesome/iceys-theme/layouts/tiletopw.png
new file mode 100644
index 0000000..d1d0872
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tiletopw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/layouts/tilew.png b/env/.config/awesome/iceys-theme/layouts/tilew.png
new file mode 100644
index 0000000..fde2ca4
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/layouts/tilew.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/submenu.png b/env/.config/awesome/iceys-theme/submenu.png
new file mode 100644
index 0000000..b2778e2
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/submenu.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/taglist/squarefw.png b/env/.config/awesome/iceys-theme/taglist/squarefw.png
new file mode 100644
index 0000000..2a86430
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/taglist/squarefw.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/taglist/squarew.png b/env/.config/awesome/iceys-theme/taglist/squarew.png
new file mode 100644
index 0000000..913f2ca
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/taglist/squarew.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/theme.lua b/env/.config/awesome/iceys-theme/theme.lua
new file mode 100644
index 0000000..0b3b6e0
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/theme.lua
@@ -0,0 +1,152 @@
+---------------------------
+-- Default awesome theme --
+---------------------------
+
+local theme_assets = require("beautiful.theme_assets")
+local xresources = require("beautiful.xresources")
+local dpi = xresources.apply_dpi
+
+--local gfs = require("gears.filesystem")
+--local themes_path = gfs.get_themes_dir()
+local themes_path=debug.getinfo(1,"S").source:gsub("theme.lua",""):gsub("@","")
+
+local theme = {}
+
+theme.font = "inconsolata regular 10"
+
+--#8558e6
+
+theme.bg_normal = "#222222" --#432990
+theme.bg_focus = "#453996"
+theme.bg_urgent = "#ff0000"
+theme.bg_minimize = "#111111"
+theme.bg_systray = theme.bg_normal
+theme.tasklist_bg_normal = "#222222"
+theme.wibar_background = "#00000000"
+--theme.wibar_background = theme.bg_normal
+
+--[[
+theme.bg_normal = "#432990"
+theme.bg_focus = "#453996"
+theme.bg_urgent = "#ff0000"
+theme.bg_minimize = "#444444"
+theme.bg_systray = theme.bg_normal
+--]]
+
+theme.fg_normal = "#dddddd" --#aaaaaa
+theme.fg_focus = "#eeeeee"
+theme.fg_urgent = "#eeeeee"
+theme.fg_minimize = "#eeeeee"
+
+theme.useless_gap = dpi(2)
+theme.border_width = dpi(2)
+theme.border_normal = "#222222"
+theme.border_focus = "#8558e6"
+theme.border_marked = "#91231c"
+theme.gap_single_client = true
+
+-- There are other variable sets
+-- overriding the default one when
+-- defined, the sets are:
+-- taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile]
+-- tasklist_[bg|fg]_[focus|urgent]
+-- titlebar_[bg|fg]_[normal|focus]
+-- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
+-- mouse_finder_[color|timeout|animate_timeout|radius|factor]
+-- prompt_[fg|bg|fg_cursor|bg_cursor|font]
+-- hotkeys_[bg|fg|border_width|border_color|shape|opacity|modifiers_fg|label_bg|label_fg|group_margin|font|description_font]
+-- Example:
+--theme.taglist_bg_focus = "#ff0000"
+
+theme.taglist_bg_empty="#222222"
+theme.taglist_bg_occupied=theme.taglist_bg_empty
+
+-- Generate taglist squares:
+local taglist_square_size = dpi(4)
+theme.taglist_squares_sel = theme_assets.taglist_squares_sel(
+ taglist_square_size, theme.fg_normal
+)
+theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
+ taglist_square_size, theme.fg_normal
+)
+
+-- Variables set for theming notifications:
+-- notification_font
+-- notification_[bg|fg]
+-- notification_[width|height|margin]
+-- notification_[border_color|border_width|shape|opacity]
+
+-- Variables set for theming the menu:
+-- menu_[bg|fg]_[normal|focus]
+-- menu_[border_color|border_width]
+theme.menu_submenu_icon = themes_path.."submenu.png"
+theme.menu_height = dpi(15)
+theme.menu_width = dpi(100)
+theme.notification_bg = "#222222"
+theme.notification_border_color = theme.border_focus
+theme.notification_font = "inconsolata regular 15"
+
+-- You can add as many variables as
+-- you wish and access them by using
+-- beautiful.variable in your rc.lua
+--theme.bg_widget = "#cc0000"
+
+-- Define the image to load
+theme.titlebar_close_button_normal = themes_path.."titlebar/close_normal.png"
+theme.titlebar_close_button_focus = themes_path.."titlebar/close_focus.png"
+
+theme.titlebar_minimize_button_normal = themes_path.."titlebar/minimize_normal.png"
+theme.titlebar_minimize_button_focus = themes_path.."titlebar/minimize_focus.png"
+
+theme.titlebar_ontop_button_normal_inactive = themes_path.."titlebar/ontop_normal_inactive.png"
+theme.titlebar_ontop_button_focus_inactive = themes_path.."titlebar/ontop_focus_inactive.png"
+theme.titlebar_ontop_button_normal_active = themes_path.."titlebar/ontop_normal_active.png"
+theme.titlebar_ontop_button_focus_active = themes_path.."titlebar/ontop_focus_active.png"
+
+theme.titlebar_sticky_button_normal_inactive = themes_path.."titlebar/sticky_normal_inactive.png"
+theme.titlebar_sticky_button_focus_inactive = themes_path.."titlebar/sticky_focus_inactive.png"
+theme.titlebar_sticky_button_normal_active = themes_path.."titlebar/sticky_normal_active.png"
+theme.titlebar_sticky_button_focus_active = themes_path.."titlebar/sticky_focus_active.png"
+
+theme.titlebar_floating_button_normal_inactive = themes_path.."titlebar/floating_normal_inactive.png"
+theme.titlebar_floating_button_focus_inactive = themes_path.."titlebar/floating_focus_inactive.png"
+theme.titlebar_floating_button_normal_active = themes_path.."titlebar/floating_normal_active.png"
+theme.titlebar_floating_button_focus_active = themes_path.."titlebar/floating_focus_active.png"
+
+theme.titlebar_maximized_button_normal_inactive = themes_path.."titlebar/maximized_normal_inactive.png"
+theme.titlebar_maximized_button_focus_inactive = themes_path.."titlebar/maximized_focus_inactive.png"
+theme.titlebar_maximized_button_normal_active = themes_path.."titlebar/maximized_normal_active.png"
+theme.titlebar_maximized_button_focus_active = themes_path.."titlebar/maximized_focus_active.png"
+
+theme.wallpaper = themes_path.."background.png"
+
+-- You can use your own layout icons like this:
+theme.layout_fairh = themes_path.."layouts/fairhw.png"
+theme.layout_fairv = themes_path.."layouts/fairvw.png"
+theme.layout_floating = themes_path.."layouts/floatingw.png"
+theme.layout_magnifier = themes_path.."layouts/magnifierw.png"
+theme.layout_max = themes_path.."layouts/maxw.png"
+theme.layout_fullscreen = themes_path.."layouts/fullscreenw.png"
+theme.layout_tilebottom = themes_path.."layouts/tilebottomw.png"
+theme.layout_tileleft = themes_path.."layouts/tileleftw.png"
+theme.layout_tile = themes_path.."layouts/tilew.png"
+theme.layout_tiletop = themes_path.."layouts/tiletopw.png"
+theme.layout_spiral = themes_path.."layouts/spiralw.png"
+theme.layout_dwindle = themes_path.."layouts/dwindlew.png"
+theme.layout_cornernw = themes_path.."layouts/cornernww.png"
+theme.layout_cornerne = themes_path.."layouts/cornernew.png"
+theme.layout_cornersw = themes_path.."layouts/cornersww.png"
+theme.layout_cornerse = themes_path.."layouts/cornersew.png"
+
+-- Generate Awesome icon:
+theme.awesome_icon = theme_assets.awesome_icon(
+ theme.menu_height, theme.bg_focus, theme.fg_focus
+)
+
+-- Define the icon theme for application icons. If not set then the icons
+-- from /usr/share/icons and /usr/share/icons/hicolor will be used.
+theme.icon_theme = nil
+
+return theme
+
+-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
diff --git a/env/.config/awesome/iceys-theme/titlebar/close_focus.png b/env/.config/awesome/iceys-theme/titlebar/close_focus.png
new file mode 100644
index 0000000..01ef825
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/close_focus.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/close_normal.png b/env/.config/awesome/iceys-theme/titlebar/close_normal.png
new file mode 100644
index 0000000..5448ed8
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/close_normal.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/floating_focus_active.png
new file mode 100644
index 0000000..82dcc7c
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/floating_focus_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/floating_focus_inactive.png
new file mode 100644
index 0000000..c19ba80
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/floating_focus_inactive.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/floating_normal_active.png
new file mode 100644
index 0000000..62342d1
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/floating_normal_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/floating_normal_inactive.png
new file mode 100644
index 0000000..e2bbdfa
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/floating_normal_inactive.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_active.png
new file mode 100644
index 0000000..d7dffd7
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_inactive.png
new file mode 100644
index 0000000..844389f
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_inactive.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_active.png
new file mode 100644
index 0000000..a705f81
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_inactive.png
new file mode 100644
index 0000000..4c1ab1f
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_inactive.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/minimize_focus.png b/env/.config/awesome/iceys-theme/titlebar/minimize_focus.png
new file mode 100644
index 0000000..caaceb2
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/minimize_focus.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/minimize_normal.png b/env/.config/awesome/iceys-theme/titlebar/minimize_normal.png
new file mode 100644
index 0000000..36621d0
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/minimize_normal.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_active.png
new file mode 100644
index 0000000..312c00b
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_inactive.png
new file mode 100644
index 0000000..a48e1c5
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_inactive.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_active.png
new file mode 100644
index 0000000..117a203
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_inactive.png
new file mode 100644
index 0000000..d3a10c8
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_inactive.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_active.png
new file mode 100644
index 0000000..814499b
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_inactive.png
new file mode 100644
index 0000000..21b000d
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_inactive.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_active.png
new file mode 100644
index 0000000..bdb5595
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_active.png
Binary files differ
diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_inactive.png
new file mode 100644
index 0000000..a96b9b1
--- /dev/null
+++ b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_inactive.png
Binary files differ
diff --git a/env/.config/awesome/keys-US-colemak.lua b/env/.config/awesome/keys-US-colemak.lua
new file mode 100644
index 0000000..a30377e
--- /dev/null
+++ b/env/.config/awesome/keys-US-colemak.lua
@@ -0,0 +1,271 @@
+pcall(require, "luarocks.loader")
+
+-- Standard awesome library
+local gears = require("gears")
+local awful = require("awful")
+require("awful.autofocus")
+-- Notification library
+local naughty = require("naughty")
+local menubar = require("menubar")
+local hotkeys_popup = require("awful.hotkeys_popup")
+
+local module = {}
+
+module.set_global_keys = function ()
+-- {{{ Key bindings
+globalkeys = gears.table.join(
+ awful.key({ modkey, }, "F1", hotkeys_popup.show_help,
+ {description="show help", group="awesome"}),
+ awful.key({ modkey, }, "b", awful.tag.viewprev,
+ {description = "view previous", group = "tag"}),
+ awful.key({ modkey, }, "k", awful.tag.viewnext,
+ {description = "view next", group = "tag"}),
+ awful.key({ modkey, }, "Escape", awful.tag.history.restore,
+ {description = "go back", group = "tag"}),
+
+ awful.key({ modkey, }, "n",
+ function ()
+ awful.client.focus.byidx( 1)
+ end,
+ {description = "focus next by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "e",
+ function ()
+ awful.client.focus.byidx(-1)
+ end,
+ {description = "focus previous by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "w", function () mymainmenu:show() end,
+ {description = "show main menu", group = "awesome"}),
+
+ -- Layout manipulation
+ awful.key({ modkey, "Shift" }, "n", function () awful.client.swap.byidx( 1) end,
+ {description = "swap with next client by index", group = "client"}),
+ awful.key({ modkey, "Shift" }, "e", function () awful.client.swap.byidx( -1) end,
+ {description = "swap with previous client by index", group = "client"}),
+ awful.key({ modkey, "Control" }, "n", function () awful.screen.focus_relative( 1) end,
+ {description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "e", function () awful.screen.focus_relative(-1) end,
+ {description = "focus the previous screen", group = "screen"}),
+ awful.key({ modkey, }, "l", awful.client.urgent.jumpto,
+ {description = "jump to urgent client", group = "client"}),
+ awful.key({ modkey, }, "Tab",
+ function ()
+ awful.client.focus.history.previous()
+ if client.focus then
+ client.focus:raise()
+ end
+ end,
+ {description = "go back", group = "client"}),
+
+ -- Standard program
+ awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end,
+ {description = "open a terminal", group = "launcher"}),
+ awful.key({ modkey, "Control" }, "p", awesome.restart,
+ {description = "reload awesome", group = "awesome"}),
+ awful.key({ modkey, "Shift" }, "q", awesome.quit,
+ {description = "quit awesome", group = "awesome"}),
+
+ awful.key({ modkey, "Shift" }, "u", show_my_desktop, {description = "show desktop", group = "awesome"}),
+
+ awful.key({ modkey, }, "i", function () awful.tag.incmwfact( 0.05) end,
+ {description = "increase master width factor", group = "layout"}),
+ awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
+ {description = "decrease master width factor", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
+ {description = "increase the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "i", function () awful.tag.incnmaster(-1, nil, true) end,
+ {description = "decrease the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
+ {description = "increase the number of columns", group = "layout"}),
+ awful.key({ modkey, "Control" }, "i", function () awful.tag.incncol(-1, nil, true) end,
+ {description = "decrease the number of columns", group = "layout"}),
+ awful.key({ modkey, "Control" }, "space", function () awful.layout.inc( 1) end,
+ {description = "select next", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
+ {description = "select previous", group = "layout"}),
+
+ awful.key({ modkey, "Shift", "Control" }, "k",
+ function ()
+ local c = awful.client.restore()
+ -- Focus restored client
+ if c then
+ c:emit_signal(
+ "request::activate", "key.unminimize", {raise = true}
+ )
+ end
+ end,
+ {description = "restore minimized", group = "client"}),
+
+ -- Prompt
+ awful.key({ modkey }, "p", function () awful.screen.focused().mypromptbox:run() end,
+ {description = "run prompt", group = "launcher"}),
+
+ awful.key({ modkey }, "s", function () os.execute("rofi -show drun") end, {description = "rofi drun", group = "launcher"}),
+
+ awful.key({ modkey }, "x",
+ function ()
+ awful.prompt.run {
+ prompt = "Run Lua code: ",
+ textbox = awful.screen.focused().mypromptbox.widget,
+ exe_callback = awful.util.eval,
+ history_path = awful.util.get_cache_dir() .. "/history_eval"
+ }
+ end,
+ {description = "lua execute prompt", group = "awesome"}),
+ -- Menubar
+ awful.key({ modkey }, ";", function() menubar.show() end,
+ {description = "show the menubar", group = "launcher"}),
+
+ awful.key({ }, "XF86AudioPrev", function ()
+ awful.spawn.with_shell("setxkbmap us")
+ awesome.restart()
+ end),
+ awful.key({ }, "XF86AudioNext", function ()
+ awful.spawn.with_shell("setxkbmap us -variant colemak")
+ awesome.restart()
+ end),
+
+ awful.key({ }, "XF86AudioPlay", function () awful.util.spawn(mpris.." -a PlayPause") end),
+ awful.key({ }, "XF86AudioStop", function () awful.util.spawn(mpris.." -a pause") end),
+ --awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -D pulse sset Master 2%+", false) end),
+ awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("pactl set-sink-volume @DEFAULT_SINK@ +2%", false) end),
+ awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("pactl set-sink-volume @DEFAULT_SINK@ -2%", false) end),
+ awful.key({ }, "XF86AudioMute", function ()
+ awful.spawn("pactl set-source-mute @DEFAULT_SOURCE@ toggle", false)
+ awful.spawn.with_shell("notify-send 'mic' \"$(pactl get-source-mute @DEFAULT_SOURCE@)\"", false)
+ end),
+ --also pamixer -i 5 #to increase 5%
+ --pamixer -d 5 #to decrease 5%
+
+ awful.key({ }, "Print", function()
+ awful.spawn.with_shell("ffmpeg -f x11grab -framerate 1 -video_size 1920x1200 -i :0.0 -vframes 1 -crf 0 ~/Pictures/Screenshots/$(date '+%m-%d-%Y-%I-%M')_${RANDOM}_screenshot.jpg")
+ gears.timer.start_new(3, function()
+ naughty.notify({title="screenshot taken",text="possibly"})
+ return false -- Stop the timer after the first iteration
+ end)
+ end),
+
+ awful.key({ "Shift" }, "Print", function()
+ awful.spawn.with_shell("/bin/flameshot screen")
+ end),
+
+ awful.key({ }, "Print", function () awful.util.spawn("flameshot gui") end)
+)
+
+-- Bind all key numbers to tags.
+-- Be careful: we use keycodes to make it work on any keyboard layout.
+-- This should map on the top row of your keyboard, usually 1 to 9.
+for i = 1, 9 do
+ globalkeys = gears.table.join(globalkeys,
+ -- View tag only.
+ awful.key({ modkey }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ tag:view_only()
+ end
+ end,
+ {description = "view tag #"..i, group = "tag"}),
+ -- Toggle tag display.
+ awful.key({ modkey, "Control" }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ awful.tag.viewtoggle(tag)
+ end
+ end,
+ {description = "toggle tag #" .. i, group = "tag"}),
+ -- Move client to tag.
+ awful.key({ modkey, "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:move_to_tag(tag)
+ end
+ end
+ end,
+ {description = "move focused client to tag #"..i, group = "tag"}),
+ -- Toggle tag on focused client.
+ awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:toggle_tag(tag)
+ end
+ end
+ end,
+ {description = "toggle focused client on tag #" .. i, group = "tag"})
+ )
+end
+
+end
+
+
+
+module.set_client_keys = function ()
+clientkeys = gears.table.join(
+ awful.key({ modkey, }, "t",
+ function (c)
+ c.fullscreen = not c.fullscreen
+ c:raise()
+ end,
+ {description = "toggle fullscreen", group = "client"}),
+ awful.key({ modkey, }, "q", function (c) c:kill() end,
+ {description = "close", group = "client"}),
+ awful.key({ modkey, }, "space", awful.client.floating.toggle ,
+ {description = "toggle floating", group = "client"}),
+ awful.key({ modkey, }, "z", function (c) c:swap(awful.client.getmaster()) end,
+ {description = "move to master", group = "client"}),
+ awful.key({ modkey, }, "y", function (c) c:move_to_screen() end,
+ {description = "move to screen", group = "client"}),
+ awful.key({ modkey, }, "g", function (c) c.ontop = not c.ontop end,
+ {description = "toggle keep on top", group = "client"}),
+ awful.key({ modkey, "Shift" }, "r", function (c) c.sticky = not c.sticky end,
+ {description = "toggle sticky mode", group="client"}),
+ awful.key({ modkey, "Shift" }, "k",
+ function (c)
+ -- The client currently has the input focus, so it cannot be
+ -- minimized, since minimized clients can't have the focus.
+ c.minimized = true
+ end ,
+ {description = "minimize", group = "client"}),
+ awful.key({ modkey, }, "m",
+ function (c)
+ c.maximized = not c.maximized
+ c:raise()
+ end ,
+ {description = "(un)maximize", group = "client"}),
+ awful.key({ modkey, "Control" }, "m",
+ function (c)
+ c.maximized_vertical = not c.maximized_vertical
+ c:raise()
+ end ,
+ {description = "(un)maximize vertically", group = "client"}),
+ awful.key({ modkey, "Shift" }, "m",
+ function (c)
+ c.maximized_horizontal = not c.maximized_horizontal
+ c:raise()
+ end ,
+ {description = "(un)maximize horizontally", group = "client"}),
+
+ awful.key({ modkey }, 0,
+ function()
+ local screen = awful.screen.focused()
+ for i = 1,9 do
+ local tag = screen.tags[i]
+ if tag and tag.selected==false then
+ awful.tag.viewtoggle(tag)
+ end
+ end
+ end,
+ {description = "view all tags", group = "tag"})
+)
+end
+
+
+return module
diff --git a/env/.config/awesome/keys-US.lua b/env/.config/awesome/keys-US.lua
new file mode 100644
index 0000000..820ec63
--- /dev/null
+++ b/env/.config/awesome/keys-US.lua
@@ -0,0 +1,272 @@
+pcall(require, "luarocks.loader")
+
+-- Standard awesome library
+local gears = require("gears")
+local awful = require("awful")
+require("awful.autofocus")
+-- Notification library
+local naughty = require("naughty")
+local menubar = require("menubar")
+local hotkeys_popup = require("awful.hotkeys_popup")
+
+local module = {}
+
+module.set_global_keys = function ()
+-- {{{ Key bindings
+globalkeys = gears.table.join(
+ awful.key({ modkey, }, "F1", hotkeys_popup.show_help,
+ {description="show help", group="awesome"}),
+ awful.key({ modkey, }, "b", awful.tag.viewprev,
+ {description = "view previous", group = "tag"}),
+ awful.key({ modkey, }, "n", awful.tag.viewnext,
+ {description = "view next", group = "tag"}),
+ awful.key({ modkey, }, "Escape", awful.tag.history.restore,
+ {description = "go back", group = "tag"}),
+
+ awful.key({ modkey, }, "j",
+ function ()
+ awful.client.focus.byidx( 1)
+ end,
+ {description = "focus next by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "k",
+ function ()
+ awful.client.focus.byidx(-1)
+ end,
+ {description = "focus previous by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "w", function () mymainmenu:show() end,
+ {description = "show main menu", group = "awesome"}),
+
+ -- Layout manipulation
+ awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
+ {description = "swap with next client by index", group = "client"}),
+ awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
+ {description = "swap with previous client by index", group = "client"}),
+ awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
+ {description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
+ {description = "focus the previous screen", group = "screen"}),
+ awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
+ {description = "jump to urgent client", group = "client"}),
+ awful.key({ modkey, }, "Tab",
+ function ()
+ awful.client.focus.history.previous()
+ if client.focus then
+ client.focus:raise()
+ end
+ end,
+ {description = "go back", group = "client"}),
+
+ -- Standard program
+ awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end,
+ {description = "open a terminal", group = "launcher"}),
+ awful.key({ modkey, "Control" }, "r", awesome.restart,
+ {description = "reload awesome", group = "awesome"}),
+ awful.key({ modkey, "Shift" }, "q", awesome.quit,
+ {description = "quit awesome", group = "awesome"}),
+
+ awful.key({ modkey, "Shift" }, "o", show_my_desktop, {description = "show desktop", group = "awesome"}),
+
+ awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end,
+ {description = "increase master width factor", group = "layout"}),
+ awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
+ {description = "decrease master width factor", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
+ {description = "increase the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
+ {description = "decrease the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
+ {description = "increase the number of columns", group = "layout"}),
+ awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
+ {description = "decrease the number of columns", group = "layout"}),
+ awful.key({ modkey, "Control" }, "space", function () awful.layout.inc( 1) end,
+ {description = "select next", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
+ {description = "select previous", group = "layout"}),
+
+ awful.key({ modkey, "Shift", "Control" }, "n",
+ function ()
+ local c = awful.client.restore()
+ -- Focus restored client
+ if c then
+ c:emit_signal(
+ "request::activate", "key.unminimize", {raise = true}
+ )
+ end
+ end,
+ {description = "restore minimized", group = "client"}),
+
+ -- Prompt
+ awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end,
+ {description = "run prompt", group = "launcher"}),
+
+ awful.key({ modkey }, "d", function () os.execute("rofi -x11 -show drun") end, {description = "rofi drun", group = "launcher"}),
+ awful.key({ modkey , "Shift" }, "d", function () os.execute("echo \"\" | rofi -x11 -dmenu -p 'Search' | xargs -I{} xdg-open 'https://searx.iceyfox.xyz/search?q={}'") end, {description = "rofi search", group = "launcher"}),
+
+ awful.key({ modkey }, "x",
+ function ()
+ awful.prompt.run {
+ prompt = "Run Lua code: ",
+ textbox = awful.screen.focused().mypromptbox.widget,
+ exe_callback = awful.util.eval,
+ history_path = awful.util.get_cache_dir() .. "/history_eval"
+ }
+ end,
+ {description = "lua execute prompt", group = "awesome"}),
+ -- Menubar
+ awful.key({ modkey }, "p", function() menubar.show() end,
+ {description = "show the menubar", group = "launcher"}),
+
+ awful.key({ }, "XF86AudioPrev", function ()
+ awful.spawn.with_shell("setxkbmap us")
+ awesome.restart()
+ end),
+ awful.key({ }, "XF86AudioNext", function ()
+ awful.spawn.with_shell("setxkbmap us -variant colemak")
+ awesome.restart()
+ end),
+
+ awful.key({ }, "XF86AudioPlay", function () awful.util.spawn(mpris.." -a PlayPause") end),
+ awful.key({ }, "XF86AudioStop", function () awful.util.spawn(mpris.." -a pause") end),
+ --awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -D pulse sset Master 2%+", false) end),
+ awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("pactl set-sink-volume @DEFAULT_SINK@ +2%", false) end),
+ awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("pactl set-sink-volume @DEFAULT_SINK@ -2%", false) end),
+ awful.key({ }, "XF86AudioMute", function ()
+ awful.spawn("pactl set-source-mute @DEFAULT_SOURCE@ toggle", false)
+ awful.spawn.with_shell("notify-send 'mic' \"$(pactl get-source-mute @DEFAULT_SOURCE@)\"", false)
+ end),
+ --also pamixer -i 5 #to increase 5%
+ --pamixer -d 5 #to decrease 5%
+
+ awful.key({ }, "Print", function()
+ awful.spawn.with_shell("ffmpeg -f x11grab -framerate 1 -video_size 1920x1200 -i :0.0 -vframes 1 -crf 0 ~/Pictures/Screenshots/$(date '+%m-%d-%Y-%I-%M')_${RANDOM}_screenshot.jpg")
+ gears.timer.start_new(3, function()
+ naughty.notify({title="screenshot taken",text="possibly"})
+ return false -- Stop the timer after the first iteration
+ end)
+ end),
+
+ awful.key({ "Shift" }, "Print", function()
+ awful.spawn.with_shell("/bin/flameshot screen")
+ end),
+
+ awful.key({ "Control", "Shift" }, "Print", function () awful.util.spawn("flameshot gui") end)
+)
+
+-- Bind all key numbers to tags.
+-- Be careful: we use keycodes to make it work on any keyboard layout.
+-- This should map on the top row of your keyboard, usually 1 to 9.
+for i = 1, 9 do
+ globalkeys = gears.table.join(globalkeys,
+ -- View tag only.
+ awful.key({ modkey }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ tag:view_only()
+ end
+ end,
+ {description = "view tag #"..i, group = "tag"}),
+ -- Toggle tag display.
+ awful.key({ modkey, "Control" }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ awful.tag.viewtoggle(tag)
+ end
+ end,
+ {description = "toggle tag #" .. i, group = "tag"}),
+ -- Move client to tag.
+ awful.key({ modkey, "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:move_to_tag(tag)
+ end
+ end
+ end,
+ {description = "move focused client to tag #"..i, group = "tag"}),
+ -- Toggle tag on focused client.
+ awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:toggle_tag(tag)
+ end
+ end
+ end,
+ {description = "toggle focused client on tag #" .. i, group = "tag"})
+ )
+end
+
+end
+
+
+
+module.set_client_keys = function ()
+clientkeys = gears.table.join(
+ awful.key({ modkey, }, "f",
+ function (c)
+ c.fullscreen = not c.fullscreen
+ c:raise()
+ end,
+ {description = "toggle fullscreen", group = "client"}),
+ awful.key({ modkey, }, "q", function (c) c:kill() end,
+ {description = "close", group = "client"}),
+ awful.key({ modkey, }, "space", awful.client.floating.toggle ,
+ {description = "toggle floating", group = "client"}),
+ awful.key({ modkey, }, "z", function (c) c:swap(awful.client.getmaster()) end,
+ {description = "move to master", group = "client"}),
+ awful.key({ modkey, }, "o", function (c) c:move_to_screen() end,
+ {description = "move to screen", group = "client"}),
+ awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end,
+ {description = "toggle keep on top", group = "client"}),
+ awful.key({ modkey, "Shift" }, "s", function (c) c.sticky = not c.sticky end,
+ {description = "toggle sticky mode", group="client"}),
+ awful.key({ modkey, "Shift" }, "n",
+ function (c)
+ -- The client currently has the input focus, so it cannot be
+ -- minimized, since minimized clients can't have the focus.
+ c.minimized = true
+ end ,
+ {description = "minimize", group = "client"}),
+ awful.key({ modkey, }, "m",
+ function (c)
+ c.maximized = not c.maximized
+ c:raise()
+ end ,
+ {description = "(un)maximize", group = "client"}),
+ awful.key({ modkey, "Control" }, "m",
+ function (c)
+ c.maximized_vertical = not c.maximized_vertical
+ c:raise()
+ end ,
+ {description = "(un)maximize vertically", group = "client"}),
+ awful.key({ modkey, "Shift" }, "m",
+ function (c)
+ c.maximized_horizontal = not c.maximized_horizontal
+ c:raise()
+ end ,
+ {description = "(un)maximize horizontally", group = "client"}),
+
+ awful.key({ modkey }, 0,
+ function()
+ local screen = awful.screen.focused()
+ for i = 1,9 do
+ local tag = screen.tags[i]
+ if tag and tag.selected==false then
+ awful.tag.viewtoggle(tag)
+ end
+ end
+ end,
+ {description = "view all tags", group = "tag"})
+)
+end
+
+
+return module
diff --git a/env/.config/awesome/rc.bak2.lua b/env/.config/awesome/rc.bak2.lua
new file mode 100644
index 0000000..ffe59ce
--- /dev/null
+++ b/env/.config/awesome/rc.bak2.lua
@@ -0,0 +1,580 @@
+-- If LuaRocks is installed, make sure that packages installed through it are
+-- found (e.g. lgi). If LuaRocks is not installed, do nothing.
+pcall(require, "luarocks.loader")
+
+-- Standard awesome library
+local chosen_theme = "msjche"
+local gears = require("gears")
+local awful = require("awful")
+require("awful.autofocus")
+-- Widget and layout library
+local wibox = require("wibox")
+-- Theme handling library
+local beautiful = require("beautiful")
+-- Notification library
+local naughty = require("naughty")
+local menubar = require("menubar")
+local hotkeys_popup = require("awful.hotkeys_popup")
+-- Enable hotkeys help widget for VIM and other apps
+-- when client with a matching name is opened:
+require("awful.hotkeys_popup.keys")
+
+-- {{{ Error handling
+-- Check if awesome encountered an error during startup and fell back to
+-- another config (This code will only ever execute for the fallback config)
+if awesome.startup_errors then
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, there were errors during startup!",
+ text = awesome.startup_errors })
+end
+
+-- Handle runtime errors after startup
+do
+ local in_error = false
+ awesome.connect_signal("debug::error", function (err)
+ -- Make sure we don't go into an endless error loop
+ if in_error then return end
+ in_error = true
+
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, an error happened!",
+ text = tostring(err) })
+ in_error = false
+ end)
+end
+-- }}}
+
+-- {{{ Variable definitions
+-- Themes define colours, icons, font and wallpapers.
+beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
+
+-- This is used later as the default terminal and editor to run.
+terminal = "wezterm"
+editor = os.getenv("EDITOR") or "nvim"
+editor_cmd = terminal .. " -e " .. editor
+
+-- Default modkey.
+-- Usually, Mod4 is the key with a logo between Control and Alt.
+-- If you do not like this or do not have such a key,
+-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
+-- However, you can use another modifier like Mod1, but it may interact with others.
+modkey = "Mod4"
+
+-- Table of layouts to cover with awful.layout.inc, order matters.
+awful.layout.layouts = {
+ awful.layout.suit.floating,
+ awful.layout.suit.tile,
+ awful.layout.suit.tile.left,
+ awful.layout.suit.tile.bottom,
+ awful.layout.suit.tile.top,
+ awful.layout.suit.fair,
+ awful.layout.suit.fair.horizontal,
+ awful.layout.suit.spiral,
+ awful.layout.suit.spiral.dwindle,
+ awful.layout.suit.max,
+ awful.layout.suit.max.fullscreen,
+ awful.layout.suit.magnifier,
+ awful.layout.suit.corner.nw,
+ -- awful.layout.suit.corner.ne,
+ -- awful.layout.suit.corner.sw,
+ -- awful.layout.suit.corner.se,
+}
+-- }}}
+
+
+local theme_path = string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), chosen_theme)
+naughty.notify({text = 'Debug Message: '.. theme_path})
+--beautiful.init(theme_path)
+
+-- {{{ Menu
+-- Create a launcher widget and a main menu
+myawesomemenu = {
+ { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
+ { "manual", terminal .. " -e man awesome" },
+ { "edit config", editor_cmd .. " " .. awesome.conffile },
+ { "restart", awesome.restart },
+ { "quit", function() awesome.quit() end },
+}
+
+mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
+ { "open terminal", terminal }
+ }
+ })
+
+mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
+ menu = mymainmenu })
+
+-- Menubar configuration
+menubar.utils.terminal = terminal -- Set the terminal for applications that require it
+-- }}}
+
+-- Keyboard map indicator and switcher
+mykeyboardlayout = awful.widget.keyboardlayout()
+
+-- {{{ Wibar
+-- Create a textclock widget
+mytextclock = wibox.widget.textclock()
+
+-- Create a wibox for each screen and add it
+local taglist_buttons = gears.table.join(
+ awful.button({ }, 1, function(t) t:view_only() end),
+ awful.button({ modkey }, 1, function(t)
+ if client.focus then
+ client.focus:move_to_tag(t)
+ end
+ end),
+ awful.button({ }, 3, awful.tag.viewtoggle),
+ awful.button({ modkey }, 3, function(t)
+ if client.focus then
+ client.focus:toggle_tag(t)
+ end
+ end),
+ awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end),
+ awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end)
+ )
+
+local tasklist_buttons = gears.table.join(
+ awful.button({ }, 1, function (c)
+ if c == client.focus then
+ c.minimized = true
+ else
+ c:emit_signal(
+ "request::activate",
+ "tasklist",
+ {raise = true}
+ )
+ end
+ end),
+ awful.button({ }, 3, function()
+ awful.menu.client_list({ theme = { width = 250 } })
+ end),
+ awful.button({ }, 4, function ()
+ awful.client.focus.byidx(1)
+ end),
+ awful.button({ }, 5, function ()
+ awful.client.focus.byidx(-1)
+ end))
+
+local function set_wallpaper(s)
+ -- Wallpaper
+ if beautiful.wallpaper then
+ local wallpaper = beautiful.wallpaper
+ -- If wallpaper is a function, call it with the screen
+ if type(wallpaper) == "function" then
+ wallpaper = wallpaper(s)
+ end
+ gears.wallpaper.maximized(wallpaper, s, true)
+ end
+end
+
+-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
+screen.connect_signal("property::geometry", set_wallpaper)
+
+awful.screen.connect_for_each_screen(function(s)
+ -- Wallpaper
+ set_wallpaper(s)
+
+ -- Each screen has its own tag table.
+ awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
+
+ -- Create a promptbox for each screen
+ s.mypromptbox = awful.widget.prompt()
+ -- Create an imagebox widget which will contain an icon indicating which layout we're using.
+ -- We need one layoutbox per screen.
+ s.mylayoutbox = awful.widget.layoutbox(s)
+ s.mylayoutbox:buttons(gears.table.join(
+ awful.button({ }, 1, function () awful.layout.inc( 1) end),
+ awful.button({ }, 3, function () awful.layout.inc(-1) end),
+ awful.button({ }, 4, function () awful.layout.inc( 1) end),
+ awful.button({ }, 5, function () awful.layout.inc(-1) end)))
+ -- Create a taglist widget
+ s.mytaglist = awful.widget.taglist {
+ screen = s,
+ filter = awful.widget.taglist.filter.all,
+ buttons = taglist_buttons
+ }
+
+ -- Create a tasklist widget
+ s.mytasklist = awful.widget.tasklist {
+ screen = s,
+ filter = awful.widget.tasklist.filter.currenttags,
+ buttons = tasklist_buttons
+ }
+
+ -- Create the wibox
+ s.mywibox = awful.wibar({ position = "top", screen = s })
+
+ -- Add widgets to the wibox
+ s.mywibox:setup {
+ layout = wibox.layout.align.horizontal,
+ { -- Left widgets
+ layout = wibox.layout.fixed.horizontal,
+ mylauncher,
+ s.mytaglist,
+ s.mypromptbox,
+ },
+ s.mytasklist, -- Middle widget
+ { -- Right widgets
+ layout = wibox.layout.fixed.horizontal,
+ mykeyboardlayout,
+ wibox.widget.systray(),
+ mytextclock,
+ s.mylayoutbox,
+ },
+ }
+end)
+-- }}}
+
+-- {{{ Mouse bindings
+root.buttons(gears.table.join(
+ awful.button({ }, 3, function () mymainmenu:toggle() end),
+ awful.button({ }, 4, awful.tag.viewnext),
+ awful.button({ }, 5, awful.tag.viewprev)
+))
+-- }}}
+
+-- {{{ Key bindings
+globalkeys = gears.table.join(
+ awful.key({ modkey, }, "s", hotkeys_popup.show_help,
+ {description="show help", group="awesome"}),
+ awful.key({ modkey, }, "Left", awful.tag.viewprev,
+ {description = "view previous", group = "tag"}),
+ awful.key({ modkey, }, "Right", awful.tag.viewnext,
+ {description = "view next", group = "tag"}),
+ awful.key({ modkey, }, "Escape", awful.tag.history.restore,
+ {description = "go back", group = "tag"}),
+
+ awful.key({ modkey, }, "j",
+ function ()
+ awful.client.focus.byidx( 1)
+ end,
+ {description = "focus next by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "k",
+ function ()
+ awful.client.focus.byidx(-1)
+ end,
+ {description = "focus previous by index", group = "client"}
+ ),
+ awful.key({ modkey, }, "w", function () mymainmenu:show() end,
+ {description = "show main menu", group = "awesome"}),
+
+ -- Layout manipulation
+ awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
+ {description = "swap with next client by index", group = "client"}),
+ awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
+ {description = "swap with previous client by index", group = "client"}),
+ awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
+ {description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
+ {description = "focus the previous screen", group = "screen"}),
+ awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
+ {description = "jump to urgent client", group = "client"}),
+ awful.key({ modkey, }, "Tab",
+ function ()
+ awful.client.focus.history.previous()
+ if client.focus then
+ client.focus:raise()
+ end
+ end,
+ {description = "go back", group = "client"}),
+
+ -- Standard program
+ awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end,
+ {description = "open a terminal", group = "launcher"}),
+ awful.key({ modkey, "Control" }, "r", awesome.restart,
+ {description = "reload awesome", group = "awesome"}),
+ awful.key({ modkey, "Shift" }, "q", awesome.quit,
+ {description = "quit awesome", group = "awesome"}),
+
+ awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end,
+ {description = "increase master width factor", group = "layout"}),
+ awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
+ {description = "decrease master width factor", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
+ {description = "increase the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
+ {description = "decrease the number of master clients", group = "layout"}),
+ awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
+ {description = "increase the number of columns", group = "layout"}),
+ awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
+ {description = "decrease the number of columns", group = "layout"}),
+ awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end,
+ {description = "select next", group = "layout"}),
+ awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
+ {description = "select previous", group = "layout"}),
+
+ awful.key({ modkey, "Control" }, "n",
+ function ()
+ local c = awful.client.restore()
+ -- Focus restored client
+ if c then
+ c:emit_signal(
+ "request::activate", "key.unminimize", {raise = true}
+ )
+ end
+ end,
+ {description = "restore minimized", group = "client"}),
+
+ -- Prompt
+ awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end,
+ {description = "run prompt", group = "launcher"}),
+
+ awful.key({ modkey }, "d", function () os.execute("rofi -show drun") end, {description = "rofi drun", group = "launcher"}),
+
+ awful.key({ modkey }, "x",
+ function ()
+ awful.prompt.run {
+ prompt = "Run Lua code: ",
+ textbox = awful.screen.focused().mypromptbox.widget,
+ exe_callback = awful.util.eval,
+ history_path = awful.util.get_cache_dir() .. "/history_eval"
+ }
+ end,
+ {description = "lua execute prompt", group = "awesome"}),
+ -- Menubar
+ awful.key({ modkey }, "p", function() menubar.show() end,
+ {description = "show the menubar", group = "launcher"})
+)
+
+clientkeys = gears.table.join(
+ awful.key({ modkey, }, "f",
+ function (c)
+ c.fullscreen = not c.fullscreen
+ c:raise()
+ end,
+ {description = "toggle fullscreen", group = "client"}),
+ awful.key({ modkey, }, "q", function (c) c:kill() end,
+ {description = "close", group = "client"}),
+ awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ,
+ {description = "toggle floating", group = "client"}),
+ awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end,
+ {description = "move to master", group = "client"}),
+ awful.key({ modkey, }, "o", function (c) c:move_to_screen() end,
+ {description = "move to screen", group = "client"}),
+ awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end,
+ {description = "toggle keep on top", group = "client"}),
+ awful.key({ modkey, }, "n",
+ function (c)
+ -- The client currently has the input focus, so it cannot be
+ -- minimized, since minimized clients can't have the focus.
+ c.minimized = true
+ end ,
+ {description = "minimize", group = "client"}),
+ awful.key({ modkey, }, "m",
+ function (c)
+ c.maximized = not c.maximized
+ c:raise()
+ end ,
+ {description = "(un)maximize", group = "client"}),
+ awful.key({ modkey, "Control" }, "m",
+ function (c)
+ c.maximized_vertical = not c.maximized_vertical
+ c:raise()
+ end ,
+ {description = "(un)maximize vertically", group = "client"}),
+ awful.key({ modkey, "Shift" }, "m",
+ function (c)
+ c.maximized_horizontal = not c.maximized_horizontal
+ c:raise()
+ end ,
+ {description = "(un)maximize horizontally", group = "client"})
+)
+
+-- Bind all key numbers to tags.
+-- Be careful: we use keycodes to make it work on any keyboard layout.
+-- This should map on the top row of your keyboard, usually 1 to 9.
+for i = 1, 9 do
+ globalkeys = gears.table.join(globalkeys,
+ -- View tag only.
+ awful.key({ modkey }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ tag:view_only()
+ end
+ end,
+ {description = "view tag #"..i, group = "tag"}),
+ -- Toggle tag display.
+ awful.key({ modkey, "Control" }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ awful.tag.viewtoggle(tag)
+ end
+ end,
+ {description = "toggle tag #" .. i, group = "tag"}),
+ -- Move client to tag.
+ awful.key({ modkey, "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:move_to_tag(tag)
+ end
+ end
+ end,
+ {description = "move focused client to tag #"..i, group = "tag"}),
+ -- Toggle tag on focused client.
+ awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local tag = client.focus.screen.tags[i]
+ if tag then
+ client.focus:toggle_tag(tag)
+ end
+ end
+ end,
+ {description = "toggle focused client on tag #" .. i, group = "tag"})
+ )
+end
+
+clientbuttons = gears.table.join(
+ awful.button({ }, 1, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ end),
+ awful.button({ modkey }, 1, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ awful.mouse.client.move(c)
+ end),
+ awful.button({ modkey }, 3, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ awful.mouse.client.resize(c)
+ end)
+)
+
+-- Set keys
+root.keys(globalkeys)
+-- }}}
+
+-- {{{ Rules
+-- Rules to apply to new clients (through the "manage" signal).
+awful.rules.rules = {
+ -- All clients will match this rule.
+ { rule = { },
+ properties = { border_width = beautiful.border_width,
+ border_color = beautiful.border_normal,
+ focus = awful.client.focus.filter,
+ raise = true,
+ keys = clientkeys,
+ buttons = clientbuttons,
+ screen = awful.screen.preferred,
+ placement = awful.placement.no_overlap+awful.placement.no_offscreen
+ }
+ },
+
+ -- Floating clients.
+ { rule_any = {
+ instance = {
+ "DTA", -- Firefox addon DownThemAll.
+ "copyq", -- Includes session name in class.
+ "pinentry",
+ },
+ class = {
+ "Arandr",
+ "Blueman-manager",
+ "Gpick",
+ "Kruler",
+ "MessageWin", -- kalarm.
+ "Sxiv",
+ "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
+ "Wpa_gui",
+ "veromix",
+ "xtightvncviewer"},
+
+ -- Note that the name property shown in xprop might be set slightly after creation of the client
+ -- and the name shown there might not match defined rules here.
+ name = {
+ "Event Tester", -- xev.
+ },
+ role = {
+ "AlarmWindow", -- Thunderbird's calendar.
+ "ConfigManager", -- Thunderbird's about:config.
+ "pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
+ }
+ }, properties = { floating = true }},
+
+ -- Add titlebars to normal clients and dialogs
+ { rule_any = {type = { "normal", "dialog" }
+ }, properties = { titlebars_enabled = false }
+ },
+
+ -- Set Firefox to always map on the tag named "2" on screen 1.
+ -- { rule = { class = "Firefox" },
+ -- properties = { screen = 1, tag = "2" } },
+}
+-- }}}
+
+-- {{{ Signals
+-- Signal function to execute when a new client appears.
+client.connect_signal("manage", function (c)
+ -- Set the windows at the slave,
+ -- i.e. put it at the end of others instead of setting it master.
+ -- if not awesome.startup then awful.client.setslave(c) end
+
+ if awesome.startup
+ and not c.size_hints.user_position
+ and not c.size_hints.program_position then
+ -- Prevent clients from being unreachable after screen count changes.
+ awful.placement.no_offscreen(c)
+ end
+end)
+
+-- Add a titlebar if titlebars_enabled is set to true in the rules.
+client.connect_signal("request::titlebars", function(c)
+ -- buttons for the titlebar
+ local buttons = gears.table.join(
+ awful.button({ }, 1, function()
+ c:emit_signal("request::activate", "titlebar", {raise = true})
+ awful.mouse.client.move(c)
+ end),
+ awful.button({ }, 3, function()
+ c:emit_signal("request::activate", "titlebar", {raise = true})
+ awful.mouse.client.resize(c)
+ end)
+ )
+
+ awful.titlebar(c) : setup {
+ { -- Left
+ awful.titlebar.widget.iconwidget(c),
+ buttons = buttons,
+ layout = wibox.layout.fixed.horizontal
+ },
+ { -- Middle
+ { -- Title
+ align = "center",
+ widget = awful.titlebar.widget.titlewidget(c)
+ },
+ buttons = buttons,
+ layout = wibox.layout.flex.horizontal
+ },
+ { -- Right
+ awful.titlebar.widget.floatingbutton (c),
+ awful.titlebar.widget.maximizedbutton(c),
+ awful.titlebar.widget.stickybutton (c),
+ awful.titlebar.widget.ontopbutton (c),
+ awful.titlebar.widget.closebutton (c),
+ layout = wibox.layout.fixed.horizontal()
+ },
+ layout = wibox.layout.align.horizontal
+ }
+end)
+
+-- Enable sloppy focus, so that focus follows mouse.
+client.connect_signal("mouse::enter", function(c)
+ c:emit_signal("request::activate", "mouse_enter", {raise = false})
+end)
+
+client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
+client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
+-- }}}
+
+
+-- autostart applets
+awful.spawn.with_shell("xcompmgr")
+awful.spawn.with_shell("xrandr --dpi 90")
+awful.spawn.with_shell("xrandr --output Virtual-1 --mode 1920x1080")
+awful.spawn.with_shell("wezterm -e ~/stuff/scripts/system/task.sh")
+awful.spawn.with_shell("sleep 0.5s && nitrogen --restore")
diff --git a/env/.config/awesome/rc.lua b/env/.config/awesome/rc.lua
new file mode 100644
index 0000000..39f848e
--- /dev/null
+++ b/env/.config/awesome/rc.lua
@@ -0,0 +1,554 @@
+-- If LuaRocks is installed, make sure that packages installed through it are
+-- found (e.g. lgi). If LuaRocks is not installed, do nothing.
+pcall(require, "luarocks.loader")
+
+-- Standard awesome library
+local gears = require("gears")
+local awful = require("awful")
+require("awful.autofocus")
+-- Widget and layout library
+local wibox = require("wibox")
+-- Theme handling library
+local beautiful = require("beautiful")
+-- Notification library
+local naughty = require("naughty")
+local menubar = require("menubar")
+local hotkeys_popup = require("awful.hotkeys_popup")
+
+Us_keys = require("keys-US")
+Us_keys_colemak = require("keys-US-colemak")
+-- Enable hotkeys help widget for VIM and other apps
+-- when client with a matching name is opened:
+require("awful.hotkeys_popup.keys")
+
+local HOMEDIR="/home/iceyrazor"
+mpris=HOMEDIR.."/stuff/scripts/system/mpris_player_control"
+
+
+local show_desktop = false
+function show_my_desktop()
+ if show_desktop then
+ for _, c in ipairs(client.get()) do
+ c:emit_signal(
+ "request::activate", "key.unminimize", {raise = true}
+ )
+ end
+ show_desktop = false
+ else
+ for _, c in ipairs(client.get()) do
+ c.minimized = true
+ end
+ show_desktop = true
+ end
+end
+
+--auto switch to tag with clients if no current clients exist in current tag
+--[[
+client.connect_signal("unmanage", function(c)
+ local t = c.first_tag or awful.screen.focused().selected_tag
+ for _, cl in ipairs(t:clients()) do
+ if cl ~= c then
+ return
+ end
+ end
+ for _, t in ipairs(awful.screen.focused().tags) do
+ if #t:clients() > 0 then
+ t:view_only()
+ return
+ end
+ end
+end)
+]]--
+
+
+-- {{{ Error handling
+-- Check if awesome encountered an error during startup and fell back to
+-- another config (This code will only ever execute for the fallback config)
+if awesome.startup_errors then
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, there were errors during startup!",
+ text = awesome.startup_errors })
+end
+
+-- Handle runtime errors after startup
+do
+ local in_error = false
+ awesome.connect_signal("debug::error", function (err)
+ -- Make sure we don't go into an endless error loop
+ if in_error then return end
+ in_error = true
+
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, an error happened!",
+ text = tostring(err) })
+ in_error = false
+ end)
+end
+-- }}}
+
+-- {{{ Variable definitions
+-- Themes define colours, icons, font and wallpapers.
+--beautiful.init(gears.filesystem.get_themes_dir() .. "openSUSE/theme.lua")
+beautiful.init(gears.filesystem.get_configuration_dir() .. "iceys-theme/theme.lua")
+
+
+-- This is used later as the default terminal and editor to run.
+terminal = "wezterm"
+editor = os.getenv("EDITOR") or "nvim"
+editor_cmd = terminal .. " -e " .. editor
+
+-- Default modkey.
+-- Usually, Mod4 is the key with a logo between Control and Alt.
+-- If you do not like this or do not have such a key,
+-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
+-- However, you can use another modifier like Mod1, but it may interact with others.
+modkey = "Mod4"
+if awesome.hostname == "DangerNoodle" then
+ --modkey = "Mod3"
+end
+
+
+-- Table of layouts to cover with awful.layout.inc, order matters.
+awful.layout.layouts = {
+ awful.layout.suit.floating,
+ awful.layout.suit.tile,
+ awful.layout.suit.tile.left,
+ awful.layout.suit.tile.bottom,
+ awful.layout.suit.tile.top,
+ awful.layout.suit.fair,
+ awful.layout.suit.fair.horizontal,
+ awful.layout.suit.spiral,
+ awful.layout.suit.spiral.dwindle,
+ awful.layout.suit.max,
+ awful.layout.suit.max.fullscreen,
+ awful.layout.suit.magnifier,
+ awful.layout.suit.corner.nw,
+ -- awful.layout.suit.corner.ne,
+ -- awful.layout.suit.corner.sw,
+ -- awful.layout.suit.corner.se,
+}
+-- }}}
+
+
+
+-- {{{ Menu
+-- Create a launcher widget and a main menu
+myawesomemenu = {
+ { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
+ { "manual", terminal .. " -e man awesome" },
+ { "edit config", editor_cmd .. " " .. awesome.conffile },
+ { "restart", awesome.restart },
+ { "quit", function() awesome.quit() end },
+}
+
+mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
+ { "open terminal", terminal }
+ }
+ })
+
+mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
+ menu = mymainmenu })
+
+-- Menubar configuration
+menubar.utils.terminal = terminal -- Set the terminal for applications that require it
+-- }}}
+
+-- Keyboard map indicator and switcher
+mykeyboardlayout = awful.widget.keyboardlayout()
+
+-- {{{ Wibar
+-- Create a textclock widget
+mytextclock = wibox.widget.textclock("%a %m/%d/%Y %I:%M%p")
+
+-- Create a wibox for each screen and add it
+local taglist_buttons = gears.table.join(
+ awful.button({ }, 1, function(t) t:view_only() end),
+ awful.button({ modkey }, 1, function(t)
+ if client.focus then
+ client.focus:move_to_tag(t)
+ end
+ end),
+ awful.button({ }, 3, awful.tag.viewtoggle),
+ awful.button({ modkey }, 3, function(t)
+ if client.focus then
+ client.focus:toggle_tag(t)
+ end
+ end),
+ awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end),
+ awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end)
+ )
+
+local tasklist_buttons = gears.table.join(
+ awful.button({ }, 1, function (c)
+ if c == client.focus then
+ c.minimized = true
+ else
+ c:emit_signal(
+ "request::activate",
+ "tasklist",
+ {raise = true}
+ )
+ end
+ end),
+ awful.button({ }, 3, function()
+ awful.menu.client_list({ theme = { width = 250 } })
+ end),
+ awful.button({ }, 4, function ()
+ awful.client.focus.byidx(1)
+ end),
+ awful.button({ }, 5, function ()
+ awful.client.focus.byidx(-1)
+ end)
+)
+
+local function set_wallpaper(s)
+ -- Wallpaper
+ if beautiful.wallpaper then
+ local wallpaper = beautiful.wallpaper
+ -- If wallpaper is a function, call it with the screen
+ if type(wallpaper) == "function" then
+ wallpaper = wallpaper(s)
+ end
+ gears.wallpaper.maximized(wallpaper, s, true)
+ end
+end
+
+-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
+screen.connect_signal("property::geometry", set_wallpaper)
+
+awful.screen.connect_for_each_screen(function(screen)
+ -- Wallpaper
+ set_wallpaper(screen)
+
+ -- Each screen has its own tag table.
+ --awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[2])
+ --awful.tag({ "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  " }, s, awful.layout.layouts[2])
+ awful.tag({ "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  ", "  " }, screen, awful.layout.layouts[2])
+
+ -- Create a promptbox for each screen
+ screen.mypromptbox = awful.widget.prompt()
+ -- Create an imagebox widget which will contain an icon indicating which layout we're using.
+ -- We need one layoutbox per screen.
+ screen.mylayoutbox = awful.widget.layoutbox(screen)
+ screen.mylayoutbox:buttons(gears.table.join(
+ awful.button({ }, 1, function () awful.layout.inc( 1) end),
+ awful.button({ }, 3, function () awful.layout.inc(-1) end),
+ awful.button({ }, 4, function () awful.layout.inc( 1) end),
+ awful.button({ }, 5, function () awful.layout.inc(-1) end)))
+ -- Create a taglist widget
+ screen.mytaglist = awful.widget.taglist {
+ screen = screen,
+ filter = awful.widget.taglist.filter.all,
+ buttons = taglist_buttons
+ }
+
+ -- Create a tasklist widget
+ screen.mytasklist = awful.widget.tasklist {
+ screen = screen,
+ filter = awful.widget.tasklist.filter.currenttags,
+ buttons = tasklist_buttons
+ }
+
+
+ -- Create the wibox
+ screen.mywibox = awful.wibar({ position = "bottom", screen = screen , height = 20, width = 1500, y = screen.geometry.height - 24 - 500})
+ awful.placement.bottom(screen.mywibox, { margins = { bottom = 2, top = 20 } })
+
+
+ local spacer = wibox.widget.textbox(" ")
+ local spacerbg = wibox.widget.textbox(" ")
+ local spacerbg= wibox.widget.background(spacerbg)
+ spacerbg.bg = beautiful.bg_normal
+
+ screen.mywibox.bg = beautiful.wibar_background
+ screen.mywibox.ontop = true
+ screen.mywibox.floating = false
+
+ local mykeyboardlayout = wibox.widget.background(mykeyboardlayout)
+ mykeyboardlayout.bg = beautiful.bg_normal
+
+ local myLayoutBox = wibox.widget.background(screen.mylayoutbox)
+ myLayoutBox.bg = beautiful.bg_normal
+
+ local mytextclock = wibox.widget.background(mytextclock)
+ mytextclock.bg = beautiful.bg_normal
+
+ -- Add widgets to the wibox
+ if screen.index==1 then
+ local stbar = awful.widget.watch(HOMEDIR..'/stuff/scripts/system/stbar/stbar-awesome.sh', 2)
+ local stbar = wibox.widget.background(stbar)
+ stbar.bg = beautiful.bg_normal
+
+ screen.mywibox:setup {
+ layout = wibox.layout.align.horizontal,
+ { -- Left widgets
+ layout = wibox.layout.fixed.horizontal,
+ -- mylauncher,
+ screen.mytaglist,
+ screen.mypromptbox,
+ spacer,
+ },
+ screen.mytasklist, -- Middle widget
+ { -- Right widgets
+ layout = wibox.layout.fixed.horizontal,
+ spacer,
+ mykeyboardlayout,
+ stbar,
+ mytextclock,
+ spacerbg,
+ spacer,
+ spacerbg,
+ wibox.widget.systray(),
+ spacerbg,
+ spacer,
+ myLayoutBox,
+ },
+ }
+ else
+ screen.mywibox:setup {
+ layout = wibox.layout.align.horizontal,
+ { -- Left widgets
+ layout = wibox.layout.fixed.horizontal,
+ -- mylauncher,
+ screen.mytaglist,
+ screen.mypromptbox,
+ },
+ screen.mytasklist, -- Middle widget
+ { -- Right widgets
+ layout = wibox.layout.fixed.horizontal,
+ mykeyboardlayout,
+ mytextclock,
+ -- wibox.widget.systray(),
+ screen.mylayoutbox,
+ },
+ }
+ end
+
+
+ -- Add widgets to the wibox
+ --[[
+ if s.index == 1 then
+ local new_wi = awful.wibar({ position = "bottom", screen = 1 , width = 200, height = 20})
+ new_wi:setup {
+ layout = wibox.layout.align.horizontal,
+ { -- Left widgets
+ layout = wibox.layout.fixed.horizontal,
+ -- mylauncher,
+ mytextclock,
+ }
+ }
+ end
+ ]]--
+end)
+
+local month_calendar = awful.widget.calendar_popup.month({start_sunday=true})
+month_calendar:attach( mytextclock, "br" )
+--mytextclock:connect_signal("button::press",function ()
+--end)
+
+-- }}}
+
+-- {{{ Mouse bindings
+root.buttons(gears.table.join(
+ awful.button({ }, 3, function () mymainmenu:toggle() end),
+ awful.button({ }, 4, awful.tag.viewnext),
+ awful.button({ }, 5, awful.tag.viewprev)
+))
+-- }}}
+
+
+--set keymap based on keyboard layout
+if mykeyboardlayout._layout[1] == "us" then
+ Us_keys.set_global_keys()
+ Us_keys.set_client_keys()
+else
+ Us_keys_colemak.set_global_keys()
+ Us_keys_colemak.set_client_keys()
+end
+
+clientbuttons = gears.table.join(
+ awful.button({ }, 1, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ end),
+ awful.button({modkey}, 1, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ awful.mouse.client.move(c)
+ end),
+ awful.button({modkey}, 3, function (c)
+ c:emit_signal("request::activate", "mouse_click", {raise = true})
+ awful.mouse.client.resize(c, "bottomright") --corner bonked
+ end)
+)
+
+-- Set keys
+root.keys(globalkeys)
+-- }}}
+
+
+-- {{{ Rules
+-- Rules to apply to new clients (through the "manage" signal).
+awful.rules.rules = {
+ -- All clients will match this rule.
+ { rule = { },
+ properties = { border_width = beautiful.border_width,
+ border_color = beautiful.border_normal,
+ focus = awful.client.focus.filter,
+ raise = true,
+ keys = clientkeys,
+ buttons = clientbuttons,
+ screen = awful.screen.preferred,
+ placement = awful.placement.no_overlap+awful.placement.no_offscreen
+ }
+ },
+
+ -- Floating clients.
+ { rule_any = {
+ instance = {
+ "DTA", -- Firefox addon DownThemAll.
+ "copyq", -- Includes session name in class.
+ "pinentry",
+ },
+ class = {
+ "Arandr",
+ "Blueman-manager",
+ "Gpick",
+ "Kruler",
+ "MessageWin", -- kalarm.
+ "Sxiv",
+ "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
+ "nheko",
+ "Wpa_gui",
+ "Pcmanfm",
+ "veromix",
+ "xtightvncviewer"},
+
+ -- Note that the name property shown in xprop might be set slightly after creation of the client
+ -- and the name shown there might not match defined rules here.
+ name = {
+ "Event Tester", -- xev.
+ "Vivecraft*",
+ "Mivecraft*",
+ "LinVAM",
+ },
+ role = {
+ "AlarmWindow", -- Thunderbird's calendar.
+ "ConfigManager", -- Thunderbird's about:config.
+ "pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
+ }
+ }, properties = { floating = true }},
+
+ -- Add titlebars to normal clients and dialogs
+ { rule_any = {type = { "normal", "dialog" }
+ }, properties = { titlebars_enabled = false }
+ },
+
+ --[[
+ { rule_any = {
+ class = { "Mumble", "Gajim", "vesktop" }
+ },
+ properties = { floating = true, screen = 2 }
+ },
+ --]]
+
+ { rule_any = {
+ class = { "steam_app*", "vesktop", "Minecraft*" }
+ },
+ properties = { border_width = 0 }
+ }
+
+ -- Set Firefox to always map on the tag named "2" on screen 1.
+ -- { rule = { class = "Firefox" },
+ -- properties = { screen = 1, tag = "2" } },
+}
+-- }}}
+if screen[2] then
+ screen[2]:fake_resize(1986,33,1792,1015)
+ table.insert(awful.rules.rules,
+ { rule_any = {
+ class = { "Mumble", "gajim", "vesktop" }
+ },
+ properties = { floating = true, screen = 2 }
+ }
+)
+end
+
+-- {{{ Signals
+-- Signal function to execute when a new client appears.
+client.connect_signal("manage", function (c)
+ -- Set the windows at the slave,
+ -- i.e. put it at the end of others instead of setting it master.
+ -- if not awesome.startup then awful.client.setslave(c) end
+
+ if awesome.startup
+ and not c.size_hints.user_position
+ and not c.size_hints.program_position then
+ -- Prevent clients from being unreachable after screen count changes.
+ awful.placement.no_offscreen(c)
+ end
+end)
+
+screen[1]:connect_signal("request::geometry", function(s)
+ -- Recalculate the workarea height
+ -- s.workarea.height = s.geometry.height - 100
+ gears.debug.print_error("Workarea height: " .. tostring(s.workarea.height))
+ naughty.notify({ title = "Oops, there were errors during startup!",
+ text = 'djsakldsaujsaiodsjugfa89rdfjg489ejt' })
+ -- You can also recalculate s.workarea.y if you want to fine-tune vertical placement
+ -- awful.layout.arrange(s)
+end)
+awful.layout.suit.tile.master_width_factor = 0.5
+
+-- Add a titlebar if titlebars_enabled is set to true in the rules.
+client.connect_signal("request::titlebars", function(c)
+ -- buttons for the titlebar
+ local buttons = gears.table.join(
+ awful.button({ }, 1, function()
+ c:emit_signal("request::activate", "titlebar", {raise = true})
+ awful.mouse.client.move(c)
+ end),
+ awful.button({ }, 3, function()
+ c:emit_signal("request::activate", "titlebar", {raise = true})
+ awful.mouse.client.resize(c)
+ end)
+ )
+
+ awful.titlebar(c) : setup {
+ { -- Left
+ awful.titlebar.widget.iconwidget(c),
+ buttons = buttons,
+ layout = wibox.layout.fixed.horizontal
+ },
+ { -- Middle
+ { -- Title
+ align = "center",
+ widget = awful.titlebar.widget.titlewidget(c)
+ },
+ buttons = buttons,
+ layout = wibox.layout.flex.horizontal
+ },
+ { -- Right
+ awful.titlebar.widget.floatingbutton (c),
+ awful.titlebar.widget.maximizedbutton(c),
+ awful.titlebar.widget.stickybutton (c),
+ awful.titlebar.widget.ontopbutton (c),
+ awful.titlebar.widget.closebutton (c),
+ layout = wibox.layout.fixed.horizontal()
+ },
+ layout = wibox.layout.align.horizontal
+ }
+end)
+
+-- Enable sloppy focus, so that focus follows mouse.
+--[[
+client.connect_signal("mouse::enter", function(c)
+ c:emit_signal("request::activate", "mouse_enter", {raise = false})
+end)
+]]
+
+client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
+client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
+-- }}}
+
+
+-- autostart applets
+awful.spawn.with_shell("~/.config/dwm/autostart.sh")
diff --git a/env/.config/cava/config b/env/.config/cava/config
new file mode 100644
index 0000000..af2eb68
--- /dev/null
+++ b/env/.config/cava/config
@@ -0,0 +1,283 @@
+## Configuration file for CAVA.
+# Remove the ; to change parameters.
+
+
+[general]
+
+# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
+; mode = normal
+
+# Accepts only non-negative values.
+; framerate = 60
+
+# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
+# new as of 0.6.0 autosens of low values (dynamic range)
+# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
+; autosens = 1
+; overshoot = 20
+
+# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
+# 200 means double height. Accepts only non-negative values.
+; sensitivity = 100
+
+# The number of bars (0-512). 0 sets it to auto (fill up console).
+# Bars' width and space between bars in number of characters.
+bars = 512
+bar_width = 1
+; bar_spacing = 0
+# bar_height is only used for output in "noritake" format
+; bar_height = 32
+
+# For SDL width and space between bars is in pixels, defaults are:
+; bar_width = 20
+; bar_spacing = 5
+
+# sdl_glsl have these default values, they are only used to calculate max number of bars.
+; bar_width = 1
+; bar_spacing = 0
+
+
+# Lower and higher cutoff frequencies for lowest and highest bars
+# the bandwidth of the visualizer.
+# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
+# Cava will automatically increase the higher cutoff if a too low band is specified.
+; lower_cutoff_freq = 50
+; higher_cutoff_freq = 10000
+
+
+# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
+# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
+; sleep_timer = 0
+
+
+[input]
+
+# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem'
+# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with.
+# On Mac it defaults to 'portaudio' or 'fifo'
+# On windows this is automatic and no input settings are needed.
+#
+# All input methods uses the same config variable 'source'
+# to define where it should get the audio.
+#
+# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
+# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
+#
+# For pipewire 'source' will be the object name or object.serial of the device to capture from.
+# Both input and output devices are supported.
+#
+# For alsa 'source' will be the capture device.
+# For fifo 'source' will be the path to fifo-file.
+# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
+#
+# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'.
+# README.md contains further information on how to setup CAVA for sndio.
+#
+# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device.
+# README.md contains further information on how to setup CAVA for OSS on FreeBSD.
+#
+# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'.
+# README.md contains further information on how to setup CAVA for JACK.
+#
+; method = pulse
+; source = auto
+
+; method = pipewire
+; source = auto
+
+; method = alsa
+; source = hw:Loopback,1
+
+; method = fifo
+; source = /tmp/mpd.fifo
+
+; method = shmem
+; source = /squeezelite-AA:BB:CC:DD:EE:FF
+
+; method = portaudio
+; source = auto
+
+; method = sndio
+; source = default
+
+; method = oss
+; source = /dev/dsp
+
+; method = jack
+; source = default
+
+# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods:
+# sample_rate: fifo, pipewire, sndio, oss
+# sample_bits: fifo, pipewire, sndio, oss
+# channels: sndio, oss, jack
+# autoconnect: jack
+# Other methods ignore these settings.
+#
+# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported
+# by the chosen audio device, the device will use other supported values instead.
+# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it
+# will use 44100, 16 and 1.
+#
+; sample_rate = 44100
+; sample_bits = 16
+; channels = 2
+; autoconnect = 2
+
+
+[output]
+
+# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl'
+# or 'sdl_glsl'.
+# 'noncurses' (default) uses a buffer and cursor movements to only print
+# changes from frame to frame in the terminal. Uses less resources and is less
+# prone to tearing (vsync issues) than 'ncurses'.
+#
+# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
+# stream of the bar heights that can be used to send to other applications.
+# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
+#
+# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
+# in graphic mode. It only support the 3000 series graphical VFDs for now.
+#
+# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
+# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or
+# use one of the predefined ones.
+; method = noncurses
+
+# Orientation of the visualization. Can be 'bottom', 'top', 'left', 'right' or
+# 'horizontal'. Default is 'bottom'. 'left and 'right' are only supported on sdl
+# and ncruses output. 'horizontal' (bars go up and down from center) is only supported
+# on noncurses output.
+# Note: many fonts have weird or missing glyphs for characters used in orientations
+# other than 'bottom', which can make output not look right.
+; orientation = bottom
+
+# Visual channels. Can be 'stereo' or 'mono'.
+# 'stereo' mirrors both channels with low frequencies in center.
+# 'mono' outputs left to right lowest to highest frequencies.
+# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
+# set 'reverse' to 1 to display frequencies the other way around.
+; channels = stereo
+; mono_option = average
+; reverse = 0
+
+# Raw output target.
+# On Linux, a fifo will be created if target does not exist.
+# On Windows, a named pipe will be created if target does not exist.
+; raw_target = /dev/stdout
+
+# Raw data format. Can be 'binary' or 'ascii'.
+; data_format = binary
+
+# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
+; bit_format = 16bit
+
+# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
+; ascii_max_range = 1000
+
+# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
+# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
+; bar_delimiter = 59
+; frame_delimiter = 10
+
+# sdl window size and position. -1,-1 is centered.
+; sdl_width = 1000
+; sdl_height = 500
+; sdl_x = -1
+; sdl_y= -1
+; sdl_full_screen = 0
+
+# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none'
+# 'frequency' displays the lower cut off frequency of the bar above.
+# Only supported on ncurses and noncurses output.
+; xaxis = none
+
+# enable synchronized sync. 1 = on, 0 = off
+# removes flickering in alacritty terminal emulator.
+# defaults to off since the behaviour in other terminal emulators is unknown
+; synchronized_sync = 0
+
+# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders
+; vertex_shader = pass_through.vert
+; fragment_shader = bar_spectrum.frag
+
+; for glsl output mode, keep rendering even if no audio
+; continuous_rendering = 0
+
+# disable console blank (screen saver) in tty
+# (Not supported on FreeBSD)
+; disable_blanking = 0
+
+# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off
+; show_idle_bar_heads = 1
+
+# show waveform instead of frequency spectrum, 1 = on, 0 = off
+; waveform = 0
+
+[color]
+
+# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
+# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
+# a terminal that can change color definitions such as Gnome-terminal or rxvt.
+# default is to keep current terminal color
+; background = default
+foreground = magenta
+; foreground = default
+
+# SDL and sdl_glsl only support hex code colors, these are the default:
+; background = '#111111'
+; foreground = '#33ffff'
+
+
+# Gradient mode, only hex defined colors are supported,
+# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
+# You can define as many as 8 different colors. They range from bottom to top of screen
+; gradient = 0
+; gradient_color_1 = '#59cc33'
+; gradient_color_2 = '#80cc33'
+; gradient_color_3 = '#a6cc33'
+; gradient_color_4 = '#cccc33'
+; gradient_color_5 = '#cca633'
+; gradient_color_6 = '#cc8033'
+; gradient_color_7 = '#cc5933'
+; gradient_color_8 = '#cc3333'
+
+
+
+[smoothing]
+
+# Percentage value for integral smoothing. Takes values from 0 - 100.
+# Higher values means smoother, but less precise. 0 to disable.
+# DEPRECATED as of 0.8.0, use noise_reduction instead
+; integral = 77
+
+# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
+; monstercat = 0
+; waves = 0
+
+# Set gravity percentage for "drop off". Higher values means bars will drop faster.
+# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
+# DEPRECATED as of 0.8.0, use noise_reduction instead
+; gravity = 100
+
+
+# In bar height, bars that would have been lower that this will not be drawn.
+# DEPRECATED as of 0.8.0
+; ignore = 0
+
+# Noise reduction, int 0 - 100. default 77
+# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
+# 100 will be very slow and smooth, 0 will be fast but noisy.
+noise_reduction = 20
+
+
+[eq]
+
+# This one is tricky. You can have as much keys as you want.
+# Remember to uncomment more than one key! More keys = more precision.
+# Look at readme.md on github for further explanations and examples.
+; 1 = 1 # bass
+; 2 = 1
+; 3 = 1 # midtone
+; 4 = 1
+; 5 = 1 # treble
diff --git a/env/.config/cava/shaders/bar_spectrum.frag b/env/.config/cava/shaders/bar_spectrum.frag
new file mode 100644
index 0000000..b078913
--- /dev/null
+++ b/env/.config/cava/shaders/bar_spectrum.frag
@@ -0,0 +1,79 @@
+#version 330
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high to low).
+uniform float bars[512];
+
+uniform int bars_count; // number of bars (left + right) (configurable)
+uniform int bar_width; // bar width (configurable), not used here
+uniform int bar_spacing; // space bewteen bars (configurable)
+
+uniform vec3 u_resolution; // window resolution
+
+//colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
+uniform vec3 bg_color; // background color
+uniform vec3 fg_color; // foreground color
+
+uniform int gradient_count;
+uniform vec3 gradient_colors[8]; // gradient colors
+
+vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max)
+{
+ //create color based on fraction of this color and next color
+ float yr = (y - y_min) / (y_max - y_min);
+ return col_1 * (1.0 - yr) + col_2 * yr;
+}
+
+void main()
+{
+ // find which bar to use based on where we are on the x axis
+ float x = u_resolution.x * fragCoord.x;
+ int bar = int(bars_count * fragCoord.x);
+
+ //calculate a bar size
+ float bar_size = u_resolution.x / bars_count;
+
+ //the y coordinate and bar values are the same
+ float y = bars[bar];
+
+ // make sure there is a thin line at bottom
+ if (y * u_resolution.y < 1.0)
+ {
+ y = 1.0 / u_resolution.y;
+ }
+
+ //draw the bar up to current height
+ if (y > fragCoord.y)
+ {
+ //make some space between bars basen on settings
+ if (x > (bar + 1) * (bar_size) - bar_spacing)
+ {
+ fragColor = vec4(bg_color,1.0);
+ }
+ else
+ {
+ if (gradient_count == 0)
+ {
+ fragColor = vec4(fg_color,1.0);
+ }
+ else
+ {
+ //find which color in the configured gradient we are at
+ int color = int((gradient_count - 1) * fragCoord.y);
+
+ //find where on y this and next color is supposed to be
+ float y_min = color / (gradient_count - 1.0);
+ float y_max = (color + 1.0) / (gradient_count - 1.0);
+
+ //make color
+ fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0);
+ }
+ }
+ }
+ else
+ {
+ fragColor = vec4(bg_color,1.0);
+ }
+} \ No newline at end of file
diff --git a/env/.config/cava/shaders/northern_lights.frag b/env/.config/cava/shaders/northern_lights.frag
new file mode 100644
index 0000000..ecd859a
--- /dev/null
+++ b/env/.config/cava/shaders/northern_lights.frag
@@ -0,0 +1,34 @@
+#version 330
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high to low).
+uniform float bars[512];
+
+uniform int bars_count; // number of bars (left + right) (configurable)
+
+uniform vec3 u_resolution; // window resolution, not used here
+
+//colors, configurable in cava config file
+uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here
+uniform vec3 fg_color; // foreground color, not used here
+
+void main()
+{
+ // find which bar to use based on where we are on the x axis
+ int bar = int(bars_count * fragCoord.x);
+
+ float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0;
+ float y = (bars[bar]) * bar_y;
+
+ float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count;
+ float bar_r = 1.0 - abs((bar_x - 0.5)) * 2;
+
+ bar_r = bar_r * bar_r * 2;
+
+ // set color
+ fragColor.r = fg_color.x * y * bar_r;
+ fragColor.g = fg_color.y * y * bar_r;
+ fragColor.b = fg_color.z * y * bar_r;
+}
diff --git a/env/.config/cava/shaders/pass_through.vert b/env/.config/cava/shaders/pass_through.vert
new file mode 100644
index 0000000..a4f20e5
--- /dev/null
+++ b/env/.config/cava/shaders/pass_through.vert
@@ -0,0 +1,14 @@
+#version 330
+
+
+// Input vertex data, different for all executions of this shader.
+layout(location = 0) in vec3 vertexPosition_modelspace;
+
+// Output data ; will be interpolated for each fragment.
+out vec2 fragCoord;
+
+void main()
+{
+ gl_Position = vec4(vertexPosition_modelspace,1);
+ fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0;
+}
diff --git a/env/.config/cava/shaders/spectrogram.frag b/env/.config/cava/shaders/spectrogram.frag
new file mode 100644
index 0000000..ccb79ae
--- /dev/null
+++ b/env/.config/cava/shaders/spectrogram.frag
@@ -0,0 +1,53 @@
+#version 330
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high
+// to low).
+uniform float bars[512];
+
+uniform int bars_count; // number of bars (left + right) (configurable)
+uniform int bar_width; // bar width (configurable), not used here
+uniform int bar_spacing; // space bewteen bars (configurable)
+
+uniform vec3 u_resolution; // window resolution
+
+// colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
+uniform vec3 bg_color; // background color
+uniform vec3 fg_color; // foreground color
+
+uniform int gradient_count;
+uniform vec3 gradient_colors[8]; // gradient colors
+
+uniform sampler2D inputTexture; // Texture from the first render pass
+
+vec3 normalize_C(float y, vec3 col_1, vec3 col_2, float y_min, float y_max) {
+ // create color based on fraction of this color and next color
+ float yr = (y - y_min) / (y_max - y_min);
+ return col_1 * (1.0 - yr) + col_2 * yr;
+}
+
+void main() {
+ // find which bar to use based on where we are on the y axis
+ int bar = int(bars_count * fragCoord.y);
+ float y = bars[bar];
+ float band_size = 1.0 / float(bars_count);
+ float current_band_min = bar * band_size;
+ float current_band_max = (bar + 1) * band_size;
+
+ int hist_length = 512;
+ float win_size = 1.0 / hist_length;
+
+ if (fragCoord.x > 1.0 - win_size) {
+
+ if (fragCoord.y > current_band_min && fragCoord.y < current_band_max) {
+
+ fragColor = vec4(fg_color * y, 1.0);
+ }
+ } else {
+ vec2 offsetCoord = fragCoord;
+ offsetCoord.x += float(win_size);
+ fragColor = texture(inputTexture, offsetCoord);
+ }
+} \ No newline at end of file
diff --git a/env/.config/cava/shaders/winamp_line_style_spectrum.frag b/env/.config/cava/shaders/winamp_line_style_spectrum.frag
new file mode 100644
index 0000000..375ff27
--- /dev/null
+++ b/env/.config/cava/shaders/winamp_line_style_spectrum.frag
@@ -0,0 +1,112 @@
+#version 330
+
+// Emulate the "line style" spectrum analyzer from Winamp 2.
+// Try this config for a demonstration:
+
+/*
+[general]
+bar_width = 2
+bar_spacing = 0
+higher_cutoff_freq = 22000
+
+[output]
+method = sdl_glsl
+channels = mono
+fragment_shader = winamp_line_style_spectrum.frag
+
+[color]
+background = '#000000'
+gradient = 1
+gradient_color_1 = '#319C08'
+gradient_color_2 = '#29CE10'
+gradient_color_3 = '#BDDE29'
+gradient_color_4 = '#DEA518'
+gradient_color_5 = '#D66600'
+gradient_color_6 = '#CE2910'
+
+[smoothing]
+noise_reduction = 10
+*/
+
+in vec2 fragCoord;
+out vec4 fragColor;
+
+// bar values. defaults to left channels first (low to high), then right (high to low).
+uniform float bars[512];
+
+uniform int bars_count; // number of bars (left + right) (configurable)
+uniform int bar_width; // bar width (configurable), not used here
+uniform int bar_spacing; // space bewteen bars (configurable)
+
+uniform vec3 u_resolution; // window resolution
+
+//colors, configurable in cava config file (r,g,b) (0.0 - 1.0)
+uniform vec3 bg_color; // background color
+uniform vec3 fg_color; // foreground color
+
+uniform int gradient_count;
+uniform vec3 gradient_colors[8]; // gradient colors
+
+vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max)
+{
+ //create color based on fraction of this color and next color
+ float yr = (y - y_min) / (y_max - y_min);
+ return col_1 * (1.0 - yr) + col_2 * yr;
+}
+
+void main()
+{
+ // find which bar to use based on where we are on the x axis
+ float x = u_resolution.x * fragCoord.x;
+ int bar = int(bars_count * fragCoord.x);
+
+ //calculate a bar size
+ float bar_size = u_resolution.x / bars_count;
+
+ //the y coordinate is stretched by 4X to resemble Winamp
+ float y = min(bars[bar] * 4.0, 1.0);
+
+ // make sure there is a thin line at bottom
+ if (y * u_resolution.y < 1.0)
+ {
+ y = 1.0 / u_resolution.y;
+ }
+
+ vec4 bar_color;
+
+ if (gradient_count == 0)
+ {
+ bar_color = vec4(fg_color,1.0);
+ }
+ else
+ {
+ //find color in the configured gradient for the top of the bar
+ int color = int((gradient_count - 1) * y);
+
+ //find where on y this and next color is supposed to be
+ float y_min = float(color) / (gradient_count - 1.0);
+ float y_max = float(color + 1) / (gradient_count - 1.0);
+
+ //make a solid color for the entire bar
+ bar_color = vec4(normalize_C(y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0);
+ }
+
+
+ //draw the bar up to current height
+ if (y > fragCoord.y)
+ {
+ //make some space between bars based on settings
+ if (x > (bar + 1) * (bar_size) - bar_spacing)
+ {
+ fragColor = vec4(bg_color,1.0);
+ }
+ else
+ {
+ fragColor = bar_color;
+ }
+ }
+ else
+ {
+ fragColor = vec4(bg_color,1.0);
+ }
+} \ No newline at end of file
diff --git a/env/.config/fastfetch/10.jsonc b/env/.config/fastfetch/10.jsonc
new file mode 100644
index 0000000..5d43fe3
--- /dev/null
+++ b/env/.config/fastfetch/10.jsonc
@@ -0,0 +1,157 @@
+// Load with --load-config examples/2.jsonc
+// Note that you must replace the image path to an existing image to display it.
+
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ }
+ },
+ "display": {
+ "separator": " -> ",
+ "constants": [
+ "──────────────────────────────"
+ ]
+ },
+ "modules": [
+ {
+ "type": "custom",
+ "format": "┌{$1}{$1}┐",
+ "outputColor": "90"
+ },
+ {
+ "type": "title",
+ "keyWidth": 10
+ },
+ {
+ "type": "custom",
+ "format": "└{$1}{$1}┘",
+ "outputColor": "90"
+ },
+ {
+ "type": "custom",
+ "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"
+ },
+ {
+ "type": "custom",
+ "format": "┌{$1}{$1}┐",
+ "outputColor": "90"
+ },
+ {
+ "type": "os",
+ "key": "{icon} OS",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "kernel",
+ "key": "│ ├",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "packages",
+ "key": "│ ├󰏖",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "shell",
+ "key": "│ └",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "wm",
+ "key": " DE/WM",
+ "keyColor": "blue"
+ },
+ {
+ "type": "lm",
+ "key": "│ ├󰧨",
+ "keyColor": "blue"
+ },
+ {
+ "type": "wmtheme",
+ "key": "│ ├󰉼",
+ "keyColor": "blue"
+ },
+ {
+ "type": "icons",
+ "key": "│ ├󰀻",
+ "keyColor": "blue"
+ },
+ {
+ "type": "terminal",
+ "key": "│ ├",
+ "keyColor": "blue"
+ },
+ {
+ "type": "wallpaper",
+ "key": "│ └󰸉",
+ "keyColor": "blue"
+ },
+ {
+ "type": "host",
+ "key": "󰌢 PC",
+ "keyColor": "green"
+ },
+ {
+ "type": "cpu",
+ "key": "│ ├󰻠",
+ "keyColor": "green"
+ },
+ {
+ "type": "gpu",
+ "key": "│ ├󰍛",
+ "keyColor": "green"
+ },
+ {
+ "type": "disk",
+ "key": "│ ├",
+ "keyColor": "green"
+ },
+ {
+ "type": "memory",
+ "key": "│ ├󰑭",
+ "keyColor": "green"
+ },
+ {
+ "type": "swap",
+ "key": "│ ├󰓡",
+ "keyColor": "green"
+ },
+ {
+ "type": "uptime",
+ "key": "│ ├󰅐",
+ "keyColor": "green"
+ },
+ {
+ "type": "display",
+ "key": "│ └󰍹",
+ "keyColor": "green"
+ },
+ {
+ "type": "sound",
+ "key": " SND",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "player",
+ "key": "│ ├󰥠",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "media",
+ "key": "│ └󰝚",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "custom",
+ "format": "└{$1}{$1}┘",
+ "outputColor": "90"
+ },
+ "break",
+ {
+ "type": "custom",
+ "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"
+ }
+ ]
+}
diff --git a/env/.config/fastfetch/ascii-char.jsonc b/env/.config/fastfetch/ascii-char.jsonc
new file mode 100644
index 0000000..938b21f
--- /dev/null
+++ b/env/.config/fastfetch/ascii-char.jsonc
@@ -0,0 +1,164 @@
+// Load with --load-config examples/2.jsonc
+// Note that you must replace the image path to an existing image to display it.
+
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ },
+ "source": "/home/iceyrazor/stuff/media/ICE/ascii-char.txt",
+ "color": {
+ "1": "reset_black",
+ "2": "light_black",
+ "3": "light_blue",
+ "5": "light_magenta"
+ }
+ },
+ "display": {
+ "separator": " -> ",
+ "constants": [
+ "──────────────────────────────"
+ ]
+ },
+ "modules": [
+ {
+ "type": "custom",
+ "format": "┌{$1}{$1}┐",
+ "outputColor": "90"
+ },
+ {
+ "type": "title",
+ "keyWidth": 10
+ },
+ {
+ "type": "custom",
+ "format": "└{$1}{$1}┘",
+ "outputColor": "90"
+ },
+ {
+ "type": "custom",
+ "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"
+ },
+ {
+ "type": "custom",
+ "format": "┌{$1}{$1}┐",
+ "outputColor": "90"
+ },
+ {
+ "type": "os",
+ "key": "{icon} OS",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "kernel",
+ "key": "│ ├",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "packages",
+ "key": "│ ├󰏖",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "shell",
+ "key": "│ └",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "wm",
+ "key": " DE/WM",
+ "keyColor": "blue"
+ },
+ {
+ "type": "lm",
+ "key": "│ ├󰧨",
+ "keyColor": "blue"
+ },
+ {
+ "type": "wmtheme",
+ "key": "│ ├󰉼",
+ "keyColor": "blue"
+ },
+ {
+ "type": "icons",
+ "key": "│ ├󰀻",
+ "keyColor": "blue"
+ },
+ {
+ "type": "terminal",
+ "key": "│ ├",
+ "keyColor": "blue"
+ },
+ {
+ "type": "wallpaper",
+ "key": "│ └󰸉",
+ "keyColor": "blue"
+ },
+ {
+ "type": "host",
+ "key": "󰌢 PC",
+ "keyColor": "green"
+ },
+ {
+ "type": "cpu",
+ "key": "│ ├󰻠",
+ "keyColor": "green"
+ },
+ {
+ "type": "gpu",
+ "key": "│ ├󰍛",
+ "keyColor": "green"
+ },
+ {
+ "type": "disk",
+ "key": "│ ├",
+ "keyColor": "green"
+ },
+ {
+ "type": "memory",
+ "key": "│ ├󰑭",
+ "keyColor": "green"
+ },
+ {
+ "type": "swap",
+ "key": "│ ├󰓡",
+ "keyColor": "green"
+ },
+ {
+ "type": "uptime",
+ "key": "│ ├󰅐",
+ "keyColor": "green"
+ },
+ {
+ "type": "display",
+ "key": "│ └󰍹",
+ "keyColor": "green"
+ },
+ {
+ "type": "sound",
+ "key": " SND",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "player",
+ "key": "│ ├󰥠",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "media",
+ "key": "│ └󰝚",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "custom",
+ "format": "└{$1}{$1}┘",
+ "outputColor": "90"
+ },
+ "break",
+ {
+ "type": "custom",
+ "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"
+ }
+ ]
+}
diff --git a/env/.config/fastfetch/compact.jsonc b/env/.config/fastfetch/compact.jsonc
new file mode 100644
index 0000000..5bc5db2
--- /dev/null
+++ b/env/.config/fastfetch/compact.jsonc
@@ -0,0 +1,103 @@
+// Load with --load-config examples/2.jsonc
+// Note that you must replace the image path to an existing image to display it.
+
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "padding": {
+ "top": 2
+ },
+ "type": "small",
+ "type": "kitty-direct",
+ // "source": "/home/iceyrazor/stuff/media/ICE/Sprite-0009.png",
+ "source": "/home/iceyrazor/stuff/media/ICE/the_best_it_is_going_to_be.png",
+ "width": 30,
+ "height": 19
+ },
+ "display": {
+ "separator": " -> ",
+ "constants": [
+ "──────────────────────────────"
+ ]
+ },
+ "modules": [
+ {
+ "type": "title",
+ "format": " {user-name-colored}{at-symbol-colored}{host-name-colored}"
+ },
+ {
+ "type": "custom",
+ "format": "{$1}{$1}",
+ "outputColor": "90"
+ },
+ {
+ "type": "kernel",
+ "key": "",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "packages",
+ "key": "󰏖",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "shell",
+ "key": "",
+ "keyColor": "yellow"
+ },
+ {
+ "type": "wm",
+ "key": " DE/WM",
+ "keyColor": "blue"
+ },
+ {
+ "type": "terminal",
+ "key": "",
+ "keyColor": "blue"
+ },
+ {
+ "type": "disk",
+ "key": "",
+ "keyColor": "green"
+ },
+ {
+ "type": "memory",
+ "key": "󰑭",
+ "keyColor": "green"
+ },
+ {
+ "type": "swap",
+ "key": "󰓡",
+ "keyColor": "green"
+ },
+ {
+ "type": "uptime",
+ "key": "󰅐",
+ "keyColor": "green"
+ },
+ {
+ "type": "sound",
+ "key": " SND",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "player",
+ "key": "󰥠",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "media",
+ "key": "󰝚",
+ "keyColor": "cyan"
+ },
+ {
+ "type": "custom",
+ "format": "{$1}{$1}",
+ "outputColor": "90"
+ },
+ {
+ "type": "custom",
+ "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}"
+ }
+ ]
+}
diff --git a/env/.config/hypr/cycle-layout.sh b/env/.config/hypr/cycle-layout.sh
new file mode 100755
index 0000000..8b7314f
--- /dev/null
+++ b/env/.config/hypr/cycle-layout.sh
@@ -0,0 +1,5 @@
+if [ -z $(hyprctl getoption general:layout | grep master ) ]; then
+ hyprctl keyword general:layout master
+else
+ hyprctl keyword general:layout dwindle
+fi
diff --git a/env/.config/hypr/hyprland.conf b/env/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..55ce213
--- /dev/null
+++ b/env/.config/hypr/hyprland.conf
@@ -0,0 +1,440 @@
+
+# #######################################################################################
+# AUTOGENERATED HYPRLAND CONFIG.
+# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT,
+# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
+# #######################################################################################
+
+# autogenerated = 1 # remove this line to remove the warning
+
+env = QT_QPA_PLATFORM,wayland
+env = LIBVA_DRIVER_NAME,nvidia
+env = GBM_BACKEND,nvidia-drm
+# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+env = GDK_BACKEND,wayland,x11,*
+env = HYPRLAND_PER_MONITOR_WORKSPACES,1
+
+
+windowrule = float,title:^(flameshot)
+windowrule = move 0 0,title:^(flameshot)
+windowrule = suppressevent fullscreen,title:^(flameshot)
+
+exec-once = $HOME/.config/dwm/autostart.sh
+exec-once = waybar
+exec-once = /usr/lib/xdg-desktop-portal &
+exec-once = dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+# exec-once = ibus-daemon -rxRd
+exec-once = /usr/lib/ibus/ibus-wayland
+exec-once = hyprpaper
+exec-once = /usr/bin/dunst $HOME/.config/dunst/dunstrc
+
+# This is an example Hyprland config file.
+# Refer to the wiki for more information.
+# https://wiki.hyprland.org/Configuring/
+
+# Please note not all available settings / options are set here.
+# For a full list, see the wiki
+
+# You can split this configuration into multiple files
+# Create your files separately and then link them to this file like this:
+# source = ~/.config/hypr/myColors.conf
+
+
+################
+### MONITORS ###
+################
+
+# See https://wiki.hyprland.org/Configuring/Monitors/
+monitor=HDMI-A-1,prefered,0x0,0.8
+monitor=DP-1,1280x720,auto,0.625
+
+
+workspace=HDMI-A-1,1
+workspace=DP-1,1
+
+workspace = 1,monitor:HDMI-A-1,default:true
+workspace = 2,monitor:HDMI-A-1
+workspace = 3,monitor:HDMI-A-1
+workspace = 4,monitor:HDMI-A-1
+workspace = 5,monitor:HDMI-A-1
+workspace = 6,monitor:HDMI-A-1
+workspace = 7,monitor:HDMI-A-1
+workspace = 8,monitor:HDMI-A-1
+workspace = 9,monitor:HDMI-A-1
+workspace = 10,monitor:HDMI-A-1
+
+workspace = 11,monitor:DP-1,default:true
+workspace = 12,monitor:DP-1
+workspace = 13,monitor:DP-1
+workspace = 14,monitor:DP-1
+workspace = 15,monitor:DP-1
+workspace = 16,monitor:DP-1
+workspace = 17,monitor:DP-1
+workspace = 18,monitor:DP-1
+workspace = 19,monitor:DP-1
+workspace = 20,monitor:DP-1
+
+
+###################
+### MY PROGRAMS ###
+###################
+
+# See https://wiki.hyprland.org/Configuring/Keywords/
+
+# Set programs that you use
+$terminal = wezterm
+$terminal2 = urxvt
+$fileManager = pcmanfm
+$menu = rofi -show drun
+
+
+#################
+### AUTOSTART ###
+#################
+
+# Autostart necessary processes (like notifications daemons, status bars, etc.)
+# Or execute your favorite apps at launch like this:
+
+# exec-once = $terminal
+# exec-once = nm-applet &
+# exec-once = waybar & hyprpaper & firefox
+
+
+#############################
+### ENVIRONMENT VARIABLES ###
+#############################
+
+# See https://wiki.hyprland.org/Configuring/Environment-variables/
+
+env = XCURSOR_SIZE,24
+env = HYPRCURSOR_SIZE,24
+
+
+###################
+### PERMISSIONS ###
+###################
+
+# See https://wiki.hyprland.org/Configuring/Permissions/
+# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
+# for security reasons
+
+# ecosystem {
+# enforce_permissions = 1
+# }
+
+# permission = /usr/(bin|local/bin)/grim, screencopy, allow
+# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
+# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
+
+
+#####################
+### LOOK AND FEEL ###
+#####################
+
+# Refer to https://wiki.hyprland.org/Configuring/Variables/
+
+# https://wiki.hyprland.org/Configuring/Variables/#general
+general {
+ gaps_in = 5
+ gaps_out = 5
+
+ border_size = 1
+
+ # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
+ # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
+ col.active_border = rgba(8568e6ee) rgba(cf68e6ee) 45deg
+ col.active_border = rgba(cf68e6ee) rgba(8568e6ee) 45deg
+ #33ccff
+ #00ff99
+ #8568e6
+ col.inactive_border = rgba(595959aa)
+
+ # Set to true enable resizing windows by clicking and dragging on borders and gaps
+ resize_on_border = false
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false
+
+ layout = dwindle
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#decoration
+decoration {
+ rounding = 0
+ rounding_power = 2
+
+ # Change transparency of focused and unfocused windows
+ active_opacity = 1.0
+ inactive_opacity = 1.0
+
+ shadow {
+ enabled = true
+ range = 4
+ render_power = 3
+ color = rgba(1a1a1aee)
+ }
+
+ # https://wiki.hyprland.org/Configuring/Variables/#blur
+ blur {
+ enabled = true
+ size = 3
+ passes = 1
+
+ vibrancy = 0.1696
+ }
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#animations
+animations {
+ enabled = yes, please :)
+
+ # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+ bezier = easeOutQuint,0.23,1,0.32,1
+ bezier = easeInOutCubic,0.65,0.05,0.36,1
+ bezier = linear,0,0,1,1
+ bezier = almostLinear,0.5,0.5,0.75,1.0
+ bezier = quick,0.15,0,0.1,1
+
+ animation = global, 1, 10, default
+ animation = border, 1, 5.39, easeOutQuint
+ animation = windows, 1, 1.79, easeOutQuint
+ animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
+ animation = windowsOut, 1, 1.49, linear, popin 87%
+ animation = fadeIn, 1, 1.73, almostLinear
+ animation = fadeOut, 1, 1.46, almostLinear
+ animation = fade, 1, 3.03, quick
+ animation = layers, 1, 3.81, easeOutQuint
+ animation = layersIn, 1, 4, easeOutQuint, fade
+ animation = layersOut, 1, 1.5, linear, fade
+ animation = fadeLayersIn, 1, 1.79, almostLinear
+ animation = fadeLayersOut, 1, 1.39, almostLinear
+ animation = workspaces, 1, 1.94, almostLinear, fade
+ animation = workspacesIn, 1, 1.21, almostLinear, fade
+ animation = workspacesOut, 1, 1.94, almostLinear, fade
+}
+
+# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
+# "Smart gaps" / "No gaps when only"
+# uncomment all if you wish to use that.
+# workspace = w[tv1], gapsout:0, gapsin:0
+# workspace = f[1], gapsout:0, gapsin:0
+# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
+# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
+# windowrule = bordersize 0, floating:0, onworkspace:f[1]
+# windowrule = rounding 0, floating:0, onworkspace:f[1]
+
+# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+dwindle {
+ pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = true # You probably want this
+}
+
+# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+master {
+ new_status = master
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#misc
+misc {
+ force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
+ disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
+ focus_on_activate = true
+}
+
+
+#############
+### INPUT ###
+#############
+
+# https://wiki.hyprland.org/Configuring/Variables/#input
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ kb_rules =
+
+ follow_mouse = 1
+
+ sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+
+ special_fallthrough = true
+
+ touchpad {
+ natural_scroll = false
+ }
+}
+
+# https://wiki.hyprland.org/Configuring/Variables/#gestures
+gestures {
+ workspace_swipe = false
+}
+
+# Example per-device config
+# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
+device {
+ name = epic-mouse-v1
+ sensitivity = -0.5
+}
+
+
+###################
+### KEYBINDINGS ###
+###################
+
+# See https://wiki.hyprland.org/Configuring/Keywords/
+$mainMod = SUPER # Sets "Windows" key as main modifier
+
+
+# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
+bind = $mainMod, return, exec, $terminal
+bind = $mainMod SHIFT, return, exec, $terminal2
+bind = $mainMod, Q, killactive,
+bind = $mainMod SHIFT, Q, exit,
+bind = $mainMod, E, exec, $fileManager
+bind = $mainMod, space, togglefloating,
+bind = $mainMod, D, exec, $menu
+bind = $mainMod SHIFT, D, exec, $HOME/stuff/scripts/system/rofi-search-web.sh
+bind = $mainMod, P, pseudo, # dwindle
+bind = $mainMod, i, togglesplit, # dwindle
+bind = $mainMod, f, fullscreen, 0
+bind = $mainMod SHIFT, m, fullscreen, 1
+
+# layout stuffs
+bind = $mainMod SHIFT, space, exec, $HOME/.config/hypr/cycle-layout.sh
+bind = $mainMod SHIFT, i, layoutmsg, cyclenext
+bind = $mainMod, z, layoutmsg, swapwithmaster master
+# behaves like xmonads promote feature (https://hackage.haskell.org/package/xmonad-contrib-0.17.1/docs/XMonad-Actions-Promote.html)
+
+# Move focus with mainMod + arrow keys
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+bind = $mainMod, h, alterzorder, top
+bind = $mainMod, l, alterzorder, top
+bind = $mainMod, k, alterzorder, top
+bind = $mainMod, j, alterzorder, top
+
+bind = $mainMod SHIFT, h, movewindow, l
+bind = $mainMod SHIFT, l, movewindow, r
+bind = $mainMod SHIFT, k, movewindow, u
+bind = $mainMod SHIFT, j, movewindow, d
+bind = $mainMod, t, pin
+
+bind = $mainMod CTRL, h, resizeactive, -50 0
+bind = $mainMod CTRL, l, resizeactive, 50 0
+bind = $mainMod CTRL, k, resizeactive, 0 -50
+bind = $mainMod CTRL, j, resizeactive, 0 50
+
+bind = $mainMod, o, focusmonitor, +1
+bind = $mainMod SHIFT, o, movewindow, mon:+1
+# Switch workspaces with mainMod + [0-9]
+bind = $mainMod, 1, workspace, r~1
+bind = $mainMod, 2, workspace, r~2
+bind = $mainMod, 3, workspace, r~3
+bind = $mainMod, 4, workspace, r~4
+bind = $mainMod, 5, workspace, r~5
+bind = $mainMod, 6, workspace, r~6
+bind = $mainMod, 7, workspace, r~7
+bind = $mainMod, 8, workspace, r~8
+bind = $mainMod, 9, workspace, r~9
+bind = $mainMod, 0, workspace, r~10
+
+# Move active window to a workspace with mainMod + SHIFT + [0-9]
+bind = $mainMod SHIFT, 1, movetoworkspace, r~1
+bind = $mainMod SHIFT, 2, movetoworkspace, r~2
+bind = $mainMod SHIFT, 3, movetoworkspace, r~3
+bind = $mainMod SHIFT, 4, movetoworkspace, r~4
+bind = $mainMod SHIFT, 5, movetoworkspace, r~5
+bind = $mainMod SHIFT, 6, movetoworkspace, r~6
+bind = $mainMod SHIFT, 7, movetoworkspace, r~7
+bind = $mainMod SHIFT, 8, movetoworkspace, r~8
+bind = $mainMod SHIFT, 9, movetoworkspace, r~9
+bind = $mainMod SHIFT, 0, movetoworkspace, r~10
+
+# Example special workspace (scratchpad)
+bind = $mainMod, S, togglespecialworkspace, magic
+bind = $mainMod SHIFT, S, movetoworkspace, special:magic
+
+# Scroll through existing workspaces with mainMod + scroll
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# Move/resize windows with mainMod + LMB/RMB and dragging
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+# Laptop multimedia keys for volume and LCD brightness
+bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
+bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle
+# pactl set-source-mute @DEFAULT_SOURCE@ toggle
+bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
+bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
+bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
+
+# Requires playerctl
+bindl = , XF86AudioNext, exec, playerctl next
+bindl = , XF86AudioPause, exec, playerctl play-pause
+bindl = , XF86AudioPlay, exec, playerctl play-pause
+bindl = , XF86AudioPrev, exec, playerctl previous
+
+##############################
+### WINDOWS AND WORKSPACES ###
+##############################
+
+xwayland {
+ force_zero_scaling = true
+}
+
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
+
+# Example windowrule
+# windowrule = float,class:^(kitty)$,title:^(kitty)$
+
+# Ignore maximize requests from apps. You'll probably like this.
+windowrule = suppressevent maximize, class:.*
+
+# Fix some dragging issues with XWayland
+windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
+
+# Gajim
+windowrule = float, title:Gajim
+windowrule = monitor DP-1, title:Gajim
+windowrule = move 100%-w-5 100%-w-40, title:Gajim
+windowrule = size 60% 60%, title:Gajim
+windowrule = workspace 11, title:Gajim
+
+# Vesktop
+windowrule = float, class:vesktop
+windowrule = monitor DP-1, class:vesktop
+windowrule = move 0% 0%, class:vesktop
+windowrule = size 70% 70%, class:vesktop
+windowrule = workspace 11, class:vesktop
+windowrule = bordercolor rgba(00000000), class:vesktop
+windowrule = noborder, class:vesktop
+windowrule = noshadow, class:vesktop
+windowrule = noblur, class:vesktop
+
+# Mumble
+windowrule = float, title:Mumble
+windowrule = monitor DP-1, title:Mumble
+windowrule = move 100%-w-5 0%, title:Mumble
+windowrule = size 40% 50%, title:Mumble
+windowrule = workspace 11, title:Mumble
+
+# Steam Friends List
+windowrule = float, title:Friends List, class: steam
+windowrule = move 100%-w-5 100%-w-40, title:Friends List, class: steam
+windowrule = size 20% 70%, title:Friends List, class: steam
+
+# Extra
+windowrule = workspace 9, title: Envision
+
+windowrule = workspace 8, title: VRChat
diff --git a/env/.config/hypr/hyprpaper.conf b/env/.config/hypr/hyprpaper.conf
new file mode 100644
index 0000000..6b4c1db
--- /dev/null
+++ b/env/.config/hypr/hyprpaper.conf
@@ -0,0 +1,14 @@
+preload = /home/iceyrazor/stuff/media/wallpapers/4500025-retrowave-vaporwave-car-typography-purple-blue-chromatic-aberration-initial-d-hachi-roku.jpg
+preload = /home/iceyrazor/stuff/media/wallpapers/tumblr_06bbd355f3e355049446dac24f6e7c44_2c486f77_1280 ninesols.jpg
+preload = /home/iceyrazor/stuff/media/wallpapers/dark_leaves.png
+preload = /home/iceyrazor/stuff/media/wallpapers/6b06108fa3bc46f5.jpg
+
+#set the default wallpaper(s) seen on initial workspace(s) --depending on the number of monitors used
+wallpaper = HDMI-A-1,/home/iceyrazor/stuff/media/wallpapers/6b06108fa3bc46f5.jpg
+wallpaper = DP-1,/home/iceyrazor/stuff/media/wallpapers/tumblr_06bbd355f3e355049446dac24f6e7c44_2c486f77_1280 ninesols.jpg
+
+#enable splash text rendering over the wallpaper
+splash = true
+
+#fully disable ipc
+# ipc = off
diff --git a/env/.config/lf/icons b/env/.config/lf/icons
new file mode 100644
index 0000000..4022691
--- /dev/null
+++ b/env/.config/lf/icons
@@ -0,0 +1,377 @@
+# vim:ft=conf
+
+# These examples require Nerd Fonts or a compatible font to be used.
+# See https://www.nerdfonts.com for more information.
+
+# default values from lf (with matching order)
+# ln l # LINK
+# or l # ORPHAN
+# tw t # STICKY_OTHER_WRITABLE
+# ow d # OTHER_WRITABLE
+# st t # STICKY
+# di d # DIR
+# pi p # FIFO
+# so s # SOCK
+# bd b # BLK
+# cd c # CHR
+# su u # SETUID
+# sg g # SETGID
+# ex x # EXEC
+# fi - # FILE
+
+# file types (with matching order)
+ln  # LINK
+or  # ORPHAN
+tw t # STICKY_OTHER_WRITABLE
+ow  # OTHER_WRITABLE
+st t # STICKY
+di  # DIR
+pi p # FIFO
+so s # SOCK
+bd b # BLK
+cd c # CHR
+su u # SETUID
+sg g # SETGID
+ex  # EXEC
+fi  # FILE
+
+# disable some default filetype icons, let them choose icon by filename
+# ln  # LINK
+# or  # ORPHAN
+# tw # STICKY_OTHER_WRITABLE
+# ow # OTHER_WRITABLE
+# st # STICKY
+# di  # DIR
+# pi # FIFO
+# so # SOCK
+# bd # BLK
+# cd # CHR
+# su # SETUID
+# sg # SETGID
+# ex # EXEC
+# fi  # FILE
+
+# file extensions (vim-devicons)
+*.styl 
+*.sass 
+*.scss 
+*.htm 
+*.html 
+*.slim 
+*.haml 
+*.ejs 
+*.css 
+*.less 
+*.md 
+*.mdx 
+*.markdown 
+*.rmd 
+*.json 
+*.webmanifest 
+*.js 
+*.mjs 
+*.jsx 
+*.rb 
+*.gemspec 
+*.rake 
+*.php 
+*.py 
+*.pyc 
+*.pyo 
+*.pyd 
+*.coffee 
+*.mustache 
+*.hbs 
+*.conf 
+*.ini 
+*.yml 
+*.yaml 
+*.toml 
+*.bat 
+*.mk 
+*.jpg 
+*.jpeg 
+*.bmp 
+*.png 
+*.webp 
+*.gif 
+*.ico 
+*.twig 
+*.cpp 
+*.c++ 
+*.cxx 
+*.cc 
+*.cp 
+*.c 
+*.cs 󰌛
+*.h 
+*.hh 
+*.hpp 
+*.hxx 
+*.hs 
+*.lhs 
+*.nix 
+*.lua 
+*.java 
+*.sh 
+*.fish 
+*.bash 
+*.zsh 
+*.ksh 
+*.csh 
+*.awk 
+*.ps1 
+*.ml λ
+*.mli λ
+*.diff 
+*.db 
+*.sql 
+*.dump 
+*.clj 
+*.cljc 
+*.cljs 
+*.edn 
+*.scala 
+*.go 
+*.dart 
+*.xul 
+*.sln 
+*.suo 
+*.pl 
+*.pm 
+*.t 
+*.rss 
+'*.f#' 
+*.fsscript 
+*.fsx 
+*.fs 
+*.fsi 
+*.rs 
+*.rlib 
+*.d 
+*.erl 
+*.hrl 
+*.ex 
+*.exs 
+*.eex 
+*.leex 
+*.heex 
+*.vim 
+*.ai 
+*.psd 
+*.psb 
+*.ts 
+*.tsx 
+*.jl 
+*.pp 
+*.vue 
+*.elm 
+*.swift 
+*.xcplayground 
+*.tex 󰙩
+*.r 󰟔
+*.rproj 󰗆
+*.sol 󰡪
+*.pem 
+
+# file names (vim-devicons) (case-insensitive not supported in lf)
+*gruntfile.coffee 
+*gruntfile.js 
+*gruntfile.ls 
+*gulpfile.coffee 
+*gulpfile.js 
+*gulpfile.ls 
+*mix.lock 
+*dropbox 
+*.ds_store 
+*.gitconfig 
+*.gitignore 
+*.gitattributes 
+*.gitlab-ci.yml 
+*.bashrc 
+*.zshrc 
+*.zshenv 
+*.zprofile 
+*.vimrc 
+*.gvimrc 
+*_vimrc 
+*_gvimrc 
+*.bashprofile 
+*favicon.ico 
+*license 
+*node_modules 
+*react.jsx 
+*procfile 
+*dockerfile 
+*docker-compose.yml 
+*docker-compose.yaml 
+*compose.yml 
+*compose.yaml 
+*rakefile 
+*config.ru 
+*gemfile 
+*makefile 
+*cmakelists.txt 
+*robots.txt 󰚩
+
+# file names (case-sensitive adaptations)
+*Gruntfile.coffee 
+*Gruntfile.js 
+*Gruntfile.ls 
+*Gulpfile.coffee 
+*Gulpfile.js 
+*Gulpfile.ls 
+*Dropbox 
+*.DS_Store 
+*LICENSE 
+*React.jsx 
+*Procfile 
+*Dockerfile 
+*Docker-compose.yml 
+*Docker-compose.yaml 
+*Rakefile 
+*Gemfile 
+*Makefile 
+*CMakeLists.txt 
+
+# file patterns (vim-devicons) (patterns not supported in lf)
+# .*jquery.*\.js$ 
+# .*angular.*\.js$ 
+# .*backbone.*\.js$ 
+# .*require.*\.js$ 
+# .*materialize.*\.js$ 
+# .*materialize.*\.css$ 
+# .*mootools.*\.js$ 
+# .*vimrc.* 
+# Vagrantfile$ 
+
+# file patterns (file name adaptations)
+*jquery.min.js 
+*angular.min.js 
+*backbone.min.js 
+*require.min.js 
+*materialize.min.js 
+*materialize.min.css 
+*mootools.min.js 
+*vimrc 
+Vagrantfile 
+
+# archives or compressed (extensions from dircolors defaults)
+*.tar 
+*.tgz 
+*.arc 
+*.arj 
+*.taz 
+*.lha 
+*.lz4 
+*.lzh 
+*.lzma 
+*.tlz 
+*.txz 
+*.tzo 
+*.t7z 
+*.zip 
+*.z 
+*.dz 
+*.gz 
+*.lrz 
+*.lz 
+*.lzo 
+*.xz 
+*.zst 
+*.tzst 
+*.bz2 
+*.bz 
+*.tbz 
+*.tbz2 
+*.tz 
+*.deb 
+*.rpm 
+*.jar 
+*.war 
+*.ear 
+*.sar 
+*.rar 
+*.alz 
+*.ace 
+*.zoo 
+*.cpio 
+*.7z 
+*.rz 
+*.cab 
+*.wim 
+*.swm 
+*.dwm 
+*.esd 
+
+# image formats (extensions from dircolors defaults)
+*.jpg 
+*.jpeg 
+*.mjpg 
+*.mjpeg 
+*.gif 
+*.bmp 
+*.pbm 
+*.pgm 
+*.ppm 
+*.tga 
+*.xbm 
+*.xpm 
+*.tif 
+*.tiff 
+*.png 
+*.svg 
+*.svgz 
+*.mng 
+*.pcx 
+*.mov 
+*.mpg 
+*.mpeg 
+*.m2v 
+*.mkv 
+*.webm 
+*.ogm 
+*.mp4 
+*.m4v 
+*.mp4v 
+*.vob 
+*.qt 
+*.nuv 
+*.wmv 
+*.asf 
+*.rm 
+*.rmvb 
+*.flc 
+*.avi 
+*.fli 
+*.flv 
+*.gl 
+*.dl 
+*.xcf 
+*.xwd 
+*.yuv 
+*.cgm 
+*.emf 
+*.ogv 
+*.ogx 
+
+# audio formats (extensions from dircolors defaults)
+*.aac 
+*.au 
+*.flac 
+*.m4a 
+*.mid 
+*.midi 
+*.mka 
+*.mp3 
+*.mpc 
+*.ogg 
+*.ra 
+*.wav 
+*.oga 
+*.opus 
+*.spx 
+*.xspf 
+
+# other formats
+*.pdf 
diff --git a/env/.config/lf/lfrc b/env/.config/lf/lfrc
new file mode 100755
index 0000000..dcced87
--- /dev/null
+++ b/env/.config/lf/lfrc
@@ -0,0 +1,172 @@
+# interpreter for shell commands
+set shell sh
+
+# set '-eu' options for shell commands
+# These options are used to have safer shell commands. Option '-e' is used to
+# exit on error and option '-u' is used to give error for unset variables.
+# Option '-f' disables pathname expansion which can be useful when $f, $fs, and
+# $fx variables contain names with '*' or '?' characters. However, this option
+# is used selectively within individual commands as it can be limiting at
+# times.
+set shellopts '-eu'
+
+# set internal field separator (IFS) to "\n" for shell commands
+# This is useful to automatically split file names in $fs and $fx properly
+# since default file separator used in these variables (i.e. 'filesep' option)
+# is newline. You need to consider the values of these options and create your
+# commands accordingly.
+set ifs "\n"
+
+# leave some space at the top and the bottom of the screen
+set scrolloff 10
+
+# Use the `dim` attribute instead of underline for the cursor in the preview pane
+set cursorpreviewfmt "\033[7;2m"
+
+# use enter for shell commands
+map <enter> shell
+
+# show the result of execution of previous commands
+map ` !true
+
+# execute current file (must be executable)
+map x $$f
+map X !$f
+
+# dedicated keys for file opener actions
+map o &mimeopen $f
+map O $mimeopen --ask $f
+
+# define a custom 'open' command
+# This command is called when current file is not a directory. You may want to
+# use either file extensions and/or mime types here. Below uses an editor for
+# text files and a file opener for the rest.
+cmd open &{{
+ case $(file --mime-type -Lb $f) in
+ text/*) lf -remote "send $id \$$EDITOR \$fx";;
+ *) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;;
+ esac
+}}
+
+# mkdir command. See wiki if you want it to select created dir
+map a :push %mkdir<space>
+
+# define a custom 'rename' command without prompt for overwrite
+# cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
+# map r push :rename<space>
+
+# make sure trash folder exists
+# %mkdir -p ~/.trash
+
+# move current file or selected files to trash folder
+# (also see 'man mv' for backup/overwrite options)
+cmd trash %set -f; mv $fx ~/.trash
+
+# define a custom 'delete' command
+# cmd delete ${{
+# set -f
+# printf "$fx\n"
+# printf "delete?[y/n]"
+# read ans
+# [ "$ans" = "y" ] && rm -rf $fx
+# }}
+
+# use '<delete>' key for either 'trash' or 'delete' command
+# map <delete> trash
+# map <delete> delete
+
+# extract the current file with the right command
+# (xkcd link: https://xkcd.com/1168/)
+cmd extract ${{
+ set -f
+ case $f in
+ *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
+ *.tar.gz|*.tgz) tar xzvf $f;;
+ *.tar.xz|*.txz) tar xJvf $f;;
+ *.zip) unzip $f;;
+ *.rar) unrar x $f;;
+ *.7z) 7z x $f;;
+ esac
+}}
+
+# compress current file or selected files with tar and gunzip
+cmd tar ${{
+ set -f
+ mkdir $1
+ cp -r $fx $1
+ tar czf $1.tar.gz $1
+ rm -rf $1
+}}
+
+# compress current file or selected files with zip
+cmd zip ${{
+ set -f
+ mkdir $1
+ cp -r $fx $1
+ zip -r $1.zip $1
+ rm -rf $1
+}}
+
+cmd trash ${{
+ files=$(printf "$fx" | tr '\n' ';')
+ while [ "$files" ]; do
+ file=${files%%;*}
+
+ mv "$(basename "$file")" ~/.trash
+ if [ "$files" = "$file" ]; then
+ files=''
+ else
+ files="${files#*;}"
+ fi
+ done
+}}
+
+cmd vim ${{
+ nvim $f
+}}
+
+cmd Sxiv ${{
+ nohup sxiv $f > /dev/null 2> /dev/null < /dev/null & disown
+}}
+
+cmd clipf ${{
+ # printf "$f" | xclip -selection clipboard
+ # xclip -selection clipboard -t "$(file -b --mime-type $f)" -i $f
+ # echo -n '$f' | xclip -sel clip -t text/uri-list -i
+case "$(file -b --mime-type $f)" in
+image/png|image/jpeg|image/gif)
+ xclip -selection clipboard -t image/png -i $f
+ ;;
+video/mp4)
+ # !! doesnt work. no clue how todo uri-list. ICCCM section 2.6.2 is confusing
+ # echo -n '$f' | xclip -selection clipboard -t x-special/gnome-copied-files -i
+ xclip -selection clipboard -t text/uri-list -i $f
+ ;;
+*)
+ xclip -selection clipboard -t "$(file -b --mime-type $f)" -i $f
+ ;;
+esac
+}}
+
+cmd clip-path ${{
+ if [ -z $WAYLAND_DISPLAY ]; then
+ printf "$f" | xclip -selection clipboard
+ else
+ printf "$f" | wl-copy
+ fi
+}}
+
+cmd filebrowser ${{
+ nohup pcmanfm $f > /dev/null 2> /dev/null < /dev/null & disown
+}}
+
+map DD trash
+map DP delete
+map V vim
+map S Sxiv
+map C clipf
+map <c-c> clip-path
+map P filebrowser
+
+
+set icons true
diff --git a/env/.config/nvim/.luarc.json b/env/.config/nvim/.luarc.json
new file mode 100755
index 0000000..05deadc
--- /dev/null
+++ b/env/.config/nvim/.luarc.json
@@ -0,0 +1,14 @@
+{
+ "runtime.version": "LuaJIT",
+ "runtime.path": [
+ "lua/?.lua",
+ "lua/?/init.lua"
+ ],
+ "diagnostics.globals": ["vim",
+ "endclose_tag_on_exit"],
+ "workspace.checkThirdParty": false,
+ "workspace.library": [
+ "$VIMRUNTIME",
+ "./lua"
+ ]
+}
diff --git a/env/.config/nvim/after/plugin/3rd.lua b/env/.config/nvim/after/plugin/3rd.lua
new file mode 100644
index 0000000..c5c0f66
--- /dev/null
+++ b/env/.config/nvim/after/plugin/3rd.lua
@@ -0,0 +1,41 @@
+require("image").setup({
+ backend = "kitty",
+ processor = "magick_cli", -- or "magick_rock"
+ integrations = {
+ markdown = {
+ enabled = true,
+ clear_in_insert_mode = false,
+ download_remote_images = false,
+ only_render_image_at_cursor = true,
+ only_render_image_at_cursor_mode = "popup",
+ floating_windows = false, -- if true, images will be rendered in floating markdown windows
+ filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
+ },
+ neorg = {
+ enabled = true,
+ filetypes = { "norg" },
+ },
+ typst = {
+ enabled = true,
+ filetypes = { "typst" },
+ },
+ html = {
+ enabled = false,
+ },
+ css = {
+ enabled = false,
+ },
+ },
+ max_width = nil,
+ max_height = nil,
+ max_width_window_percentage = nil,
+ max_height_window_percentage = 50,
+ window_overlap_clear_enabled = false, -- toggles images when windows are overlapped
+ window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "snacks_notif", "scrollview", "scrollview_sign" },
+ editor_only_render_when_focused = false, -- auto show/hide images when the editor gains/looses focus
+ tmux_show_only_in_active_window = false, -- auto show/hide images in the correct Tmux window (needs visual-activity off)
+ hijack_file_patterns = { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.avif" }, -- render image files as images when opened
+})
+
+-- require("image").enable() -- enable the plugin
+-- print(require("image").is_enabled()) -- bool
diff --git a/env/.config/nvim/after/plugin/cloak.lua b/env/.config/nvim/after/plugin/cloak.lua
new file mode 100644
index 0000000..ec68fe5
--- /dev/null
+++ b/env/.config/nvim/after/plugin/cloak.lua
@@ -0,0 +1,31 @@
+require('yourmom/cloak').setup({
+ enabled = true,
+ cloak_character = '*',
+ -- The applied highlight group (colors) on the cloaking, see `:h highlight`.
+ highlight_group = 'Comment',
+ -- Applies the length of the replacement characters for all matched
+ -- patterns, defaults to the length of the matched pattern.
+ cloak_length = nil, -- Provide a number if you want to hide the true length of the value.
+ -- Whether it should try every pattern to find the best fit or stop after the first.
+ try_all_patterns = true,
+ -- Set to true to cloak Telescope preview buffers. (Required feature not in 0.1.x)
+ cloak_telescope = true,
+ -- Re-enable cloak when a matched buffer leaves the window.
+ cloak_on_leave = false,
+ patterns = {
+ {
+ -- Match any file starting with '.env'.
+ -- This can be a table to match multiple file patterns.
+ file_pattern = '.env*',
+ -- Match an equals sign and any character after it.
+ -- This can also be a table of patterns to cloak,
+ -- example: cloak_pattern = { ':.+', '-.+' } for yaml files.
+ cloak_pattern = '=.+',
+ -- A function, table or string to generate the replacement.
+ -- The actual replacement will contain the 'cloak_character'
+ -- where it doesn't cover the original text.
+ -- If left empty the legacy behavior of keeping the first character is retained.
+ replace = nil,
+ }
+ },
+})
diff --git a/env/.config/nvim/after/plugin/colorizer.lua b/env/.config/nvim/after/plugin/colorizer.lua
new file mode 100644
index 0000000..4a4590b
--- /dev/null
+++ b/env/.config/nvim/after/plugin/colorizer.lua
@@ -0,0 +1 @@
+require("colorizer").setup()
diff --git a/env/.config/nvim/after/plugin/hardtime.lua b/env/.config/nvim/after/plugin/hardtime.lua
new file mode 100644
index 0000000..f5ef021
--- /dev/null
+++ b/env/.config/nvim/after/plugin/hardtime.lua
@@ -0,0 +1 @@
+require("hardtime").setup()
diff --git a/env/.config/nvim/after/plugin/harpoon.lua b/env/.config/nvim/after/plugin/harpoon.lua
new file mode 100755
index 0000000..d4d3242
--- /dev/null
+++ b/env/.config/nvim/after/plugin/harpoon.lua
@@ -0,0 +1,11 @@
+local mark = require("harpoon.mark")
+local ui = require("harpoon.ui")
+
+vim.keymap.set("n","<leader>a", mark.add_file)
+vim.keymap.set("n","<C-e>", ui.toggle_quick_menu)
+
+
+vim.keymap.set("n","<C-y>", function() ui.nav_file(1) end)
+vim.keymap.set("n","<C-t>", function() ui.nav_file(2) end)
+vim.keymap.set("n","<C-n>", function() ui.nav_file(3) end)
+vim.keymap.set("n","<C-s>", function() ui.nav_file(4) end)
diff --git a/env/.config/nvim/after/plugin/indent-blankline.lua b/env/.config/nvim/after/plugin/indent-blankline.lua
new file mode 100644
index 0000000..b0cb322
--- /dev/null
+++ b/env/.config/nvim/after/plugin/indent-blankline.lua
@@ -0,0 +1,30 @@
+local highlight = {
+ "RainbowRed",
+}
+
+local hooks = require "ibl.hooks"
+-- create the highlight groups in the highlight setup hook, so they are reset
+-- every time the colorscheme changes
+hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
+ vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#702ec0" })
+end)
+
+require('ibl').setup {
+ indent = {
+ char = '|',
+ highlight = highlight,
+ },
+ scope = {
+ show_start = false,
+ show_end = false,
+ show_exact_scope = false,
+ },
+ exclude = {
+ filetypes = {
+ 'help',
+ 'packer',
+ 'undotree',
+ 'diff',
+ },
+ },
+}
diff --git a/env/.config/nvim/after/plugin/lsp.lua b/env/.config/nvim/after/plugin/lsp.lua
new file mode 100755
index 0000000..9187032
--- /dev/null
+++ b/env/.config/nvim/after/plugin/lsp.lua
@@ -0,0 +1,75 @@
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "src",
+ callback = function()
+ print("LSP should now be active for src files")
+ end,
+})
+
+local lsp = require("lsp-zero")
+
+lsp.preset("recommended")
+
+
+local cmp = require('cmp')
+
+local cmp_select = {behavior = cmp.SelectBehavior.Select}
+local cmp_mappings = cmp.mapping.preset.insert({
+ ['<C-p>'] = cmp.mapping.select_prev_item(cmp_select),
+ ['<C-n>'] = cmp.mapping.select_next_item(cmp_select),
+ ['<C-y>'] = cmp.mapping.confirm({ select = true }),
+ ["<C-Space>"] = cmp.mapping.complete(),
+})
+
+cmp.setup({
+ mapping = cmp_mappings,
+})
+
+vim.diagnostic.config({
+ virtual_text = true,
+})
+
+lsp.on_attach(function(client, bufnr)
+ local opts = {buffer = bufnr, remap = false}
+
+ vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
+ vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
+ vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
+ vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts)
+ vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts)
+ vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts)
+ vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts)
+ vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end, opts)
+ vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts)
+ vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
+end)
+
+
+local lsp_configurations = require('lspconfig.configs')
+
+if not lsp_configurations.greybel then
+ lsp_configurations.greybel = {
+ default_config = {
+ cmd = { "/bin/greybel-languageserver", "--stdio" },
+ filetypes = { "greyscript" },
+ root_dir = require('lspconfig.util').root_pattern(".git", vim.fn.getcwd()),
+ settings = {},
+ }
+ }
+end
+
+-- to learn how to use mason.nvim with lsp-zero
+-- read this: https://github.com/VonHeikemen/lsp-zero.nvim/blob/v3.x/doc/md/guides/integrate-with-mason-nvim.md
+require('mason').setup({
+ registries = {
+ "github:mason-org/mason-registry",
+ },
+})
+require('mason-lspconfig').setup({
+ ensure_installed = { },
+ handlers = {
+ lsp.default_setup,
+ },
+})
+require('lspconfig').greybel.setup({})
+
+lsp.setup()
diff --git a/env/.config/nvim/after/plugin/lualine.lua b/env/.config/nvim/after/plugin/lualine.lua
new file mode 100644
index 0000000..4abfa26
--- /dev/null
+++ b/env/.config/nvim/after/plugin/lualine.lua
@@ -0,0 +1,46 @@
+require('lualine').setup()
+
+local custom_gruvbox = require'lualine.themes.base16'
+
+-- Change the background of lualine_c section for normal mode
+custom_gruvbox.normal.c.bg = '#222222'
+
+local hide_in_width = function()
+ return vim.fn.winwidth(0) > 80
+end
+
+local diagnostics = {
+ 'diagnostics',
+ sources = { 'nvim_diagnostic' },
+ sections = { 'error' , 'warn' },
+ symbols = { error = ' ', warn = ' ', info = ' ', hint = ' ' },
+ update_in_insert = false,
+ allways_visible = false,
+ cond = hide_in_width,
+}
+
+require('lualine').setup {
+ options = {
+ theme = custom_gruvbox,
+ icons_enabled = true,
+ disabled_filetypes = {'undotree', 'diff'},
+ },
+ sections = {
+ lualine_a = {{
+ 'mode',
+ fmt = function(str)
+ return ' ' .. str
+ end,
+ }},
+ lualine_b = {'branch', 'diff', diagnostics},
+ lualine_c = {{
+ 'filename',
+ file_status = true,
+ path = 0,
+ }},
+ --lualine_x = {'encoding', 'fileformat', 'filetype'},
+ lualine_x = {{'encoding', cond=hide_in_width}, {'filetype',cond=hide_in_width}},
+ lualine_y = {'progress'},
+ lualine_z = {'location'}
+ }
+}
diff --git a/env/.config/nvim/after/plugin/notify.lua b/env/.config/nvim/after/plugin/notify.lua
new file mode 100644
index 0000000..19c7362
--- /dev/null
+++ b/env/.config/nvim/after/plugin/notify.lua
@@ -0,0 +1,4 @@
+vim.notify = require("notify")
+require("notify").setup({
+ background_colour="#000000"
+})
diff --git a/env/.config/nvim/after/plugin/telescope.lua b/env/.config/nvim/after/plugin/telescope.lua
new file mode 100755
index 0000000..a709d9b
--- /dev/null
+++ b/env/.config/nvim/after/plugin/telescope.lua
@@ -0,0 +1,9 @@
+local builtin = require('telescope.builtin')
+vim.keymap.set('n', '<leader>pf', builtin.find_files, {})
+vim.keymap.set('n', '<leader>pg', builtin.live_grep, {})
+vim.keymap.set('n', '<leader>pb', builtin.buffers, {})
+vim.keymap.set('n', '<leader>ph', builtin.help_tags, {})
+vim.keymap.set('n', '<leader>ps', function()
+ builtin.grep_string({ search = vim.fn.input("Grep > ") });
+end)
+--vim.keymap.set('n', '<C-p>', builtin.git_files, {})
diff --git a/env/.config/nvim/after/plugin/undotree.lua b/env/.config/nvim/after/plugin/undotree.lua
new file mode 100644
index 0000000..b6b9276
--- /dev/null
+++ b/env/.config/nvim/after/plugin/undotree.lua
@@ -0,0 +1 @@
+vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
diff --git a/env/.config/nvim/custom-lsp/.luarc.json b/env/.config/nvim/custom-lsp/.luarc.json
new file mode 100755
index 0000000..93e15cc
--- /dev/null
+++ b/env/.config/nvim/custom-lsp/.luarc.json
@@ -0,0 +1,3 @@
+{
+ "workspace.library":["~/.config/nvim/custom-lsp"]
+}
diff --git a/env/.config/nvim/init.lua b/env/.config/nvim/init.lua
new file mode 100755
index 0000000..d3b41b0
--- /dev/null
+++ b/env/.config/nvim/init.lua
@@ -0,0 +1 @@
+require("yourmom")
diff --git a/env/.config/nvim/lua/yourmom/cloak.lua b/env/.config/nvim/lua/yourmom/cloak.lua
new file mode 100644
index 0000000..5a13953
--- /dev/null
+++ b/env/.config/nvim/lua/yourmom/cloak.lua
@@ -0,0 +1,293 @@
+local group = vim.api.nvim_create_augroup('cloak', {})
+local namespace = vim.api.nvim_create_namespace('cloak')
+
+-- In case cmp is lazy loaded, we check :CmpStatus instead of a pcall to require
+-- so we maintain the lazy load.
+local has_cmp = function()
+ return vim.fn.exists(':CmpStatus') > 0
+end
+
+local M = {}
+
+M.opts = {
+ enabled = true,
+ cloak_character = '*',
+ cloak_length = nil,
+ highlight_group = 'Comment',
+ try_all_patterns = true,
+ patterns = { { file_pattern = '.env*', cloak_pattern = '=.+' } },
+ cloak_telescope = true,
+ uncloaked_line_num = nil,
+ cloak_on_leave = false,
+}
+
+M.setup = function(opts)
+ M.opts = vim.tbl_deep_extend('force', M.opts, opts or {})
+ vim.b.cloak_enabled = M.opts.enabled
+
+ for _, pattern in ipairs(M.opts.patterns) do
+ if type(pattern.cloak_pattern) == 'string' then
+ pattern.cloak_pattern = { { pattern.cloak_pattern, replace = pattern.replace } }
+ else
+ for i, inner_pattern in ipairs(pattern.cloak_pattern) do
+ pattern.cloak_pattern[i] =
+ type(inner_pattern) == 'string'
+ and { inner_pattern, replace = pattern.cloak_pattern.replace or pattern.replace }
+ or inner_pattern
+ end
+ end
+
+ vim.api.nvim_create_autocmd(
+ { 'BufEnter', 'TextChanged', 'TextChangedI', 'TextChangedP' }, {
+ pattern = pattern.file_pattern,
+ callback = function()
+ if M.opts.enabled then
+ M.cloak(pattern)
+ else
+ M.uncloak()
+ end
+ end,
+ group = group,
+ }
+ )
+
+ if M.opts.cloak_on_leave then
+ vim.api.nvim_create_autocmd(
+ 'BufWinLeave', {
+ pattern = pattern.file_pattern,
+ callback = function()
+ M.enable()
+ end,
+ group = group,
+ }
+ )
+ end
+ end
+
+ if M.opts.cloak_telescope then
+ vim.api.nvim_create_autocmd(
+ 'User', {
+ pattern = 'TelescopePreviewerLoaded',
+ callback = function(args)
+ -- Feature not in 0.1.x
+ if not M.opts.enabled or args.data == nil then
+ return
+ end
+
+ local buffer = require('telescope.state').get_existing_prompt_bufnrs()[1]
+ local picker = require('telescope.actions.state').get_current_picker(
+ buffer
+ )
+
+ -- If our state variable is set, meaning we have just refreshed after cloaking a buffer,
+ -- set the selection to that row again.
+ if picker.__cloak_selection then
+ picker:set_selection(picker.__cloak_selection)
+ picker.__cloak_selection = nil
+ vim.schedule(
+ function()
+ picker:refresh_previewer()
+ end
+ )
+ return
+ end
+
+ local is_cloaked, _ = pcall(
+ vim.api.nvim_buf_get_var, args.buf, 'cloaked'
+ )
+
+ -- Check the buffer agains all configured patterns,
+ -- if matched, set a variable on the picker to know where we left off,
+ -- set a buffer variable to know we already cloaked it later, and refresh.
+ -- a refresh will result in the cloak being visible, and will make this
+ -- aucmd be called again right away with the first result, which we will then
+ -- set to what we have stored in the code above.
+ if M.recloak_file(args.data.bufname) then
+ vim.api.nvim_buf_set_var(args.buf, 'cloaked', true)
+ if is_cloaked then
+ return
+ end
+
+ local row = picker:get_selection_row()
+ picker.__cloak_selection = row
+ picker:refresh()
+ return
+ end
+ end,
+ group = group,
+ }
+ )
+ end
+ -- Handle cloaking the Telescope preview.
+
+ vim.api.nvim_create_user_command('CloakEnable', M.enable, {})
+ vim.api.nvim_create_user_command('CloakDisable', M.disable, {})
+ vim.api.nvim_create_user_command('CloakToggle', M.toggle, {})
+ vim.api.nvim_create_user_command('CloakPreviewLine', M.uncloak_line, {})
+end
+
+M.uncloak = function()
+ vim.api.nvim_buf_clear_namespace(0, namespace, 0, -1)
+end
+
+M.uncloak_line = function()
+ if not M.opts.enabled then
+ return
+ end
+
+ local buf = vim.api.nvim_win_get_buf(0)
+ local cursor = vim.api.nvim_win_get_cursor(0)
+ M.opts.uncloaked_line_num = cursor[1]
+
+ vim.api.nvim_create_autocmd(
+ { 'CursorMoved', 'CursorMovedI', 'BufLeave' }, {
+ buffer = buf,
+ callback = function(args)
+ if not M.opts.enabled then
+ M.opts.uncloaked_line_num = nil
+ return true
+ end
+
+ if args.event == 'BufLeave' then
+ M.opts.uncloaked_line_num = nil
+ M.recloak_file(vim.api.nvim_buf_get_name(buf))
+ return true
+ end
+
+ local ncursor = vim.api.nvim_win_get_cursor(0)
+ if ncursor[1] == M.opts.uncloaked_line_num then
+ return
+ end
+
+ M.opts.uncloaked_line_num = nil
+ M.recloak_file(vim.api.nvim_buf_get_name(buf))
+
+ -- deletes the auto command
+ return true
+ end,
+ group = group,
+ }
+ )
+
+ M.recloak_file(vim.api.nvim_buf_get_name(buf))
+end
+
+M.cloak = function(pattern)
+ M.uncloak()
+
+ if has_cmp() then
+ require('cmp').setup.buffer({ enabled = false })
+ end
+
+ local function determine_replacement(length, prefix)
+ local cloak_str = prefix
+ .. M.opts.cloak_character:rep(
+ tonumber(M.opts.cloak_length)
+ or length - vim.fn.strchars(prefix))
+ local remaining_length = length - vim.fn.strchars(cloak_str)
+ -- Fixme:
+ -- - When cloak_length is longer than the text underlying it,
+ -- it results in overlaying of extra text
+ -- => Possiblie solutions would could be implemented using inline virtual text
+ -- (https://github.com/neovim/neovim/pull/20130)
+ return cloak_str -- :sub(1, math.min(remaining_length - 1, -1))
+ .. (' '):rep(remaining_length)
+ end
+
+ local found_pattern = false
+ local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
+ for i, line in ipairs(lines) do
+ -- Find all matches for the current line
+ local searchStartIndex = 1
+ while searchStartIndex < #line and
+ -- if the line is uncloaked skip
+ i ~= M.opts.uncloaked_line_num do
+
+ -- Find best pattern based on starting position and tiebreak with length
+ local first, last, matching_pattern, has_groups = -1, 1, nil, false
+ for _, inner_pattern in ipairs(pattern.cloak_pattern) do
+ local current_first, current_last, capture_group =
+ line:find(inner_pattern[1], searchStartIndex)
+ if current_first ~= nil
+ and (first < 0
+ or current_first < first
+ or (current_first == first and current_last > last)) then
+ first, last, matching_pattern, has_groups =
+ current_first, current_last, inner_pattern, capture_group ~= nil
+ if M.opts.try_all_patterns == false then break end
+ end
+ end
+ if first >= 0 then
+ found_pattern = true
+ local prefix = line:sub(first,first)
+ if has_groups and matching_pattern.replace ~= nil then
+ prefix = line:sub(first,last)
+ :gsub(matching_pattern[1], matching_pattern.replace, 1)
+ end
+ local last_of_prefix = first + vim.fn.strchars(prefix) - 1
+ if prefix == line:sub(first, last_of_prefix) then
+ first, prefix = last_of_prefix + 1, ''
+ end
+ vim.api.nvim_buf_set_extmark(
+ 0, namespace, i - 1, first-1, {
+ hl_mode = 'combine',
+ virt_text = {
+ {
+ determine_replacement(last - first + 1, prefix),
+ M.opts.highlight_group,
+ },
+ },
+ virt_text_pos = 'overlay',
+ }
+ )
+ else break end
+ searchStartIndex = last
+ end
+ end
+ if found_pattern then
+ vim.opt_local.wrap = false
+ end
+end
+
+M.recloak_file = function(filename)
+ local base_name = vim.fn.fnamemodify(filename, ':t')
+ for _, pattern in ipairs(M.opts.patterns) do
+ -- Could be a string or a table of patterns.
+ local file_patterns = pattern.file_pattern
+ if type(file_patterns) == 'string' then
+ file_patterns = { file_patterns }
+ end
+
+ for _, file_pattern in ipairs(file_patterns) do
+ if base_name ~= nil and
+ vim.fn.match(base_name, vim.fn.glob2regpat(file_pattern)) ~= -1 then
+ M.cloak(pattern)
+ return true
+ end
+ end
+ end
+
+ return false
+end
+
+M.disable = function()
+ M.uncloak()
+ M.opts.enabled = false
+ vim.b.cloak_enabled = false
+end
+
+M.enable = function()
+ M.opts.enabled = true
+ vim.b.cloak_enabled = true
+ vim.cmd('doautocmd TextChanged')
+end
+
+M.toggle = function()
+ if M.opts.enabled then
+ M.disable()
+ else
+ M.enable()
+ end
+end
+
+return M
diff --git a/env/.config/nvim/lua/yourmom/init.lua b/env/.config/nvim/lua/yourmom/init.lua
new file mode 100755
index 0000000..90e3e6a
--- /dev/null
+++ b/env/.config/nvim/lua/yourmom/init.lua
@@ -0,0 +1,50 @@
+require("yourmom.remap")
+
+vim.opt.guicursor=""
+
+vim.opt.nu = true
+vim.opt.relativenumber = true
+
+vim.opt.tabstop = 4
+vim.opt.softtabstop = 4
+vim.opt.shiftwidth = 4
+vim.opt.expandtab = true
+
+vim.opt.smartindent=true
+
+vim.opt.wrap = true
+
+vim.opt.hlsearch = false
+vim.opt.incsearch = true
+
+vim.o.ignorecase = true
+
+vim.opt.updatetime = 50
+--vim.opt.colorcolumn = "80"
+--vim.cmd('colorscheme vim')
+--vim.cmd('colorscheme rose-pine')
+vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
+vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
+
+
+vim.cmd('hi SignColumn ctermbg=0')
+vim.cmd('set signcolumn=no')
+
+vim.cmd('hi Pmenu ctermfg=120')
+vim.cmd('hi Pmenu ctermbg=0')
+
+vim.cmd('hi StatusLine ctermfg=0')
+vim.cmd('hi StatusLine ctermbg=15')
+vim.cmd('hi StatusLine cterm=reverse')
+
+vim.opt.termguicolors = true
+
+--allows highlighint in comments
+--vim.api.nvim_set_hl(0, '@lsp.type.comment.cpp', {})
+
+
+vim.filetype.add({
+ extension = {
+ src = "greyscript"
+ }
+})
diff --git a/env/.config/nvim/lua/yourmom/packer.lua b/env/.config/nvim/lua/yourmom/packer.lua
new file mode 100755
index 0000000..6a6e08c
--- /dev/null
+++ b/env/.config/nvim/lua/yourmom/packer.lua
@@ -0,0 +1,73 @@
+-- This file can be loaded by calling `lua require('plugins')` from your init.vim
+
+-- Only required if you have packer configured as `opt`
+vim.cmd [[packadd packer.nvim]]
+
+return require('packer').startup(function(use)
+ -- Packer can manage itself
+
+ use 'wbthomason/packer.nvim'
+
+ use 'ThePrimeagen/vim-be-good'
+ use 'ThePrimeagen/harpoon'
+
+ use 'm4xshen/hardtime.nvim'
+
+ use 'rcarriga/nvim-notify'
+
+ use { "rose-pine/neovim", as = "rose-pine" }
+
+ use "jbyuki/quickmath.nvim"
+
+ use '3rd/image.nvim'
+
+ use {
+ 'nvim-telescope/telescope.nvim', tag = '0.1.5',
+ -- or , branch = '0.1.x',
+ requires = { {'nvim-lua/plenary.nvim'} }
+ }
+
+ use("mbbill/undotree")
+
+ use "lukas-reineke/indent-blankline.nvim"
+
+ use({ "NStefan002/screenkey.nvim", tag = "*" })
+
+ use("catgoose/nvim-colorizer.lua")
+
+ use {
+ 'nvim-lualine/lualine.nvim',
+ --requires = { 'nvim-tree/nvim-web-devicons', opt = true }
+ }
+
+--[[
+ use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate',
+ config = function()
+ require("nvim-treesitter.configs").setup {
+ ensure_installed = { "c", "lua", "rust" },
+ highlight = { enable = true, }
+ }
+ end
+ })
+ ]]--
+
+ use {
+ 'VonHeikemen/lsp-zero.nvim',
+ branch = 'v3.x',
+ requires = {
+ --- Uncomment the two plugins below if you want to manage the language servers from neovim
+ {'williamboman/mason.nvim'},
+ {'williamboman/mason-lspconfig.nvim'},
+
+ -- LSP Support
+ {'neovim/nvim-lspconfig'},
+ -- Autocompletion
+ {'hrsh7th/nvim-cmp'},
+ {'hrsh7th/cmp-buffer'},
+ {'hrsh7th/cmp-path'},
+ {'hrsh7th/cmp-nvim-lsp'},
+ {'hrsh7th/cmp-nvim-lua'},
+ {'L3MON4D3/LuaSnip'},
+ }
+ }
+end)
diff --git a/env/.config/nvim/lua/yourmom/remap.lua b/env/.config/nvim/lua/yourmom/remap.lua
new file mode 100755
index 0000000..1bd421f
--- /dev/null
+++ b/env/.config/nvim/lua/yourmom/remap.lua
@@ -0,0 +1,262 @@
+vim.g.mapleader=" "
+vim.g.maplocalleader=" "
+vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
+
+
+--[[vim.cmd[[
+au VimEnter * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
+au VimLeave * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'>
+]]
+
+
+--move highlighted stuffs
+vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
+vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
+
+--keeps cursor at cur pos when stacking lines to single line
+vim.keymap.set("n", "J", "mzJ`z")
+--keeps cursur in middle with up down
+vim.keymap.set("n", "<C-d>", "<C-d>zz")
+vim.keymap.set("n", "<C-u>", "<C-u>zz")
+vim.keymap.set("n", "n", "nzzzv")
+vim.keymap.set("n", "N", "Nzzzv")
+
+--sets leader y to put in sys clipboard
+vim.keymap.set("n", "<leader>y", "\"+y")
+vim.keymap.set("v", "<leader>y", "\"+y")
+vim.keymap.set("n", "<leader>Y", "\"+Y")
+--paste but dont overwrite current register with selection
+vim.keymap.set("v", "<leader>p", "\"_dP")
+
+--nnoremap S :%s//g<left><left>
+vim.keymap.set("n", "S", [[:%s//<Left>]])
+
+
+vim.keymap.set('n', '<leader>to', ':tabnew<CR>')
+vim.keymap.set('n', '<leader>tx', ':tabclose<CR>')
+vim.keymap.set('n', '<leader>tn', ':tabn<CR>')
+vim.keymap.set('n', '<leader>tp', ':tabp<CR>')
+
+vim.keymap.set('n', '<leader>lw', '<cmd>:set wrap!<CR>')
+
+--stay in indent mode
+vim.keymap.set('v', '<', '<gv', {noremap = true})
+vim.keymap.set('v', '>', '>gv', {noremap = true})
+
+
+--reize with arrows
+vim.keymap.set('n', '<A-k>', ':resize -2<CR>')
+vim.keymap.set('n', '<A-j>', ':resize +2<CR>')
+vim.keymap.set('n', '<A-h>', ':vertical resize -2<CR>')
+vim.keymap.set('n', '<A-l>', ':vertical resize +2<CR>')
+
+-- window management
+vim.keymap.set('n', '<leader>v', '<C-w>v')
+vim.keymap.set('n', '<leader>h', '<C-w>s')
+vim.keymap.set('n', '<leader>se', '<C-w>=')
+vim.keymap.set('n', '<leader>xs', ':close<CR>')
+
+-- navigate splits
+vim.keymap.set("n","<C-h>","<C-w>h")
+vim.keymap.set("n","<C-j>","<C-w>j")
+vim.keymap.set("n","<C-l>","<C-w>l")
+vim.keymap.set("n","<C-k>","<C-w>k")
+
+
+
+vim.keymap.set("n", "<leader>ee", "oif err != nil {<CR>}<Esc>Oreturn err<Esc>")
+
+--per file type log quick binds
+local cc_command=""
+local filename = vim.api.nvim_buf_get_name(0)
+
+if string.find(filename,".*%.js$") then
+ cc_command="oconsole.log();<Esc>V=$hi"
+elseif string.find(filename,".*%.lua$") then
+ cc_command="oterm.print()<Esc>V=$i"
+elseif string.find(filename,".*%.c$") then
+ cc_command="oprintf(\"debug: %i\",);<Esc>V=$hi"
+elseif string.find(filename,".*%.rs$") then
+ cc_command="oprintln!(\"debug: {}\",);<Esc>V=$hi"
+end
+
+vim.keymap.set("n", "<leader>cc", cc_command)
+
+local auto_close=false
+local function toggle_auto_close()
+ if auto_close==false then
+ vim.keymap.set("i", "{", "{<CR>}<Esc>ko");
+ vim.keymap.set("i", "(", "()<Esc>i");
+ if string.find(filename,".*%.html$") then
+ vim.keymap.set("i", "<", "<");
+ vim.keymap.set("i", ">", "><Esc>T<yef>a</><Esc>hpF<i");
+ else
+ vim.keymap.set("i", "<", "<><Esc>i");
+ vim.keymap.set("i", ">", ">");
+ end
+ vim.keymap.set("i", "[", "[]<Esc>i");
+ vim.keymap.set("i", "\"", "\"\"<Esc>i");
+ vim.keymap.set("i", "'", "''<Esc>i");
+ auto_close=true
+ else
+ vim.keymap.set("i", "{", "{");
+ vim.keymap.set("i", "(", "(");
+ vim.keymap.set("i", "<", "<");
+ vim.keymap.set("i", ">", ">");
+ vim.keymap.set("i", "[", "[");
+ vim.keymap.set("i", "\"", "\"");
+ vim.keymap.set("i", "'", "'");
+ auto_close=false
+ end
+end
+toggle_auto_close()
+
+vim.keymap.set("n", "<leader>k", toggle_auto_close)
+
+--[[
+vim.keymap("i","<Caps_Lock>", function()
+
+end)
+]]
+
+local colemak_switch=false
+
+local colemak_tog = function()
+ if colemak_switch==true then
+ colemak_switch=false
+ vim.keymap.set("n","d","d")
+ vim.keymap.set("n","e","e")
+ vim.keymap.set("n","f","f")
+ vim.keymap.set("n","g","g")
+ vim.keymap.set("n","i","i")
+ vim.keymap.set("n","j","j")
+ vim.keymap.set("n","k","k")
+ vim.keymap.set("n","l","l")
+ vim.keymap.set("n","n","n")
+ vim.keymap.set("n","o","o")
+ vim.keymap.set("n","p","p")
+ vim.keymap.set("n","r","r")
+ vim.keymap.set("n","s","s")
+ vim.keymap.set("n","t","t")
+ vim.keymap.set("n","u","u")
+ vim.keymap.set("n","y","y")
+ vim.keymap.set("n","D","D")
+ vim.keymap.set("n","E","E")
+ vim.keymap.set("n","F","F")
+ vim.keymap.set("n","G","G")
+ vim.keymap.set("n","I","I")
+ vim.keymap.set("n","J","J")
+ vim.keymap.set("n","K","K")
+ vim.keymap.set("n","L","L")
+ vim.keymap.set("n","N","N")
+ vim.keymap.set("n","O","O")
+ vim.keymap.set("n","P","P")
+ vim.keymap.set("n","R","R")
+ vim.keymap.set("n","S","S")
+ vim.keymap.set("n","T","T")
+ vim.keymap.set("n","U","U")
+ vim.keymap.set("n","Y","Y")
+
+ vim.keymap.set("v","d","d")
+ vim.keymap.set("v","e","e")
+ vim.keymap.set("v","f","f")
+ vim.keymap.set("v","g","g")
+ vim.keymap.set("v","i","i")
+ vim.keymap.set("v","j","j")
+ vim.keymap.set("v","k","k")
+ vim.keymap.set("v","l","l")
+ vim.keymap.set("v","n","n")
+ vim.keymap.set("v","o","o")
+ vim.keymap.set("v","p","p")
+ vim.keymap.set("v","r","r")
+ vim.keymap.set("v","s","s")
+ vim.keymap.set("v","t","t")
+ vim.keymap.set("v","u","u")
+ vim.keymap.set("v","y","y")
+ vim.keymap.set("v","D","D")
+ vim.keymap.set("v","E","E")
+ vim.keymap.set("v","F","F")
+ vim.keymap.set("v","G","G")
+ vim.keymap.set("v","I","I")
+ vim.keymap.set("v","J","J")
+ vim.keymap.set("v","K","K")
+ vim.keymap.set("v","L","L")
+ vim.keymap.set("v","N","N")
+ vim.keymap.set("v","O","O")
+ vim.keymap.set("v","P","P")
+ vim.keymap.set("v","R","R")
+ vim.keymap.set("v","S","S")
+ vim.keymap.set("v","T","T")
+ vim.keymap.set("v","U","U")
+ vim.keymap.set("v","Y","Y")
+ else
+ colemak_switch=true
+ vim.keymap.set("n","d","g")
+ vim.keymap.set("n","e","k")
+ vim.keymap.set("n","f","e")
+ vim.keymap.set("n","g","t")
+ vim.keymap.set("n","i","l")
+ vim.keymap.set("n","j","y")
+ vim.keymap.set("n","k","n")
+ vim.keymap.set("n","l","u")
+ vim.keymap.set("n","n","j")
+ vim.keymap.set("n","o","p")
+ vim.keymap.set("n","p","r")
+ vim.keymap.set("n","r","s")
+ vim.keymap.set("n","s","d")
+ vim.keymap.set("n","t","f")
+ vim.keymap.set("n","u","i")
+ vim.keymap.set("n","y","o")
+ vim.keymap.set("n","D","G")
+ vim.keymap.set("n","E","K")
+ vim.keymap.set("n","F","E")
+ vim.keymap.set("n","G","T")
+ vim.keymap.set("n","I","L")
+ vim.keymap.set("n","J","Y")
+ vim.keymap.set("n","K","N")
+ vim.keymap.set("n","L","U")
+ vim.keymap.set("n","N","J")
+ vim.keymap.set("n","O","P")
+ vim.keymap.set("n","P","R")
+ vim.keymap.set("n","R","S")
+ vim.keymap.set("n","S","D")
+ vim.keymap.set("n","T","F")
+ vim.keymap.set("n","U","I")
+ vim.keymap.set("n","Y","O")
+
+ vim.keymap.set("v","d","g")
+ vim.keymap.set("v","e","k")
+ vim.keymap.set("v","f","e")
+ vim.keymap.set("v","g","t")
+ vim.keymap.set("v","i","l")
+ vim.keymap.set("v","j","y")
+ vim.keymap.set("v","k","n")
+ vim.keymap.set("v","l","u")
+ vim.keymap.set("v","n","j")
+ vim.keymap.set("v","o","p")
+ vim.keymap.set("v","p","r")
+ vim.keymap.set("v","r","s")
+ vim.keymap.set("v","s","d")
+ vim.keymap.set("v","t","f")
+ vim.keymap.set("v","u","i")
+ vim.keymap.set("v","y","o")
+ vim.keymap.set("v","D","G")
+ vim.keymap.set("v","E","K")
+ vim.keymap.set("v","F","E")
+ vim.keymap.set("v","G","T")
+ vim.keymap.set("v","I","L")
+ vim.keymap.set("v","J","Y")
+ vim.keymap.set("v","K","N")
+ vim.keymap.set("v","L","U")
+ vim.keymap.set("v","N","J")
+ vim.keymap.set("v","O","P")
+ vim.keymap.set("v","P","R")
+ vim.keymap.set("v","R","S")
+ vim.keymap.set("v","S","D")
+ vim.keymap.set("v","T","F")
+ vim.keymap.set("v","U","I")
+ vim.keymap.set("v","Y","O")
+ end
+end
+
+vim.keymap.set("n", "<leader>r", colemak_tog)
diff --git a/env/.config/nvim/spell/en.utf-8.add b/env/.config/nvim/spell/en.utf-8.add
new file mode 100755
index 0000000..c85449a
--- /dev/null
+++ b/env/.config/nvim/spell/en.utf-8.add
@@ -0,0 +1,21 @@
+qpwgraph
+pipewire
+linux
+kde
+wayland
+VR
+ish
+OVR
+ALVR
+picom
+VM
+taskbar
+dwm
+distro
+vesktop
+warframe
+Anthro
+anthro
+optifine
+lol
+cuda
diff --git a/env/.config/nvim/spell/en.utf-8.add.spl b/env/.config/nvim/spell/en.utf-8.add.spl
new file mode 100755
index 0000000..1797837
--- /dev/null
+++ b/env/.config/nvim/spell/en.utf-8.add.spl
Binary files differ
diff --git a/env/.config/picom.conf b/env/.config/picom.conf
new file mode 100755
index 0000000..31ecf09
--- /dev/null
+++ b/env/.config/picom.conf
@@ -0,0 +1,446 @@
+#################################
+# 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 = 7;
+
+# 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 = -7;
+
+# The top offset for shadows, in pixels. (defaults to -15)
+# shadow-offset-y = -15
+shadow-offset-y = -7;
+
+# 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
+
+# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
+# shadow-color = "#000000"
+
+# 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'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
+# clip-shadow-above = []
+
+# 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 monitor to that monitor. This is
+# currently implemented using the X RandR extension.
+# crop-shadow-to-monitor = 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.6;
+
+# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
+# fade-out-step = 0.03
+fade-out-step = 0.06;
+
+# 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 = 0.7;
+
+# Let inactive opacity set by -i override the '_NET_WM_WINDOW_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.0
+
+# Specify a list of conditions of windows that should never be considered focused.
+# focus-exclude = []
+focus-exclude = [ "class_g = 'Cairo-clock'" ];
+
+# 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 = []
+#
+
+opacity-rule = [
+ #"95:name *= 'Firefox'",
+ #"80:name *= 'Discord'",
+ "90:name *= 'OBS'",
+ "90:name *= 'urxvt'",
+ #"80:class_g = 'steam'",
+ "70:class_g *= 'screen-recorder-gtk'",
+ "80:class_g *= 'simplex'",
+];
+
+
+#################################
+# Corners #
+#################################
+
+# Sets the radius of rounded window corners. When > 0, the compositor will
+# round the corners of windows. Does not interact well with
+# `transparent-clipping`.
+corner-radius = 0
+
+# Exclude conditions for rounded corners.
+rounded-corners-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "class_g = 'dmenu'",
+ "class_g = 'dwm'",
+ "class_g = 'dwmsystray'",
+];
+
+
+#################################
+# Background-Blurring #
+#################################
+
+
+# Parameters for background blurring, see the *BLUR* section for more information.
+blur-method = "box"
+blur-size = 5
+
+blur-deviation = false
+
+blur-strength = 3
+
+# 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";
+
+
+# Exclude conditions for background blur.
+# blur-background-exclude = []
+blur-background-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+#################################
+# General Settings #
+#################################
+
+# Enable remote control via D-Bus. See the man page for more details.
+# dbus = true
+
+# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
+# daemon = false
+
+# Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`.
+# `xrender` is the default one.
+#
+# backend = "glx"
+backend = "glx";
+
+# Use higher precision during rendering, and apply dither when presenting the
+# rendered screen. Reduces banding artifacts, but might cause performance
+# degradation. Only works with OpenGL.
+dithered-present = false;
+
+# Enable/disable VSync.
+# vsync = false
+vsync = true;
+
+# 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_WINDOW_OPACITY' on client windows, useful for window managers
+# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
+#
+# detect-client-opacity = false
+detect-client-opacity = true;
+
+# 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. This usually means windows from the same application
+# will be considered focused or unfocused at the same time.
+# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
+#
+# detect-client-leader = false
+
+# 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 every time, 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
+xrender-sync-fence = true
+
+# GLX backend: Use specified GLSL fragment shader for rendering window
+# contents. Read the man page for a detailed explanation of the interface.
+#
+# window-shader-fg = "default"
+
+# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
+# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
+#
+# window-shader-fg-rule = [
+# "my_shader.frag:window_type != 'dock'"
+# ]
+
+# 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
+
+# Specify a list of conditions of windows that should never have transparent
+# clipping applied. Useful for screenshot tools, where you need to be able to
+# see through transparent parts of the window.
+#
+# transparent-clipping-exclude = []
+
+# 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.
+#
+# clip-shadow-above:::
+# Controls whether shadows that would have been drawn above the window should
+# be clipped. Useful for dock windows that should have no shadow painted on top.
+#
+# 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; clip-shadow-above = true; }
+ dnd = { shadow = false; }
+ popup_menu = { opacity = 0.8; }
+ dropdown_menu = { opacity = 0.8; }
+};
diff --git a/env/.config/rofi/config.rasi b/env/.config/rofi/config.rasi
new file mode 100644
index 0000000..837eea0
--- /dev/null
+++ b/env/.config/rofi/config.rasi
@@ -0,0 +1,15 @@
+@theme "Arc-Dark"
+
+//background: #30303050;
+*{
+ background: #201f5060;
+ alternate-normal-background: #3020B060;
+ normal-background: #20109060;
+ foreground: #F0C3F0;
+ border-color: #5030D0;
+ selected-normal-background: #10104060;
+}
+
+window, mainbox{
+ //border-radius: 20px;
+}
diff --git a/env/.config/screenkey.json b/env/.config/screenkey.json
new file mode 100755
index 0000000..6e886a6
--- /dev/null
+++ b/env/.config/screenkey.json
@@ -0,0 +1,32 @@
+{
+ "no_systray": false,
+ "timeout": 2.5,
+ "recent_thr": 0.1,
+ "compr_cnt": 3,
+ "ignore": [],
+ "position": "fixed",
+ "persist": false,
+ "window": null,
+ "font_desc": "Inconsolata Light 10",
+ "font_size": "small",
+ "font_color": "white",
+ "bg_color": "#114400f423d6",
+ "opacity": 0.1,
+ "key_mode": "translated",
+ "bak_mode": "baked",
+ "mods_mode": "normal",
+ "mods_only": false,
+ "multiline": false,
+ "vis_shift": false,
+ "vis_space": true,
+ "geometry": [
+ 1191,
+ 152,
+ 720,
+ 81
+ ],
+ "screen": 0,
+ "start_disabled": false,
+ "mouse": false,
+ "button_hide_duration": 0.5
+} \ No newline at end of file
diff --git a/env/.config/tmux/tmux.conf b/env/.config/tmux/tmux.conf
new file mode 100755
index 0000000..d836f66
--- /dev/null
+++ b/env/.config/tmux/tmux.conf
@@ -0,0 +1,72 @@
+#run-shell ~/clone/path/logging.tmux
+set -g default-terminal "screen-256color"
+set -g terminal-overrides 'screen*:colors=256'
+
+set -g default-shell /bin/zsh
+set -g default-command /bin/zsh
+
+set -gq allow-passthrough on
+set -g visual-activity off
+
+#set -g status-interval 3
+
+unbind C-b
+set-option -g prefix C-Space
+
+# set vim mode
+set-window-option -g mode-keys vi
+setw -g mode-keys vi
+
+# yank and visual rebinds
+bind -T copy-mode-vi v send-keys -X begin-selection
+bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -selection clipboard'
+
+# dont exit copy mode with mouse drag
+unbind -T copy-mode-vi MouseDragEnd1Pane
+
+
+# bind r to reload config
+unbind r
+bind r source-file ~/.tmux.conf
+
+# start panes and windows 1
+set -g base-index 1
+set -g pane-base-index 1
+set -g renumber-windows on # renumber windows when one is closed
+
+# nav rebinds
+bind -r C-h select-pane -L
+bind -r C-j select-pane -D
+bind -r C-k select-pane -U
+bind -r C-l select-pane -R
+
+bind -r h resize-pane -L 5
+bind -r j resize-pane -D 5
+bind -r k resize-pane -U 5
+bind -r l resize-pane -R 5
+bind -r m resize-pane -Z # maximize
+
+# pane joining
+bind J switch-client -T pane-management
+bind-key -T pane-management \" command-prompt -p "join pane from:" "join-pane -s '%%' -h"
+bind-key -T pane-management H command-prompt -p "join pane from:" "join-pane -s '%%' -f -h"
+bind-key -T pane-management % command-prompt -p "join pane from:" "join-pane -s '%%' -v"
+bind-key -T pane-management V command-prompt -p "join pane from:" "join-pane -s '%%' -f -v"
+bind-key -T pane-management B break-pane
+bind-key -T pane-management S command-prompt -p "send pane to:" "join-pane -t '%%'"
+
+bind-key -r H split-window -h -f
+
+
+# colors/theme
+set -g status-bg "#333333"
+set -g status-fg "#f1f1f1"
+set -wg mode-style bg="#333334"
+set -g pane-border-style fg='#333333'
+set -g pane-active-border-style fg='#a030f0'
+active_window_fg='#e080f0'
+set -g status-left "#[fg=${session_fg},bold,bg=${bg}][ #S] "
+set -g status-left-length 40
+set -g window-status-current-format "#[fg=${active_window_fg},bg=default] #I:#W"
+set -g window-status-format "#[fg=${default_fg},bg=default]#I:#W"
+# set -g window-status-last-style "fg=${default_fg},bg=default"
diff --git a/env/.config/waybar/config.jsonc b/env/.config/waybar/config.jsonc
new file mode 100644
index 0000000..7927204
--- /dev/null
+++ b/env/.config/waybar/config.jsonc
@@ -0,0 +1,180 @@
+{
+ "layer": "top",
+ "position": "bottom",
+ "modules-left": ["hyprland/workspaces"],
+
+ //"modules-center": ["clock", ], //"custom/weather"],
+
+ "modules-right": [
+ "custom/mic",
+ "pulseaudio",
+ //"backlight",
+ "battery",
+ "network",
+ "cpu",
+ "memory",
+ //"custom/docker",
+ "custom/disc",
+ "custom/rss",
+ "clock",
+ "tray",
+ "custom/lock",
+ "custom/power"
+ ],
+
+ "hyprland/workspaces": {
+ //"format": "{name}: {icon}",
+ //"all-outputs":true,
+ "format": "{icon}",
+ "format-icons": {
+ /*
+ "1": "",
+ "2": "",
+ "3": "",
+ "4": "",
+ "5": ""
+ */
+ "1":"  ",
+ "2":"  ",
+ "3":"  ",
+ "4":"  ",
+ "5":"  ",
+ "6":"  ",
+ "7":"  ",
+ "8":"  ",
+ "9":"  ",
+ "10":"  ",
+ "11":"  ",
+ "12":"  ",
+ "13":"  ",
+ "14":"  ",
+ "15":"  ",
+ "16":"  ",
+ "17":"  ",
+ "18":"  ",
+ "19":"  ",
+ "20":"  "
+ },
+ /*
+ "persistent-workspaces": {
+ "1": [], // Always show a workspace with name '3', on all outputs if it does not exists
+ "2": [],
+ "3": [],
+ "4": [],
+ "5": [],
+ "6": [],
+ "7": [],
+ "8": [],
+ "9": [],
+ "10": []
+ },
+ */
+ "sort-by-name": true
+ },
+
+ "tray": {
+ "icon-size": 16,
+ "spacing": 10
+ },
+
+ "custom/music": {
+ "format": " {}",
+ "escape": true,
+ "interval": 5,
+ "tooltip": false,
+ "exec": "playerctl metadata --format='{{ artist }} - {{ title }}'",
+ "on-click": "playerctl play-pause",
+ "max-length": 50
+ },
+
+ "clock": {
+ "timezone": "America/Chicago",
+ "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+ "format": "{:%m/%d/%Y - %I:%M:%S}",
+ "interval": 1
+ },
+
+ "network": {
+ "interface": "wlan0",
+ "format-wifi": "󰤢 {bandwidthDownBits}",
+ "format-ethernet": "󰈀 {bandwidthDownBits}",
+ "format-disconnected": "󰤠 No Network",
+ "interval": 5,
+ "tooltip": true,
+ "tooltip-format-wifi": "{essid} ({signalStrength}%) ",
+ "tooltip-format-ethernet": "{ifname} ",
+ "tooltip-format-disconnected": "Disconnected"
+ },
+
+ "cpu": {
+ "interval": 1,
+ "format": " {icon0}{icon1}{icon2}{icon3} {usage:>2}%",
+ "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"]
+ },
+
+ "memory": {
+ "interval": 30,
+ "format": " {used:0.1f}G/{total:0.1f}G"
+ },
+
+ "custom/uptime": {
+ "format": "{}",
+ "interval": 1600,
+ "exec": "sh -c '(uptime -p)'"
+ },
+
+ "pulseaudio": {
+ "format": "{icon} {volume}%",
+ "format-muted": "",
+ "format-icons": {
+ "default": ["", "", " "]
+ },
+ "on-click": "pavucontrol"
+ },
+
+ "custom/power": {
+ "tooltip": false,
+ "on-click": "wlogout &",
+ "format": "⏻"
+ },
+
+ "custom/docker": {
+ "format": "{}",
+ "return-type": "json",
+ "interval": 10,
+ "exec": "$(pwd)/scripts/docker-stats/docker-stats",
+ "tooltip": true
+ },
+
+ "custom/weather": {
+ "format": "{}",
+ "tooltip": true,
+ "interval": 1800,
+ "exec": "$(pwd)/scripts/weather-stats/weather-stats",
+ "return-type": "json"
+ },
+
+ "custom/rss": {
+ "format": " {}",
+ "interval": 3,
+ "exec": "/usr/bin/newsboat -x print-unread|sed 's/\\s.*//; s/Error:/IA/'"
+ },
+
+ "custom/disc": {
+ "format": " {}",
+ "interval": 20,
+ "exec": "df -h -x=used /dev/mapper/artix-root | sed '1d' | awk '{print $4}'| sed 's/[^0-9]*//g'"
+ },
+
+ "custom/mic": {
+ "format": "{}",
+ "interval": 1,
+ "exec": "[ \"$(pactl get-source-mute @DEFAULT_SOURCE@)\" == \"Mute: no\" ] && echo  || echo 󰍭"
+ },
+
+ "custom/wifi": {
+ "format": "{}",
+ "interval": 1000,
+ "exec": "sed \"s/down/\\:\\(/;s/up/\\:\\)/\" /sys/class/net/$wifi_device/operstate"
+ }
+}
diff --git a/env/.config/waybar/ref-style.css b/env/.config/waybar/ref-style.css
new file mode 100644
index 0000000..edc87e0
--- /dev/null
+++ b/env/.config/waybar/ref-style.css
@@ -0,0 +1,163 @@
+* {
+ font-family: JetbrainsMono Nerd Font;
+ font-size: 13px;
+ min-height: 0;
+ padding-right: 2px;
+ padding-left: 2px;
+ padding-bottom: 0px;
+}
+
+#waybar {
+ background: transparent;
+ color: #c6d0f5;
+ margin: 2px 2px;
+}
+
+#workspaces {
+ border-radius: 5px;
+ margin: 5px;
+ background: #101010;
+ margin-left: 2px;
+}
+
+#workspaces button {
+ color: #babbf1;
+ border-radius: 5px;
+ padding: 0.4rem;
+}
+
+#workspaces button.active {
+ color: #99d1db;
+ border-radius: 5px;
+}
+
+button {
+ background: transparent;
+}
+
+#workspaces button:hover {
+ background: #1e1e1e;
+ border: 0px solid transparent;
+}
+
+#custom-music,
+#tray,
+#backlight,
+#clock,
+#battery,
+#pulseaudio,
+#network,
+#cpu,
+#memory,
+#custom-lock,
+#custom-power,
+#custom-weather,
+#custom-uptime,
+#custom-rss,
+#custom-disc,
+#custom-mic,
+#custom-docker {
+ background-color: #101010;
+ padding: 0.5rem 1rem;
+ margin: 5px 0;
+}
+
+#clock {
+ color: #8caaee;
+ border-radius: 0px;
+}
+
+#custom-weather {
+ color: #8caaee;
+ margin-left: 0.5rem;
+ border-radius: 5px;
+}
+
+#battery {
+ color: #a6d189;
+}
+
+#battery.charging {
+ color: #a6d189;
+}
+
+#battery.warning:not(.charging) {
+ color: #e78284;
+}
+
+#backlight {
+ color: #e5c890;
+}
+
+#backlight,
+#battery {
+ border-radius: 0;
+}
+
+#pulseaudio {
+ color: #ea999c;
+}
+
+#custom-mic{
+ color: #ea999c;
+ border-radius: 5px 0px 0px 5px;
+}
+
+#custom-docker {
+ color: #85c1dc;
+}
+
+#custom-music {
+ color: #ca9ee6;
+ border-radius: 5px;
+}
+
+#custom-lock {
+ color: #babbf1;
+}
+
+#custom-power {
+ margin-right: 1rem;
+ border-radius: 0px 5px 5px 0px;
+ color: #e78284;
+}
+
+#custom-docker.docker {
+ color: #85c1dc;
+}
+
+#custom-docker.docker-none {
+ color: #737994;
+}
+
+#custom-docker.docker-error {
+ color: #e78284;
+}
+
+#custom-weather.clear {
+ color: #e5c890; /* Sunny yellow */
+}
+
+#custom-weather.cloud {
+ color: #99d1db; /* Light blue */
+}
+
+#custom-weather.rain {
+ color: #8caaee; /* Blue */
+}
+
+#custom-weather.snow {
+ color: #c6d0f5; /* White-ish */
+}
+
+#custom-weather.thunder {
+ color: #ca9ee6; /* Purple */
+}
+
+#custom-weather.fog {
+ color: #b0b4bc; /* Gray */
+}
+
+#custom-weather.error {
+ color: #e78284; /* Red */
+}
diff --git a/env/.config/waybar/style.css b/env/.config/waybar/style.css
new file mode 100644
index 0000000..8c9e107
--- /dev/null
+++ b/env/.config/waybar/style.css
@@ -0,0 +1,163 @@
+* {
+ font-family: JetbrainsMono Nerd Font;
+ font-size: 13px;
+ min-height: 0;
+ padding-right: 2px;
+ padding-left: 2px;
+ padding-bottom: 0px;
+}
+
+#waybar {
+ background: transparent;
+ color: #bfbaac;
+ margin: 2px 2px;
+}
+
+#workspaces {
+ border-radius: 5px;
+ margin: 5px;
+ background: #263640;
+ margin-left: 2px;
+}
+
+#workspaces button {
+ color: #696ebf;
+ border-radius: 5px;
+ padding: 0.4rem;
+}
+
+#workspaces button.active {
+ color: #00c5ba;
+ border-radius: 5px;
+}
+
+button {
+ background: transparent;
+}
+
+#workspaces button:hover {
+ background: #4a697d;
+ border: 0px solid transparent;
+}
+
+#custom-music,
+#tray,
+#backlight,
+#clock,
+#battery,
+#pulseaudio,
+#network,
+#cpu,
+#memory,
+#custom-lock,
+#custom-power,
+#custom-weather,
+#custom-uptime,
+#custom-rss,
+#custom-disc,
+#custom-mic,
+#custom-docker {
+ background-color: #263640;
+ padding: 0.5rem 1rem;
+ margin: 5px 0;
+}
+
+#clock {
+ color: #2587cc;
+ border-radius: 0px;
+}
+
+#custom-weather {
+ color: #2587cc;
+ margin-left: 0.5rem;
+ border-radius: 5px;
+}
+
+#battery {
+ color: #a6d189;
+}
+
+#battery.charging {
+ color: #a6d189;
+}
+
+#battery.warning:not(.charging) {
+ color: #e78284;
+}
+
+#backlight {
+ color: #e5c890;
+}
+
+#backlight,
+#battery {
+ border-radius: 0;
+}
+
+#pulseaudio {
+ color: #fa3935;
+}
+
+#custom-mic{
+ color: #fa3935;
+ border-radius: 5px 0px 0px 5px;
+}
+
+#custom-docker {
+ color: #2587cc;
+}
+
+#custom-music {
+ color: #ca9ee6;
+ border-radius: 5px;
+}
+
+#custom-lock {
+ color: #babbf1;
+}
+
+#custom-power {
+ margin-right: 1rem;
+ border-radius: 0px 5px 5px 0px;
+ color: #e78284;
+}
+
+#custom-docker.docker {
+ color: #85c1dc;
+}
+
+#custom-docker.docker-none {
+ color: #737994;
+}
+
+#custom-docker.docker-error {
+ color: #e78284;
+}
+
+#custom-weather.clear {
+ color: #e5c890; /* Sunny yellow */
+}
+
+#custom-weather.cloud {
+ color: #99d1db; /* Light blue */
+}
+
+#custom-weather.rain {
+ color: #8caaee; /* Blue */
+}
+
+#custom-weather.snow {
+ color: #c6d0f5; /* White-ish */
+}
+
+#custom-weather.thunder {
+ color: #ca9ee6; /* Purple */
+}
+
+#custom-weather.fog {
+ color: #b0b4bc; /* Gray */
+}
+
+#custom-weather.error {
+ color: #263640; /* Red */
+} \ No newline at end of file
diff --git a/env/.config/wezterm/colors.lua b/env/.config/wezterm/colors.lua
new file mode 100644
index 0000000..e77256e
--- /dev/null
+++ b/env/.config/wezterm/colors.lua
@@ -0,0 +1,26 @@
+return {
+ foreground = '#e6e6e6',
+ background = '#04000a',
+ cursor_fg = '#fabd2f',
+ selection_bg = '#08000a',
+ ansi = {
+ '#263640',
+ '#d12f2c',
+ '#819400',
+ '#b08500',
+ '#2587cc',
+ '#696ebf',
+ '#289c93',
+ '#bfbaac',
+ },
+ brights = {
+ '#4a697d',
+ '#fa3935',
+ '#a4bd00',
+ '#d9a400',
+ '#09a2f5',
+ '#8086e8',
+ '#00c5ba',
+ '#fdf6e3',
+ }
+} \ No newline at end of file
diff --git a/env/.config/wezterm/reference.lua b/env/.config/wezterm/reference.lua
new file mode 100755
index 0000000..603e272
--- /dev/null
+++ b/env/.config/wezterm/reference.lua
@@ -0,0 +1,319 @@
+local wezterm = require 'wezterm'
+
+local config = {}
+local act = wezterm.action
+config.default_prog = { 'zsh', '-l' } --config.font = wezterm.font 'Classic Console' config.font_size = 15 config.font = wezterm.font 'Source Code Pro'
+-- tab bar
+config.enable_tab_bar = false
+--config.hide_tab_bar_if_only_one_tab = false
+--config.tab_bar_at_bottom = true
+--config.use_fancy_tab_bar = false
+--config.show_tabs_in_tab_bar = true
+--config.show_new_tab_button_in_tab_bar = false
+--config.tab_and_split_indices_are_zero_based = true
+--config.font = wezterm.font 'CozetteVector'
+
+
+-- In newer versions of wezterm, use the config_builder which will
+-- help provide clearer error messages
+--[[
+if wezterm.config_builder then
+ config = wezterm.config_builder()
+end
+--]]
+
+config.font = wezterm.font_with_fallback {
+ 'B612 Mono',
+ --'Inconsolata',
+ -- 'CozetteVector', --has weird offset with japanese. きki becomes せse and vice versa
+ 'JetBrainsMono',
+ 'JetBrainsMono Nerd Font',
+ 'JetBrainsMono Nerd Font Mono',
+ 'IPAGothic',
+ 'FreeMono',
+}
+--config.font = wezterm.font 'Inconsolata'
+config.font_size = 13
+--config.font = wezterm.font 'Caesar Dressing'
+--config.font_size = 13
+
+--config.window_background_image = "/home/iceyrazor/stuff/media/wallpapers/hfdsjkldysa87gr9eahgf4rjek ltjkedjkaslfjd salk 9270221.jpg"
+--[[
+config.window_background_image_hsb = {
+ -- Darken the background image by reducing it to 1/3rd
+ brightness = 0.05,
+
+ -- You can adjust the hue by scaling its value.
+ -- a multiplier of 1.0 leaves the value unchanged.
+ hue = 1.0,
+
+ -- You can adjust the saturation also.
+ saturation = 1.0,
+}
+]]--
+
+config.colors={
+ foreground = '#e6e6e6',
+ --background = '#101010',
+ background = '#04000a',
+ cursor_fg = '#fabd2f',
+ ansi = {
+ '#263640',
+ '#d12f2c',
+ '#819400',
+ '#b08500',
+ '#2587cc',
+ '#696ebf',
+ '#289c93',
+ '#bfbaac',
+ },
+ brights = {
+ '#4a697d',
+ '#fa3935',
+ '#a4bd00',
+ '#d9a400',
+ '#09a2f5',
+ '#8086e8',
+ '#00c5ba',
+ '#fdf6e3',
+ },
+}
+
+config.window_background_opacity = 0.8
+
+local function tab_title(tab_info)
+ local title = tab_info.tab_title
+ -- if the tab title is explicitly set, take that
+ if title and #title > 0 then
+ return title
+ end
+ -- Otherwise, use the title from the active pane
+ -- in that tab
+ return tab_info.active_pane.title
+end
+
+-- The filled in variant of the < symbol
+local SOLID_LEFT_ARROW = wezterm.nerdfonts.pl_right_hard_divider
+
+-- The filled in variant of the > symbol
+local SOLID_RIGHT_ARROW = wezterm.nerdfonts.pl_left_hard_divider
+--[[
+wezterm.on(
+ 'format-tab-title',
+ function(tab, tabs, panes, config2, hover, max_width)
+ local edge_background = '#0b0022'
+ local background = '#1b1032'
+ local foreground = '#808080'
+
+ if tab.is_active then
+ background = '#2b2042'
+ foreground = '#c0c0c0'
+ elseif hover then
+ background = '#3b3052'
+ foreground = '#909090'
+ end
+
+ local edge_foreground = background
+
+ local title = tab_title(tab)
+
+ -- ensure that the titles fit in the available space,
+ -- and that we have room for the edges.
+ title = wezterm.truncate_right(title, max_width - 2)
+
+ return {
+ { Background = { Color = edge_background } },
+ { Foreground = { Color = edge_foreground } },
+ { Text = SOLID_LEFT_ARROW },
+ { Background = { Color = background } },
+ { Foreground = { Color = foreground } },
+ { Text = title },
+ { Background = { Color = edge_background } },
+ { Foreground = { Color = edge_foreground } },
+ { Text = SOLID_RIGHT_ARROW },
+ }
+ end
+)
+--]]
+
+--[[
+local keysmain = {
+ { key = 'h', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Left' },
+ { key = 'h', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Left', 1 } },
+ { key = 'l', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Right' },
+ { key = 'l', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Right', 1 } },
+ { key = 'k', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Up' },
+ { key = 'k', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Up', 1 } },
+ { key = 'j', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Down' },
+ { key = 'j', mods = 'SHIFT|ALT|CTRL', action = act.AdjustPaneSize{ 'Down', 1 } },
+}
+]]--
+
+-- WezTerm Keybindings Documentation by dragonlobster
+-- ===================================================
+-- Leader Key:
+-- The leader key is set to ALT + q, with a timeout of 2000 milliseconds (2 seconds).
+-- To execute any keybinding, press the leader key (ALT + q) first, then the corresponding key.
+
+-- Keybindings:
+-- 1. Tab Management:
+-- - LEADER + c: Create a new tab in the current pane's domain.
+-- - LEADER + x: Close the current pane (with confirmation).
+-- - LEADER + b: Switch to the previous tab.
+-- - LEADER + n: Switch to the next tab.
+-- - LEADER + <number>: Switch to a specific tab (0–9).
+
+-- 2. Pane Splitting:
+-- - LEADER + |: Split the current pane horizontally into two panes.
+-- - LEADER + -: Split the current pane vertically into two panes.
+
+-- 3. Pane Navigation:
+-- - LEADER + h: Move to the pane on the left.
+-- - LEADER + j: Move to the pane below.
+-- - LEADER + k: Move to the pane above.
+-- - LEADER + l: Move to the pane on the right.
+
+-- 4. Pane Resizing:
+-- - LEADER + LeftArrow: Increase the pane size to the left by 5 units.
+-- - LEADER + RightArrow: Increase the pane size to the right by 5 units.
+-- - LEADER + DownArrow: Increase the pane size downward by 5 units.
+-- - LEADER + UpArrow: Increase the pane size upward by 5 units.
+
+-- 5. Status Line:
+-- - The status line indicates when the leader key is active, displaying an ocean wave emoji (🌊).
+
+-- Miscellaneous Configurations:
+-- - Tabs are shown even if there's only one tab.
+-- - The tab bar is located at the bottom of the terminal window.
+-- - Tab and split indices are zero-based.
+
+-- For example, changing the color scheme:
+-- config.color_scheme = "Catppuccin Macchiato"
+-- config.window_decorations = "RESIZE"
+
+-- tmux
+config.leader = { key = "Space", mods = "SHIFT", timrout_milliseconds = 20000 }
+config.keys = {
+ {
+ mods = "LEADER",
+ key = "c",
+ action = wezterm.action.SpawnTab "CurrentPaneDomain",
+ },
+ {
+ mods = "LEADER",
+ key = "x",
+ action = wezterm.action.CloseCurrentPane { confirm = true }
+ },
+ {
+ mods = "LEADER",
+ key = "b",
+ action = wezterm.action.ActivateTabRelative(-1)
+ },
+ {
+ mods = "LEADER",
+ key = "n",
+ action = wezterm.action.ActivateTabRelative(1)
+ },
+ {
+ mods = "LEADER",
+ key = "\\",
+ action = wezterm.action.SplitHorizontal { domain = "CurrentPaneDomain" }
+ },
+ {
+ mods = "LEADER",
+ key = "-",
+ action = wezterm.action.SplitVertical { domain = "CurrentPaneDomain" }
+ },
+ {
+ mods = "LEADER",
+ key = "h",
+ action = wezterm.action.ActivatePaneDirection "Left"
+ },
+ {
+ mods = "LEADER",
+ key = "j",
+ action = wezterm.action.ActivatePaneDirection "Down"
+ },
+ {
+ mods = "LEADER",
+ key = "k",
+ action = wezterm.action.ActivatePaneDirection "Up"
+ },
+ {
+ mods = "LEADER",
+ key = "l",
+ action = wezterm.action.ActivatePaneDirection "Right"
+ },
+ {
+ mods = "LEADER",
+ key = "LeftArrow",
+ action = wezterm.action.AdjustPaneSize { "Left", 5 }
+ },
+ {
+ mods = "LEADER",
+ key = "RightArrow",
+ action = wezterm.action.AdjustPaneSize { "Right", 5 }
+ },
+ {
+ mods = "LEADER",
+ key = "DownArrow",
+ action = wezterm.action.AdjustPaneSize { "Down", 5 }
+ },
+ {
+ mods = "LEADER",
+ key = "UpArrow",
+ action = wezterm.action.AdjustPaneSize { "Up", 5 }
+ },
+}
+
+for i = 1, 9 do
+ -- leader + number to activate that tab
+ table.insert(config.keys, {
+ key = tostring(i),
+ mods = "LEADER",
+ action = wezterm.action.ActivateTab(i-1),
+ })
+end
+
+
+-- tmux status
+wezterm.on("update-right-status", function(window, _)
+ local SOLID_LEFT_ARROW = ""
+ --local ARROW_FOREGROUND = { Foreground = { Color = "#c6a0f6" } }
+ -- local ARROW_FOREGROUND = { Foreground = { Color = "#000000" } }
+ local prefix = ""
+
+ if window:leader_is_active() then
+ prefix = " " .. utf8.char(0x1f30a) -- ocean wave
+ SOLID_LEFT_ARROW = utf8.char(0xe0b2)
+ end
+
+ if window:active_tab():tab_id() ~= 0 then
+ -- ARROW_FOREGROUND = { Foreground = { Color = "#1e2030" } }
+ -- ARROW_FOREGROUND = { Foreground = { Color = "#000000" } }
+ end -- arrow color based on if tab is first pane
+
+ window:set_left_status(wezterm.format {
+ --{ Background = { Color = "#b7bdf8" } },
+ -- { Background = { Color = "#000000" } },
+ { Text = prefix },
+ ARROW_FOREGROUND,
+ { Text = SOLID_LEFT_ARROW }
+ })
+end)
+
+
+config.unix_domains = {
+ {
+ name = 'unix',
+ no_serve_automatically = false,
+ },
+}
+
+-- This causes `wezterm` to act as though it was started as
+-- `wezterm connect unix` by default, connecting to the unix
+-- domain on startup.
+-- If you prefer to connect manually, leave out this line.
+-- config.default_gui_startup_args = { 'connect', 'unix' }
+
+return config
diff --git a/env/.config/wezterm/wezterm.lua b/env/.config/wezterm/wezterm.lua
new file mode 100755
index 0000000..df15edd
--- /dev/null
+++ b/env/.config/wezterm/wezterm.lua
@@ -0,0 +1,31 @@
+local wezterm = require 'wezterm'
+local colors= require 'colors'
+
+local config = {}
+config.default_prog = { 'zsh', '-l' } --config.font = wezterm.font 'Classic Console' config.font_size = 15 config.font = wezterm.font 'Source Code Pro'
+config.enable_tab_bar = false
+
+config.font = wezterm.font_with_fallback {
+ 'B612 Mono',
+ --'Inconsolata',
+ -- 'CozetteVector', --has weird offset with japanese. きki becomes せse and vice versa
+ 'JetBrainsMono',
+ 'JetBrainsMono Nerd Font',
+ 'JetBrainsMono Nerd Font Mono',
+ 'IPAGothic',
+ 'FreeMono',
+}
+config.font_size = 13
+
+config.colors=colors
+
+config.window_background_opacity = 0.8
+
+config.unix_domains = {
+ {
+ name = 'unix',
+ no_serve_automatically = false,
+ },
+}
+
+return config
diff --git a/env/.local/bin/system/backup/backup.sh b/env/.local/bin/system/backup/backup.sh
new file mode 100755
index 0000000..7cbd20b
--- /dev/null
+++ b/env/.local/bin/system/backup/backup.sh
@@ -0,0 +1,31 @@
+cd ~/
+
+fsynca () {
+ # t?
+ rsync -RUurvn --size-only --delete-after $exclude $syncfile "$target"
+}
+
+fsyncb () {
+ printf "===confirm changes?\n"
+ read -p "y/n: " uinput
+ if [ "$uinput" != "n" ] && [ "$uinput" != "N" ]; then
+ printf "\n\n\n"
+ rsync -RUurv --progress --size-only --delete-after $exclude $syncfile "$target"
+ printf "\n===end sync\n---------\n\n"
+ fi
+}
+
+syncfile="stuff .bash_profile .bashrc .surf/styles .gtkrc-2.0 .urlview .vimrc .xinitrc .Xresources .zshrc .p10k.zsh .gnupg .ssh .local/bin/lf-gadgets .config/dwm .config/wezterm .config/.profile .config/tmux .config/wireplumber .config/FreeTube .config/awesome .config/wlxoverlay .config/newsboat .var/app/dev.vencord.Vesktop/config/vesktop/themes .config/fastfetch .config/gtk-3.0 .config/rofi .config/lf .config/mutt .config/zsh .config/picom.conf .config/nvim .config/atuin .config/screenkey.json .config/vesktop/themes .keepass .config/Pinta .config/cmus .config/cava .config/hypr .config/waybar .local/share/applications/custom .local/share/osu"
+
+# se shit
+syncfile="$syncfile /home/iceyrazor/.local/share/Steam/steamapps/compatdata/244850/pfx/drive_c/users/steamuser/AppData/Roaming/SpaceEngineers/Blueprints /home/iceyrazor/.local/share/Steam/steamapps/compatdata/244850/pfx/drive_c/users/steamuser/AppData/Roaming/SpaceEngineers/IngameScripts /home/iceyrazor/.local/share/Steam/steamapps/compatdata/244850/pfx/drive_c/users/steamuser/AppData/Roaming/SpaceEngineers/Saves"
+
+target="/home/iceyrazor/mnt-backups/LINUX FILES/home/iceyrazor"
+exclude="--exclude node_modules --exclude node_modules_23 --exclude dontsync --exclude **/iceys-linux-stuffs --exclude **/target --exclude LinVAM/pyenv"
+
+fsynca
+
+printf "==CC-survival unsynced?\n\n"
+printf "==osu unsynced\n\n"
+
+fsyncb
diff --git a/env/.local/bin/system/backup/copy-to-git.sh b/env/.local/bin/system/backup/copy-to-git.sh
new file mode 100755
index 0000000..212abda
--- /dev/null
+++ b/env/.local/bin/system/backup/copy-to-git.sh
@@ -0,0 +1,21 @@
+cd ~/
+
+fsync () {
+ rsync -RUurvn --delete-after $exclude $syncfile "$target"
+ printf "===commit these changes?\n"
+ read -p "y/n: " uinput
+ if [ "$uinput" != "n" ] && [ "$uinput" != "N" ]; then
+ printf "\n\n\n"
+ rsync -RUurv --progress --delete-after $exclude $syncfile "$target"
+ printf "\n===end sync\n---------\n\n"
+ fi
+}
+
+syncfile=".urlview .vimrc .Xresources .bashrc .zshrc .p10k.zsh .config/.profile .config/wezterm .config/dwm .config/tmux .config/awesome .config/rofi .config/lf .config/cava .config/hypr .config/waybar .config/picom.conf .config/nvim .config/atuin .config/screenkey.json .config/fastfetch stuff/manual-programs/suckless"
+
+syncfile="$syncfile stuff/scripts/system/stbar stuff/scripts/system/url-handler.sh stuff/scripts/system/backup/copy-to-git.sh stuff/scripts/system/backup/backup.sh"
+syncfile="$syncfile stuff/scripts/system/neoboot.sh stuff/scripts/system/math.sh stuff/scripts/system/bri.sh stuff/scripts/system/restart-pipe.sh stuff/scripts/system/set-pri-java.sh"
+target=~/stuff/iceys-linux-stuffs
+exclude="--exclude check_weth.sh --exclude awesome/default --exclude lua-ls-cc-tweaked --exclude .config/nvim/plugin"
+
+fsync
diff --git a/env/.local/bin/system/bri.sh b/env/.local/bin/system/bri.sh
new file mode 100755
index 0000000..b943f30
--- /dev/null
+++ b/env/.local/bin/system/bri.sh
@@ -0,0 +1 @@
+echo "$1" > /sys/class/backlight/intel_backlight/brightness
diff --git a/env/.local/bin/system/math.sh b/env/.local/bin/system/math.sh
new file mode 100755
index 0000000..26d4854
--- /dev/null
+++ b/env/.local/bin/system/math.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+expression=$1
+precision=$2
+
+if [ "$precision" == "" ]; then
+ precision=1;
+fi;
+
+# Perform arithmetic operation using awk
+result=$(awk "BEGIN {printf \"%.${precision}f\n\", $expression}" | sed 's/\.0$//')
+
+# Print the result
+echo "$result"
diff --git a/env/.local/bin/system/neoboot.sh b/env/.local/bin/system/neoboot.sh
new file mode 100755
index 0000000..afe9345
--- /dev/null
+++ b/env/.local/bin/system/neoboot.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+normal_old() {
+ randnum=$(($RANDOM % 2))
+
+ if [ "$randnum" == "1" ]; then
+ fastfetch --localip-show-ipv4 0 | lolcat -S 100 # | lolcat -as 10000 -S 100
+ # fortune | cowsay -f fox | lolcat
+ else
+ # fortune | cowsay -f dragon | lolcat
+ uwufetch | lolcat
+ fi
+ printf "\n--------------------------------------------------------\n" | lolcat
+ lsblk --filter 'NAME=~"sd[abcde]"' -o NAME,MOUNTPOINTS | lolcat
+}
+
+normal() {
+ fastfetch -c $HOME/.config/fastfetch/compact.jsonc
+ printf "\n"
+}
+
+laptop() {
+ if [ "$(($RANDOM % 2))" == "1" ]; then
+ fastfetch --localip-show-ipv4 0 | lolcat -as 10000 -S 100
+ else
+ # uwufetch | lolcat -as 10000 -S 100
+ fastfetch --localip-show-ipv4 0 | lolcat -as 10000 -S 100
+ fi
+ printf "\n--------------------------------------------------------\n" | lolcat -S 100
+ lsblk --filter 'NAME=~"sd[abcde]"' -o NAME,MOUNTPOINTS | lolcat -as 10000 -S 100
+}
+
+if [ -z $(pgrep VRChat) ]; then
+ if [[ "$(cat /etc/hostname)" == "Witchen" ]]; then
+ normal
+ else
+ normal
+ fi
+fi
diff --git a/env/.local/bin/system/restart-pipe.sh b/env/.local/bin/system/restart-pipe.sh
new file mode 100755
index 0000000..ec693dc
--- /dev/null
+++ b/env/.local/bin/system/restart-pipe.sh
@@ -0,0 +1 @@
+systemctl --user restart wireplumber pipewire pipewire-pulse
diff --git a/env/.local/bin/system/set-pri-java.sh b/env/.local/bin/system/set-pri-java.sh
new file mode 100755
index 0000000..35a9769
--- /dev/null
+++ b/env/.local/bin/system/set-pri-java.sh
@@ -0,0 +1 @@
+sudo renice -20 -p $(sudo pidof java)
diff --git a/env/.local/bin/system/start-scripts/autostart.sh b/env/.local/bin/system/start-scripts/autostart.sh
new file mode 100755
index 0000000..3d1d1d6
--- /dev/null
+++ b/env/.local/bin/system/start-scripts/autostart.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+extra=0
+if [ "$(cat /etc/hostname)" == "Kasino" ]; then
+ extra=0
+fi
+if [ "$(cat /etc/hostname)" == "Witchen" ]; then
+ extra=1
+fi
+
+sleep 0.1
+xset s 0
+nitrogen --restore &
+if [ $extra == 1 ]; then
+ xrandr --dpi 90 &
+ xrandr --output Virtual-1 --mode 1920x1080
+fi
+
+if [ -z "$WAYLAND_DISPLAY "]; then
+ xcompmgr &
+fi
+
+if [ $extra == 1 ]; then
+ if [ -z $(pgrep -f stbar.sh) ]; then
+ # ~/stuff/scripts/system/stbar/stbar.sh &
+ echo hall
+ fi
+fi
+
+pipewire & disown
+if [ -z $(pgrep wireplumber) ]; then
+ wireplumber & disown
+fi
+pipewire-pulse & disown
+sleep 0.5s
+
+if [ -z $(pgrep -f newsboat-fetch.sh) ]; then
+ ~/.config/dwm/newsboat-fetch.sh &
+fi
+if [ -z $(pgrep -f lessons-loop.sh) ]; then
+ ~/.config/dwm/lessons-loop.sh &
+fi
+
+if [ -z $(pgrep wezterm) ]; then
+ sleep 2
+ wezterm -e ~/stuff/scripts/system/task.sh &
+fi
+
+if [ "$(cat /etc/hostname)" == "Kasino" ]; then
+ if [ -z "$(pgrep vesktop)" ]; then
+ sleep 2s
+ flatpak run dev.vencord.Vesktop & disown
+ fi
+
+ if [ -z "$(pgrep gajim)" ]; then
+ sleep 2s
+ gajim & disown
+ fi
+
+ if [ -z "$(pgrep steam)" ]; then
+ sleep 3s
+ steam & disown
+ fi
+fi
diff --git a/env/.local/bin/system/start-scripts/lessons-loop.sh b/env/.local/bin/system/start-scripts/lessons-loop.sh
new file mode 100755
index 0000000..b292c65
--- /dev/null
+++ b/env/.local/bin/system/start-scripts/lessons-loop.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+newsboat_loop(){
+ notify-send -t 6000 -i '/home/iceyrazor/stuff/media/saved gifs/duolingo-crop-s.jpg' "Anki" "did you do your japanese lessons today?"
+ sleep 2h
+ newsboat_loop
+}
+newsboat_loop
diff --git a/env/.local/bin/system/start-scripts/newsboat-fetch.sh b/env/.local/bin/system/start-scripts/newsboat-fetch.sh
new file mode 100755
index 0000000..5534489
--- /dev/null
+++ b/env/.local/bin/system/start-scripts/newsboat-fetch.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+newsboat_loop(){
+ newsboat -x reload
+ #newsboat -x print-unread | xargs -0 notify-send "newsboat feed"
+
+ unreads=$(newsboat -x print-unread)
+ unreadnum=$(printf "$unreads" | sed 's/ .*//g')
+
+ if (( $unreadnum > 0 )); then
+ notify-send "newsboat feed" "$unreads"
+ fi
+ notify-send "Vitamins!" "take them"
+ sleep 2h
+ newsboat_loop
+}
+newsboat_loop
diff --git a/env/.local/bin/system/stbar/config.txt b/env/.local/bin/system/stbar/config.txt
new file mode 100644
index 0000000..87af9d5
--- /dev/null
+++ b/env/.local/bin/system/stbar/config.txt
@@ -0,0 +1 @@
+full_stat:false
diff --git a/env/.local/bin/system/stbar/killbar.sh b/env/.local/bin/system/stbar/killbar.sh
new file mode 100755
index 0000000..7e76af2
--- /dev/null
+++ b/env/.local/bin/system/stbar/killbar.sh
@@ -0,0 +1,10 @@
+pids=$(ps -AO pid | awk '/stbar.sh|newsboat-fetch.sh/ {print $1}')
+# pids=$(pstree -pla | grep stbar | sed 's,|,,g' | sed 's/ //g' | sed 's/^ //g' | sed 's/ .*//' | sed 's/[^0-9]*//g')
+# pids2=$(ps -AO pid | grep "sh ./newsboat-fetch.sh" | sed 's/S.*//g' | sed 's/^ *//g')
+
+
+echo $pids
+$(sleep 3 && xsetroot -name "") & disown
+
+sudo kill -KILL $pids
+doas kill -KILL $pids
diff --git a/env/.local/bin/system/stbar/stbar-awesome.sh b/env/.local/bin/system/stbar/stbar-awesome.sh
new file mode 100755
index 0000000..ef9ecca
--- /dev/null
+++ b/env/.local/bin/system/stbar/stbar-awesome.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+delim='|'
+
+curr_dir="$(cd "$(dirname "$0")" && pwd)"
+#wifi_device=$(cat $curr_dir/config.txt | grep wifi_device | sed 's/wifi_device://')
+wifi_device="wlan0"
+# curr_dir/check_weth.sh "$cur_dir" &
+
+
+
+status(){
+
+echo " "
+
+#wifi up or no
+sed "s/down/\:\(/;s/up/\:\)/" /sys/class/net/$wifi_device/operstate
+
+echo "$delim"
+
+if [ "$(ls /sys/class/power_supply/BAT0/)" ]; then
+ bat_power=$(cat /sys/class/power_supply/BAT0/capacity)
+
+ echo $bat_is_flash
+ if (( $bat_power < 15 )); then
+ bat_power=$bat_power%!!!!!!!!!!!
+ else
+ bat_power=$bat_power%
+ fi
+
+ echo $bat_power
+
+ echo "$delim"
+fi
+
+#mic
+
+[ "$(pactl get-source-mute @DEFAULT_SOURCE@)" == "Mute: no" ] && echo  || echo 󰍭
+
+echo "$delim"
+
+#rss
+
+echo  $(newsboat -x print-unread|sed "s/\s.*//; s/Error:/IA/")
+
+echo "$delim"
+
+if [ "$(cat $curr_dir/config.txt | grep full_stat)" == "full_stat:true" ]; then
+ #cpu
+ echo  $(ps axch -o cmd:15,%cpu --sort=-%cpu | sed "1q")%
+
+ echo "$delim"
+
+ #mem
+ echo  $(free -mlw | grep Mem: | sed "s/Mem\:\W*[0-9]*\W*//; s/ .*//")
+ echo $(ps axch -o cmd:15,%mem --sort=-%mem | sed "1q")%
+
+else
+ #cpu
+ echo  $(ps axch -o cmd:15,%cpu --sort=-%cpu | sed "1q" | sed 's/.* //')%
+
+ #mem
+ echo  $(free -mlw | grep Mem: | sed "s/Mem\:\W*[0-9]*\W*//; s/ .*//")
+
+fi
+echo "$delim"
+
+#space
+#echo \/$(df -h | grep /dev/nvme0n1p3 | sed "s/\/dev\/nvme0n1p3 *[0-9]*.[0-9]*. *[0-9]*.[0-9]*. *//" | sed "s/ .*//")
+
+#echo \~$(df -h | grep /dev/nvme0n1p4 | sed "s/\/dev\/nvme0n1p4 *[0-9]*.[0-9]*. *[0-9]*.[0-9]*. *//" | sed "s/ .*//")
+echo  $(df -h -x=used /dev/mapper/artix-root | sed '1d' | awk '{print $4}'| sed 's/[^0-9]*//g')
+
+echo "$delim"
+
+#weather
+
+if [ "$(cat $curr_dir/weth_str.txt)" != "" ]; then
+ printf "$(cat $curr_dir/weth_str.txt)"
+ echo "$delim"
+fi
+
+}
+
+#while :; do
+ echo "$(status | tr '\n' ' '0)"
+# sleep 1s
+#end
diff --git a/env/.local/bin/system/stbar/stbar.sh b/env/.local/bin/system/stbar/stbar.sh
new file mode 100755
index 0000000..6ca704d
--- /dev/null
+++ b/env/.local/bin/system/stbar/stbar.sh
@@ -0,0 +1,84 @@
+#!/bin/bash
+delim='|'
+
+curr_dir="$(cd "$(dirname "$0")" && pwd)"
+wifi_device=$(cat $curr_dir/config.txt | grep wifi_device | sed 's/wifi_device://')
+# curr_dir/check_weth.sh "$cur_dir" &
+
+
+
+status(){
+
+echo " "
+
+#wifi up or no
+sed "s/down/\:\(/;s/up/\:\)/" /sys/class/net/$wifi_device/operstate
+
+echo "$delim"
+
+#bat
+bat_power=$(cat /sys/class/power_supply/BAT0/capacity)
+
+echo $bat_is_flash
+if (( $bat_power < 15 )); then
+ bat_power=$bat_power%!!!!!!!!!!!
+else
+ bat_power=$bat_power%
+fi
+
+echo $bat_power
+
+echo "$delim"
+
+#rss
+
+echo RSS:$(newsboat -x print-unread|sed "s/\s.*//; s/Error:/IA/")
+
+echo "$delim"
+
+if [ "$(cat $curr_dir/config.txt | grep full_stat)" == "full_stat:true" ]; then
+ #cpu
+ echo CPU:$(ps axch -o cmd:15,%cpu --sort=-%cpu | sed "1q")%
+
+ echo "$delim"
+
+ #mem
+ echo Mem:$(free -mlw | grep Mem: | sed "s/Mem\:\W*[0-9]*\W*//; s/ .*//")
+ echo $(ps axch -o cmd:15,%mem --sort=-%mem | sed "1q")%
+
+else
+ #cpu
+ echo CPU:$(ps axch -o cmd:15,%cpu --sort=-%cpu | sed "1q" | sed 's/.* //')%
+
+ #mem
+ echo Mem:$(free -mlw | grep Mem: | sed "s/Mem\:\W*[0-9]*\W*//; s/ .*//")
+
+fi
+echo "$delim"
+
+#space
+echo \/$(df -h | grep /dev/nvme0n1p3 | sed "s/\/dev\/nvme0n1p3 *[0-9]*.[0-9]*. *[0-9]*.[0-9]*. *//" | sed "s/ .*//")
+
+echo \~$(df -h | grep /dev/nvme0n1p4 | sed "s/\/dev\/nvme0n1p4 *[0-9]*.[0-9]*. *[0-9]*.[0-9]*. *//" | sed "s/ .*//")
+
+echo "$delim"
+
+#weather
+
+if [ "$(cat $curr_dir/weth_str.txt)" != "" ]; then
+ printf "$(cat $curr_dir/weth_str.txt)"
+ echo "$delim"
+fi
+
+
+#date
+date '+%a %m/%d/%Y %I:%M%p'
+
+}
+
+
+while :; do
+ xsetroot -name "$(status | tr '\n' ' '0)"
+ sleep 1s
+done
+
diff --git a/env/.local/bin/system/stbar/weth_str.txt b/env/.local/bin/system/stbar/weth_str.txt
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/env/.local/bin/system/stbar/weth_str.txt
diff --git a/env/.local/bin/system/url-handler.sh b/env/.local/bin/system/url-handler.sh
new file mode 100755
index 0000000..54f4af4
--- /dev/null
+++ b/env/.local/bin/system/url-handler.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+url=$@
+prompt_message="Open with:"
+
+echo $url
+
+choices="
+clipboard
+browser/xdg-open
+"
+
+choice=$(echo "$choices" | sed /^$/d | rofi -dmenu "$prompt_message")
+choice=$(echo "$choice" | sed -e 's/browser\/xdg-open/xdg-open/')
+
+if [ "$choice" == "clipboard" ]; then
+ if [ -z $WAYLAND_DISPLAY ]; then
+ printf "$url" | xclip -selection clipboard
+ else
+ printf "$url" | wl-copy
+ fi
+else
+ $choice "$url" & disown
+fi
diff --git a/env/.p10k.zsh b/env/.p10k.zsh
new file mode 100644
index 0000000..0641dde
--- /dev/null
+++ b/env/.p10k.zsh
@@ -0,0 +1,1739 @@
+# Generated by Powerlevel10k configuration wizard on 2025-01-08 at 03:10 CST.
+# Based on romkatv/powerlevel10k/config/p10k-classic.zsh, checksum 13396.
+# Wizard options: nerdfont-v3 + powerline, small icons, classic, unicode, dark,
+# angled separators, sharp heads, slanted tails, 1 line, sparse, few icons, concise,
+# transient_prompt, instant_prompt=verbose.
+# Type `p10k configure` to generate another config.
+#
+# Config for Powerlevel10k with classic powerline prompt style. Type `p10k configure` to generate
+# your own config based on it.
+#
+# Tip: Looking for a nice color? Here's a one-liner to print colormap.
+#
+# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
+
+# Temporarily change options.
+'builtin' 'local' '-a' 'p10k_config_opts'
+[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
+[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
+[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
+'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
+
+() {
+ emulate -L zsh -o extended_glob
+
+ # Unset all configuration options. This allows you to apply configuration changes without
+ # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
+ unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
+
+ # Zsh >= 5.1 is required.
+ [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
+
+ # The list of segments shown on the left. Fill it with the most important segments.
+ typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
+ os_icon # os identifier
+ dir # current directory
+ vcs # git status
+ #prompt_char # prompt symbol
+ )
+
+ # The list of segments shown on the right. Fill it with less important segments.
+ # Right prompt on the last prompt line (where you are typing your commands) gets
+ # automatically hidden when the input line reaches it. Right prompt above the
+ # last prompt line gets hidden if it would overlap with left prompt.
+ typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
+ status # exit code of the last command
+ command_execution_time # duration of the last command
+ background_jobs # presence of background jobs
+ direnv # direnv status (https://direnv.net/)
+ asdf # asdf version manager (https://github.com/asdf-vm/asdf)
+ virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html)
+ anaconda # conda environment (https://conda.io/)
+ pyenv # python environment (https://github.com/pyenv/pyenv)
+ goenv # go environment (https://github.com/syndbg/goenv)
+ nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
+ nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
+ nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
+ # node_version # node.js version
+ # go_version # go version (https://golang.org)
+ # rust_version # rustc version (https://www.rust-lang.org)
+ # dotnet_version # .NET version (https://dotnet.microsoft.com)
+ # php_version # php version (https://www.php.net/)
+ # laravel_version # laravel php framework version (https://laravel.com/)
+ # java_version # java version (https://www.java.com/)
+ # package # name@version from package.json (https://docs.npmjs.com/files/package.json)
+ rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv)
+ rvm # ruby version from rvm (https://rvm.io)
+ fvm # flutter version management (https://github.com/leoafarias/fvm)
+ luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv)
+ jenv # java version from jenv (https://github.com/jenv/jenv)
+ plenv # perl version from plenv (https://github.com/tokuhirom/plenv)
+ perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
+ phpenv # php version from phpenv (https://github.com/phpenv/phpenv)
+ scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
+ haskell_stack # haskell version from stack (https://haskellstack.org/)
+ kubecontext # current kubernetes context (https://kubernetes.io/)
+ terraform # terraform workspace (https://www.terraform.io)
+ # terraform_version # terraform version (https://www.terraform.io)
+ aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
+ aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
+ azure # azure account name (https://docs.microsoft.com/en-us/cli/azure)
+ gcloud # google cloud cli account and project (https://cloud.google.com/)
+ google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production)
+ toolbox # toolbox name (https://github.com/containers/toolbox)
+ context # user@hostname
+ nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
+ ranger # ranger shell (https://github.com/ranger/ranger)
+ yazi # yazi shell (https://github.com/sxyazi/yazi)
+ nnn # nnn shell (https://github.com/jarun/nnn)
+ lf # lf shell (https://github.com/gokcehan/lf)
+ xplr # xplr shell (https://github.com/sayanarijit/xplr)
+ vim_shell # vim shell indicator (:sh)
+ midnight_commander # midnight commander shell (https://midnight-commander.org/)
+ nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
+ chezmoi_shell # chezmoi shell (https://www.chezmoi.io/)
+ vi_mode # vi mode (you don't need this if you've enabled prompt_char)
+ # vpn_ip # virtual private network indicator
+ # load # CPU load
+ # disk_usage # disk usage
+ # ram # free RAM
+ # swap # used swap
+ todo # todo items (https://github.com/todotxt/todo.txt-cli)
+ timewarrior # timewarrior tracking status (https://timewarrior.net/)
+ taskwarrior # taskwarrior task count (https://taskwarrior.org/)
+ per_directory_history # Oh My Zsh per-directory-history local/global indicator
+ # cpu_arch # CPU architecture
+ # time # current time
+ # ip # ip address and bandwidth usage for a specified network interface
+ # public_ip # public IP address
+ # proxy # system-wide http/https/ftp proxy
+ # battery # internal battery
+ # wifi # wifi speed
+ # example # example user-defined segment (see prompt_example function below)
+ )
+
+ # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
+ typeset -g POWERLEVEL9K_MODE=nerdfont-v3
+ # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
+ # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
+ typeset -g POWERLEVEL9K_ICON_PADDING=none
+
+ # When set to true, icons appear before content on both sides of the prompt. When set
+ # to false, icons go after content. If empty or not set, icons go before content in the left
+ # prompt and after content in the right prompt.
+ #
+ # You can also override it for a specific segment:
+ #
+ # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
+ #
+ # Or for a specific segment in specific state:
+ #
+ # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
+ typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=
+
+ # Add an empty line before each prompt.
+ typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
+
+ # Connect left prompt lines with these symbols. You'll probably want to use the same color
+ # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below.
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%240F╭─'
+ typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%240F├─'
+ typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%240F╰─'
+ # Connect right prompt lines with these symbols.
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%240F─╮'
+ typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%240F─┤'
+ typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%240F─╯'
+
+ # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or
+ # '─'. The last two make it easier to see the alignment between left and right prompt and to
+ # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
+ # for more compact prompt if using this option.
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND=
+ typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND=
+ if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
+ # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE
+ # ornaments defined above.
+ typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=240
+ # Start filler from the edge of the screen if there are no left segments on the first line.
+ typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
+ # End filler on the edge of the screen if there are no right segments on the first line.
+ typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
+ fi
+
+ # Default background color.
+ typeset -g POWERLEVEL9K_BACKGROUND=236
+
+ # Separator between same-color segments on the left.
+ typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%244F\uE0B1'
+ # Separator between same-color segments on the right.
+ typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%244F\uE0B3'
+ # Separator between different-color segments on the left.
+ typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
+ # Separator between different-color segments on the right.
+ typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
+ # To remove a separator between two segments, add "_joined" to the second segment name.
+ # For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined)
+
+ # The right end of left prompt.
+ typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0'
+ # The left end of right prompt.
+ typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2'
+ # The left end of left prompt.
+ typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0BA'
+ # The right end of right prompt.
+ typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0BC'
+ # Left prompt terminator for lines without any segments.
+ typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
+
+ #################################[ os_icon: os identifier ]##################################
+ # OS identifier color.
+ typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=255
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
+
+ ################################[ prompt_char: prompt symbol ]################################
+ # Transparent background.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND=
+ # Green prompt symbol if the last command succeeded.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
+ # Red prompt symbol if the last command failed.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
+ # Default prompt symbol.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
+ # Prompt symbol in command vi mode.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
+ # Prompt symbol in visual vi mode.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
+ # Prompt symbol in overwrite vi mode.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
+ # No line terminator if prompt_char is the last segment.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
+ # No line introducer if prompt_char is the first segment.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
+ # No surrounding whitespace.
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE=
+
+ ##################################[ dir: current directory ]##################################
+ # Default current directory color.
+ typeset -g POWERLEVEL9K_DIR_FOREGROUND=31
+ # If directory is too long, shorten some of its segments to the shortest possible unique
+ # prefix. The shortened directory can be tab-completed to the original.
+ typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
+ # Replace removed segment suffixes with this symbol.
+ typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
+ # Color of the shortened directory segments.
+ typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
+ # Color of the anchor directory segments. Anchor segments are never shortened. The first
+ # segment is always an anchor.
+ typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39
+ # Display anchor directory segments in bold.
+ typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
+ # Don't shorten directories that contain any of these files. They are anchors.
+ local anchor_files=(
+ .bzr
+ .citc
+ .git
+ .hg
+ .node-version
+ .python-version
+ .go-version
+ .ruby-version
+ .lua-version
+ .java-version
+ .perl-version
+ .php-version
+ .tool-versions
+ .mise.toml
+ .shorten_folder_marker
+ .svn
+ .terraform
+ CVS
+ Cargo.toml
+ composer.json
+ go.mod
+ package.json
+ stack.yaml
+ )
+ typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
+ # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
+ # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
+ # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
+ # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
+ # and other directories don't.
+ #
+ # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
+ # This moves the truncation point to the right (positive offset) or to the left (negative offset)
+ # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
+ # respectively.
+ typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
+ # Don't shorten this many last directory segments. They are anchors.
+ typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
+ # Shorten directory if it's longer than this even if there is space for it. The value can
+ # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
+ # directory will be shortened only when prompt doesn't fit or when other parameters demand it
+ # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
+ # If set to `0`, directory will always be shortened to its minimum length.
+ typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
+ # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
+ # many columns for typing commands.
+ typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
+ # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
+ # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
+ typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
+ # If set to true, embed a hyperlink into the directory. Useful for quickly
+ # opening a directory in the file manager simply by clicking the link.
+ # Can also be handy when the directory is shortened, as it allows you to see
+ # the full directory that was used in previous commands.
+ typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
+
+ # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
+ # and POWERLEVEL9K_DIR_CLASSES below.
+ typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
+
+ # The default icon shown next to non-writable and non-existent directories when
+ # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
+ # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
+
+ # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
+ # directories. It must be an array with 3 * N elements. Each triplet consists of:
+ #
+ # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with
+ # extended_glob option enabled.
+ # 2. Directory class for the purpose of styling.
+ # 3. An empty string.
+ #
+ # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
+ #
+ # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
+ # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
+ #
+ # For example, given these settings:
+ #
+ # typeset -g POWERLEVEL9K_DIR_CLASSES=(
+ # '~/work(|/*)' WORK ''
+ # '~(|/*)' HOME ''
+ # '*' DEFAULT '')
+ #
+ # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
+ # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
+ # WORK_NON_EXISTENT.
+ #
+ # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
+ # option to define custom colors and icons for different directory classes.
+ #
+ # # Styling for WORK.
+ # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
+ # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
+ # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
+ #
+ # # Styling for WORK_NOT_WRITABLE.
+ # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31
+ # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
+ # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
+ #
+ # # Styling for WORK_NON_EXISTENT.
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
+ # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
+ #
+ # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
+ # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
+ # back to POWERLEVEL9K_DIR_FOREGROUND.
+ #
+ typeset -g POWERLEVEL9K_DIR_CLASSES=()
+
+ # Custom prefix.
+ # typeset -g POWERLEVEL9K_DIR_PREFIX='%246Fin '
+
+ #####################################[ vcs: git status ]######################################
+ # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
+ typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
+
+ # Untracked files icon. It's really a question mark, your font isn't broken.
+ # Change the value of this parameter to show a different icon.
+ typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
+
+ # Formatter for Git status.
+ #
+ # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
+ #
+ # You can edit the function to customize how Git status looks.
+ #
+ # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
+ # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
+ function my_git_formatter() {
+ emulate -L zsh
+
+ if [[ -n $P9K_CONTENT ]]; then
+ # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
+ # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
+ typeset -g my_git_format=$P9K_CONTENT
+ return
+ fi
+
+ if (( $1 )); then
+ # Styling for up-to-date Git status.
+ local meta='%246F' # grey foreground
+ local clean='%76F' # green foreground
+ local modified='%178F' # yellow foreground
+ local untracked='%39F' # blue foreground
+ local conflicted='%196F' # red foreground
+ else
+ # Styling for incomplete and stale Git status.
+ local meta='%244F' # grey foreground
+ local clean='%244F' # grey foreground
+ local modified='%244F' # grey foreground
+ local untracked='%244F' # grey foreground
+ local conflicted='%244F' # grey foreground
+ fi
+
+ local res
+
+ if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
+ local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
+ # If local branch name is at most 32 characters long, show it in full.
+ # Otherwise show the first 12 … the last 12.
+ # Tip: To always show local branch name in full without truncation, delete the next line.
+ (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line
+ res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
+ fi
+
+ if [[ -n $VCS_STATUS_TAG
+ # Show tag only if not on a branch.
+ # Tip: To always show tag, delete the next line.
+ && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line
+ ]]; then
+ local tag=${(V)VCS_STATUS_TAG}
+ # If tag name is at most 32 characters long, show it in full.
+ # Otherwise show the first 12 … the last 12.
+ # Tip: To always show tag name in full without truncation, delete the next line.
+ (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line
+ res+="${meta}#${clean}${tag//\%/%%}"
+ fi
+
+ # Display the current Git commit if there is no branch and no tag.
+ # Tip: To always display the current Git commit, delete the next line.
+ [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line
+ res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
+
+ # Show tracking branch name if it differs from local branch.
+ if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
+ res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
+ fi
+
+ # Display "wip" if the latest commit's summary contains "wip" or "WIP".
+ if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
+ res+=" ${modified}wip"
+ fi
+
+ if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
+ # ⇣42 if behind the remote.
+ (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
+ # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
+ (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
+ (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
+ elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
+ # Tip: Uncomment the next line to display '=' if up to date with the remote.
+ # res+=" ${clean}="
+ fi
+
+ # ⇠42 if behind the push remote.
+ (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
+ (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
+ # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
+ (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
+ # *42 if have stashes.
+ (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
+ # 'merge' if the repo is in an unusual state.
+ [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
+ # ~42 if have merge conflicts.
+ (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
+ # +42 if have staged changes.
+ (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
+ # !42 if have unstaged changes.
+ (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
+ # ?42 if have untracked files. It's really a question mark, your font isn't broken.
+ # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
+ # Remove the next line if you don't want to see untracked files at all.
+ (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
+ # "─" if the number of unstaged files is unknown. This can happen due to
+ # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
+ # than the number of files in the Git index, or due to bash.showDirtyState being set to false
+ # in the repository config. The number of staged and untracked files may also be unknown
+ # in this case.
+ (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─"
+
+ typeset -g my_git_format=$res
+ }
+ functions -M my_git_formatter 2>/dev/null
+
+ # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
+ # more than this many files in the index. Negative value means infinity.
+ #
+ # If you are working in Git repositories with tens of millions of files and seeing performance
+ # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
+ # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
+ # config: `git config bash.showDirtyState false`.
+ typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
+
+ # Don't show Git status in prompt for repositories whose workdir matches this pattern.
+ # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
+ # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
+ typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
+
+ # Disable the default Git status formatting.
+ typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
+ # Install our own Git status formatter.
+ typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
+ typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
+ # Enable counters for staged, unstaged, etc.
+ typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
+
+ # Icon color.
+ typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76
+ typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244
+ # Custom icon.
+ typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION=
+ # Custom prefix.
+ # typeset -g POWERLEVEL9K_VCS_PREFIX='%246Fon '
+
+ # Show status of repositories of these types. You can add svn and/or hg if you are
+ # using them. If you do, your prompt may become slow even when your current directory
+ # isn't in an svn or hg reposotiry.
+ typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
+
+ # These settings are used for repositories other than Git or when gitstatusd fails and
+ # Powerlevel10k has to fall back to using vcs_info.
+ typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
+ typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
+ typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
+
+ ##########################[ status: exit code of the last command ]###########################
+ # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
+ # style them independently from the regular OK and ERROR state.
+ typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
+
+ # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
+ # it will signify success by turning green.
+ typeset -g POWERLEVEL9K_STATUS_OK=true
+ typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70
+ typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
+
+ # Status when some part of a pipe command fails but the overall exit status is zero. It may look
+ # like this: 1|0.
+ typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
+ typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70
+ typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
+
+ # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
+ # it will signify error by turning red.
+ typeset -g POWERLEVEL9K_STATUS_ERROR=true
+ typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160
+ typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
+
+ # Status when the last command was terminated by a signal.
+ typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
+ typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160
+ # Use terse signal names: "INT" instead of "SIGINT(2)".
+ typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
+ typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
+
+ # Status when some part of a pipe command fails and the overall exit status is also non-zero.
+ # It may look like this: 1|0.
+ typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
+ typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160
+ typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
+
+ ###################[ command_execution_time: duration of the last command ]###################
+ # Show duration of the last command if takes at least this many seconds.
+ typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
+ # Show this many fractional digits. Zero means round to seconds.
+ typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
+ # Execution time color.
+ typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=248
+ # Duration format: 1d 2h 3m 4s.
+ typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
+ # Custom icon.
+ typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION=
+ # Custom prefix.
+ # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%246Ftook '
+
+ #######################[ background_jobs: presence of background jobs ]#######################
+ # Don't show the number of background jobs.
+ typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
+ # Background jobs color.
+ typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=37
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #######################[ direnv: direnv status (https://direnv.net/) ]########################
+ # Direnv color.
+ typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
+ # Default asdf color. Only used to display tools for which there is no color override (see below).
+ # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND.
+ typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66
+
+ # There are four parameters that can be used to hide asdf tools. Each parameter describes
+ # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at
+ # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to
+ # hide a tool, it gets shown.
+ #
+ # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and
+ # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands:
+ #
+ # asdf local python 3.8.1
+ # asdf global python 3.8.1
+ #
+ # After running both commands the current python version is 3.8.1 and its source is "local" as
+ # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false,
+ # it'll hide python version in this case because 3.8.1 is the same as the global version.
+ # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't
+ # contain "local".
+
+ # Hide tool versions that don't come from one of these sources.
+ #
+ # Available sources:
+ #
+ # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable"
+ # - local `asdf current` says "set by /some/not/home/directory/file"
+ # - global `asdf current` says "set by /home/username/file"
+ #
+ # Note: If this parameter is set to (shell local global), it won't hide tools.
+ # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES.
+ typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global)
+
+ # If set to false, hide tool versions that are the same as global.
+ #
+ # Note: The name of this parameter doesn't reflect its meaning at all.
+ # Note: If this parameter is set to true, it won't hide tools.
+ # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW.
+ typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false
+
+ # If set to false, hide tool versions that are equal to "system".
+ #
+ # Note: If this parameter is set to true, it won't hide tools.
+ # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM.
+ typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
+
+ # If set to non-empty value, hide tools unless there is a file matching the specified file pattern
+ # in the current directory, or its parent directory, or its grandparent directory, and so on.
+ #
+ # Note: If this parameter is set to empty value, it won't hide tools.
+ # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
+ # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB.
+ #
+ # Example: Hide nodejs version when there is no package.json and no *.js files in the current
+ # directory, in `..`, in `../..` and so on.
+ #
+ # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json'
+ typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB=
+
+ # Ruby version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168
+ # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Python version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37
+ # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Go version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37
+ # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Node.js version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70
+ # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Rust version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37
+ # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # .NET Core version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134
+ # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Flutter version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38
+ # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Lua version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32
+ # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Java version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32
+ # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Perl version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67
+ # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Erlang version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125
+ # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Elixir version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129
+ # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Postgres version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31
+ # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # PHP version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99
+ # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Haskell version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172
+ # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ # Julia version from asdf.
+ typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70
+ # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
+
+ ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
+ # NordVPN connection indicator color.
+ typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
+ # Hide NordVPN connection indicator when not connected.
+ typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
+ typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
+ # Ranger shell color.
+ typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ####################[ yazi: yazi shell (https://github.com/sxyazi/yazi) ]#####################
+ # Yazi shell color.
+ typeset -g POWERLEVEL9K_YAZI_FOREGROUND=178
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_YAZI_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
+ # Nnn shell color.
+ typeset -g POWERLEVEL9K_NNN_FOREGROUND=72
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
+ # lf shell color.
+ typeset -g POWERLEVEL9K_LF_FOREGROUND=72
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
+ # xplr shell color.
+ typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###########################[ vim_shell: vim shell indicator (:sh) ]###########################
+ # Vim shell indicator color.
+ typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]######
+ # Midnight Commander shell color.
+ typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]##
+ # Nix shell color.
+ typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74
+
+ # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
+ # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
+
+ # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
+ # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
+ # chezmoi shell color.
+ typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##################################[ disk_usage: disk usage ]##################################
+ # Colors for different levels of disk usage.
+ typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35
+ typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220
+ typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160
+ # Thresholds for different levels of disk usage (percentage points).
+ typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90
+ typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95
+ # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent.
+ typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]###########
+ # Text and color for normal (a.k.a. command) vi mode.
+ typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL
+ typeset -g POWERLEVEL9K_VI_MODE_NORMAL_FOREGROUND=106
+ # Text and color for visual vi mode.
+ typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL
+ typeset -g POWERLEVEL9K_VI_MODE_VISUAL_FOREGROUND=68
+ # Text and color for overtype (a.k.a. overwrite and replace) vi mode.
+ typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE
+ typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_FOREGROUND=172
+ # Text and color for insert vi mode.
+ typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING=
+ typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=66
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_VI_MODE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ######################################[ ram: free RAM ]#######################################
+ # RAM color.
+ typeset -g POWERLEVEL9K_RAM_FOREGROUND=66
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #####################################[ swap: used swap ]######################################
+ # Swap color.
+ typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ######################################[ load: CPU load ]######################################
+ # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
+ typeset -g POWERLEVEL9K_LOAD_WHICH=5
+ # Load color when load is under 50%.
+ typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66
+ # Load color when load is between 50% and 70%.
+ typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178
+ # Load color when load is over 70%.
+ typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################
+ # Todo color.
+ typeset -g POWERLEVEL9K_TODO_FOREGROUND=110
+ # Hide todo when the total number of tasks is zero.
+ typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true
+ # Hide todo when the number of tasks after filtering is zero.
+ typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false
+
+ # Todo format. The following parameters are available within the expansion.
+ #
+ # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks.
+ # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering.
+ #
+ # These variables correspond to the last line of the output of `todo.sh -p ls`:
+ #
+ # TODO: 24 of 42 tasks shown
+ #
+ # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT.
+ #
+ # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT'
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############
+ # Timewarrior color.
+ typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110
+ # If the tracked task is longer than 24 characters, truncate and append "…".
+ # Tip: To always display tasks without truncation, delete the following parameter.
+ # Tip: To hide task names and display just the icon when time tracking is enabled, set the
+ # value of the following parameter to "".
+ typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}'
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
+ # Taskwarrior color.
+ typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74
+
+ # Taskwarrior segment format. The following parameters are available within the expansion.
+ #
+ # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`.
+ # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`.
+ #
+ # Zero values are represented as empty parameters.
+ #
+ # The default format:
+ #
+ # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT'
+ #
+ # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT'
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
+ # Color when using local/global history.
+ typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135
+ typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130
+
+ # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
+ # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
+ # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ################################[ cpu_arch: CPU architecture ]################################
+ # CPU architecture color.
+ typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172
+
+ # Hide the segment when on a specific CPU architecture.
+ # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
+ # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##################################[ context: user@hostname ]##################################
+ # Context color when running with privileges.
+ typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
+ # Context color in SSH without privileges.
+ typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=180
+ # Default context color (no privileges, no SSH).
+ typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180
+
+ # Context format when running with privileges: bold user@hostname.
+ typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m'
+ # Context format when in SSH without privileges: user@hostname.
+ typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m'
+ # Default context format (no privileges, no SSH): user@hostname.
+ typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
+
+ # Don't show context unless running with privileges or in SSH.
+ # Tip: Remove the next line to always show context.
+ #typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # Custom prefix.
+ # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%246Fwith '
+
+ ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
+ # Python virtual environment color.
+ typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
+ # Don't show Python version next to the virtual environment name.
+ typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
+ # If set to "false", won't show virtualenv if pyenv is already shown.
+ # If set to "if-different", won't show virtualenv if it's the same as pyenv.
+ typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
+ # Separate environment name from Python version only with a space.
+ typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #####################[ anaconda: conda environment (https://conda.io/) ]######################
+ # Anaconda environment color.
+ typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
+
+ # Anaconda segment format. The following parameters are available within the expansion.
+ #
+ # - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment.
+ # - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment.
+ # - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below).
+ # - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version).
+ #
+ # CONDA_PROMPT_MODIFIER can be configured with the following command:
+ #
+ # conda config --set env_prompt '({default_env}) '
+ #
+ # The last argument is a Python format string that can use the following variables:
+ #
+ # - prefix The same as CONDA_PREFIX.
+ # - default_env The same as CONDA_DEFAULT_ENV.
+ # - name The last segment of CONDA_PREFIX.
+ # - stacked_env Comma-separated list of names in the environment stack. The first element is
+ # always the same as default_env.
+ #
+ # Note: '({default_env}) ' is the default value of env_prompt.
+ #
+ # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
+ # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
+ # is empty.
+ typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
+ # Pyenv color.
+ typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37
+ # Hide python version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global)
+ # If set to false, hide python version if it's the same as global:
+ # $(pyenv version-name) == $(pyenv global).
+ typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide python version if it's equal to "system".
+ typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true
+
+ # Pyenv segment format. The following parameters are available within the expansion.
+ #
+ # - P9K_CONTENT Current pyenv environment (pyenv version-name).
+ # - P9K_PYENV_PYTHON_VERSION Current python version (python --version).
+ #
+ # The default format has the following logic:
+ #
+ # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
+ # starts with "$P9K_PYENV_PYTHON_VERSION/".
+ # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
+ typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################
+ # Goenv color.
+ typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37
+ # Hide go version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global)
+ # If set to false, hide go version if it's the same as global:
+ # $(goenv version-name) == $(goenv global).
+ typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide go version if it's equal to "system".
+ typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
+ # Nodenv color.
+ typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70
+ # Hide node version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global)
+ # If set to false, hide node version if it's the same as global:
+ # $(nodenv version-name) == $(nodenv global).
+ typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide node version if it's equal to "system".
+ typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
+ # Nvm color.
+ typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
+ # If set to false, hide node version if it's the same as default:
+ # $(nvm version current) == $(nvm version default).
+ typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide node version if it's equal to "system".
+ typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
+ # Nodeenv color.
+ typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70
+ # Don't show Node version next to the environment name.
+ typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
+ # Separate environment name from Node version only with a space.
+ typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##############################[ node_version: node.js version ]###############################
+ # Node version color.
+ typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70
+ # Show node version only when in a directory tree containing package.json.
+ typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #######################[ go_version: go version (https://golang.org) ]########################
+ # Go version color.
+ typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37
+ # Show go version only when in a go project subdirectory.
+ typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
+ # Rust version color.
+ typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37
+ # Show rust version only when in a rust project subdirectory.
+ typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
+ # .NET version color.
+ typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134
+ # Show .NET version only when in a .NET project subdirectory.
+ typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #####################[ php_version: php version (https://www.php.net/) ]######################
+ # PHP version color.
+ typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99
+ # Show PHP version only when in a PHP project subdirectory.
+ typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]###########
+ # Laravel version color.
+ typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ####################[ java_version: java version (https://www.java.com/) ]####################
+ # Java version color.
+ typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32
+ # Show java version only when in a java project subdirectory.
+ typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true
+ # Show brief version.
+ typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]####
+ # Package color.
+ typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117
+ # Package format. The following parameters are available within the expansion.
+ #
+ # - P9K_PACKAGE_NAME The value of `name` field in package.json.
+ # - P9K_PACKAGE_VERSION The value of `version` field in package.json.
+ #
+ # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}'
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
+ # Rbenv color.
+ typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168
+ # Hide ruby version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
+ # If set to false, hide ruby version if it's the same as global:
+ # $(rbenv version-name) == $(rbenv global).
+ typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide ruby version if it's equal to "system".
+ typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
+ # Rvm color.
+ typeset -g POWERLEVEL9K_RVM_FOREGROUND=168
+ # Don't show @gemset at the end.
+ typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
+ # Don't show ruby- at the front.
+ typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############
+ # Fvm color.
+ typeset -g POWERLEVEL9K_FVM_FOREGROUND=38
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]###########
+ # Lua color.
+ typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32
+ # Hide lua version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global)
+ # If set to false, hide lua version if it's the same as global:
+ # $(luaenv version-name) == $(luaenv global).
+ typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide lua version if it's equal to "system".
+ typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################
+ # Java color.
+ typeset -g POWERLEVEL9K_JENV_FOREGROUND=32
+ # Hide java version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global)
+ # If set to false, hide java version if it's the same as global:
+ # $(jenv version-name) == $(jenv global).
+ typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide java version if it's equal to "system".
+ typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############
+ # Perl color.
+ typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67
+ # Hide perl version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global)
+ # If set to false, hide perl version if it's the same as global:
+ # $(plenv version-name) == $(plenv global).
+ typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide perl version if it's equal to "system".
+ typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
+ # Perlbrew color.
+ typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
+ # Show perlbrew version only when in a perl project subdirectory.
+ typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
+ # Don't show "perl-" at the front.
+ typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
+ # PHP color.
+ typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99
+ # Hide php version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global)
+ # If set to false, hide php version if it's the same as global:
+ # $(phpenv version-name) == $(phpenv global).
+ typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide php version if it's equal to "system".
+ typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
+ # Scala color.
+ typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160
+ # Hide scala version if it doesn't come from one of these sources.
+ typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
+ # If set to false, hide scala version if it's the same as global:
+ # $(scalaenv version-name) == $(scalaenv global).
+ typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
+ # If set to false, hide scala version if it's equal to "system".
+ typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
+ # Haskell color.
+ typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172
+ # Hide haskell version if it doesn't come from one of these sources.
+ #
+ # shell: version is set by STACK_YAML
+ # local: version is set by stack.yaml up the directory tree
+ # global: version is set by the implicit global project (~/.stack/global-project/stack.yaml)
+ typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local)
+ # If set to false, hide haskell version if it's the same as in the implicit global project.
+ typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
+ # Don't show terraform workspace if it's literally "default".
+ typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
+ # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
+ # in each pair defines a pattern against which the current terraform workspace gets matched.
+ # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+ # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters,
+ # you'll see this value in your prompt. The second element of each pair in
+ # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The
+ # first match wins.
+ #
+ # For example, given these settings:
+ #
+ # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
+ # '*prod*' PROD
+ # '*test*' TEST
+ # '*' OTHER)
+ #
+ # If your current terraform workspace is "project_test", its class is TEST because "project_test"
+ # doesn't match the pattern '*prod*' but does match '*test*'.
+ #
+ # You can define different colors, icons and content expansions for different classes:
+ #
+ # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28
+ # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+ typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
+ # '*prod*' PROD # These values are examples that are unlikely
+ # '*test*' TEST # to match your needs. Customize them as needed.
+ '*' OTHER)
+ typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38
+ # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #############[ terraform_version: terraform version (https://www.terraform.io) ]##############
+ # Terraform version color.
+ typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
+ # Show kubecontext only when the command you are typing invokes one of these tools.
+ # Tip: Remove the next line to always show kubecontext.
+ typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
+
+ # Kubernetes context classes for the purpose of using different colors, icons and expansions with
+ # different contexts.
+ #
+ # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
+ # in each pair defines a pattern against which the current kubernetes context gets matched.
+ # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+ # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
+ # you'll see this value in your prompt. The second element of each pair in
+ # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
+ # first match wins.
+ #
+ # For example, given these settings:
+ #
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
+ # '*prod*' PROD
+ # '*test*' TEST
+ # '*' DEFAULT)
+ #
+ # If your current kubernetes context is "deathray-testing/default", its class is TEST
+ # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
+ #
+ # You can define different colors, icons and content expansions for different classes:
+ #
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+ typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
+ # '*prod*' PROD # These values are examples that are unlikely
+ # '*test*' TEST # to match your needs. Customize them as needed.
+ '*' DEFAULT)
+ typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
+ # segment. Parameter expansions are very flexible and fast, too. See reference:
+ # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
+ #
+ # Within the expansion the following parameters are always available:
+ #
+ # - P9K_CONTENT The content that would've been displayed if there was no content
+ # expansion defined.
+ # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the
+ # output of `kubectl config get-contexts`.
+ # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the
+ # output of `kubectl config get-contexts`.
+ # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE
+ # in the output of `kubectl config get-contexts`. If there is no
+ # namespace, the parameter is set to "default".
+ # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the
+ # output of `kubectl config get-contexts`.
+ #
+ # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
+ # the following extra parameters are available:
+ #
+ # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks".
+ # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID.
+ # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone.
+ # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster.
+ #
+ # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
+ # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
+ #
+ # - P9K_KUBECONTEXT_CLOUD_NAME=gke
+ # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
+ # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
+ # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
+ #
+ # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
+ #
+ # - P9K_KUBECONTEXT_CLOUD_NAME=eks
+ # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
+ # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
+ # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
+ typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
+ # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
+ POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
+ # Append the current context's namespace if it's not "default".
+ POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
+
+ # Custom prefix.
+ # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%246Fat '
+
+ #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
+ # Show aws only when the command you are typing invokes one of these tools.
+ # Tip: Remove the next line to always show aws.
+ typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
+
+ # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
+ # in each pair defines a pattern against which the current AWS profile gets matched.
+ # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+ # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
+ # you'll see this value in your prompt. The second element of each pair in
+ # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The
+ # first match wins.
+ #
+ # For example, given these settings:
+ #
+ # typeset -g POWERLEVEL9K_AWS_CLASSES=(
+ # '*prod*' PROD
+ # '*test*' TEST
+ # '*' DEFAULT)
+ #
+ # If your current AWS profile is "company_test", its class is TEST
+ # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
+ #
+ # You can define different colors, icons and content expansions for different classes:
+ #
+ # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
+ # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+ typeset -g POWERLEVEL9K_AWS_CLASSES=(
+ # '*prod*' PROD # These values are examples that are unlikely
+ # '*test*' TEST # to match your needs. Customize them as needed.
+ '*' DEFAULT)
+ typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
+ # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ # AWS segment format. The following parameters are available within the expansion.
+ #
+ # - P9K_AWS_PROFILE The name of the current AWS profile.
+ # - P9K_AWS_REGION The region associated with the current AWS profile.
+ typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
+
+ #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
+ # AWS Elastic Beanstalk environment color.
+ typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
+ # Show azure only when the command you are typing invokes one of these tools.
+ # Tip: Remove the next line to always show azure.
+ typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
+
+ # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
+ # in each pair defines a pattern against which the current azure account name gets matched.
+ # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
+ # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
+ # you'll see this value in your prompt. The second element of each pair in
+ # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
+ # first match wins.
+ #
+ # For example, given these settings:
+ #
+ # typeset -g POWERLEVEL9K_AZURE_CLASSES=(
+ # '*prod*' PROD
+ # '*test*' TEST
+ # '*' OTHER)
+ #
+ # If your current azure account is "company_test", its class is TEST because "company_test"
+ # doesn't match the pattern '*prod*' but does match '*test*'.
+ #
+ # You can define different colors, icons and content expansions for different classes:
+ #
+ # typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28
+ # typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
+ typeset -g POWERLEVEL9K_AZURE_CLASSES=(
+ # '*prod*' PROD # These values are examples that are unlikely
+ # '*test*' TEST # to match your needs. Customize them as needed.
+ '*' OTHER)
+
+ # Azure account name color.
+ typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
+ # Show gcloud only when the command you are typing invokes one of these tools.
+ # Tip: Remove the next line to always show gcloud.
+ typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
+ # Google cloud color.
+ typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32
+
+ # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or
+ # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative
+ # enough. You can use the following parameters in the expansions. Each of them corresponds to the
+ # output of `gcloud` tool.
+ #
+ # Parameter | Source
+ # -------------------------|--------------------------------------------------------------------
+ # P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)'
+ # P9K_GCLOUD_ACCOUNT | gcloud config get-value account
+ # P9K_GCLOUD_PROJECT_ID | gcloud config get-value project
+ # P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
+ #
+ # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
+ #
+ # Obtaining project name requires sending a request to Google servers. This can take a long time
+ # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
+ # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets
+ # set and gcloud prompt segment transitions to state COMPLETE.
+ #
+ # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL
+ # and COMPLETE. You can also hide gcloud in state PARTIAL by setting
+ # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and
+ # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty.
+ typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}'
+ typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}'
+
+ # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name
+ # this often. Negative value disables periodic polling. In this mode project name is retrieved
+ # only when the current configuration, account or project id changes.
+ typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60
+
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
+ # Show google_app_cred only when the command you are typing invokes one of these tools.
+ # Tip: Remove the next line to always show google_app_cred.
+ typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
+
+ # Google application credentials classes for the purpose of using different colors, icons and
+ # expansions with different credentials.
+ #
+ # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first
+ # element in each pair defines a pattern against which the current kubernetes context gets
+ # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion
+ # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION
+ # parameters, you'll see this value in your prompt. The second element of each pair in
+ # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order.
+ # The first match wins.
+ #
+ # For example, given these settings:
+ #
+ # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
+ # '*:*prod*:*' PROD
+ # '*:*test*:*' TEST
+ # '*' DEFAULT)
+ #
+ # If your current Google application credentials is "service_account deathray-testing x@y.com",
+ # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'.
+ #
+ # You can define different colors, icons and content expansions for different classes:
+ #
+ # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28
+ # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID'
+ typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
+ # '*:*prod*:*' PROD # These values are examples that are unlikely
+ # '*:*test*:*' TEST # to match your needs. Customize them as needed.
+ '*' DEFAULT)
+ typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32
+ # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by
+ # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference:
+ # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
+ #
+ # You can use the following parameters in the expansion. Each of them corresponds to one of the
+ # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS.
+ #
+ # Parameter | JSON key file field
+ # ---------------------------------+---------------
+ # P9K_GOOGLE_APP_CRED_TYPE | type
+ # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id
+ # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
+ #
+ # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
+ typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
+
+ ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
+ # Toolbox color.
+ typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178
+ # Don't display the name of the toolbox if it matches fedora-toolbox-*.
+ typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
+ # Custom prefix.
+ # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%246Fin '
+
+ ###############################[ public_ip: public IP address ]###############################
+ # Public IP color.
+ typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ########################[ vpn_ip: virtual private network indicator ]#########################
+ # VPN IP color.
+ typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81
+ # When on VPN, show just an icon without the IP address.
+ # Tip: To display the private IP address when on VPN, remove the next line.
+ typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
+ # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
+ # to see the name of the interface.
+ typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
+ # If set to true, show one segment per matching network interface. If set to false, show only
+ # one segment corresponding to the first matching network interface.
+ # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
+ typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ###########[ ip: ip address and bandwidth usage for a specified network interface ]###########
+ # IP color.
+ typeset -g POWERLEVEL9K_IP_FOREGROUND=38
+ # The following parameters are accessible within the expansion:
+ #
+ # Parameter | Meaning
+ # ----------------------+-------------------------------------------
+ # P9K_IP_IP | IP address
+ # P9K_IP_INTERFACE | network interface
+ # P9K_IP_RX_BYTES | total number of bytes received
+ # P9K_IP_TX_BYTES | total number of bytes sent
+ # P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
+ # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
+ # P9K_IP_RX_RATE | receive rate (since last prompt)
+ # P9K_IP_TX_RATE | send rate (since last prompt)
+ typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+%70F⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+%215F⇡$P9K_IP_TX_RATE }%38F$P9K_IP_IP'
+ # Show information for the first network interface whose name matches this regular expression.
+ # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
+ typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ #########################[ proxy: system-wide http/https/ftp proxy ]##########################
+ # Proxy color.
+ typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ ################################[ battery: internal battery ]#################################
+ # Show battery in red when it's below this level and not connected to power supply.
+ typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
+ typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160
+ # Show battery in green when it's charging or fully charged.
+ typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70
+ # Show battery in yellow when it's discharging.
+ typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178
+ # Battery pictograms going from low to high level of charge.
+ typeset -g POWERLEVEL9K_BATTERY_STAGES='\UF008E\UF007A\UF007B\UF007C\UF007D\UF007E\UF007F\UF0080\UF0081\UF0082\UF0079'
+ # Don't show the remaining time to charge/discharge.
+ typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
+
+ #####################################[ wifi: wifi speed ]#####################################
+ # WiFi color.
+ typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68
+ # Custom icon.
+ # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS).
+ #
+ # # Wifi colors and icons for different signal strength levels (low to high).
+ # typeset -g my_wifi_fg=(68 68 68 68 68) # <-- change these values
+ # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values
+ #
+ # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps'
+ # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}'
+ #
+ # The following parameters are accessible within the expansions:
+ #
+ # Parameter | Meaning
+ # ----------------------+---------------
+ # P9K_WIFI_SSID | service set identifier, a.k.a. network name
+ # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
+ # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
+ # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0
+ # P9K_WIFI_NOISE | noise in dBm, from -120 to 0
+ # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
+
+ ####################################[ time: current time ]####################################
+ # Current time color.
+ typeset -g POWERLEVEL9K_TIME_FOREGROUND=66
+ # Format for the current time: 09:51:02. See `man 3 strftime`.
+ typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
+ # If set to true, time will update when you hit enter. This way prompts for the past
+ # commands will contain the start times of their commands as opposed to the default
+ # behavior where they contain the end times of their preceding commands.
+ typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
+ # Custom icon.
+ typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION=
+ # Custom prefix.
+ # typeset -g POWERLEVEL9K_TIME_PREFIX='%246Fat '
+
+ # Example of a user-defined prompt segment. Function prompt_example will be called on every
+ # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or
+ # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user.
+ #
+ # Type `p10k help segment` for documentation and a more sophisticated example.
+ function prompt_example() {
+ p10k segment -f 208 -i '⭐' -t 'hello, %n'
+ }
+
+ # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
+ # is to generate the prompt segment for display in instant prompt. See
+ # https://github.com/romkatv/powerlevel10k#instant-prompt.
+ #
+ # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
+ # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
+ # will replay these calls without actually calling instant_prompt_*. It is imperative that
+ # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
+ # rule is not observed, the content of instant prompt will be incorrect.
+ #
+ # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If
+ # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt.
+ function instant_prompt_example() {
+ # Since prompt_example always makes the same `p10k segment` calls, we can call it from
+ # instant_prompt_example. This will give us the same `example` prompt segment in the instant
+ # and regular prompts.
+ prompt_example
+ }
+
+ # User-defined prompt segments can be customized the same way as built-in segments.
+ # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208
+ # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
+
+ # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
+ # when accepting a command line. Supported values:
+ #
+ # - off: Don't change prompt when accepting a command line.
+ # - always: Trim down prompt when accepting a command line.
+ # - same-dir: Trim down prompt when accepting a command line unless this is the first command
+ # typed after changing current working directory.
+ typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
+
+ # Instant prompt mode.
+ #
+ # - off: Disable instant prompt. Choose this if you've tried instant prompt and found
+ # it incompatible with your zsh configuration files.
+ # - quiet: Enable instant prompt and don't print warnings when detecting console output
+ # during zsh initialization. Choose this if you've read and understood
+ # https://github.com/romkatv/powerlevel10k#instant-prompt.
+ # - verbose: Enable instant prompt and print a warning when detecting console output during
+ # zsh initialization. Choose this if you've never tried instant prompt, haven't
+ # seen the warning, or if you are unsure what this all means.
+ typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
+
+ # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
+ # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
+ # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
+ # really need it.
+ typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
+
+ # If p10k is already loaded, reload configuration.
+ # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
+ (( ! $+functions[p10k] )) || p10k reload
+}
+
+# Tell `p10k configure` which file it should overwrite.
+typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
+
+(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
+'builtin' 'unset' 'p10k_config_opts'
diff --git a/env/.urlview b/env/.urlview
new file mode 100755
index 0000000..19a0946
--- /dev/null
+++ b/env/.urlview
@@ -0,0 +1,29 @@
+###############################################################################
+# Urlview configuration file.
+# man urlview <Man page>
+#
+# Put this file in: $HOME/.urlview
+# Put url_handler.sh in: /usr/bin
+#
+# You can call 'urlview' while in 'mutt' by pressing the Ctrl b keys.
+# Put these macros in your $HOME/.muttrc file.
+#
+# macro index \cb |urlview\n
+# macro pager \cb |urlview\n
+#
+# You can call 'urlview' while in 'tin' by pressing | then a for article,
+# put urlview as the pipe command.
+#
+# Regular expression to use to match URLs.
+
+#REGEXP (((http|https|ftp|gopher)|mailto):(//)?[^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
+REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
+
+# Command to invoke for selected URL. Use lynx, netscape, or url_handler.sh
+# shell script. Alternatively, you can leave COMMAND unset and set the BROWSER
+# environment variable instead.
+
+#COMMAND lynx %s
+#COMMAND netscape -remote 'openURL(%s)'
+#COMMAND url_handler.sh
+COMMAND ~/stuff/scripts/system/url-handler.sh
diff --git a/env/.vimrc b/env/.vimrc
new file mode 100755
index 0000000..720d670
--- /dev/null
+++ b/env/.vimrc
@@ -0,0 +1,78 @@
+" set bg=light
+
+" ignores case in search
+set ic
+
+"Disable compatibility with vi which can cause unexpected issues.
+set nocompatible
+
+" set to system clipboard
+set clipboard=unnamedplus
+
+" Enable type file detection. Vim will be able to try to detect the type of file in use.
+filetype on
+
+" Enable plugins and load plugin for the detected file type.
+filetype plugin on
+
+" Load an indent file for the detected file type.
+filetype indent on
+
+" Add numbers to each line on the left-hand side.
+set number relativenumber
+
+" Turn syntax highlighting on.
+syntax on
+
+" Enable auto completion menu after pressing TAB.
+set wildmenu
+
+" Make wildmenu behave like similar to Bash completion.
+"set wildmode=list:longest
+set wildmode=longest,list,full
+
+" There are certain files that we would never want to edit with Vim.
+" Wildmenu will ignore files with these extensions.
+set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
+
+" set wrap enable
+set wrap
+
+" set tab size
+set tabstop=4
+set softtabstop=4
+set shiftwidth=4
+
+set encoding=utf-8
+
+" split open at the bottem and right
+set splitbelow splitright
+" easier nav
+map <C-h> <C-w>h
+map <C-j> <C-w>j
+map <C-k> <C-w>k
+map <C-l> <C-w>l
+
+
+" supposed to map urlview. doesnt fucking work. figures
+" :noremap <leader>u :w<Home>silent <End> !urlview<CR>
+
+nnoremap S :%s//g<left><left>
+
+nnoremap <silent> <C-t> :tabnew<CR>
+
+" au VimEnter * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
+au VimLeave * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'>
+
+map <S-Insert> <C-i>
+vnoremap <C-c> "+y
+map <C-p> "+P
+
+" add vimrc.plug
+if filereadable(expand("~.vimrc.plug"))
+ source ~/.vimrc.plug
+endif
+
+
+" auto delete trailing whitespace on save
+autocmd BufWritePre * %s/\s\+$//e
diff --git a/env/.zshrc b/env/.zshrc
new file mode 100755
index 0000000..ffa6211
--- /dev/null
+++ b/env/.zshrc
@@ -0,0 +1,47 @@
+# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
+# Initialization code that may require console input (password prompts, [y/n]
+# confirmations, etc.) must go above this block; everything else may go below.
+
+~/stuff/scripts/system/neoboot.sh
+
+if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
+ source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
+fi
+
+# Lines configured by zsh-newuser-install
+HISTFILE=~/.histfile
+HISTSIZE=1000
+SAVEHIST=1000
+# End of lines configured by zsh-newuser-install
+
+PS1='%B%F{white}[%B%F{magenta}%n%B%F{yellow}@%B%F{magenta}%M %B%F{cyan}%1~%B%F{white}]%B%F{default}$ '
+#PS1='%B%F{white}[%B%F{red}Z%B%F{magenta}ARCH %B%F{cyan}%1~%B%F{white}]%B%F{default}$ '
+
+
+bindkey -v
+# Yank to the system clipboard
+function vi-yank-xclip {
+ zle vi-yank
+ echo "$CUTBUFFER" | xclip -selection clipboard
+}
+
+zle -N vi-yank-xclip
+bindkey -M vicmd ' y' vi-yank-xclip
+
+#fzf search
+source <(fzf --zsh)
+
+source ~/.config/.profile
+#bash --login -i -c 'source ~/.profile'
+source ~/.config/zsh/powerlevel10k/powerlevel10k.zsh-theme
+
+# bindkey -a h backward-char
+# bindkey -a i forward-char
+# bindkey -a n down-history
+# bindkey -a e up-history
+
+# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
+[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
+
+
+eval "$(atuin init zsh)"