diff options
Diffstat (limited to 'env')
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 Binary files differnew file mode 100644 index 0000000..c85bd56 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornerne.png diff --git a/env/.config/awesome/iceys-theme/layouts/cornernew.png b/env/.config/awesome/iceys-theme/layouts/cornernew.png Binary files differnew file mode 100644 index 0000000..c3fd986 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornernew.png diff --git a/env/.config/awesome/iceys-theme/layouts/cornernw.png b/env/.config/awesome/iceys-theme/layouts/cornernw.png Binary files differnew file mode 100644 index 0000000..dfe78b3 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornernw.png diff --git a/env/.config/awesome/iceys-theme/layouts/cornernww.png b/env/.config/awesome/iceys-theme/layouts/cornernww.png Binary files differnew file mode 100644 index 0000000..f489010 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornernww.png diff --git a/env/.config/awesome/iceys-theme/layouts/cornerse.png b/env/.config/awesome/iceys-theme/layouts/cornerse.png Binary files differnew file mode 100644 index 0000000..023ae79 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornerse.png diff --git a/env/.config/awesome/iceys-theme/layouts/cornersew.png b/env/.config/awesome/iceys-theme/layouts/cornersew.png Binary files differnew file mode 100644 index 0000000..f7cfa1c --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornersew.png diff --git a/env/.config/awesome/iceys-theme/layouts/cornersw.png b/env/.config/awesome/iceys-theme/layouts/cornersw.png Binary files differnew file mode 100644 index 0000000..c1453c9 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornersw.png diff --git a/env/.config/awesome/iceys-theme/layouts/cornersww.png b/env/.config/awesome/iceys-theme/layouts/cornersww.png Binary files differnew file mode 100644 index 0000000..a65a043 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/cornersww.png diff --git a/env/.config/awesome/iceys-theme/layouts/dwindle.png b/env/.config/awesome/iceys-theme/layouts/dwindle.png Binary files differnew file mode 100644 index 0000000..9902d22 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/dwindle.png diff --git a/env/.config/awesome/iceys-theme/layouts/dwindlew.png b/env/.config/awesome/iceys-theme/layouts/dwindlew.png Binary files differnew file mode 100644 index 0000000..9199049 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/dwindlew.png diff --git a/env/.config/awesome/iceys-theme/layouts/fairh.png b/env/.config/awesome/iceys-theme/layouts/fairh.png Binary files differnew file mode 100644 index 0000000..d41deea --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/fairh.png diff --git a/env/.config/awesome/iceys-theme/layouts/fairhw.png b/env/.config/awesome/iceys-theme/layouts/fairhw.png Binary files differnew file mode 100644 index 0000000..bb50e3a --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/fairhw.png diff --git a/env/.config/awesome/iceys-theme/layouts/fairv.png b/env/.config/awesome/iceys-theme/layouts/fairv.png Binary files differnew file mode 100644 index 0000000..f5f0288 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/fairv.png diff --git a/env/.config/awesome/iceys-theme/layouts/fairvw.png b/env/.config/awesome/iceys-theme/layouts/fairvw.png Binary files differnew file mode 100644 index 0000000..4f4ed52 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/fairvw.png diff --git a/env/.config/awesome/iceys-theme/layouts/floating.png b/env/.config/awesome/iceys-theme/layouts/floating.png Binary files differnew file mode 100644 index 0000000..b8061a0 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/floating.png diff --git a/env/.config/awesome/iceys-theme/layouts/floatingw.png b/env/.config/awesome/iceys-theme/layouts/floatingw.png Binary files differnew file mode 100644 index 0000000..4815894 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/floatingw.png diff --git a/env/.config/awesome/iceys-theme/layouts/fullscreen.png b/env/.config/awesome/iceys-theme/layouts/fullscreen.png Binary files differnew file mode 100644 index 0000000..d02f6fc --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/fullscreen.png diff --git a/env/.config/awesome/iceys-theme/layouts/fullscreenw.png b/env/.config/awesome/iceys-theme/layouts/fullscreenw.png Binary files differnew file mode 100644 index 0000000..5c35bfa --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/fullscreenw.png diff --git a/env/.config/awesome/iceys-theme/layouts/magnifier.png b/env/.config/awesome/iceys-theme/layouts/magnifier.png Binary files differnew file mode 100644 index 0000000..2925414 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/magnifier.png diff --git a/env/.config/awesome/iceys-theme/layouts/magnifierw.png b/env/.config/awesome/iceys-theme/layouts/magnifierw.png Binary files differnew file mode 100644 index 0000000..6209556 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/magnifierw.png diff --git a/env/.config/awesome/iceys-theme/layouts/max.png b/env/.config/awesome/iceys-theme/layouts/max.png Binary files differnew file mode 100644 index 0000000..8d20844 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/max.png diff --git a/env/.config/awesome/iceys-theme/layouts/maxw.png b/env/.config/awesome/iceys-theme/layouts/maxw.png Binary files differnew file mode 100644 index 0000000..85f5ce3 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/maxw.png diff --git a/env/.config/awesome/iceys-theme/layouts/spiral.png b/env/.config/awesome/iceys-theme/layouts/spiral.png Binary files differnew file mode 100644 index 0000000..d9434be --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/spiral.png diff --git a/env/.config/awesome/iceys-theme/layouts/spiralw.png b/env/.config/awesome/iceys-theme/layouts/spiralw.png Binary files differnew file mode 100644 index 0000000..b78dd86 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/spiralw.png diff --git a/env/.config/awesome/iceys-theme/layouts/tile.png b/env/.config/awesome/iceys-theme/layouts/tile.png Binary files differnew file mode 100644 index 0000000..3ede21e --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tile.png diff --git a/env/.config/awesome/iceys-theme/layouts/tilebottom.png b/env/.config/awesome/iceys-theme/layouts/tilebottom.png Binary files differnew file mode 100644 index 0000000..6f8c257 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tilebottom.png diff --git a/env/.config/awesome/iceys-theme/layouts/tilebottomw.png b/env/.config/awesome/iceys-theme/layouts/tilebottomw.png Binary files differnew file mode 100644 index 0000000..a1de7b2 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tilebottomw.png diff --git a/env/.config/awesome/iceys-theme/layouts/tileleft.png b/env/.config/awesome/iceys-theme/layouts/tileleft.png Binary files differnew file mode 100644 index 0000000..31d6870 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tileleft.png diff --git a/env/.config/awesome/iceys-theme/layouts/tileleftw.png b/env/.config/awesome/iceys-theme/layouts/tileleftw.png Binary files differnew file mode 100644 index 0000000..cf14c25 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tileleftw.png diff --git a/env/.config/awesome/iceys-theme/layouts/tiletop.png b/env/.config/awesome/iceys-theme/layouts/tiletop.png Binary files differnew file mode 100644 index 0000000..98cade2 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tiletop.png diff --git a/env/.config/awesome/iceys-theme/layouts/tiletopw.png b/env/.config/awesome/iceys-theme/layouts/tiletopw.png Binary files differnew file mode 100644 index 0000000..d1d0872 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tiletopw.png diff --git a/env/.config/awesome/iceys-theme/layouts/tilew.png b/env/.config/awesome/iceys-theme/layouts/tilew.png Binary files differnew file mode 100644 index 0000000..fde2ca4 --- /dev/null +++ b/env/.config/awesome/iceys-theme/layouts/tilew.png diff --git a/env/.config/awesome/iceys-theme/submenu.png b/env/.config/awesome/iceys-theme/submenu.png Binary files differnew file mode 100644 index 0000000..b2778e2 --- /dev/null +++ b/env/.config/awesome/iceys-theme/submenu.png diff --git a/env/.config/awesome/iceys-theme/taglist/squarefw.png b/env/.config/awesome/iceys-theme/taglist/squarefw.png Binary files differnew file mode 100644 index 0000000..2a86430 --- /dev/null +++ b/env/.config/awesome/iceys-theme/taglist/squarefw.png diff --git a/env/.config/awesome/iceys-theme/taglist/squarew.png b/env/.config/awesome/iceys-theme/taglist/squarew.png Binary files differnew file mode 100644 index 0000000..913f2ca --- /dev/null +++ b/env/.config/awesome/iceys-theme/taglist/squarew.png 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 Binary files differnew file mode 100644 index 0000000..01ef825 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/close_focus.png diff --git a/env/.config/awesome/iceys-theme/titlebar/close_normal.png b/env/.config/awesome/iceys-theme/titlebar/close_normal.png Binary files differnew file mode 100644 index 0000000..5448ed8 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/close_normal.png diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/floating_focus_active.png Binary files differnew file mode 100644 index 0000000..82dcc7c --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/floating_focus_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/floating_focus_inactive.png Binary files differnew file mode 100644 index 0000000..c19ba80 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/floating_focus_inactive.png diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/floating_normal_active.png Binary files differnew file mode 100644 index 0000000..62342d1 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/floating_normal_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/floating_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/floating_normal_inactive.png Binary files differnew file mode 100644 index 0000000..e2bbdfa --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/floating_normal_inactive.png diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_active.png Binary files differnew file mode 100644 index 0000000..d7dffd7 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_inactive.png Binary files differnew file mode 100644 index 0000000..844389f --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/maximized_focus_inactive.png diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_active.png Binary files differnew file mode 100644 index 0000000..a705f81 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/maximized_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_inactive.png Binary files differnew file mode 100644 index 0000000..4c1ab1f --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/maximized_normal_inactive.png diff --git a/env/.config/awesome/iceys-theme/titlebar/minimize_focus.png b/env/.config/awesome/iceys-theme/titlebar/minimize_focus.png Binary files differnew file mode 100644 index 0000000..caaceb2 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/minimize_focus.png diff --git a/env/.config/awesome/iceys-theme/titlebar/minimize_normal.png b/env/.config/awesome/iceys-theme/titlebar/minimize_normal.png Binary files differnew file mode 100644 index 0000000..36621d0 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/minimize_normal.png diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_active.png Binary files differnew file mode 100644 index 0000000..312c00b --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_inactive.png Binary files differnew file mode 100644 index 0000000..a48e1c5 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/ontop_focus_inactive.png diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_active.png Binary files differnew file mode 100644 index 0000000..117a203 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/ontop_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_inactive.png Binary files differnew file mode 100644 index 0000000..d3a10c8 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/ontop_normal_inactive.png diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_focus_active.png b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_active.png Binary files differnew file mode 100644 index 0000000..814499b --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_focus_inactive.png b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_inactive.png Binary files differnew file mode 100644 index 0000000..21b000d --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/sticky_focus_inactive.png diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_normal_active.png b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_active.png Binary files differnew file mode 100644 index 0000000..bdb5595 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_active.png diff --git a/env/.config/awesome/iceys-theme/titlebar/sticky_normal_inactive.png b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_inactive.png Binary files differnew file mode 100644 index 0000000..a96b9b1 --- /dev/null +++ b/env/.config/awesome/iceys-theme/titlebar/sticky_normal_inactive.png 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 Binary files differnew file mode 100755 index 0000000..1797837 --- /dev/null +++ b/env/.config/nvim/spell/en.utf-8.add.spl 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)" |
