diff --git a/.bash_login b/.bash_login deleted file mode 100644 index 168e140..0000000 --- a/.bash_login +++ /dev/null @@ -1,8 +0,0 @@ -# Executed by bash when a login shell starts - -# Mimic bash's default behavior explicitly -if [ -f "$HOME/.profile" ]; then - source "$HOME/.profile" -else - source "$HOME/.bashrc" -fi diff --git a/.bash_logout b/.bash_logout index e7aef5a..4a71b10 100644 --- a/.bash_logout +++ b/.bash_logout @@ -1,3 +1,3 @@ -# Executed by bash when a login shell exits +#!/bin/bash -source "$HOME/.config/shell/logout.sh" +. "$XDG_CONFIG_HOME/shell/logout" diff --git a/.bash_profile b/.bash_profile deleted file mode 100644 index 106a7a9..0000000 --- a/.bash_profile +++ /dev/null @@ -1,10 +0,0 @@ -# Executed by bash when a login shell starts - -# Mimic bash's default behavior explicitly -if [ -f "$HOME/.bash_login" ]; then - source "$HOME/.bash_login" -elif [ -f "$HOME/.profile" ]; then - source "$HOME/.profile" -else - source "$HOME/.bashrc" -fi diff --git a/.bashrc b/.bashrc index c9687e4..e67c28a 100644 --- a/.bashrc +++ b/.bashrc @@ -1,85 +1,79 @@ -# Executed by bash when a (non-)login shell starts +#!/bin/bash + +# `bash`-specific configurations -# Ensure bash is running interactively -[[ $- != *i* ]] && return +# Load configuration files common to all kinds of shells, +# if not already done by a `bash` login shell +[ -z "$PROFILE_LOADED" ] && [ -f "$HOME/.profile" ] && . "$HOME/.profile" -# Check if a command can be found on the $PATH -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} +# Ensure `bash` is running interactively +case $- in + *i*) ;; + *) return;; +esac +# Configure the `history` -# Enable XON/XOFF software flow control -stty -ixon +# Set these environment variables here +# to avoid conflict/overlap with `zsh` -# Report status of background jobs immediately -set -o notify -# Show number of running jobs when exiting a shell -shopt -s checkjobs - -# Just type the directory to cd into it -shopt -s autocd -# Correct minor spelling mistakes with cd -shopt -s cdspell - -# Include hidden files in * glob expansion -shopt -s dotglob -shopt -s extglob -# Expand ** into (recursive) directories -shopt -s globstar -# Ignore case when * expanding -shopt -s nocaseglob - -# Update $ROWS and $COLUMNS after each command -shopt -s checkwinsize - - - -# Set these environment variables here (and not in ~/.profile) -# due to conflict/overlap with zsh export HISTFILE="$XDG_STATE_HOME/bash/history" -export HISTSIZE=999999 # number of lines kept in memory -export HISTFILESIZE=999999 # number of lines kept in $HISTFILE -# Ignore commands prefixed with a space, +export HISTSIZE=999999 # Number of lines kept in memory +export HISTFILESIZE=999999 # Number of lines kept in the `$HISTFILE` + +# Ignore commands prefixed with a space # and ones entered identically just before -# (this mimics zsh's default behavior) export HISTCONTROL=ignoreboth -# Remember multi-line commands in history as one command -shopt -s cmdhist -# Do not overwrite .bash_history file -shopt -s histappend -# Allow re-editing a failed history substitution -shopt -s histreedit -# Store multi-line commands in history without semicolons -shopt -s lithist +shopt -s cmdhist # Remember multi-line commands as just one line +shopt -s histappend # Do not overwrite the `$HISTFILE` +shopt -s histreedit # Allow editing failed history substitutions +shopt -s lithist # Store multi-line commands in history without `;` +# Make `bash` feel a bit more like `zsh` -# Initialize various utilities and aliases -source "$HOME/.config/shell/init.sh" +shopt -s autocd # Just type the directory to `cd` into it +shopt -s cdspell # Correct minor spelling mistakes with `cd` +shopt -s checkjobs # Show number of running jobs when exiting `bash` +shopt -s checkwinsize # Update `$ROWS` and `$COLUMNS` after commands +shopt -s globstar # Expand ** into recursive directories +stty -ixon # Prevent Ctrl+S from freezing `bash` -# Enable programmable completion features -if ! shopt -oq posix; then - if [ -f /usr/share/bash-completion/bash_completion ]; then - source /usr/share/bash-completion/bash_completion - elif [ -f /etc/bash_completion ]; then - source /etc/bash_completion - fi + +# Make `bash` show `chroot`s +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) fi -# Enable completions for various tools -_command_exists invoke && eval "$(invoke --print-completion-script=bash)" -_command_exists nox && eval "$(register-python-argcomplete nox)" -_command_exists pip && eval "$(pip completion --bash)" -_command_exists pipx && eval "$(register-python-argcomplete pipx)" -_command_exists poetry && eval "$(poetry completions bash)" + +# Make `bash` more colorful + +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' +fi + + +# Enable tab completion + +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi # Add tab completion for all aliases to commands with completion functions # (must come after bash completions have been set up) @@ -140,86 +134,5 @@ _alias_completion() { new_completion="${new_completion% *} $alias_name" echo "$new_completion" >> "$tmp_file" done < <(alias -p | sed -Ene "s/$alias_regex/\1 '\2' '\3'/p") - source "$tmp_file" && \rm -f "$tmp_file" + . "$tmp_file" && \rm -f "$tmp_file" }; _alias_completion - - - -# Mimic zsh's PowerLevel10k - -if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then - _debian_chroot=$(cat /etc/debian_chroot) -fi - -_prompt_git() { # Show a git repo's state - local out ref uncommited unstaged untracked ahead behind - # Check if the pwd contains a git repository and exit early if it does not - ref=$(git rev-parse --abbrev-ref --symbolic-full-name HEAD 2> /dev/null) - [ "$ref" == "" ] && return - # Check if the current HEAD is detached or reachable by a ref - printf "\033[0;37m " - if [ "$ref" == "HEAD" ]; then - ref=$(git rev-parse --short HEAD) - printf "@" - fi - printf "\033[0;32m$ref\033[0m" - # Indicate if local is ahead and/or behind upstream - ahead=0 - behind=0 - git status 2>/dev/null | ( - while read -r line ; do - case "$line" in - *'diverged'*) # For simplicity, a diverged local branch is - ahead=1 ; behind=1 ; break ; ;; # indicated as being - *'ahead'*) # both ahead and behind its upstream - ahead=1 ; ;; - *'behind'*) - behind=1 ; ;; - esac - done - - if [ $ahead -gt 0 ] && [ $behind -gt 0 ]; then - printf "\033[0;32m <>\033[0m" - elif [ $ahead -gt 0 ]; then - printf "\033[0;32m >\033[0m" - elif [ $behind -gt 0 ]; then - printf "\033[0;32m <\033[0m" - fi - ) - # Indicate stashed files with a * - [ "$(git stash list 2> /dev/null)" != "" ] && printf "\033[0;32m *\033[0m" - # Indicate uncommited/staged with a + - git diff-index --cached --exit-code --quiet HEAD -- 2> /dev/null - [ $? -gt 0 ] && printf "\033[0;33m +\033[0m" - # Indicate unstaged with a ! - git diff-files --exit-code --quiet 2> /dev/null - [ $? -gt 0 ] && printf "\033[0;33m !\033[0m" - # Indicate untracked files with a ? - if [ "$(git ls-files --exclude-standard --others 2> /dev/null)" != "" ]; then - printf "\033[0;34m ?\033[0m" - fi -} - -_prompt_jobs() { # Indicate running background jobs with a"%" - local running - (( $(jobs -rp | wc -l) )) && printf "\033[0;32m %\033[0m" -} - -_prompt_pyenv() { # Mimic zsh's pyenv/venv integration - if [ -n "$VIRTUAL_ENV" ]; then - echo -e "\033[0;36m py $(python -c "import os, sys; (hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix)) and print(os.path.basename(sys.prefix))")\033[0m" - elif [ -n "$PYENV_VERSION" ]; then - if [ "$PYENV_VERSION" != "system" ]; then - echo -e "\033[0;36m py $PYENV_VERSION\033[0m" - fi - elif [ -f "$(pwd)/.python-version" ]; then - echo -e "\033[0;36m py $(cat .python-version | sed ':a;N;$!ba;s/\n/:/g')\033[0m" - fi -} - -# Disable the default prompts set by pyenv and venv -export PYENV_VIRTUALENV_DISABLE_PROMPT=1 -export VIRTUAL_ENV_DISABLE_PROMPT=1 - -PS1='${chroot:+($_debian_chroot)}\w$(_prompt_git)$(_prompt_jobs)$(_prompt_pyenv) > ' -PS2='... ' diff --git a/.config/Nextcloud/nextcloud.cfg b/.config/Nextcloud/nextcloud.cfg deleted file mode 100644 index 51df95c..0000000 --- a/.config/Nextcloud/nextcloud.cfg +++ /dev/null @@ -1,46 +0,0 @@ -[General] -confirmExternalStorage=true -crashReporter=false -desktopEnterpriseChannel=daily -isVfsEnabled=false -launchOnSystemStartup=true -monoIcons=true -moveToTrash=false -newBigFolderSizeLimit=10000 -notifyExistingFoldersOverLimit=false -optionalServerNotifications=false -overrideLocalDir= -overrideServerUrl= -promptDeleteAllFiles=false -showCallNotifications=false -stopSyncingExistingFoldersOverLimit=false -useNewBigFolderSizeLimit=false - -[Accounts] -0\Folders\1\ignoreHiddenFiles=false -0\Folders\1\localPath=/home/alexander/Cloud/ -0\Folders\1\paused=false -0\Folders\1\targetPath=/ -0\Folders\1\version=2 -0\Folders\1\virtualFilesMode=off -0\authType=webflow -0\dav_user=alexander -0\networkDownloadLimit=0 -0\networkDownloadLimitSetting=-2 -0\networkProxyHostName= -0\networkProxyNeedsAuth=false -0\networkProxyPort=0 -0\networkProxySetting=0 -0\networkProxyType=0 -0\networkProxyUser= -0\networkUploadLimit=0 -0\networkUploadLimitSetting=-2 -0\url=https://getraenkemarkt.cloud -0\user=@Invalid() -0\webflow_user=alexander - -[Nextcloud] -autoUpdateCheck=false - -[Proxy] -type=2 diff --git a/.config/Nextcloud/sync-exclude.lst b/.config/Nextcloud/sync-exclude.lst deleted file mode 100644 index 4490d05..0000000 --- a/.config/Nextcloud/sync-exclude.lst +++ /dev/null @@ -1,52 +0,0 @@ -# This file contains fixed global exclude patterns - -*~ -~$* -.~lock.* -~*.tmp -]*.~* -]Icon\r* -].DS_Store -].ds_store -*.textClipping -._* -]Thumbs.db -]photothumb.db -System Volume Information - -.*.sw? -.*.*sw? - -].TemporaryItems -].Trashes -].DocumentRevisions-V100 -].Trash-* -.fseventd -.apdisk -.Spotlight-V100 - -.directory - -*.part -*.filepart -*.crdownload - -*.kate-swp -*.gnucash.tmp-* - -.synkron.* -.sync.ffs_db -.symform -.symform-store -.fuse_hidden* -*.unison -.nfs* - -My Saved Places. - -\#*# - -*.sb-* - -# LibreOffice's lock files -.lock diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml deleted file mode 100644 index 8445fe8..0000000 --- a/.config/alacritty/alacritty.toml +++ /dev/null @@ -1,56 +0,0 @@ -[colors] -draw_bold_text_with_bright_colors = true - -[cursor] -blink_interval = 500 -thickness = 0.1 -unfocused_hollow = true - -[cursor.style] -blinking = "On" -shape = "Block" - -[font] -size = 12.0 - -[font.bold] -family = "FiraCode Nerd Font" -style = "Bold" - -[font.bold_italic] -family = "FiraCode Nerd Font" -style = "Semibold" - -[font.italic] -family = "FiraCode Nerd Font" -style = "Light" - -[font.normal] -family = "FiraCode Nerd Font" -style = "Regular" - -[font.offset] -x = 0 -y = 0 - -[[keyboard.bindings]] -action = "SpawnNewInstance" -key = "Return" -mods = "Control|Shift" - -[scrolling] -history = 9999 -multiplier = 10 - -[terminal.shell] -args = ["-l"] -program = "/usr/bin/zsh" - -[window] -decorations = "none" -dynamic_padding = true -opacity = 0.95 - -[window.padding] -x = 10 -y = 10 diff --git a/.config/autostart/com.nextcloud.desktopclient.nextcloud.desktop b/.config/autostart/com.nextcloud.desktopclient.nextcloud.desktop deleted file mode 100644 index 219765f..0000000 --- a/.config/autostart/com.nextcloud.desktopclient.nextcloud.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Name=Nextcloud -GenericName=File Synchronizer -Exec="/usr/bin/nextcloud" --background -Terminal=false -Icon=Nextcloud -Categories=Network -Type=Application -StartupNotify=false -X-GNOME-Autostart-enabled=true -X-GNOME-Autostart-Delay=10 diff --git a/.config/bpython/config b/.config/bpython/config deleted file mode 100644 index e554a04..0000000 --- a/.config/bpython/config +++ /dev/null @@ -1,7 +0,0 @@ -[general] - -# Make `bpython` and `python` share their history -hist_file = ~/.python_history - -# No limit -hist_length = 0 diff --git a/.config/flameshot/flameshot.ini b/.config/flameshot/flameshot.ini deleted file mode 100644 index 7674f36..0000000 --- a/.config/flameshot/flameshot.ini +++ /dev/null @@ -1,11 +0,0 @@ -[General] -contrastOpacity=188 -disabledTrayIcon=true -drawColor=#ff0000 -drawThickness=3 -filenamePattern=%F_%H-%M-%S -saveAsFileExtension=png -savePath=/home/alexander/data/uploads/screenshots -showHelp=false -startupLaunch=false -uiColor=#ff3a00 diff --git a/.config/git/commit_msg_template.txt b/.config/git/commit_msg_template.txt index 95a7c66..5b07947 100644 --- a/.config/git/commit_msg_template.txt +++ b/.config/git/commit_msg_template.txt @@ -1,38 +1,18 @@ -#=================================================| -# SUBJECT ========================================| -#=================================================| -# - what does the commit do -# - capitalize the first word -# - use imperative mood (e.g., "Add" over "Adds") -# - do not end the line with a period -# - start with "Fix" for any fixes +# SUBJECT -> What does the commit do? +# - Imperative mood, no "." at the end +# - Start with "Add", "Fix", "Make", "Remove", ... #---------- 50 characters / 1 line ---------------| -#-------------------------------------------------| + +# BODY -> The why and how +# - Use plain text without formatting +# + Use "-" and "+" as bullets +# - "See: URL" to link to external resources +#---------- 72 characters / multiple lines -----------------------------| -#=======================================================================| -# BODY (optional) ======================================================| -#=======================================================================| -# - explain what the commit does, why it does it, and how -# - do not format the text (e.g., Markdown) -# - use multiple lines starting with "-" as bullet points -# + first sub-level -# * second sub-level -# - link to external resources for more context -#---------- 72 characters / multiple lines (and paragraphs) ------------| +# ISSUE TRACKER -> Uncomment one of the lines below +# Closes #41 +# Fixes #42 +# Resolves #43 - - - - -#=======================================================================| -# ISSUE TRACKER (optional) =============================================| -#=======================================================================| -# - uncomment and adapt one of the lines below -# - use the "closes" keyword if applicable -# (see https://help.github.com/articles/closing-issues-using-keywords) -#-----------------------------------------------------------------------| -# Closes #41 on the issue tracker -# Fixes #42 on the issue tracker -# Resolves #43 on the issue tracker diff --git a/.config/git/config b/.config/git/config index e9002e5..f0092cb 100644 --- a/.config/git/config +++ b/.config/git/config @@ -1,132 +1,160 @@ [alias] -# Important: ~/.config/shell/aliases.sh loads all git aliases with + +# Note that ~/.config/shell/aliases loads all `git` aliases with # less than 7 characters into the shell's "namespace" with a "g" prefix -# Example: git add <=> git a <=> ga +# Example: `git add` <=> `git a` <=> `ga` + a = add ap = add --patch -bi = bisect + br = branch bra = branch --all brd = branch --delete brdd = branch --delete --force brm = branch --move -cf = cat-file + ci = commit cim = commit --message + cl = clone -checkout-all = "!f() { for branch in $(git branch -r | grep -v '\\->'); do git branch --track ${branch#origin/} $branch; done; git fetch --all; }; f" + co = checkout -coa = checkout-all cob = checkout -b cod = checkout develop -com = checkout master +com = checkout main + cp = cherry-pick -de = describe --tags + df = diff + fe = fetch + lg = log lga = log --all -mb = merge-base + me = merge mea = merge --abort mec = merge --continue -mefeat = "!f() { if [ $# -eq 0 ]; then echo "Must specify a branch to merge in"; exit 1; fi; git check-pull; if [ $? -gt 0 ]; then echo "$1 must be rebased first"; exit 1; fi; cb=$(git current-branch) && printf '# SUBJECT\n# =======\n# - what does the commit do\n# - capitalize the first word and use the\n# imperative mood (e.g. "Add" vs "Adds")\n# - do not end the line with a period\n# - start with "Fix" for any hotfixes\n# ========= 50 characters / 1 line ============= |\nMerge in \"%s\"\n# ============================================== |\n\n\n# BODY (optional)\n# ===============\n# - explain what the commit does, why it does it, and how\n# - do not format the text (e.g., Markdown or reStructuredText)\n# - use multiple lines starting with "-" as bullet points\n# - link to external resources for even more context where appropriate\n# ========= 72 characters / multiple lines (and paragraphs) ========== |\nMerge branch \"%s\" into \"%s\"\n\nSummary of the merged in commits:\n' $1 $1 $cb > .merge_msg.txt.tmp && git log --format=format:' * %h: %s' $cb..$1 >> .merge_msg.txt.tmp && printf '\n\n\n# ==================================================================== |\n\n\n# GITHUB ISSUE (optional)\n# =======================\n# - uncomment and adapt one of the lines below\n# - use the "closes" keyword if applicable\n# (see https://help.github.com/en/articles/closing-issues-using-keywords)\n#\n# Related GitHub issue: #21\n# This commit closes #42 on the GitHub issue tracker\n\n\n#\n# END\n#\n' >> .merge_msg.txt.tmp && git merge --no-ff --no-commit $1 && SKIP=no-commit-to-branch git commit --edit --file=.merge_msg.txt.tmp; rm -f .merge_msg.txt.tmp; }; f" meff = merge --ff-only menoff = merge --no-ff + pl = pull plrb = pull --rebase + ps = push psf = push --force + rb = rebase --committer-date-is-author-date rba = rebase --abort rbc = rebase --continue rbi = rebase --interactive rbq = rebase --quit rbs = rebase --skip + rl = reflog -rm = rm # To make it available as the grm alias -rp = rev-parse + +rm = rm # to make it available as the `grm` alias in the shell + rs = reset + rv = revert s = status ss = status --short + sh = show + st = stash -sta = stash push --include-untracked # push does not go into the shortcut! +sta = stash push --include-untracked # "push" does not go into the shortcut! stam = stash push --include-untracked --message stapp = stash apply stl = stash list stp = stash pop stsh = stash show -# Provide an overview of all aliases. Second one is for use in ~/.bashrc -aliases = config --get-regexp 'alias.*' -internal-aliases = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1/' | sort -# Provide synonyms as "specified" in the git status header + +# Synonyms as "specified" in the `git status` header discard = checkout -- unstage = reset HEAD -- -# Common tasks with tedious or non-intuitive flags -amend-commit = !git log -n 1 --pretty=tformat:%B | git commit -F - --amend # Keep the commit message -check-pull = "!f() { git fetch; upstream=${1:-'@{u}'}; local=$(git rev-parse @); remote=$(git rev-parse "$upstream"); base=$(git merge-base @ "$upstream"); if [ $local = $remote ]; then echo "Up-to-date"; exit 0; elif [ $local = $base ]; then echo "Local branch is behind upstream"; elif [ $remote = $base ]; then echo "Local branch is ahead of upstream"; else echo "Local and remote branches diverged"; fi; exit 1; }; f" + +amend-commit = !git log -n 1 --pretty=tformat:%B | git commit -F - --amend # Keep the commit message + current-branch = !git rev-parse --abbrev-ref HEAD -project-root = rev-parse --show-toplevel -uncommit = reset --soft HEAD~1 + +project-root = rev-parse --show-toplevel + +uncommit = reset --soft HEAD~1 + # Sync the working directory into the index -rm-deleted = !git ls-files -z --deleted | xargs -r -0 git rm -sync-pwd-to-index = !git rm-deleted && git add . --all -sy = !git sync-pwd-to-index +sync-deleted = !git ls-files -z --deleted | xargs -r -0 git rm +sync = !git sync-deleted && git add . --all + # Make minimal diff the default diff-minimal = diff --color-words=. --ws-error-highlight=all -d = diff --color-words=. --ws-error-highlight=all -dlc = diff --color-words=. --ws-error-highlight=all HEAD -ds = diff --color-words=. --ws-error-highlight=all --staged +d = !git diff-minimal +dlc = diff --color-words=. --ws-error-highlight=all HEAD +ds = diff --color-words=. --ws-error-highlight=all --staged + # Clean the project folder with intuitive commands -# Always keep the .python-version file, which is also often in ~.gitignore -clean-all = !git reset --hard && git clean-ignored && git clean-untracked -clean-ignored = "!f() { if [ -f .python-version ]; then mv .python-version .python-version.XYZ; fi; if [ -f .env ]; then mv .env .env.XYZ; fi; git clean -X -d -f "$@"; if [ -f .python-version.XYZ ]; then mv .python-version.XYZ .python-version; fi; if [ -f .env.XYZ ]; then mv .env.XYZ .env; fi }; f" -clean-untracked = !git clean -x -d -e ".python-version" -e ".env" -f # The -e flag does not work with -X -# Delete everything not reachable from a branch from the repository +clean-all = !git reset --hard && git clean-ignored && git clean-untracked +clean-ignored = "!f() { if [ -f .python-version ]; then mv .python-version .python-version.XYZ; fi; if [ -f .env ]; then mv .env .env.XYZ; fi; git clean -X -d -f "$@"; if [ -f .python-version.XYZ ]; then mv .python-version.XYZ .python-version; fi; if [ -f .env.XYZ ]; then mv .env.XYZ .env; fi }; f" +clean-untracked = !git clean -x -d -e ".python-version" -e ".env" -f # because the "-e" flag does not work with "-X" + +# Delete EVERYTHING not reachable from a branch from the repository gc-everything = "!f() { git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc "$@"; }; f" + # Make the logs look nice by default -last-commit = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' -1 -p --stat -lc = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' -1 -p --stat -history = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph -hi = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph -hia = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph --all -summary = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%an @ %ad => %ar%n' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph -su = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%an @ %ad => %ar%n' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph -sua = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%an @ %ad => %ar%n' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph --all -oneline = log --pretty='%C(auto)%h: %s%d' --graph -ol = log --pretty='%C(auto)%h: %s%d' --graph -ola = log --pretty='%C(auto)%h: %s%d' --graph --all +log-format1 = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%an @ %ad => %ar%n' --date=format:'%a %Y-%m-%d %H:%M:%S %z' +log-format2 = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' +last-commit = !git log-format2 -1 -p --stat +lc = !git last-commit +history = !git log-format2 --graph +hi = !git history +hia = !git history --all +summary = !git log-format1 --graph +su = !git summary +sua = !git summary --all +oneline = log --pretty='%C(auto)%h: %s%d' --graph +ol = !git oneline +ola = !git oneline --all + # Search the repository grep-code = grep --break --context 1 --full-name --heading --line-number --show-function -grepc = grep --break --context 1 --full-name --heading --line-number --show-function -grep-log = log --all --regexp-ignore-case --pretty='%C(auto)%h: %s%+D%Creset%n%C(reverse)%C(dim)%aN @ %ad = %ar%Creset%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S' --grep -grepl = log --all --regexp-ignore-case --pretty='%C(auto)%h: %s%+D%Creset%n%C(reverse)%C(dim)%aN @ %ad = %ar%Creset%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S' --grep +grepc = !git grep-code +grep-log = log --all --regexp-ignore-case --pretty='%C(auto)%h: %s%+D%Creset%n%C(reverse)%C(dim)%aN @ %ad = %ar%Creset%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S' --grep +grepl = !git grep-log grep-text = grep --break --context 1 --full-name --heading --ignore-case --line-number -grept = grep --break --context 1 --full-name --heading --ignore-case --line-number -# Push current branch to origin -push-to-origin = "!f(){ git push --set-upstream origin $(git current-branch) "$@"; }; f" -pso = "!f(){ git push --set-upstream origin $(git current-branch) "$@"; }; f" -prune-gone = "!git fetch --prune && git branch -vv | grep ': gone]' | awk '{print $1}'" +grept = !git grep-text + +# Prune local branches that were deleted remotely prune-delete = "!git fetch --prune && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d" +prune-show = "!git fetch --prune && git branch -vv | grep ': gone]' | awk '{print $1}'" + +aliases = config --get-regexp 'alias.*' +aliases-internal = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1/' | sort # used in ~/.config/shell/aliases + [clean] + requireforce = true + [color "branch"] + current = cyan dim bold reverse local = green bold remote = red bold + [color "decorate"] + HEAD = cyan dim bold reverse branch = green bold remoteBranch = red bold stash = magenta dim bold reverse tag = magenta bold + [color "diff"] + context = white frag = blue dim bold reverse meta = yellow dim bold reverse @@ -134,7 +162,9 @@ new = green bold old = red bold whitespace = red dim bold reverse + [color "grep"] + context = white filename = yellow dim bold reverse function = white bold @@ -143,13 +173,17 @@ match = red bold selected = white separator = blue dim bold reverse + [color "interactive"] + error = red dim bold reverse header = white help = yellow bold prompt = white dim bold reverse + [color "status"] + added = green bold branch = cyan dim bold reverse changed = yellow bold @@ -160,53 +194,80 @@ remoteBranch = red bold unmerged = yellow dim bold reverse untracked = red bold + [commit] + cleanup = strip gpgSign = true template = ~/.config/git/commit_msg_template.txt verbose = true + [core] + editor = vim excludesfile = ~/.config/git/ignore pager = less --chop-long-lines --ignore-case --LONG-PROMPT --status-column --quit-if-one-screen whitespace = -space-before-tab,tab-in-indent + [diff] + renames = true submodule = log + [help] + autocorrect = 50 + [init] + defaultBranch = main + [merge] + conflictstyle = diff3 ff = only + [pull] + ff = only rebase = true + [push] + +autoSetupRemote = true default = upstream recursesubmodules = check + [rerere] + enabled = true + [url "https://bitbucket.org/"] + insteadOf = bb: + [url "https://github.com/"] + insteadOf = gh: + [url "https://gitlab.com/"] + insteadOf = gl: + [user] + name = Alexander Hess email = alexander@webartifex.biz -signingKey = AB5C0E319D77350FBA6CF143344EA5AB10D868E0 +signingKey = alexander@webartifex.biz diff --git a/.config/git/ignore b/.config/git/ignore index 1576110..ee17658 100644 --- a/.config/git/ignore +++ b/.config/git/ignore @@ -5,28 +5,6 @@ *.temp *.tmp -# LibreOffice -# Source: https://github.com/github/gitignore/blob/main/Global/LibreOffice.gitignore -# -# Locks -.~lock.*# - -# Linux typical files we do not want under version control -# Source: https://github.com/github/gitignore/blob/main/Global/Linux.gitignore -# -*~ -# Temporary files created if a process still has a handle open to a deleted file -.fuse_hidden* -# KDE directory preferences -.directory -# Linux trash folder possibly appearing on any partition or disk -.Trash-* -# .nfs files are created when an open file is removed but is still being accessed -.nfs* - -# pyenv -.python-version - # Vim # Source: https://github.com/github/gitignore/blob/main/Global/Vim.gitignore # diff --git a/.config/gnome-settings/README.md b/.config/gnome-settings/README.md deleted file mode 100644 index 4bbf86b..0000000 --- a/.config/gnome-settings/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Gnome Settings - -This folder contains my Gnome settings - split into several \*.ini files by logical group. - -Load them into Gnome with `dconf load / < `. -It is important to always load them in anchored at the root (i.e., `/`). diff --git a/.config/gnome-settings/app-folders.ini b/.config/gnome-settings/app-folders.ini deleted file mode 100644 index 044ded2..0000000 --- a/.config/gnome-settings/app-folders.ini +++ /dev/null @@ -1,53 +0,0 @@ -[org/gnome/desktop/app-folders] -folder-children=['Browsers', 'Communication', 'Develop', 'Files', 'Multimedia', 'Office', 'Remote', 'Settings', 'Terminal', 'Utilities'] - - -[org/gnome/desktop/app-folders/folders/Browsers] -apps=['google-chrome.desktop', 'org.mozilla.firefox.desktop'] -name='Browsers' -translate=true - -[org/gnome/desktop/app-folders/folders/Communication] -apps=['org.mozilla.thunderbird.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Contacts.desktop', 'org.gnome.Evolution.desktop', 'org.telegram.desktop.desktop', 'Zoom.desktop'] -name='Communication' -translate=true - -[org/gnome/desktop/app-folders/folders/Develop] -apps=['com.jetbrains.PyCharm-Professional.desktop', 'org.gnome.Boxes.desktop', 'rstudio.desktop', 'texmaker.desktop', 'scrcpy.desktop', 'scrcpy-console.desktop', 'sqlitebrowser.desktop'] -name='Develop' -translate=true - -[org/gnome/desktop/app-folders/folders/Files] -apps=['fr.romainvigier.MetadataCleaner.desktop', 'org.cryptomator.Cryptomator.desktop', 'org.gnome.Evince.desktop', 'org.gnome.FileRoller.desktop', 'org.gnome.Loupe.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.TextEditor.desktop', 'simple-scan.desktop'] -name='Files' -translate=true - -[org/gnome/desktop/app-folders/folders/Multimedia] -apps=['com.obsproject.Studio.desktop', 'com.spotify.Client.desktop', 'org.gnome.Rhythmbox3.desktop', 'vlc.desktop'] -name='Multimedia' -translate=true - -[org/gnome/desktop/app-folders/folders/Office] -apps=['libreoffice-base.desktop', 'libreoffice-calc.desktop', 'libreoffice-draw.desktop', 'libreoffice-impress.desktop', 'libreoffice-math.desktop', 'libreoffice-startcenter.desktop', 'libreoffice-writer.desktop', 'simple-scan.desktop'] -name='Office' -translate=true - -[org/gnome/desktop/app-folders/folders/Remote] -apps=['org.remmina.Remmina.desktop', 'rustdesk.desktop', 'scrcpy.desktop', 'scrcpy-console.desktop'] -name='Remote' -translate=true - -[org/gnome/desktop/app-folders/folders/Settings] -apps=['ca.desrt.dconf-editor.desktop', 'com.github.joseexposito.touche.desktop', 'com.system76.keyboardconfigurator.desktop', 'firewall-config.desktop', 'gnome-language-selector.desktop', 'gnome-session-properties.desktop', 'gnome-system-monitor.desktop', 'im-config.desktop', 'menulibre.desktop', 'nm-connection-editor.desktop', 'nvidia-settings.desktop', 'org.bleachbit.BleachBit.desktop', 'org.gnome.Extensions.desktop', 'org.gnome.PowerStats.desktop', 'org.gnome.Settings.desktop', 'org.gnome.Software.desktop', 'org.gnome.tweaks.desktop', 'org.pulseaudio.pavucontrol.desktop', 'software-properties-gnome.desktop', 'system76-driver.desktop', 'system76-firmware.desktop'] -name='Settings' -translate=true - -[org/gnome/desktop/app-folders/folders/Terminal] -apps=['Alacritty.desktop', 'htop.desktop', 'org.gnome.Terminal.desktop', 'ranger.desktop'] -name='Terminal' -translate=true - -[org/gnome/desktop/app-folders/folders/Utilities] -apps=['com.github.donadigo.eddy.desktop', 'com.system76.Popsicle.desktop', 'gparted.desktop', 'gucharmap.desktop', 'info.desktop', 'java-17-openjdk-17.0.4.0.8-1.fc36.x86_64-jconsole.desktop', 'org.gnome.baobab.desktop', 'org.gnome.Characters.desktop', 'org.gnome.DiskUtility.desktop', 'org.gnome.eog.desktop', 'org.gnome.font-viewer.desktop', 'org.gnome.Logs.desktop', 'org.gnome.Screenshot.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.Totem.desktop', 'pop-cosmic-applications.desktop', 'pop-cosmic-launcher.desktop', 'pop-cosmic-workspaces.desktop', 'screenkey.desktop', 'yelp.desktop'] -name='Utilities' -translate=true diff --git a/.config/gnome-settings/apps.ini b/.config/gnome-settings/apps.ini deleted file mode 100644 index 7c75d55..0000000 --- a/.config/gnome-settings/apps.ini +++ /dev/null @@ -1,144 +0,0 @@ -# This file contains settings for various individual desktop apps - - -[ca/desrt/dconf-editor] -# Always start at dconf's root -saved-pathbar-path='/' -saved-view='/' -show-warning=false - - -[org/gnome/Contacts] -did-initial-setup=true - - -[org/gnome/TextEditor] -auto-indent=true -highlight-current-line=true -indent-style='space' -restore-session=false -show-grid=true -show-map=true -tab-width=4 -wrap-text=false - - -[org/gnome/calendar] -active-view='week' - - -[org/gnome/control-center] -last-panel='info-overview' - - -# [org/gnome/gedit] - -[org/gnome/gedit/plugins/filebrowser] -tree-view=true - -[org/gnome/gedit/preferences/ui] -show-tabs-mode='auto' - - -[org/gnome/gnome-system-monitor] -cpu-smooth-graph=true -cpu-stacked-area-chart=false -disks-interval=1000 -graph-update-interval=250 -maximized=false -network-in-bits=true -show-all-fs=true -show-dependencies=false -show-whose-processes='user' -update-interval=1000 - - -# [org/gnome/nautilus] - -[org/gnome/nautilus/compression] -default-compression-format='zip' - -[org/gnome/nautilus/icon-view] -captions=['size', 'none', 'none'] - -[org/gnome/nautilus/list-view] -default-column-order=['name', 'size', 'type', 'owner', 'group', 'permissions', 'where', 'date_modified', 'date_modified_with_time', 'date_accessed', 'recency', 'starred', 'detailed_type'] -default-visible-columns=['name', 'size', 'date_modified', 'starred'] -use-tree-view=true - -[org/gnome/nautilus/preferences] -always-use-location-entry=true -default-folder-viewer='list-view' -search-filter-time-type='last_modified' -search-view='list-view' -show-create-link=false -show-delete-permanently=true - - -[org/gnome/software] -allow-updates=false -check-timestamp=0 -download-updates=false -download-updates-notify=false -first-run=false -install-timestamp=0 -online-updates-timestamp=0 -security-timestamp=0 -update-notification-timestamp=0 -upgrade-notification-timestamp=0 - - -# [org/gnome/terminal] - -[org/gnome/terminal/legacy] -confirm-close=false - -# [org/gnome/terminal/legacy/keybindings] -# See ~/.config/gnome-settings/key-bindings.ini for the key bindings - -[org/gnome/terminal/legacy/profiles:] -default='b1dcc9dd-5262-4d8d-a863-c897e6d979b9' -list=['b1dcc9dd-5262-4d8d-a863-c897e6d979b9'] - -[org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9] -audible-bell=false -background-color='rgb(0,0,0)' -bold-is-bright=true -custom-command='/usr/bin/zsh' -foreground-color='rgb(255,255,255)' -login-shell=false -use-custom-command=true -use-theme-colors=true -visible-name='Default' - - -[org/gnome/tweaks] -show-extensions-notice=false - - -# [org/gtk/*/settings/file-chooser] -# This is Gnome Files - -[org/gtk/gtk4/settings/file-chooser] -# Keep in sync with [org/gtk/settings/file-chooser] -date-format='regular' -location-mode='path-bar' -show-hidden=false -show-size-column=true -show-type-column=true -sort-column='name' -sort-directories-first=true -sort-order='ascending' -type-format='category' - -[org/gtk/settings/file-chooser] -# Keep in sync with [org/gtk/gtk4/settings/file-chooser] -date-format='regular' -location-mode='path-bar' -show-hidden=false -show-size-column=true -show-type-column=true -sort-column='name' -sort-directories-first=true -sort-order='ascending' -type-format='category' diff --git a/.config/gnome-settings/elgato/README.md b/.config/gnome-settings/elgato/README.md deleted file mode 100644 index 0d9f452..0000000 --- a/.config/gnome-settings/elgato/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Elgato Key Lights - -The Python files in this folder are hooked as keyboard shortcuts in Gnome. -They allow to toggle the key lights in my office. -In the long-run, these scripts should be improved a bit. diff --git a/.config/gnome-settings/elgato/dec_brightness.py b/.config/gnome-settings/elgato/dec_brightness.py deleted file mode 100755 index 9382947..0000000 --- a/.config/gnome-settings/elgato/dec_brightness.py +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python - -import leglight - -LEFT_KEYLIGHT_IP = "192.168.190.62" -RIGHT_KEYLIGHT_IP = "192.168.190.63" - -left = leglight.LegLight(LEFT_KEYLIGHT_IP, port=9123) -right = leglight.LegLight(RIGHT_KEYLIGHT_IP, port=9123) - -left.decBrightness(5) -right.decBrightness(5) diff --git a/.config/gnome-settings/elgato/dec_color.py b/.config/gnome-settings/elgato/dec_color.py deleted file mode 100755 index c21a899..0000000 --- a/.config/gnome-settings/elgato/dec_color.py +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python - -import leglight - -LEFT_KEYLIGHT_IP = "192.168.190.62" -RIGHT_KEYLIGHT_IP = "192.168.190.63" - -left = leglight.LegLight(LEFT_KEYLIGHT_IP, port=9123) -right = leglight.LegLight(RIGHT_KEYLIGHT_IP, port=9123) - -left.decColor(200) -right.decColor(200) diff --git a/.config/gnome-settings/elgato/inc_brightness.py b/.config/gnome-settings/elgato/inc_brightness.py deleted file mode 100755 index 21a5ae0..0000000 --- a/.config/gnome-settings/elgato/inc_brightness.py +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python - -import leglight - -LEFT_KEYLIGHT_IP = "192.168.190.62" -RIGHT_KEYLIGHT_IP = "192.168.190.63" - -left = leglight.LegLight(LEFT_KEYLIGHT_IP, port=9123) -right = leglight.LegLight(RIGHT_KEYLIGHT_IP, port=9123) - -left.incBrightness(5) -right.incBrightness(5) diff --git a/.config/gnome-settings/elgato/inc_color.py b/.config/gnome-settings/elgato/inc_color.py deleted file mode 100755 index 9105b9e..0000000 --- a/.config/gnome-settings/elgato/inc_color.py +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python - -import leglight - -LEFT_KEYLIGHT_IP = "192.168.190.62" -RIGHT_KEYLIGHT_IP = "192.168.190.63" - -left = leglight.LegLight(LEFT_KEYLIGHT_IP, port=9123) -right = leglight.LegLight(RIGHT_KEYLIGHT_IP, port=9123) - -left.incColor(200) -right.incColor(200) diff --git a/.config/gnome-settings/elgato/toggle_keylights.py b/.config/gnome-settings/elgato/toggle_keylights.py deleted file mode 100755 index f6f7413..0000000 --- a/.config/gnome-settings/elgato/toggle_keylights.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python - -import leglight - -LEFT_KEYLIGHT_IP = "192.168.190.62" -RIGHT_KEYLIGHT_IP = "192.168.190.63" - -left = leglight.LegLight(LEFT_KEYLIGHT_IP, port=9123) -right = leglight.LegLight(RIGHT_KEYLIGHT_IP, port=9123) - -if left.info()["on"] or right.info()["on"]: - left.off() - right.off() - -else: - left.on() - right.on() - left.brightness(30) - right.brightness(30) - left.color(6000) - right.color(6000) diff --git a/.config/gnome-settings/key-bindings.ini b/.config/gnome-settings/key-bindings.ini deleted file mode 100644 index bb6d193..0000000 --- a/.config/gnome-settings/key-bindings.ini +++ /dev/null @@ -1,318 +0,0 @@ -# Unify all key bindings in this file to conveniently keep them consistent - - -[org/gnome/desktop/wm/keybindings] - -# q is i3wm's default -close=['Q', 'Q', 'Q', 'F4'] - -maximize=@as [] -unmaximize=@as [] -toggle-maximized=['M'] -minimize=@as [] - -switch-applications=['Tab', 'Tab'] -switch-applications-backward=['Tab', 'Tab'] - -switch-input-source=@as [] -switch-input-source-backward=@as [] - -switch-group=@as [] -switch-group-backward=@as [] -switch-panels=@as [] -switch-panels-backward=@as [] - -cycle-group=@as [] -cycle-group-backward=@as [] -cycle-panels=@as [] -cycle-panels-backward=@as [] -cycle-windows=@as [] -cycle-windows-backward=@as [] - -begin-move=@as [] -begin-resize=@as [] - -# - Left/Right is the default to move left/right => 1-5 -# - 1-5 is i3wm's default way -switch-to-workspace-1=['1', '1'] -switch-to-workspace-2=['2', '2'] -switch-to-workspace-3=['3', '3'] -switch-to-workspace-4=['4', '4'] -switch-to-workspace-5=['5', '5'] -switch-to-workspace-6=['6', '6'] -switch-to-workspace-7=['7', '7'] -switch-to-workspace-8=['8', '8'] -switch-to-workspace-9=['9', '9'] -switch-to-workspace-10=['0', '0'] -switch-to-workspace-last=['End', 'End'] -switch-to-workspace-left=['Left'] -switch-to-workspace-right=['Right'] - -# 1-5 is i3wm's default -move-to-workspace-1=['1', '1'] -move-to-workspace-2=['2', '2'] -move-to-workspace-3=['3', '3'] -move-to-workspace-4=['4', '4'] -move-to-workspace-5=['5', '5'] -move-to-workspace-6=['6', '6'] -move-to-workspace-7=['7', '7'] -move-to-workspace-8=['8', '8'] -move-to-workspace-9=['9', '9'] -move-to-workspace-10=['0', '0'] -move-to-workspace-last=['End', 'End'] -move-to-workspace-left=['Left', 'Left'] -move-to-workspace-right=['Right', 'Right'] - - -[org/gnome/mutter/keybindings] -toggle-tiled-left=@as [] -toggle-tiled-right=@as [] - - -[org/gnome/settings-daemon/plugins/media-keys] - -email=['E'] -help=@as [] -home=['F'] -search=['slash'] -terminal=@as [] -www=['B'] - -screensaver=['Escape'] -logout=@as [] - -# Besides the numkeys, we use "/", ".", and "," to control the media -play=['Slash'] -next=['Right'] -previous=['Left'] -# Note: I often type "m" for "mute" intuitively -volume-mute=['M'] -volume-up=['Up'] -volume-down=['Down'] - -magnifier=@as [] -magnifier-zoom-in=@as [] -magnifier-zoom-out=@as [] - -on-screen-keyboard=@as [] -screenreader=@as [] - -custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom7/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom8/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom9/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom10/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom11/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom12/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom13/'] - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0] -binding='Home' -command='gnome-session-quit --reboot' -name='Reboot Machine' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1] -binding='End' -command='gnome-session-quit --power-off' -name='Shutdown Machine' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2] -binding='Delete' -command='gnome-session-quit --logout' -name='Log out (1)' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3] -binding='BackSpace' -command='gnome-session-quit --logout' -name='Log out (2)' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4] -binding='G' -command='google-chrome' -name='Google Chrome' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5] -# Mimic i3wm's default way to open terminals -binding='Return' -command='alacritty' -name='Terminal (1)' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6] -# Faster than the default t -binding='T' -command='alacritty' -name='Terminal (2)' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom7] -# Gnome's actual default, but with a custom terminal emulator -binding='T' -command='alacritty' -name='Terminal (3)' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom8] -binding='L' -command='/home/alexander/.local/share/elgato/bin/python /home/alexander/.config/gnome-settings/elgato/toggle_keylights.py' -name='Toggle Keylights in the Office' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom9] -binding='Apostrophe' -command='/home/alexander/.local/share/elgato/bin/python /home/alexander/.config/gnome-settings/elgato/inc_brightness.py' -name='Increase Brightness of Keylights in the Office' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom10] -binding='Semicolon' -command='/home/alexander/.local/share/elgato/bin/python /home/alexander/.config/gnome-settings/elgato/dec_brightness.py' -name='Decrease Brightness of Keylights in the Office' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom11] -binding='Bracketright' -command='/home/alexander/.local/share/elgato/bin/python /home/alexander/.config/gnome-settings/elgato/inc_color.py' -name='Increase Color of Keylights in the Office' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom12] -binding='Bracketleft' -command='/home/alexander/.local/share/elgato/bin/python /home/alexander/.config/gnome-settings/elgato/dec_color.py' -name='Decrease Color of Keylights in the Office' - -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom13] -binding='U' -command='/usr/bin/flatpak run com.spotify.Client' -name='Spotify' - - -[org/gnome/shell/extensions/forge/keybindings] - -focus-border-toggle=@as [] -prefs-tiling-toggle=@as [] - -# Changing the gap size dynamically is not needed -window-gap-size-decrease=@as [] -window-gap-size-increase=@as [] - -workspace-active-tile-toggle=['Y'] - -window-toggle-float=@as [] -window-toggle-always-float=['Y'] - -window-focus-up=['Up'] -window-focus-down=['Down'] -window-focus-left=['Left'] -window-focus-right=['Right'] - -window-move-up=['Up'] -window-move-down=['Down'] -window-move-left=['Left'] -window-move-right=['Right'] - -window-swap-up=['Up'] -window-swap-down=['Down'] -window-swap-left=['Left'] -window-swap-right=['Right'] -window-swap-last-active=['Return'] - -window-resize-top-increase=['Up'] -window-resize-top-decrease=['Down'] -window-resize-bottom-increase=['Down'] -window-resize-bottom-decrease=['Up'] -window-resize-left-increase=['Left'] -window-resize-left-decrease=['Right'] -window-resize-right-increase=['Right'] -window-resize-right-decrease=['Left'] - -window-snap-center=@as [] -window-snap-one-third-left=@as [] -window-snap-one-third-right=@as [] -window-snap-two-third-left=@as [] -window-snap-two-third-right=@as [] - -# Container stuff -con-split-horizontal=@as [] -con-split-vertical=@as [] -con-split-layout-toggle=@as [] -con-stacked-layout-toggle=@as [] -con-tabbed-layout-toggle=@as [] -con-tabbed-showtab-decoration-toggle=@as [] - - -[org/gnome/shell/extensions/nightthemeswitcher/time] -nightthemeswitcher-ondemand-keybinding=['D'] - - -[org/gnome/shell/extensions/pop-shell] - -# The launcher does not work without Pop!OS -activate-launcher=@as [] - -# "toggle-floating" only puts the active window into floating mode -# while "toggle-tiling" turns the tiling mode on and off for all windows -toggle-floating=['Y'] -toggle-tiling=['Y'] - -focus-up=['Up'] -focus-down=['Down'] -focus-left=['Left'] -focus-right=['Right'] - -# Extends the move-to-workspace-* options above; in particular, -# "Up" and "Down" can be used to move windows to the upper monitors -pop-monitor-up=['Up', 'Up', 'Up'] -pop-monitor-down=['Down', 'Down', 'Down'] -pop-monitor-left=['Left'] -pop-monitor-right=['Right'] -pop-workspace-down=@as [] -pop-workspace-up=@as [] - -# Return instead of the default Return -# so that Return opens terminal (like i3wm) above -tile-enter=['Return', 'Return'] -tile-accept=['Return'] - -tile-move-up=['Up'] -tile-move-down=['Down'] -tile-move-left=['Left'] -tile-move-right=['Right'] - -tile-resize-up=['Down'] -tile-resize-down=['Up'] -tile-resize-left=['Left'] -tile-resize-right=['Right'] - -tile-swap-up=['Up'] -tile-swap-down=['Down'] -tile-swap-left=['Left'] -tile-swap-right=['Right'] - - -[org/gnome/shell/keybindings] - -focus-active-notification=@as [] -open-application-menu=@as [] - -# Disable Gnome's default behavior of opening "favorite" apps -# with 1-10 and instead switch workspaces -# (goes together with [org/gnome/shell/extensions/dash-to-dock] > hot-keys) -# Source: https://askubuntu.com/a/1138322 -switch-to-application-1=@as [] -switch-to-application-2=@as [] -switch-to-application-3=@as [] -switch-to-application-4=@as [] -switch-to-application-5=@as [] -switch-to-application-6=@as [] -switch-to-application-7=@as [] -switch-to-application-8=@as [] -switch-to-application-9=@as [] -switch-to-application-10=@as [] - -toggle-message-tray=@as [] -toggle-overview=@as [] - - -[org/gnome/terminal/legacy/keybindings] - -close-tab='W' -close-window='Q' - -find='F' -find-clear='J' -find-next='N' -find-previous='H' - -new-tab='T' -new-window='N' - -zoom-in='Plus' -# default: zoom-out='minus' - diff --git a/.config/gnome-settings/misc.ini b/.config/gnome-settings/misc.ini deleted file mode 100644 index 70a8783..0000000 --- a/.config/gnome-settings/misc.ini +++ /dev/null @@ -1,199 +0,0 @@ -[org/freedesktop/tracker/miner/files] -index-recursive-directories=['&DESKTOP', '&DOCUMENTS', '&MUSIC', '&PICTURES', '&VIDEOS', '&DOWNLOAD', '/home/alexander/Cloud'] - - -[org/gnome/desktop/a11y/applications] -screen-keyboard-enabled=false - - -[org/gnome/desktop/background] -# Keep picture-* in sync with [org/gnome/desktop/screensaver] below -color-shading-type='solid' -picture-options='spanned' -picture-uri='file:///usr/share/backgrounds/lake_in_front_of_mountains.jpg' -picture-uri-dark='file:///usr/share/backgrounds/lake_in_front_of_mountains.jpg' -primary-color='#000000000000' -secondary-color='#000000000000' - - -[org/gnome/desktop/calendar] -show-weekdate=true - - -[org/gnome/desktop/datetime] -automatic-timezone=true - - -[org/gnome/desktop/input-sources] -per-window=false -sources=[('xkb', 'us')] -xkb-options=['compose:ralt', 'caps:ctrl_modifier', 'lv3:menu_switch'] - - -[org/gnome/desktop/interface] -clock-format='24h' -clock-show-date=true -clock-show-seconds=true -clock-show-weekday=true -color-scheme='default' -document-font-name='Clear Sans Medium 11' -enable-animations=true -enable-hot-corners=false -font-antialiasing='grayscale' -font-hinting='slight' -font-name='Clear Sans Medium 11' -# gtk-im-module='gtk-im-context-simple' -# gtk-theme='Pop-dark' -# icon-theme='Pop' -monospace-font-name='FiraCode Nerd Font Mono 11' -show-battery-percentage=true -toolkit-accessibility=false - - -[org/gnome/desktop/lockdown] -disbale-user-switching=true - - -[org/gnome/desktop/media-handling] -automount=true -automount-open=false -autorun-never=true -autorun-x-content-ignore=@as [] -autorun-x-content-open-folder=@as [] -autorun-x-content-start-app=@as [] - - -[org/gnome/desktop/peripherals/keyboard] -numlock-state=true -remember-numlock-state=true - - -[org/gnome/desktop/peripherals/mouse] -natural-scroll=false - - -[org/gnome/desktop/peripherals/touchpad] -edge-scrolling-enabled=false -natural-scroll=true -tap-to-click=true -two-finger-scrolling-enabled=true - - -[org/gnome/desktop/privacy] -disable-camera=false -disable-microphone=false -disable-sound-output=false -hide-identity=true -old-files-age=uint32 7 -recent-files-max-age=int32 1 -remember-app-usage=false -remember-recent-files=false -remove-old-temp-files=true -remove-old-trash-files=true -report-technical-problems=false -send-software-usage-stats=false -show-full-name-in-top-bar=false - - -[org/gnome/desktop/screensaver] -# Keep picture-* in sync with [org/gnome/desktop/background] above -color-shading-type='solid' -lock-delay=uint32 0 -lock-enabled=false -logout-enabled=true -picture-options='spanned' -picture-uri='file:///usr/share/backgrounds/lake_in_front_of_mountains.jpg' -primary-color='#000000000000' -secondary-color='#000000000000' -show-full-name-in-top-bar=false -status-message-enabled=false -user-switch-enabled=false - - -[org/gnome/desktop/search-providers] -disable-external=false -disabled=['firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Characters.desktop', 'org.gnome.Contacts.desktop', 'org.gnome.Photos.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.Terminal.desktop'] -sort-order=['org.gnome.Documents.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Settings.desktop', 'org.gnome.Software.desktop'] - - -[org/gnome/desktop/session] -idle-delay=uint32 900 - - -[org/gnome/desktop/sound] -allow-volume-above-100-percent=true -event-sounds=true -input-feedback-sounds=true - - -# [org/gnome/desktop/wm/keybindings] -# See ~/.config/gnome-settings/key-bindings.ini for the key bindings - - -[org/gnome/desktop/wm/preferences] -audible-bell=false -button-layout='close:' -num-workspaces=10 -titlebar-font='Clear Sans Bold 12' -workspace-names=['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] - - -[org/gnome/login-screen] -allowed-failures=999 -disable-user-list=true -# The following keys are non-writeable -# See: /etc/dconf/db/distro.d/locks/20-authselect -# enable-fingerprint-authentication=false -# enable-password-authentication=true -# enable-smartcard-authentication=false - - -[org/gnome/mutter] -dynamic-workspaces=false -# We use Pop Shell for tiling -edge-tiling=false -workspaces-only-on-primary=true - - -# [org/gnome/mutter/keybindings] -# See ~/.config/gnome-settings/key-bindings.ini for the key bindings - - -[org/gnome/nm-applet] -disable-connected-notifications=true -disable-disconnected-notifications=true -suppress-wireless-networks-available=true - - -[org/gnome/settings-daemon/plugins/color] -night-light-enabled=true -night-light-schedule-automatic=true -night-light-schedule-from=22.0 -night-light-schedule-to=6.0 - - -[org/gnome/settings-daemon/plugins/media-keys] -# See ~/.config/gnome-settings/key-bindings.ini for the key bindings -volume-step=10 - - -[org/gnome/settings-daemon/plugins/power] -idle-dim=false -power-button-action='suspend' -sleep-inactive-ac-timeout=0 -sleep-inactive-ac-type='nothing' -sleep-inactive-battery-timeout=600 -sleep-inactive-battery-type='nothing' - - -[org/gnome/system/location] -enabled=false - - -[system/locale] -# Basically English display with near-German settings (e.g., DIN A4) -region='en_DK.UTF-8' - - -[system/proxy] -mode='none' diff --git a/.config/gnome-settings/notifications.ini b/.config/gnome-settings/notifications.ini deleted file mode 100644 index bd30b0f..0000000 --- a/.config/gnome-settings/notifications.ini +++ /dev/null @@ -1,298 +0,0 @@ -[org/gnome/desktop/notifications] -application-children=@as [] -show-banners=true -show-in-lock-screen=false - - -[org/gnome/desktop/notifications/application/alacritty] -enable=false - -[org/gnome/desktop/notifications/application/ca-desrt-dconf-editor] -enable=false - -[org/gnome/desktop/notifications/application/com-alacritty-alacritty] -enable=false - -[org/gnome/desktop/notifications/application/com-cisco-anyconnect-gui] -enable=false - -[org/gnome/desktop/notifications/application/com-github-donadigo-eddy] -enable=false - -[org/gnome/desktop/notifications/application/com-nextcloud-desktopclient-nextcloud] -enable=false - -[org/gnome/desktop/notifications/application/com-obsproject-studio] -enable=false - -[org/gnome/desktop/notifications/application/com-spotify-client] -enable=false - -[org/gnome/desktop/notifications/application/com-system76-keyboardconfigurator] -enable=false - -[org/gnome/desktop/notifications/application/discord] -enable=false - -[org/gnome/desktop/notifications/application/display-im6-q16] -enable=false - -[org/gnome/desktop/notifications/application/firewall-config] -enable=false - -[org/gnome/desktop/notifications/application/gnome-analytics-panel] -enable=false - -[org/gnome/desktop/notifications/application/gnome-color-panel] -enable=false - -[org/gnome/desktop/notifications/application/gnome-control-center] -enable=false - -[org/gnome/desktop/notifications/application/gnome-datetime-panel] -enable=false - -[org/gnome/desktop/notifications/application/gnome-firmware-panel] -enable=true -show-banners=false - -[org/gnome/desktop/notifications/application/gnome-language-selector] -enable=false - -[org/gnome/desktop/notifications/application/gnome-network-panel] -enable=false - -[org/gnome/desktop/notifications/application/gnome-power-panel] -enable=true -show-banners=false - -[org/gnome/desktop/notifications/application/gnome-printers-panel] -enable=false - -[org/gnome/desktop/notifications/application/gnome-session-properties] -enable=false - -[org/gnome/desktop/notifications/application/gnome-support-panel] -enable=false - -[org/gnome/desktop/notifications/application/gnome-system-monitor] -enable=false - -[org/gnome/desktop/notifications/application/gnome-upgrade-panel] -enable=false - -[org/gnome/desktop/notifications/application/gparted] -enable=false - -[org/gnome/desktop/notifications/application/gucharmap] -enable=false - -[org/gnome/desktop/notifications/application/htop] -enable=false - -[org/gnome/desktop/notifications/application/info] -enable=false - -[org/gnome/desktop/notifications/application/install4j-a303jh-mediathekview] -enable=false - -[org/gnome/desktop/notifications/application/io-elementary-appcenter] -enable=false - -[org/gnome/desktop/notifications/application/java-17-openjdk-17-0-4-0-8-1-fc36-x86-64-jconsole] -enable=false - -[org/gnome/desktop/notifications/application/libreoffice-base] -enable=false - -[org/gnome/desktop/notifications/application/libreoffice-calc] -enable=false - -[org/gnome/desktop/notifications/application/libreoffice-draw] -enable=false - -[org/gnome/desktop/notifications/application/libreoffice-impress] -enable=false - -[org/gnome/desktop/notifications/application/libreoffice-math] -enable=false - -[org/gnome/desktop/notifications/application/libreoffice-startcenter] -enable=false - -[org/gnome/desktop/notifications/application/libreoffice-writer] -enable=false - -[org/gnome/desktop/notifications/application/menulibre] -enable=false - -[org/gnome/desktop/notifications/application/nm-connection-editor] -enable=false - -[org/gnome/desktop/notifications/application/nvidia-settings] -enable=false - -[org/gnome/desktop/notifications/application/org-bleachbit-bleachbit] -enable=false - -[org/gnome/desktop/notifications/application/org-cryptomator-cryptomator] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-baobab] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-calculator] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-calendar] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-characters] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-chromegnomeshell] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-contacts] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-diskutility] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-eog] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-evince] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-evolution] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-extensions-desktop] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-extensions] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-fileroller] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-font-viewer] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-gedit] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-logs] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-nautilus] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-octave] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-photos] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-powerstats] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-screenshot] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-seahorse-application] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-settings] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-shell-extensions] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-software] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-terminal] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-texteditor] -enable=false - -[org/gnome/desktop/notifications/application/org-gnome-tweaks] -enable=false - -[org/gnome/desktop/notifications/application/org-mozilla-firefox] -enable=false - -[org/gnome/desktop/notifications/application/org-mozilla-thunderbird] -enable=false - -[org/gnome/desktop/notifications/application/org-pulseaudio-pavucontrol] -enable=false - -[org/gnome/desktop/notifications/application/org-remmina-remmina] -enable=false - -[org/gnome/desktop/notifications/application/org-telegram-desktop] -enable=false - -[org/gnome/desktop/notifications/application/pop-cosmic-applications] -enable=false - -[org/gnome/desktop/notifications/application/pop-cosmic-launcher] -enable=false - -[org/gnome/desktop/notifications/application/pop-cosmic-workspaces] -enable=false - -[org/gnome/desktop/notifications/application/r] -enable=false - -[org/gnome/desktop/notifications/application/ranger] -enable=false - -[org/gnome/desktop/notifications/application/rstudio] -enable=false - -[org/gnome/desktop/notifications/application/screenkey] -enable=false - -[org/gnome/desktop/notifications/application/simple-scan] -enable=false - -[org/gnome/desktop/notifications/application/sqlitebrowser] -enable=false - -[org/gnome/desktop/notifications/application/system76-driver] -enable=false - -[org/gnome/desktop/notifications/application/telegramdesktop] -enable=false - -[org/gnome/desktop/notifications/application/texdoctk] -enable=false - -[org/gnome/desktop/notifications/application/texmaker] -enable=false - -[org/gnome/desktop/notifications/application/timeshift-gtk] -enable=false - -[org/gnome/desktop/notifications/application/us-zoom-zoom] -enable=false - -[org/gnome/desktop/notifications/application/vim] -enable=false - -[org/gnome/desktop/notifications/application/vlc] -enable=false - -[org/gnome/desktop/notifications/application/yelp] -enable=false - -[org/gnome/desktop/notifications/application/zoom] -enable=false diff --git a/.config/gnome-settings/shell-base.ini b/.config/gnome-settings/shell-base.ini deleted file mode 100644 index c7cabc4..0000000 --- a/.config/gnome-settings/shell-base.ini +++ /dev/null @@ -1,31 +0,0 @@ -[org/gnome/shell] -# We use the 'AlphabeticalAppGrid@stuarthayhurst' -# extension to populate "app-picker-layout" -# See ~/.config/gnome-settings/shell-extensions.ini -# app-picker-layout=@aa{sv} [] - -# Always reset the command history -command-history=@as [] - -development-tools=false -favorite-apps=@as [] - -# Never show Gnome's welcome dialog again -welcome-dialog-last-shown-version='999.999' - - -[org/gnome/shell/app-switcher] -current-workspace-only=true - - -# [org/gnome/shell/keybindings] -# See ~/.config/gnome-settings/key-bindings.ini for the key bindings - - -[org/gnome/shell/window-switcher] -app-icon-mode='both' -current-workspace-only=true - - -[org/gnome/shell/world-clocks] -locations=@av [] diff --git a/.config/gnome-settings/shell-extensions.ini b/.config/gnome-settings/shell-extensions.ini deleted file mode 100644 index 9447975..0000000 --- a/.config/gnome-settings/shell-extensions.ini +++ /dev/null @@ -1,263 +0,0 @@ -[org/gnome/shell] -disable-user-extensions=false -disabled-extensions=@as [] -enabled-extensions=['allowlockedremotedesktop@kamens.us', 'AlphabeticalAppGrid@stuarthayhurst', 'appindicatorsupport@rgcjonas.gmail.com', 'auto-move-windows@gnome-shell-extensions.gcampax.github.com', 'blur-my-shell@aunetx', 'caffeine@patapon.info', 'just-perfection-desktop@just-perfection', 'launch-new-instance@gnome-shell-extensions.gcampax.github.com', 'space-bar@luchrioh', 'pop-shell@system76.com'] - - -[org/gnome/shell/extensions/alphabetical-app-grid] -folder-order-position='alphabetical' -logging-enabled=false -sort-folder-contents=true - - -[org/gnome/shell/extensions/auto-move-windows] -application-list=['org.mozilla.firefox.desktop:1', 'com.google.Chrome.desktop:2', 'com.discordapp.Discord.desktop:3', 'org.telegram.desktop.desktop:3', 'Zoom.desktop:3', 'org.gnome.Evolution.desktop:4', 'org.mozilla.thunderbird.desktop:4', 'com.spotify.Client.desktop:9', 'org.gnome.Settings.desktop:10', 'gnome-background-panel.desktop:10', 'gnome-bluetooth-panel.desktop:10', 'bluetooth-sendto.desktop:10', 'gnome-display-panel.desktop:10', 'gnome-info-overview-panel.desktop:10', 'gnome-keyboard-panel.desktop:10', 'gnome-network-panel.desktop:10', 'gnome-notifications-panel.desktop:10', 'gnome-power-panel.desktop:10', 'gnome-printers-panel.desktop:10', 'gnome-sound-panel.desktop:10', 'gnome-wifi-panel.desktop:10', 'nvidia-settings.desktop:10', 'org.pulseaudio.pavucontrol.desktop:10'] - - -[org/gnome/shell/extensions/blur-my-shell/applications] -blur=false - - -[org/gnome/shell/extensions/caffeine] -countdown-timer=0 -duration-timer=2 -enable-fullscreen=true -indicator-position-max=2 -restore-state=true -show-notifications=false -toggle-state=false -user-enabled=false - - -[org/gnome/shell/extensions/dash-to-dock] -extend-height=false -# Disable Gnome's default behavior of opening "favorite" apps -# with 1-10 and instead switch workspaces -# (goes together with [org/gnome/shell/keybindings] > switch-to-application-1-10) -# Source: https://askubuntu.com/a/1138322 -hot-keys=false -manualhide=true - - -[org/gnome/shell/extensions/forge] -auto-split-enabled=true -dnd-center-layout='tabbed' -float-always-on-top-enabled=true -focus-border-toggle=true -preview-hint-enabled=true -quick-settings-enabled=true -split-border-toggle=true -stacked-tiling-mode-enabled=true -tabbed-tiling-mode-enabled=true -window-gap-hidden-on-single=true -window-gap-size=uint32 1 -window-gap-size-increment=uint32 1 - - -[org/gnome/shell/extensions/just-perfection] -accessibility-menu=false -activities-button=false -activities-button-icon-monochrome=false -activities-button-label=false -aggregate-menu=true -app-menu=false -app-menu-icon=false -background-menu=false -calendar=false -clock-menu=false -controls-manager-spacing-size=0 -dash=true -double-super-to-appgrid=false -events-button=false -keyboard-layout=false -osd=true -panel=true -panel-in-overview=true -panel-notification-icon=false -power-icon=true -quick-settings=true -ripple-box=false -screen-recording-indicator=true -screen-sharing-indicator=true -search=true -show-apps-button=false -startup-status=0 -theme=false -type-to-search=true -weather=false -window-demands-attention-focus=false -window-picker-icon=true -window-preview-caption=false -window-preview-close-button=true -workspace=false -workspace-background-corner-size=0 -workspace-popup=false -workspace-switcher-should-show=false -workspace-wrap-around=false -workspaces-in-app-grid=false -world-clock=false - - -# [org/gnome/shell/extensions/nightthemeswitcher] - -[org/gnome/shell/extensions/nightthemeswitcher/cursor-variants] -enabled=false - -[org/gnome/shell/extensions/nightthemeswitcher/gtk-variants] -enabled=false - -[org/gnome/shell/extensions/nightthemeswitcher/icon-variants] -enabled=false - -[org/gnome/shell/extensions/nightthemeswitcher/shell-variants] -enabled=false - -[org/gnome/shell/extensions/nightthemeswitcher/time] - -manual-schedule=true -sunrise=6.0 -sunset=21.0 - -# See ~/.config/gnome-settings/key-bindings.ini for the key bindings -# nightthemeswitcher-ondemand-keybinding=['D'] - - -[org/gnome/shell/extensions/openweather] -appid='e1c415e4aa29916a39e8992f57e2b09d' -city='49.6179281,9.1773699>Kirchzell, Germany>0' -days-forecast=2 -delay-ext-init=1 -disable-forecast=false -expand-forecast=true -position-index=1 -show-comment-in-forecast=false -show-comment-in-panel=false - - -[org/gnome/shell/extensions/pop-cosmic] -show-applications-button=false -show-workspaces-button=false - - -[org/gnome/shell/extensions/pop-shell] -# See ~/.config/gnome-settings/key-bindings.ini for the key bindings -active-hint=true -gap-inner=uint32 1 -gap-outer=uint32 1 -hint-color-rgba='rgb(53,132,228)' -show-skip-taskbar=true -show-title=true -smart-gaps=false -tile-by-default=true - - -[org/gnome/shell/extensions/simple-system-monitor] -cpu-usage-text='cpu' -download-speed-text='↓' -is-cpu-usage-enable=true -is-download-speed-enable=false -is-memory-usage-enable=true -is-upload-speed-enable=false -item-separator=' ' -memory-usage-text='ram' -refresh-interval=1 -upload-speed-text='↑' - - -[org/gnome/shell/extensions/sound-output-device-chooser] -expand-volume-menu=true -hide-on-single-device=true -integrate-with-slider=true -show-profiles=false - - -[org/gnome/shell/extensions/space-bar/appearance] -active-workspace-border-radius=8 -active-workspace-border-width=0 -active-workspace-padding-h=8 -active-workspace-padding-v=2 -empty-workspace-border-radius=8 -empty-workspace-border-width=0 -empty-workspace-padding-h=8 -empty-workspace-padding-v=2 -inactive-workspace-border-radius=8 -inactive-workspace-border-width=0 -inactive-workspace-padding-h=8 -inactive-workspace-padding-v=2 -workspace-margin=0 -workspaces-bar-padding=4 - -[org/gnome/shell/extensions/space-bar/behavior] -scroll-wheel='disabled' -show-empty-workspaces=false - -[org/gnome/shell/extensions/space-bar/shortcuts] -enable-move-to-workspace-shortcuts=true -open-menu=@as [] - - -[org/gnome/shell/extensions/status-area-horizontal-spacing] -hpadding=10 - - -[org/gnome/shell/extensions/system-monitor] - -center-display=false -compact-display=false -icon-display=false -move-clock=false -show-tooltip=false - -battery-display=false -battery-hidesystem=false -battery-show-menu=false -battery-show-text=false -battery-time=false - -cpu-display=true -cpu-show-menu=false -cpu-show-text=true -cpu-style='digit' -cpu-individual-cores=false - -disk-display=false -disk-show-menu=false -disk-show-text=false -disk-style='digit' -disk-usage-style='none' - -fan-display=false -fan-show-menu=false -fan-show-text=false -fan-style='digit' - -freq-display=false -freq-show-menu=false -freq-show-text=false -freq-style='digit' - -gpu-display=false -gpu-show-menu=false -gpu-show-text=false -gpu-style='digit' - -memory-display=true -memory-show-menu=false -memory-show-text=true -memory-style='digit' - -net-display=false -net-show-menu=false -net-show-text=false -net-style='digit' - -swap-display=false -swap-show-menu=false -swap-show-text=false -swap-style='digit' - -thermal-display=false -thermal-show-menu=false -thermal-show-text=false -thermal-style='digit' -thermal-fahrenheit-unit=false diff --git a/.config/mackup/README.md b/.config/mackup/README.md deleted file mode 100644 index 9fb09de..0000000 --- a/.config/mackup/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Configuration for `mackup` - -This folder contains various **config** files - to make [`mackup`](https://github.com/lra/mackup) - synchronize (dot) files the general public should *not* see. -Their format is described [here](https://github.com/lra/mackup/tree/master/doc#add-support-for-an-application-or-almost-any-file-or-directory). - - -## Changed Location - -`mackup`'s default configuration lies the the ~/.mackup.cfg file - and in the ~/.mackup folder that holds config files with - custom sync rules not supported "out of the box." - -With a "little hack" during the setup of the dotfiles in this repository, - `mackup`s config files are moved to $XDG_CONFIG_HOME/mackup. diff --git a/.config/mackup/anyconnect.cfg b/.config/mackup/anyconnect.cfg deleted file mode 100644 index 729f0de..0000000 --- a/.config/mackup/anyconnect.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[application] -name = Cisco's AnyConnect - -[configuration_files] -.anyconnect diff --git a/.config/mackup/gnupg.cfg b/.config/mackup/gnupg.cfg deleted file mode 100644 index 5d03f48..0000000 --- a/.config/mackup/gnupg.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[application] -name = gnupg - -[configuration_files] -.local/share/gnupg/trustdb.gpg diff --git a/.config/mackup/histories.cfg b/.config/mackup/histories.cfg deleted file mode 100644 index 7f0ca41..0000000 --- a/.config/mackup/histories.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[application] -name = various history files - -[configuration_files] -# Note: $XDG_STATE_HOME => ~/.local/state -.local/state/bash/history -# .local/state/less/history -> less overwrites the symlink unfortunately -.local/state/python/history -# tig only supports $XDG_DATA_HOME -.local/share/tig/history -# entire folder as $XDG_CONFIG_HOME/psql/psqlrc sets one history file per database -.local/state/psql -.local/state/wget/history -# .local/state/zsh/history -> zsh overwrites the symlink unfortunately diff --git a/.config/mackup/mackup.cfg b/.config/mackup/mackup.cfg deleted file mode 100644 index 1be6c06..0000000 --- a/.config/mackup/mackup.cfg +++ /dev/null @@ -1,35 +0,0 @@ -[storage] -engine = file_system -path = /home/alexander/Cloud/Getraenkemarkt -directory = Mackup - -[applications_to_ignore] -# Do not sync configuration files managed by -# https://code.webartifex.biz/alexander/dotfiles - -alacritty -bash -bat -git -flameshot -mackup -neofetch -p10k -pgsql -poetry -ssh -vim -zsh - -# Do not sync $XDG_DATA_HOME/password-store as it contains symlinks -# that Nextcloud does NOT support -pass - - -# This section is mainly needed such that this file -# does not cause a ConfigParser error -# => Background: The enclosing folder should only -# contain config files for individual applications -# that are to be synced and not mackup's own config -[application] -name = mackup diff --git a/.config/mackup/nautilus.cfg b/.config/mackup/nautilus.cfg deleted file mode 100644 index cac15a4..0000000 --- a/.config/mackup/nautilus.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[application] -name = Gnome Files a.k.a. Nautilus - -[xdg_configuration_files] -gtk-3.0/bookmarks diff --git a/.config/mackup/remmina.cfg b/.config/mackup/remmina.cfg deleted file mode 100644 index 3eb4fcc..0000000 --- a/.config/mackup/remmina.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[application] -name = Remmina's remote clients and config - -[configuration_files] -# Note: $XDG_CONFIG_HOME => ~/.config -.config/remmina/remmina.pref -# Note: $XDG_DATA_HOME => ~/.local/share -.local/share/remmina diff --git a/.config/mackup/ssh_private.cfg b/.config/mackup/ssh_private.cfg deleted file mode 100644 index 3b8153d..0000000 --- a/.config/mackup/ssh_private.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[application] -name = private SSH (config) files - -[configuration_files] -.ssh/config diff --git a/.config/mediathek-view/README.md b/.config/mediathek-view/README.md deleted file mode 100644 index 00a25fb..0000000 --- a/.config/mediathek-view/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# MediathekView - -This folder contains the configuration for the tool - [MediathekView](https://mediathekview.de/), - a downloading software for Germany's public media publications. - -Some files in this folder get created by running the program - and are *not* kept under version control. - -**Important**: In order for the configurations in this folder to be used, - the program must be started with a custom config location, i.e.: - `/opt/MediathekView/MediathekView $XDG_CONFIG_HOME/mediathek-view` diff --git a/.config/mediathek-view/bookmarks.json b/.config/mediathek-view/bookmarks.json deleted file mode 100644 index b2914f7..0000000 --- a/.config/mediathek-view/bookmarks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "bookmarks" : [ ] -} \ No newline at end of file diff --git a/.config/mediathek-view/downloadAbos.txt b/.config/mediathek-view/downloadAbos.txt deleted file mode 100644 index e69de29..0000000 diff --git a/.config/mediathek-view/mediathek.xml b/.config/mediathek-view/mediathek.xml deleted file mode 100644 index 2244424..0000000 --- a/.config/mediathek-view/mediathek.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - - - - - true - - - false - 0 - - false - - true - true - - false - - 75,75,150,100,150,250,50,50,100,100,100,100,100,100,100,50,50,0,100,0,0,200,0,0,200,0,0,0,0,0,0,200,0,0,0,0,0,0,0,0|0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39|| - 75,100,200,300,20,20,20,100,100,100,100,50,50,100,500,0,0|0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,0,0|| - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - /usr/bin/ffmpeg - /usr/bin/vlc - - - - - true - true - true - true - true - false - true - true - false - 2 - 6 - - - - - - - Linux Speichern - http - mp4,mp3,m4v,flv,m4a - /home/alexander/downloads/mediathek-view - %t-%T-%z - true - false - true - - true - false - false - 25 - normal - Standardset zum Speichern der Filme - false - false - false - - - ffmpeg - %t-%T-%Z.mp4 - /usr/bin/ffmpeg - -i %f -c copy -bsf:a aac_adtstoasc ** - http - m3u8 - false - false - - - VLC - %t-%T-%Z.ts - /usr/bin/vlc - %f :sout=#standard{access=file,mux=ts,dst=**} -I dummy --play-and-exit - false - false - - - Linux Abspielen - true - true - false - - false - false - false - 25 - normal - Standardset zum direkten Abspielen der Filme - false - false - false - - - Vlc - /usr/bin/vlc - %f --play-and-exit - false - false - - - - - _ - - - - - - \ No newline at end of file diff --git a/.config/neofetch/config.conf b/.config/neofetch/config.conf deleted file mode 100644 index 91cb11f..0000000 --- a/.config/neofetch/config.conf +++ /dev/null @@ -1,859 +0,0 @@ -# See this Wiki for more info: -# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info - -print_info() { - info title - info underline - - info "OS" distro - info "Host" model - info "Kernel" kernel - info "Uptime" uptime - info "Packages" packages - info "Shell" shell - info "Resolution" resolution - info "DE" de - info "WM" wm - info "WM Theme" wm_theme - info "Theme" theme - info "Icons" icons - info "Terminal" term - info "Terminal Font" term_font - info "Font" font - info "CPU" cpu - info "GPU" gpu - info "GPU Driver" gpu_driver - info "Memory" memory - info "Disk" disk - info "Local IP" local_ip - info "Public IP" public_ip - info "Locale" locale - - info cols -} - -# Title - - -# Hide/Show Fully qualified domain name. -# -# Default: 'off' -# Values: 'on', 'off' -# Flag: --title_fqdn -title_fqdn="on" - - -# Kernel - - -# Shorten the output of the kernel function. -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --kernel_shorthand -# Supports: Everything except *BSDs (except PacBSD and PC-BSD) -# -# Example: -# on: '4.8.9-1-ARCH' -# off: 'Linux 4.8.9-1-ARCH' -kernel_shorthand="on" - - -# Distro - - -# Shorten the output of the distro function -# -# Default: 'off' -# Values: 'on', 'tiny', 'off' -# Flag: --distro_shorthand -# Supports: Everything except Windows and Haiku -distro_shorthand="off" - -# Show/Hide OS Architecture. -# Show 'x86_64', 'x86' and etc in 'Distro:' output. -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --os_arch -# -# Example: -# on: 'Arch Linux x86_64' -# off: 'Arch Linux' -os_arch="on" - - -# Uptime - - -# Shorten the output of the uptime function -# -# Default: 'on' -# Values: 'on', 'tiny', 'off' -# Flag: --uptime_shorthand -# -# Example: -# on: '2 days, 10 hours, 3 mins' -# tiny: '2d 10h 3m' -# off: '2 days, 10 hours, 3 minutes' -uptime_shorthand="off" - - -# Memory - - -# Show memory pecentage in output. -# -# Default: 'off' -# Values: 'on', 'off' -# Flag: --memory_percent -# -# Example: -# on: '1801MiB / 7881MiB (22%)' -# off: '1801MiB / 7881MiB' -memory_percent="on" - -# Change memory output unit. -# -# Default: 'mib' -# Values: 'kib', 'mib', 'gib' -# Flag: --memory_unit -# -# Example: -# kib '1020928KiB / 7117824KiB' -# mib '1042MiB / 6951MiB' -# gib: ' 0.98GiB / 6.79GiB' -memory_unit="gib" - - -# Packages - - -# Show/Hide Package Manager names. -# -# Default: 'tiny' -# Values: 'on', 'tiny' 'off' -# Flag: --package_managers -# -# Example: -# on: '998 (pacman), 8 (flatpak), 4 (snap)' -# tiny: '908 (pacman, flatpak, snap)' -# off: '908' -package_managers="on" - - -# Shell - - -# Show the path to $SHELL -# -# Default: 'off' -# Values: 'on', 'off' -# Flag: --shell_path -# -# Example: -# on: '/bin/bash' -# off: 'bash' -shell_path="off" - -# Show $SHELL version -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --shell_version -# -# Example: -# on: 'bash 4.4.5' -# off: 'bash' -shell_version="on" - - -# CPU - - -# CPU speed type -# -# Default: 'bios_limit' -# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'. -# Flag: --speed_type -# Supports: Linux with 'cpufreq' -# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value. -speed_type="bios_limit" - -# CPU speed shorthand -# -# Default: 'off' -# Values: 'on', 'off'. -# Flag: --speed_shorthand -# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz -# -# Example: -# on: 'i7-6500U (4) @ 3.1GHz' -# off: 'i7-6500U (4) @ 3.100GHz' -speed_shorthand="off" - -# Enable/Disable CPU brand in output. -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --cpu_brand -# -# Example: -# on: 'Intel i7-6500U' -# off: 'i7-6500U (4)' -cpu_brand="on" - -# CPU Speed -# Hide/Show CPU speed. -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --cpu_speed -# -# Example: -# on: 'Intel i7-6500U (4) @ 3.1GHz' -# off: 'Intel i7-6500U (4)' -cpu_speed="on" - -# CPU Cores -# Display CPU cores in output -# -# Default: 'logical' -# Values: 'logical', 'physical', 'off' -# Flag: --cpu_cores -# Support: 'physical' doesn't work on BSD. -# -# Example: -# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores) -# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores) -# off: 'Intel i7-6500U @ 3.1GHz' -cpu_cores="logical" - -# CPU Temperature -# Hide/Show CPU temperature. -# Note the temperature is added to the regular CPU function. -# -# Default: 'off' -# Values: 'C', 'F', 'off' -# Flag: --cpu_temp -# Supports: Linux, BSD -# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable -# coretemp kernel module. This only supports newer Intel processors. -# -# Example: -# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' -# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' -# off: 'Intel i7-6500U (4) @ 3.1GHz' -cpu_temp="C" - - -# GPU - - -# Enable/Disable GPU Brand -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --gpu_brand -# -# Example: -# on: 'AMD HD 7950' -# off: 'HD 7950' -gpu_brand="on" - -# Which GPU to display -# -# Default: 'all' -# Values: 'all', 'dedicated', 'integrated' -# Flag: --gpu_type -# Supports: Linux -# -# Example: -# all: -# GPU1: AMD HD 7950 -# GPU2: Intel Integrated Graphics -# -# dedicated: -# GPU1: AMD HD 7950 -# -# integrated: -# GPU1: Intel Integrated Graphics -gpu_type="all" - - -# Resolution - - -# Display refresh rate next to each monitor -# Default: 'off' -# Values: 'on', 'off' -# Flag: --refresh_rate -# Supports: Doesn't work on Windows. -# -# Example: -# on: '1920x1080 @ 60Hz' -# off: '1920x1080' -refresh_rate="on" - - -# Gtk Theme / Icons / Font - - -# Shorten output of GTK Theme / Icons / Font -# -# Default: 'off' -# Values: 'on', 'off' -# Flag: --gtk_shorthand -# -# Example: -# on: 'Numix, Adwaita' -# off: 'Numix [GTK2], Adwaita [GTK3]' -gtk_shorthand="off" - - -# Enable/Disable gtk2 Theme / Icons / Font -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --gtk2 -# -# Example: -# on: 'Numix [GTK2], Adwaita [GTK3]' -# off: 'Adwaita [GTK3]' -gtk2="on" - -# Enable/Disable gtk3 Theme / Icons / Font -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --gtk3 -# -# Example: -# on: 'Numix [GTK2], Adwaita [GTK3]' -# off: 'Numix [GTK2]' -gtk3="on" - - -# IP Address - - -# Website to ping for the public IP -# -# Default: 'http://ident.me' -# Values: 'url' -# Flag: --ip_host -public_ip_host="http://ident.me" - -# Public IP timeout. -# -# Default: '2' -# Values: 'int' -# Flag: --ip_timeout -public_ip_timeout=2 - - -# Desktop Environment - - -# Show Desktop Environment version -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --de_version -de_version="on" - - -# Disk - - -# Which disks to display. -# The values can be any /dev/sdXX, mount point or directory. -# NOTE: By default we only show the disk info for '/'. -# -# Default: '/' -# Values: '/', '/dev/sdXX', '/path/to/drive'. -# Flag: --disk_show -# -# Example: -# disk_show=('/' '/dev/sdb1'): -# 'Disk (/): 74G / 118G (66%)' -# 'Disk (/mnt/Videos): 823G / 893G (93%)' -# -# disk_show=('/'): -# 'Disk (/): 74G / 118G (66%)' -# -disk_show=('/') - -# Disk subtitle. -# What to append to the Disk subtitle. -# -# Default: 'mount' -# Values: 'mount', 'name', 'dir', 'none' -# Flag: --disk_subtitle -# -# Example: -# name: 'Disk (/dev/sda1): 74G / 118G (66%)' -# 'Disk (/dev/sdb2): 74G / 118G (66%)' -# -# mount: 'Disk (/): 74G / 118G (66%)' -# 'Disk (/mnt/Local Disk): 74G / 118G (66%)' -# 'Disk (/mnt/Videos): 74G / 118G (66%)' -# -# dir: 'Disk (/): 74G / 118G (66%)' -# 'Disk (Local Disk): 74G / 118G (66%)' -# 'Disk (Videos): 74G / 118G (66%)' -# -# none: 'Disk: 74G / 118G (66%)' -# 'Disk: 74G / 118G (66%)' -# 'Disk: 74G / 118G (66%)' -disk_subtitle="mount" - -# Disk percent. -# Show/Hide disk percent. -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --disk_percent -# -# Example: -# on: 'Disk (/): 74G / 118G (66%)' -# off: 'Disk (/): 74G / 118G' -disk_percent="on" - - -# Song - - -# Manually specify a music player. -# -# Default: 'auto' -# Values: 'auto', 'player-name' -# Flag: --music_player -# -# Available values for 'player-name': -# -# amarok -# audacious -# banshee -# bluemindo -# clementine -# cmus -# deadbeef -# deepin-music -# dragon -# elisa -# exaile -# gnome-music -# gmusicbrowser -# gogglesmm -# guayadeque -# io.elementary.music -# iTunes -# juk -# lollypop -# mocp -# mopidy -# mpd -# muine -# netease-cloud-music -# olivia -# playerctl -# pogo -# pragha -# qmmp -# quodlibet -# rhythmbox -# sayonara -# smplayer -# spotify -# strawberry -# tauonmb -# tomahawk -# vlc -# xmms2d -# xnoise -# yarock -music_player="auto" - -# Format to display song information. -# -# Default: '%artist% - %album% - %title%' -# Values: '%artist%', '%album%', '%title%' -# Flag: --song_format -# -# Example: -# default: 'Song: Jet - Get Born - Sgt Major' -song_format="%artist% - %album% - %title%" - -# Print the Artist, Album and Title on separate lines -# -# Default: 'off' -# Values: 'on', 'off' -# Flag: --song_shorthand -# -# Example: -# on: 'Artist: The Fratellis' -# 'Album: Costello Music' -# 'Song: Chelsea Dagger' -# -# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger' -song_shorthand="off" - -# 'mpc' arguments (specify a host, password etc). -# -# Default: '' -# Example: mpc_args=(-h HOST -P PASSWORD) -mpc_args=() - - -# Text Colors - - -# Text Colors -# -# Default: 'distro' -# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' -# Flag: --colors -# -# Each number represents a different part of the text in -# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info' -# -# Example: -# colors=(distro) - Text is colored based on Distro colors. -# colors=(4 6 1 8 8 6) - Text is colored in the order above. -colors=(distro) - - -# Text Options - - -# Toggle bold text -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --bold -bold="on" - -# Enable/Disable Underline -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --underline -underline_enabled="on" - -# Underline character -# -# Default: '-' -# Values: 'string' -# Flag: --underline_char -underline_char="=" - - -# Info Separator -# Replace the default separator with the specified string. -# -# Default: ':' -# Flag: --separator -# -# Example: -# separator="->": 'Shell-> bash' -# separator=" =": 'WM = dwm' -separator=":" - - -# Color Blocks - - -# Color block range -# The range of colors to print. -# -# Default: '0', '15' -# Values: 'num' -# Flag: --block_range -# -# Example: -# -# Display colors 0-7 in the blocks. (8 colors) -# neofetch --block_range 0 7 -# -# Display colors 0-15 in the blocks. (16 colors) -# neofetch --block_range 0 15 -block_range=(0 15) - -# Toggle color blocks -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --color_blocks -color_blocks="on" - -# Color block width in spaces -# -# Default: '3' -# Values: 'num' -# Flag: --block_width -block_width=3 - -# Color block height in lines -# -# Default: '1' -# Values: 'num' -# Flag: --block_height -block_height=1 - -# Color Alignment -# -# Default: 'auto' -# Values: 'auto', 'num' -# Flag: --col_offset -# -# Number specifies how far from the left side of the terminal (in spaces) to -# begin printing the columns, in case you want to e.g. center them under your -# text. -# Example: -# col_offset="auto" - Default behavior of neofetch -# col_offset=7 - Leave 7 spaces then print the colors -col_offset="auto" - -# Progress Bars - - -# Bar characters -# -# Default: '-', '=' -# Values: 'string', 'string' -# Flag: --bar_char -# -# Example: -# neofetch --bar_char 'elapsed' 'total' -# neofetch --bar_char '-' '=' -bar_char_elapsed="-" -bar_char_total="=" - -# Toggle Bar border -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --bar_border -bar_border="on" - -# Progress bar length in spaces -# Number of chars long to make the progress bars. -# -# Default: '15' -# Values: 'num' -# Flag: --bar_length -bar_length=15 - -# Progress bar colors -# When set to distro, uses your distro's logo colors. -# -# Default: 'distro', 'distro' -# Values: 'distro', 'num' -# Flag: --bar_colors -# -# Example: -# neofetch --bar_colors 3 4 -# neofetch --bar_colors distro 5 -bar_color_elapsed="distro" -bar_color_total="distro" - - -# Info display -# Display a bar with the info. -# -# Default: 'off' -# Values: 'bar', 'infobar', 'barinfo', 'off' -# Flags: --cpu_display -# --memory_display -# --battery_display -# --disk_display -# -# Example: -# bar: '[---=======]' -# infobar: 'info [---=======]' -# barinfo: '[---=======] info' -# off: 'info' -cpu_display="off" -memory_display="off" -battery_display="off" -disk_display="off" - - -# Backend Settings - - -# Image backend. -# -# Default: 'ascii' -# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off', -# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty' -# Flag: --backend -image_backend="ascii" - -# Image Source -# -# Which image or ascii file to display. -# -# Default: 'auto' -# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' -# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' -# Flag: --source -# -# NOTE: 'auto' will pick the best image source for whatever image backend is used. -# In ascii mode, distro ascii art will be used and in an image mode, your -# wallpaper will be used. -image_source="auto" - - -# Ascii Options - - -# Ascii distro -# Which distro's ascii art to display. -# -# Default: 'auto' -# Values: 'auto', 'distro_name' -# Flag: --ascii_distro -# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS", -# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs, -# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, -# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, -# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, -# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, -# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin, -# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary, -# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD, -# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, -# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, -# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, -# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite, -# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, -# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib, -# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, -# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba, -# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD, -# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint, -# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, -# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, -# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, -# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, -# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, -# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, -# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, -# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin, -# and IRIX have ascii logos -# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants. -# Use '{distro name}_old' to use the old logos. -# NOTE: Ubuntu has flavor variants. -# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME, -# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors. -# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu, -# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android, -# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola, -# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS, -# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian, -# postmarketOS, and Void have a smaller logo variant. -# Use '{distro name}_small' to use the small variants. -ascii_distro="auto" - -# Ascii Colors -# -# Default: 'distro' -# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' -# Flag: --ascii_colors -# -# Example: -# ascii_colors=(distro) - Ascii is colored based on Distro colors. -# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors. -ascii_colors=(distro) - -# Bold ascii logo -# Whether or not to bold the ascii logo. -# -# Default: 'on' -# Values: 'on', 'off' -# Flag: --ascii_bold -ascii_bold="on" - - -# Image Options - - -# Image loop -# Setting this to on will make neofetch redraw the image constantly until -# Ctrl+C is pressed. This fixes display issues in some terminal emulators. -# -# Default: 'off' -# Values: 'on', 'off' -# Flag: --loop -image_loop="off" - -# Thumbnail directory -# -# Default: '~/.cache/thumbnails/neofetch' -# Values: 'dir' -thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch" - -# Crop mode -# -# Default: 'normal' -# Values: 'normal', 'fit', 'fill' -# Flag: --crop_mode -# -# See this wiki page to learn about the fit and fill options. -# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F -crop_mode="normal" - -# Crop offset -# Note: Only affects 'normal' crop mode. -# -# Default: 'center' -# Values: 'northwest', 'north', 'northeast', 'west', 'center' -# 'east', 'southwest', 'south', 'southeast' -# Flag: --crop_offset -crop_offset="center" - -# Image size -# The image is half the terminal width by default. -# -# Default: 'auto' -# Values: 'auto', '00px', '00%', 'none' -# Flags: --image_size -# --size -image_size="auto" - -# Gap between image and text -# -# Default: '3' -# Values: 'num', '-num' -# Flag: --gap -gap=3 - -# Image offsets -# Only works with the w3m backend. -# -# Default: '0' -# Values: 'px' -# Flags: --xoffset -# --yoffset -yoffset=0 -xoffset=0 - -# Image background color -# Only works with the w3m backend. -# -# Default: '' -# Values: 'color', 'blue' -# Flag: --bg_color -background_color= - - -# Misc Options - -# Stdout mode -# Turn off all colors and disables image backend (ASCII/Image). -# Useful for piping into another command. -# Default: 'off' -# Values: 'on', 'off' -stdout="off" diff --git a/.config/psql/psqlrc b/.config/psql/psqlrc index cec074d..e65bdc3 100644 --- a/.config/psql/psqlrc +++ b/.config/psql/psqlrc @@ -1,35 +1,48 @@ --- psql executes the commands in this ~/.psqlrc creating output --- (this flag hides that and is unset again at the bottom) +-- `psql` executes the commands in this file creating output +-- => This flag hides that and is unset again at the bottom \set QUIET 1 + -- Show verbose error messages \set VERBOSITY verbose --- Use normal "table" format by default and "expanded table" with lots of columns + +-- Use normal "table" format by default +-- and "expanded table" with lots of columns \x auto --- By default, NULLs show up as empty spaces, which looks like empty strings + +-- By default, `NULL`s show up as empty spaces, +-- which may be confused with empty strings +-- => Show "NULL" instead for clarity \pset null 'NULL' --- Ignore errors in interactive sessions but not when executing scripts + +-- Ignore errors in interactive sessions +-- but not when executing scripts \set ON_ERROR_ROLLBACK interactive + -- Upper case SQL keywords \set COMP_KEYWORD_CASE upper --- Use the best text editor in the world + +-- Make VI the default editor \set EDITOR vi --- Use separate history files per database and --- keep them in one folder (for easier sync with mackup) --- under $XDG_STATE_HOME/psql + +-- Use separate history files per database +-- and keep them in one folder \set HISTFILE ~/.local/state/psql/history- :DBNAME + -- Don't store the same SQL statement repeatedly \set HISTCONTROL ignoredups + -- Make all queries display query times \timing + -- Unset the flag set at the top of this file \unset QUIET diff --git a/.config/pypoetry/config.toml b/.config/pypoetry/config.toml deleted file mode 100644 index 53b35d3..0000000 --- a/.config/pypoetry/config.toml +++ /dev/null @@ -1,3 +0,0 @@ -[virtualenvs] -create = true -in-project = true diff --git a/.config/python/pythonrc b/.config/python/pythonrc deleted file mode 100644 index 924ee35..0000000 --- a/.config/python/pythonrc +++ /dev/null @@ -1,38 +0,0 @@ -# This file moves Python's history file to $XDG_STATE_HOME/python/history -# Adapted from: https://unix.stackexchange.com/questions/630642/change-location-of-python-history - -import os -import atexit -import readline - -try: - import pathlib -except ImportError: # not part of python2 - pass -else: - - if readline.get_current_history_length() == 0: - state_home = os.environ.get("XDG_STATE_HOME") - if state_home is None: - state_home = pathlib.Path.home() / ".local" / "state" - else: - state_home = pathlib.Path(state_home) - - history_path = state_home / "python" / "history" - if history_path.is_dir(): - raise OSError(history_path + " cannot be a directory") - - history = str(history_path) - - try: - readline.read_history_file(history) - except OSError: # Non existent - pass - - def write_history(): - try: - readline.write_history_file(history) - except OSError: - pass - - atexit.register(write_history) diff --git a/.config/python/startup.py b/.config/python/startup.py new file mode 100644 index 0000000..9c1a938 --- /dev/null +++ b/.config/python/startup.py @@ -0,0 +1,53 @@ +"""Move Python's history file to "$XDG_STATE_HOME/python/history".""" + +import atexit +import os +import readline +import sys + + +# For Python 3.13+ let `$PYTHON_HISTORY` handle it +if sys.version_info >= (3, 13): + sys.exit(0) + + +# For Python 2, do nothing +try: + import pathlib +except ImportError: + sys.exit(0) + + +if readline.get_current_history_length() == 0: + state_home = os.environ.get("XDG_STATE_HOME") + + if state_home is None: + state_home = pathlib.Path.home() / ".local" / "state" + else: + state_home = pathlib.Path(state_home) + + history_path = state_home / "python" / "history" + history_path.parent.mkdir(parents=True, exist_ok=True) + + history_location = str(history_path) + + if history_path.is_dir(): + msg = history_location + " must not be a directory" + raise OSError(msg) + + try: + readline.read_history_file(history_location) + except OSError: # Non existent + pass + + readline.set_auto_history() + readline.set_history_length(99999) + + def write_history(): + try: + readline.write_history_file(history_location) + except OSError: + pass + + atexit.register(write_history) + diff --git a/.config/shell/README.md b/.config/shell/README.md index 7731f1c..bd3a821 100644 --- a/.config/shell/README.md +++ b/.config/shell/README.md @@ -1,11 +1,3 @@ -# Shell-related Configuration +# Shell-related Configurations -This folder contains further files that are sourced by `bash` and `zsh`. - -[init.sh](https://gitlab.webartifex.biz/alexander/dotfiles/-/blob/main/.config/shell/init.sh) - contains the common initialization logic for all shells - and - integrates the two sub-folders - [aliases.d](https://gitlab.webartifex.biz/alexander/dotfiles/-/tree/main/.config/shell/aliases.d) - and - [utils.d](https://gitlab.webartifex.biz/alexander/dotfiles/-/tree/main/.config/shell/utils.d). +This folder contains files that are sourced by `bash` and `zsh`. diff --git a/.config/shell/aliases b/.config/shell/aliases new file mode 100644 index 0000000..19a151c --- /dev/null +++ b/.config/shell/aliases @@ -0,0 +1,28 @@ +#!/bin/sh + +# Aliases used in all kinds of shells + + +# Manage the bare `git` repository in ~/ holding the dotfiles +alias dotfiles='git --git-dir=$XDG_DATA_HOME/dotfiles --work-tree=$HOME' + + +# Integrate `git` +if _command_exists git; then + alias g='git' + + # Make all `git` aliases become shell aliases with a "g" prefix + for al in $(git aliases-internal); do + # Only "real" (i.e., short) aliases are created + [ ${#al} -lt 7 ] && eval "alias g$al='git $al'" + done + + # Check if a "main" branch exists in place of a "master" branch + git_main_branch() { + if [[ -n "$(git branch --list main)" ]]; then + echo "main" + else + echo "master" + fi + } +fi diff --git a/.config/shell/aliases.d/README.md b/.config/shell/aliases.d/README.md deleted file mode 100644 index 81e8657..0000000 --- a/.config/shell/aliases.d/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Shell Aliases - -This folder contains various files that define aliases - to be used in the shell. - -Originally, they all were defined in one big "~/.config/shell/aliases.sh" file - but are now split across many smaller files here for clarity. diff --git a/.config/shell/aliases.d/files.sh b/.config/shell/aliases.d/files.sh deleted file mode 100644 index 9e20725..0000000 --- a/.config/shell/aliases.d/files.sh +++ /dev/null @@ -1,59 +0,0 @@ -# Make working with files more convenient - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - - -# Avoid bad mistakes and show what happens -alias cp="cp --interactive --verbose" -alias ln='ln --interactive --verbose' -alias mv='mv --interactive --verbose' -alias rm='rm -I --preserve-root --verbose' - - -# Faster directory switching -alias cd..='cd ..' -alias ..='cd ..' -alias ...='cd ../..' -alias ....='cd ../../..' -alias .....='cd ../../../..' - - -# Convenient defaults -alias mkdir='mkdir -p' -alias md='mkdir' -alias rmdir='rmdir --parents --verbose' -alias rd='rmdir' - - -# Convenient grepping -alias grep='grep --color=auto --exclude-dir={.cache,\*.egg-info,.git,.nox,.tox,.venv}' -alias egrep='egrep --color=auto --exclude-dir={.cache,\*.egg-info,.git,.nox,.tox,.venv}' -alias fgrep='fgrep --color=auto --exclude-dir={.cache,*.egg-info,.git,.nox,.tox,.venv}' - - -# Convenient searching -alias fdir='find . -type d -name' -alias ffile='find . -type f -name' - - -# Convenient listings -alias ls='ls --classify --color=auto --group-directories-first --human-readable --no-group --time-style=long-iso' -alias la='ls --almost-all' -alias lal='la -l' -alias ll='ls -l' -alias l.='ls --directory .*' -alias ll.='l. -l' - - -# More convenience with various other file-related utilities -alias df='df --human-readable' -alias du='du --human-readable' -alias diff='diff --color=auto --unified' -_command_exists colordiff && alias diff='colordiff --unified' -alias free='free --human --total' -alias less='less --chop-long-lines --ignore-case --LONG-PROMPT --no-init --status-column --quit-if-one-screen' -alias more='less' -alias tree='tree -C --dirsfirst' diff --git a/.config/shell/aliases.d/generic.sh b/.config/shell/aliases.d/generic.sh deleted file mode 100644 index 1134d7f..0000000 --- a/.config/shell/aliases.d/generic.sh +++ /dev/null @@ -1,77 +0,0 @@ -# Generic shell aliases for bash and zsh - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - -_in_zsh() { - [ -n "$ZSH_VERSION" ] -} - - -# Re-run last command with sudo privileges -if _in_zsh; then - alias ,,='sudo $(fc -ln -1)' -else - alias ,,='sudo $(history -p !!)' -fi - - -# Convenient piping with zsh -if _in_zsh; then - alias -g B='| bat' - alias -g F='| fzf' - alias -g G='| grep' - alias -g H='| head' - alias -g L='| less' - alias -g T='| tail' - alias -g NE='2 > /dev/null' - alias -g NUL='> /dev/null 2>&1' -fi - - -# (Non-)obvious synonyms -alias cls='clear' -alias help='man' - - -# Edit the $HISTFILE -alias HISTFILE="vi $HISTFILE" - - -# Various one-line utilities -alias datetime='date +"%Y-%m-%d %H:%M:%S %z (%Z)"' -alias datetime-iso='date --iso-8601=seconds' -alias dotfiles='git --git-dir=$XDG_DATA_HOME/dotfiles/ --work-tree=$HOME' -alias external-ip="curl https://icanhazip.com" -alias external-ip-alt="curl https://ipinfo.io/ip\?token=cfd78a97e15ebf && echo" -alias external-ip-extended-infos="curl https://ipinfo.io/json\?token=cfd78a97e15ebf && echo" -alias speedtest="curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/22210ca35228f0bbcef75a7c14587c4ecb875ab4/speedtest.py | python -" - - -# Fix common typos -_command_exists ifconfig && alias ipconfig='ifconfig' -_command_exists R && alias r='R' - - -# Use sane defaults -_command_exists exa && alias exa='exa --group-directories-first --git --time-style=long-iso' -_command_exists netstat && alias ports='netstat -tulanp' -_command_exists screenfetch && alias screenfetch='screenfetch -n' -alias uptime='uptime --pretty' -alias wget="wget --continue --hsts-file=$XDG_STATE_HOME/wget/history" - - -# Create shorter aliases for various utilities -_command_exists batcat && alias bat='batcat' -_command_exists fdfind && alias fd='fdfind' -_command_exists neofetch && alias nf='neofetch' -_command_exists ranger && alias rn='ranger' -_command_exists screenfetch && alias sf='screenfetch' - - -# Alias to align commands in ~/.config/i3/config -# Debian/Arch => dex -# Fedora => dex-autostart -_command_exists dex-autostart && alias dex='dex-autostart' diff --git a/.config/shell/aliases.d/git.sh b/.config/shell/aliases.d/git.sh deleted file mode 100644 index 10d1d0c..0000000 --- a/.config/shell/aliases.d/git.sh +++ /dev/null @@ -1,24 +0,0 @@ -# All git aliases (with < 7 characters) become shell aliases with a "g" prefix - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - - -if _command_exists git; then - alias g='git' - - for al in $(git internal-aliases); do - [ ${#al} -lt 7 ] && eval "alias g$al='git $al'" - done - - # Check if a 'main' branch exists in place of a 'master' branch - git_main_branch() { - if [[ -n "$(git branch --list main)" ]]; then - echo 'main' - else - echo 'master' - fi - } -fi diff --git a/.config/shell/aliases.d/python.sh b/.config/shell/aliases.d/python.sh deleted file mode 100644 index 126cd31..0000000 --- a/.config/shell/aliases.d/python.sh +++ /dev/null @@ -1,25 +0,0 @@ -# Make working with Python more convenient - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - - -# Interactive shells -alias py='python' -alias bpy='bpython' -alias ipy='ipython' - - -if _command_exists poetry; then - alias pr='poetry run' -fi - - -if _command_exists pyenv; then - alias pyvenvs='pyenv virtualenvs --bare --skip-aliases' - alias pyver='pyenv version' - alias pyvers='pyenv versions --skip-aliases' - alias pywhich='pyenv which' -fi diff --git a/.config/shell/env b/.config/shell/env new file mode 100644 index 0000000..b1f9a2d --- /dev/null +++ b/.config/shell/env @@ -0,0 +1,35 @@ +#!/bin/sh + +# Environment variables for all kinds of shells + + +# Standard XDG base directories +# See: https://wiki.archlinux.org/title/XDG_Base_Directory +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$HOME/.local/share" # also set in ~/.local/bin/install-dotfiles +export XDG_STATE_HOME="$HOME/.local/state" +# Make up a XDG directory for binaries (that does not exist in the standard) +export XDG_BIN_HOME="$HOME/.local/bin" + + +# Convenient names for various places in the system +export DOTFILES_DIR="$XDG_DATA_HOME/dotfiles" # also set in ~/.local/bin/install-dotfiles + + +# Generic shell configs +export EDITOR=vim +export GPG_TTY=$(tty) +export PAGER="less --chop-long-lines --ignore-case --LONG-PROMPT --no-init --status-column --quit-if-one-screen" +export TERM=xterm-256color +export TZ="Europe/Berlin" +export VISUAL=$EDITOR + + +# Move common tools' config and cache files into XDG directories +export BAT_CONFIG_PATH="$XDG_CONFIG_HOME/bat/config" +export LESSHISTFILE="$XDG_STATE_HOME/less/history" +export PSQLRC="$XDG_CONFIG_HOME/psql/psqlrc" +export PYTHON_HISTORY="$XDG_STATE_HOME/python/history" +export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/startup.py" +export VIMINIT="source $XDG_CONFIG_HOME/vim/vimrc" diff --git a/.config/shell/init.sh b/.config/shell/init.sh deleted file mode 100644 index 5b6e6ab..0000000 --- a/.config/shell/init.sh +++ /dev/null @@ -1,49 +0,0 @@ -# This file initializes the shell - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - - -_init_pyenv () { # used in ~/.config/shell/utils.d/python.sh as well - _command_exists pyenv || return - - eval "$(pyenv init -)" - eval "$(pyenv virtualenv-init -)" -} -_init_pyenv - - -_in_x11 () { - _result=$(loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type --value) - if [[ $_result == "x11" ]]; then - return 0 - else - return 1 - fi -} - -_in_wayland () { - _result=$(loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type --value) - if [[ $_result == "wayland" ]]; then - return 0 - else - return 1 - fi -} - - -# Configure the keyboard: -# - make right alt the compose key, e.g., for German Umlauts -# - make caps lock a ctrl modifier and Esc key -if _in_x11; then - setxkbmap us -option 'compose:ralt,caps:ctrl_modifier,lv3:menu_switch' - _command_exists xcape && xcape -e "Caps_Lock=Escape" -fi - - -# Load shell utilities and create aliases -for file in $HOME/.config/shell/{utils.d,aliases.d}/*.sh; do - source $file -done diff --git a/.config/shell/logout b/.config/shell/logout new file mode 100644 index 0000000..e5c5993 --- /dev/null +++ b/.config/shell/logout @@ -0,0 +1,25 @@ +#!/bin/sh + +# When logging out of a machine, clear the screen to increase privacy + + +if [ "$SHLVL" = 1 ]; then # If on the outermost shell instance + + # Clear screen and scrollback in SSH/terminal emulators + if _command_exists clear; then + clear + printf '\e[3J' # Clear scrollback buffer in modern emulators + fi + + # On real Linux tty, run `clear_console` for full reset as well + if [ -t 0 ] && [ "$(tty)" != "not a tty" ]; then + case "$(tty)" in + /dev/tty[0-9]*) + if _command_exists clear_console; then + clear_console -q + fi + ;; + esac + fi + +fi diff --git a/.config/shell/logout.sh b/.config/shell/logout.sh deleted file mode 100644 index 6baa825..0000000 --- a/.config/shell/logout.sh +++ /dev/null @@ -1 +0,0 @@ -# This file is sourced by a login shell upon logout diff --git a/.config/shell/utils.d/README.md b/.config/shell/utils.d/README.md deleted file mode 100644 index abbb008..0000000 --- a/.config/shell/utils.d/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Shell Utilities - -This folder contains various files that provide utilities - to be used in the shell. - -Originally, they all were defined in one big "~/.config/shell/utils.sh" file - but are now split across many smaller files here for clarity. diff --git a/.config/shell/utils.d/files.sh b/.config/shell/utils.d/files.sh deleted file mode 100644 index 7bf10f1..0000000 --- a/.config/shell/utils.d/files.sh +++ /dev/null @@ -1,66 +0,0 @@ -# The utilities defined here make working with files and folders easier - - -# List the $PATH variable, one element per line -# (if an argument is passed, grep for it) -path() { - if [ -n "$1" ]; then - echo $PATH | perl -p -e 's/:/\n/g;' | grep -i "$1" - else - echo $PATH | perl -p -e 's/:/\n/g;' - fi -} - - -# Show folders by size -disk-usage() { - if [ -n "$1" ]; then - _dest="$1" - else - _dest=. - fi - \du --human-readable --max-depth=1 $_dest 2>/dev/null | sort --human-numeric-sort --reverse -} - - -# Search all files in a directory and its children -lsgrep() { - ls --almost-all --directory . ./**/* | uniq | grep --color=auto -i "$*" -} - -# Make a directory and cd there -mcd() { - test -n "$1" || return - mkdir -p "$1" && cd "$1" || return -} - - -# Extract any compressed archive or file -extract() { - if [ -f "$1" ] ; then - case "$1" in - *.tar.bz2) tar xjvf "$1" ;; - *.tar.gz) tar xzvf "$1" ;; - *.tar.xz) tar xvf "$1" ;; - *.bz2) bzip2 -d "$1" ;; - *.gz) gunzip "$1" ;; - *.tar) tar xf "$1" ;; - *.tbz2) tar xjf "$1" ;; - *.tgz) tar xzf "$1" ;; - *.zip) unzip "$1" ;; - *.Z) uncompress "$1" ;; - *.7z) 7z x "$1" ;; - *) echo "'$1' cannot be extracted automatically" ;; - esac - else - echo "'$1' is not a file" - fi -} - -mktar() { # out of a directory - tar cvzf "${1%%/}.tar.gz" "${1%%/}/" -} - -mkzip() { # out of a file or directory - zip -r "${1%%/}.zip" "$1" -} diff --git a/.config/shell/utils.d/passwords.sh b/.config/shell/utils.d/passwords.sh deleted file mode 100644 index 8f089aa..0000000 --- a/.config/shell/utils.d/passwords.sh +++ /dev/null @@ -1,80 +0,0 @@ -# The utilities defined here allow to create random login credentials - - -# Generate random passwords that are accepted by most services -genpw() { - PARSED=$(getopt --quiet --options=acn: --longoptions=alphanum,clip,chars: -- "$@") - eval set -- "$PARSED" - SYMBOLS='--symbols' - CHARS=30 - XCLIP=false - while true; do - case "$1" in - -a|--alphanum) - SYMBOLS='' - shift - ;; - -c|--clip) - XCLIP=true - shift - ;; - -n|--chars) - CHARS=$2 - shift 2 - ;; - --) - shift - break - ;; - *) - break - ;; - esac - done - PW=$(pwgen --ambiguous --capitalize --numerals --secure $SYMBOLS --remove-chars="|/\\\"\`\'()[]{}<>^~@§$\#" $CHARS 1) - if [[ $XCLIP == true ]]; then - echo $PW | xclip -selection c - else - echo $PW - fi -} - -alias genpw-alphanum='pwgen --ambiguous --capitalize --numerals --secure 30 1' - - -# Random email addresses that look like "normal" ones -genemail() { - PARSED=$(getopt --quiet --options=c --longoptions=clip -- "$@") - eval set -- "$PARSED" - XCLIP=false - while true; do - case "$1" in - -c|--clip) - XCLIP=true - shift - ;; - --) - shift - break - ;; - *) - break - ;; - esac - done - FIRST=$(shuf -i 4-5 -n 1) - LAST=$(shuf -i 8-10 -n 1) - - if _command_exists gpw; then - USER="$(gpw 1 $FIRST).$(gpw 1 $LAST)@webartifex.biz" - else - # Fallback that looks a bit less "normal" - USER="$(pwgen --no-capitalize --no-numerals --secure $FIRST 1).$(pwgen --no-capitalize --no-numerals --secure $LAST 1)@webartifex.biz" - fi - - if [[ $XCLIP == true ]]; then - echo $USER | xclip -selection c - else - echo $USER - fi -} diff --git a/.config/shell/utils.d/python.sh b/.config/shell/utils.d/python.sh deleted file mode 100644 index d63fa6b..0000000 --- a/.config/shell/utils.d/python.sh +++ /dev/null @@ -1,101 +0,0 @@ -# This file creates a function to install and update the Python develop environments - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - -prepend-to-path () { # if not already there - if [ -d "$1" ] ; then - case :$PATH: in - *:$1:*) ;; - *) PATH=$1:$PATH ;; - esac - fi -} - - - -# The Python versions pyenv creates (in descending order) -# Important: The first version also holds the "interactive" and "utils" environments -_py3_versions=('3.10.6' '3.9.13' '3.8.13' '3.7.13') -_py2_version='2.7.18' - - -# Each Python version receives its own copy of black, pipenv, and poetry -# (e.g., to avoid possible integration problems between pyenv and poetry -# Source: https://github.com/python-poetry/poetry/issues/5252#issuecomment-1055697424) -_py3_site_packages=('black' 'pipenv' 'poetry') - - -# The pyenv virtualenv "utils" contains some globally available tools (e.g., mackup) -_py3_utils=('leglight' 'mackup' 'youtube-dl') - - -# Important: this REMOVES the old ~/.pyenv installation -_install_pyenv() { - echo "(Re-)Installing pyenv" - - # Ensure that pyenv is on the $PATH - # (otherwise, the pyenv installer emits warnings) - mkdir -p "$PYENV_ROOT/bin" - prepend-to-path "$PYENV_ROOT/bin" - - # Remove old pyenv for clean install - rm -rf "$PYENV_ROOT" >/dev/null - - # Run the official pyenv installer - curl https://pyenv.run | bash - - # Make pyenv usable after this installation in the same shell session - _init_pyenv # defined in ~/.config/shell/utils.sh -} - - -create-or-update-python-envs() { - _command_exists pyenv || _install_pyenv - - eval "$(pyenv init --path)" - - # Keep a legacy Python 2.7, just in case - echo "Installing/updating Python $_py2_version" - pyenv install --skip-existing $_py2_version - pyenv rehash # needed on a first install - PYENV_VERSION=$_py2_version pip install --upgrade pip setuptools - PYENV_VERSION=$_py2_version python -c "import sys; print sys.version" - - for version in ${_py3_versions[@]}; do - echo "Installing/updating Python $version" - pyenv install --skip-existing $version - pyenv rehash # needed on a first install - - # Start the new environment with the latest pip and setuptools versions - PYENV_VERSION=$version pip install --upgrade pip setuptools - PYENV_VERSION=$version python -c "import sys; print(sys.version)" - - # Put the specified utilities in the fresh environments or update them - for lib in ${_py3_site_packages[@]}; do - PYENV_VERSION=$version pip install --upgrade $lib - done - done - - # Create a virtualenv based off the latest Python version to host global utilities - echo "Installing/updating the global Python utilities" - pyenv virtualenv $_py3_versions[1] 'utils' - pyenv rehash # needed on a first install - PYENV_VERSION='utils' pip install --upgrade pip setuptools - for util in ${_py3_utils[@]}; do - PYENV_VERSION='utils' pip install --upgrade $util - done - - # Create a virtualenv based off the latest Python version for interactive usage - echo "Installing/updating the default/interactive Python environment" - pyenv virtualenv $_py3_versions[1] 'interactive' - pyenv rehash # needed on a first install - PYENV_VERSION='interactive' pip install --upgrade pip setuptools - # Install some tools to make interactive usage nicer - PYENV_VERSION='interactive' pip install --upgrade black bpython ipython - - # Put all Python binaries/virtualenvs and the utilities on the $PATH - pyenv global 'interactive' $_py3_versions 'utils' $_py2_version -} diff --git a/.config/shell/utils.d/update.sh b/.config/shell/utils.d/update.sh deleted file mode 100644 index 29a06c2..0000000 --- a/.config/shell/utils.d/update.sh +++ /dev/null @@ -1,230 +0,0 @@ -# This file defines the `update-machine` function that updates basically everything - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - -_in_zsh() { - [ -n "$ZSH_VERSION" ] -} - - - -_update_apt() { - _command_exists apt || return - - echo 'Updating apt packages' - sudo apt update - sudo apt dist-upgrade - sudo apt autoremove - sudo apt clean -} - -_update_dnf() { - _command_exists dnf || return - - echo 'Updating dnf packages' - sudo dnf upgrade --refresh - sudo dnf autoremove - sudo dnf clean all -} - -_remove_old_snaps() { - sudo snap list --all | awk "/disabled/{print $1, $3}" | - while read snapname revision; do - sudo snap remove "$snapname" --revision="$revision" - done -} - - - -function _fetch_repos { - local base_dir="$1" - local has_dirs=false - - if [ "$(ls -A "$base_dir")" ]; then - for dir in "$base_dir"/*; do - if [ -d "$dir" ]; then - has_dirs=true - break - fi - done - fi - - if [ "$has_dirs" = true ]; then - for dir in "$base_dir"/*; do - if [ -d "$dir" ]; then - if [ -d "$dir/.git" ]; then - echo "Fetching $dir" - (cd "$dir" && git fetch --all --prune) - fi - _fetch_repos "$dir" - fi - done - fi -} - -_update_repositories() { - [ -d $REPOS ] || return - - echo 'Updating repositories' - - cwd=$(pwd) - cd $REPOS - - # Otherwise the for-loop waites for manual input - # if it cd's into a folder with a ".env" file - ZSH_DOTENV_FILE='.do_not_run_dotenv' - - _fetch_repos "$REPOS" - - ZSH_DOTENV_FILE='.env' - - _command_exists pass && [ -d "$XDG_DATA_HOME/pass" ] && echo "Fetching $XDG_DATA_HOME/pass" && pass git pull - _update_dotfiles - - cd $cwd -} - -# Update the $XDG_DATA_HOME/dotfiles repository -_update_dotfiles() { - echo "Fetching $XDG_DATA_HOME/dotfiles" - # The `dotfiles` alias is defined in ~/.bashrc at the end of the - # "Shell Utilities & Aliases" section and can NOT be used here - git --git-dir=$XDG_DATA_HOME/dotfiles/ --work-tree=$HOME stash --quiet - git --git-dir=$XDG_DATA_HOME/dotfiles/ --work-tree=$HOME fetch --all --prune - git --git-dir=$XDG_DATA_HOME/dotfiles/ --work-tree=$HOME pull --rebase --quiet - git --git-dir=$XDG_DATA_HOME/dotfiles/ --work-tree=$HOME stash pop # --quiet is ignored -} - - - -_update_zsh() { - _in_zsh || return - - echo 'Updating zsh' - _update_omz_fork - _update_zplug -} - -_update_omz_fork() { - _command_exists omz || return - - # In a nutshell, `omz update` pulls the latest origin/master - # from the original "oh-my-zsh" repo - omz update - - cwd=$(pwd) - cd $ZSH - - git checkout --quiet forked # most likely already the case - - # Keep our personal "oh-my-zsh" fork up-to-date - # See: https://code.webartifex.biz/alexander/oh-my-zsh - # Note: Without a proper GPG key, the rebasing is done without signing - - # First, check if `gpg` exists and works in general - # as it might not be set up on some servers - if _command_exists gpg; then - gpg --list-keys > /dev/null - rv=$? - else - rv=1 - fi - - if [ $rv -eq 0 ] && [ $(gpg --list-keys | grep "AB5C0E319D77350FBA6CF143344EA5AB10D868E0") ]; then - git rebase --quiet master - # Only push a properly rebased and signed fork - git push --quiet fork forked --force - git push --quiet fork master - else - git -c commit.gpgsign=false rebase --quiet master - fi - - cd $cwd -} - -_update_zplug() { - _command_exists zplug || return - - zplug update - zplug install # ensure newly added plugins in ~/.zshrc are never forgotten - zplug load -} - - - -_update_python() { - echo 'Updating the Python tool chain' - - if _command_exists pyenv; then - pyenv update - create-or-update-python-envs # defined in ~/.config/shell/utils.d/python.sh - fi - - if _command_exists zsh-pip-cache-packages; then - zsh-pip-clear-cache - zsh-pip-cache-packages - fi -} - - - -restore-gnome() { - _command_exists dconf || return - - for file in $HOME/.config/gnome-settings/*.ini; do - dconf load / < $file - done -} - - - -_fix_locations() { - - # Gnome Seahorse (i.e., "Keyrings") uses ~/.pki by default but also - # detects $XDG_DATA_HOME/pki if it is there and uses it insead; - # setting this explicitly via an environment variable is not possible - if [ -d "$HOME/.pki" ]; then - if [ -d "$XDG_DATA_HOME/pki" ]; then - echo "Warning: both $HOME/.pki and $XDG_DATA_HOME/pki exist!" - else - mv "$HOME/.pki" "$XDG_DATA_HOME/pki" - fi - fi - -} - - - -run-private-scripts() { # in the Nextcloud - sudo --validate || return - - echo - - if [ -d "$HOME/Cloud/Getraenkemarkt/Setup/Shell" ]; then - for file in $HOME/Cloud/Getraenkemarkt/Setup/Shell/*.sh; do - source $file - done - fi -} - - - -update-machine() { - sudo --validate || return - - _update_apt - _update_dnf - _command_exists flatpak && sudo flatpak update -y && sudo flatpak uninstall --unused - _command_exists snap && sudo snap refresh && _remove_old_snaps - _update_repositories - _update_zsh - _update_python - restore-gnome - _fix_locations - run-private-scripts - - sudo --reset-timestamp -} diff --git a/.config/shell/utils.d/web.sh b/.config/shell/utils.d/web.sh deleted file mode 100644 index a58babc..0000000 --- a/.config/shell/utils.d/web.sh +++ /dev/null @@ -1,26 +0,0 @@ -# This file defines various utilities regarding "the web" - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - - -# List all internal IPs -internal-ips() { - if _command_exists ifconfig; then - ifconfig | awk '/inet /{ gsub(/addr:/, ""); print $2 }' - else - echo 'ifconfig not installed' - fi -} - - -# Obtain a weather report -weather() { - if [ -n "$1" ]; then - curl "v1.wttr.in/$1" - else - curl 'v1.wttr.in' - fi -} diff --git a/.config/shell/welcome b/.config/shell/welcome new file mode 100644 index 0000000..1c707a9 --- /dev/null +++ b/.config/shell/welcome @@ -0,0 +1,44 @@ +#!/bin/sh + +# Show system info each time a shell is started + + +_hostname=$(hostname) +_os="$(uname -s) $(uname -r)" +_uptime=$(uptime -p | sed 's/up //; s/weeks\?/w/g; s/days\?/d/g; s/hours\?/h/g; s/minutes\?/m/g; s/ //g') +_user=$(whoami) +_work_dir=$(echo "$PWD" | sed "s|^$HOME|~|") + + +if [ "$(id -u)" -eq 0 ]; then + _prompt="#" +else + _prompt="$" +fi + + +if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then + _remote=" ssh" +else + _remote=" local" +fi + + +if _in_bash; then + _shell_type="bash" +elif _in_zsh; then + _shell_type="zsh" +else + _shell_type="non-bash/zsh shell" +fi + + +_info_line="$_user@$_hostname:$_work_dir$_prompt$_remote $_os uptime: $_uptime $_shell_type" +_sep_line=$(echo "$_info_line" | sed 's/./─/g') + + +echo "" +echo "$_sep_line" +echo "$_info_line" +echo "$_sep_line" +echo "" diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs deleted file mode 100644 index 86b0cf4..0000000 --- a/.config/user-dirs.dirs +++ /dev/null @@ -1,8 +0,0 @@ -XDG_DESKTOP_DIR="$HOME/Desktop" -XDG_DOCUMENTS_DIR="$HOME/Cloud" -XDG_DOWNLOAD_DIR="$HOME/Downloads" -XDG_MUSIC_DIR="$HOME/Cloud/Photos/Music" -XDG_PICTURES_DIR="$HOME/Cloud/Photos" -XDG_PUBLICSHARE_DIR="$HOME/" -XDG_TEMPLATES_DIR="$HOME/Cloud/Templates" -XDG_VIDEOS_DIR="$HOME/Cloud/Photos/Videos" diff --git a/.config/vim/vimrc b/.config/vim/vimrc index 05bb49a..ccaae72 100644 --- a/.config/vim/vimrc +++ b/.config/vim/vimrc @@ -1,7 +1,3 @@ -" Good sources on vimrc files: -" - https://www.youtube.com/watch?v=Gs1VDYnS-Ac - - " Use VIM improved mode set nocompatible @@ -304,7 +300,7 @@ augroup checktime augroup END -" Auto-reload ~/.vim/vimrc +" Auto-reload ~/.config/vim/vimrc augroup vimrc autocmd! BufWritePost $RC source % | redraw augroup END diff --git a/.config/zsh/.p10k.zsh b/.config/zsh/.p10k.zsh deleted file mode 100644 index 42c4895..0000000 --- a/.config/zsh/.p10k.zsh +++ /dev/null @@ -1,1622 +0,0 @@ -# Generated by Powerlevel10k configuration wizard on 2022-08-08 at 23:58 CEST. -# Based on romkatv/powerlevel10k/config/p10k-lean.zsh, checksum 28996. -# Wizard options: nerdfont-complete + powerline, small icons, ascii, lean, 1 line, -# compact, concise, transient_prompt, instant_prompt=verbose. -# Type `p10k configure` to generate another config. -# -# Config for Powerlevel10k with lean 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. - autoload -Uz is-at-least && is-at-least 5.1 || 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) - nnn # nnn shell (https://github.com/jarun/nnn) - 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) - # 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/) - # 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=ascii - # 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 - - # Basic style options that define the overall look of your prompt. You probably don't want to - # change them. - typeset -g POWERLEVEL9K_BACKGROUND= # transparent background - typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace - typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space - typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol - - # 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=true - - # Add an empty line before each prompt. - typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false - - # Connect left prompt lines with these symbols. - 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= - - # 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= - - # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll - # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and - # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below. - typeset -g POWERLEVEL9K_SHOW_RULER=false - typeset -g POWERLEVEL9K_RULER_CHAR='-' # reasonable alternative: '·' - typeset -g POWERLEVEL9K_RULER_FOREGROUND=242 - - # Filler between left and right prompt on the first prompt line. You can set it to '·' or '-' - # to make it easier to see the alignment between left and right prompt and to separate prompt - # from command output. It serves the same purpose as ruler (see above) without increasing - # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false - # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact - # prompt. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' - if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then - # The color of the filler. - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242 - # Add a space between the end of left prompt and the filler. - typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' ' - # Add a space between the filler and the start of right prompt. - typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' ' - # 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 - - #################################[ os_icon: os identifier ]################################## - # OS identifier color. - typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND= - # Custom icon. - # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐' - - ################################[ prompt_char: prompt symbol ]################################ - # 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= - - ##################################[ 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-version - .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 ":" where 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='%fin ' - - #####################################[ 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='%f' # default 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 - - # <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 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='%fon ' - - # 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 repository. - 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=false - typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70 - typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='ok' - - # 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='ok' - - # 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_FOREGROUND=160 - typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='err' - - # 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='err' - - ###################[ 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=101 - # 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='%ftook ' - - #######################[ 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=70 - # 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_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='⭐' - - ######################[ 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='⭐' - - ##################[ 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 - - # 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='⭐' - - ##################################[ 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='⭐' - - ######################################[ 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='⭐' - - ##################################[ 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='%fwith ' - - ###[ 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 - # 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='⭐' - - #############[ 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' - - # 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='%fat ' - - ################[ 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='⭐' - - #[ 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|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' - # Azure account name color. - typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32 - # Custom icon. - # typeset -g POWERLEVEL9K_AZURE_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='%fin ' - - ###############################[ 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]*' - # 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_IP${P9K_IP_RX_RATE:+ %70F<$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %215F>$P9K_IP_TX_RATE}' - # 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=('battery') - # 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='%fat ' - - # 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/blob/master/README.md#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/blob/master/README.md#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/.config/zsh/.zlogout b/.config/zsh/.zlogout deleted file mode 100644 index 1b3cac8..0000000 --- a/.config/zsh/.zlogout +++ /dev/null @@ -1,3 +0,0 @@ -# Executed by zsh when a login shell exits - -source "$HOME/.config/shell/logout.sh" diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile deleted file mode 100644 index 944c20c..0000000 --- a/.config/zsh/.zprofile +++ /dev/null @@ -1,5 +0,0 @@ -# Executed by zsh when a login shell starts - -# Unify ~/.profile and ~/.zprofile conceptually -# (~/.zlogin is skipped here as it is sourced after ~/.zshrc) -source "$HOME/.profile" diff --git a/.config/zsh/.zshenv b/.config/zsh/.zshenv deleted file mode 100644 index ce96390..0000000 --- a/.config/zsh/.zshenv +++ /dev/null @@ -1,40 +0,0 @@ -# This file is sourced by zsh before ~/.zprofile and ~/.zshrc -# (it's kind of a zsh-only ~/.profile file) - - -export XDG_CONFIG_HOME="$HOME/.config" -export XDG_DATA_HOME="$HOME/.local/share" - - -export ZDOTDIR="$XDG_CONFIG_HOME/zsh" -export ZSH="$XDG_DATA_HOME/oh-my-zsh" -export ZPLUG_HOME="$XDG_DATA_HOME/zplug" -export _Z_DATA="$XDG_DATA_HOME/z" - - -# Use key to auto-complete a partially typed command -# TODO: the coloring does not work when zsh-syntax-highlighting is loaded simultaniously -# Source: https://github.com/zsh-users/zsh-history-substring-search/issues/131 -export HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND="fg=#ffffff,bg=#38761d,bold" -export HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND="fg=#ffffff,bg=#990000,bold" - - -# Notify about shorter aliases for typed commands -# Source: https://github.com/MichaelAquilina/zsh-you-should-use -export YSU_MESSAGE_POSITION="before" -export YSU_MODE="BESTMATCH" - - -# Suggest commands as one types -# Source: https://github.com/zsh-users/zsh-autosuggestions -export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#666666,bg=bold" -export ZSH_AUTOSUGGEST_STRATEGY=(history completion) - - -# Temporary files should go into ~/.cache -export ZSH_COMPDUMP="${XDG_CACHE_HOME:-$HOME/.cache}/.zcompdump-$HOST-$ZSH_VERSION" - - -# Automatically source ".env" files in folders -# Source: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dotenv -export ZSH_DOTENV_FILE=".env" diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index c1fa6d1..571e93c 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -1,190 +1,10 @@ -# Executed by zsh when a (non-)login shell starts +#!/bin/zsh +# Load the real `zsh` config file in ~/ +# +# Recent Debian/Ubuntu versions look for .zshrc +# in .config/zsh and no longer in ~/ which +# is still the main location in many other distributions -# Ensure zsh is running interactively -[[ $- != *i* ]] && return - -# Check if a command can be found on the $PATH -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - - - -# Enable Powerlevel10k instant prompt -if [ -r "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/p10k-instant-prompt-${(%):-%n}.zsh" ]; then - source "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/p10k-instant-prompt-${(%):-%n}.zsh" -fi - - - -# Enable XON/XOFF software flow control -stty -ixon - -# Enable colors and change prompt -autoload -Uz colors -colors - -# Enable VI mode -bindkey -v - -# If an entered command does not exist per se -# but is the name of a folder instead, go there -setopt AUTO_CD - -# Treat "#", "~", and "^" as part of patterns for filename generation -setopt EXTENDED_GLOB -# Warn if there are no matches -setopt NO_MATCH - -# Silence the shell -setopt NO_BEEP - -# Report status of background jobs immediately -setopt NOTIFY - -# Remove all "built-in" aliases -unalias -a - - - -# Set these environment variables here (and not in ~/.profile) -# due to conflict/overlap with bash - -# Note: This file is NOT synced by mackup as zsh destroys the symbolic link -export HISTFILE="$XDG_STATE_HOME/zsh/history" - -export HISTSIZE=999999 # number of lines kept in memory -export SAVEHIST=999999 # number of lines kept in $HISTFILE - -# Append to the $HISTFILE rather than overwrite it -setopt APPEND_HISTORY -setopt INC_APPEND_HISTORY - - - -# Initialize oh-my-zsh's plugins - -if [ -r "$ZSH/oh-my-zsh.sh" ]; then - - plugins=( - command-not-found - dirhistory - dotenv # config in ~/.zshenv; `_update_repositories` temporarily disables this - git-escape-magic - invoke # completions for invoke - jsontools - pip # completions for pip - poetry # completions for poetry - z - ) - - source "$ZSH/oh-my-zsh.sh" - -fi - - -# Initialize zplug's plugins - -if [ -r "$XDG_DATA_HOME/zplug/init.zsh" ]; then - - source "$XDG_DATA_HOME/zplug/init.zsh" # config in ~/.config/zsh/.zshenv - - # Must use double quotes in this section - # Source: https://github.com/zplug/zplug#example - - # Make zplug manage itself like a plugin - # Source: https://github.com/zplug/zplug#let-zplug-manage-zplug - zplug "zplug/zplug", hook-build:"zplug --self-manage" - - zplug "MichaelAquilina/zsh-you-should-use" # config in ~/.zshenv - - zplug "zsh-users/zsh-autosuggestions" # config in ~/.zshenv - zplug "zsh-users/zsh-history-substring-search" # config in ~/.zshenv; there are key bindings below - zplug "zsh-users/zsh-syntax-highlighting" - - zplug "romkatv/powerlevel10k", as:theme, depth:1 - - zplug load - -fi - - - -# Initialize various utilities and aliases -source "$HOME/.config/shell/init.sh" - - - -# Initialize zsh's completions - -# This is already done via ~/.oh-my-zsh.sh above -# autoload -Uz compinit -# compinit -u -d "$ZSH_COMPDUMP" - -# Enable match highlighting and scrolling through long lists, -# and provide a different style of menu completion -zmodload zsh/complist - -# Include hidden files in tab completion -_comp_options+=(GLOB_DOTS) - -# Enable arrow-key driven interface -zstyle ':completion:*' menu select - -# Make compinit find new executables right away -zstyle ':completion:*' rehash true - -# Enable grouping and group headers -zstyle ':completion:*:descriptions' format '%B%d%b' -zstyle ':completion:*:messages' format '%d' -zstyle ':completion:*:warnings' format 'No matches for: %d' -zstyle ':completion:*' group-name '' - - -# Enable completions for various tools - -# invoke -> see plugins above; alternatively use -# _command_exists invoke && eval "$(invoke --print-completion-script=zsh)" - -_command_exists nox && eval "$(register-python-argcomplete nox)" - -# pip -> see plugins above; alternatively use -# _command_exists pip && eval "$(pip completion --zsh)" - -_command_exists pipx && eval "$(register-python-argcomplete pipx)" - -# poetry -> see plugins above; no alternative here - - - -# Define key bindings - -# zsh-autosuggestions plugin -bindkey "^ " autosuggest-accept - -# Enable Ctrl-R -bindkey "^R" history-incremental-search-backward - -# Use VI keys to navigate the completions in the menu -bindkey -M menuselect 'h' vi-backward-char -bindkey -M menuselect 'k' vi-up-line-or-history -bindkey -M menuselect 'l' vi-forward-char -bindkey -M menuselect 'j' vi-down-line-or-history - -if [ -r "$XDG_DATA_HOME/zplug/init.zsh" ]; then - # history-substring-search plugin - # Source: https://github.com/zsh-users/zsh-history-substring-search#usage - # Normal mode - bindkey "$terminfo[kcuu1]" history-substring-search-up - bindkey "$terminfo[kcud1]" history-substring-search-down - # VI mode - bindkey -M vicmd 'k' history-substring-search-up - bindkey -M vicmd 'j' history-substring-search-down -fi - - - -# Enable Powerlevel10k "full" prompt -[[ ! -f $XDG_CONFIG_HOME/zsh/.p10k.zsh ]] || source $XDG_CONFIG_HOME/zsh/.p10k.zsh +. "$HOME/.zshrc" diff --git a/.config/zsh/README.md b/.config/zsh/README.md new file mode 100644 index 0000000..a2882a4 --- /dev/null +++ b/.config/zsh/README.md @@ -0,0 +1,3 @@ +# `zsh`-related Configurations + +This folder contains files that are sourced by `zsh`. diff --git a/.hidden b/.hidden deleted file mode 100644 index 2194601..0000000 --- a/.hidden +++ /dev/null @@ -1,4 +0,0 @@ -LICENSE.txt -R -README.md -Screenshots diff --git a/.local/bin/README.md b/.local/bin/README.md new file mode 100644 index 0000000..241ea08 --- /dev/null +++ b/.local/bin/README.md @@ -0,0 +1,3 @@ +# User-local Executables + +This folder contains executable files that are on the `$PATH`. diff --git a/.local/bin/install-dotfiles b/.local/bin/install-dotfiles new file mode 100755 index 0000000..bb2e6ce --- /dev/null +++ b/.local/bin/install-dotfiles @@ -0,0 +1,78 @@ +#!/bin/sh + +# Installation script to make the dotfiles available in ~/ +# +# `git` is the only dependency for this script to run (See: https://git-scm.com) +# +# See: https://code.webartifex.biz/alexander/dotfiles#installation + + +set -e + + +XDG_DATA_HOME="$HOME/.local/share" # also set in ~/.config/shell/env +DOTFILES_DIR="$XDG_DATA_HOME/dotfiles" # also set in ~/.config/shell/env + + +# Check if the dotfiles were installed previously +if [ -d "$DOTFILES_DIR" ] && [ "${FORCE_INSTALL:-}" != "1" ]; then + echo "" + echo "The dotfiles are already installed at: $DOTFILES_DIR" + echo "" + echo "Options:" + echo " - Set 'export FORCE_INSTALL=1' and run installation again" + echo " - Update with 'dotfiles pull' and continue using them" + echo "" +else + # Remove an already installed dotfiles repository + if [ -d "$DOTFILES_DIR" ]; then + rm -rf "$DOTFILES_DIR" + fi + + if [ -z "$DOTFILES_BRANCH" ]; then + # Auto-detect if we're on a desktop system + if [ -n "$DISPLAY" ] || [ -n "$WAYLAND_DISPLAY" ] || [ "$(systemctl --user is-active graphical-session.target 2>/dev/null)" = "active" ]; then + export DOTFILES_BRANCH="desktop" + else + export DOTFILES_BRANCH="main" + fi + elif [ "$DOTFILES_BRANCH" != "desktop" ] && [ "$DOTFILES_BRANCH" != "main" ]; then + echo "" + echo "'DOTFILES_BRANCH' may only be one of: 'desktop' or 'main'" + exit 1 + fi + + mkdir -p "$XDG_DATA_HOME" + + git clone --bare https://code.webartifex.biz/alexander/dotfiles "$XDG_DATA_HOME/dotfiles" + + # Do not checkout project documentation intended for web GUIs (e.g., GitHub) + git --git-dir="$DOTFILES_DIR" --work-tree="$HOME" config core.sparseCheckout true + echo "/*" > "$DOTFILES_DIR/info/sparse-checkout" + echo "!LICENSE.txt" >> "$DOTFILES_DIR/info/sparse-checkout" + echo "!README.md" >> "$DOTFILES_DIR/info/sparse-checkout" + + # Put the dotfiles in the user's `$HOME` folder + git --git-dir="$DOTFILES_DIR" --work-tree="$HOME" checkout --force "$DOTFILES_BRANCH" + + # Do not show files not tracked in the dotfiles repository because there are simply too many + git --git-dir="$DOTFILES_DIR" --work-tree="$HOME" config --local status.showUntrackedFiles no + + # The author of this file prefers to use SSH to sync his machines with the origin + git --git-dir="$DOTFILES_DIR" --work-tree="$HOME" remote set-url origin git@git.webartifex.biz:alexander/dotfiles.git + + # Remove potentially conflicting `bash` startup files + rm -f "$HOME/.bash_login" + rm -f "$HOME/.bash_profile" + + echo "" + echo "The dotfiles were installed successfully" + + # Mimic starting a new shell to get new dotfiles right away + if [ -n "$ZSH_VERSION" ]; then + . "$HOME/.zshrc" + else + . "$HOME/.profile" + fi + +fi diff --git a/.local/share/backgrounds/lake_in_front_of_mountains.jpg b/.local/share/backgrounds/lake_in_front_of_mountains.jpg deleted file mode 100644 index 44e98ae..0000000 Binary files a/.local/share/backgrounds/lake_in_front_of_mountains.jpg and /dev/null differ diff --git a/.local/share/dotfiles/setup.sh b/.local/share/dotfiles/setup.sh deleted file mode 100755 index b092d5a..0000000 --- a/.local/share/dotfiles/setup.sh +++ /dev/null @@ -1,112 +0,0 @@ -# This file sets up the $XDG_DATA_HOME/dotfiles, a bare git repository, -# such that they are available within a user's $HOME as common "dotfiles" - - -export XDG_BIN_HOME="$HOME/.local/bin" # temporarily set here; mainly set in ~/.profile -export XDG_DATA_HOME="$HOME/.local/share" # temporarily set here; mainly set in ~/.profile - - -_command_exists() { - command -v "$1" 1>/dev/null 2>&1 -} - - -cd $HOME - - -# Get the latest $XDG_DATA_HOME/dotfiles, possibly replacing the old ones -rm -rf "$XDG_DATA_HOME/dotfiles" >/dev/null -git clone --bare https://code.webartifex.biz/alexander/dotfiles.git "$XDG_DATA_HOME/dotfiles" - -# Distribute the dotfiles in $HOME -git --git-dir=$XDG_DATA_HOME/dotfiles/ --work-tree=$HOME checkout --force -git --git-dir=$XDG_DATA_HOME/dotfiles/ --work-tree=$HOME config --local status.showUntrackedFiles no -# Dirty Fix: Otherwise `gnupg` emits a warning -[ -d "$XDG_DATA_HOME/gnupg" ] && chmod 700 $XDG_DATA_HOME/gnupg - - -if _command_exists python3; then - - # Set up a Python venv to host the scripts controlling the Elgato keylights in my office - python3 -m venv $XDG_DATA_HOME/elgato - $XDG_DATA_HOME/elgato/bin/pip list - $XDG_DATA_HOME/elgato/bin/pip install --upgrade pip setuptools - $XDG_DATA_HOME/elgato/bin/pip install leglight - -fi - - -if _command_exists pip; then - - # Ensure `pipx` is installed in the user's local environment - pip install --upgrade --user pipx - - pipx install rexi - - if [ -d "$HOME/Cloud/Getraenkemarkt" ]; then - - # (Re-)Install `mackup` via `pipx` in the user's local environment - export PIPX_BIN_DIR=$XDG_BIN_HOME - export PIPX_HOME="$XDG_DATA_HOME/pipx" - $XDG_BIN_HOME/pipx uninstall mackup - $XDG_BIN_HOME/pipx install mackup - - # Litte Hack: Make `mackup` respect the XDG directory structure - sed -in 's/VERSION = \".*\"/VERSION = \"0.999.0\"/g' $HOME/.local/**/mackup/constants.py - sed -in 's/CUSTOM_APPS_DIR = \"\.mackup\"/CUSTOM_APPS_DIR = \"\.config\/mackup\"/g' $HOME/.local/**/mackup/constants.py - sed -in 's/MACKUP_CONFIG_FILE = \"\.mackup\.cfg\"/MACKUP_CONFIG_FILE = \"\.config\/mackup\/mackup\.cfg\"/g' $HOME/.local/**/mackup/constants.py - - $XDG_BIN_HOME/mackup restore - - fi - -fi - - -if _command_exists zsh; then - - # Set the $ZDOTDIR in /etc[/zsh]/zshenv if that is not already done - # Notes: - # - must use $HOME as $XDG_CONFIG_HOME is not yet set - # - on Fedora, the global config files are not in /etc/zsh but in /etc - export ZDOTDIR="$HOME/.config/zsh" - for _file in '/etc/zshenv' '/etc/zsh/zshenv'; do - if [ -f $_file ]; then - grep -q -F "export ZDOTDIR" $_file || echo 'export ZDOTDIR="$HOME"/.config/zsh' | sudo tee -a $_file - fi - done - - # (Re-)Install oh-my-zsh - export ZSH="$XDG_DATA_HOME/oh-my-zsh" # temporarily set here; mainly set in $XDG_CONFIG_HOME/zsh/.zshenv - rm -rf $ZSH >/dev/null - # Let's NOT use the main repository but our personal fork - git clone --origin fork --branch forked https://code.webartifex.biz/alexander/oh-my-zsh.git $ZSH - cd $ZSH - git remote add origin https://github.com/ohmyzsh/ohmyzsh.git - cd $HOME - - # (Re-)Install zplug - export ZPLUG_HOME="$XDG_DATA_HOME/zplug" # temporarily set here; mainly set in $XDG_CONFIG_HOME/zsh/.zshenv - rm -rf $ZPLUG_HOME >/dev/null - git clone https://github.com/zplug/zplug $ZPLUG_HOME - # Set up all the zplug plugins (-i so that the new $XDG_CONFIG_HOME/zsh/.zshrc is sourced) - zsh -i -c "zplug install" - -fi - - -# Warn user if ~/.local/pipx already exists -# => As we use the custom $XDG_DATA_HOME/pipx location, -# the user should NOT `pipx`'s default install location as well -if [ -d "$HOME/.local/pipx" ]; then - echo - echo "~/.local/pipx already existed!" - echo "It is recommended to delete this location in favor of $XDG_DATA_HOME/pipx" - echo -fi - - -echo -echo "Probably it's a good idea to restart the shell" -echo "Make sure to start bash or zsh as a login shell the next time" -echo diff --git a/.local/share/tig/.gitkeep b/.local/share/tig/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/.local/share/pki/.gitkeep b/.local/state/psql/.gitkeep similarity index 100% rename from .local/share/pki/.gitkeep rename to .local/state/psql/.gitkeep diff --git a/.local/state/wget/.gitkeep b/.local/state/wget/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/.profile b/.profile index 230ac52..0ef05d4 100644 --- a/.profile +++ b/.profile @@ -1,55 +1,32 @@ -# Executed by a login shell (e.g., bash, sh, or zsh) during start-up +#!/bin/sh + +# Main setup file executed for all kinds of shells +# +# For `bash`, the following two files must not exist: +# - ~/.bash_login +# - ~/.bash_profile +# If they do, this file may not be executed! - -# Shell-independent stuff +# Prevent loading ~/.profile twice in `bash` +export PROFILE_LOADED=1 -# Configure the standard XDG base directories -# Further Info: https://wiki.archlinux.org/title/XDG_Base_Directory -export XDG_CACHE_HOME="$HOME/.cache" -export XDG_CONFIG_HOME="$HOME/.config" -export XDG_DATA_HOME="$HOME/.local/share" # also set temporarily in $XDG_DATA_HOME/dotfiles/setup.sh -export XDG_STATE_HOME="$HOME/.local/state" # also set temporarily in $XDG_DATA_HOME/dotfiles/setup.sh -# Make up a XDG directory for binaries (that does not exist in the standard) -export XDG_BIN_HOME="$HOME/.local/bin" # also set temporarily in $XDG_DATA_HOME/dotfiles/setup.sh +# Basic utilities +_command_exists() { + command -v "$1" 1>/dev/null 2>&1 +} -# Move common tools' config and cache files into XDG directories -export BAT_CONFIG_PATH="$XDG_CONFIG_PATH/bat/config" -export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv" -export GNUPGHOME="$XDG_DATA_HOME/gnupg" -export LESSHISTFILE="$XDG_STATE_HOME/less/history" -export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass" -export PIPX_HOME="$XDG_DATA_HOME/pipx" -export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc" -export PSQLRC="$XDG_CONFIG_HOME/psql/psqlrc" -export SSB_HOME="$XDG_DATA_HOME"/zoom -export VIMINIT="source $XDG_CONFIG_HOME/vim/vimrc" +_in_bash() { + [ -n "$BASH_VERSION" ] +} +_in_zsh() { + [ -n "$ZSH_VERSION" ] +} -# Generic shell configs -export EDITOR=vim -export PAGER='less --chop-long-lines --ignore-case --LONG-PROMPT --no-init --status-column --quit-if-one-screen' -export TERM=xterm-256color -export TZ='Europe/Berlin' -export VISUAL=$EDITOR - - -# Convenience variables for easier access of some locations -export REPOS="$HOME/Repositories" - - -# Python-specific configs -export PIPX_BIN_DIR=$XDG_BIN_HOME -export PYENV_ROOT="$HOME/.pyenv" -# No need for *.pyc files (and __pycache__ folders) to be within project folders -# Note: `export PYTHONDONTWRITEBYTECODE=1` would disable them entirely -export PYTHONPYCACHEPREFIX=/tmp/pycache - - -# Put local binaries on the $PATH -prepend-to-path () { # if not already there +_prepend_to_path () { if [ -d "$1" ] ; then case :$PATH: in *:$1:*) ;; @@ -58,30 +35,33 @@ prepend-to-path () { # if not already there fi } -prepend-to-path "$HOME/bin" -prepend-to-path "$HOME/.local/bin" -prepend-to-path "$PYENV_ROOT/bin" - - -# Shell-specific stuff - - -# zsh-specific stuff is automatically sourced from -# $XDG_CONFIG_HOME/zsh/.zshenv, $XDG_CONFIG_HOME/zsh/.zprofile, -# $XDG_CONFIG_HOME/zsh/.zlogin, and $XDG_CONFIG_HOME/.zshrc - - -# Source ~/.bashrc if we are running inside a bash shell -# because it is NOT automatically sourced by bash -if [ -n "$BASH_VERSION" ]; then - if [ -f "$HOME/.bashrc" ]; then - source "$HOME/.bashrc" - fi -fi +# Load configuration files common to all kinds of shells +[ -f "$HOME/.config/shell/env" ] && . "$HOME/.config/shell/env" +[ -f "$HOME/.config/shell/aliases" ] && . "$HOME/.config/shell/aliases" # Source ~/.profile_local, which holds machine-specific ENV variables -if [ -f "$HOME/.profile_local" ]; then - source "$HOME/.profile_local" +[ -f "$HOME/.profile_local" ] && . "$HOME/.profile_local" + + +# Load `bash`-specific configurations for non-login `bash` shells +if [ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" fi + + +# `zsh`-specific configurations are automatically sourced from ~/.zshrc, +# which then also ensures that this file is sourced + + +# Put local executables on the `$PATH` +_prepend_to_path "$HOME/.local/bin" + + +# Ensure ~/.profile is loaded each time `bash` starts +unset PROFILE_LOADED + + +# When everything is loaded, show a little welcome message +[ -f "$HOME/.config/shell/welcome" ] && . "$HOME/.config/shell/welcome" diff --git a/.selected_editor b/.selected_editor deleted file mode 100644 index 2cab271..0000000 --- a/.selected_editor +++ /dev/null @@ -1 +0,0 @@ -SELECTED_EDITOR="/usr/bin/vim" diff --git a/.ssh/authorized_keys b/.ssh/authorized_keys index e2a8fd8..b9c64de 100644 --- a/.ssh/authorized_keys +++ b/.ssh/authorized_keys @@ -1,8 +1,5 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN0GVKtgpgzpdf7E6e2vCytDSa2zPSgZ+8fAKCOotugH alexander@webartifex.biz (getraenkemarkt.io) ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMRDaWrT2hH7BOV4Zv1ctVGqwfeqkssnHklRXBmng6Wr alexander@webartifex.biz (laptop1.getraenkemarkt.io) ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOhhfx063dGoaE62cbdyGL3kp1AIovWFojQGNdqUpxr8 alexander@webartifex.biz (laptop2.getraenkemarkt.io) -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WZPkmknmo3R+DLjWrebt+X8UrHgoWwjHckbhxHVKC alexander@webartifex.biz (phone1.getraenkemarkt.io) -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILNrAp79oekaV1SivIj9mVYAzaSD9FSTjEcmnOnon9eI alexander@webartifex.biz (phone2.getraenkemarkt.io) -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbVaLHl4T+TjphPGSutYKH00Z3cNG+EmlhUfh+N/m6E alexander@webartifex.biz (tablet1.getraenkemarkt.io) ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGGNCrFt/gUbBHVqhthBuRmdDH6yS30+GGcCnARSzg+q alexander@webartifex.biz (workstation1.getraenkemarkt.io) ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKfaK5LUp7ghZLfl7urwQx+l+m/Vm7iksz8deGx4L5sD alexander@webartifex.biz (workstation2.getraenkemarkt.io) diff --git a/.zlogout b/.zlogout new file mode 100644 index 0000000..4ec153e --- /dev/null +++ b/.zlogout @@ -0,0 +1,3 @@ +#!/bin/zsh + +. "$XDG_CONFIG_HOME/shell/logout" diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..81a88e8 --- /dev/null +++ b/.zshrc @@ -0,0 +1,80 @@ +#!/bin/zsh + +# `zsh`-specific configurations + + +# Remove built-in aliases because we use our own, sourced via ~/.profile +unalias -a + + +# Load configuration files common to all kinds of shells +[ -f "$HOME/.profile" ] && . "$HOME/.profile" + + +# Ensure `zsh` is running interactively +[[ -o interactive ]] || return + + +# Make `zsh` behave like `bash` for prompts +PS1='%n@%m:%~%(!.#.$) ' + + +# Configure the `history` + +# Set these environment variables here +# to avoid conflict/overlap with `bash` + +export HISTFILE="$XDG_STATE_HOME/zsh/history" +export HISTSIZE=999999 # Number of lines kept in memory +export SAVEHIST=999999 # Number of lines kept in the `$HISTFILE` + +setopt APPEND_HISTORY # Do not overwrite the `$HISTFILE` +setopt INC_APPEND_HISTORY # Write to the `$HISTFILE` immediately +setopt HIST_REDUCE_BLANKS # Remove superfluous blanks from the `history` +setopt HIST_VERIFY # Show expanded `history` before executing + + +# Make `zsh` feel even nicer + +setopt AUTO_CD # Just type the directory to `cd` into it +setopt EXTENDED_GLOB # Advanced globbing patterns +setopt NULL_GLOB # Remove patterns with no matches +setopt CORRECT # Correct spelling of commands +setopt CHECK_JOBS # Show number of running jobs when exiting `zsh` +setopt NO_BEEP # Silence `zsh` + + +stty -ixon # Prevent Ctrl+S from freezing `zsh` + + +# Enable (tab) completions + +autoload -Uz compinit && compinit + +# Enable match highlighting and scrolling through long lists, +# and provide a different style of menu completion +zmodload zsh/complist + +# Include hidden files in tab completion +_comp_options+=(GLOB_DOTS) + +# Make selecting completions nicer with a visual menu +zstyle ':completion:*' menu select + +# Make new executables completable right away +zstyle ':completion:*' rehash true + + +# Configure key bindings + +# VI mode +bindkey -v + +# Use VI keys to navigate the completions in the menu +bindkey -M menuselect 'h' vi-backward-char +bindkey -M menuselect 'k' vi-up-line-or-history +bindkey -M menuselect 'l' vi-forward-char +bindkey -M menuselect 'j' vi-down-line-or-history + +# Enable Ctrl-R for reverse history search +bindkey "^R" history-incremental-search-backward diff --git a/LICENSE.txt b/LICENSE.txt index 75bb60c..eb196e9 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2022 Alexander Hess [alexander@webartifex.biz] +Copyright (c) 2022-2025 Alexander Hess [alexander@webartifex.biz] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 9edbe50..92ea970 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,50 @@ # Dotfiles -This repository contains useful (config) files that I use on my machines. +This repository contains useful (config) files. + +It is structured into two branches: +- [desktop](https://code.webartifex.biz/alexander/dotfiles/src/branch/desktop) +- [main](https://code.webartifex.biz/alexander/dotfiles/src/branch/main) + +`main` contains dotfiles intended to be used on all kinds of machines + and can be thought of as a "minimal" or "server" version. +`desktop` is (re-)based on top of `main` + and adds "desktop" related dotfiles (e.g., GNOME stuff). -## Initialization +## Installation -On a freshly set up machine, run: +Simply run: -```bash -curl https://code.webartifex.biz/alexander/dotfiles/raw/branch/main/.local/share/dotfiles/setup.sh \ - > ./setup.sh && source ./setup.sh && rm ./setup.sh +```sh +curl https://code.webartifex.biz/alexander/dotfiles/raw/branch/main/.local/bin/install-dotfiles > install-dotfiles && . ./install-dotfiles && rm ./install-dotfiles ``` -This gives you a local copy of the latest version of this repository - (located in `$XDG_DATA_HOME/dotfiles`) - and initializes all the dotfiles provided here on the system. -Further, `zsh` is set up - with [`oh-my-zsh`](https://ohmyz.sh/) and [`zplug`](https://github.com/zplug/zplug) - if it is installed. +or -**Note**: Log out and in again so that `bash` and `zsh` run as *login* shells. -Otherwise, `~/.profile` is probably *not* sourced. - -**Important**: Don't forget to back up your current dotfiles! - - -### Python Development Environments - -The develop environments for Python are managed via [`pyenv`](https://github.com/pyenv/pyenv). - -To set them up, run: - -```bash -create-or-update-python-envs +``` +wget https://code.webartifex.biz/alexander/dotfiles/raw/branch/main/.local/bin/install-dotfiles -O install-dotfiles && . ./install-dotfiles && rm ./install-dotfiles ``` -Several Python versions are installed. -Additionally, two `virtualenv`s, called "interactive" and "utils", are also created: - - "interactive" is the default environment, and - - "utils" hosts globally available utilities - (e.g., [youtube-dl](https://github.com/ytdl-org/youtube-dl/)). +This downloads a simple [installation script](.local/bin/install-dotfiles) + and then executes it. +The script has only one dependency, namely [git](https://git-scm.com). +So, it should not be too hard to get this going. -Use `pyenv local ...` to specify a particular Python binary for a project. +Normally, I advice against executing shell scripts from the internet, + but this one is short enough to be read even by beginners. +So, convince yourself that it is not harmful! -### Private Dotfiles +## Shells -After setting up the Python environments (i.e., the "utils"), - running `mackup restore` symlinks further dotfiles into `~/`. -This only works for this project's maintainer. +The config files in this repository are optimized for usage with + [GNU's Bourne again shell](https://man7.org/linux/man-pages/man1/bash.1.html), + or `bash` for short, + and the popular [zsh](https://www.zsh.org/). + + +## Copyright + +This repository and *all* of its contents are open-source + under the [MIT license](./LICENSE.txt).