diff options
author | Ensa <psychoticfervor@tuta.io> | 2020-01-30 13:31:42 -0800 |
---|---|---|
committer | Ensa <psychoticfervor@tuta.io> | 2020-01-30 14:56:12 -0800 |
commit | 8fa69fc68072910f855958b3b79360ede1a32682 (patch) | |
tree | 7045a02b4ff7ead46f746fed7293a0408ec392ae /bin | |
parent | 4684d80b6271dd775cd23dabf2b91d6ce56fa33a (diff) | |
download | cfg-8fa69fc68072910f855958b3b79360ede1a32682.tar.gz |
new scripts, switched to ksh, and a lot more
sorry, it's been ages since i've updated this thing, so there's a lot of stuff to go through here. NEW: bin/ bother: bothers you with an urgent notification containing the contents of the file $HOME/today opener: opens files according to the mimetype file(1) gets from the aforementioned file config/ ksh: my config files for openbsd's ksh 00-opts.ksh just sets vi because ksh's options are sparse and sane diraliases uses alias -d to set a bunch of convenient shortcuts not everybody will have these specific directories: i recommend you change these to be appropriate for you. "grep '^cd'|sort" your shell's histfile to figure out the common ones exports.ksh has exports for the following $GITHUB (site shortcut for git cloning) $IRC_SERVERS_FILE (ircii/epic5 thing) $CLICOLOR (enables ANSI color on colorls) $PF_INFO (specifies what pfetch should show) $MANPATH (normal MANPATH for openbsd plus one in the user's directory (user-added man pages)) functions.ksh mc() (makes a directory and moves into it) mpvpin (makes a pinned mpv window, shows up on all workspaces (assumes you're using my dwm build)) kshrc exports the XDG_*_HOME variables, keeping old values if old values existed sources config/shrc checks to see if PATH contains $HOME/.local/bin if not, adds it sources the other *.ksh files in the dir sources $HOME/.config/lf/lfcd.sh same as the one in lf's source sources diraliases and config/aliasrc zz-prompt.ksh named like that so it's sourced last contains a lot of convenience vars for ANSI escapes basically just return value with green background time with magenta background username with bright red foreground short hostname with bright blue foreground current directory with bright cyan foreground wal/colorschemes/dark/base16-causalagency.json quick and dirty implementation of https://causal.agency/ 's colorscheme MODIFIED: bin comm-sel added a stanza that uses st-altscreen when available check DEPENDENCIES.md for details swapped irssi for epic5 now uses env to force 6cord to use 16color popmail->mbsync-cron changed the name so it doesnt sound like the program uses the POP mail protocol no longer uses $acc because the $account instances are already clean added a stanza that prevents per-email notifs from happening if you would have gotten more than 15 of them finally removed the old broken $from and $subject lines commented out old statusline file, now just uses a single icon for any new mail in any box less accurate but more concise pw now has functionality for sending the generated password to the primary X selection also backgrounds both the "send to selection" modes so they don't make the terminal wait for the clear timer to finish lf/lfrc now has a similar prompt to ksh uses opener instead of that mess that basically did the same thing but worse doesn't add a custom delete prompt anymore, that was slow ncmpcpp/config now splits library albums by date now explicitly disables mouse newsboat/config youtube audio macro now uses the new better config-music for ytdl nvim/init.vim got rid of wal.vim i use 16color neovim now moved colorizer and VimCompletesMe to the plugin graveyard added lf.vim (lf integration) and bclose.vim (requirement) made it replace netrw now sets the colorscheme to delek, does not set termguicolors made cppcheck the syntastic checker for the cpp ft removed fancy separators from lightline added (broken) shortcut to save as root added shortcut to clear highlights in normal mode shortened the MakeTags line updated the c-practice line as well as making it use pcc added lines treating calcurse notes as markdown enabled ksh on the ksh ft shrc changed ISH to ksh removed ZDOTDIR wal/templates 6cord.toml disabled truecolor removed pointless obfuscate-words disable changed command-prefix to be more brief changed default-status to be empty colors-wal-dmenu.h changed the background to color0 on both schemes fg is now 4 for norm and 1 for sel colors-wal-dwm.h changed the background to color0 on both schemes fg is now 4 for norm and 1 for sel dunstrc changed font name to match what the otb terminus is (at size 8 now) simplified dmenu line because all of that is now compiled into dmenu zathurarc changed font to SauceCodePro Nerd Font Mono 10 because terminus otb refused to work youtube-dl/ config changed --output to put everything into subfolders config-music commented out downloading with axel because i was getting rate limited on bandcamp --output now almost 100% lines up with my music folder's format diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index 9e1b086..a2b356e 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -16,17 +16,18 @@ each and every file in this repository can be altered by anyone with any goal, i * `opt: any of the previous bullets`: same meaning as before but optional * `(description)`: explains why it's necessary/what optional feature it enables if present # bin/ -* popmail: populate local maildirs and notify the user if there is new mail +* mbsync-cron: populate local maildirs and notify the user if there is new mail * [isync](https://isync.sourceforge.net) * properly configured `$HOME/.mbsync` (One Group per email account) * libnotify (notifies the user for new mail and the subject line of said mail) * `$XDG_DATA_HOME` * comm-sel: a handy menu for spawning communication clients - * [irssi](https://irssi.org) + * [epic5](https://epicsol.org) * [6cord](https://gitlab.com/diamondburned/6cord) * [scli](https://github.com/isamert/scli) * [dmenu](https://dmenu.suckless.org) (provides a menu for selecting which client to start) * notify-send (notifies the user that they made an invalid choice) + * opt: st-altscreen (build of st that doesn't have scrollback or extra bindings, doesnt interfere with programs and is generally smaller) * `$TERMINAL` * lh: a script that takes a URL as input and does different things depending on what the URL links to * [mpv](https://mpv.io) (video file streaming, streaming from sites like youtube, viewing livestreams from twitch) @@ -39,11 +40,16 @@ each and every file in this repository can be altered by anyone with any goal, i * `$READER` * `$EDITOR` * `$BROWSER` +* opener: a script that uses file(1) to determine what a file is, then opens it with an appropriate program + * [mpv](https://mpv.io) (opens video and audio files) + * [sxiv](https://github.com/muennich/sxiv) (used to view images) + * `$READER` + * `$EDITOR` * prompt: makes prompting the user for particular actions easier * [dmenu](https://dmenu.suckless.org) * pw: generates a password of variable length - * opt: xclip (enables pw's mode copying the generated password to the clipboard) - * opt: libnotify (notifies the user that the password is generated, how long the password will be kept in the clipboard for, and when the clipboard is cleared.) + * opt: xclip (enables pw's mode copying the generated password to the clipboard or the primary selection) + * opt: libnotify (notifies the user that the password is generated, how long the password will be kept in the clipboard/primary selection for, and when the clipboard/primary selection is cleared.) * rsschk: takes a URL as an argument and adds it to newsboat's url file, with an optional second argument specifying a category * libnotify (notifies the user of improper usage, and whether or not they should probably edit the url file manually to add a category.) * [newsboat](https://newsboat.org) @@ -55,14 +61,9 @@ each and every file in this repository can be altered by anyone with any goal, i * xwallpaper (sets the wallpaper) # config/ * lfrc: configuration file for [lf](https://github.com/gokcehan/lf) - * opt: $EDITOR (viewing text files) - * opt: [gimp](https://gimp.org) (editing vector images) - * opt: [zathura](https://pwmt.org/projects/zathura) (viewing ebooks) - * opt: [sxiv](https://github.com/muennich/sxiv) (view images) - * opt: mpv (listening to audio files or viewing video files) - * opt: bin/lh (wildcard for opening files not detected by other MIME types) + * opt: bin/opener (for opening files) * shrc: shell environment, particularly for bin/shenv - * nvim (`$EDITOR`) + * neovim (`$EDITOR`) * lf (`$FILE`) * st (`$TERMINAL`) * firefox (`$BROWSER`) @@ -71,23 +72,20 @@ each and every file in this repository can be altered by anyone with any goal, i * neomutt (`$MAILER`) * ncmpcpp (`$MUSIC`) * newsboat (`$RSS`) - * zsh (`$ISH` `$ZDOTDIR`) + * ksh (`$ISH` `$ZDOTDIR`) * maim (`$SCR`) * slock (`$LOCK`) * opt: go (`$GOPATH`) * opt: cargo (`$CARGO_HOME`) * opt: mednafen (`$MEDNAFEN_HOME`) -## zsh/ -configuration files for zsh -* zshrc - * git (installing zplugin) -* functions.zsh - * bin/pw (for pw() to work) -* exports.zsh +## ksh/ +configuration files for ksh +* kshrc * config/shrc (for the majority of variables set) +* functions.ksh + * mpv (for mpvpin() to work) +* exports.ksh * opt: pfetch (`$PF_INFO`) -* themes/p10k.zsh - * [Nerd Fonts font](https://nerdfonts.com) # data/ * mailcap: helps neomutt figure out what to do with particular MIME types * $EDITOR diff --git a/bin/bother b/bin/bother new file mode 100755 index 0000000..701b1a4 --- /dev/null +++ b/bin/bother @@ -0,0 +1,10 @@ +#!/bin/sh +# puts up a critical notification if $HOME/today exists, containing the contents of that file. +if [ -f "$HOME"/today ]; then + until pgrep -x dwm>/dev/null + do + true + done + sleep 0.5 + notify-send -u critical "DO TODAY:" "$(cat "$HOME"/today)" +fi diff --git a/bin/comm-sel b/bin/comm-sel index f67787f..0678679 100755 --- a/bin/comm-sel +++ b/bin/comm-sel @@ -1,9 +1,14 @@ #!/bin/sh -# sends a list of communication TUIs (e.g irssi) to dmenu and allows the user to choose one. +# sends a list of communication TUIs (e.g epic5) to dmenu and allows the user to choose one. # class "comm" is added to enable window managers (e.g dwm) to do specific things with them. -case "$(dmenu_path|grep -E "irssi|6cord|scli$"|dmenu -p "choose chat app:")" in - irssi) $TERMINAL -c comm -e irssi --home=$XDG_CONFIG_HOME/irssi&;; - 6cord) $TERMINAL -c comm -e 6cord&;; +# st-altscreen is a built of st that doesn't have scrollback or extra keybindings, so it doesn't get in the way of whatever binds clients have. +# as a result it's lighter than the build of st i use for interactive use. +if command -v st-altscreen>/dev/null; then + TERMINAL="st-altscreen" +fi +case "$(dmenu_path|grep -E "epic5$|6cord|scli$"|dmenu -p "choose chat app:")" in + epic5) $TERMINAL -c comm -e epic5 -l "$XDG_CONFIG_HOME/epic/epicrc" ensa&;; + 6cord) $TERMINAL -c comm -e env TERM=xterm 6cord&;; scli) $TERMINAL -c comm -e scli&;; *) notify-send "comm-sel error" "invalid program selection"&&return 1;; esac diff --git a/bin/popmail b/bin/mbsync-cron similarity index 67% rename from bin/popmail rename to bin/mbsync-cron index d1bae9f..dd69c01 100755 --- a/bin/popmail +++ b/bin/mbsync-cron @@ -21,23 +21,20 @@ if ! [ -d "$XDG_DATA_HOME/neomutt" ]; then fi # check account for new mail, notify for new content syncandnotify() { - # sanitize $account for use in function - acc="$(printf '%s\n' "$account" | sed "s/.*\///")" - mbsync "$acc">/dev/null 2>&1 + mbsync "$account">/dev/null 2>&1 # $new holds an index of all mail since the last time popmail ran - new=$(find "$XDG_DATA_HOME/mail/$acc/inbox/new/" -type f -newer "$XDG_DATA_HOME/neomutt/.popmail-last" 2> /dev/null) + new=$(find "$XDG_DATA_HOME/mail/$account/inbox/new/" -type f -newer "$XDG_DATA_HOME/neomutt/.popmail-last" 2> /dev/null) # $newcount is the number of new mails newcount=$(printf '%s\n' "$new" | sed '/^\s*$/d' | wc -l | tr -d " ") - # send $newcount to a file specific to $acc + # send $newcount to a file specific to $account # the preceding space makes generating a status bar string easier. - printf ' %s' "$newcount" > "$XDG_DATA_HOME/mail/$acc/note" + printf ' %s' "$newcount" > "$XDG_DATA_HOME/mail/$account/note" # don't notify if there isn't new mail if [ "$newcount" -gt "0" ]; then - notify-send --app-name="popmail" "mail fetcher" "new mail for profile $acc! [$newcount]" & + notify-send --app-name="popmail" "mail fetcher" "new mail for profile $account! [$newcount]" & + # reduce output if you have a lot of new mail + if [ "$newcount" -lt "16" ]; then for file in $new; do - # broken lines, not sure what they're supposed to do - #from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed 's/^[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//') - #subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | sed '$D' | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | sed 's/^Subject: //' | sed 's/^{[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//' | tr -d '\n') # Extract subject and sender from mail. # modified version of broken $from variable, only prints the first from (so forwards are slightly unclear) from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed '1!d'| sed '1,/From/s/From: //') @@ -47,6 +44,7 @@ syncandnotify() { # sleep for half a second to avoid notification clog sleep .5 done + fi fi } @@ -65,7 +63,13 @@ do done wait -# collect all previously created note files and collate them into a file that can be read by a status bar to notify the user of new mails -printf "$(cat "$XDG_DATA_HOME"/mail/*/note|tr " " "|"|sed 's/|//')\n">"$XDG_DATA_HOME/mail/note" +## OLD: collect all previously created note files and collate them into a file that can be read by a status bar to notify the user of new mails +#printf "$(cat "$XDG_DATA_HOME"/mail/*/note|tr " " "|"|sed 's/|//')\n">"$XDG_DATA_HOME/mail/note" +# use a single symbol to indicate new mail in any maildir +if cat "$XDG_DATA_HOME"/mail/*/note|grep -q '[1-9]'; then + printf ' \n'>"$XDG_DATA_HOME/mail/note" +else + printf '\n'>"$XDG_DATA_HOME/mail/note" +fi #create/update modification time on an empty file that indicates the time of the last run of popmail touch "$XDG_DATA_HOME/neomutt/.popmail-last" diff --git a/bin/opener b/bin/opener new file mode 100755 index 0000000..755da51 --- /dev/null +++ b/bin/opener @@ -0,0 +1,41 @@ +#!/bin/sh +# opener: opens files according to its contents +# takes one path as its argument, launches the appropriate program for it +if ! [ -f "$1" ]; then + printf 'file %s does not exist!\n' "$1" >/dev/stderr + return 1 +fi +FILEPATH="$1" +FILEMIME="$(file -ib "$FILEPATH")" +echo() { + printf '%s\n' "$*" +} +case "$FILEMIME" in + #ebooks + application/epub*|application/pdf|application/postscript|image/vnd.djvu) + if [ -n "$READER" ]; then + $READER "$FILEPATH">/dev/null 2>&1 & + else + zathura "$FILEPATH" & + fi ;; + #videos + video/*) + mpv --input-ipc-server=/tmp/mpv-socket$(date +%s) --quiet "$FILEPATH" >/dev/null 2>&1 & ;; + #images + image/*) + sxiv -a "$FILEPATH">/dev/null 2>&1 & ;; + #audio + audio/*) + mpv --input-ipc-server=/tmp/mpv-socket$(date +%s) "$FILEPATH" >/dev/null 2>&1 & ;; + #text + text/*) + if [ -n "$EDITOR" ]; then + $EDITOR "$FILEPATH">/dev/null 2>&1 & + else + vi "$FILEPATH" & + fi ;; + #catchall + *) + echo "file $(basename "$FILEPATH") could not be opened. its type is $FILEMIME, go tell ensa that opener didn't work" >/dev/stderr + return 1 ;; +esac diff --git a/bin/pw b/bin/pw index 140f1dc..cec9e54 100755 --- a/bin/pw +++ b/bin/pw @@ -1,14 +1,25 @@ #!/bin/sh -# generates a password of length $1, sends it to stdout if $2 isn't clip. -# if it is clip, sends it to the X clipboard and clears it after 10 seconds. +# generates a password of length $1, sends it to stdout if $2 is blank. +# if $2 is clip, sends it to the X clipboard and clears it after 10 seconds. +# if $2 is anything else, sends it to the X primary selection and clears it after 10 seconds if [ "$1" = "-h" ]; then - printf 'usage: %s [-h]|LENGTH [clip]\n' "$(basename $0)">/dev/stderr&&return 1 + printf 'usage: %s [-h]|LENGTH [clip|pri]\n' "$(basename $0)">/dev/stderr + return 1 fi -PW=$(tr -cd "[:alnum:][:punct:]"</dev/urandom|fold -w $1|head -1) -if [ "$2" = "clip" ]; then - printf '%s' "$PW"|xclip -sel clip -i&¬ify-send "Password Generated" "$1-character password generated. It will clear in 10 seconds." - sleep 10 - printf "\0"|xclip -sel clip -i&¬ify-send "Clipboard Cleared" "Generated password cleared from clipboard." +PW=$(tr -cd "[:alnum:][:punct:]"</dev/urandom|fold -w "$1"|head -1) +if [ -n "$2" ]; then + # streamline selection variation by using $SEL + if [ "$2" = "clip" ]; then + SEL="-sel clip" + else + SEL="" + fi + # backgrounds so the user doesn't have to wait 10 seconds to get a prompt again + { + printf "%s" "$PW"|xclip $SEL -i&¬ify-send "Password Generated" "$1-character password generated. It will clear in 10 seconds." + sleep 10 + printf '\0'|xclip $SEL -i&¬ify-send "Clipboard Cleared" "Generated password cleared from clipboard." + } & else - printf '%s\n' "$PW" + printf '%s\n' "$PW" fi diff --git a/config/ksh/00-opts.ksh b/config/ksh/00-opts.ksh new file mode 100644 index 0000000..4b7ff4c --- /dev/null +++ b/config/ksh/00-opts.ksh @@ -0,0 +1 @@ +set -o vi diff --git a/config/ksh/diraliases b/config/ksh/diraliases new file mode 100644 index 0000000..f4546a5 --- /dev/null +++ b/config/ksh/diraliases @@ -0,0 +1,10 @@ +#!/bin/ksh +alias -d "src=$HOME/src"\ + "vcs=$HOME/src/vcs"\ + "me=$HOME/src/me"\ + "ports=/usr/ports"\ + "conf=$XDG_CONFIG_HOME"\ + "data=$XDG_DATA_HOME"\ + "write=$HOME/doc/writing"\ + "crit=$HOME/doc/writing/critique"\ + "bin=$HOME/.local/bin" diff --git a/config/zsh/exports.zsh b/config/ksh/exports.ksh similarity index 75% rename from config/zsh/exports.zsh rename to config/ksh/exports.ksh index 48ec72b..c2ec25d 100644 --- a/config/zsh/exports.zsh +++ b/config/ksh/exports.ksh @@ -1,7 +1,10 @@ -. $XDG_CONFIG_HOME/shrc # exports for convenience export GITHUB="https://github.com" +# programs +export IRC_SERVERS_FILE="$HOME/.local/share/ircservers" # make pfetch show what i want export PF_INFO="ascii title os host shell editor wm pkgs uptime palette" +# color +export CLICOLOR=1 # fix manpath so local man pages work export MANPATH="/usr/share/man:/usr/X11R6/man:/usr/local/man:$XDG_DATA_HOME/man" diff --git a/config/ksh/functions.ksh b/config/ksh/functions.ksh new file mode 100644 index 0000000..e5d2668 --- /dev/null +++ b/config/ksh/functions.ksh @@ -0,0 +1,6 @@ +mc() { + mkdir "$1" && cd "$1"; +} +mpvpin() { + mpv --input-ipc-server=/tmp/mpv-socket$(date +%s) --quiet --title "PIN" "$1" >/dev/null 2>&1 & +} diff --git a/config/ksh/kshrc b/config/ksh/kshrc new file mode 100644 index 0000000..abf9bf0 --- /dev/null +++ b/config/ksh/kshrc @@ -0,0 +1,22 @@ +#!/bin/ksh +export XDG_CACHE_HOME=${XDG_CACHE_HOME:=~/.cache} +export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:=~/.config} +export XDG_DATA_HOME=${XDG_DATA_HOME:=~/.local/share} +. $XDG_CONFIG_HOME/shrc +KSHCONFIG="$XDG_CONFIG_HOME/ksh" +if ! echo "$PATH"|grep -q ".local/bin"; then + export PATH="$HOME/.local/bin:$PATH" +fi + +HISTFILE=$XDG_DATA_HOME/ksh/histfile +HISTSIZE=5000 +HISTCONTROL="ignoredups" +TMPDIR=$XDG_CACHE_HOME/ksh + +#load ksh external configs +for file in $KSHCONFIG/*.ksh; do + . "$file" +done +. $XDG_CONFIG_HOME/lf/lfcd.sh +[[ -f "$KSHCONFIG/diraliases" ]] && . "$KSHCONFIG/diraliases" +[[ -f "$XDG_CONFIG_HOME/aliasrc" ]] && . "$XDG_CONFIG_HOME/aliasrc" diff --git a/config/ksh/zz-prompt.ksh b/config/ksh/zz-prompt.ksh new file mode 100644 index 0000000..b7f80cf --- /dev/null +++ b/config/ksh/zz-prompt.ksh @@ -0,0 +1,32 @@ +#!/bin/ksh +SEP="|" +_PS1='\[\033[' +_END='m\]' + +_CLEAR='0' +_BRIGHT='1' +_DIM='2' +_UNDER='4' +_BLINK='5' +_REVERSE='7' +_HIDDEN='8' + +_FG_BLACK='30' +_FG_RED='31' +_FG_GREEN='32' +_FG_YELLOW='33' +_FG_BLUE='34' +_FG_MAGENTA='35' +_FG_CYAN='36' +_FG_WHITE='37' + +_BG_BLACK='40' +_BG_RED='41' +_BG_GREEN='42' +_BG_YELLOW='43' +_BG_BLUE='44' +_BG_MAGENTA='45' +_BG_CYAN='46' +_BG_WHITE='47' +PS1='$_PS1$_FG_BLACK;$_BG_GREEN$_END$?$_PS1$_CLEAR$_END$SEP$_PS1$_FG_BLACK;$_BG_MAGENTA$_END\A$_PS1$_CLEAR$_END$SEP$_PS1$_BRIGHT;$_FG_RED$_END\u$_PS1$_CLEAR;$_FG_GREEN$_END@$_PS1$_BRIGHT;$_FG_BLUE$_END\h$_PS1$_CLEAR$_END:$_PS1$_BRIGHT;$_FG_CYAN$_END\w$_PS1$_CLEAR;$_FG_GREEN$_END\$$_PS1$_CLEAR$_END ' +export PS1 diff --git a/config/lf/lfrc b/config/lf/lfrc index 21634d4..e5e58cd 100644 --- a/config/lf/lfrc +++ b/config/lf/lfrc @@ -3,30 +3,14 @@ set shell sh set shellopts '-eu' set ifs "\n" +set promptfmt "\033[1;31m%u\033[0;32m@\033[1;34m%h\033[0m:\033[1;36m%w/\033[0m\033[1m%f\033[0m" # cmds cmd open ${{ - case $(file -bi $f) in - text/troff) man ./ $f;; - text/*) $EDITOR $fx;; - image/x-xcf|image/svg+xml) gimp $f >/dev/null 2>&1 & ;; - image/vnd.djvu|application/epub+zip|application/pdf) zathura $f >/dev/null 2>&1 & ;; - image/*) sxiv -ai >/dev/null 2>&1 & ;; - audio/*) mpv --input-ipc-server=/tmp/mpvsoc$(date +%%s) --quiet $f >/dev/null 2>&1 & ;; - video/*) mpv --input-ipc-server=/tmp/mpvsoc$(date +%%s) $f ;; - *) for f in $fx; do lh $f > /dev/null 2>&1 & done;; - esac + opener $f }} cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1 -cmd delete ${{ - set -f - printf "%s\n\t" "$fx" - printf "delete?[y/n]" - read ans - [ $ans = "y" ] && rm -rf $fx -}} - # binds map D delete map a push %mkdir<space> diff --git a/config/ncmpcpp/config b/config/ncmpcpp/config index 04c319f..ffeb996 100644 --- a/config/ncmpcpp/config +++ b/config/ncmpcpp/config @@ -321,7 +321,7 @@ progressbar_look = -> ## media_library_primary_tag = album_artist # -media_library_albums_split_by_date = no +media_library_albums_split_by_date = yes # ## Available values: wrapped, normal. ## @@ -430,7 +430,7 @@ ignore_leading_the = yes # #block_search_constraints_change_if_items_found = yes # -#mouse_support = yes +mouse_support = no # #mouse_list_scroll_whole_page = yes # diff --git a/config/newsboat/config b/config/newsboat/config index aeb6ddf..233cd8b 100644 --- a/config/newsboat/config +++ b/config/newsboat/config @@ -33,6 +33,6 @@ color article cyan default browser lh macro , open-in-browser macro t set browser "youtube-dl --add-metadata -ic"; open-in-browser ; set browser lh -macro a set browser "youtube-dl --config-location ~/.config/youtube-dl/config-audio --add-metadata -xic -f bestaudio/best"; open-in-browser ; set browser lh +macro a set browser "youtube-dl --add-metadata -ic --config-location ~/.config/youtube-dl/config-music"; open-in-browser ; set browser lh macro v set browser "mpv"; open-in-browser ; set browser lh macro w set browser "w3m"; open-in-browser ; set browser lh diff --git a/config/nvim/colors/asmanian_blood.vim b/config/nvim/colors/asmanian_blood.vim deleted file mode 100644 index 90df688..0000000 --- a/config/nvim/colors/asmanian_blood.vim +++ /dev/null @@ -1,42 +0,0 @@ - -set background=dark - -hi Normal guifg=#b4b0b0 guibg=#080404 gui=none -hi NonText guifg=#b4b0b0 guibg=#181414 gui=none -hi SpecialKey guifg=#b4b0b0 guibg=#282424 gui=bold - -hi Comment guifg=#686460 guibg=#080404 gui=none -hi Todo guifg=#686460 guibg=#080404 gui=underline,italic -hi Search guifg=#000000 guibg=#00f0f0 gui=underline,italic -hi Visual guibg=#282020 -hi MatchParen guifg=#ffffff guibg=#904030 gui=none - -hi Title guifg=#ffffff guibg=#202020 gui=underline -hi Underlined guifg=#b4b0b0 guibg=#080404 gui=underline - -hi CursorColumn guifg=#f4f0f0 guibg=#201c1c gui=none -hi CursorLine guifg=#f4f0f0 guibg=#201c1c gui=none - -hi StatusLine guifg=#f8e0d0 guibg=#301810 gui=bold -hi StatusLineNC guifg=#503830 guibg=#200800 gui=none -hi VertSplit guifg=#200800 guibg=#301810 gui=none -hi LineNr guifg=#848070 guibg=#181414 gui=none -hi Folded guifg=#484040 guibg=#080404 gui=bold,italic - -hi Define guifg=#607080 guibg=#080404 gui=italic -hi Function guifg=#60b050 guibg=#080404 gui=italic -hi PreProc guifg=#a090a0 guibg=#080404 gui=italic -hi Define guifg=#806080 guibg=#080404 gui=italic -hi Identifier guifg=#c0b060 guibg=#080404 gui=italic - -hi Statement guifg=#506090 guibg=#080404 gui=underline -hi Repeat guifg=#906050 guibg=#080404 gui=underline -hi Conditional guifg=#609050 guibg=#080404 gui=underline -hi Exception guifg=#903020 guibg=#080404 gui=underline - -hi Type guifg=#705850 guibg=#080404 gui=italic -hi String guifg=#a06050 guibg=#080404 gui=italic -hi Special guifg=#a06050 guibg=#181414 gui=italic -hi Number guifg=#60d060 guibg=#080404 gui=none -hi Constant guifg=#60d060 guibg=#080404 gui=none - diff --git a/config/nvim/init.vim b/config/nvim/init.vim index 41450bb..0632b5d 100644 --- a/config/nvim/init.vim +++ b/config/nvim/init.vim @@ -10,8 +10,6 @@ call plug#begin('~/.local/share/nvim/plugged') Plug 'gregsexton/matchtag' " lightline.vim Plug 'itchyny/lightline.vim' -" wal.vim -Plug 'dylanaraps/wal.vim' " vim-fugitive Plug 'tpope/vim-fugitive' " vim-gitgutter @@ -20,20 +18,23 @@ Plug 'airblade/vim-gitgutter' Plug 'tpope/vim-surround' " JsBeautify Plug 'maksimr/vim-jsbeautify' -" recognize color tags -Plug 'lilydjwg/colorizer' " syntax checking Plug 'vim-syntastic/syntastic' +" lf integration +Plug 'ptzz/lf.vim' +" req for lf.vim +Plug 'rbgrouleff/bclose.vim' +"""plugin graveyard +" END PLUGINS +"" recognize color tags +"Plug 'lilydjwg/colorizer' "" VimCompletesMe "Plug 'ajh17/VimCompletesMe' -" END PLUGINS call plug#end() " end of vim-plug related lines -"colo wal -colo asmanian_blood -set tgc +colo delek " productivity binds @@ -79,26 +80,29 @@ let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 let g:syntastic_c_checkers = ["cppcheck"] +let g:syntastic_cpp_checkers = ["cppcheck"] let g:syntastic_sh_checkers = ["shellcheck", "sh"] " lightline config set noshowmode let g:lightline = { \ 'colorscheme': 'selenized_dark', - \ 'separator': { - \ 'left': '', - \ 'right': '' - \ }, - \ 'subseparator': { - \ 'left': '', - \ 'right': '' - \ }, \ } +" lf config +let g:lf_replace_netrw = 1 + " betterize set path+=** +cno w!! exe 'sil! w !doas tee % >/dev/null' <bar> e! +nno <space> :noh<return><space> " add a ctags shortcut like a shitty goblin -command! MakeTags !ectags -R . +com! MakeTags !ectags -R . " make make work when im learning c -autocmd BufRead $HOME/src/c-practice/*.c set makeprg=cc\ --std=c89\ % +autocmd BufRead $HOME/src/me/c-practice/*.c set makeprg=pcc\ -ansi\ % +" calcurse notes should be treated as markdown +autocmd BufRead,BufNewFile /tmp/calcurse* set filetype=markdown +autocmd BufRead,BufNewFile ~/.local/share/calcurse/notes/* set filetype=markdown +" ksh should work +autocmd FileType ksh let g:is_kornshell = 1 diff --git a/config/shrc b/config/shrc index a3cc31c..bc5162e 100644 --- a/config/shrc +++ b/config/shrc @@ -16,7 +16,7 @@ export READER="zathura" export MAILER="neomutt" export MUSIC="ncmpcpp" export RSS="newsboat" -export ISH="zsh" +export ISH="ksh" export SCR="maim" export LOCK="slock" export LESS='-iMRS -x2' @@ -31,4 +31,3 @@ export LESSHISTFILE="-" export GOPATH="$HOME/.local/go" export CARGO_HOME="$XDG_DATA_HOME/cargo" export MEDNAFEN_HOME="$XDG_CONFIG_HOME/mednafen" -export ZDOTDIR="$XDG_CONFIG_HOME/zsh" diff --git a/config/wal/colorschemes/dark/base16-causalagency.json b/config/wal/colorschemes/dark/base16-causalagency.json new file mode 100644 index 0000000..8b21dfd --- /dev/null +++ b/config/wal/colorschemes/dark/base16-causalagency.json @@ -0,0 +1,25 @@ +{ + "special": { + "background": "#14130e", + "foreground": "#b7a980", + "cursor": "#72694f" + }, + "colors": { + "color0": "#161510", + "color1": "#a32810", + "color2": "#727a18", + "color3": "#a37720", + "color4": "#3d6266", + "color5": "#7a4955", + "color6": "#557a55", + "color7": "#8e8463", + "color8": "#4c4635", + "color9": "#cc3214", + "color10": "#8e991e", + "color11": "#cc9528", + "color12": "#4c7b7f", + "color13": "#995b6b", + "color14": "#6b996b", + "color15": "#ccbc8e" + } +} diff --git a/config/wal/templates/6cord.toml b/config/wal/templates/6cord.toml index f267982..0217cc2 100644 --- a/config/wal/templates/6cord.toml +++ b/config/wal/templates/6cord.toml @@ -1,11 +1,14 @@ +# comment to get vim to recognize the ft +token = "MjA0MzU4MzIzMTQ1ODAxNzI5.Xh6pqg.a3-wz3fXBZEUveMq0_etic4S7do" [ properties ] - true-color = true + true-color = false default-name-color = "{color7}" mention-color = "{color5}" mention-self-color = "{color14}" compact-mode = false syntax-highlight-colorscheme = "native" show-emoji-urls = false - obfuscate-words = false shorten-url = false + command-prefix = "[${{CHANNEL}}] " + default-status = "" diff --git a/config/wal/templates/colors-wal-dmenu.h b/config/wal/templates/colors-wal-dmenu.h index afcbb8d..d139d56 100644 --- a/config/wal/templates/colors-wal-dmenu.h +++ b/config/wal/templates/colors-wal-dmenu.h @@ -1,6 +1,6 @@ static const char *colors[SchemeLast][2] = {{ /* fg bg */ - [SchemeNorm] = {{ "{color13}", "{color0}" }}, - [SchemeSel] = {{ "{color13}", "{color4}" }}, + [SchemeNorm] = {{ "{color4}", "{color0}" }}, + [SchemeSel] = {{ "{color1}", "{color0}" }}, [SchemeOut] = {{ "{color13}", "{color8}" }}, }}; diff --git a/config/wal/templates/colors-wal-dwm.h b/config/wal/templates/colors-wal-dwm.h index 133c7a3..eeea645 100644 --- a/config/wal/templates/colors-wal-dwm.h +++ b/config/wal/templates/colors-wal-dwm.h @@ -1,9 +1,9 @@ -static const char norm_fg[] = "{color13}"; +static const char norm_fg[] = "{color4}"; static const char norm_bg[] = "{color0}"; static const char norm_border[] = "{color8}"; -static const char sel_fg[] = "{color13}"; -static const char sel_bg[] = "{color4}"; +static const char sel_fg[] = "{color1}"; +static const char sel_bg[] = "{color0}"; static const char sel_border[] = "{color9}"; static const char *colors[][3] = {{ diff --git a/config/wal/templates/dunstrc b/config/wal/templates/dunstrc index cea407f..61972d6 100644 --- a/config/wal/templates/dunstrc +++ b/config/wal/templates/dunstrc @@ -24,7 +24,7 @@ idle_threshold = 120 ### Text ### - font = Terminus 9 + font = Terminus Medium 8 line_height = 0 markup = full @@ -59,7 +59,7 @@ history_length = 20 ### Misc/Advanced ### - dmenu = /usr/local/bin/dmenu -fn "Terminus:style=Regular:pixelsize=12" -nb "{color0}" -nf "{color13}" -sb "{color4}" -sf "{color13}" -p dunst: + dmenu = /usr/local/bin/dmenu -p dunst: browser = /usr/local/bin/firefox -new-tab always_run_script = true title = Dunst diff --git a/config/wal/templates/zathurarc b/config/wal/templates/zathurarc index ebfd44a..ebb74ca 100644 --- a/config/wal/templates/zathurarc +++ b/config/wal/templates/zathurarc @@ -32,3 +32,4 @@ set render-loading-fg "{color15}" set window-title-home-tilde true set statusbar-basename true set selection-clipboard clipboard +set font "SauceCodePro Nerd Font Mono 10" diff --git a/config/youtube-dl/config b/config/youtube-dl/config index 46041ac..0b55e08 100644 --- a/config/youtube-dl/config +++ b/config/youtube-dl/config @@ -2,7 +2,7 @@ # always use axel --external-downloader axel # coherent output format ---output ~/vid/%(uploader)s:%(title)s.%(ext)s +--output ~/vid/%(uploader)s/%(title)s.%(ext)s # always merge into mkv --merge-output-format mkv # embed subtitles if they are to be written diff --git a/config/youtube-dl/config-music b/config/youtube-dl/config-music index a5cf801..5860766 100644 --- a/config/youtube-dl/config-music +++ b/config/youtube-dl/config-music @@ -1,6 +1,6 @@ # only download audio stream --format bestaudio # always use axel ---external-downloader axel +#--external-downloader axel # coherent output format ---output ~/mus/%(uploader)s/%(album)s/S%(track_number)s-%(track)s.%(ext)s +--output ~/mus/%(uploader)s/%(album)s/S%(track_number)02d-%(track)s.%(ext)s diff --git a/config/zsh/.zshrc b/config/zsh/.zshrc deleted file mode 120000 index c8b42f4..0000000 --- a/config/zsh/.zshrc +++ /dev/null @@ -1 +0,0 @@ -zshrc \ No newline at end of file diff --git a/config/zsh/00-opts.zsh b/config/zsh/00-opts.zsh deleted file mode 100644 index 4573008..0000000 --- a/config/zsh/00-opts.zsh +++ /dev/null @@ -1,3 +0,0 @@ -setopt append_history auto_pushd hist_ignore_dups inc_append_history -setopt interactive_comments list_packed no_auto_menu no_autocd -setopt no_beep no_share_history pushd_ignore_dups diff --git a/config/zsh/binds.zsh b/config/zsh/binds.zsh deleted file mode 100644 index 02c0fc7..0000000 --- a/config/zsh/binds.zsh +++ /dev/null @@ -1,12 +0,0 @@ -autoload up-line-or-beginning-search down-line-or-beginning-search edit-command-line -zle -N up-line-or-beginning-search -zle -N down-line-or-beginning-search -zle -N edit-command-line -bindkey -v -bindkey -a "!" edit-command-line -[[ -n "$terminfo[kpp]" ]] && bindkey "$terminfo[kpp]" up-line-or-beginning-search # PAGE UP -[[ -n "$terminfo[knp]" ]] && bindkey "$terminfo[knp]" down-line-or-beginning-search # PAGE DOWN -[[ -n "$terminfo[khome]" ]] && bindkey "$terminfo[khome]" beginning-of-line # HOME -[[ -n "$terminfo[kend]" ]] && bindkey "$terminfo[kend]" end-of-line # END -[[ -n "$terminfo[kdch1]" ]] && bindkey "$terminfo[kdch1]" delete-char # DELETE -[[ -n "$terminfo[kbs]" ]] && bindkey "$terminfo[kbs]" backward-delete-char # BACKSPACE diff --git a/config/zsh/functions.zsh b/config/zsh/functions.zsh deleted file mode 100644 index fca5709..0000000 --- a/config/zsh/functions.zsh +++ /dev/null @@ -1,2 +0,0 @@ -mc() { mkdir $1 && cd $1 } -pw() { "$(which -p pw)" "$1" "$2" & } diff --git a/config/zsh/themes/p10k.zsh b/config/zsh/themes/p10k.zsh deleted file mode 100644 index db7e1a9..0000000 --- a/config/zsh/themes/p10k.zsh +++ /dev/null @@ -1,856 +0,0 @@ -# Generated by Powerlevel10k configuration wizard on 2019-10-24 at 12:41 PDT. -# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh. -# Wizard options: nerdfont-complete + powerline, small icons, rainbow, -# slanted separators, slanted heads, flat tails, 2 lines, disconnected, no frame, -# compact, few icons, concise. -# Type `p10k configure` to generate another config. -# -# Config for Powerlevel10k with powerline prompt style with colorful background. -# 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 "%${i}F${(l:3::0:)i}%f " ${${(M)$((i%8)):#7}:+$'\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 - setopt no_unset extended_glob - zmodload zsh/langinfo - if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then - local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8} - fi - - # 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_*' - - # The list of segments shown on the left. Fill it with the most important segments. - typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( - # =========================[ Line #1 ]========================= - os_icon # os identifier - prompt_char # prompt symbol - dir # current directory - vcs # git status - # =========================[ Line #2 ]========================= - newline - # 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=( - # =========================[ Line #1 ]========================= - status # exit code of the last command - command_execution_time # duration of the last command - background_jobs # presence of background jobs - # 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) - # 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) - # rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) - # rvm # ruby version from rvm (https://rvm.io) - # kubecontext # current kubernetes context (https://kubernetes.io/) - # terraform # terraform workspace (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) - context # user@hostname - # nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) - # ranger # ranger shell (https://github.com/ranger/ranger) - # vpn_ip # virtual private network indicator - # ram # free RAM - # load # CPU load - # time # current time - # =========================[ Line #2 ]========================= - newline - # public_ip # public IP address - # proxy # system-wide http/https/ftp proxy - # battery # internal battery - # example # example user-defined segment (see prompt_example function below) - ) - - # To disable default icons for all segments, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION=''. - # - # To enable default icons for all segments, don't define POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION - # or set it to '${P9K_VISUAL_IDENTIFIER}'. - # - # To remove trailing space from all default icons, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION - # to '${P9K_VISUAL_IDENTIFIER% }'. - # - # To enable default icons for one segment (e.g., dir), set - # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'. - # - # To assign a specific icon to one segment (e.g., dir), set - # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='⭐'. - # - # To assign a specific icon to a segment in a given state (e.g., dir in state NOT_WRITABLE), - # set POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'. - # - # Note: You can use $'\u2B50' instead of '⭐'. It's especially convenient when specifying - # icons that your text editor cannot render. Don't forget to put $ and use single quotes when - # defining icons via Unicode codepoints. - # - # Note: Many default icons cannot be displayed with system fonts. You'll need to install a - # capable font to use them. See POWERLEVEL9K_MODE below. - typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER// }' - - # This option makes a difference only when default icons are enabled for all or some prompt - # segments (see POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION above). LOCK_ICON can be printed as - # $'\uE0A2', $'\uE138' or $'\uF023' depending on POWERLEVEL9K_MODE. The correct value of this - # parameter depends on the provider of the font your terminal is using. - # - # Font Provider | POWERLEVEL9K_MODE - # ---------------------------------+------------------- - # Powerline | powerline - # Font Awesome | awesome-fontconfig - # Adobe Source Code Pro | awesome-fontconfig - # Source Code Pro | awesome-fontconfig - # Awesome-Terminal Fonts (regular) | awesome-fontconfig - # Awesome-Terminal Fonts (patched) | awesome-patched - # Nerd Fonts | nerdfont-complete - # Other | compatible - # - # If this looks overwhelming, either stick with a preinstalled system font and set - # POWERLEVEL9K_MODE=compatible, or install the recommended Powerlevel10k font from - # https://github.com/romkatv/powerlevel10k/#recommended-meslo-nerd-font-patched-for-powerlevel10k - # and set POWERLEVEL9K_MODE=nerdfont-complete. - typeset -g POWERLEVEL9K_MODE=nerdfont-complete - - # 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=false - - # 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= - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX= - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX= - # Connect right prompt lines with these symbols. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX= - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX= - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX= - - # 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 using this option. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' - typeset -g POWERLEVEL9K_MULTILINE_FIRST_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=242 - # 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 - - # Separator between same-color segments on the left. - typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B9' - # Separator between same-color segments on the right. - typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B9' - # Separator between different-color segments on the left. - typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B8' - # Separator between different-color segments on the right. - typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0BE' - # The right end of left prompt. - typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B8' - # The left end of right prompt. - typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0BE' - # The left end of left prompt. - typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' - # The right end of right prompt. - typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='' - # 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 - # typeset -g POWERLEVEL9K_OS_ICON_BACKGROUND=0 - # Make the icon bold. - typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='${P9K_CONTENT// }' - - ################################[ prompt_char: prompt symbol ]################################ - # Transparent background. - typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND=8 - # Green prompt symbol if the last command succeeded. - typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=76 - # Red prompt symbol if the last command failed. - typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=196 - # Default prompt symbol. - # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=' INSERT ' - # Prompt symbol in command vi mode. - # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=' NORMAL ' - # Prompt symbol in visual vi mode. - # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='Ⅴ' - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION=' VISUAL ' - # Prompt symbol in overwrite vi mode. - # typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION=' REPLACE ' - 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 ]################################## - # Current directory background color. - # typeset -g POWERLEVEL9K_DIR_BACKGROUND=4 - # Default current directory foreground color. - typeset -g POWERLEVEL9K_DIR_FOREGROUND=254 - # 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=250 - # Color of the anchor directory segments. Anchor segments are never shortened. The first - # segment is always an anchor. - typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255 - # 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 - .ruby-version - .shorten_folder_marker - .svn - .terraform - CVS - Cargo.toml - composer.json - go.mod - package.json - ) - typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" - # 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). - 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 directories. - typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true - # Show this icon when the current directory is not writable. POWERLEVEL9K_DIR_SHOW_WRITABLE - # above must be set to true for this parameter to have effect. - # typeset -g POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐' - - # Custom prefix. - # typeset -g POWERLEVEL9K_DIR_PREFIX='in ' - - # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons for different directories. - # It must be an array with 3 * N elements. Each triplet consists of: - # - # 1. A pattern against which the current directory is matched. Matching is done with - # extended_glob option enabled. - # 2. Directory class for the purpose of styling. - # 3. Icon. - # - # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. If there - # are no matches, the directory will have no icon. - # - # Example: - # - # typeset -g POWERLEVEL9K_DIR_CLASSES=( - # '~/work(/*)#' WORK '(╯°□°)╯︵ ┻━┻' - # '~(/*)#' HOME '⌂' - # '*' DEFAULT '') - # - # With these settings, the current directory in the prompt may look like this: - # - # (╯°□°)╯︵ ┻━┻ ~/work/projects/important/urgent - # - # Or like this: - # - # ⌂ ~/best/powerlevel10k - # - # You can also set different colors for directories of different classes. Remember to override - # FOREGROUND, SHORTENED_FOREGROUND and ANCHOR_FOREGROUND for every directory class that you wish - # to have its own color. - # - # typeset -g POWERLEVEL9K_DIR_WORK_BACKGROUND=4 - # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=254 - # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=250 - # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=255 - # - typeset -g POWERLEVEL9K_DIR_CLASSES=() - - #####################################[ vcs: git status ]###################################### - # Versio control system colors. - # typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2 - # typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3 - # typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=2 - # typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3 - # typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8 - - # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon. - typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' - POWERLEVEL9K_VCS_BRANCH_ICON=${(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='?' - POWERLEVEL9K_VCS_UNTRACKED_ICON=${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON} - - # Formatter for Git status. - # - # Example output: master ⇣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 - - # Styling for different parts of Git status. - local meta='%7F' # white foreground - local clean='%0F' # black foreground - local modified='%0F' # black foreground - local untracked='%0F' # black foreground - local conflicted='%1F' # red foreground - - local res - local where # branch name, tag or commit - if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then - res+="${clean}${POWERLEVEL9K_VCS_BRANCH_ICON}" - where=${(V)VCS_STATUS_LOCAL_BRANCH} - elif [[ -n $VCS_STATUS_TAG ]]; then - res+="${meta}#" - where=${(V)VCS_STATUS_TAG} - else - res+="${meta}@" - where=${VCS_STATUS_COMMIT[1,8]} - fi - - # If local branch name or tag is at most 32 characters long, show it in full. - # Otherwise show the first 12 … the last 12. - (( $#where > 32 )) && where[13,-13]="…" - res+="${clean}${where//\%/%%}" # escape % - - # 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//\%/%%}" # escape % - fi - - # ⇣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}" - # *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}${POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" - - typeset -g my_git_format=$res - } - functions -M my_git_formatter 2>/dev/null - - # 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}}' - # Enable counters for staged, unstaged, etc. - typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 - - # Custom icon. - typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION= - # Custom prefix. - # typeset -g POWERLEVEL9K_VCS_PREFIX='on ' - - # 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) - - ##########################[ 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=false - typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' - # typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2 - # typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0 - - # 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_VISUAL_IDENTIFIER_EXPANSION='✔' - # typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2 - # typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0 - - # 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=false - typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='↵' - # typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3 - # typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1 - - # Status when the last command was terminated by a signal. - typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true - # 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='↵' - # typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3 - # typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1 - - # 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_VISUAL_IDENTIFIER_EXPANSION='↵' - # typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3 - # typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1 - - ###################[ command_execution_time: duration of the last command ]################### - # Execution time color. - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0 - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3 - # Show duration of the last command if takes longer than 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 - # 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='took ' - - #######################[ background_jobs: presence of background jobs ]####################### - # Background jobs color. - # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=6 - # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND=0 - # Don't show the number of background jobs. - typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false - # Icon to show when there are background jobs. - typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER// }' - - ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### - # NordVPN connection indicator color. - # typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=7 - # typeset -g POWERLEVEL9K_NORDVPN_BACKGROUND=4 - # 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=3 - # typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0 - # Custom icon. - # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' - - ######################################[ ram: free RAM ]####################################### - # RAM color. - # typeset -g POWERLEVEL9K_RAM_FOREGROUND=0 - # typeset -g POWERLEVEL9K_RAM_BACKGROUND=3 - # Custom icon. - # typeset -g POWERLEVEL9K_RAM_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=0 - # typeset -g POWERLEVEL9K_LOAD_NORMAL_BACKGROUND=2 - # Load color when load is between 50% and 70%. - # typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=0 - # typeset -g POWERLEVEL9K_LOAD_WARNING_BACKGROUND=3 - # Load color when load is over 70%. - # typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=0 - # typeset -g POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND=1 - # Custom icon. - # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐' - - ##################################[ context: user@hostname ]################################## - # Default context color. - typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3 - typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0 - # Default context format: %n is username, %m is hostname. - typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' - - # Context color when running with privileges. - typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1 - typeset -g POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND=0 - # Context format when running with privileges: %n is username, %m is hostname. - typeset -g POWERLEVEL9K_CONTEXT_ROOT_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='with ' - - ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### - # Python virtual environment color. - # typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=0 - # typeset -g POWERLEVEL9K_VIRTUALENV_BACKGROUND=4 - # Don't show Python version next to the virtual environment name. - typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=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=0 - # typeset -g POWERLEVEL9K_ANACONDA_BACKGROUND=4 - # Don't show Python version next to the anaconda environment name. - typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=false - # Separate environment name from Python version only with a space. - typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER= - # Custom icon. - # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' - - ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ - # Pyenv color. - # typeset -g POWERLEVEL9K_PYENV_FOREGROUND=0 - # typeset -g POWERLEVEL9K_PYENV_BACKGROUND=4 - # Don't show the current Python version if it's the same as global. - typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false - # Custom icon. - # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' - - ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## - # Nodenv color. - # typeset -g POWERLEVEL9K_NODENV_FOREGROUND=2 - # typeset -g POWERLEVEL9K_NODENV_BACKGROUND=0 - # Don't show node version if it's the same as global: $(nodenv version-name) == $(nodenv global). - typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false - # 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 - # 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=2 - # typeset -g POWERLEVEL9K_NODEENV_BACKGROUND=0 - # 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=7 - # typeset -g POWERLEVEL9K_NODE_VERSION_BACKGROUND=2 - # 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=255 - # typeset -g POWERLEVEL9K_GO_VERSION_BACKGROUND=2 - # 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=0 - # typeset -g POWERLEVEL9K_RUST_VERSION_BACKGROUND=208 - # 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=7 - # typeset -g POWERLEVEL9K_DOTNET_VERSION_BACKGROUND=5 - # 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='⭐' - - #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## - # Rbenv color. - # typeset -g POWERLEVEL9K_RBENV_FOREGROUND=0 - # typeset -g POWERLEVEL9K_RBENV_BACKGROUND=1 - # Don't show ruby version if it's the same as global: $(rbenv version-name) == $(rbenv global). - typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false - # Custom icon. - # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐' - - #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## - # Rvm color. - # typeset -g POWERLEVEL9K_RVM_FOREGROUND=0 - # typeset -g POWERLEVEL9K_RVM_BACKGROUND=240 - # 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='⭐' - - ################[ terraform: terraform workspace (https://www.terraform.io) ]################# - # Terraform color. - # typeset -g POWERLEVEL9K_TERRAFORM_FOREGROUND=4 - # typeset -g POWERLEVEL9K_TERRAFORM_BACKGROUND=0 - # Custom icon. - # typeset -g POWERLEVEL9K_TERRAFORM_VISUAL_IDENTIFIER_EXPANSION='⭐' - - #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# - # AWS profile color. - # typeset -g POWERLEVEL9K_AWS_FOREGROUND=7 - # typeset -g POWERLEVEL9K_AWS_BACKGROUND=1 - # Custom icon. - # typeset -g POWERLEVEL9K_AWS_VISUAL_IDENTIFIER_EXPANSION='⭐' - - #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# - # AWS Elastic Beanstalk environment color. - # typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2 - # typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0 - # Custom icon. - # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' - - ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## - # Azure account name color. - # typeset -g POWERLEVEL9K_AZURE_FOREGROUND=7 - # typeset -g POWERLEVEL9K_AZURE_BACKGROUND=4 - # Custom icon. - # typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐' - - #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# - # 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=0 - # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_BACKGROUND=2 - # 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=7 - typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5 - # 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". - # - # 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='at ' - - ###############################[ public_ip: public IP address ]############################### - # Public IP color. - # typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7 - # typeset -g POWERLEVEL9K_PUBLIC_IP_BACKGROUND=0 - # 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=0 - # typeset -g POWERLEVEL9K_VPN_IP_BACKGROUND=6 - # When on VPN, show just an icon without the IP address. - typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= - # Regular expression for the VPN network interface. Run ifconfig while on VPN to see the - # name of the interface. - typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(wg|(.*tun))[0-9]*' - # Icon to show when on VPN. - typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER// }' - - #########################[ proxy: system-wide http/https/ftp proxy ]########################## - # Proxy color. - # typeset -g POWERLEVEL9K_PROXY_FOREGROUND=4 - # typeset -g POWERLEVEL9K_PROXY_BACKGROUND=0 - # 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=1 - # Show battery in green when it's charging or fully charged. - typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=2 - # Show battery in yellow when it's discharging. - typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3 - # Battery pictograms going from low to high level of charge. - typeset -g POWERLEVEL9K_BATTERY_STAGES=$'\uf58d\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf578' - # Don't show the remaining time to charge/discharge. - typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false - # typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0 - - ####################################[ time: current time ]#################################### - # Current time color. - # typeset -g POWERLEVEL9K_TIME_FOREGROUND=0 - # typeset -g POWERLEVEL9K_TIME_BACKGROUND=7 - # 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='at ' - - # 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 -b red -f yellow -i '⭐' -t 'hello, %n' - } - - # User-defined prompt segments can be customized the same way as built-in segments. - # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=4 - typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}' -} - -(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} -'builtin' 'unset' 'p10k_config_opts' diff --git a/config/zsh/zshrc b/config/zsh/zshrc deleted file mode 100644 index 559b1ca..0000000 --- a/config/zsh/zshrc +++ /dev/null @@ -1,53 +0,0 @@ -export XDG_CACHE_HOME=${XDG_CACHE_HOME:=~/.cache} -export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:=~/.config} -export XDG_DATA_HOME=${XDG_DATA_HOME:=~/.local/share} -if printf "$PATH"|grep -q ".local/bin"; then - export PATH="$PATH:$HOME/.local/bin" -fi - -HISTFILE=$XDG_DATA_HOME/zsh/histfile -HISTSIZE=5000 -SAVEHIST=5000 - -typeset -A ZPLGM -ZPLG_HOME=$XDG_CACHE_HOME/zsh/zplugin -ZPLGM[HOME_DIR]=$ZPLG_HOME -ZPLGM[ZCOMPDUMP_PATH]=$XDG_CACHE_HOME/zsh/zcompdump -ZPLGM[COMPLETIONS_DIR]=$XDG_DATA_HOME/zsh/completions -if [[ ! -f $ZPLG_HOME/bin/zplugin.zsh ]]; then - git clone https://github.com/zdharma/zplugin $ZPLG_HOME/bin - zcompile $ZPLG_HOME/bin/zplugin.zsh -fi -autoload -Uz _zplugin -(( ${+_comps} )) && _comps[zplugin]=_zplugin -source $ZPLG_HOME/bin/zplugin.zsh -load=light - -#load zsh external configs -for file in $ZDOTDIR/*.zsh; do - source "$file" -done -#make fpath not contain all the completions I don't use (enable completions using "zplugin creinstall [PATH_TO_COMPLETIONS_FOLDER]") -if [[ -d /usr/local/share/zsh ]]; then -fpath=($XDG_DATA_HOME/zsh/completions /usr/local/share/zsh/site-functions /usr/local/share/zsh/$ZSH_VERSION/functions/Calendar /usr/local/share/zsh/$ZSH_VERSION/functions/Chpwd /usr/local/share/zsh/$ZSH_VERSION/functions/Completion /usr/local/share/zsh/$ZSH_VERSION/functions/Exceptions /usr/local/share/zsh/$ZSH_VERSION/functions/MIME /usr/local/share/zsh/$ZSH_VERSION/functions/Exceptions /usr/local/share/zsh/$ZSH_VERSION/functions/Math /usr/local/share/zsh/$ZSH_VERSION/functions/Exceptions /usr/local/share/zsh/$ZSH_VERSION/functions/Misc /usr/local/share/zsh/$ZSH_VERSION/functions/TCP /usr/local/share/zsh/$ZSH_VERSION/functions/VCS_Info /usr/local/share/zsh/$ZSH_VERSION/functions/VCS_Info/Backends /usr/local/share/zsh/$ZSH_VERSION/functions/Zftp /usr/local/share/zsh/$ZSH_VERSION/functions/Zle) -else -fpath=($XDG_DATA_HOME/zsh/completions /usr/share/zsh/site-functions /usr/share/zsh/$ZSH_VERSION/functions/Calendar /usr/share/zsh/$ZSH_VERSION/functions/Chpwd /usr/share/zsh/$ZSH_VERSION/functions/Completion /usr/share/zsh/$ZSH_VERSION/functions/Exceptions /usr/share/zsh/$ZSH_VERSION/functions/MIME /usr/share/zsh/$ZSH_VERSION/functions/Exceptions /usr/share/zsh/$ZSH_VERSION/functions/Math /usr/share/zsh/$ZSH_VERSION/functions/Exceptions /usr/share/zsh/$ZSH_VERSION/functions/Misc /usr/share/zsh/$ZSH_VERSION/functions/TCP /usr/share/zsh/$ZSH_VERSION/functions/VCS_Info /usr/share/zsh/$ZSH_VERSION/functions/VCS_Info/Backends /usr/share/zsh/$ZSH_VERSION/functions/Zftp /usr/share/zsh/$ZSH_VERSION/functions/Zle) -fi -# load shortcutrc and aliasrc to grab cross-shell niceties -[ -f "$XDG_CONFIG_HOME/shortcutrc" ] && source "$XDG_CONFIG_HOME/shortcutrc" -[ -f "$XDG_CONFIG_HOME/aliasrc" ] && source "$XDG_CONFIG_HOME/aliasrc" -# plugin loading goes here: -# theme -zplugin ice silent depth=1 -zplugin $load romkatv/powerlevel10k -# Ctrl-R functionality -zplugin $load zdharma/history-search-multi-word -# completions -zplugin ice blockf -zplugin $load zsh-users/zsh-completions -# good, fast syntax highlighting -zplugin ice silent wait!1 atload"ZPLGM[COMPINIT_OPTS]=-C; zpcompinit" -zplugin $load zdharma/fast-syntax-highlighting - -# theme config loading -[ -f "$ZDOTDIR/themes/p10k.zsh" ] && source "$ZDOTDIR/themes/p10k.zsh"
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/bother | 10 | ||||
-rwxr-xr-x | bin/comm-sel | 13 | ||||
-rwxr-xr-x | bin/mbsync-cron (renamed from bin/popmail) | 28 | ||||
-rwxr-xr-x | bin/opener | 41 | ||||
-rwxr-xr-x | bin/pw | 29 |
5 files changed, 96 insertions, 25 deletions
diff --git a/bin/bother b/bin/bother new file mode 100755 index 0000000..701b1a4 --- /dev/null +++ b/bin/bother @@ -0,0 +1,10 @@ +#!/bin/sh +# puts up a critical notification if $HOME/today exists, containing the contents of that file. +if [ -f "$HOME"/today ]; then + until pgrep -x dwm>/dev/null + do + true + done + sleep 0.5 + notify-send -u critical "DO TODAY:" "$(cat "$HOME"/today)" +fi diff --git a/bin/comm-sel b/bin/comm-sel index f67787f..0678679 100755 --- a/bin/comm-sel +++ b/bin/comm-sel @@ -1,9 +1,14 @@ #!/bin/sh -# sends a list of communication TUIs (e.g irssi) to dmenu and allows the user to choose one. +# sends a list of communication TUIs (e.g epic5) to dmenu and allows the user to choose one. # class "comm" is added to enable window managers (e.g dwm) to do specific things with them. -case "$(dmenu_path|grep -E "irssi|6cord|scli$"|dmenu -p "choose chat app:")" in - irssi) $TERMINAL -c comm -e irssi --home=$XDG_CONFIG_HOME/irssi&;; - 6cord) $TERMINAL -c comm -e 6cord&;; +# st-altscreen is a built of st that doesn't have scrollback or extra keybindings, so it doesn't get in the way of whatever binds clients have. +# as a result it's lighter than the build of st i use for interactive use. +if command -v st-altscreen>/dev/null; then + TERMINAL="st-altscreen" +fi +case "$(dmenu_path|grep -E "epic5$|6cord|scli$"|dmenu -p "choose chat app:")" in + epic5) $TERMINAL -c comm -e epic5 -l "$XDG_CONFIG_HOME/epic/epicrc" ensa&;; + 6cord) $TERMINAL -c comm -e env TERM=xterm 6cord&;; scli) $TERMINAL -c comm -e scli&;; *) notify-send "comm-sel error" "invalid program selection"&&return 1;; esac diff --git a/bin/popmail b/bin/mbsync-cron index d1bae9f..dd69c01 100755 --- a/bin/popmail +++ b/bin/mbsync-cron @@ -21,23 +21,20 @@ if ! [ -d "$XDG_DATA_HOME/neomutt" ]; then fi # check account for new mail, notify for new content syncandnotify() { - # sanitize $account for use in function - acc="$(printf '%s\n' "$account" | sed "s/.*\///")" - mbsync "$acc">/dev/null 2>&1 + mbsync "$account">/dev/null 2>&1 # $new holds an index of all mail since the last time popmail ran - new=$(find "$XDG_DATA_HOME/mail/$acc/inbox/new/" -type f -newer "$XDG_DATA_HOME/neomutt/.popmail-last" 2> /dev/null) + new=$(find "$XDG_DATA_HOME/mail/$account/inbox/new/" -type f -newer "$XDG_DATA_HOME/neomutt/.popmail-last" 2> /dev/null) # $newcount is the number of new mails newcount=$(printf '%s\n' "$new" | sed '/^\s*$/d' | wc -l | tr -d " ") - # send $newcount to a file specific to $acc + # send $newcount to a file specific to $account # the preceding space makes generating a status bar string easier. - printf ' %s' "$newcount" > "$XDG_DATA_HOME/mail/$acc/note" + printf ' %s' "$newcount" > "$XDG_DATA_HOME/mail/$account/note" # don't notify if there isn't new mail if [ "$newcount" -gt "0" ]; then - notify-send --app-name="popmail" "mail fetcher" "new mail for profile $acc! [$newcount]" & + notify-send --app-name="popmail" "mail fetcher" "new mail for profile $account! [$newcount]" & + # reduce output if you have a lot of new mail + if [ "$newcount" -lt "16" ]; then for file in $new; do - # broken lines, not sure what they're supposed to do - #from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed 's/^[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//') - #subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | sed '$D' | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | sed 's/^Subject: //' | sed 's/^{[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//' | tr -d '\n') # Extract subject and sender from mail. # modified version of broken $from variable, only prints the first from (so forwards are slightly unclear) from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed '1!d'| sed '1,/From/s/From: //') @@ -47,6 +44,7 @@ syncandnotify() { # sleep for half a second to avoid notification clog sleep .5 done + fi fi } @@ -65,7 +63,13 @@ do done wait -# collect all previously created note files and collate them into a file that can be read by a status bar to notify the user of new mails -printf "$(cat "$XDG_DATA_HOME"/mail/*/note|tr " " "|"|sed 's/|//')\n">"$XDG_DATA_HOME/mail/note" +## OLD: collect all previously created note files and collate them into a file that can be read by a status bar to notify the user of new mails +#printf "$(cat "$XDG_DATA_HOME"/mail/*/note|tr " " "|"|sed 's/|//')\n">"$XDG_DATA_HOME/mail/note" +# use a single symbol to indicate new mail in any maildir +if cat "$XDG_DATA_HOME"/mail/*/note|grep -q '[1-9]'; then + printf ' \n'>"$XDG_DATA_HOME/mail/note" +else + printf '\n'>"$XDG_DATA_HOME/mail/note" +fi #create/update modification time on an empty file that indicates the time of the last run of popmail touch "$XDG_DATA_HOME/neomutt/.popmail-last" diff --git a/bin/opener b/bin/opener new file mode 100755 index 0000000..755da51 --- /dev/null +++ b/bin/opener @@ -0,0 +1,41 @@ +#!/bin/sh +# opener: opens files according to its contents +# takes one path as its argument, launches the appropriate program for it +if ! [ -f "$1" ]; then + printf 'file %s does not exist!\n' "$1" >/dev/stderr + return 1 +fi +FILEPATH="$1" +FILEMIME="$(file -ib "$FILEPATH")" +echo() { + printf '%s\n' "$*" +} +case "$FILEMIME" in + #ebooks + application/epub*|application/pdf|application/postscript|image/vnd.djvu) + if [ -n "$READER" ]; then + $READER "$FILEPATH">/dev/null 2>&1 & + else + zathura "$FILEPATH" & + fi ;; + #videos + video/*) + mpv --input-ipc-server=/tmp/mpv-socket$(date +%s) --quiet "$FILEPATH" >/dev/null 2>&1 & ;; + #images + image/*) + sxiv -a "$FILEPATH">/dev/null 2>&1 & ;; + #audio + audio/*) + mpv --input-ipc-server=/tmp/mpv-socket$(date +%s) "$FILEPATH" >/dev/null 2>&1 & ;; + #text + text/*) + if [ -n "$EDITOR" ]; then + $EDITOR "$FILEPATH">/dev/null 2>&1 & + else + vi "$FILEPATH" & + fi ;; + #catchall + *) + echo "file $(basename "$FILEPATH") could not be opened. its type is $FILEMIME, go tell ensa that opener didn't work" >/dev/stderr + return 1 ;; +esac diff --git a/bin/pw b/bin/pw index 140f1dc..cec9e54 100755 --- a/bin/pw +++ b/bin/pw @@ -1,14 +1,25 @@ #!/bin/sh -# generates a password of length $1, sends it to stdout if $2 isn't clip. -# if it is clip, sends it to the X clipboard and clears it after 10 seconds. +# generates a password of length $1, sends it to stdout if $2 is blank. +# if $2 is clip, sends it to the X clipboard and clears it after 10 seconds. +# if $2 is anything else, sends it to the X primary selection and clears it after 10 seconds if [ "$1" = "-h" ]; then - printf 'usage: %s [-h]|LENGTH [clip]\n' "$(basename $0)">/dev/stderr&&return 1 + printf 'usage: %s [-h]|LENGTH [clip|pri]\n' "$(basename $0)">/dev/stderr + return 1 fi -PW=$(tr -cd "[:alnum:][:punct:]"</dev/urandom|fold -w $1|head -1) -if [ "$2" = "clip" ]; then - printf '%s' "$PW"|xclip -sel clip -i&¬ify-send "Password Generated" "$1-character password generated. It will clear in 10 seconds." - sleep 10 - printf "\0"|xclip -sel clip -i&¬ify-send "Clipboard Cleared" "Generated password cleared from clipboard." +PW=$(tr -cd "[:alnum:][:punct:]"</dev/urandom|fold -w "$1"|head -1) +if [ -n "$2" ]; then + # streamline selection variation by using $SEL + if [ "$2" = "clip" ]; then + SEL="-sel clip" + else + SEL="" + fi + # backgrounds so the user doesn't have to wait 10 seconds to get a prompt again + { + printf "%s" "$PW"|xclip $SEL -i&¬ify-send "Password Generated" "$1-character password generated. It will clear in 10 seconds." + sleep 10 + printf '\0'|xclip $SEL -i&¬ify-send "Clipboard Cleared" "Generated password cleared from clipboard." + } & else - printf '%s\n' "$PW" + printf '%s\n' "$PW" fi |