Merge branch '67-switch-organization-to-gnu-stow' into 'master'
Resolve "Switch organization to GNU stow" Closes #67 See merge request marty-oehme/dotfiles!26
This commit is contained in:
commit
dee7f9096b
139 changed files with 39427 additions and 185 deletions
|
@ -1,111 +0,0 @@
|
||||||
###############################################################################
|
|
||||||
# ceerious i3 status config
|
|
||||||
# see "man i3status" for documentation.
|
|
||||||
#
|
|
||||||
# It is important that this file is edited as UTF-8.
|
|
||||||
# The following line should contain a sharp s:
|
|
||||||
# ß
|
|
||||||
# If the above line is not correctly displayed, fix your editor first!
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
general {
|
|
||||||
interval = 1
|
|
||||||
colors = true
|
|
||||||
color_good = '#88b090'
|
|
||||||
color_degraded = '#ccdc90'
|
|
||||||
color_bad = '#e89393'
|
|
||||||
}
|
|
||||||
|
|
||||||
order += "volume master"
|
|
||||||
order += "disk /"
|
|
||||||
#order += "disk /data"
|
|
||||||
#order += "disk /home"
|
|
||||||
#order += "run_watch DHCP"
|
|
||||||
#order += "ipv6"
|
|
||||||
#order += "run_watch VPN"
|
|
||||||
order += "wireless wlp4s0"
|
|
||||||
#order += "ethernet enp5s0"
|
|
||||||
order += "battery 0"
|
|
||||||
order += "cpu_temperature 0"
|
|
||||||
order += "cpu_usage 0"
|
|
||||||
order += "load"
|
|
||||||
order += "tztime local"
|
|
||||||
|
|
||||||
#wireless wlp4s0 {
|
|
||||||
# format_up = "%quality %essid %ip"
|
|
||||||
# format_down = ""
|
|
||||||
#}
|
|
||||||
|
|
||||||
#ethernet enp5s0 {
|
|
||||||
# # if you use %speed, i3status requires root privileges
|
|
||||||
# format_up = "%ip (%speed)"
|
|
||||||
# format_down = ""
|
|
||||||
#}
|
|
||||||
|
|
||||||
battery 0 {
|
|
||||||
format = "%status %percentage %remaining"
|
|
||||||
format_down = ""
|
|
||||||
last_full_capacity = true
|
|
||||||
integer_battery_capacity = true
|
|
||||||
low_threshold = 11
|
|
||||||
threshold_type = percentage
|
|
||||||
hide_seconds = true
|
|
||||||
status_chr = " "
|
|
||||||
status_bat = " "
|
|
||||||
status_unk = " "
|
|
||||||
status_full = " "
|
|
||||||
}
|
|
||||||
|
|
||||||
run_watch DHCP {
|
|
||||||
pidfile = "/var/run/dhclient*.pid"
|
|
||||||
}
|
|
||||||
|
|
||||||
run_watch VPN {
|
|
||||||
pidfile = "/var/run/vpnc/pid"
|
|
||||||
}
|
|
||||||
|
|
||||||
#%Y-%m-%d %H:%M:%S'
|
|
||||||
tztime local {
|
|
||||||
format = " %d/%m/%Y %H:%M"
|
|
||||||
}
|
|
||||||
|
|
||||||
load {
|
|
||||||
format = " %1min"
|
|
||||||
}
|
|
||||||
|
|
||||||
cpu_usage {
|
|
||||||
format = " %usage"
|
|
||||||
}
|
|
||||||
|
|
||||||
cpu_temperature 0 {
|
|
||||||
format = " %degrees°C"
|
|
||||||
}
|
|
||||||
|
|
||||||
disk "/" {
|
|
||||||
format = " %avail"
|
|
||||||
prefix_type = custom
|
|
||||||
low_threshold = 20
|
|
||||||
threshold_type = percentage_avail
|
|
||||||
}
|
|
||||||
|
|
||||||
#disk "/data" {
|
|
||||||
# format = " %avail"
|
|
||||||
# prefix_type = custom
|
|
||||||
# low_threshold = 20
|
|
||||||
# threshold_type = percentage_avail
|
|
||||||
#}
|
|
||||||
|
|
||||||
#disk "/data" {
|
|
||||||
# format = " %avail"
|
|
||||||
# prefix_type = custom
|
|
||||||
# low_threshold = 20
|
|
||||||
# threshold_type = percentage_avail
|
|
||||||
#}
|
|
||||||
|
|
||||||
volume master {
|
|
||||||
format = "%volume "
|
|
||||||
format_muted = " "
|
|
||||||
device = "default"
|
|
||||||
mixer = "Master"
|
|
||||||
mixer_idx = 0
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
[settings]
|
|
||||||
default-library = academia
|
|
||||||
|
|
||||||
opentool = xdg-open
|
|
||||||
file-browser = vifm
|
|
||||||
|
|
||||||
ref-format = {doc[author_list][0][surname]}{doc[year]}
|
|
||||||
|
|
||||||
add-confirm = True
|
|
||||||
add-name = {doc[author]}-{doc[title]}
|
|
||||||
add-folder-name = {doc[author]}-{doc[title]}
|
|
||||||
file-name = {doc[author]}_{doc[year]}_{doc[title]}
|
|
||||||
add-file-name = {doc[author]}_{doc[year]}_{doc[title]}
|
|
||||||
|
|
||||||
mark-header-format = {mark[value]}: {mark[name]}
|
|
||||||
mark-opener-format = zathura --page {mark[value]}
|
|
||||||
|
|
||||||
notes-name = notes.Rmd
|
|
||||||
|
|
||||||
[tui]
|
|
||||||
editmode = vi
|
|
||||||
options_list.selected_margin_style = bg:ansiwhite fg:ansiblack
|
|
||||||
options_list.unselected_margin_style = bg:ansiblack
|
|
||||||
|
|
||||||
[test]
|
|
||||||
dir = ~/documents/library
|
|
||||||
|
|
||||||
[academia]
|
|
||||||
dir = ~/Nextcloud/Library/academia
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# enables git management through dot command
|
|
||||||
alias dot='/usr/bin/git --git-dir=/home/marty/.dotfiles/ --work-tree=/home/marty'
|
|
||||||
|
|
||||||
# The following commands are run on your git repo if you installed through the script
|
|
||||||
# You can invoke them manually, but it's not recommended to keep them active in here.
|
|
||||||
# Otherwise each time a shell starts up, *whatever directory you are in*, the commands
|
|
||||||
# will be re-run.
|
|
||||||
#
|
|
||||||
## Make git assume the readme is not changing (essentially ignore it).
|
|
||||||
#
|
|
||||||
# This means you can safely remove the README.md file from your home dir
|
|
||||||
# without git trying to delete it from the repository.
|
|
||||||
# If you WANT to make changes to the README.md, you will have to make git
|
|
||||||
# watch it again with the commented out command
|
|
||||||
#
|
|
||||||
# Read more: https://stackoverflow.com/questions/4308610/how-to-ignore-certain-files-in-git
|
|
||||||
# and: https://stackoverflow.com/questions/653454/how-do-you-make-git-ignore-files-without-using-gitignore
|
|
||||||
#
|
|
||||||
#dot update-index --no-assume-unchanged README.md
|
|
||||||
#dot update-index --assume-unchanged README.md
|
|
||||||
|
|
||||||
## Make git not show untracked files (i.e. ALL other files in your home dir)
|
|
||||||
#dot config status.showUntrackedFiles no
|
|
48
README.md
48
README.md
|
@ -1,6 +1,52 @@
|
||||||
# dotfiles Read-Me and Roadmap
|
# dotfiles Read-Me and Roadmap
|
||||||
|
|
||||||
__ **THE BELOW README IS OUT OF DATE DO NOT FOLLOW ITS INSTALL INSTRUCTIONS** __
|
|
||||||
|
## What's in these dotfiles
|
||||||
|
* [x] vim configuration for simple programming tasks (especially go/typescript/python/bash) and prose
|
||||||
|
* [x] academic workflow tools, to allow quick citation, pdf compilation, and preview
|
||||||
|
* [x] simple, efficient polybar with package update notification, and spotify integration
|
||||||
|
* [x] tmux session management through `tm` and `tl` tools
|
||||||
|
* [x] quick terminal-wide color management through `sd`/`sD`/`sl`/`sL` commands, allowing two light and dark color-schemes
|
||||||
|
* [x] many vim color-schemes with quick light/dark switching (`F8`) and theme switch (`<Space>+F8`)
|
||||||
|
* [x] quick directory jumping using z, with fzf integration
|
||||||
|
* [x] fzf integrations for bibtex citation, vim buffer management, most recently used switching, shell command history, and more
|
||||||
|
|
||||||
|
## Quick-Start
|
||||||
|
|
||||||
|
The dotfiles are based on a bare-repository residing in your home directory. To enable a faster usage of the dotfile git commands, a `dot` command is supplied which mirrors the usual `git` functionality, but solely applies it to your dotfiles.
|
||||||
|
|
||||||
|
To install you need git on your system; to effectively use the dotfiles you should be using zsh (`chsh -s /bin/zsh` to switch your current user to the shell).
|
||||||
|
|
||||||
|
Clone the bare repo, rename it and force a checkout with the following command - **NOTE** this WILL **OVERWRITE YOUR EXISTING FILES**, so have a look at what is contained beforehand.
|
||||||
|
|
||||||
|
`git clone https://gitlab.com/marty-oehme/dotfiles.git df && cp -rf df/.git ~/.dotfiles && rm -rf df && cd ~ && git --git-dir=$HOME/.dotfiles/ checkout -f master`
|
||||||
|
|
||||||
|
It will clone your dotfiles into the .dotfiles directory in your home directory and then force a checkout of the current master branch. Open a new terminal window and you should live in the dotfiles.
|
||||||
|
|
||||||
|
## What's in these dotfiles
|
||||||
|
|
||||||
|
* [x] vim configuration for simple programming tasks (especially go/typescript/python/bash) and prose
|
||||||
|
* [x] academic workflow tools, to allow quick citation, pdf compilation, and preview
|
||||||
|
* [x] simple, efficient polybar with package update notification, and spotify integration
|
||||||
|
* [x] tmux session management through `tm` and `tl` tools
|
||||||
|
* [x] quick terminal-wide color management through `sd`/`sD`/`sl`/`sL` commands, allowing two light and dark color-schemes
|
||||||
|
* [x] many vim color-schemes with quick light/dark switching (`F8`) and theme switch (`<Space>+F8`)
|
||||||
|
* [x] quick directory jumping using z, with fzf integration
|
||||||
|
* [x] fzf integrations for bibtex citation, vim buffer management, most recently used switching, shell command history, and more
|
||||||
|
|
||||||
|
## Notable Folders
|
||||||
|
|
||||||
|
* generally, most configuration for applications follows the XDG specifications, keeping configuration in .config directory and supplementary files in .local/share directory
|
||||||
|
* `.config/shell` contains all the general zsh/bash/sh configuration and environment variables usually contained in .zshrc/.zprofile/..; it is divided in login shell config (loginrc.d), general shell config (rc.d) and zsh specific (zsh.d)
|
||||||
|
* `.config/rofi` contains additional scripts and a simple theming framework for rofi and should probably be migrated into the correct directories at some point
|
||||||
|
* `.local/bin` contains most executable user scripts
|
||||||
|
* `.local/share/pandoc` contains configuration for academic latex (pandoc, really) writing and is of interest if you want to use this functionality
|
||||||
|
* `.xinitrc` is used for x initialization and program startup, customize to your needs
|
||||||
|
* `.gitlab-ci.yml` is only used for simple CI code linting and static analysis on gitlab, can be deleted on individual deployments
|
||||||
|
|
||||||
|
NOTE:
|
||||||
|
|
||||||
|
**THE BELOW README IS OUT OF DATE DO NOT FOLLOW ITS INSTALL INSTRUCTIONS**
|
||||||
|
|
||||||
At some point I will get around to updating it
|
At some point I will get around to updating it
|
||||||
|
|
||||||
|
|
100
bootstrap/autostow.sh
Executable file
100
bootstrap/autostow.sh
Executable file
|
@ -0,0 +1,100 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# autostow.sh
|
||||||
|
#
|
||||||
|
# Stow automatic symlinking script
|
||||||
|
#
|
||||||
|
# Invokes stow for every folder within this repository, and that's it.
|
||||||
|
|
||||||
|
ignore="${AUTOSTOW_IGNORED_DIRS:-"bootstrap:assets"}"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
case "$1" in
|
||||||
|
-s | --stow)
|
||||||
|
have_stow
|
||||||
|
echo "Creating dotfile symlinks ................................................."
|
||||||
|
stow_dirs
|
||||||
|
echo "Done creating symlinks ...................................................."
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-d | --delete)
|
||||||
|
have_stow
|
||||||
|
echo "Removing dotfile symlinks ................................................."
|
||||||
|
unstow_dirs
|
||||||
|
echo "Done removing symlinks ...................................................."
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-v | --version)
|
||||||
|
printf "System bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.2\n"
|
||||||
|
;;
|
||||||
|
-h | --help | *)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
}
|
||||||
|
|
||||||
|
stow_dirs() {
|
||||||
|
for d in */; do
|
||||||
|
|
||||||
|
if is_ignored "$d"; then
|
||||||
|
printf "ignoring %s\n" "$d"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "stowing %s\n" "$d"
|
||||||
|
stow -S -t ~ "$d"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
unstow_dirs() {
|
||||||
|
for d in */; do
|
||||||
|
|
||||||
|
if is_ignored "$d"; then
|
||||||
|
printf "ignoring %s\n" "$d"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "unstowing %s\n" "$d"
|
||||||
|
stow -D -t ~ "$d"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
is_ignored() {
|
||||||
|
IFS=":"
|
||||||
|
for ign in $ignore; do
|
||||||
|
if [ "$ign" == "$1" ] || [ "$ign/" == "$1" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
have_stow() {
|
||||||
|
if ! type stow >/dev/null 2>&1; then
|
||||||
|
printf "GNU stow needs to be installed for this script to function. Please install stow through your package manager.\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printf "%s\n" \
|
||||||
|
"" \
|
||||||
|
" autostow.sh - Automatically stow your dotfiles." \
|
||||||
|
" Uses GNU stow to set up automatic links to any dotfiles in subdirectories of this directory." \
|
||||||
|
"" \
|
||||||
|
" Usage: stow.sh -dhs" \
|
||||||
|
"" \
|
||||||
|
" Options:" \
|
||||||
|
"" \
|
||||||
|
" -h Print out this help." \
|
||||||
|
"" \
|
||||||
|
" -s Install dotfiles, by symlinking any directory found next to stow.sh using GNU stow." \
|
||||||
|
"" \
|
||||||
|
" -d Remove dotfiles, by unlinking any directory found next to stow.sh using GNU stow." \
|
||||||
|
"" \
|
||||||
|
""
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
|
@ -7,13 +7,15 @@
|
||||||
# DESCRIPTION: Display usage information for this script.
|
# DESCRIPTION: Display usage information for this script.
|
||||||
# PARAMETERS: see usage function
|
# PARAMETERS: see usage function
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
|
packages="${BOOTSTRAP_PACKAGES:-packages.csv}"
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
local cmd=""
|
local cmd=""
|
||||||
local ret=0
|
local ret=0
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-v | --version)
|
-v | --version)
|
||||||
printf "Package bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.1\n"
|
printf "Package bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.3\n"
|
||||||
;;
|
;;
|
||||||
-h | --help)
|
-h | --help)
|
||||||
printf "Usage: install [-f|--force][-v|--version][-h|--help]\n\n-f Do not ask for any confirmations but force update and installation.\n"
|
printf "Usage: install [-f|--force][-v|--version][-h|--help]\n\n-f Do not ask for any confirmations but force update and installation.\n"
|
||||||
|
@ -58,9 +60,9 @@ update_repos() {
|
||||||
install_packages() {
|
install_packages() {
|
||||||
unattended="$1"
|
unattended="$1"
|
||||||
if "$unattended"; then
|
if "$unattended"; then
|
||||||
yay -Squ --noconfirm --needed - <packages.csv
|
yay -Squ --noconfirm --needed - <"$packages"
|
||||||
else
|
else
|
||||||
yay -Su --needed - <packages.csv
|
yay -Su --needed - <"$packages"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,12 +73,11 @@ check_consent() {
|
||||||
echo "Exiting."
|
echo "Exiting."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
unattended=$1
|
unattended=$1
|
||||||
echo "Beginning boostrap ........................................................"
|
echo "Beginning package bootstrap ..............................................."
|
||||||
if ! "$unattended"; then
|
if ! "$unattended"; then
|
||||||
check_consent
|
check_consent
|
||||||
fi
|
fi
|
|
@ -4,10 +4,10 @@ bash
|
||||||
bibtool
|
bibtool
|
||||||
bison
|
bison
|
||||||
bzip2
|
bzip2
|
||||||
chromium
|
|
||||||
dhcpcd
|
dhcpcd
|
||||||
dialog
|
dialog
|
||||||
docker
|
docker
|
||||||
|
dunst
|
||||||
exa
|
exa
|
||||||
fasd
|
fasd
|
||||||
feh
|
feh
|
||||||
|
@ -15,26 +15,23 @@ flashfocus-git
|
||||||
fzf
|
fzf
|
||||||
gawk
|
gawk
|
||||||
git
|
git
|
||||||
|
git-lfs
|
||||||
gnome-keyring
|
gnome-keyring
|
||||||
gopass
|
gopass
|
||||||
grep
|
grep
|
||||||
gzip
|
gzip
|
||||||
hugo
|
hugo
|
||||||
i3-gaps
|
i3-gaps
|
||||||
i3blocks
|
|
||||||
i3lock
|
i3lock
|
||||||
i3status
|
|
||||||
jabref-latest
|
jabref-latest
|
||||||
|
jpdftweak
|
||||||
keybase-bin
|
keybase-bin
|
||||||
less
|
less
|
||||||
|
libnotify
|
||||||
libtool
|
libtool
|
||||||
littler
|
littler
|
||||||
logrotate
|
logrotate
|
||||||
mopidy
|
lynx
|
||||||
mopidy-podcast
|
|
||||||
mopidy-scrobbler
|
|
||||||
mopidy-spotify
|
|
||||||
mopidy-spotify-tunigo
|
|
||||||
mosh
|
mosh
|
||||||
mpv
|
mpv
|
||||||
nano
|
nano
|
||||||
|
@ -42,6 +39,7 @@ neovim
|
||||||
nerd-fonts-fira-code
|
nerd-fonts-fira-code
|
||||||
nerd-fonts-iosevka
|
nerd-fonts-iosevka
|
||||||
nextcloud-client
|
nextcloud-client
|
||||||
|
ntfs-3g
|
||||||
nvidia
|
nvidia
|
||||||
nvidia-utils
|
nvidia-utils
|
||||||
openssh
|
openssh
|
||||||
|
@ -49,9 +47,8 @@ os-prober
|
||||||
pacman
|
pacman
|
||||||
pandoc
|
pandoc
|
||||||
pandoc-citeproc
|
pandoc-citeproc
|
||||||
papis
|
|
||||||
picom
|
picom
|
||||||
pkgconf
|
playerctl
|
||||||
polybar
|
polybar
|
||||||
pulseaudio
|
pulseaudio
|
||||||
pulseaudio-alsa
|
pulseaudio-alsa
|
||||||
|
@ -59,7 +56,6 @@ pulsemixer
|
||||||
python-pip
|
python-pip
|
||||||
python-pybtex
|
python-pybtex
|
||||||
python-pynvim
|
python-pynvim
|
||||||
python-pywal
|
|
||||||
qutebrowser
|
qutebrowser
|
||||||
r
|
r
|
||||||
redshift
|
redshift
|
||||||
|
@ -70,8 +66,9 @@ rofi-dmenu
|
||||||
rofi-greenclip
|
rofi-greenclip
|
||||||
rofimoji
|
rofimoji
|
||||||
scrot
|
scrot
|
||||||
shellcheck-static
|
spotify
|
||||||
shfmt
|
sshfs
|
||||||
|
stow
|
||||||
surfraw
|
surfraw
|
||||||
sxhkd
|
sxhkd
|
||||||
tar
|
tar
|
||||||
|
@ -100,7 +97,6 @@ unzip
|
||||||
vagrant
|
vagrant
|
||||||
vifm
|
vifm
|
||||||
virtualbox
|
virtualbox
|
||||||
weechat
|
|
||||||
wget
|
wget
|
||||||
which
|
which
|
||||||
xcape
|
xcape
|
|
67
install.sh
Executable file
67
install.sh
Executable file
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# install.sh
|
||||||
|
#
|
||||||
|
# Installs dotfiles and packages for my setup
|
||||||
|
#
|
||||||
|
# Will first install yay, then all my used packages (read from bootstrap/packages.csv)
|
||||||
|
#
|
||||||
|
# Will symlink all my dotfiles into their correct places using autostow.sh
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local cmd=""
|
||||||
|
local ret=0
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
-v | --version)
|
||||||
|
printf "Personal system bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.1\n"
|
||||||
|
;;
|
||||||
|
-h | --help)
|
||||||
|
printf "Usage: install [-f|--force][-v|--version][-h|--help]\n\n-f Do not ask for any confirmations but force update and installation.\n"
|
||||||
|
;;
|
||||||
|
-f | --force)
|
||||||
|
install true
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
install false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
|
||||||
|
$cmd "$@"
|
||||||
|
ret=$((ret + $?))
|
||||||
|
exit $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
check_consent() {
|
||||||
|
echo "This will take a while, install many packages and link dotfiles all over the place. Proceed [y/N]?"
|
||||||
|
read -r yes
|
||||||
|
if [[ "$yes" != y* ]]; then
|
||||||
|
echo "Exiting."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
unattended=$1
|
||||||
|
if ! "$unattended"; then
|
||||||
|
check_consent
|
||||||
|
fi
|
||||||
|
echo "====================== BEGINNING INSTALLATION ============================="
|
||||||
|
if ! "$unattended"; then
|
||||||
|
export BOOTSTRAP_PACKAGES="bootstrap/packages.csv"
|
||||||
|
./bootstrap/install_packages.sh
|
||||||
|
else
|
||||||
|
export BOOTSTRAP_PACKAGES="bootstrap/packages.csv"
|
||||||
|
./bootstrap/install_packages.sh -f
|
||||||
|
fi
|
||||||
|
unset BOOTSTRAP_PACKAGES
|
||||||
|
|
||||||
|
echo "=================== BEGINNING DOTFILE MANAGEMENT =========================="
|
||||||
|
./bootstrap/autostow.sh -s
|
||||||
|
|
||||||
|
echo "====================== INSTALLATION FINISHED =============================="
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
1
nvim/.config/nvim/colo.vim
Normal file
1
nvim/.config/nvim/colo.vim
Normal file
|
@ -0,0 +1 @@
|
||||||
|
colo nord
|
22
nvim/.config/nvim/plugin/compiledoc.vim
Normal file
22
nvim/.config/nvim/plugin/compiledoc.vim
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
function CompileDoc()
|
||||||
|
:execute(":w!")
|
||||||
|
:execute(":!compile \"%\"")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function CompileDocNoOutput()
|
||||||
|
:execute(":w!")
|
||||||
|
:execute(":silent !compile \"%\"")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function CompiledOpen()
|
||||||
|
:execute(":silent !open-compiled \"%\"")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function CompileDocAndOpen()
|
||||||
|
call CompileDocNoOutput()
|
||||||
|
call CompiledOpen()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
command CompileDoc call CompileDoc()
|
||||||
|
command CompileOpen call CompiledOpen()
|
||||||
|
command CompileDocAndOpen call CompileDocAndOpen()
|
16
nvim/.config/nvim/watch.lua
Normal file
16
nvim/.config/nvim/watch.lua
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
local w = vim.loop.new_fs_event()
|
||||||
|
local function on_change(err, fname, status)
|
||||||
|
-- Do work...
|
||||||
|
vim.api.nvim_command('checktime')
|
||||||
|
-- Debounce: stop/start.
|
||||||
|
w:stop()
|
||||||
|
watch_file(fname)
|
||||||
|
end
|
||||||
|
function watch_file(fname)
|
||||||
|
local fullpath = vim.api.nvim_call_function(
|
||||||
|
'fnamemodify', {fname, ':p'})
|
||||||
|
w:start(fullpath, {}, vim.schedule_wrap(function(...)
|
||||||
|
on_change(...) end))
|
||||||
|
end
|
||||||
|
vim.api.nvim_command(
|
||||||
|
"command! -nargs=1 Watch call luaeval('watch_file(_A)', expand('<args>'))")
|
403
polybar/.config/polybar/exampleconf
Normal file
403
polybar/.config/polybar/exampleconf
Normal file
|
@ -0,0 +1,403 @@
|
||||||
|
[colors]
|
||||||
|
;background = ${xrdb:color0:#222}
|
||||||
|
background = #222
|
||||||
|
background-alt = #444
|
||||||
|
;foreground = ${xrdb:color7:#222}
|
||||||
|
foreground = #dfdfdf
|
||||||
|
foreground-alt = #555
|
||||||
|
primary = #ffb52a
|
||||||
|
secondary = #e60053
|
||||||
|
alert = #bd2c40
|
||||||
|
|
||||||
|
[bar/example]
|
||||||
|
;monitor = ${env:MONITOR:HDMI-1}
|
||||||
|
width = 100%
|
||||||
|
height = 27
|
||||||
|
;offset-x = 1%
|
||||||
|
;offset-y = 1%
|
||||||
|
radius = 6.0
|
||||||
|
fixed-center = false
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
line-size = 3
|
||||||
|
line-color = #f00
|
||||||
|
|
||||||
|
border-size = 0
|
||||||
|
border-color = #00000000
|
||||||
|
|
||||||
|
padding-left = 15
|
||||||
|
padding-right = 15
|
||||||
|
|
||||||
|
module-margin-left = 1
|
||||||
|
module-margin-right = 2
|
||||||
|
|
||||||
|
font-0 = fixed:pixelsize=10;1
|
||||||
|
font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
|
||||||
|
font-2 = siji:pixelsize=10;1
|
||||||
|
|
||||||
|
modules-left = bspwm i3
|
||||||
|
modules-center = mpd
|
||||||
|
modules-right = filesystem xbacklight alsa pulseaudio xkeyboard memory cpu wlan eth battery temperature powermenu date
|
||||||
|
|
||||||
|
tray-position = right
|
||||||
|
tray-padding = 2
|
||||||
|
tray-background = #0063ff
|
||||||
|
|
||||||
|
;wm-restack = bspwm
|
||||||
|
;wm-restack = i3
|
||||||
|
|
||||||
|
;override-redirect = true
|
||||||
|
|
||||||
|
;scroll-up = bspwm-desknext
|
||||||
|
;scroll-down = bspwm-deskprev
|
||||||
|
|
||||||
|
scroll-up = i3wm-wsnext
|
||||||
|
scroll-down = i3wm-wsprev
|
||||||
|
|
||||||
|
cursor-click = pointer
|
||||||
|
cursor-scroll = ns-resize
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:30:...%
|
||||||
|
|
||||||
|
[module/xkeyboard]
|
||||||
|
type = internal/xkeyboard
|
||||||
|
blacklist-0 = num lock
|
||||||
|
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.foreground-alt}
|
||||||
|
format-prefix-underline = ${colors.secondary}
|
||||||
|
|
||||||
|
label-layout = %layout%
|
||||||
|
label-layout-underline = ${colors.secondary}
|
||||||
|
|
||||||
|
label-indicator-padding = 2
|
||||||
|
label-indicator-margin = 1
|
||||||
|
label-indicator-background = ${colors.secondary}
|
||||||
|
label-indicator-underline = ${colors.secondary}
|
||||||
|
|
||||||
|
[module/filesystem]
|
||||||
|
type = internal/fs
|
||||||
|
interval = 25
|
||||||
|
|
||||||
|
mount-0 = /
|
||||||
|
|
||||||
|
label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
|
||||||
|
label-unmounted = %mountpoint% not mounted
|
||||||
|
label-unmounted-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
[module/bspwm]
|
||||||
|
type = internal/bspwm
|
||||||
|
|
||||||
|
label-focused = %index%
|
||||||
|
label-focused-background = ${colors.background-alt}
|
||||||
|
label-focused-underline= ${colors.primary}
|
||||||
|
label-focused-padding = 2
|
||||||
|
|
||||||
|
label-occupied = %index%
|
||||||
|
label-occupied-padding = 2
|
||||||
|
|
||||||
|
label-urgent = %index%!
|
||||||
|
label-urgent-background = ${colors.alert}
|
||||||
|
label-urgent-padding = 2
|
||||||
|
|
||||||
|
label-empty = %index%
|
||||||
|
label-empty-foreground = ${colors.foreground-alt}
|
||||||
|
label-empty-padding = 2
|
||||||
|
|
||||||
|
; Separator in between workspaces
|
||||||
|
; label-separator = |
|
||||||
|
|
||||||
|
[module/i3]
|
||||||
|
type = internal/i3
|
||||||
|
format = <label-state> <label-mode>
|
||||||
|
index-sort = true
|
||||||
|
wrapping-scroll = false
|
||||||
|
|
||||||
|
; Only show workspaces on the same output as the bar
|
||||||
|
;pin-workspaces = true
|
||||||
|
|
||||||
|
label-mode-padding = 2
|
||||||
|
label-mode-foreground = #000
|
||||||
|
label-mode-background = ${colors.primary}
|
||||||
|
|
||||||
|
; focused = Active workspace on focused monitor
|
||||||
|
label-focused = %index%
|
||||||
|
label-focused-background = ${colors.background-alt}
|
||||||
|
label-focused-underline= ${colors.primary}
|
||||||
|
label-focused-padding = 2
|
||||||
|
|
||||||
|
; unfocused = Inactive workspace on any monitor
|
||||||
|
label-unfocused = %index%
|
||||||
|
label-unfocused-padding = 2
|
||||||
|
|
||||||
|
; visible = Active workspace on unfocused monitor
|
||||||
|
label-visible = %index%
|
||||||
|
label-visible-background = ${self.label-focused-background}
|
||||||
|
label-visible-underline = ${self.label-focused-underline}
|
||||||
|
label-visible-padding = ${self.label-focused-padding}
|
||||||
|
|
||||||
|
; urgent = Workspace with urgency hint set
|
||||||
|
label-urgent = %index%
|
||||||
|
label-urgent-background = ${colors.alert}
|
||||||
|
label-urgent-padding = 2
|
||||||
|
|
||||||
|
; Separator in between workspaces
|
||||||
|
; label-separator = |
|
||||||
|
|
||||||
|
|
||||||
|
[module/mpd]
|
||||||
|
type = internal/mpd
|
||||||
|
format-online = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
|
||||||
|
|
||||||
|
icon-prev =
|
||||||
|
icon-stop =
|
||||||
|
icon-play =
|
||||||
|
icon-pause =
|
||||||
|
icon-next =
|
||||||
|
|
||||||
|
label-song-maxlen = 25
|
||||||
|
label-song-ellipsis = true
|
||||||
|
|
||||||
|
[module/xbacklight]
|
||||||
|
type = internal/xbacklight
|
||||||
|
|
||||||
|
format = <label> <bar>
|
||||||
|
label = BL
|
||||||
|
|
||||||
|
bar-width = 10
|
||||||
|
bar-indicator = |
|
||||||
|
bar-indicator-foreground = #fff
|
||||||
|
bar-indicator-font = 2
|
||||||
|
bar-fill = ─
|
||||||
|
bar-fill-font = 2
|
||||||
|
bar-fill-foreground = #9f78e1
|
||||||
|
bar-empty = ─
|
||||||
|
bar-empty-font = 2
|
||||||
|
bar-empty-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
[module/backlight-acpi]
|
||||||
|
inherit = module/xbacklight
|
||||||
|
type = internal/backlight
|
||||||
|
card = intel_backlight
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.foreground-alt}
|
||||||
|
format-underline = #f90000
|
||||||
|
label = %percentage:2%%
|
||||||
|
|
||||||
|
[module/memory]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 2
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.foreground-alt}
|
||||||
|
format-underline = #4bffdc
|
||||||
|
label = %percentage_used%%
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
type = internal/network
|
||||||
|
interface = wlp0s29u1u1
|
||||||
|
interval = 3.0
|
||||||
|
|
||||||
|
format-connected = <ramp-signal> <label-connected>
|
||||||
|
format-connected-underline = #9f78e1
|
||||||
|
label-connected = %essid%
|
||||||
|
|
||||||
|
format-disconnected =
|
||||||
|
;format-disconnected = <label-disconnected>
|
||||||
|
;format-disconnected-underline = ${self.format-connected-underline}
|
||||||
|
;label-disconnected = %ifname% disconnected
|
||||||
|
;label-disconnected-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
ramp-signal-0 =
|
||||||
|
ramp-signal-1 =
|
||||||
|
ramp-signal-2 =
|
||||||
|
ramp-signal-3 =
|
||||||
|
ramp-signal-4 =
|
||||||
|
ramp-signal-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
[module/eth]
|
||||||
|
type = internal/network
|
||||||
|
interface = enp6s0
|
||||||
|
interval = 3.0
|
||||||
|
|
||||||
|
format-connected-underline = #55aa55
|
||||||
|
format-connected-prefix = " "
|
||||||
|
format-connected-prefix-foreground = ${colors.foreground-alt}
|
||||||
|
label-connected = %local_ip%
|
||||||
|
|
||||||
|
format-disconnected =
|
||||||
|
;format-disconnected = <label-disconnected>
|
||||||
|
;format-disconnected-underline = ${self.format-connected-underline}
|
||||||
|
;label-disconnected = %ifname% disconnected
|
||||||
|
;label-disconnected-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 5
|
||||||
|
|
||||||
|
date =
|
||||||
|
date-alt = " %Y-%m-%d"
|
||||||
|
|
||||||
|
time = %H:%M
|
||||||
|
time-alt = %H:%M:%S
|
||||||
|
|
||||||
|
format-prefix =
|
||||||
|
format-prefix-foreground = ${colors.foreground-alt}
|
||||||
|
format-underline = #0a6cf5
|
||||||
|
|
||||||
|
label = %date% %time%
|
||||||
|
|
||||||
|
[module/pulseaudio]
|
||||||
|
type = internal/pulseaudio
|
||||||
|
|
||||||
|
format-volume = <label-volume> <bar-volume>
|
||||||
|
label-volume = VOL %percentage%%
|
||||||
|
label-volume-foreground = ${root.foreground}
|
||||||
|
|
||||||
|
label-muted = 🔇 muted
|
||||||
|
label-muted-foreground = #666
|
||||||
|
|
||||||
|
bar-volume-width = 10
|
||||||
|
bar-volume-foreground-0 = #55aa55
|
||||||
|
bar-volume-foreground-1 = #55aa55
|
||||||
|
bar-volume-foreground-2 = #55aa55
|
||||||
|
bar-volume-foreground-3 = #55aa55
|
||||||
|
bar-volume-foreground-4 = #55aa55
|
||||||
|
bar-volume-foreground-5 = #f5a70a
|
||||||
|
bar-volume-foreground-6 = #ff5555
|
||||||
|
bar-volume-gradient = false
|
||||||
|
bar-volume-indicator = |
|
||||||
|
bar-volume-indicator-font = 2
|
||||||
|
bar-volume-fill = ─
|
||||||
|
bar-volume-fill-font = 2
|
||||||
|
bar-volume-empty = ─
|
||||||
|
bar-volume-empty-font = 2
|
||||||
|
bar-volume-empty-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
[module/alsa]
|
||||||
|
type = internal/alsa
|
||||||
|
|
||||||
|
format-volume = <label-volume> <bar-volume>
|
||||||
|
label-volume = VOL
|
||||||
|
label-volume-foreground = ${root.foreground}
|
||||||
|
|
||||||
|
format-muted-prefix = " "
|
||||||
|
format-muted-foreground = ${colors.foreground-alt}
|
||||||
|
label-muted = sound muted
|
||||||
|
|
||||||
|
bar-volume-width = 10
|
||||||
|
bar-volume-foreground-0 = #55aa55
|
||||||
|
bar-volume-foreground-1 = #55aa55
|
||||||
|
bar-volume-foreground-2 = #55aa55
|
||||||
|
bar-volume-foreground-3 = #55aa55
|
||||||
|
bar-volume-foreground-4 = #55aa55
|
||||||
|
bar-volume-foreground-5 = #f5a70a
|
||||||
|
bar-volume-foreground-6 = #ff5555
|
||||||
|
bar-volume-gradient = false
|
||||||
|
bar-volume-indicator = |
|
||||||
|
bar-volume-indicator-font = 2
|
||||||
|
bar-volume-fill = ─
|
||||||
|
bar-volume-fill-font = 2
|
||||||
|
bar-volume-empty = ─
|
||||||
|
bar-volume-empty-font = 2
|
||||||
|
bar-volume-empty-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
[module/battery]
|
||||||
|
type = internal/battery
|
||||||
|
battery = BAT0
|
||||||
|
adapter = ADP1
|
||||||
|
full-at = 98
|
||||||
|
|
||||||
|
format-charging = <animation-charging> <label-charging>
|
||||||
|
format-charging-underline = #ffb52a
|
||||||
|
|
||||||
|
format-discharging = <animation-discharging> <label-discharging>
|
||||||
|
format-discharging-underline = ${self.format-charging-underline}
|
||||||
|
|
||||||
|
format-full-prefix = " "
|
||||||
|
format-full-prefix-foreground = ${colors.foreground-alt}
|
||||||
|
format-full-underline = ${self.format-charging-underline}
|
||||||
|
|
||||||
|
ramp-capacity-0 =
|
||||||
|
ramp-capacity-1 =
|
||||||
|
ramp-capacity-2 =
|
||||||
|
ramp-capacity-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
animation-charging-0 =
|
||||||
|
animation-charging-1 =
|
||||||
|
animation-charging-2 =
|
||||||
|
animation-charging-foreground = ${colors.foreground-alt}
|
||||||
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
animation-discharging-0 =
|
||||||
|
animation-discharging-1 =
|
||||||
|
animation-discharging-2 =
|
||||||
|
animation-discharging-foreground = ${colors.foreground-alt}
|
||||||
|
animation-discharging-framerate = 750
|
||||||
|
|
||||||
|
[module/temperature]
|
||||||
|
type = internal/temperature
|
||||||
|
thermal-zone = 0
|
||||||
|
warn-temperature = 60
|
||||||
|
|
||||||
|
format = <ramp> <label>
|
||||||
|
format-underline = #f50a4d
|
||||||
|
format-warn = <ramp> <label-warn>
|
||||||
|
format-warn-underline = ${self.format-underline}
|
||||||
|
|
||||||
|
label = %temperature-c%
|
||||||
|
label-warn = %temperature-c%
|
||||||
|
label-warn-foreground = ${colors.secondary}
|
||||||
|
|
||||||
|
ramp-0 =
|
||||||
|
ramp-1 =
|
||||||
|
ramp-2 =
|
||||||
|
ramp-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
[module/powermenu]
|
||||||
|
type = custom/menu
|
||||||
|
|
||||||
|
expand-right = true
|
||||||
|
|
||||||
|
format-spacing = 1
|
||||||
|
|
||||||
|
label-open =
|
||||||
|
label-open-foreground = ${colors.secondary}
|
||||||
|
label-close = cancel
|
||||||
|
label-close-foreground = ${colors.secondary}
|
||||||
|
label-separator = |
|
||||||
|
label-separator-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
|
menu-0-0 = reboot
|
||||||
|
menu-0-0-exec = menu-open-1
|
||||||
|
menu-0-1 = power off
|
||||||
|
menu-0-1-exec = menu-open-2
|
||||||
|
|
||||||
|
menu-1-0 = cancel
|
||||||
|
menu-1-0-exec = menu-open-0
|
||||||
|
menu-1-1 = reboot
|
||||||
|
menu-1-1-exec = sudo reboot
|
||||||
|
|
||||||
|
menu-2-0 = power off
|
||||||
|
menu-2-0-exec = sudo poweroff
|
||||||
|
menu-2-1 = cancel
|
||||||
|
menu-2-1-exec = menu-open-0
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
screenchange-reload = true
|
||||||
|
;compositing-background = xor
|
||||||
|
;compositing-background = screen
|
||||||
|
;compositing-foreground = source
|
||||||
|
;compositing-border = over
|
||||||
|
;pseudo-transparency = false
|
||||||
|
|
||||||
|
[global/wm]
|
||||||
|
margin-top = 5
|
||||||
|
margin-bottom = 5
|
9
qutebrowser/.config/qutebrowser/quickmarks
Normal file
9
qutebrowser/.config/qutebrowser/quickmarks
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
dot https://gitlab.com/marty-oehme/dotfiles
|
||||||
|
l https://links.martyoeh.me/
|
||||||
|
todo https://todoist.com/app?lang=de#start
|
||||||
|
mail https://mail.google.com/mail/u/0/#inbox
|
||||||
|
rss https://rss.martyoeh.me/
|
||||||
|
files http://files.martyoeh.me/
|
||||||
|
read https://read.martyoeh.me/
|
||||||
|
arch https://wiki.archlinux.org/
|
||||||
|
toggl https://toggl.com/app/timer
|
38256
qutebrowser/.local/share/qutebrowser/blocked-hosts
Normal file
38256
qutebrowser/.local/share/qutebrowser/blocked-hosts
Normal file
File diff suppressed because it is too large
Load diff
73
rofi/.config/rofi/modes/gopass
Executable file
73
rofi/.config/rofi/modes/gopass
Executable file
|
@ -0,0 +1,73 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
# Custom key bindings do not work in script-mode, use a wrapper instead
|
||||||
|
# Script at .local/bin/rofi-gopass
|
||||||
|
OLD_GOPASS_GPG_OPTS="$GOPASS_GPG_OPTS"
|
||||||
|
|
||||||
|
break_out() {
|
||||||
|
if [ "$1" -eq 1 ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
has_xclip() {
|
||||||
|
if (type xclip >/dev/null 2>&1); then
|
||||||
|
printf "Your system does not appear to support pasting to clipboard via xclip."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
to_clipboard() {
|
||||||
|
has_xclip
|
||||||
|
value="$(gopass show "$1" "$2")"
|
||||||
|
printf "%s" "$value" | xclip -selection clipboard
|
||||||
|
notify-send "Password" "Copied pass for $2 to clipboard.\n"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
show_secrets() {
|
||||||
|
printf "%s" "$(gopass ls -fo)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# get_key() {
|
||||||
|
# return echo "$*" | gpg --passphrase-fd 0 --pinentry-mode loopback --batch --export-secret-keys 2>&1
|
||||||
|
# }
|
||||||
|
|
||||||
|
# check_gpg_key() {
|
||||||
|
# check_keyphrase=$(echo "$*" | gpg --passphrase-fd 0 --pinentry-mode loopback --batch --export-secret-keys 2>&1)
|
||||||
|
# if echo "$check_keyphrase" | grep -q -e '.*<.*@.*>'; then
|
||||||
|
# printf "\x00prompt\x1fLogin> \n"
|
||||||
|
# show_secrets
|
||||||
|
# elif echo "$check_keyphrase" | grep -q -e "can't get input" - || echo "$check_keyphrase" | grep -q -e "error receiving key" -; then
|
||||||
|
# printf "\x00prompt\x1fMaster Passphrase> \n"
|
||||||
|
# printf "%s" "$check_keyphrase"
|
||||||
|
# else
|
||||||
|
# echo "passphrase successfully input, $check_keyphrase"
|
||||||
|
# fi
|
||||||
|
# }
|
||||||
|
|
||||||
|
# has_selected_login() {
|
||||||
|
# echo "this is passed to ls: $*"
|
||||||
|
# echo "grep reveals: $(gopass ls -f | grep -e "$*" -)"
|
||||||
|
# if grep "$(gopass ls -f | grep -q -e "$*" -)"; then
|
||||||
|
# echo "ls found something"
|
||||||
|
# true
|
||||||
|
# else
|
||||||
|
# false
|
||||||
|
# fi
|
||||||
|
# }
|
||||||
|
|
||||||
|
# if [ -z "$*" ]; then
|
||||||
|
# check_gpg_key "$*"
|
||||||
|
# elif has_selected_login "$*"; then
|
||||||
|
# echo "has selected login $*"
|
||||||
|
# else
|
||||||
|
# check_gpg_key "$*"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
main() {
|
||||||
|
show_secrets
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
28
rofi/.config/rofi/modes/rofi-colors
Executable file
28
rofi/.config/rofi/modes/rofi-colors
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
rofi_command="rofi"
|
||||||
|
|
||||||
|
original_args=("$@")
|
||||||
|
for ((i = 0; i <= "${#original_args[@]}"; i++)); do
|
||||||
|
if [ "${original_args[i]}" == "-color" ]; then
|
||||||
|
for ((j = 0; j <= "${#original_args[@]}"; j++)); do
|
||||||
|
if [ "${original_args[j]}" == "-theme" ]; then
|
||||||
|
echo "with theme: $i : ${original_args[i]} ${original_args[i + 1]}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# for ((index = 0; index <= ${#lines_ary[@]}; index++)); do
|
||||||
|
# if [ "${lines_ary[index]}" == "Release:" ]; then
|
||||||
|
# echo "${lines_ary[index + 1]}"
|
||||||
|
# fi
|
||||||
|
# done
|
||||||
|
|
||||||
|
$rofi_command "${original_args[@]}"
|
||||||
|
|
||||||
|
# if [ -z "${color}" ]; then
|
||||||
|
# command rofi "${original_args[@]}"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# echo "color = ${color}"
|
209
rofi/.config/rofi/modes/scratch
Normal file
209
rofi/.config/rofi/modes/scratch
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# rofi wrapper. Add custom settings here.
|
||||||
|
_rofi () {
|
||||||
|
rofi -dmenu -no-auto-select -i "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# default settings
|
||||||
|
backend=ydotool
|
||||||
|
dotool_delay=200
|
||||||
|
daemon_wait=2
|
||||||
|
autotype_delay=2
|
||||||
|
key_autotype="Return"
|
||||||
|
key_usertype="Alt+2"
|
||||||
|
key_passtype="Alt+3"
|
||||||
|
key_actions="Alt+a"
|
||||||
|
key_clipboard="Alt+1"
|
||||||
|
key_fieldtype="Return"
|
||||||
|
|
||||||
|
# read config file
|
||||||
|
get_config_file () {
|
||||||
|
configs=("$ROFI_PASS_CONFIG"
|
||||||
|
"$HOME/.config/rofi-pass/rofi-gopass.conf"
|
||||||
|
"/etc/rofi-gopass.conf")
|
||||||
|
|
||||||
|
# return the first config file with a valid path
|
||||||
|
for config in "${configs[@]}"; do
|
||||||
|
# '! -z' is needed in case ROFI_PASS_CONFIG is not set
|
||||||
|
if [[ ! -z "${config}" && -f "${config}" ]]; then
|
||||||
|
printf "%s" "$config"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make sure ESC will always end the programm.
|
||||||
|
# Call this function with "exit_check $?" after each rofi call.
|
||||||
|
exit_check () {
|
||||||
|
exit_value=$1
|
||||||
|
if [[ "${exit_value}" == "1" ]]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
clipboard () {
|
||||||
|
local entry
|
||||||
|
local key
|
||||||
|
local value
|
||||||
|
entry="${1}"
|
||||||
|
key="${2}"
|
||||||
|
value="$(gopass show "${entry}" "${key}")"
|
||||||
|
printf '%s' "${value}" | xclip -sel clip
|
||||||
|
notify-send "rofi-gopass" "Copied ${key} to clipboard\nClearing in 45 seconds."
|
||||||
|
(sleep 45; printf '%s' "" | xclip; printf '%s' "" | xclip -selection clipboard | notify-send "rofi-gopass" "Clipboard cleared") &
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
_ydotoold () {
|
||||||
|
if ! pgrep -x "ydotoold" >/dev/null; then
|
||||||
|
# ydotoold blocks the terminal, so we need to background it.
|
||||||
|
# Sadly this way we never know when the process finished starting up.
|
||||||
|
# Until ydotoold receives proper daemonizing we add a sleep value here.
|
||||||
|
ydotoold&
|
||||||
|
sleep "${daemon_wait}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_dotool () {
|
||||||
|
local mode
|
||||||
|
local key
|
||||||
|
mode="${1}"
|
||||||
|
key="${2:-null}"
|
||||||
|
case "${mode}" in
|
||||||
|
"type")
|
||||||
|
case "${backend}" in
|
||||||
|
"xdotool") xdotool type --delay "${dotool_delay}" --file - ;;
|
||||||
|
"ydotool") _ydotoold; ydotool type --delay "${dotool_delay}" --file - ;;
|
||||||
|
esac ;;
|
||||||
|
"key")
|
||||||
|
case "${backend}" in
|
||||||
|
"xdotool") xdotool key "${key}" ;;
|
||||||
|
"ydotool") _ydotoold; ydotool key "${key}" ;;
|
||||||
|
esac ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
list_passwords () {
|
||||||
|
gopass list --flat
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
autopass () {
|
||||||
|
local entry
|
||||||
|
local autotype
|
||||||
|
entry="${1}"
|
||||||
|
autotype="$(gopass show "${entry}" autotype)"
|
||||||
|
autotype="${autotype:-user :tab pass}"
|
||||||
|
|
||||||
|
for word in ${autotype}; do
|
||||||
|
case "$word" in
|
||||||
|
":tab") _dotool key Tab;;
|
||||||
|
":space") _dotool key " ";;
|
||||||
|
":delay") sleep "${autotype_delay}";;
|
||||||
|
":enter") _dotool key enter;;
|
||||||
|
"pass") printf '%s' "$(gopass show --password "${entry}")" | _dotool type ;;
|
||||||
|
*) printf '%s' "$(gopass show "${entry}" "${word}")" | _dotool type ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
list_keys () {
|
||||||
|
# gopass has no option to only list keys, so we need to build the list ourselves.
|
||||||
|
local entry
|
||||||
|
local keys
|
||||||
|
entry="${1}"
|
||||||
|
keys="$(gopass show "${entry}")"
|
||||||
|
printf '%s\n' "${keys}" | while read -r line; do
|
||||||
|
if [[ "${line}" == *": "* ]]; then
|
||||||
|
printf '%s\n' "${line%: *}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
edit_key () {
|
||||||
|
local entry
|
||||||
|
local keys
|
||||||
|
entry="${1}"
|
||||||
|
keys="$(list_keys "${entry}")"
|
||||||
|
key_name=$(printf '%s\n' "${keys}" | _rofi -mesg "Enter new key or chose existing one")
|
||||||
|
exit_check $?
|
||||||
|
value_name=$(printf '%s' "" | _rofi -mesg "Enter Value for key \"${key_name}\"")
|
||||||
|
exit_check $?
|
||||||
|
if [[ -z "${key_name}" ]]; then
|
||||||
|
printf '%s' "${value_name}" | gopass insert -a "${entry}" "${key_name}"
|
||||||
|
else
|
||||||
|
printf '%s' "${value_name}" | gopass insert "${entry}" "${key_name}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# For dangerous operations call this function first. You can provide a message as argument.
|
||||||
|
# Example: confirm "Are you sure you want to delete entry?"
|
||||||
|
confirm () {
|
||||||
|
local message
|
||||||
|
message="${1}"
|
||||||
|
confirm_content=(
|
||||||
|
"Yes"
|
||||||
|
"No")
|
||||||
|
|
||||||
|
confirm_menu=$(printf '%s\n' "${confirm_content[@]}" | _rofi -mesg "${message}")
|
||||||
|
exit_check $?
|
||||||
|
case "${confirm_menu}" in
|
||||||
|
"Yes") : ;;
|
||||||
|
"No") exit ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
custom_type () {
|
||||||
|
local entry
|
||||||
|
local keys
|
||||||
|
entry="${1}"
|
||||||
|
keys="$(list_keys "${entry}")"
|
||||||
|
key_name=$(printf '%s\n' "${keys}" | _rofi -kb-accept-entry "" -no-custom -kb-custom-1 "${key_clipboard}" -kb-custom-2 "${key_fieldtype}" -mesg "${key_clipboard}: Copy to Clipboard | ${key_fieldtype}: Type Field")
|
||||||
|
local exit_value=$?
|
||||||
|
exit_check "${exit_value}"
|
||||||
|
case "${exit_value}" in
|
||||||
|
"10") clipboard "${entry}" "${key_name}" ;;
|
||||||
|
"11") printf '%s' "$(gopass show "${entry}" "${key_name}")" | _dotool type; exit ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
do_menu () {
|
||||||
|
local entry
|
||||||
|
entry="${1}"
|
||||||
|
action_menu_content=(
|
||||||
|
"< Go Back"
|
||||||
|
"---"
|
||||||
|
"Show Fields"
|
||||||
|
"Add/Edit Keys"
|
||||||
|
"Generate New Password"
|
||||||
|
"Delete Entry"
|
||||||
|
)
|
||||||
|
|
||||||
|
action_menu="$(printf '%s\n' "${action_menu_content[@]}" | _rofi -no-custom -mesg "Selected Entry: ${entry}" -p '> ')"
|
||||||
|
exit_value=$?
|
||||||
|
exit_check "${exit_value}"
|
||||||
|
|
||||||
|
case "${action_menu}" in
|
||||||
|
"< Go Back") main ;;
|
||||||
|
"Show Fields") custom_type "${entry}" ;;
|
||||||
|
"Add/Edit Keys") edit_key "${entry}" ;;
|
||||||
|
"Delete Entry") confirm "Delete ${entry}?"; gopass rm -f "${entry}" ;;
|
||||||
|
"Generate New Password") confirm "Generate a new password for ${entry}?"; gopass generate -f "${entry}" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main () {
|
||||||
|
entry="$(list_passwords | _rofi -kb-accept-entry "" -kb-custom-1 "${key_autotype}" -kb-custom-2 "${key_usertype}" -kb-custom-3 "${key_passtype}" -kb-custom-4 "${key_actions}" -mesg "${key_autotype}: Autotype | ${key_usertype}: Type User | ${key_passtype}: Type Pass | ${key_actions}: More Actions")"
|
||||||
|
exit_value=$?
|
||||||
|
exit_check "${exit_value}"
|
||||||
|
case "${exit_value}" in
|
||||||
|
"10") autopass "${entry}"; exit ;;
|
||||||
|
"11") printf '%s' "$(gopass show "${entry}" user)" | _dotool type; exit ;;
|
||||||
|
"12") printf '%s' "$(gopass show --password "${entry}")" | _dotool type; exit ;
|
||||||
|
esac
|
||||||
|
do_menu "${entry}"
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
99
rofi/.config/rofi/modes/test
Executable file
99
rofi/.config/rofi/modes/test
Executable file
|
@ -0,0 +1,99 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# POSIX COMPLIANT EXAMPLE ROFI MODE SCRIPT
|
||||||
|
|
||||||
|
#### Options ###
|
||||||
|
power_off_btn=""
|
||||||
|
reboot_btn=""
|
||||||
|
lock_btn=""
|
||||||
|
suspend_btn="鈴"
|
||||||
|
logout_btn=""
|
||||||
|
|
||||||
|
# find out what the user has input
|
||||||
|
# pad both values with a simple p in front
|
||||||
|
# if query is empty it tries to compare nothing with quit otherwise
|
||||||
|
# i.e. the [ operator, which will error out
|
||||||
|
if [ p"$*" = p"quit" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$*" = x"noot" ]; then
|
||||||
|
rofi-powermenu
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# another way to see what the user has input
|
||||||
|
# grep -a since it assumes with our nullcodes etc that this is a binary file
|
||||||
|
# grep -o to only leave the things we grep for
|
||||||
|
case $(echo "$*" | grep -a -o -e "Shutdown" -e "Reboot" -e "Lockscreen" -e "Logout" -e "Suspend") in
|
||||||
|
"Shutdown")
|
||||||
|
# do shutdown
|
||||||
|
;;
|
||||||
|
"Reboot")
|
||||||
|
# do shutdown
|
||||||
|
;;
|
||||||
|
"Lockscreen")
|
||||||
|
# do shutdown
|
||||||
|
;;
|
||||||
|
"Logout")
|
||||||
|
# do shutdown
|
||||||
|
;;
|
||||||
|
"Suspend")
|
||||||
|
# do shutdown
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$@" ]; then
|
||||||
|
# Override the previously set prompt.
|
||||||
|
printf "\x00prompt\x1fChange prompt\n"
|
||||||
|
for a in 1 2 3 4 5 6 7 8 9 10; do
|
||||||
|
echo "$a"
|
||||||
|
done
|
||||||
|
echo "quit"
|
||||||
|
else
|
||||||
|
|
||||||
|
printf "\x00prompt\x1fPower> \n"
|
||||||
|
# we can use pango markup to hide text which we can then search. Neat!
|
||||||
|
printf "\0markup-rows\x1ftrue\n"
|
||||||
|
# echo -en "\0urgent\x1f0,2\n"
|
||||||
|
# echo -en "\0active\x1f1\n"
|
||||||
|
# echo -en "\0message\x1fSpecial <b>bold</b>message\n"
|
||||||
|
|
||||||
|
printf "aap\0icon\x1ffolder\n"
|
||||||
|
printf "<!-- Shutdown Poweroff --> %s\0icon\x1fstart-here\n" "$power_off_btn"
|
||||||
|
printf "<!-- Reboot Restart --> %s\n" "$reboot_btn"
|
||||||
|
printf "<!-- Lockscreen --> %s\n" "$lock_btn"
|
||||||
|
printf "<!-- Suspend Sleep --> %s\n" "$suspend_btn"
|
||||||
|
printf "<!-- Exit X Logout --> %s\n" "$logout_btn"
|
||||||
|
echo "<b>Bold</b>"
|
||||||
|
echo "quit"
|
||||||
|
fi
|
||||||
|
|
||||||
|
##!/usr/bin/env sh
|
||||||
|
|
||||||
|
#### Options ###
|
||||||
|
#power_off=""
|
||||||
|
#reboot=""
|
||||||
|
#lock=""
|
||||||
|
#suspend_btn="鈴"
|
||||||
|
#logout_btn=""
|
||||||
|
## Variable passed to rofi
|
||||||
|
|
||||||
|
#chosen="$(printf "%s\n%s\n%s\n%s\n%s" "$power_off" "$reboot" "$lock" "$suspend_btn" "$logout_btn" | $rofi_command -dmenu -selected-row 2)"
|
||||||
|
#case $chosen in
|
||||||
|
#$power_off)
|
||||||
|
# systemctl poweroff
|
||||||
|
# ;;
|
||||||
|
#$reboot)
|
||||||
|
# systemctl reboot
|
||||||
|
# ;;
|
||||||
|
#$lock)
|
||||||
|
# lockscreen
|
||||||
|
# ;;
|
||||||
|
#$suspend_btn)
|
||||||
|
# systemctl suspend
|
||||||
|
# ;;
|
||||||
|
#$logout_btn)
|
||||||
|
# i3-msg exit
|
||||||
|
# ;;
|
||||||
|
#esac
|
Can't render this file because it contains an unexpected character in line 2 and column 33.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue