Backed up pre-existing configs to local branch
This commit is contained in:
parent
8cd9134e10
commit
873bfc08be
39 changed files with 15 additions and 781 deletions
|
@ -1,28 +0,0 @@
|
||||||
# Basic safe boolean evaluation. See this Gist for details:
|
|
||||||
# https://gist.github.com/gliech/184dc7566821442202f21dfe15e2b7ff
|
|
||||||
function truthy {
|
|
||||||
if [[ "${1,,}" == @(y|yes|on|true|1) ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function falsy {
|
|
||||||
if [[ "${1,,}" == @(n|no|off|false|0) ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function true_false_default {
|
|
||||||
case "${1,,}" in
|
|
||||||
y | yes | on | true | 1)
|
|
||||||
return 0 ;;
|
|
||||||
n | no | off | false | 0)
|
|
||||||
return 1 ;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
eval "$@"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
# .bash_profile
|
|
||||||
|
|
||||||
# User specific environment and startup programs
|
|
||||||
PATH=$PATH:$HOME/.local/bin:$HOME/bin
|
|
||||||
export PATH
|
|
||||||
|
|
||||||
# Export environment variables found in ~/.environment.d/ . Adding files in a
|
|
||||||
# directory makes it easier to supply environment variables that are either
|
|
||||||
# specific to a machine or can not be included in the dotfiles repository for
|
|
||||||
# security or privacy reasons.
|
|
||||||
set -a
|
|
||||||
for file in ~/.environment.d/*.env; do
|
|
||||||
. "$file"
|
|
||||||
done
|
|
||||||
set +a
|
|
||||||
|
|
||||||
unset -v file
|
|
||||||
|
|
||||||
# Source the .bashrc if the file descriptor for stdin is opened. This is a very
|
|
||||||
# simple test to determine if the .bash_profile was sourced from VT or SSH-login
|
|
||||||
# where the .bashrc has to be sourced to provide a similar environment to a
|
|
||||||
# terminal emulator. Found here:
|
|
||||||
# https://eklitzke.org/effectively-using-bash-profile
|
|
||||||
# I had to move the actual test '-t 0' over to the bashrc. More information as
|
|
||||||
# to why can be found there.
|
|
||||||
if [[ -r ~/.bashrc ]]; then
|
|
||||||
. ~/.bashrc
|
|
||||||
fi
|
|
||||||
|
|
51
.bashrc
51
.bashrc
|
@ -1,51 +0,0 @@
|
||||||
# .bashrc
|
|
||||||
# Don't load the bashrc if the terminal is not interactive. More information
|
|
||||||
# on how this test works can be found at the end of the bash_profile. I had to
|
|
||||||
# move this test here, because in remote shells the bashrc is sourced directly,
|
|
||||||
# wether the shell is really interactive or not. A brief explanation of this
|
|
||||||
# behaviour can be found here:
|
|
||||||
# https://unix.stackexchange.com/questions/257571
|
|
||||||
if ! [[ -t 0 ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Source global definitions
|
|
||||||
if [[ -r /etc/bashrc ]]; then
|
|
||||||
. /etc/bashrc
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Bash 4 or bust
|
|
||||||
if (( BASH_VERSINFO[0] < 4 )); then
|
|
||||||
echo "Please get a newer version of Bash." >&2
|
|
||||||
echo "Your bashrc won't work otherwise." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Determine if the rest of the configuration should be loaded. DOTFILES_ACTIVE
|
|
||||||
# is a environment variable that can be set in ~/.environment.d/dotfiles.env
|
|
||||||
if [[ "${DOTFILES_ACTIVE,,}" == @(y|yes|on|true|1) ]]; then
|
|
||||||
|
|
||||||
# Load a function that allows us to import other function definitions from
|
|
||||||
# the BASH_FUNC_PATH without providing their exact location and export it
|
|
||||||
. "$DOTFILES_DIR/bash_functions/autosource.sh"
|
|
||||||
export -f autosource
|
|
||||||
|
|
||||||
# Load utilty functions that may be used by other configurations
|
|
||||||
autosource bool_eval
|
|
||||||
autosource dot_utility
|
|
||||||
|
|
||||||
# Load the rest of the bash configs in ~/.basrc.d
|
|
||||||
for file in ~/.bashrc.d/*.sh; do
|
|
||||||
. "$file"
|
|
||||||
done
|
|
||||||
|
|
||||||
unset -v file
|
|
||||||
|
|
||||||
# If the DOTFILES_ACTIVE is not set at all, assume that the dotfiles repo was
|
|
||||||
# cloned very recently and print a friendly reminder.
|
|
||||||
elif [[ ! -v DOTFILES_ACTIVE ]]; then
|
|
||||||
echo "Dotfiles environment not found." >&2
|
|
||||||
echo "You should probably reload your login session before proceeding." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
# If aws-azure-login is not installed do nothing
|
|
||||||
if ! command -v aws-azure-login >/dev/null 2>&1; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# In WSL the no-sandbox parameter is mandatory for aws-azure-login to function
|
|
||||||
# correctly
|
|
||||||
if truthy $DOTFILES_WSL; then
|
|
||||||
alias aws-azure-login="aws-azure-login --no-sandbox"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make it so I just have to type a command and the (optionally) a profile
|
|
||||||
function aws-auth {
|
|
||||||
aws-azure-login --no-prompt ${1:+--profile $1}
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
# Save other operating systems some work
|
|
||||||
if [[ $OSTYPE != darwin* ]] || ! command -v brew >/dev/null 2>&1; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
BREW_DIR=$(brew --prefix)
|
|
||||||
|
|
||||||
# for brew formula bash-completion@2
|
|
||||||
if [[ -r ${BREW_DIR}/etc/profile.d/bash_completion.sh ]]; then
|
|
||||||
export BASH_COMPLETION_COMPAT_DIR=${BREW_DIR}/etc/bash_completion.d
|
|
||||||
. ${BREW_DIR}/etc/profile.d/bash_completion.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# for brew formula python
|
|
||||||
if [[ -d ${BREW_DIR}/opt/python/libexec/bin ]]; then
|
|
||||||
export PATH=${BREW_DIR}/opt/python/libexec/bin:$PATH
|
|
||||||
fi
|
|
|
@ -1 +0,0 @@
|
||||||
alias diff="diff --color=auto --unified"
|
|
|
@ -1,39 +0,0 @@
|
||||||
# Alias dotfiles to the custom git command required for the functioning of the
|
|
||||||
# dotfiles utility
|
|
||||||
alias dotfiles="git \
|
|
||||||
-c include.path=$DOTFILES_DIR/dotgit_config \
|
|
||||||
--git-dir=$DOTFILES_GITDIR \
|
|
||||||
--work-tree=$HOME"
|
|
||||||
|
|
||||||
# Shorten the dotfiles command to dot if possible
|
|
||||||
if ! command -v dot >/dev/null 2>&1
|
|
||||||
then
|
|
||||||
alias dot="dotfiles"
|
|
||||||
dot_aliased="yes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add bash completion to the aliases if possible
|
|
||||||
possible_locations=(
|
|
||||||
"/usr/share/doc/git/contrib/completion/git-completion.bash"
|
|
||||||
"/usr/share/git/completion/git-completion.bash"
|
|
||||||
"/usr/share/bash-completion/completions/git"
|
|
||||||
"/usr/local/etc/bash_completion.d/git-completion.bash"
|
|
||||||
"/opt/homebrew/etc/bash_completion.d/git-completion.bash"
|
|
||||||
)
|
|
||||||
|
|
||||||
for completion_file in "${possible_locations[@]}"
|
|
||||||
do
|
|
||||||
if [[ -r "$completion_file" ]]
|
|
||||||
then
|
|
||||||
. $completion_file
|
|
||||||
__git_complete dotfiles __git_main
|
|
||||||
if [[ $dot_aliased == yes ]]
|
|
||||||
then
|
|
||||||
__git_complete dot __git_main
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
unset -v dot_aliased possible_locations completion_file
|
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
# This is the first-run installation of the dotfiles utility. Although I have
|
|
||||||
# been trying to avoid the need of executing additional code to put my config
|
|
||||||
# files into place, that is not always possible or practical. The following
|
|
||||||
# script is my attempt to make this as painless as possible.
|
|
||||||
|
|
||||||
# Get the checksum of this very file.
|
|
||||||
read -r checksum _ <<< $(sha256sum "${BASH_SOURCE[0]}")
|
|
||||||
|
|
||||||
# Compare the computed checksum to a cached version from the environment. This
|
|
||||||
# is done instead of a boolean token, so that the installation will run again
|
|
||||||
# automatically, should this file change after an update.
|
|
||||||
if [[ $checksum != $DOTFILES_INSTALL_CHECKSUM ]]; then
|
|
||||||
|
|
||||||
# If the checksum differed, source the file that contains the cached checksum
|
|
||||||
# and compare again to make sure that an update has not occured and already
|
|
||||||
# been processed since the environment has last been sourced at the beginning
|
|
||||||
# of the login session. Testing twice is a trade-off because most of the time
|
|
||||||
# the first test will fail and no file has to be sourced.
|
|
||||||
if [[ -r ~/.environment.d/dotfiles_install.env ]]; then
|
|
||||||
. ~/.environment.d/dotfiles_install.env
|
|
||||||
fi
|
|
||||||
if [[ $checksum != $DOTFILES_INSTALL_CHECKSUM ]]; then
|
|
||||||
# Installation starts here. Sections should still be designed in a way that
|
|
||||||
# they won't run twice if possible.
|
|
||||||
############################################################################
|
|
||||||
echo "Dotfiles: Starting automatic installation routines"
|
|
||||||
dotfiles_install_error="no"
|
|
||||||
|
|
||||||
|
|
||||||
# vim-plug
|
|
||||||
if ! [[ -f ~/.local/share/nvim/site/autoload/plug.vim ]]; then
|
|
||||||
echo "Dotfiles: Downloading vim-plug..."
|
|
||||||
if curl \
|
|
||||||
--fail \
|
|
||||||
--location \
|
|
||||||
--retry 5 \
|
|
||||||
--retry-delay 1 \
|
|
||||||
--create-dirs \
|
|
||||||
--progress-bar \
|
|
||||||
--output ~/.local/share/nvim/site/autoload/plug.vim \
|
|
||||||
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
||||||
then
|
|
||||||
echo "Dotfiles: Done"
|
|
||||||
else
|
|
||||||
echo "Dotfiles: Error downloading vim-plug"
|
|
||||||
dotfiles_install_error="yes"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
############################################################################
|
|
||||||
# Installation ends here. If we have come this far the installation should
|
|
||||||
# have been successful. Write the current checksum of this file to
|
|
||||||
# dotfiles_install.env and export the variable for good measure.
|
|
||||||
if [[ $dotfiles_install_error == "no" ]]; then
|
|
||||||
echo "Dotfiles: Automatic installation successful. Setting new checksum..."
|
|
||||||
echo "DOTFILES_INSTALL_CHECKSUM=$checksum" > ~/.environment.d/dotfiles_install.env
|
|
||||||
export DOTFILES_INSTALL_CHECKSUM=$checksum
|
|
||||||
else
|
|
||||||
echo "Dotfiles: Errors were encountered during automatic installation"
|
|
||||||
echo "Dotfiles: Installation can be re-run by opening a new shell"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
|
@ -1,12 +0,0 @@
|
||||||
# https://twitter.com/liamosaur/status/506975850596536320
|
|
||||||
function fuck {
|
|
||||||
local nth_last=${1:-1}
|
|
||||||
if [[ "$nth_last" =~ ^[0-9]+$ ]]; then
|
|
||||||
sudo $(fc -ln -$nth_last -$nth_last)
|
|
||||||
else
|
|
||||||
echo "Usage: fuck [offset]"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
alias please='fuck'
|
|
|
@ -1,12 +0,0 @@
|
||||||
# On BSD-based operating systems the GNU coreutils version of ls may be
|
|
||||||
# installed as gls. I prefer a consistent ls to one that actually integrates
|
|
||||||
# well with MacOS, so here we are.
|
|
||||||
if command -v gls >/dev/null 2>&1; then
|
|
||||||
alias ls="gls --color=auto"
|
|
||||||
else
|
|
||||||
alias ls="ls --color=auto"
|
|
||||||
fi
|
|
||||||
|
|
||||||
alias ll="ls --human-readable --color=auto -l"
|
|
||||||
alias la="ls --human-readable --all --color=auto -l"
|
|
||||||
alias lA="ls --human-readable --almost-all --color=auto -l"
|
|
|
@ -1,6 +0,0 @@
|
||||||
# Use neovim instead of vim if it is present
|
|
||||||
|
|
||||||
if command -v nvim >/dev/null 2>&1; then
|
|
||||||
alias vim="nvim"
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
if ! command -v open >/dev/null 2>&1
|
|
||||||
then
|
|
||||||
function open {
|
|
||||||
gio open ${@:-.}
|
|
||||||
}
|
|
||||||
fi
|
|
|
@ -1,28 +0,0 @@
|
||||||
[color]
|
|
||||||
diff = auto
|
|
||||||
status = auto
|
|
||||||
branch = auto
|
|
||||||
interactive = auto
|
|
||||||
ui = true
|
|
||||||
pager = true
|
|
||||||
submodule = true
|
|
||||||
fetch = true
|
|
||||||
pull = true
|
|
||||||
[push]
|
|
||||||
default = simple
|
|
||||||
[pull]
|
|
||||||
ff = only
|
|
||||||
[core]
|
|
||||||
excludesfile = ~/.gitignore
|
|
||||||
autocrlf = input
|
|
||||||
[status]
|
|
||||||
submoduleSummary = true
|
|
||||||
[pager]
|
|
||||||
log = less --chop-long-lines --shift 3
|
|
||||||
[alias]
|
|
||||||
graph = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
|
|
||||||
chronograph = graph --date-order
|
|
||||||
ff = merge --ff-only
|
|
||||||
amend = commit --amend --reuse-message=HEAD
|
|
||||||
[init]
|
|
||||||
defaultBranch = main
|
|
|
@ -1,190 +0,0 @@
|
||||||
# This file has been auto-generated by i3-config-wizard(1).
|
|
||||||
# It will not be overwritten, so edit it as you like.
|
|
||||||
#
|
|
||||||
# Should you change your keyboard layout some time, delete
|
|
||||||
# this file and re-run i3-config-wizard(1).
|
|
||||||
#
|
|
||||||
|
|
||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
|
|
||||||
# Font for window titles. Will also be used by the bar unless a different font
|
|
||||||
# is used in the bar {} block below.
|
|
||||||
font pango:monospace 8
|
|
||||||
|
|
||||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
|
||||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
|
||||||
#font pango:DejaVu Sans Mono 8
|
|
||||||
|
|
||||||
# Start XDG autostart .desktop files using dex. See also
|
|
||||||
# https://wiki.archlinux.org/index.php/XDG_Autostart
|
|
||||||
exec --no-startup-id dex --autostart --environment i3
|
|
||||||
|
|
||||||
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
|
||||||
# they are included here as an example. Modify as you see fit.
|
|
||||||
|
|
||||||
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
|
||||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
|
||||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
|
|
||||||
|
|
||||||
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
|
||||||
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
|
||||||
exec --no-startup-id nm-applet
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Return exec i3-sensible-terminal
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
|
|
||||||
# start dmenu (a program launcher)
|
|
||||||
bindsym $mod+space exec --no-startup-id dmenu_run
|
|
||||||
# A more modern dmenu replacement is rofi:
|
|
||||||
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
|
|
||||||
# There also is i3-dmenu-desktop which only displays applications shipping a
|
|
||||||
# .desktop file. It is a wrapper around dmenu, so you need that installed.
|
|
||||||
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
|
|
||||||
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+j focus left
|
|
||||||
bindsym $mod+k focus down
|
|
||||||
bindsym $mod+l focus up
|
|
||||||
bindsym $mod+semicolon focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+j move left
|
|
||||||
bindsym $mod+Shift+k move down
|
|
||||||
bindsym $mod+Shift+l move up
|
|
||||||
bindsym $mod+Shift+semicolon move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal orientation
|
|
||||||
bindsym $mod+h split h
|
|
||||||
|
|
||||||
# split in vertical orientation
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
bindsym $mod+s layout stacking
|
|
||||||
bindsym $mod+w layout tabbed
|
|
||||||
bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+d floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+d focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#bindsym $mod+d focus child
|
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
|
||||||
|
|
||||||
# reload the configuration file
|
|
||||||
bindsym $mod+Shift+c reload
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r restart
|
|
||||||
# exit i3 (logs you out of your X session)
|
|
||||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# These bindings trigger as soon as you enter the resize mode
|
|
||||||
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym j resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym k resize grow height 10 px or 10 ppt
|
|
||||||
bindsym l resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
for_window [class="steam_app_40800" instance="steam_app_40800"] floating enable
|
|
||||||
|
|
||||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
|
||||||
# finds out, if available)
|
|
||||||
bar {
|
|
||||||
position top
|
|
||||||
status_command i3status
|
|
||||||
tray_output primary
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
prefix=${HOME}/.local
|
|
9
.config/nvim/init.vim
Normal file → Executable file
9
.config/nvim/init.vim
Normal file → Executable file
|
@ -1,18 +1,23 @@
|
||||||
call plug#begin()
|
call plug#begin()
|
||||||
" Display if updates for plugins are available
|
|
||||||
Plug 'semanser/vim-outdated-plugins'
|
Plug 'semanser/vim-outdated-plugins'
|
||||||
|
|
||||||
" Show trailing whitespaces (this could also easily be achieved by settings,
|
" Show trailing whitespaces (this could also easily be achieved by settings,
|
||||||
" but the plugin is very neat)
|
" but the plugin is very neat)
|
||||||
Plug 'ntpeters/vim-better-whitespace'
|
Plug 'ntpeters/vim-better-whitespace'
|
||||||
Plug 'vim-airline/vim-airline'
|
Plug 'vim-airline/vim-airline'
|
||||||
Plug 'w0rp/ale'
|
Plug 'w0rp/ale'
|
||||||
Plug 'sirtaj/vim-openscad'
|
|
||||||
Plug 'AndrewRadev/bufferize.vim'
|
Plug 'AndrewRadev/bufferize.vim'
|
||||||
Plug 'airblade/vim-gitgutter'
|
Plug 'airblade/vim-gitgutter'
|
||||||
Plug 'hashivim/vim-terraform'
|
Plug 'hashivim/vim-terraform'
|
||||||
Plug 'tpope/vim-fugitive'
|
Plug 'tpope/vim-fugitive'
|
||||||
Plug 'tpope/vim-rhubarb'
|
Plug 'tpope/vim-rhubarb'
|
||||||
|
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||||
|
|
||||||
|
|
||||||
|
"Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
||||||
call plug#end()
|
call plug#end()
|
||||||
|
"lua require'nvim-treesitter.configs'.setup{highlight={enable=true}}
|
||||||
|
|
||||||
" Explicitely set legacy colorscheme to overwrite the new neovim default
|
" Explicitely set legacy colorscheme to overwrite the new neovim default
|
||||||
" colorscheme until I find the time to configure colors properly
|
" colorscheme until I find the time to configure colors properly
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
function autosource {
|
|
||||||
local bash_function_dirs bash_function_dir
|
|
||||||
|
|
||||||
# Test if 1 argument was given
|
|
||||||
if (( $# == 0 )); then
|
|
||||||
echo "autosource: basename of a file in BASH_FUNC_PATH required"
|
|
||||||
echo "autosource: usage: autosource basename [arguments]"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Split the BASH_FUNC_PATH into an array of directory names
|
|
||||||
IFS=: read -ra bash_function_dirs <<< "${BASH_FUNC_PATH}"
|
|
||||||
|
|
||||||
# Look for a .sh file with the basename given as first argument in each direc-
|
|
||||||
# tory in each directory in turn
|
|
||||||
for bash_function_dir in "${bash_function_dirs[@]}"; do
|
|
||||||
if [[ -r "${bash_function_dir}/${1}.sh" ]]; then
|
|
||||||
|
|
||||||
# If we find a matching file, source it and skip the rest of this function
|
|
||||||
. "${bash_function_dir}/${1}.sh" ${@:2}
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# If the loop completes no matching file is in BASH_FUNC_PATH
|
|
||||||
echo "autosource: no ${1} in (${BASH_FUNC_PATH})"
|
|
||||||
return 1
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
function dot_msg {
|
|
||||||
echo "$@"
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
[status]
|
|
||||||
showUntrackedFiles = no
|
|
|
@ -1,5 +0,0 @@
|
||||||
AWS_DEFAULT_REGION=eu-central-1
|
|
||||||
AWS_DEFAULT_OUTPUT=yaml
|
|
||||||
|
|
||||||
AZURE_APP_ID_URI=https://signin.aws.amazon.com/saml
|
|
||||||
AZURE_DEFAULT_DURATION_HOURS=12
|
|
|
@ -1,2 +0,0 @@
|
||||||
AZURE_TENANT_ID=
|
|
||||||
AZURE_DEFAULT_USERNAME=
|
|
|
@ -1,4 +0,0 @@
|
||||||
DOTFILES_ACTIVE=true
|
|
||||||
DOTFILES_DIR="${HOME}/.dotfiles"
|
|
||||||
DOTFILES_GITDIR="${HOME}/.dotgit"
|
|
||||||
BASH_FUNC_PATH="${HOME}/.bash_functions:${DOTFILES_DIR}/bash_functions"
|
|
|
@ -1,7 +0,0 @@
|
||||||
# Fixes scrolling bug for G502 mice, where the first scroll step after a
|
|
||||||
# direction change is not registered sometimes. Also enables gestures and
|
|
||||||
# pixel-perfect trackpad scrolling apperantly:
|
|
||||||
# https://wiki.archlinux.org/title/Firefox#Touchscreen_gestures_and_pixel-perfect_trackpad_scrolling
|
|
||||||
if [ "$XDG_SESSION_TYPE" == "x11" ]; then
|
|
||||||
MOZ_USE_XINPUT2=1
|
|
||||||
fi
|
|
|
@ -1,5 +0,0 @@
|
||||||
GIT_AUTHOR_NAME=""
|
|
||||||
GIT_AUTHOR_EMAIL=""
|
|
||||||
GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME
|
|
||||||
GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
HISTSIZE=-1
|
|
||||||
HISTFILESIZE=-1
|
|
|
@ -1,6 +0,0 @@
|
||||||
# Set neovim as default editor if it is installed
|
|
||||||
|
|
||||||
if command -v nvim >/dev/null 2>&1; then
|
|
||||||
EDITOR=nvim
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
NPM_CONFIG_USERCONFIG=$HOME/.config/npm/npmrc
|
|
|
@ -1,4 +0,0 @@
|
||||||
if [[ -e ${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user/default.target.wants/ssh-agent.service ]]
|
|
||||||
then
|
|
||||||
SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket
|
|
||||||
fi
|
|
|
@ -1,6 +0,0 @@
|
||||||
if [[ $OSTYPE == linux-gnu && $(< /proc/sys/kernel/osrelease) == *Microsoft ]]
|
|
||||||
then
|
|
||||||
DOTFILES_WSL=true
|
|
||||||
else
|
|
||||||
DOTFILES_WSL=false
|
|
||||||
fi
|
|
47
.github/README.md
vendored
47
.github/README.md
vendored
|
@ -1,47 +0,0 @@
|
||||||
# Gliech Dotfiles
|
|
||||||
|
|
||||||
## Replication
|
|
||||||
```bash
|
|
||||||
git clone -n --config core.bare=true --separate-git-dir=$HOME/.dotgit git@github.com:gliech/dotfiles.git $(mktemp -d)
|
|
||||||
git --work-tree=$HOME --git-dir=$HOME/.dotgit reset HEAD
|
|
||||||
git --work-tree=$HOME --git-dir=$HOME/.dotgit checkout -b $HOSTNAME
|
|
||||||
git --work-tree=$HOME --git-dir=$HOME/.dotgit -c user.name="$USER" -c user.email="${USER}@${HOSTNAME}" commit -am "Backed up pre-existing configs to local branch"
|
|
||||||
git --work-tree=$HOME --git-dir=$HOME/.dotgit checkout master
|
|
||||||
```
|
|
||||||
|
|
||||||
## Untracked Configurations (TODO)
|
|
||||||
- Firefox profile
|
|
||||||
- Addons (uBlockOrigin, PrivacyBadger)
|
|
||||||
- about:config keys (Turn off Pocket)
|
|
||||||
- Gnome3 integration (https://github.com/kurogetsusai/firefox-gnome-theme)
|
|
||||||
- userChrome.css
|
|
||||||
- control profiles.ini
|
|
||||||
- Gnome Extensions
|
|
||||||
- AWS EC2 SSH helper
|
|
||||||
- Battery Status
|
|
||||||
- Disable workspace switcher popup
|
|
||||||
- Gsconnect (Warning für die ganzen optionalen Pakete, die das braucht)
|
|
||||||
- Launch new instance
|
|
||||||
- No topleft hot corner
|
|
||||||
- Status area horizonzal spacing
|
|
||||||
- Vitals
|
|
||||||
|
|
||||||
## Missing Features (TODO)
|
|
||||||
- Vim relative line numbering
|
|
||||||
- unset all variables
|
|
||||||
- Initial Setup
|
|
||||||
- do the eye candy messaging stuff
|
|
||||||
- restructure setup
|
|
||||||
- add proper status messages to vim-plug install
|
|
||||||
- install vim plugins
|
|
||||||
- missing executables warnings
|
|
||||||
- environment templates? (git.env!)
|
|
||||||
- fix the umask
|
|
||||||
- Vim put the Yaml indent Stuff in a proper filetype detection script (ftplugin?)
|
|
||||||
- Vim also add cfn filetype for cfn-lint
|
|
||||||
- enable user systemd units during install (for example the sysd ssh-agent)
|
|
||||||
|
|
||||||
## Echos to be replaced by msg()
|
|
||||||
- fuck error msg
|
|
||||||
- initial setup
|
|
||||||
|
|
|
@ -1,103 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
"""
|
|
||||||
Parse the HTML of https://signin.aws.amazon.com/saml to extract all assumable
|
|
||||||
roles for use in .aws/config
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
aws-config-gen [--print-default-profile] [--default-role=<name>]
|
|
||||||
[--region=<name>] [--suffix=<name>] <file>
|
|
||||||
aws-config-gen -h | --help
|
|
||||||
aws-config-gen --version
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
file Downloaded HTML File of the AWS SAML login page
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-d, --print-default-profile Begin output with an empty [default] profile.
|
|
||||||
--default-role=<name> If more than one role can be assumed in the
|
|
||||||
same account, this option determines which one
|
|
||||||
will get the shorthand profile name without an
|
|
||||||
additional suffix. [default: developer-admin]
|
|
||||||
-r, --region=<name> Add the specified aws region to each profile's
|
|
||||||
properties.
|
|
||||||
-s, --suffix=<name> Append a suffix to each profile name.
|
|
||||||
--version Show version info.
|
|
||||||
-h --help Show this help screen.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
aws-config-gen -d aws-signin.html > ~/.aws/config
|
|
||||||
aws-config-gen -r eu-central-1 -s -fra aws-signin.html >> ~/.aws/config
|
|
||||||
"""
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import re
|
|
||||||
|
|
||||||
from docopt import docopt
|
|
||||||
from bs4 import BeautifulSoup
|
|
||||||
from pathlib import Path
|
|
||||||
from configparser import ConfigParser
|
|
||||||
from itertools import starmap, chain
|
|
||||||
from functools import partial
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_account_roles (soup):
|
|
||||||
for saml_account in soup.fieldset(class_='saml-account', recursive=False):
|
|
||||||
account_title = saml_account.find(class_='saml-account-name').string
|
|
||||||
account_alias = account_title.split()[1]
|
|
||||||
account_roles = map(get_saml_role_arn, saml_account(class_='saml-role'))
|
|
||||||
yield account_alias, list(account_roles)
|
|
||||||
|
|
||||||
def get_saml_role_arn (saml_role_tag):
|
|
||||||
saml_radio_tag = saml_role_tag.find(class_='saml-radio')
|
|
||||||
saml_role_arn = saml_radio_tag['value']
|
|
||||||
return saml_role_arn
|
|
||||||
|
|
||||||
def seperate_account_roles (alias, roles, role_type_pattern):
|
|
||||||
if len(roles) == 1:
|
|
||||||
yield alias, roles[0]
|
|
||||||
else:
|
|
||||||
for role in roles:
|
|
||||||
role_type = role_type_pattern.fullmatch(role).group('type')
|
|
||||||
role_alias = f'{alias}{"-" if role_type else ""}{role_type or ""}'
|
|
||||||
yield role_alias, role
|
|
||||||
|
|
||||||
def assemble_profile(name, role_arn, suffix=None, region=None):
|
|
||||||
section = f'profile {name}{suffix or ""}'
|
|
||||||
properties = {'azure_default_role_arn': role_arn}
|
|
||||||
if region is not None:
|
|
||||||
properties['region'] = region
|
|
||||||
return section, properties
|
|
||||||
|
|
||||||
def print_config(profiles, print_default=False):
|
|
||||||
config = ConfigParser()
|
|
||||||
if print_default:
|
|
||||||
config.add_section('default')
|
|
||||||
config.read_dict(dict(profiles))
|
|
||||||
config.write(sys.stdout)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
# Parse CLI arguments
|
|
||||||
arguments = docopt(__doc__, version='AWS Config Generator 1.0')
|
|
||||||
# Prepare some objects for later use
|
|
||||||
baked_profile = partial(assemble_profile, suffix=arguments['--suffix'],
|
|
||||||
region=arguments['--region'])
|
|
||||||
default_role_type=arguments['--default-role']
|
|
||||||
role_type_pattern = re.compile(
|
|
||||||
r'(?:arn\:aws\:iam\:\:\d+\:role/)'
|
|
||||||
r'(?:netrtl\.com-)?'
|
|
||||||
f'((?:{default_role_type})|(?P<type>.*?))'
|
|
||||||
r'(?:-access-role)?')
|
|
||||||
baked_role_seperator = partial(seperate_account_roles,
|
|
||||||
role_type_pattern=role_type_pattern)
|
|
||||||
# Read the document
|
|
||||||
html_location = Path(arguments['<file>']).resolve()
|
|
||||||
with open(html_location) as document:
|
|
||||||
page = BeautifulSoup(document, 'html.parser')
|
|
||||||
# Mangle the data
|
|
||||||
accounts = get_account_roles(page)
|
|
||||||
roles = chain.from_iterable( starmap( baked_role_seperator, accounts ) )
|
|
||||||
profiles = starmap(baked_profile, roles)
|
|
||||||
# Output the config
|
|
||||||
print_config(profiles, arguments['--print-default-profile'])
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# This should have been a make script. But apperantly the linux shebang is
|
|
||||||
# defeated by commands with more than 1 argument (#!/usr/bin/env make -f).
|
|
||||||
# ^^
|
|
||||||
# Soo...
|
|
||||||
make -f - <<'EOF'
|
|
||||||
SHELL=/usr/bin/env bash
|
|
||||||
|
|
||||||
~/.aws/config: ~/.aws/profiles.html
|
|
||||||
aws-config-gen -d --default-role admin $< > $@
|
|
||||||
# aws-config-gen -r eu-central-1 --suffix -🍺 --default-role admin $< >> $@
|
|
||||||
# aws-config-gen -r eu-west-1 --suffix -🍀 --default-role admin $< >> $@
|
|
||||||
# aws-config-gen -r us-east-1 --suffix -🍔 --default-role admin $< >> $@
|
|
||||||
|
|
||||||
EOF
|
|
|
@ -1 +0,0 @@
|
||||||
complete -C aws_completer aws
|
|
|
@ -1,10 +0,0 @@
|
||||||
function _aws-auth {
|
|
||||||
if [ "${#COMP_WORDS[@]}" != "2" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
local aws_profiles
|
|
||||||
aws_profiles="$(pcre2grep -O '$1' '(?>\[\s*profile )(\S+)(?>\s*\])' ~/.aws/config)"
|
|
||||||
COMPREPLY=($(compgen -W "$aws_profiles" "${COMP_WORDS[$COMP_CWORD]}" ))
|
|
||||||
}
|
|
||||||
|
|
||||||
complete -F _aws-auth aws-auth
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
xrandr --newmode "3840x1440_120.00" 993.50 3840 4176 4600 5360 1440 1443 1453 1545 -hsync +vsync
|
|
||||||
xrandr --addmode DisplayPort-2 3840x1440_120.00
|
|
||||||
xrandr --output DisplayPort-0 --mode 2560x1440 --pos 0x0 --rotate left --output DisplayPort-1 --off --output DisplayPort-2 --primary --mode 5120x1440 --pos 1440x227 --rotate normal --output HDMI-A-0 --off
|
|
12
.ssh/config
12
.ssh/config
|
@ -1,4 +1,8 @@
|
||||||
AddKeysToAgent yes
|
Host mi.lan
|
||||||
ForwardAgent no
|
HostName 192.168.178.115
|
||||||
IdentitiesOnly yes
|
User jhuebner
|
||||||
Include ~/.ssh/config.d/*
|
ProxyJump 192.168.84.2
|
||||||
|
|
||||||
|
Host 192.168.84.2
|
||||||
|
HostName 192.168.84.2
|
||||||
|
User janolehuebner
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
Host github.com
|
|
||||||
HostName ssh.github.com
|
|
||||||
User git
|
|
||||||
Port 443
|
|
15
.xprofile
15
.xprofile
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
udiskie &
|
|
||||||
xscreensaver --no-splash &
|
|
||||||
blueman-applet &
|
|
||||||
|
|
||||||
if [ -f ~/.screenlayout/${HOSTNAME}.sh ]; then
|
|
||||||
. ~/.screenlayout/${HOSTNAME}.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Some distros (like archlinux) link /bin/sh to bash. It is safe to load the
|
|
||||||
# .bash_profile in that case.
|
|
||||||
if [ $BASH_VERSION ]; then
|
|
||||||
. ~/.bash_profile
|
|
||||||
fi
|
|
Loading…
Add table
Add a link
Reference in a new issue