Compare commits
14 commits
Author | SHA1 | Date | |
---|---|---|---|
418eb40295 | |||
4c6526b1cc | |||
c90705bc62 | |||
dcdb32585a | |||
5c3a914658 | |||
c1393d0756 | |||
c5cf44f72e | |||
e56e5b6ba0 | |||
0a800cac88 | |||
c87bed3a6a | |||
b66256f83a | |||
bca227ff27 | |||
9c4ea2ecfe | |||
c90d4825a7 |
93 changed files with 1188 additions and 4007 deletions
|
@ -1,8 +1,4 @@
|
|||
# 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
|
||||
# Mimic bash's default behavior and source `~/.profile`
|
||||
source "$HOME/.profile"
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# Executed by bash when a login shell exits
|
||||
|
||||
|
||||
source "$HOME/.config/shell/logout.sh"
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
# Executed by bash when a login shell starts
|
||||
|
||||
# Mimic bash's default behavior explicitly
|
||||
# Mimic bash's default behavior and source `~/.bash_login` next
|
||||
if [ -f "$HOME/.bash_login" ]; then
|
||||
source "$HOME/.bash_login"
|
||||
elif [ -f "$HOME/.profile" ]; then
|
||||
source "$HOME/.profile"
|
||||
else
|
||||
source "$HOME/.bashrc"
|
||||
source "$HOME/.profile"
|
||||
fi
|
||||
|
|
129
.bashrc
129
.bashrc
|
@ -1,4 +1,4 @@
|
|||
# Executed by bash when a (non-)login shell starts
|
||||
# Executed by bash when a non-login shell starts
|
||||
|
||||
|
||||
# Ensure bash is running interactively
|
||||
|
@ -6,18 +6,23 @@
|
|||
|
||||
|
||||
# Check if a command can be found on the $PATH
|
||||
_command_exists() {
|
||||
command_exists() {
|
||||
command -v "$1" 1>/dev/null 2>&1
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Enable XON/XOFF software flow control
|
||||
# ==================
|
||||
# Base Configuration
|
||||
# ==================
|
||||
|
||||
|
||||
# Disable Ctrl-S and Ctrl-Q
|
||||
stty -ixon
|
||||
|
||||
# Report status of background jobs immediately
|
||||
set -o notify
|
||||
# Show number of running jobs when exiting a shell
|
||||
# Show # of running jobs when exiting a shell
|
||||
shopt -s checkjobs
|
||||
|
||||
# Just type the directory to cd into it
|
||||
|
@ -38,16 +43,10 @@ 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
|
||||
# =======
|
||||
# History
|
||||
# =======
|
||||
|
||||
# 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
|
||||
|
@ -58,31 +57,25 @@ shopt -s histreedit
|
|||
# Store multi-line commands in history without semicolons
|
||||
shopt -s lithist
|
||||
|
||||
# Cannot be set in `~/.profile` due to conflict with `zsh` (same env variable)
|
||||
export HISTFILE="$HOME/.bash_history"
|
||||
|
||||
|
||||
# Initialize various utilities and aliases
|
||||
source "$HOME/.config/shell/init.sh"
|
||||
# Ignore commands prefixed with a space, and ones used identically just before
|
||||
# (this mimics zsh's default behavior)
|
||||
export HISTCONTROL=ignoreboth
|
||||
|
||||
|
||||
|
||||
# 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
|
||||
fi
|
||||
# =========================
|
||||
# Shell Utilities & Aliases
|
||||
# =========================
|
||||
|
||||
|
||||
source "$HOME/.config/shell/utils.sh"
|
||||
source "$HOME/.config/shell/aliases.sh"
|
||||
|
||||
# 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)"
|
||||
|
||||
# Add tab completion for all aliases to commands with completion functions
|
||||
# (must come after bash completions have been set up)
|
||||
# Source: https://superuser.com/a/437508
|
||||
_alias_completion() {
|
||||
local namespace="alias_completion"
|
||||
|
@ -143,26 +136,68 @@ _alias_completion() {
|
|||
source "$tmp_file" && \rm -f "$tmp_file"
|
||||
}; _alias_completion
|
||||
|
||||
# Must come after `_alias_completion`
|
||||
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||
|
||||
|
||||
# Mimic zsh's PowerLevel10k
|
||||
|
||||
# ================
|
||||
# Bash Completions
|
||||
# ================
|
||||
|
||||
|
||||
# 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
|
||||
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)"
|
||||
|
||||
|
||||
# ============
|
||||
# Key Bindings
|
||||
# ============
|
||||
|
||||
|
||||
# Allow easier clearing of the screen (like in zsh)
|
||||
bind -x '"\C-l": clear;'
|
||||
|
||||
|
||||
|
||||
# ======
|
||||
# Prompt
|
||||
# ======
|
||||
|
||||
|
||||
# Set a variable identifying the chroot you work in
|
||||
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
||||
_debian_chroot=$(cat /etc/debian_chroot)
|
||||
fi
|
||||
|
||||
_prompt_git() { # Show a git repo's state
|
||||
|
||||
# Mimic PowerLevel10k's git prompt (only rough approximation)
|
||||
_prompt_git() {
|
||||
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 "
|
||||
echo -en "\033[0;37m "
|
||||
if [ "$ref" == "HEAD" ]; then
|
||||
ref=$(git rev-parse --short HEAD)
|
||||
printf "@"
|
||||
echo -en "@"
|
||||
fi
|
||||
printf "\033[0;32m$ref\033[0m"
|
||||
echo -en "\033[0;32m$ref\033[0m"
|
||||
# Indicate if local is ahead and/or behind upstream
|
||||
ahead=0
|
||||
behind=0
|
||||
|
@ -179,33 +214,35 @@ _prompt_git() { # Show a git repo's state
|
|||
done
|
||||
|
||||
if [ $ahead -gt 0 ] && [ $behind -gt 0 ]; then
|
||||
printf "\033[0;32m <>\033[0m"
|
||||
echo -en "\033[0;32m <>\033[0m"
|
||||
elif [ $ahead -gt 0 ]; then
|
||||
printf "\033[0;32m >\033[0m"
|
||||
echo -en "\033[0;32m >\033[0m"
|
||||
elif [ $behind -gt 0 ]; then
|
||||
printf "\033[0;32m <\033[0m"
|
||||
echo -en "\033[0;32m <\033[0m"
|
||||
fi
|
||||
)
|
||||
# Indicate stashed files with a *
|
||||
[ "$(git stash list 2> /dev/null)" != "" ] && printf "\033[0;32m *\033[0m"
|
||||
[ "$(git stash list 2> /dev/null)" != "" ] && echo -en "\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"
|
||||
[ $? -gt 0 ] && echo -en "\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"
|
||||
[ $? -gt 0 ] && echo -en "\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"
|
||||
echo -en "\033[0;34m ?\033[0m"
|
||||
fi
|
||||
}
|
||||
|
||||
_prompt_jobs() { # Indicate running background jobs with a"%"
|
||||
# Mimic zsh's "%" symbol indicating background jobs
|
||||
_prompt_jobs() {
|
||||
local running
|
||||
(( $(jobs -rp | wc -l) )) && printf "\033[0;32m %\033[0m"
|
||||
(( $(jobs -rp | wc -l) )) && echo -e "\033[0;32m %\033[0m"
|
||||
}
|
||||
|
||||
_prompt_pyenv() { # Mimic zsh's pyenv/venv integration
|
||||
# Mimic zsh's pyenv/venv integration
|
||||
_prompt_pyenv() {
|
||||
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
|
||||
|
|
|
@ -1,34 +1,22 @@
|
|||
[General]
|
||||
confirmExternalStorage=true
|
||||
confirmExternalStorage=false
|
||||
crashReporter=false
|
||||
isVfsEnabled=false
|
||||
launchOnSystemStartup=true
|
||||
monoIcons=true
|
||||
moveToTrash=false
|
||||
newBigFolderSizeLimit=10000
|
||||
notifyExistingFoldersOverLimit=true
|
||||
newBigFolderSizeLimit=99999
|
||||
optionalServerNotifications=false
|
||||
showCallNotifications=false
|
||||
stopSyncingExistingFoldersOverLimit=false
|
||||
useNewBigFolderSizeLimit=true
|
||||
useNewBigFolderSizeLimit=false
|
||||
|
||||
[Accounts]
|
||||
0\Folders\1\ignoreHiddenFiles=false
|
||||
0\Folders\1\localPath=/home/alexander/Cloud/
|
||||
0\Folders\1\localPath=/home/alexander/nextcloud/
|
||||
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\url=https://getraenkemarkt.cloud
|
||||
0\url=https://nextcloud.webartifex.biz
|
||||
0\user=@Invalid()
|
||||
0\version=1
|
||||
0\webflow_user=alexander
|
||||
version=2
|
||||
|
||||
[Nextcloud]
|
||||
autoUpdateCheck=false
|
||||
|
||||
[Proxy]
|
||||
type=2
|
||||
|
|
|
@ -1,52 +1,37 @@
|
|||
# This file contains fixed global exclude patterns
|
||||
|
||||
*~
|
||||
~$*
|
||||
.~lock.*
|
||||
~*.tmp
|
||||
]*~
|
||||
]~$*
|
||||
].~lock.*
|
||||
]~*.tmp
|
||||
]*.~*
|
||||
]Icon\r*
|
||||
].DS_Store
|
||||
].ds_store
|
||||
*.textClipping
|
||||
._*
|
||||
]*.textClipping
|
||||
]._*
|
||||
]Thumbs.db
|
||||
]photothumb.db
|
||||
System Volume Information
|
||||
|
||||
.*.sw?
|
||||
.*.*sw?
|
||||
|
||||
]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
|
||||
].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.
|
||||
]\#*#
|
||||
|
|
|
@ -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
|
|
@ -2,6 +2,5 @@
|
|||
|
||||
--style="numbers,changes,header"
|
||||
|
||||
--map-syntax ".bash_history:Bourne Again Shell (bash)"
|
||||
--map-syntax ".flake8:INI"
|
||||
--map-syntax "poetry.lock:TOML"
|
||||
--map-syntax ".flake8:ini"
|
||||
--map-syntax "poetry.lock:toml"
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
[general]
|
||||
|
||||
# Make `bpython` and `python` share their history
|
||||
hist_file = ~/.python_history
|
||||
|
||||
# No limit
|
||||
hist_length = 0
|
|
@ -5,7 +5,7 @@ drawColor=#ff0000
|
|||
drawThickness=3
|
||||
filenamePattern=%F_%H-%M-%S
|
||||
saveAsFileExtension=png
|
||||
savePath=/home/alexander/data/uploads/screenshots
|
||||
savePath=/home/alexander/nextcloud/uploads/screenshots
|
||||
showHelp=false
|
||||
startupLaunch=false
|
||||
uiColor=#ff3a00
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#-------------------------------------------------|
|
||||
|
||||
|
||||
|
||||
#=======================================================================|
|
||||
# BODY (optional) ======================================================|
|
||||
#=======================================================================|
|
||||
|
|
|
@ -1,49 +1,4 @@
|
|||
# Generic temporary files
|
||||
*.backup
|
||||
*.bak
|
||||
*.orig
|
||||
*.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
|
||||
#
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
!*.svg
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-rt-v][a-z]
|
||||
[._]ss[a-gi-z]
|
||||
[._]sw[a-p]
|
||||
# Session
|
||||
Session.vim
|
||||
Sessionx.vim
|
||||
# Temporary
|
||||
.netrwhist
|
||||
*~
|
||||
# Auto-generated tag files
|
||||
tags
|
||||
# Persistent undo
|
||||
[._]*.un~
|
||||
.*.swp
|
||||
.env
|
||||
|
|
|
@ -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 / < <file>`.
|
||||
It is important to always load them in anchored at the root (i.e., `/`).
|
|
@ -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
|
|
@ -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'
|
|
@ -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.
|
|
@ -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)
|
|
@ -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)
|
|
@ -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)
|
|
@ -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)
|
|
@ -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)
|
|
@ -1,318 +0,0 @@
|
|||
# Unify all key bindings in this file to conveniently keep them consistent
|
||||
|
||||
|
||||
[org/gnome/desktop/wm/keybindings]
|
||||
|
||||
# <Super><Shift>q is i3wm's default
|
||||
close=['<Super>Q', '<Super><Shift>Q', '<Primary><Shift>Q', '<Alt>F4']
|
||||
|
||||
maximize=@as []
|
||||
unmaximize=@as []
|
||||
toggle-maximized=['<Super>M']
|
||||
minimize=@as []
|
||||
|
||||
switch-applications=['<Super>Tab', '<Primary>Tab']
|
||||
switch-applications-backward=['<Super><Shift>Tab', '<Primary><Shift>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 []
|
||||
|
||||
# - <Super><Primary>Left/Right is the default to move left/right => <Super><Primary>1-5
|
||||
# - <Super>1-5 is i3wm's default way
|
||||
switch-to-workspace-1=['<Super>1', '<Super><Primary>1']
|
||||
switch-to-workspace-2=['<Super>2', '<Super><Primary>2']
|
||||
switch-to-workspace-3=['<Super>3', '<Super><Primary>3']
|
||||
switch-to-workspace-4=['<Super>4', '<Super><Primary>4']
|
||||
switch-to-workspace-5=['<Super>5', '<Super><Primary>5']
|
||||
switch-to-workspace-6=['<Super>6', '<Super><Primary>6']
|
||||
switch-to-workspace-7=['<Super>7', '<Super><Primary>7']
|
||||
switch-to-workspace-8=['<Super>8', '<Super><Primary>8']
|
||||
switch-to-workspace-9=['<Super>9', '<Super><Primary>9']
|
||||
switch-to-workspace-10=['<Super>0', '<Super><Primary>0']
|
||||
switch-to-workspace-last=['<Super>End', '<Super><Primary>End']
|
||||
switch-to-workspace-left=['<Super><Primary>Left']
|
||||
switch-to-workspace-right=['<Super><Primary>Right']
|
||||
|
||||
# <Super><Shift>1-5 is i3wm's default
|
||||
move-to-workspace-1=['<Super><Shift>1', '<Primary><Shift>1']
|
||||
move-to-workspace-2=['<Super><Shift>2', '<Primary><Shift>2']
|
||||
move-to-workspace-3=['<Super><Shift>3', '<Primary><Shift>3']
|
||||
move-to-workspace-4=['<Super><Shift>4', '<Primary><Shift>4']
|
||||
move-to-workspace-5=['<Super><Shift>5', '<Primary><Shift>5']
|
||||
move-to-workspace-6=['<Super><Shift>6', '<Primary><Shift>6']
|
||||
move-to-workspace-7=['<Super><Shift>7', '<Primary><Shift>7']
|
||||
move-to-workspace-8=['<Super><Shift>8', '<Primary><Shift>8']
|
||||
move-to-workspace-9=['<Super><Shift>9', '<Primary><Shift>9']
|
||||
move-to-workspace-10=['<Super><Shift>0', '<Primary><Shift>0']
|
||||
move-to-workspace-last=['<Super><Shift>End', '<Primary><Shift>End']
|
||||
move-to-workspace-left=['<Super><Shift>Left', '<Primary><Shift>Left']
|
||||
move-to-workspace-right=['<Super><Shift>Right', '<Primary><Shift>Right']
|
||||
|
||||
|
||||
[org/gnome/mutter/keybindings]
|
||||
toggle-tiled-left=@as []
|
||||
toggle-tiled-right=@as []
|
||||
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys]
|
||||
|
||||
email=['<Super>E']
|
||||
help=@as []
|
||||
home=['<Super>F']
|
||||
search=['<Super>slash']
|
||||
terminal=@as []
|
||||
www=['<Super>B']
|
||||
|
||||
screensaver=['<Super>Escape']
|
||||
logout=@as []
|
||||
|
||||
# Besides the numkeys, we use "/", ".", and "," to control the media
|
||||
play=['<Primary><Alt>Slash']
|
||||
next=['<Primary><Alt>Right']
|
||||
previous=['<Primary><Alt>Left']
|
||||
# Note: I often type "m" for "mute" intuitively
|
||||
volume-mute=['<Primary><Alt>M']
|
||||
volume-up=['<Primary><Alt>Up']
|
||||
volume-down=['<Primary><Alt>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='<Primary><Alt>Home'
|
||||
command='gnome-session-quit --reboot'
|
||||
name='Reboot Machine'
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1]
|
||||
binding='<Primary><Alt>End'
|
||||
command='gnome-session-quit --power-off'
|
||||
name='Shutdown Machine'
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2]
|
||||
binding='<Primary><Alt>Delete'
|
||||
command='gnome-session-quit --logout'
|
||||
name='Log out (1)'
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3]
|
||||
binding='<Primary><Alt>BackSpace'
|
||||
command='gnome-session-quit --logout'
|
||||
name='Log out (2)'
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4]
|
||||
binding='<Super>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='<Super>Return'
|
||||
command='alacritty'
|
||||
name='Terminal (1)'
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom6]
|
||||
# Faster than the default <Primary><Alt>t
|
||||
binding='<Super>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='<Primary><Alt>T'
|
||||
command='alacritty'
|
||||
name='Terminal (3)'
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom8]
|
||||
binding='<Primary><Alt>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='<Primary><Alt>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='<Primary><Alt>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='<Primary><Alt>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='<Primary><Alt>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='<Super>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=['<Super><Shift>Y']
|
||||
|
||||
window-toggle-float=@as []
|
||||
window-toggle-always-float=['<Super>Y']
|
||||
|
||||
window-focus-up=['<Super>Up']
|
||||
window-focus-down=['<Super>Down']
|
||||
window-focus-left=['<Super>Left']
|
||||
window-focus-right=['<Super>Right']
|
||||
|
||||
window-move-up=['<Super><Shift>Up']
|
||||
window-move-down=['<Super><Shift>Down']
|
||||
window-move-left=['<Super><Shift>Left']
|
||||
window-move-right=['<Super><Shift>Right']
|
||||
|
||||
window-swap-up=['<Super><Primary>Up']
|
||||
window-swap-down=['<Super><Primary>Down']
|
||||
window-swap-left=['<Super><Primary>Left']
|
||||
window-swap-right=['<Super><Primary>Right']
|
||||
window-swap-last-active=['<Super><Primary>Return']
|
||||
|
||||
window-resize-top-increase=['<Super><Alt>Up']
|
||||
window-resize-top-decrease=['<Super><Alt><Primary>Down']
|
||||
window-resize-bottom-increase=['<Super><Alt>Down']
|
||||
window-resize-bottom-decrease=['<Super><Alt><Primary>Up']
|
||||
window-resize-left-increase=['<Super><Alt>Left']
|
||||
window-resize-left-decrease=['<Super><Alt><Primary>Right']
|
||||
window-resize-right-increase=['<Super><Alt>Right']
|
||||
window-resize-right-decrease=['<Super><Alt><Primary>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=['<Primary><Alt>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=['<Super>Y']
|
||||
toggle-tiling=['<Super><Shift>Y']
|
||||
|
||||
focus-up=['<Super>Up']
|
||||
focus-down=['<Super>Down']
|
||||
focus-left=['<Super>Left']
|
||||
focus-right=['<Super>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=['<Super><Primary><Shift>Up', '<Super><Shift>Up', '<Primary><Shift>Up']
|
||||
pop-monitor-down=['<Super><Primary><Shift>Down', '<Super><Shift>Down', '<Primary><Shift>Down']
|
||||
pop-monitor-left=['<Super><Primary><Shift>Left']
|
||||
pop-monitor-right=['<Super><Primary><Shift>Right']
|
||||
pop-workspace-down=@as []
|
||||
pop-workspace-up=@as []
|
||||
|
||||
# <Super><Shift>Return instead of the default <Super>Return
|
||||
# so that <Super>Return opens terminal (like i3wm) above
|
||||
tile-enter=['<Primary><Shift>Return', '<Super><Shift>Return']
|
||||
tile-accept=['Return']
|
||||
|
||||
tile-move-up=['Up']
|
||||
tile-move-down=['Down']
|
||||
tile-move-left=['Left']
|
||||
tile-move-right=['Right']
|
||||
|
||||
tile-resize-up=['<Shift>Down']
|
||||
tile-resize-down=['<Shift>Up']
|
||||
tile-resize-left=['<Shift>Left']
|
||||
tile-resize-right=['<Shift>Right']
|
||||
|
||||
tile-swap-up=['<Primary>Up']
|
||||
tile-swap-down=['<Primary>Down']
|
||||
tile-swap-left=['<Primary>Left']
|
||||
tile-swap-right=['<Primary>Right']
|
||||
|
||||
|
||||
[org/gnome/shell/keybindings]
|
||||
|
||||
focus-active-notification=@as []
|
||||
open-application-menu=@as []
|
||||
|
||||
# Disable Gnome's default behavior of opening "favorite" apps
|
||||
# with <Super>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='<Primary>W'
|
||||
close-window='<Primary>Q'
|
||||
|
||||
find='<Primary>F'
|
||||
find-clear='<Primary>J'
|
||||
find-next='<Primary>N'
|
||||
find-previous='<Primary>H'
|
||||
|
||||
new-tab='<Primary>T'
|
||||
new-window='<Primary>N'
|
||||
|
||||
zoom-in='<Primary><Shift>Plus'
|
||||
# default: zoom-out='<Primary>minus'
|
||||
|
|
@ -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/communications', '4/organization', '5', '6', '7', '8', '9/music', '10/settings']
|
||||
|
||||
|
||||
[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'
|
|
@ -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
|
|
@ -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 []
|
|
@ -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 <Super>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=['<Primary><Alt>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
|
|
@ -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.
|
|
@ -1,5 +0,0 @@
|
|||
[application]
|
||||
name = gnupg
|
||||
|
||||
[configuration_files]
|
||||
.local/share/gnupg/trustdb.gpg
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -1,5 +0,0 @@
|
|||
[application]
|
||||
name = private SSH (config) files
|
||||
|
||||
[configuration_files]
|
||||
.ssh/config
|
|
@ -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`
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"bookmarks" : [ ]
|
||||
}
|
|
@ -1,153 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Mediathek>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<system>
|
||||
<Abo-Mindestdauer-Minuten></Abo-Mindestdauer-Minuten>
|
||||
<Abos-sofort-suchen>true</Abos-sofort-suchen>
|
||||
<Ansicht-Set-lang></Ansicht-Set-lang>
|
||||
<Blacklist-auch-Abo></Blacklist-auch-Abo>
|
||||
<Blacklist-ausgeschaltet>false</Blacklist-ausgeschaltet>
|
||||
<Blacklist-Filmlaenge>0</Blacklist-Filmlaenge>
|
||||
<Blacklist-ist-Whitelist></Blacklist-ist-Whitelist>
|
||||
<Blacklist-Start-ausgeschaltet>false</Blacklist-Start-ausgeschaltet>
|
||||
<Blacklist-Zukunft-nicht-anzeigen></Blacklist-Zukunft-nicht-anzeigen>
|
||||
<Dialog-Download-D-Starten>true</Dialog-Download-D-Starten>
|
||||
<download-error-msg>true</download-error-msg>
|
||||
<Download-Ordner-oeffnen></Download-Ordner-oeffnen>
|
||||
<Download-sofort-starten>false</Download-sofort-starten>
|
||||
<Eigenschaften-Tabellen-Abos></Eigenschaften-Tabellen-Abos>
|
||||
<Eigenschaften-Tabellen-Downloads>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||</Eigenschaften-Tabellen-Downloads>
|
||||
<Eigenschaften-Tabellen-Filme>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||</Eigenschaften-Tabellen-Filme>
|
||||
<Ersetzungstabelle-verwenden>true</Ersetzungstabelle-verwenden>
|
||||
<FARBE_BUTTON_SET_ABSPIELEN></FARBE_BUTTON_SET_ABSPIELEN>
|
||||
<FARBE_DOWNLOAD_ANSEHEN></FARBE_DOWNLOAD_ANSEHEN>
|
||||
<FARBE_DOWNLOAD_DATEINAME_ALT></FARBE_DOWNLOAD_DATEINAME_ALT>
|
||||
<FARBE_DOWNLOAD_DATEINAME_EXISTIERT></FARBE_DOWNLOAD_DATEINAME_EXISTIERT>
|
||||
<FARBE_DOWNLOAD_DATEINAME_NEU></FARBE_DOWNLOAD_DATEINAME_NEU>
|
||||
<FARBE_DOWNLOAD_FEHLER></FARBE_DOWNLOAD_FEHLER>
|
||||
<FARBE_DOWNLOAD_FEHLER_SEL></FARBE_DOWNLOAD_FEHLER_SEL>
|
||||
<FARBE_DOWNLOAD_FERTIG></FARBE_DOWNLOAD_FERTIG>
|
||||
<FARBE_DOWNLOAD_FERTIG_SEL></FARBE_DOWNLOAD_FERTIG_SEL>
|
||||
<FARBE_DOWNLOAD_IST_ABO></FARBE_DOWNLOAD_IST_ABO>
|
||||
<FARBE_DOWNLOAD_IST_DIREKTER_DOWNLOAD></FARBE_DOWNLOAD_IST_DIREKTER_DOWNLOAD>
|
||||
<FARBE_DOWNLOAD_RUN></FARBE_DOWNLOAD_RUN>
|
||||
<FARBE_DOWNLOAD_RUN_SEL></FARBE_DOWNLOAD_RUN_SEL>
|
||||
<FARBE_DOWNLOAD_WAIT></FARBE_DOWNLOAD_WAIT>
|
||||
<FARBE_DOWNLOAD_WAIT_SEL></FARBE_DOWNLOAD_WAIT_SEL>
|
||||
<FARBE_FILM_BOOKMARKED></FARBE_FILM_BOOKMARKED>
|
||||
<FARBE_FILM_GEOBLOCK_BACKGROUND></FARBE_FILM_GEOBLOCK_BACKGROUND>
|
||||
<FARBE_FILM_GEOBLOCK_BACKGROUND_SEL></FARBE_FILM_GEOBLOCK_BACKGROUND_SEL>
|
||||
<FARBE_FILM_HISTORY></FARBE_FILM_HISTORY>
|
||||
<FARBE_FILM_LIVESTREAM></FARBE_FILM_LIVESTREAM>
|
||||
<FARBE_FILM_NEU></FARBE_FILM_NEU>
|
||||
<FARBE_FILMLISTE_LADEN_AKTIV></FARBE_FILMLISTE_LADEN_AKTIV>
|
||||
<FARBE_FILTER_REGEX></FARBE_FILTER_REGEX>
|
||||
<FARBE_FILTER_REGEX_FEHLER></FARBE_FILTER_REGEX_FEHLER>
|
||||
<Hinweis-Nr-angezeigt></Hinweis-Nr-angezeigt>
|
||||
<Meldungsfenster-Playermeldungen></Meldungsfenster-Playermeldungen>
|
||||
<Meldungsfenster-Systemmeldungen></Meldungsfenster-Systemmeldungen>
|
||||
<nur-ascii>false</nur-ascii>
|
||||
<Pfade-zum-Speichern></Pfade-zum-Speichern>
|
||||
<pfad-ffmpeg>/usr/bin/ffmpeg</pfad-ffmpeg>
|
||||
<pfad-vlc>/usr/bin/vlc</pfad-vlc>
|
||||
<Player-zum-Abspielen></Player-zum-Abspielen>
|
||||
<Programm-Linux-Shutdown></Programm-Linux-Shutdown>
|
||||
<Programm-Url-oeffnen></Programm-Url-oeffnen>
|
||||
<system-import-url-manuell></system-import-url-manuell>
|
||||
<system-tab-abo-icon-anzeigen>true</system-tab-abo-icon-anzeigen>
|
||||
<system-tab-abo-icon-klein>true</system-tab-abo-icon-klein>
|
||||
<system-tab-download-filter-vis>true</system-tab-download-filter-vis>
|
||||
<system-tab-download-icon-anzeigen>true</system-tab-download-icon-anzeigen>
|
||||
<system-tab-download-icon-klein>true</system-tab-download-icon-klein>
|
||||
<system-tab-download-linebreak>false</system-tab-download-linebreak>
|
||||
<system-tab-filme-icon-anzeigen>true</system-tab-filme-icon-anzeigen>
|
||||
<system-tab-filme-icon-klein>true</system-tab-filme-icon-klein>
|
||||
<system-tab-filme-linebreak>false</system-tab-filme-linebreak>
|
||||
<update-filme>2</update-filme>
|
||||
<Version-Programmset>6</Version-Programmset>
|
||||
</system>
|
||||
|
||||
|
||||
|
||||
|
||||
<Programmset>
|
||||
<Name>Linux Speichern</Name>
|
||||
<Praefix>http</Praefix>
|
||||
<Suffix>mp4,mp3,m4v,flv,m4a</Suffix>
|
||||
<Zielpfad>/home/alexander/downloads/mediathek-view</Zielpfad>
|
||||
<Zieldateiname>%t-%T-%z</Zieldateiname>
|
||||
<Thema-anlegen>true</Thema-anlegen>
|
||||
<Abspielen>false</Abspielen>
|
||||
<Speichern>true</Speichern>
|
||||
<Button>true</Button>
|
||||
<Abo>true</Abo>
|
||||
<Laenge>false</Laenge>
|
||||
<Laenge-Feld>false</Laenge-Feld>
|
||||
<max-Laenge>25</max-Laenge>
|
||||
<Aufloesung>normal</Aufloesung>
|
||||
<Beschreibung>Standardset zum Speichern der Filme</Beschreibung>
|
||||
<Infodatei>false</Infodatei>
|
||||
<Spotlight>false</Spotlight>
|
||||
<Untertitel>false</Untertitel>
|
||||
</Programmset>
|
||||
<Programm>
|
||||
<Programmname>ffmpeg</Programmname>
|
||||
<Zieldateiname>%t-%T-%Z.mp4</Zieldateiname>
|
||||
<Programmpfad>/usr/bin/ffmpeg</Programmpfad>
|
||||
<Programmschalter>-i %f -c copy -bsf:a aac_adtstoasc **</Programmschalter>
|
||||
<Praefix>http</Praefix>
|
||||
<Suffix>m3u8</Suffix>
|
||||
<Restart>false</Restart>
|
||||
<Downloadmanager>false</Downloadmanager>
|
||||
</Programm>
|
||||
<Programm>
|
||||
<Programmname>VLC</Programmname>
|
||||
<Zieldateiname>%t-%T-%Z.ts</Zieldateiname>
|
||||
<Programmpfad>/usr/bin/vlc</Programmpfad>
|
||||
<Programmschalter>%f :sout=#standard{access=file,mux=ts,dst=**} -I dummy --play-and-exit</Programmschalter>
|
||||
<Restart>false</Restart>
|
||||
<Downloadmanager>false</Downloadmanager>
|
||||
</Programm>
|
||||
<Programmset>
|
||||
<Name>Linux Abspielen</Name>
|
||||
<Thema-anlegen>true</Thema-anlegen>
|
||||
<Abspielen>true</Abspielen>
|
||||
<Speichern>false</Speichern>
|
||||
<Button>true</Button>
|
||||
<Abo>false</Abo>
|
||||
<Laenge>false</Laenge>
|
||||
<Laenge-Feld>false</Laenge-Feld>
|
||||
<max-Laenge>25</max-Laenge>
|
||||
<Aufloesung>normal</Aufloesung>
|
||||
<Beschreibung>Standardset zum direkten Abspielen der Filme</Beschreibung>
|
||||
<Infodatei>false</Infodatei>
|
||||
<Spotlight>false</Spotlight>
|
||||
<Untertitel>false</Untertitel>
|
||||
</Programmset>
|
||||
<Programm>
|
||||
<Programmname>Vlc</Programmname>
|
||||
<Programmpfad>/usr/bin/vlc</Programmpfad>
|
||||
<Programmschalter>%f --play-and-exit</Programmschalter>
|
||||
<Restart>false</Restart>
|
||||
<Downloadmanager>false</Downloadmanager>
|
||||
</Programm>
|
||||
|
||||
|
||||
|
||||
<Ersetzungstabelle><von> </von><nach>_</nach></Ersetzungstabelle>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Mediathek>
|
|
@ -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"
|
1
.config/pop-system-updater/config.ron
Normal file
1
.config/pop-system-updater/config.ron
Normal file
|
@ -0,0 +1 @@
|
|||
(enabled:false,notification_frequency:Weekly)
|
|
@ -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)
|
|
@ -1,11 +1,3 @@
|
|||
# Shell-related Configuration
|
||||
# Shell-related Configs
|
||||
|
||||
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).
|
||||
|
|
|
@ -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.
|
|
@ -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'
|
|
@ -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'
|
|
@ -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
|
|
@ -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
|
152
.config/shell/aliases.sh
Normal file
152
.config/shell/aliases.sh
Normal file
|
@ -0,0 +1,152 @@
|
|||
# Shell aliases used for both bash and zsh
|
||||
|
||||
|
||||
# Check if a command can be found on the $PATH.
|
||||
command_exists() {
|
||||
command -v "$1" 1>/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Check if we are running from within a zsh instance.
|
||||
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
|
||||
|
||||
|
||||
# Global aliases
|
||||
if in_zsh; then
|
||||
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
|
||||
|
||||
|
||||
alias cls='clear'
|
||||
alias help='man'
|
||||
|
||||
|
||||
# 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'
|
||||
|
||||
|
||||
# Make working with files more convenient
|
||||
|
||||
alias cd..='cd ..'
|
||||
alias ..='cd ..'
|
||||
alias ...='cd ../..'
|
||||
alias ....='cd ../../..'
|
||||
alias .....='cd ../../../..'
|
||||
|
||||
alias mkdir='mkdir -p'
|
||||
alias md='mkdir'
|
||||
alias rmdir='rmdir --parents --verbose'
|
||||
alias rd='rmdir'
|
||||
|
||||
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}'
|
||||
|
||||
alias fdir='find . -type d -name'
|
||||
alias ffile='find . -type f -name'
|
||||
|
||||
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'
|
||||
|
||||
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'
|
||||
|
||||
|
||||
# Make working with Python more convenient
|
||||
|
||||
alias py='python'
|
||||
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
|
||||
|
||||
|
||||
# Aliases for various utilities
|
||||
alias datetime='date +"%Y-%m-%d %H:%M:%S %z (%Z)"'
|
||||
alias datetime-iso='date --iso-8601=seconds'
|
||||
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'
|
||||
|
||||
|
||||
# Create short aliases
|
||||
command_exists batcat && alias bat='batcat'
|
||||
command_exists fdfind && alias fd='fdfind'
|
||||
command_exists ranger && alias rn='ranger'
|
||||
command_exists screenfetch && alias sf='screenfetch'
|
||||
|
||||
|
||||
# Integrate git
|
||||
if command_exists git; then
|
||||
alias g='git'
|
||||
|
||||
# All git aliases are shell aliases with a 'g' prefix.
|
||||
for al in $(git internal-aliases); 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
|
||||
|
||||
|
||||
# (Un-)Encrypt vaults
|
||||
alias open-documents-vault='gocryptfs -q -extpass "pass getraenkemarkt/vaults/documents" $HOME/nextcloud/vault/ $HOME/.vault/documents'
|
||||
alias close-documents-vault='fusermount -q -u $HOME/.vault/documents'
|
|
@ -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
|
60
.config/shell/init_dotfiles.sh
Executable file
60
.config/shell/init_dotfiles.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
# This file initializes the `~/.dotfiles` bare repo
|
||||
# Source it from either zsh or bash
|
||||
|
||||
|
||||
# Check if a command can be found on the $PATH.
|
||||
command_exists() {
|
||||
command -v "$1" 1>/dev/null 2>&1
|
||||
}
|
||||
|
||||
|
||||
cd $HOME
|
||||
|
||||
|
||||
# This is only here for documentation purposes
|
||||
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||
|
||||
# Remove a previous version of a `~/.dotfiles` bare repository
|
||||
rm -rf "$HOME/.dotfiles" >/dev/null
|
||||
git clone --bare git@git.webartifex.biz:alexander/dotfiles.git "$HOME/.dotfiles"
|
||||
|
||||
# Backup old dotfiles
|
||||
rm -rf "$HOME/.dotfiles.bak" >/dev/null
|
||||
mkdir -p $HOME/.dotfiles.bak/.config/{autostart,bat,flameshot,git,Nextcloud,pop-system-updater,psql,pypoetry,shell} && \
|
||||
mkdir -p $HOME/.dotfiles.bak/.mackup && \
|
||||
mkdir -p $HOME/.dotfiles.bak/.vim/{after/ftplugin,backup,swap,undo} && \
|
||||
mkdir -p $HOME/.dotfiles.bak/.ssh && \
|
||||
/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
|
||||
xargs -I{} mv {} "$HOME/.dotfiles.bak"/{}
|
||||
|
||||
# Put new dotfiles in $HOME
|
||||
/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME checkout --force
|
||||
/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME config --local status.showUntrackedFiles no
|
||||
/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME status
|
||||
|
||||
|
||||
# Set up `zsh` only if it is available
|
||||
# Note: on many servers I use these dotfiles, `zsh` is not installed
|
||||
if command_exists zsh; then
|
||||
|
||||
# Install oh-my-zsh
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
rm -rf $ZSH >/dev/null
|
||||
git clone https://github.com/ohmyzsh/ohmyzsh.git $ZSH
|
||||
|
||||
# Install zplug
|
||||
export ZPLUG_HOME="$HOME/.zplug"
|
||||
rm -rf $ZPLUG_HOME >/dev/null
|
||||
git clone https://github.com/zplug/zplug $ZPLUG_HOME
|
||||
|
||||
# Set up all the zplug plugins (must be run interacticely
|
||||
# so that `~/.zshrc` & friends are sourced again)
|
||||
zsh -i -c "zplug install"
|
||||
|
||||
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
|
|
@ -1 +1,7 @@
|
|||
# This file is sourced by a login shell upon logout
|
||||
|
||||
|
||||
# Clear the screen to increase privacy
|
||||
if [ "$SHLVL" = 1 ]; then
|
||||
[ -x /usr/bin/clear ] && /usr/bin/clear || [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
|
||||
fi
|
||||
|
|
|
@ -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.
|
|
@ -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"
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
488
.config/shell/utils.sh
Normal file
488
.config/shell/utils.sh
Normal file
|
@ -0,0 +1,488 @@
|
|||
# This file is executed either by bash or zsh and holds all
|
||||
# initializations and utility definitions used in both shells.
|
||||
|
||||
|
||||
# Check if a command can be found on the $PATH.
|
||||
command_exists() {
|
||||
command -v "$1" 1>/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Check if we are running from within a zsh instance.
|
||||
in_zsh() {
|
||||
[ -n "$ZSH_VERSION" ]
|
||||
}
|
||||
|
||||
# Prepend a folder to $PATH if it is not already there
|
||||
_prepend_to_path () {
|
||||
if [ -d "$1" ] ; then
|
||||
case :$PATH: in
|
||||
*:$1:*) ;;
|
||||
*) PATH=$1:$PATH ;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# =========================
|
||||
# Initialize some CLI tools
|
||||
# =========================
|
||||
|
||||
|
||||
# Load custom $LS_COLORS if available
|
||||
if command_exists dircolors; then
|
||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||
fi
|
||||
|
||||
|
||||
# Make less understand some binary types (e.g., PDFs)
|
||||
# Source: https://github.com/wofr06/lesspipe
|
||||
command_exists lesspipe && eval "$(SHELL=/bin/sh lesspipe)"
|
||||
|
||||
|
||||
# Initialize pyenv if it is installed
|
||||
if command_exists pyenv; then
|
||||
eval "$(pyenv init -)"
|
||||
eval "$(pyenv virtualenv-init -)"
|
||||
fi
|
||||
|
||||
|
||||
# Configure the keyboard:
|
||||
# - make right alt and menu keys the compose key, e.g., for umlauts
|
||||
# - make caps lock a ctrl modifier and Esc key
|
||||
setxkbmap us -option 'compose:menu,compose:ralt,caps:ctrl_modifier'
|
||||
command_exists xcape && xcape -e "Caps_Lock=Escape"
|
||||
|
||||
|
||||
|
||||
# ==========================
|
||||
# Command not found handlers
|
||||
# ==========================
|
||||
|
||||
|
||||
# Check if an unknown command is in a local Python venv
|
||||
command_not_found_handle() {
|
||||
if [ -x ".venv/bin/$1" ]; then
|
||||
echo 'You forgot to activate the virtualenv' 1>&2
|
||||
exe=".venv/bin/$1"
|
||||
shift
|
||||
"$exe" "$@"
|
||||
return $?
|
||||
else
|
||||
echo "$1: command not found" 1>&2
|
||||
return 127
|
||||
fi
|
||||
}
|
||||
|
||||
# zsh uses another name for the handler
|
||||
command_not_found_handler() {
|
||||
command_not_found_handle "$@"
|
||||
}
|
||||
|
||||
|
||||
|
||||
# ==============================
|
||||
# Working with files and folders
|
||||
# ==============================
|
||||
|
||||
|
||||
# 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() {
|
||||
local dest
|
||||
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 a 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" ;;
|
||||
*.rar) unrar2dir "$1" ;;
|
||||
*.gz) gunzip "$1" ;;
|
||||
*.tar) tar xf "$1" ;;
|
||||
*.tbz2) tar xjf "$1" ;;
|
||||
*.tgz) tar xzf "$1" ;;
|
||||
*.zip) unzip2dir "$1" ;;
|
||||
*.Z) uncompress "$1" ;;
|
||||
*.7z) 7z x "$1" ;;
|
||||
*.ace) unace x "$1" ;;
|
||||
*) echo "'$1' cannot be extracted automatically" ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a file"
|
||||
fi
|
||||
}
|
||||
|
||||
# Create a tar.gz archive from a given directory.
|
||||
mktar() {
|
||||
tar cvzf "${1%%/}.tar.gz" "${1%%/}/"
|
||||
}
|
||||
|
||||
# Create a zip archive from a given file or directory.
|
||||
mkzip() {
|
||||
zip -r "${1%%/}.zip" "$1"
|
||||
}
|
||||
|
||||
|
||||
|
||||
# =================================
|
||||
# Creating random login credentials
|
||||
# =================================
|
||||
|
||||
|
||||
# Create random passwords for logins
|
||||
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
|
||||
;;
|
||||
*)
|
||||
echo 'Programming error'
|
||||
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
|
||||
}
|
||||
|
||||
# Short password that is accepted by most services
|
||||
alias genpw-alphanum='pwgen --ambiguous --capitalize --numerals --secure 30 1'
|
||||
|
||||
# Email addresses created with this utility look kind of "normal" but are totally random
|
||||
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
|
||||
;;
|
||||
*)
|
||||
echo 'Programming error'
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
FIRST=$(shuf -i 4-5 -n 1)
|
||||
LAST=$(shuf -i 8-10 -n 1)
|
||||
USER="$(gpw 1 $FIRST).$(gpw 1 $LAST)@webartifex.biz"
|
||||
if [[ $XCLIP == true ]]; then
|
||||
echo $USER | xclip -selection c
|
||||
else
|
||||
echo $USER
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# ===================================================
|
||||
# Set up & maintain the Python (develop) environments
|
||||
# ===================================================
|
||||
|
||||
|
||||
# TODO: This needs to be updated regularly (or find an automated solution)
|
||||
# The Python versions `pyenv` creates (in descending order)
|
||||
_py3_versions=('3.10.5' '3.9.13' '3.8.13' '3.7.13')
|
||||
_py2_version='2.7.18'
|
||||
|
||||
# Each Python environment uses its own `poetry` installation to avoid
|
||||
# integration problems between `pyenv` and `poetry`
|
||||
# Source: https://github.com/python-poetry/poetry/issues/5252#issuecomment-1055697424
|
||||
_py3_site_packages=('poetry')
|
||||
|
||||
# The pyenv virtualenv "utils" contains some globally available tools (e.g., `mackup`)
|
||||
_py3_utils=('mackup')
|
||||
|
||||
install-pyenv() {
|
||||
echo -e "\nInstalling pyenv\n"
|
||||
|
||||
# The official installer does a bit more than the `git clone`s below
|
||||
# `curl https://pyenv.run | bash`
|
||||
git clone https://github.com/pyenv/pyenv.git "$HOME/.pyenv"
|
||||
git clone https://github.com/pyenv/pyenv-doctor.git "$HOME/.pyenv/plugins/pyenv-doctor"
|
||||
git clone https://github.com/pyenv/pyenv-update.git "$HOME/.pyenv/plugins/pyenv-update"
|
||||
git clone https://github.com/pyenv/pyenv-virtualenv.git "$HOME/.pyenv/plugins/pyenv-virtualenv"
|
||||
git clone https://github.com/pyenv/pyenv-which-ext.git "$HOME/.pyenv/plugins/pyenv-which-ext"
|
||||
|
||||
# On a first install, "$PYENV_ROOT/bin" is NOT on the $PATH
|
||||
_prepend_to_path "$PYENV_ROOT/bin"
|
||||
}
|
||||
|
||||
re-install-pyenv() {
|
||||
echo -e "\nRemoving pyenv\n"
|
||||
rm -rf "$HOME/.pyenv" >/dev/null
|
||||
install-pyenv
|
||||
}
|
||||
|
||||
create-or-update-python-envs() {
|
||||
command_exists pyenv || install-pyenv
|
||||
|
||||
eval "$(pyenv init --path)"
|
||||
|
||||
# Keep a legacy Python 2.7, just in case
|
||||
echo -e "\nInstalling/updating Python $_py2_version\n"
|
||||
pyenv install --skip-existing $_py2_version
|
||||
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 -e "\nInstalling/updating Python $version\n"
|
||||
pyenv install --skip-existing $version
|
||||
|
||||
# Start the new environment with the latest `pip` and `setuptools` versions
|
||||
PYENV_VERSION=$version pip install --upgrade pip setuptools
|
||||
|
||||
# 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 -e "\nInstalling/updating global Python utilities\n"
|
||||
pyenv virtualenv $_py3_versions[1] 'utils'
|
||||
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
|
||||
# (This virtualenv is empty and is the target of accidental `pip install`s)
|
||||
echo -e "\nInstalling/updating the default/interactive Python environment\n"
|
||||
pyenv virtualenv $_py3_versions[1] 'interactive'
|
||||
PYENV_VERSION='interactive' pip install --upgrade pip setuptools
|
||||
|
||||
# Put all Python binaries and the utilities on the $PATH
|
||||
pyenv global 'interactive' $_py3_versions 'utils' $_py2_version
|
||||
}
|
||||
|
||||
|
||||
|
||||
# =============================
|
||||
# Automate the update machinery
|
||||
# =============================
|
||||
|
||||
|
||||
# Pull down latest version of dot files
|
||||
update-dotfiles() {
|
||||
echo -e '\nUpdating dotfiles\n'
|
||||
|
||||
# The `dotfiles` alias is defined in ~/.bashrc at the end of the "Shell Utilities & Aliases" section
|
||||
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME stash
|
||||
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME fetch --all --prune
|
||||
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME pull --rebase
|
||||
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME stash pop
|
||||
}
|
||||
|
||||
|
||||
# Run entire aptitude upgrade cycle (incl. removal of old packages).
|
||||
update-apt() {
|
||||
echo -e '\nUpdating apt packages\n'
|
||||
|
||||
sudo apt update
|
||||
echo
|
||||
sudo apt upgrade
|
||||
echo
|
||||
sudo apt autoremove
|
||||
echo
|
||||
sudo apt autoclean
|
||||
}
|
||||
|
||||
remove-old-snaps() {
|
||||
sudo snap list --all | awk "/disabled/{print $1, $3}" |
|
||||
while read snapname revision; do
|
||||
sudo snap remove "$snapname" --revision="$revision"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Update all repositories in ~/repos without the ones related to zsh/zplug
|
||||
update-repositories() {
|
||||
echo -e '\nUpdating repositories unrelated to zsh/zplug\n'
|
||||
|
||||
local cwd
|
||||
cwd=$(pwd)
|
||||
cd "$REPOS"
|
||||
for dir in */; do
|
||||
[ "$dir" = "zsh/" ] && continue
|
||||
echo "$REPOS/$dir"
|
||||
cd "$REPOS/$dir"
|
||||
git stash
|
||||
git fetch --all --prune
|
||||
git pull --rebase
|
||||
git stash pop
|
||||
echo
|
||||
done
|
||||
cd "$cwd"
|
||||
}
|
||||
|
||||
# Update everything related to zsh
|
||||
update-zsh() {
|
||||
echo -e '\nUpdating zsh/zplug related repositories\n'
|
||||
|
||||
if in_zsh; then
|
||||
omz update
|
||||
zplug update
|
||||
zplug install
|
||||
zplug load
|
||||
else
|
||||
local cwd
|
||||
cwd=$(pwd)
|
||||
# Pull down latest versions manually.
|
||||
for dir in $HOME/.zplug/repos/*/*/; do
|
||||
echo "$dir" && cd "$dir"
|
||||
git fetch --all --prune
|
||||
git pull --rebase
|
||||
done
|
||||
echo "$HOME/.oh-my-zsh" && cd "$HOME/.oh-my-zsh"
|
||||
git fetch --all --prune
|
||||
git pull --rebase
|
||||
cd "$cwd"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Update the entire Python tool chain
|
||||
update-python() {
|
||||
echo -e '\nUpdating the Python tool chain\n'
|
||||
|
||||
if command_exists pyenv; then
|
||||
echo -e '\nUpdating pyenv\n'
|
||||
pyenv update
|
||||
echo
|
||||
|
||||
echo -e '\nUpdating Python environments\n'
|
||||
create-or-update-python-envs
|
||||
echo
|
||||
fi
|
||||
|
||||
if command_exists zsh-pip-cache-packages; then
|
||||
echo -e '\nUpdating pip packages cache\n'
|
||||
zsh-pip-clear-cache
|
||||
zsh-pip-cache-packages
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Wrapper to run several update functions at once
|
||||
update-machine() {
|
||||
sudo --validate || return
|
||||
|
||||
update-apt
|
||||
|
||||
if command_exists flatpak; then
|
||||
echo -e '\nUpdating flatpaks\n'
|
||||
sudo flatpak update -y
|
||||
fi
|
||||
|
||||
if command_exists snap; then
|
||||
echo -e '\nUpdating snaps\n'
|
||||
sudo snap refresh
|
||||
remove-old-snaps
|
||||
fi
|
||||
|
||||
update-python
|
||||
|
||||
update-dotfiles
|
||||
update-zsh
|
||||
|
||||
echo -e '\nUpdating the configs managed by mackup'
|
||||
mackup restore --force
|
||||
|
||||
echo -e '\nUpdating password store\n'
|
||||
pass git pull
|
||||
echo
|
||||
|
||||
sudo updatedb -U /
|
||||
echo
|
||||
|
||||
sudo --reset-timestamp
|
||||
}
|
||||
|
||||
|
||||
|
||||
# =======================
|
||||
# Various other Utilities
|
||||
# =======================
|
||||
|
||||
|
||||
# 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
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
XDG_DESKTOP_DIR="$HOME/Desktop"
|
||||
XDG_DOCUMENTS_DIR="$HOME/Cloud"
|
||||
XDG_DOWNLOAD_DIR="$HOME/Downloads"
|
||||
XDG_MUSIC_DIR="$HOME/Cloud/Gallery/Music"
|
||||
XDG_PICTURES_DIR="$HOME/Cloud/Gallery"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/Cloud/Shared/Public"
|
||||
XDG_TEMPLATES_DIR="$HOME/Cloud/Templates"
|
||||
XDG_VIDEOS_DIR="$HOME/Cloud/Gallery/Videos"
|
||||
# Configure the XDG user directories to integrate Nextcloud
|
||||
|
||||
XDG_DESKTOP_DIR="$HOME/desktop"
|
||||
XDG_DOCUMENTS_DIR="$HOME/nextcloud"
|
||||
XDG_DOWNLOAD_DIR="$HOME/downloads"
|
||||
XDG_MUSIC_DIR="$HOME/nextcloud"
|
||||
XDG_PICTURES_DIR="$HOME/nextcloud/photos"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/nextcloud/shares"
|
||||
XDG_TEMPLATES_DIR="$HOME/nextcloud/templates"
|
||||
XDG_VIDEOS_DIR="$HOME/nextcloud/photos"
|
||||
|
|
|
@ -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"
|
|
@ -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 <Up> 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"
|
|
@ -1,190 +0,0 @@
|
|||
# Executed by zsh when a (non-)login shell starts
|
||||
|
||||
|
||||
# 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
|
|
@ -1,6 +1,6 @@
|
|||
[alias]
|
||||
# Important: ~/.config/shell/aliases.sh loads all git aliases with
|
||||
# less than 7 characters into the shell's "namespace" with a "g" prefix
|
||||
# Important: The accompanying ~/.bashrc file loads all git aliases with
|
||||
# less than 7 characters into the global bash "namespace" with a "g" prefix
|
||||
# Example: git add <=> git a <=> ga
|
||||
a = add
|
||||
ap = add --patch
|
||||
|
@ -14,9 +14,7 @@ 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
|
||||
|
@ -82,7 +80,7 @@ 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-ignored = "!f() { if [ -f .python-version ]; then mv .python-version .python-version.tmp; fi; if [ -f .env ]; then mv .env .env.tmp; fi; git clean -X -d -f "$@"; if [ -f .python-version.tmp ]; then mv .python-version.tmp .python-version; fi; if [ -f .env.tmp ]; then mv .env.tmp .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
|
||||
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"
|
||||
|
@ -108,8 +106,6 @@ grept = grep --break --context 1 --full-name --heading --ignore-case --line-
|
|||
# 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}'"
|
||||
prune-delete = "!git fetch --prune && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d"
|
||||
|
||||
[clean]
|
||||
requireforce = true
|
||||
|
@ -124,7 +120,7 @@ HEAD = cyan dim bold reverse
|
|||
branch = green bold
|
||||
remoteBranch = red bold
|
||||
stash = magenta dim bold reverse
|
||||
tag = magenta bold
|
||||
tag = magenta bold
|
||||
|
||||
[color "diff"]
|
||||
context = white
|
||||
|
@ -179,9 +175,6 @@ submodule = log
|
|||
[help]
|
||||
autocorrect = 50
|
||||
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
[merge]
|
||||
conflictstyle = diff3
|
||||
ff = only
|
2
.hidden
2
.hidden
|
@ -1,4 +1,2 @@
|
|||
LICENSE.txt
|
||||
R
|
||||
README.md
|
||||
Screenshots
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 7.4 MiB |
|
@ -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
|
24
.mackup.cfg
Normal file
24
.mackup.cfg
Normal file
|
@ -0,0 +1,24 @@
|
|||
[storage]
|
||||
engine = file_system
|
||||
path = nextcloud/getraenkemarkt
|
||||
directory = mackup
|
||||
|
||||
[applications_to_ignore]
|
||||
|
||||
# Do not sync configuration files that are kept in `git`
|
||||
# See: https://gitlab.webartifex.biz/alexander/dotfiles
|
||||
bash
|
||||
bat
|
||||
git
|
||||
flameshot
|
||||
mackup
|
||||
p10k
|
||||
pgsql
|
||||
poetry
|
||||
ssh
|
||||
vim
|
||||
wget
|
||||
zsh
|
||||
|
||||
# Somehow, libreoffice cannot start with some other machine's configuration
|
||||
libreoffice
|
7
.mackup/README.md
Normal file
7
.mackup/README.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# Custom Configuration for `mackup`
|
||||
|
||||
This folder contains various **config** files
|
||||
to include all kinds of files in the [`mackup backup`](https://github.com/lra/mackup).
|
||||
Their format is described [here](https://github.com/lra/mackup/tree/master/doc#add-support-for-an-application-or-almost-any-file-or-directory).
|
||||
|
||||
`mackup` is used to synchronize (dot) files the general public should *not* see.
|
13
.mackup/histories.cfg
Normal file
13
.mackup/histories.cfg
Normal file
|
@ -0,0 +1,13 @@
|
|||
[application]
|
||||
name = various history files
|
||||
|
||||
[configuration_files]
|
||||
.bash_history
|
||||
.lesshst
|
||||
.python_history
|
||||
.tig_history
|
||||
.zsh_history
|
||||
|
||||
[xdg_configuration_files]
|
||||
# `~/.config/psql` is set in `~/.psqlrc` for all history files
|
||||
psql
|
|
@ -1,5 +1,5 @@
|
|||
[application]
|
||||
name = Gnome Files a.k.a. Nautilus
|
||||
name = GNOME Files a.k.a. Nautilus
|
||||
|
||||
[xdg_configuration_files]
|
||||
gtk-3.0/bookmarks
|
7
.mackup/ssh_non-public.cfg
Normal file
7
.mackup/ssh_non-public.cfg
Normal file
|
@ -0,0 +1,7 @@
|
|||
[application]
|
||||
name = non-public SSH (config) files
|
||||
|
||||
[configuration_files]
|
||||
.ssh/config
|
||||
.ssh/known_hosts
|
||||
.ssh/known_hosts.old
|
|
@ -1,7 +1,7 @@
|
|||
# Generated by Powerlevel10k configuration wizard on 2022-08-08 at 23:58 CEST.
|
||||
# Generated by Powerlevel10k configuration wizard on 2022-07-11 at 02:12 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.
|
||||
# Wizard options: awesome-fontconfig, large 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
|
100
.profile
100
.profile
|
@ -1,55 +1,8 @@
|
|||
# Executed by a login shell (e.g., bash, sh, or zsh) during start-up
|
||||
# Executed by a login shell (e.g., bash or sh) during start
|
||||
|
||||
|
||||
|
||||
# Shell-independent stuff
|
||||
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
# 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"
|
||||
|
||||
|
||||
# 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 a folder to $PATH if it is not already there
|
||||
_prepend_to_path () {
|
||||
if [ -d "$1" ] ; then
|
||||
case :$PATH: in
|
||||
*:$1:*) ;;
|
||||
|
@ -58,30 +11,45 @@ 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"
|
||||
# Put some private bin directories on the $PATH
|
||||
_prepend_to_path "$HOME/bin"
|
||||
_prepend_to_path "$HOME/.local/bin"
|
||||
|
||||
|
||||
# Generic environment variables
|
||||
export EDITOR=vim
|
||||
export HISTFILESIZE=999999
|
||||
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
|
||||
|
||||
# Machine-specific directories
|
||||
export REPOS="$HOME/repos"
|
||||
|
||||
|
||||
# Configurations for various utilities
|
||||
|
||||
export BAT_CONFIG_PATH="$HOME/.config/bat/config"
|
||||
|
||||
export LESSHISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/.lesshst"
|
||||
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
_prepend_to_path "$PYENV_ROOT/bin"
|
||||
# No need for *.pyc files on a dev machine
|
||||
export PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
export PSQLRC="$HOME/.psqlrc"
|
||||
|
||||
|
||||
# Shell-specific stuff
|
||||
|
||||
# zsh-specific stuff is automatically sourced from `~/.zshenv`, `~/.zprofile`, `~/.zlogin`, and `~/.zshrc`
|
||||
|
||||
# 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
|
||||
# Source `~/.bashrc` if we are running inside a BASH shell
|
||||
if [ -n "$BASH_VERSION" ]; then
|
||||
if [ -f "$HOME/.bashrc" ]; then
|
||||
# `~/.bashrc` is NOT automatically sourced by bash
|
||||
source "$HOME/.bashrc"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# Source ~/.profile_local, which holds machine-specific ENV variables
|
||||
if [ -f "$HOME/.profile_local" ]; then
|
||||
source "$HOME/.profile_local"
|
||||
fi
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
-- psql executes the commands in this ~/.psqlrc creating output
|
||||
-- `psql` executes the commands in this `~/.psqlrc` creating output
|
||||
-- (this flag hides that and is unset again at the bottom)
|
||||
\set QUIET 1
|
||||
|
||||
|
@ -20,10 +20,9 @@
|
|||
-- Use the best text editor in the world
|
||||
\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
|
||||
\set HISTFILE ~/.local/state/psql/history- :DBNAME
|
||||
-- Use separate history files per database
|
||||
-- and keep them in one folder for easier sync with `mackup`
|
||||
\set HISTFILE ~/.config/psql/.psql_history- :DBNAME
|
||||
|
||||
-- Don't store the same SQL statement repeatedly
|
||||
\set HISTCONTROL ignoredups
|
|
@ -1 +0,0 @@
|
|||
SELECTED_EDITOR="/usr/bin/vim"
|
|
@ -1,8 +1,6 @@
|
|||
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)
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMe2fzyH4b4AwQBRgZ60enFagogaEG2dkO4NIOKllss alexander@webartifex.biz (gateway)
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMRDaWrT2hH7BOV4Zv1ctVGqwfeqkssnHklRXBmng6Wr alexander@webartifex.biz (laptop1)
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOhhfx063dGoaE62cbdyGL3kp1AIovWFojQGNdqUpxr8 alexander@webartifex.biz (laptop2)
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WZPkmknmo3R+DLjWrebt+X8UrHgoWwjHckbhxHVKC alexander@webartifex.biz (phone1)
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbVaLHl4T+TjphPGSutYKH00Z3cNG+EmlhUfh+N/m6E alexander@webartifex.biz (tablet1)
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGGNCrFt/gUbBHVqhthBuRmdDH6yS30+GGcCnARSzg+q alexander@webartifex.biz (workstation1)
|
||||
|
|
|
@ -5,9 +5,8 @@
|
|||
" Use VIM improved mode
|
||||
set nocompatible
|
||||
|
||||
|
||||
" Set environment variables for convenient usage
|
||||
let $RC="$XDG_CONFIG_HOME/vim/vimrc"
|
||||
let $RC="$HOME/.vim/vimrc"
|
||||
let $RTP=split(&runtimepath, ',')[0]
|
||||
|
||||
" Disable VIM's startup message
|
||||
|
@ -40,13 +39,13 @@ set hidden
|
|||
set path=.,**
|
||||
|
||||
|
||||
" Store all vim-related working files in the ~/.local/state/vim folder
|
||||
set viminfo+=n$XDG_STATE_HOME/vim/viminfo
|
||||
" Store all vim-related working files in ~/.vim
|
||||
set viminfo+=n~/.vim/viminfo
|
||||
" Use dedicated folders to store temporary backup, swap, and undo files
|
||||
" (the // means that VIM adapts names automatically to avoid duplicates)
|
||||
set backupdir=$XDG_STATE_HOME/vim/backup//
|
||||
set directory=$XDG_STATE_HOME/vim/swap//
|
||||
set undodir=$XDG_STATE_HOME/vim/undo//
|
||||
set backupdir=~/.vim/backup//
|
||||
set directory=~/.vim/swap//
|
||||
set undodir=~/.vim/undo//
|
||||
|
||||
" To disable any of the temporary files, uncomment one of the following
|
||||
" set nobackup
|
||||
|
@ -55,9 +54,6 @@ set undodir=$XDG_STATE_HOME/vim/undo//
|
|||
" set noundofile
|
||||
|
||||
|
||||
set runtimepath+=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIM,$VIMRUNTIME
|
||||
|
||||
|
||||
" Show the filename in the terminal window's title bar
|
||||
set title
|
||||
|
||||
|
@ -134,11 +130,6 @@ nmap Q <Nop>
|
|||
cnoremap w!! w !sudo tee % >/dev/null
|
||||
|
||||
|
||||
" Fix mouse issues with Alacritty terminal
|
||||
" Source: https://wiki.archlinux.org/title/Alacritty#Mouse_not_working_properly_in_Vim
|
||||
set ttymouse=sgr
|
||||
|
||||
|
||||
" Enable the mouse for selections, including a toggle for this mode
|
||||
set mouse=a
|
||||
let g:mouse_enabled=1
|
5
.zprofile
Normal file
5
.zprofile
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Executed by zsh when a login shell starts
|
||||
|
||||
# Mimic bash's default behavior (as an analogy) and source `~/.profile`
|
||||
# (`~/.zlogin` is skipped as it comes after `~/.zshrc`)
|
||||
source "$HOME/.profile"
|
20
.zshenv
Normal file
20
.zshenv
Normal file
|
@ -0,0 +1,20 @@
|
|||
# This file is sourced by zsh before `~/.zprofile` and `~/.zshrc`
|
||||
# (it's kind of a zsh-only `~/.profile` file)
|
||||
|
||||
|
||||
# TODO: As of now, this 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"
|
||||
|
||||
export YSU_MESSAGE_POSITION="after"
|
||||
export YSU_MODE="BESTMATCH"
|
||||
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
|
||||
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#666666,bg=bold"
|
||||
export ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
||||
|
||||
export ZSH_COMPDUMP="${XDG_CACHE_HOME:-$HOME/.cache}/.zcompdump-$HOST-$ZSH_VERSION"
|
||||
|
||||
export ZPLUG_HOME="$HOME/.zplug"
|
195
.zshrc
Normal file
195
.zshrc
Normal file
|
@ -0,0 +1,195 @@
|
|||
# Executed by zsg when a non-login shell starts
|
||||
|
||||
|
||||
# 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
|
||||
}
|
||||
|
||||
|
||||
|
||||
# ==================
|
||||
# Base Configuration
|
||||
# ==================
|
||||
|
||||
|
||||
# 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 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 EXTENDEDGLOB
|
||||
# Warn if there are no matches
|
||||
setopt NOMATCH
|
||||
|
||||
# Silence the shell
|
||||
setopt NO_BEEP
|
||||
|
||||
# Report status of background jobs immediately
|
||||
setopt NOTIFY
|
||||
|
||||
# Remove all "built-in" aliases
|
||||
unalias -a
|
||||
|
||||
|
||||
|
||||
# =======
|
||||
# History
|
||||
# =======
|
||||
|
||||
|
||||
# Cannot be set in `~/.profile` due to conflict with `bash` (same env variable)
|
||||
export HISTFILE="$HOME/.zsh_history"
|
||||
|
||||
|
||||
|
||||
# =========================
|
||||
# Shell Utilities & Aliases
|
||||
# =========================
|
||||
|
||||
|
||||
source "$HOME/.config/shell/utils.sh"
|
||||
source "$HOME/.config/shell/aliases.sh"
|
||||
|
||||
|
||||
# Defined here as it cannot be in `aliases.sh` due to a dependency with `~/.bashrc`
|
||||
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
|
||||
|
||||
|
||||
|
||||
# ===============
|
||||
# zplug & Plugins
|
||||
# ===============
|
||||
|
||||
|
||||
source "$ZSH/oh-my-zsh.sh"
|
||||
source "$HOME/.zplug/init.zsh" # config in `~/.zshenv`
|
||||
|
||||
|
||||
# Load all zsh plugins with `zplug`
|
||||
|
||||
# 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 "plugins/command-not-found", from:oh-my-zsh
|
||||
zplug "plugins/dotenv", from:oh-my-zsh
|
||||
zplug "plugins/dirhistory", from:oh-my-zsh
|
||||
zplug "plugins/git-escape-magic", from:oh-my-zsh
|
||||
zplug "plugins/invoke", from:oh-my-zsh # completions for `invoke`
|
||||
zplug "plugins/jsontools", from:oh-my-zsh
|
||||
zplug "plugins/pip", from:oh-my-zsh # completions for `pip`
|
||||
zplug "plugins/poetry", from:oh-my-zsh # completions for `poetry`
|
||||
zplug "plugins/z", from:oh-my-zsh
|
||||
|
||||
zplug "romkatv/powerlevel10k", as:theme, depth:1
|
||||
|
||||
zplug load
|
||||
|
||||
|
||||
|
||||
# ===============
|
||||
# Zsh Completions
|
||||
# ===============
|
||||
|
||||
|
||||
# Initialize zsh's completions
|
||||
# NOTE: This is already done with `~/.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
|
||||
# command_exists invoke && eval "$(invoke --print-completion-script=zsh)"
|
||||
|
||||
command_exists nox && eval "$(register-python-argcomplete nox)"
|
||||
|
||||
# pip -> see plugins above
|
||||
# command_exists pip && eval "$(pip completion --zsh)"
|
||||
|
||||
command_exists pipx && eval "$(register-python-argcomplete pipx)"
|
||||
|
||||
# poetry -> see plugins above
|
||||
|
||||
|
||||
|
||||
# ============
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
|
||||
# =====
|
||||
# Other
|
||||
# =====
|
||||
|
||||
# Enable Powerlevel10k "full" prompt
|
||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
31
README.md
31
README.md
|
@ -8,43 +8,42 @@ This repository contains useful (config) files that I use on my machines.
|
|||
On a freshly set up machine, run:
|
||||
|
||||
```bash
|
||||
curl https://code.webartifex.biz/alexander/dotfiles/-/raw/main/.local/share/dotfiles/setup.sh \
|
||||
> ./setup.sh && source ./setup.sh && rm ./setup.sh
|
||||
curl https://gitlab.webartifex.biz/alexander/dotfiles/-/raw/main/.config/shell/init_dotfiles.sh \
|
||||
> /tmp/init_dotfiles.sh \
|
||||
&& source /tmp/init_dotfiles.sh \
|
||||
&& rm /tmp/init_dotfiles.sh
|
||||
```
|
||||
|
||||
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.
|
||||
(located in `~/.dotfiles`)
|
||||
and initializes all the dotfiles provided here on your system.
|
||||
Furthermore, `zsh` is set up with [`oh-my-zsh`](https://ohmyz.sh/) and `zplug`.
|
||||
|
||||
**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!
|
||||
Don't worry: Your current dotfiles are backed up in the `~/.dotfiles.bak` folder!
|
||||
|
||||
|
||||
### Python Development Environments
|
||||
|
||||
The develop environments for Python are managed via [`pyenv`](https://github.com/pyenv/pyenv).
|
||||
The develop environments for Python are managed by [`pyenv`](https://github.com/pyenv/pyenv).
|
||||
|
||||
To set them up, run:
|
||||
|
||||
```bash
|
||||
create-or-update-python-envs
|
||||
install-pyenv && create-or-update-python-envs
|
||||
```
|
||||
|
||||
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/)).
|
||||
Several Python binaries are installed.
|
||||
Additionally, two `virtualenv`s, "interactive" and "utils", are also created:
|
||||
- "interactive" is the default environment with *no* libraries installed, and
|
||||
- "utils" hosts globally available utilities.
|
||||
|
||||
Use `pyenv local ...` to specify a particular Python binary for a project.
|
||||
|
||||
|
||||
### Private Dotfiles
|
||||
### Non-public Dotfiles
|
||||
|
||||
After setting up the Python environments (i.e., the "utils"),
|
||||
running `mackup restore` symlinks further dotfiles into `~/`.
|
||||
|
|
Loading…
Reference in a new issue