Compare commits

...

108 commits

Author SHA1 Message Date
1fc874a34c
Add prune aliases 2025-01-04 13:27:46 +01:00
cb0017e68a
Fix _update_repositories
The function failed if a folder at the top level was not a git repository
2024-12-29 10:47:55 +01:00
b71714856f
Add alias git checkout-all and git coa ...
... to fetch all branches from a git origin
2024-12-12 15:54:49 +01:00
4a82476f77
Adjust alacritty's config file to new version 2024-11-05 18:59:57 +01:00
99028e9278
Fix nautilus settings 2024-10-06 22:34:15 +02:00
e7be9b29d1
Set git's default branch 2024-07-18 00:21:10 +02:00
1f86901f00
Do not fail in python2.7 2024-07-04 11:19:15 +02:00
d9372bd5b5
Check if zplug is available first 2024-07-03 08:47:02 +02:00
16cde0d3d6
Check if omz is available first 2024-07-03 08:28:27 +02:00
9ae6cebc17
Do not clear the screen upon logout 2024-07-02 16:20:07 +02:00
a3c8f3da1c
Move __pycache__ folders to /tmp 2024-06-21 01:21:30 +02:00
bf05a40200
Run xcape only within X11 2024-06-07 12:46:02 +02:00
996081a247
Fix old names 2024-06-07 12:22:21 +02:00
24fed46e0a
Re-Organize Gnome's screen 2024-06-07 12:01:10 +02:00
275957d2fd
Fix wrong location 2024-06-07 11:54:56 +02:00
335b1f2cb8
Align xkb options 2024-06-07 11:39:33 +02:00
31a993b62a
Clear screen only after confirmation 2024-06-06 19:10:46 +02:00
8ebea88538
Fix logic error 2024-06-06 19:02:07 +02:00
6a5e4624f1
Update public keys 2024-06-05 15:37:32 +02:00
0d16e539e8
Include new config parameters 2024-06-05 15:35:37 +02:00
7d4309762e
Add rexi, a CLI regex tester 2024-03-26 03:26:26 +01:00
94b017befb
Use Gnome's night light schedule 2024-03-19 20:18:19 +01:00
b06660ea8e
Integrate OBS & friends into the app folders 2024-03-19 09:47:19 +01:00
e4c66e03fe
Enable Gnome's Cafeine extension 2024-03-19 09:38:53 +01:00
c507180fb7
Add a bit of separation 2024-03-19 09:29:19 +01:00
b8fb952c2b
Enable Gnome's Just Perfection extension 2024-03-19 09:09:50 +01:00
e00f76a1b1
Re-Organize the apps drawer 2024-03-14 18:47:28 +01:00
e687278397
Hide R's user folder 2024-03-14 16:03:46 +01:00
174dfa35c0
Move automated scripts folder into the "Setup" folder 2024-03-14 15:50:56 +01:00
1cb37bd89a
Add Alphabetical App Grid extension 2024-03-14 08:25:52 +01:00
3154f8173f
Use non-Flatpak repo for Google Chrome 2024-02-27 23:59:12 +01:00
818b48bbfe
Add 'Allow Locked Remote Desktop' extension 2024-02-18 14:42:15 +01:00
074cf4d12e
Sync Remmina's config 2024-02-16 15:05:26 +01:00
5e2209ed8b
Sync Remmina's remote clients 2024-02-16 01:05:19 +01:00
b64b7ac6cb
Rename the $XDG_DOCUMENTS_DIR folder 2024-02-15 23:19:09 +01:00
67c6eba5bd
Rename the $REPOS folder 2024-02-15 23:11:26 +01:00
f5edfd09cd
Use more traditional user folder names 2024-01-17 23:11:30 +01:00
93677129bd
Fix to really use right alt key 2024-01-16 22:29:42 +01:00
e75062dcf1
Verify pass' data folder exists 2024-01-13 13:26:53 +01:00
c4e16151b4
Migrate alacritty's config file 2024-01-11 03:53:16 +01:00
bb200dd055
Add new Nextcloud settings 2023-12-06 00:25:04 +01:00
ef9e8e5859
Fix to use right alt key 2023-12-06 00:23:38 +01:00
4fcf35e8f5
Add alias to edit the $HISTFILE 2023-11-30 13:38:34 +01:00
1b25f8efc9
Make Gnome's color scheme light by default 2023-11-30 11:46:42 +01:00
1c2057ef76
Reorganize Gnome's Shell Extensions ...
... to mimic my desktop's style before Fedora 39,
while still keeping incompatible extensions disabled
2023-11-30 02:27:07 +01:00
ca260c157c
Configure the Gnome forge extension
The "forge" extension replaces the "pop-shell" one,
which is not yet ready for Gnome 45
2023-11-09 02:48:57 +01:00
48146a055d
Configure the Gnome system-monitor extension
The "system-monitor" extension replaces the "simple-system-monitor" one,
which is not yet ready for Gnome 45
2023-11-09 00:22:59 +01:00
a28e2f41d0
Disable the Gnome justperfection extension
Reason: it does not work with Gnome 45 as of this commit
2023-11-08 19:58:34 +01:00
b8af087495
Disable the Gnome openweather extension
Reason: it does not work with Gnome 45 as of this commit
2023-11-08 18:41:29 +01:00
3bd25ebc84
Temporarily disable signing ...
... if the proper GPG key is not available, e.g., on a server.
Then, it does not make sense to push the updates to the forked repo.
2023-09-13 15:46:01 +02:00
7f559fac96
Run dconf only if it exists 2023-09-13 14:19:22 +02:00
fc3db12be7
Update the ~/repos only 2023-09-13 14:11:56 +02:00
5edfc00f08
Integrate machine-specific ENV variables
~/.profile_local can now be used to define machine-specific ENV
variables and other shell initialization logic.
2023-09-13 11:52:33 +02:00
6e0c93760a
Install mackup only on clients
Non-clients do not have access to my internal cloud folders
=> check if one of them exists or not to determine client vs. server
2023-09-13 11:40:42 +02:00
62dd123226
Move code snippet to ~/data/getraenkemarkt/shell ...
... as the `sudo tee` may cause some weird troubles on some servers.

E.g., "sudo: mon_handle_sigchld: waitpid: No child processes"
2023-09-13 11:31:34 +02:00
6cc383a471
Configure the night light schedule to the longer summer times 2023-05-30 18:37:42 +02:00
54c5447bec
Add the Night Theme Switcher shell extension 2023-05-30 18:37:36 +02:00
e6d1ad261c
Add public SSH keys for new clients 2023-05-30 12:26:41 +02:00
27ea3abf12
Add config folder for MediathekView
- move MediathekView's config folder into $XDG_CONFIG_HOME
- Note: these configuration files are only used if Gnome's launcher
        is adapted to use $XDG_CONFIG_HOME/mediathek-view explicitly!
- configure MediathekView to store the downloaded media files
  in ~/downloads/mediathek-view
2023-05-15 14:52:50 +02:00
32e28ec11b
Update Gnome's notifications settings 2023-05-14 01:46:50 +02:00
3d80e0bdcc
Re-organize Gnome's workspaces 2023-05-09 11:31:55 +02:00
cfff403773
Simplify the keyboard shortcuts for media handling 2023-05-08 13:53:45 +02:00
e98a39091e
Adjust keyboard shortcuts for the Elgato Key Lights
- add keyboard shortcuts to increase/decrease the color temperature
- simplify (i.e., unify) all the shortcuts to only come in one variant
2023-05-08 13:47:22 +02:00
1cbb8baa91
Make restore-gnome a public utility
Until now, `_restore_gnome` was only triggered during `update-machine`.
Yet, sometimes I use this function manually, for example, whenever
I play around with Gnome's settings and extensions.
2023-05-08 12:16:38 +02:00
a056361112
Add utility to fix some locations
- some locations are automatically created by some programs and need
  to be "fixed" from time to time
- Example: Gnome Seahorse (i.e., the passwords and keyrings application)
  uses ~/.pki by default but switches to $XDG_DATA_HOME/pki if it exists
  => we move the location to make everything $XDG compliant
2023-05-08 12:16:37 +02:00
5d5dd9d0bc
Steamline the keyboard shortcuts
- beautify the file:
  + group and re-order the keys in a logical way
  + put some spaces between the sections
- adjust the keyboard shortcuts a bit
2023-05-05 01:56:12 +02:00
9a0514251a
Put more spaces between sections 2023-05-05 01:44:18 +02:00
ac4bad32f5
Adjust the way private scripts are run
- the exact scripts that are run by `run-private-scripts`
  is not disclosed here
- the private scripts were adjusted so that they can be run
  as often as desired and always result in the same idempotent
  result
- consequently, the private scripts are now always triggered
  by `update-machine` as well
2023-05-04 22:14:35 +02:00
f3f2417442
Update control scripts for Elgato keylights
- in my main office, I have two Elgato keylights placed on my desk
  and the Python scripts in this commit allow me to control the lights
  with Gnome keyboard shortcuts
- add an installation scripts that sets up a Python venv to run
  the above scripts
2023-05-04 02:17:32 +02:00
dedd6fdd64
Disable the keyboard shortcut for Pop Shell's launcher 2023-05-04 01:38:16 +02:00
617e493187
Add keyboard shortcut for Spotify 2023-05-04 01:37:25 +02:00
3c17c92665
Hide ~/Screenshots
Gnome's default screenshot apps unfortunately hardcodes the location
for the screenshots with ~/Screenshots => on my machines, I symlink
this location to the actual screenshots folder in my cloud and, thus,
I do not want to see ~/Screenshots all the time
2023-05-02 12:37:04 +02:00
1691ddf1fa
Update Gnome Shell Extensions' settings
After switching to the latest Fedora 38 with Gnome 44, some new
shell extensions are added and old ones removed
2023-05-02 12:37:01 +02:00
c4b6ed747f
Add utilities to check if X11 or Wayland is running 2023-05-01 02:22:44 +02:00
3f0f0815e1
Make VIM the default editor 2023-05-01 02:22:43 +02:00
1cccb7df0e
Move mackup's config to $XDG_CONFIG_HOME/mackup
- move all of mackup's config files into $XDG_CONFIG_HOME/mackup:
  + ~/.mackup.cfg => configs for mackup itself
  + ~/.mackup/*.cfg => custom sync rules applied by mackup
- add automatic installation of `pipx` and `mackup` during the
  setup of the dotfiles
  + `pipx`'s config is moved into $XDG_CONFIG_HOME
  + `mackup`s config locations are adapted via a "little hack"
2023-05-01 02:22:43 +02:00
f76b32b790
Move $XDG_CONFIG_HOME/shell/init_dotfiles to $XDG_DATA_HOME/dotfiles/setup.sh 2023-05-01 02:22:43 +02:00
71baf34d58
Move ~/.dotfiles to $XDG_DATA_HOME/dotfiles 2023-05-01 02:22:42 +02:00
13b8724696
Move everything possible into XDG directories
With the help of xdg-ninja (https://github.com/b3nj5m1n/xdg-ninja)
we move all kinds of config/cache files into the XDG directories
2023-05-01 02:22:39 +02:00
7ceed45a28
Ignore LibreOffice's lock files 2023-03-07 00:59:11 +01:00
560627cee2
Remove unused flat packages 2023-02-19 13:01:01 +01:00
fc19761aac
User <Super>1-10 to switch workspaces ...
... instead of launching "favorite" apps
2023-01-30 04:26:23 +01:00
d1b4d6c8dc
Prevent zsh from destroying mackup's symlink 2023-01-24 14:43:43 +01:00
f08c01d886
Incorporate changes from Pop OS 22.04 install 2023-01-24 01:21:32 +01:00
ba28762983
Add alias for dex-autostart 2022-08-20 00:15:08 +02:00
fa88332c58
Fix bad syntax 2022-08-20 00:14:22 +02:00
cd7180e6c0
Add a wallpaper 2022-08-18 23:26:48 +02:00
137ebf29a9
Configure alacritty
- add config file ~/.config/alacritty/alacritty.yml
  (not synced by mackup)
- make Gnome's <Super>t shortcut start a new alacritty instance
- fix minor mouse issue interacting with vim
2022-08-14 17:38:43 +02:00
a8f8caccc0
Re-organize the shells' initialization logic
- unify ~/.config/shell/aliases.sh and ~/.config/shell/utils.sh
  into a common ~/.config/shell/init.sh
- split the contents of ~/.config/shell/aliases.sh
  into the folder ~/.config/shell/aliases.d
- split the contents of ~/.config/shell/utils.sh
  into the folder ~/.config/shell/utils.d
2022-08-14 17:38:43 +02:00
8aad11aed1
Configure bat, the nicer cat 2022-08-14 17:38:43 +02:00
337bebbb0c
Add keyboard shortcuts for Elgato key lights
- create Gnome keyboard shortcuts to manage the Elgato key lights:
  + toggle
  + increase and decrease brightness
- we use Python scripts in ~/.config/gnome-settings/elgato
  based on the "leglight" PIP package
  (Source: https://gitlab.com/obviate.io/pyleglight)
2022-08-14 17:38:42 +02:00
9bc310ff9f
Configure Gnome
- add ~/.config/gnome-settings/*.ini
  => static files with a commented export of Gnome settings
- re-load these configs with `update-machine`
2022-08-14 17:38:40 +02:00
b3322f6a44
Configure mackup
- ignore apps whose config files are in the dotfiles repo already
  (see: https://gitlab.webartifex.biz/alexander/dotfiles)
- ignore ~/.password-store as it contains symlinks
- sync various (config) files that are not be public:
  + Cisco's AnyConnect
  + history files for bash, less, python, psql, tig, and zsh
  + Gnome Nautilus' bookmarks
  + SSH config
2022-08-11 22:25:23 +02:00
06f19f78dc
Configure neofetch 2022-08-11 22:25:23 +02:00
5fbdcad471
Hide temp files typical for Linux from git 2022-08-11 22:25:23 +02:00
e5be9b6647
Hide generic temp files from git 2022-08-11 22:25:23 +02:00
1b7365a7eb
Hide LibreOffice's lock files from git 2022-08-11 22:25:23 +02:00
0319e614b8
Configure Python develop tool chain
- use pyenv to manage the develop environments
  + install several Python versions (3.7 - 3.10 and 2.7)
  + each version receives its own copies of black, pipenv, and poetry
- add two more virtual environments based off the latest version:
  + "interactive" => default environment optimized for interactive
                     usage with with black, bpython, and ipython
                     (also receives accidental `pip install`s)
  + "utils" => hosts various globally available tools/apps
               (e.g., mackup and youtube-dl)
- add installation and update scripts for the entire tool chain
- set up completions for bash and zsh
- set up convenient aliases
- configure bpython
- configure poetry
2022-08-11 22:25:20 +02:00
1646011389
Add public SSH keys 2022-08-11 22:24:36 +02:00
270453dbe0
Configure psql 2022-08-11 22:24:36 +02:00
4bad81c4dd
Configure vim 2022-08-11 22:24:35 +02:00
6b022d29e3
Configure Nextcloud
- some keys in ~/.config/Nextcloud/nextcloud.cfg are set by
  the machine automatically when in use
- integrate Nextcloud in XDG user directories
- make Nextcloud run on login in Gnome
- add `run-private-scripts` utility to run shell scripts
  stored in the Nextcloud
2022-08-11 22:23:46 +02:00
3786f0d099
Configure flameshot 2022-08-11 21:48:37 +02:00
a3ed4fbca6
Add installation script
- ~/.config/shell/init_dofiles.sh "installs" the provided dotfiles
  when sourced in an interactive shell
- see the README.md for instructions
2022-08-11 21:48:34 +02:00
c5ce823188
Configure git 2022-08-11 21:22:52 +02:00
8dbb94f75a
Configure zsh 2022-08-11 21:22:50 +02:00
47c92124e5
Configure bash 2022-08-11 21:21:47 +02:00
6494664a60
Hide LICENSE.txt and README.md in Gnome Nautilus 2022-08-09 14:13:46 +02:00
84 changed files with 6574 additions and 0 deletions

8
.bash_login Normal file
View file

@ -0,0 +1,8 @@
# 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

3
.bash_logout Normal file
View file

@ -0,0 +1,3 @@
# Executed by bash when a login shell exits
source "$HOME/.config/shell/logout.sh"

10
.bash_profile Normal file
View file

@ -0,0 +1,10 @@
# Executed by bash when a login shell starts
# Mimic bash's default behavior explicitly
if [ -f "$HOME/.bash_login" ]; then
source "$HOME/.bash_login"
elif [ -f "$HOME/.profile" ]; then
source "$HOME/.profile"
else
source "$HOME/.bashrc"
fi

225
.bashrc Normal file
View file

@ -0,0 +1,225 @@
# Executed by bash when a (non-)login shell starts
# Ensure bash 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 XON/XOFF software flow control
stty -ixon
# Report status of background jobs immediately
set -o notify
# Show number of running jobs when exiting a shell
shopt -s checkjobs
# Just type the directory to cd into it
shopt -s autocd
# Correct minor spelling mistakes with cd
shopt -s cdspell
# Include hidden files in * glob expansion
shopt -s dotglob
shopt -s extglob
# Expand ** into (recursive) directories
shopt -s globstar
# Ignore case when * expanding
shopt -s nocaseglob
# Update $ROWS and $COLUMNS after each command
shopt -s checkwinsize
# Set these environment variables here (and not in ~/.profile)
# due to conflict/overlap with zsh
export HISTFILE="$XDG_STATE_HOME/bash/history"
export HISTSIZE=999999 # number of lines kept in memory
export HISTFILESIZE=999999 # number of lines kept in $HISTFILE
# Ignore commands prefixed with a space,
# and ones entered identically just before
# (this mimics zsh's default behavior)
export HISTCONTROL=ignoreboth
# Remember multi-line commands in history as one command
shopt -s cmdhist
# Do not overwrite .bash_history file
shopt -s histappend
# Allow re-editing a failed history substitution
shopt -s histreedit
# Store multi-line commands in history without semicolons
shopt -s lithist
# Initialize various utilities and aliases
source "$HOME/.config/shell/init.sh"
# 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)"
# 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"
# parse function based completion definitions, where capture group 2 => function and 3 => trigger
local compl_regex='complete( +[^ ]+)* -F ([^ ]+) ("[^"]+"|[^ ]+)'
# parse alias definitions, where capture group 1 => trigger, 2 => command, 3 => command arguments
local alias_regex="alias ([^=]+)='(\"[^\"]+\"|[^ ]+)(( +[^ ]+)*)'"
# create array of function completion triggers, keeping multi-word triggers together
eval "local completions=($(complete -p | sed -Ene "/$compl_regex/s//'\3'/p"))"
(( ${#completions[@]} == 0 )) && return 0
# create temporary file for wrapper functions and completions
rm -f "/tmp/${namespace}-*.tmp" # preliminary cleanup
local tmp_file; tmp_file="$(mktemp "/tmp/${namespace}-${RANDOM}XXX.tmp")" || return 1
local completion_loader; completion_loader="$(complete -p -D 2>/dev/null | sed -Ene 's/.* -F ([^ ]*).*/\1/p')"
# read in "<alias> '<aliased command>' '<command args>'" lines from defined aliases
local line; while read line; do
eval "local alias_tokens; alias_tokens=($line)" 2>/dev/null || continue # some alias arg patterns cause an eval parse error
local alias_name="${alias_tokens[0]}" alias_cmd="${alias_tokens[1]}" alias_args="${alias_tokens[2]# }"
# skip aliases to pipes, boolean control structures and other command lists
# (leveraging that eval errs out if $alias_args contains unquoted shell metacharacters)
eval "local alias_arg_words; alias_arg_words=($alias_args)" 2>/dev/null || continue
# avoid expanding wildcards
read -a alias_arg_words <<< "$alias_args"
# skip alias if there is no completion function triggered by the aliased command
if [[ ! " ${completions[*]} " =~ " $alias_cmd " ]]; then
if [[ -n "$completion_loader" ]]; then
# force loading of completions for the aliased command
eval "$completion_loader $alias_cmd"
# 124 means completion loader was successful
[[ $? -eq 124 ]] || continue
completions+=($alias_cmd)
else
continue
fi
fi
local new_completion="$(complete -p "$alias_cmd")"
# create a wrapper inserting the alias arguments if any
if [[ -n $alias_args ]]; then
local compl_func="${new_completion/#* -F /}"; compl_func="${compl_func%% *}"
# avoid recursive call loops by ignoring our own functions
if [[ "${compl_func#_$namespace::}" == $compl_func ]]; then
local compl_wrapper="_${namespace}::${alias_name}"
echo "function $compl_wrapper {
(( COMP_CWORD += ${#alias_arg_words[@]} ))
COMP_WORDS=($alias_cmd $alias_args \${COMP_WORDS[@]:1})
(( COMP_POINT -= \${#COMP_LINE} ))
COMP_LINE=\${COMP_LINE/$alias_name/$alias_cmd $alias_args}
(( COMP_POINT += \${#COMP_LINE} ))
$compl_func
}" >> "$tmp_file"
new_completion="${new_completion/ -F $compl_func / -F $compl_wrapper }"
fi
fi
# replace completion trigger by alias
new_completion="${new_completion% *} $alias_name"
echo "$new_completion" >> "$tmp_file"
done < <(alias -p | sed -Ene "s/$alias_regex/\1 '\2' '\3'/p")
source "$tmp_file" && \rm -f "$tmp_file"
}; _alias_completion
# Mimic zsh's PowerLevel10k
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
_debian_chroot=$(cat /etc/debian_chroot)
fi
_prompt_git() { # Show a git repo's state
local out ref uncommited unstaged untracked ahead behind
# Check if the pwd contains a git repository and exit early if it does not
ref=$(git rev-parse --abbrev-ref --symbolic-full-name HEAD 2> /dev/null)
[ "$ref" == "" ] && return
# Check if the current HEAD is detached or reachable by a ref
printf "\033[0;37m "
if [ "$ref" == "HEAD" ]; then
ref=$(git rev-parse --short HEAD)
printf "@"
fi
printf "\033[0;32m$ref\033[0m"
# Indicate if local is ahead and/or behind upstream
ahead=0
behind=0
git status 2>/dev/null | (
while read -r line ; do
case "$line" in
*'diverged'*) # For simplicity, a diverged local branch is
ahead=1 ; behind=1 ; break ; ;; # indicated as being
*'ahead'*) # both ahead and behind its upstream
ahead=1 ; ;;
*'behind'*)
behind=1 ; ;;
esac
done
if [ $ahead -gt 0 ] && [ $behind -gt 0 ]; then
printf "\033[0;32m <>\033[0m"
elif [ $ahead -gt 0 ]; then
printf "\033[0;32m >\033[0m"
elif [ $behind -gt 0 ]; then
printf "\033[0;32m <\033[0m"
fi
)
# Indicate stashed files with a *
[ "$(git stash list 2> /dev/null)" != "" ] && printf "\033[0;32m *\033[0m"
# Indicate uncommited/staged with a +
git diff-index --cached --exit-code --quiet HEAD -- 2> /dev/null
[ $? -gt 0 ] && printf "\033[0;33m +\033[0m"
# Indicate unstaged with a !
git diff-files --exit-code --quiet 2> /dev/null
[ $? -gt 0 ] && printf "\033[0;33m !\033[0m"
# Indicate untracked files with a ?
if [ "$(git ls-files --exclude-standard --others 2> /dev/null)" != "" ]; then
printf "\033[0;34m ?\033[0m"
fi
}
_prompt_jobs() { # Indicate running background jobs with a"%"
local running
(( $(jobs -rp | wc -l) )) && printf "\033[0;32m %\033[0m"
}
_prompt_pyenv() { # Mimic zsh's pyenv/venv integration
if [ -n "$VIRTUAL_ENV" ]; then
echo -e "\033[0;36m py $(python -c "import os, sys; (hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix)) and print(os.path.basename(sys.prefix))")\033[0m"
elif [ -n "$PYENV_VERSION" ]; then
if [ "$PYENV_VERSION" != "system" ]; then
echo -e "\033[0;36m py $PYENV_VERSION\033[0m"
fi
elif [ -f "$(pwd)/.python-version" ]; then
echo -e "\033[0;36m py $(cat .python-version | sed ':a;N;$!ba;s/\n/:/g')\033[0m"
fi
}
# Disable the default prompts set by pyenv and venv
export PYENV_VIRTUALENV_DISABLE_PROMPT=1
export VIRTUAL_ENV_DISABLE_PROMPT=1
PS1='${chroot:+($_debian_chroot)}\w$(_prompt_git)$(_prompt_jobs)$(_prompt_pyenv) > '
PS2='... '

View file

@ -0,0 +1,34 @@
[General]
confirmExternalStorage=true
crashReporter=false
isVfsEnabled=false
launchOnSystemStartup=true
monoIcons=true
moveToTrash=false
newBigFolderSizeLimit=10000
notifyExistingFoldersOverLimit=true
optionalServerNotifications=false
showCallNotifications=false
stopSyncingExistingFoldersOverLimit=false
useNewBigFolderSizeLimit=true
[Accounts]
0\Folders\1\ignoreHiddenFiles=false
0\Folders\1\localPath=/home/alexander/Cloud/
0\Folders\1\paused=false
0\Folders\1\targetPath=/
0\Folders\1\version=2
0\Folders\1\virtualFilesMode=off
0\authType=webflow
0\dav_user=alexander
0\url=https://getraenkemarkt.cloud
0\user=@Invalid()
0\version=1
0\webflow_user=alexander
version=2
[Nextcloud]
autoUpdateCheck=false
[Proxy]
type=2

View file

@ -0,0 +1,52 @@
# This file contains fixed global exclude patterns
*~
~$*
.~lock.*
~*.tmp
]*.~*
]Icon\r*
].DS_Store
].ds_store
*.textClipping
._*
]Thumbs.db
]photothumb.db
System Volume Information
.*.sw?
.*.*sw?
].TemporaryItems
].Trashes
].DocumentRevisions-V100
].Trash-*
.fseventd
.apdisk
.Spotlight-V100
.directory
*.part
*.filepart
*.crdownload
*.kate-swp
*.gnucash.tmp-*
.synkron.*
.sync.ffs_db
.symform
.symform-store
.fuse_hidden*
*.unison
.nfs*
My Saved Places.
\#*#
*.sb-*
# LibreOffice's lock files
.lock

View file

@ -0,0 +1,56 @@
[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

View file

@ -0,0 +1,11 @@
[Desktop Entry]
Name=Nextcloud
GenericName=File Synchronizer
Exec="/usr/bin/nextcloud" --background
Terminal=false
Icon=Nextcloud
Categories=Network
Type=Application
StartupNotify=false
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=10

7
.config/bat/config Normal file
View file

@ -0,0 +1,7 @@
--theme="TwoDark"
--style="numbers,changes,header"
--map-syntax ".bash_history:Bourne Again Shell (bash)"
--map-syntax ".flake8:INI"
--map-syntax "poetry.lock:TOML"

7
.config/bpython/config Normal file
View file

@ -0,0 +1,7 @@
[general]
# Make `bpython` and `python` share their history
hist_file = ~/.python_history
# No limit
hist_length = 0

View file

@ -0,0 +1,11 @@
[General]
contrastOpacity=188
disabledTrayIcon=true
drawColor=#ff0000
drawThickness=3
filenamePattern=%F_%H-%M-%S
saveAsFileExtension=png
savePath=/home/alexander/data/uploads/screenshots
showHelp=false
startupLaunch=false
uiColor=#ff3a00

View file

@ -0,0 +1,38 @@
#=================================================|
# SUBJECT ========================================|
#=================================================|
# - what does the commit do
# - capitalize the first word
# - use imperative mood (e.g., "Add" over "Adds")
# - do not end the line with a period
# - start with "Fix" for any fixes
#---------- 50 characters / 1 line ---------------|
#-------------------------------------------------|
#=======================================================================|
# BODY (optional) ======================================================|
#=======================================================================|
# - explain what the commit does, why it does it, and how
# - do not format the text (e.g., Markdown)
# - use multiple lines starting with "-" as bullet points
# + first sub-level
# * second sub-level
# - link to external resources for more context
#---------- 72 characters / multiple lines (and paragraphs) ------------|
#=======================================================================|
# ISSUE TRACKER (optional) =============================================|
#=======================================================================|
# - uncomment and adapt one of the lines below
# - use the "closes" keyword if applicable
# (see https://help.github.com/articles/closing-issues-using-keywords)
#-----------------------------------------------------------------------|
# Closes #41 on the issue tracker
# Fixes #42 on the issue tracker
# Resolves #43 on the issue tracker

212
.config/git/config Normal file
View file

@ -0,0 +1,212 @@
[alias]
# Important: ~/.config/shell/aliases.sh loads all git aliases with
# less than 7 characters into the shell's "namespace" with a "g" prefix
# Example: git add <=> git a <=> ga
a = add
ap = add --patch
bi = bisect
br = branch
bra = branch --all
brd = branch --delete
brdd = branch --delete --force
brm = branch --move
cf = cat-file
ci = commit
cim = commit --message
cl = clone
checkout-all = "!f() { for branch in $(git branch -r | grep -v '\\->'); do git branch --track ${branch#origin/} $branch; done; git fetch --all; }; f"
co = checkout
coa = checkout-all
cob = checkout -b
cod = checkout develop
com = checkout master
cp = cherry-pick
de = describe --tags
df = diff
fe = fetch
lg = log
lga = log --all
mb = merge-base
me = merge
mea = merge --abort
mec = merge --continue
mefeat = "!f() { if [ $# -eq 0 ]; then echo "Must specify a branch to merge in"; exit 1; fi; git check-pull; if [ $? -gt 0 ]; then echo "$1 must be rebased first"; exit 1; fi; cb=$(git current-branch) && printf '# SUBJECT\n# =======\n# - what does the commit do\n# - capitalize the first word and use the\n# imperative mood (e.g. "Add" vs "Adds")\n# - do not end the line with a period\n# - start with "Fix" for any hotfixes\n# ========= 50 characters / 1 line ============= |\nMerge in \"%s\"\n# ============================================== |\n\n\n# BODY (optional)\n# ===============\n# - explain what the commit does, why it does it, and how\n# - do not format the text (e.g., Markdown or reStructuredText)\n# - use multiple lines starting with "-" as bullet points\n# - link to external resources for even more context where appropriate\n# ========= 72 characters / multiple lines (and paragraphs) ========== |\nMerge branch \"%s\" into \"%s\"\n\nSummary of the merged in commits:\n' $1 $1 $cb > .merge_msg.txt.tmp && git log --format=format:' * %h: %s' $cb..$1 >> .merge_msg.txt.tmp && printf '\n\n\n# ==================================================================== |\n\n\n# GITHUB ISSUE (optional)\n# =======================\n# - uncomment and adapt one of the lines below\n# - use the "closes" keyword if applicable\n# (see https://help.github.com/en/articles/closing-issues-using-keywords)\n#\n# Related GitHub issue: #21\n# This commit closes #42 on the GitHub issue tracker\n\n\n#\n# END\n#\n' >> .merge_msg.txt.tmp && git merge --no-ff --no-commit $1 && SKIP=no-commit-to-branch git commit --edit --file=.merge_msg.txt.tmp; rm -f .merge_msg.txt.tmp; }; f"
meff = merge --ff-only
menoff = merge --no-ff
pl = pull
plrb = pull --rebase
ps = push
psf = push --force
rb = rebase --committer-date-is-author-date
rba = rebase --abort
rbc = rebase --continue
rbi = rebase --interactive
rbq = rebase --quit
rbs = rebase --skip
rl = reflog
rm = rm # To make it available as the grm alias
rp = rev-parse
rs = reset
rv = revert
s = status
ss = status --short
sh = show
st = stash
sta = stash push --include-untracked # push does not go into the shortcut!
stam = stash push --include-untracked --message
stapp = stash apply
stl = stash list
stp = stash pop
stsh = stash show
# Provide an overview of all aliases. Second one is for use in ~/.bashrc
aliases = config --get-regexp 'alias.*'
internal-aliases = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1/' | sort
# Provide synonyms as "specified" in the git status header
discard = checkout --
unstage = reset HEAD --
# Common tasks with tedious or non-intuitive flags
amend-commit = !git log -n 1 --pretty=tformat:%B | git commit -F - --amend # Keep the commit message
check-pull = "!f() { git fetch; upstream=${1:-'@{u}'}; local=$(git rev-parse @); remote=$(git rev-parse "$upstream"); base=$(git merge-base @ "$upstream"); if [ $local = $remote ]; then echo "Up-to-date"; exit 0; elif [ $local = $base ]; then echo "Local branch is behind upstream"; elif [ $remote = $base ]; then echo "Local branch is ahead of upstream"; else echo "Local and remote branches diverged"; fi; exit 1; }; f"
current-branch = !git rev-parse --abbrev-ref HEAD
project-root = rev-parse --show-toplevel
uncommit = reset --soft HEAD~1
# Sync the working directory into the index
rm-deleted = !git ls-files -z --deleted | xargs -r -0 git rm
sync-pwd-to-index = !git rm-deleted && git add . --all
sy = !git sync-pwd-to-index
# Make minimal diff the default
diff-minimal = diff --color-words=. --ws-error-highlight=all
d = diff --color-words=. --ws-error-highlight=all
dlc = diff --color-words=. --ws-error-highlight=all HEAD
ds = diff --color-words=. --ws-error-highlight=all --staged
# Clean the project folder with intuitive commands
# Always keep the .python-version file, which is also often in ~.gitignore
clean-all = !git reset --hard && git clean-ignored && git clean-untracked
clean-ignored = "!f() { if [ -f .python-version ]; then mv .python-version .python-version.XYZ; fi; if [ -f .env ]; then mv .env .env.XYZ; fi; git clean -X -d -f "$@"; if [ -f .python-version.XYZ ]; then mv .python-version.XYZ .python-version; fi; if [ -f .env.XYZ ]; then mv .env.XYZ .env; fi }; f"
clean-untracked = !git clean -x -d -e ".python-version" -e ".env" -f # The -e flag does not work with -X
# Delete everything not reachable from a branch from the repository
gc-everything = "!f() { git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc "$@"; }; f"
# Make the logs look nice by default
last-commit = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' -1 -p --stat
lc = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' -1 -p --stat
history = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph
hi = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph
hia = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%aN @ %ad => %ar%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph --all
summary = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%an @ %ad => %ar%n' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph
su = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%an @ %ad => %ar%n' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph
sua = log --pretty='%C(auto)%h: %s%d%Creset%n%C(dim)%an @ %ad => %ar%n' --date=format:'%a %Y-%m-%d %H:%M:%S %z' --graph --all
oneline = log --pretty='%C(auto)%h: %s%d' --graph
ol = log --pretty='%C(auto)%h: %s%d' --graph
ola = log --pretty='%C(auto)%h: %s%d' --graph --all
# Search the repository
grep-code = grep --break --context 1 --full-name --heading --line-number --show-function
grepc = grep --break --context 1 --full-name --heading --line-number --show-function
grep-log = log --all --regexp-ignore-case --pretty='%C(auto)%h: %s%+D%Creset%n%C(reverse)%C(dim)%aN @ %ad = %ar%Creset%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S' --grep
grepl = log --all --regexp-ignore-case --pretty='%C(auto)%h: %s%+D%Creset%n%C(reverse)%C(dim)%aN @ %ad = %ar%Creset%n%+b' --date=format:'%a %Y-%m-%d %H:%M:%S' --grep
grep-text = grep --break --context 1 --full-name --heading --ignore-case --line-number
grept = grep --break --context 1 --full-name --heading --ignore-case --line-number
# Push current branch to origin
push-to-origin = "!f(){ git push --set-upstream origin $(git current-branch) "$@"; }; f"
pso = "!f(){ git push --set-upstream origin $(git current-branch) "$@"; }; f"
prune-gone = "!git fetch --prune && git branch -vv | grep ': gone]' | awk '{print $1}'"
prune-delete = "!git fetch --prune && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d"
[clean]
requireforce = true
[color "branch"]
current = cyan dim bold reverse
local = green bold
remote = red bold
[color "decorate"]
HEAD = cyan dim bold reverse
branch = green bold
remoteBranch = red bold
stash = magenta dim bold reverse
tag = magenta bold
[color "diff"]
context = white
frag = blue dim bold reverse
meta = yellow dim bold reverse
new = green bold
old = red bold
whitespace = red dim bold reverse
[color "grep"]
context = white
filename = yellow dim bold reverse
function = white bold
linenumber = blue dim bold reverse
match = red bold
selected = white
separator = blue dim bold reverse
[color "interactive"]
error = red dim bold reverse
header = white
help = yellow bold
prompt = white dim bold reverse
[color "status"]
added = green bold
branch = cyan dim bold reverse
changed = yellow bold
header = white
localBranch = green bold
nobranch = red dim bold reverse
remoteBranch = red bold
unmerged = yellow dim bold reverse
untracked = red bold
[commit]
cleanup = strip
gpgSign = true
template = ~/.config/git/commit_msg_template.txt
verbose = true
[core]
editor = vim
excludesfile = ~/.config/git/ignore
pager = less --chop-long-lines --ignore-case --LONG-PROMPT --status-column --quit-if-one-screen
whitespace = -space-before-tab,tab-in-indent
[diff]
renames = true
submodule = log
[help]
autocorrect = 50
[init]
defaultBranch = main
[merge]
conflictstyle = diff3
ff = only
[pull]
ff = only
rebase = true
[push]
default = upstream
recursesubmodules = check
[rerere]
enabled = true
[url "https://bitbucket.org/"]
insteadOf = bb:
[url "https://github.com/"]
insteadOf = gh:
[url "https://gitlab.com/"]
insteadOf = gl:
[user]
name = Alexander Hess
email = alexander@webartifex.biz
signingKey = AB5C0E319D77350FBA6CF143344EA5AB10D868E0

49
.config/git/ignore Normal file
View file

@ -0,0 +1,49 @@
# 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~

View file

@ -0,0 +1,7 @@
# 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., `/`).

View file

@ -0,0 +1,53 @@
[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

View file

@ -0,0 +1,144 @@
# 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'

View file

@ -0,0 +1,5 @@
# 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.

View file

@ -0,0 +1,12 @@
#!/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)

View file

@ -0,0 +1,12 @@
#!/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)

View file

@ -0,0 +1,12 @@
#!/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)

View file

@ -0,0 +1,12 @@
#!/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)

View file

@ -0,0 +1,21 @@
#!/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)

View file

@ -0,0 +1,318 @@
# 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'

View file

@ -0,0 +1,199 @@
[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'

View file

@ -0,0 +1,298 @@
[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

View file

@ -0,0 +1,31 @@
[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 []

View file

@ -0,0 +1,263 @@
[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

16
.config/mackup/README.md Normal file
View file

@ -0,0 +1,16 @@
# 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.

View file

@ -0,0 +1,5 @@
[application]
name = Cisco's AnyConnect
[configuration_files]
.anyconnect

5
.config/mackup/gnupg.cfg Normal file
View file

@ -0,0 +1,5 @@
[application]
name = gnupg
[configuration_files]
.local/share/gnupg/trustdb.gpg

View file

@ -0,0 +1,14 @@
[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

35
.config/mackup/mackup.cfg Normal file
View file

@ -0,0 +1,35 @@
[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

View file

@ -0,0 +1,5 @@
[application]
name = Gnome Files a.k.a. Nautilus
[xdg_configuration_files]
gtk-3.0/bookmarks

View file

@ -0,0 +1,8 @@
[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

View file

@ -0,0 +1,5 @@
[application]
name = private SSH (config) files
[configuration_files]
.ssh/config

View file

@ -0,0 +1,12 @@
# 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`

View file

@ -0,0 +1,3 @@
{
"bookmarks" : [ ]
}

View file

View file

@ -0,0 +1,153 @@
<?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>

View file

@ -0,0 +1,859 @@
# 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"

35
.config/psql/psqlrc Normal file
View file

@ -0,0 +1,35 @@
-- psql executes the commands in this ~/.psqlrc creating output
-- (this flag hides that and is unset again at the bottom)
\set QUIET 1
-- Show verbose error messages
\set VERBOSITY verbose
-- Use normal "table" format by default and "expanded table" with lots of columns
\x auto
-- By default, NULLs show up as empty spaces, which looks like empty strings
\pset null 'NULL'
-- Ignore errors in interactive sessions but not when executing scripts
\set ON_ERROR_ROLLBACK interactive
-- Upper case SQL keywords
\set COMP_KEYWORD_CASE upper
-- Use the best text editor in the world
\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
-- Don't store the same SQL statement repeatedly
\set HISTCONTROL ignoredups
-- Make all queries display query times
\timing
-- Unset the flag set at the top of this file
\unset QUIET

View file

@ -0,0 +1,3 @@
[virtualenvs]
create = true
in-project = true

38
.config/python/pythonrc Normal file
View file

@ -0,0 +1,38 @@
# 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)

11
.config/shell/README.md Normal file
View file

@ -0,0 +1,11 @@
# Shell-related Configuration
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).

View file

@ -0,0 +1,7 @@
# 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.

View file

@ -0,0 +1,59 @@
# 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'

View file

@ -0,0 +1,77 @@
# 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'

View file

@ -0,0 +1,24 @@
# 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

View file

@ -0,0 +1,25 @@
# 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

49
.config/shell/init.sh Normal file
View file

@ -0,0 +1,49 @@
# 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

1
.config/shell/logout.sh Normal file
View file

@ -0,0 +1 @@
# This file is sourced by a login shell upon logout

View file

@ -0,0 +1,7 @@
# 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.

View file

@ -0,0 +1,66 @@
# 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"
}

View file

@ -0,0 +1,80 @@
# 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
}

View file

@ -0,0 +1,101 @@
# 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
}

View file

@ -0,0 +1,230 @@
# 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
}

View file

@ -0,0 +1,26 @@
# 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
}

8
.config/user-dirs.dirs Normal file
View file

@ -0,0 +1,8 @@
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"

View file

@ -0,0 +1,65 @@
" Set the search path to the folder of the current file and its sub-folders
setlocal path=.,**
" Exclude Python's compiled files from searches
setlocal wildignore=*/__pycache__/*,*.pyc
" TODO: This does not work, maybe because we spell out imports
" as project-local imports (e.g. from lalib.fields import base)?
" Include *.py files imported as modules when searching.
" Source: https://www.youtube.com/watch?v=Gs1VDYnS-Ac
set include=^\\s*\\(from\\\|import\\)\\s*\\zs\\(\\S\\+\\s\\{-}\\)*\\ze\\($\\\|\ as\\)
" 1) import foo.bar -> foo/bar.py
" 2) from foo import bar as var -> foo/bar.py or foo.py
function! PyInclude(fname)
let parts = split(a:fname, ' import ') " 1) [foo.bar] or 2) [foo, bar]
let left = parts[0] " 1) foo.bar or 2) foo
if len(parts) > 1
let right = parts[1] " only 2) bar
let joined = join([left, right], '.')
let fpath = substitute(joined, '\.', '/', 'g') . '.py'
let found = glob(fpath, 1)
if len(found)
return found
endif
endif
return substitute(left, '\.', '/', 'g') . '.py'
endfunction
setlocal includeexpr=PyInclude(v:fname)
setlocal define=^\\s*\\<\\(def\\|class\\)\\>
" Number of spaces used for each step of auto-indent
set shiftwidth=4
" Number of spaces a <Tab> counts for in the file
set tabstop=4
" Number of spaces a <Tab> counts for in editing mode
set softtabstop=4
" Change <Tab>s into spaces
set expandtab
" Copy indent from previous line when starting a new line
set autoindent
" Use indent according to the syntax of the open file
set smartindent
" Auto-wrap lines after 88 characters, which is PEP8's limit plus 10%,
" a more relaxed boundary which occasionally may be used
set textwidth=88
" Make column 80 red to indicate PEP8's maximum allowed line length
set colorcolumn=80
" Additionally, give every character beyond 80 columns a red background
highlight ColorColumn ctermbg=DarkRed
call matchadd('ColorColumn', '\%80v', 100)
match ErrorMsg '\%>80v.\+'
" Show line numbers by default for .py files
let g:show_numbers=1

View file

312
.config/vim/vimrc Normal file
View file

@ -0,0 +1,312 @@
" Good sources on vimrc files:
" - https://www.youtube.com/watch?v=Gs1VDYnS-Ac
" Use VIM improved mode
set nocompatible
" Set environment variables for convenient usage
let $RC="$XDG_CONFIG_HOME/vim/vimrc"
let $RTP=split(&runtimepath, ',')[0]
" Disable VIM's startup message
set shortmess+=I
" Number of remembered undo steps
set undolevels=1000
" Detect the file's type and load the corresponding plugin and indent files
filetype plugin indent on
" Enable syntax highlighting
syntax on
" Allow backspace to delete characters in insert mode
" beyond the start of the insertion and end of lines
set backspace=start,eol,indent
" Hide buffers instead of closing them, wich means we can have
" unwritten changes to a file and open a new one with :e,
" without having to write the changes first
set hidden
" Set to the folder of the current file and its sub-folders
" (this may need to be adapted for large project folders)
set path=.,**
" Store all vim-related working files in the ~/.local/state/vim folder
set viminfo+=n$XDG_STATE_HOME/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//
" To disable any of the temporary files, uncomment one of the following
" set nobackup
" set nowritebackup
" set noswapfile
" 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
" Do not wrap lines when showing text
set nowrap
" This avoids a problem of loosing data upon insertion in old VIMs
set wrapmargin=0
" Show spelling mistakes (in English) in italics
set spelllang=en_us,de_de
set spell
hi clear SpellBad
hi clear SpellCap
hi clear SpellRare
hi clear SpellLocal
hi SpellBad cterm=italic
" Show whitespace characters
set listchars=tab:»»,extends:›,precedes:‹,nbsp:·,trail:·
set list
" Highlight matching brackets
set showmatch
set matchpairs+=<:>
" Always show the status bar at the bottom
set laststatus=2
" Show current position in status bar
set ruler
set rulerformat=%=%l/%L\ %c\ (%P)
" Show commands in status bar
set showcmd
" If in non-normal mode, show the mode in the status bar
set showmode
" Show a dialog to save changes instead of an error message
set confirm
" Auto-clear messages from the status bar
autocmd CursorHold * :echo
" Better copy and paste behavior
set pastetoggle=<F2>
set clipboard=unnamed
" Make : and ; synonyms
nnoremap ; :
" Use \ and <space> as the <leader> keys and lower time to enter key sequences
let mapleader='\'
set timeoutlen=750
" Make <space> the <leader> in visual mode as well
nmap <space> \
vmap <space> \
" Q normally goes into Ex mode
nmap Q <Nop>
" Get sudo rights when writing a buffer with w!!
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
function ToggleMouse()
if g:mouse_enabled == 1
echo "Mouse OFF"
set mouse=
let g:mouse_enabled=0
else
echo "Mouse ON"
set mouse=a
let g:mouse_enabled=1
endif
endfunction
noremap <silent><leader>m :call ToggleMouse()<cr>
" Enable toggling between
" - showing and hiding line numbers (<leader>l)
" - absolute and relative numbers (<leader>a) in normal mode
" (default: relative line numbering)
let g:show_numbers=0
let g:show_absolute_numbers=0
function! ShowLineNumbers()
if g:show_numbers == 1
set number
if g:show_absolute_numbers
set norelativenumber
else
set relativenumber
endif
else
set nonumber
set norelativenumber
endif
endfunction
function! ToggleLineNumbers()
if g:show_numbers == 1
let g:show_numbers=0
else
let g:show_numbers=1
endif
call ShowLineNumbers()
endfunction
function! ToggleAbsoluteAndRelativeLineNumbers()
if g:show_absolute_numbers == 1
let g:show_absolute_numbers=0
else
let g:show_absolute_numbers=1
endif
call ShowLineNumbers()
endfunction
" Auto-switch between absolute and relative numbering when switching modes
" (insert mode always shows absolute numbers when numbers are shown)
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * call ShowLineNumbers()
autocmd BufLeave,FocusLost,InsertEnter * if g:show_numbers == 1 | set number | set norelativenumber | endif
augroup END
" Key bindings
nnoremap <silent><leader>l :call ToggleLineNumbers()<cr>
nnoremap <silent><leader>a :call ToggleAbsoluteAndRelativeLineNumbers()<cr>
" Show all possible matches above command-line when tab completing
set wildmenu
set wildmode=longest:full,full
" Highlight search results
set hlsearch
" Shortcut to remove current highlighting
nnoremap <silent><leader>h :nohlsearch<cr>
" Move cursor to result while typing immediately
set incsearch
" Ignore case when searching
set ignorecase
" Upper case search term => case sensitive search
set smartcase
" Highlight the next match in red for 0.25 seconds
function! HighlightNext()
let [bufnum, lnum, col, off] = getpos('.')
let matchlen = strlen(matchstr(strpart(getline('.'),col-1),@/))
let target_pat = '\c\%#\%('.@/.'\)'
let ring = matchadd('ErrorMsg', target_pat, 101)
redraw
exec 'sleep ' . float2nr(250) . 'm'
call matchdelete(ring)
redraw
endfunction
nnoremap <silent>n n:call HighlightNext()<cr>
nnoremap <silent>N N:call HighlightNext()<cr>
" Make <leader>w safe the buffer in normal mode
" and <c-z> save the buffer in all modes
" (the latter disables making VIM a background job;
" <c-z> is useful to have as <leader>w does not work in INSERT mode)
nnoremap <leader>w :update<cr>
nnoremap <c-z> :update<cr>
vnoremap <c-z> <c-c>:update<cr>
inoremap <c-z> <c-o>:update<cr>
" <leader>q quits VIM
nnoremap <leader>q :quit<cr>
" Easier switching between tabs
noremap <leader>, <esc>:tabprevious<cr>
noremap <leader>. <esc>:tabnext<cr>
" Arrow keys and <c-h/j/k/l> either (un)indent lines or move them up or down
" (same for blocks of lines in visual mode)
nnoremap <left> <<
nnoremap <right> >>
nnoremap <silent><up> :m-2<cr>
nnoremap <silent><down> :m+<cr>
nmap <c-h> <left>
nmap <c-j> <down>
nmap <c-k> <up>
nmap <c-l> <right>
vnoremap <left> <gv
vnoremap <right> >gv
vnoremap <up> :m'<-2<cr>gv=gv
vnoremap <down> :m'>+1<cr>gv=gv
vmap <c-h> <left>
vmap <c-j> <down>
vmap <c-k> <up>
vmap <c-l> <right>
" Make <tab> (un)indent lines
nnoremap <tab> >>
nnoremap <s-tab> <<
inoremap <tab> <esc>>>
inoremap <s-tab> <esc><<
vnoremap <tab> >gv
vnoremap <s-tab> <gv
" Make Y yank the rest of a line, just like C or D work
noremap Y y$
" Alphabetically sort a selection of lines
vnoremap <leader>s :sort<cr>
" Switch two words, just like xp switches two characters
noremap <leader>xp dwElp
" Auto-reload a file that was changed by some other process
" if the buffer has not yet been changed in the meantime
set autoread
augroup checktime
autocmd!
autocmd BufEnter * silent! checktime
autocmd CursorHold * silent! checktime
autocmd CursorHoldI * silent! checktime
autocmd CursorMoved * silent! checktime
autocmd CursorMovedI * silent! checktime
augroup END
" Auto-reload ~/.vim/vimrc
augroup vimrc
autocmd! BufWritePost $RC source % | redraw
augroup END
" Key binding to reload ~/.vim/vimrc manually
nnoremap <silent><leader>rc :so $RC<cr>

1622
.config/zsh/.p10k.zsh Normal file

File diff suppressed because it is too large Load diff

3
.config/zsh/.zlogout Normal file
View file

@ -0,0 +1,3 @@
# Executed by zsh when a login shell exits
source "$HOME/.config/shell/logout.sh"

5
.config/zsh/.zprofile Normal file
View file

@ -0,0 +1,5 @@
# 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"

40
.config/zsh/.zshenv Normal file
View file

@ -0,0 +1,40 @@
# 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"

190
.config/zsh/.zshrc Normal file
View file

@ -0,0 +1,190 @@
# 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

4
.hidden Normal file
View file

@ -0,0 +1,4 @@
LICENSE.txt
R
README.md
Screenshots

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

112
.local/share/dotfiles/setup.sh Executable file
View file

@ -0,0 +1,112 @@
# 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

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

87
.profile Normal file
View file

@ -0,0 +1,87 @@
# Executed by a login shell (e.g., bash, sh, or zsh) during start-up
# 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
if [ -d "$1" ] ; then
case :$PATH: in
*:$1:*) ;;
*) PATH=$1:$PATH ;;
esac
fi
}
prepend-to-path "$HOME/bin"
prepend-to-path "$HOME/.local/bin"
prepend-to-path "$PYENV_ROOT/bin"
# Shell-specific stuff
# zsh-specific stuff is automatically sourced from
# $XDG_CONFIG_HOME/zsh/.zshenv, $XDG_CONFIG_HOME/zsh/.zprofile,
# $XDG_CONFIG_HOME/zsh/.zlogin, and $XDG_CONFIG_HOME/.zshrc
# Source ~/.bashrc if we are running inside a bash shell
# because it is NOT automatically sourced by bash
if [ -n "$BASH_VERSION" ]; then
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
fi
# Source ~/.profile_local, which holds machine-specific ENV variables
if [ -f "$HOME/.profile_local" ]; then
source "$HOME/.profile_local"
fi

1
.selected_editor Normal file
View file

@ -0,0 +1 @@
SELECTED_EDITOR="/usr/bin/vim"

8
.ssh/authorized_keys Normal file
View file

@ -0,0 +1,8 @@
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)

View file

@ -1,3 +1,51 @@
# Dotfiles
This repository contains useful (config) files that I use on my machines.
## Initialization
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
```
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.
**Note**: Log out and in again so that `bash` and `zsh` run as *login* shells.
Otherwise, `~/.profile` is probably *not* sourced.
**Important**: Don't forget to back up your current dotfiles!
### Python Development Environments
The develop environments for Python are managed via [`pyenv`](https://github.com/pyenv/pyenv).
To set them up, run:
```bash
create-or-update-python-envs
```
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/)).
Use `pyenv local ...` to specify a particular Python binary for a project.
### Private Dotfiles
After setting up the Python environments (i.e., the "utils"),
running `mackup restore` symlinks further dotfiles into `~/`.
This only works for this project's maintainer.