diff --git a/.config/i3status/config b/.config/i3status/config deleted file mode 100644 index f200efc..0000000 --- a/.config/i3status/config +++ /dev/null @@ -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 -} diff --git a/.config/papis/config b/.config/papis/config deleted file mode 100644 index 23b4bab..0000000 --- a/.config/papis/config +++ /dev/null @@ -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 diff --git a/.config/shell/rc.d/dotfiles-version-control-commands.sh b/.config/shell/rc.d/dotfiles-version-control-commands.sh deleted file mode 100644 index a78aa3d..0000000 --- a/.config/shell/rc.d/dotfiles-version-control-commands.sh +++ /dev/null @@ -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 diff --git a/README.md b/README.md index 82a76b7..e133ea2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,52 @@ # 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 (`+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 (`+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 diff --git a/.config/alacritty/alacritty.yml b/alacritty/.config/alacritty/alacritty.yml similarity index 100% rename from .config/alacritty/alacritty.yml rename to alacritty/.config/alacritty/alacritty.yml diff --git a/bootstrap/autostow.sh b/bootstrap/autostow.sh new file mode 100755 index 0000000..4f3f866 --- /dev/null +++ b/bootstrap/autostow.sh @@ -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 "$@" diff --git a/.config/bootstrap/install b/bootstrap/install_packages.sh similarity index 90% rename from .config/bootstrap/install rename to bootstrap/install_packages.sh index 5bf818f..33ba4bd 100755 --- a/.config/bootstrap/install +++ b/bootstrap/install_packages.sh @@ -7,13 +7,15 @@ # DESCRIPTION: Display usage information for this script. # PARAMETERS: see usage function #============================================================================== +packages="${BOOTSTRAP_PACKAGES:-packages.csv}" + main() { local cmd="" local ret=0 case "$1" in -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) 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() { unattended="$1" if "$unattended"; then - yay -Squ --noconfirm --needed - '))") diff --git a/.config/picom/picom.conf b/picom/.config/picom/picom.conf similarity index 100% rename from .config/picom/picom.conf rename to picom/.config/picom/picom.conf diff --git a/.config/polybar/config b/polybar/.config/polybar/config similarity index 100% rename from .config/polybar/config rename to polybar/.config/polybar/config diff --git a/polybar/.config/polybar/exampleconf b/polybar/.config/polybar/exampleconf new file mode 100644 index 0000000..b197945 --- /dev/null +++ b/polybar/.config/polybar/exampleconf @@ -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 = +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 = + +icon-prev =  +icon-stop =  +icon-play =  +icon-pause =  +icon-next =  + +label-song-maxlen = 25 +label-song-ellipsis = true + +[module/xbacklight] +type = internal/xbacklight + +format =