diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
index be65d04..bd21478 100755
--- a/.config/bspwm/bspwmrc
+++ b/.config/bspwm/bspwmrc
@@ -4,7 +4,9 @@ setxkbmap -option altwin:swap_alt_win
setxkbmap -option ctrl:swapcaps
sxhkd &
wmname LG3D
+xfce4-panel -d &
picom -b
+~/.fehbg &
bspc monitor -d I II III IV V VI VII
diff --git a/.config/fish/functions/define_global_variables.fish b/.config/fish/functions/define_global_variables.fish
index 6686f3d..494e03c 100644
--- a/.config/fish/functions/define_global_variables.fish
+++ b/.config/fish/functions/define_global_variables.fish
@@ -6,6 +6,7 @@ function define_global_variables -d 'Defines all and exclusively globally export
set -gx DOTNET_ROOT $HOME/.asdf/installs/dotnet-core/(command -q dotnet; and dotnet --version)
set -gx EDITOR nvim
+ set -gx BROWSER qutebrowser
set -gx FZF_CTRL_T_COMMAND 'ag --hidden --ignore .git -g ""'
set -gx FZF_DEFAULT_COMMAND 'ag --hidden --ignore .git -g ""'
diff --git a/.config/keepassxc/keepassxc.ini b/.config/keepassxc/keepassxc.ini
new file mode 100644
index 0000000..af4a794
--- /dev/null
+++ b/.config/keepassxc/keepassxc.ini
@@ -0,0 +1,25 @@
+[General]
+ConfigVersion=1
+GlobalAutoTypeKey=65
+GlobalAutoTypeModifiers=100663296
+MinimizeAfterUnlock=true
+
+[Browser]
+CustomProxyLocation=
+
+[GUI]
+MinimizeOnClose=true
+MinimizeOnStartup=true
+ShowTrayIcon=true
+TrayIconAppearance=monochrome-light
+
+[KeeShare]
+Active="\n\n \n\n"
+Foreign="\n\n \n\n"
+Own="\n\n \n \n\n"
+QuietSuccess=true
+
+[PasswordGenerator]
+AdditionalChars=
+ExcludedChars=
+Logograms=true
diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml
new file mode 100644
index 0000000..e6a5b1b
--- /dev/null
+++ b/.config/qutebrowser/autoconfig.yml
@@ -0,0 +1,82 @@
+# If a config.py file exists, this file is ignored unless it's explicitly loaded
+# via config.load_autoconfig(). For more information, see:
+# https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml
+# DO NOT edit this file by hand, qutebrowser will overwrite it.
+# Instead, create a config.py - see :help for details.
+
+config_version: 2
+settings:
+ aliases:
+ global:
+ q: close
+ qa: quit
+ w: session-save
+ wq: quit --save
+ wqa: quit --save
+ auto_save.interval:
+ global: 15000
+ auto_save.session:
+ global: true
+ backend:
+ global: webengine
+ bindings.commands:
+ global:
+ insert: {}
+ colors.webpage.darkmode.enabled:
+ global: false
+ content.autoplay:
+ global: false
+ content.cookies.accept:
+ global: no-3rdparty
+ content.cookies.store:
+ global: false
+ content.local_storage:
+ global: true
+ content.notifications:
+ https://app.slack.com: true
+ content.webrtc_ip_handling_policy:
+ global: all-interfaces
+ content.xss_auditing:
+ global: false
+ downloads.location.directory:
+ global: null
+ downloads.location.prompt:
+ global: true
+ downloads.location.remember:
+ global: true
+ downloads.location.suggestion:
+ global: path
+ downloads.open_dispatcher:
+ global: null
+ downloads.position:
+ global: top
+ downloads.remove_finished:
+ global: -1
+ editor.command:
+ global:
+ - kitty
+ - nvim
+ - -f
+ - '{file}'
+ - -c
+ - normal {line}G{column0}l
+ editor.encoding:
+ global: utf-8
+ fonts.default_family:
+ global: IBM Plex Mono
+ fonts.web.family.fixed:
+ global: IBM Plex Mono
+ fonts.web.family.sans_serif:
+ global: IBM Plex Sans
+ fonts.web.family.serif:
+ global: IBM Plex Serif
+ fonts.web.family.standard:
+ global: IBM Plex Sans
+ fonts.web.size.default:
+ global: 16
+ url.default_page:
+ global: http://wiki.m
+ url.start_pages:
+ global: http://wiki.m
+ window.title_format:
+ global: '{perc}{host}{title_sep}qutebrowser'
diff --git a/.config/qutebrowser/bookmarks/urls b/.config/qutebrowser/bookmarks/urls
new file mode 100644
index 0000000..3014764
--- /dev/null
+++ b/.config/qutebrowser/bookmarks/urls
@@ -0,0 +1,2 @@
+https://rotabull.octopus.app/app#/users/sign-in Octopus Deploy
+https://logentries.com/login/ Try Logentries Log Management Free – Logentries
diff --git a/.config/qutebrowser/qsettings/QtProject.conf b/.config/qutebrowser/qsettings/QtProject.conf
new file mode 100644
index 0000000..24d7d63
--- /dev/null
+++ b/.config/qutebrowser/qsettings/QtProject.conf
@@ -0,0 +1,5 @@
+[FileDialog]
+history=@Invalid()
+lastVisited=file:///home/m/Downloads
+qtVersion=5.14.2
+viewMode=Detail
diff --git a/.config/qutebrowser/quickmarks b/.config/qutebrowser/quickmarks
new file mode 100644
index 0000000..21e8d41
--- /dev/null
+++ b/.config/qutebrowser/quickmarks
@@ -0,0 +1,7 @@
+slack https://app.slack.com/client/T1FR44MU4/C1FR44RHS
+hn https://news.ycombinator.com/
+ch https://app.clubhouse.io/rotabull/stories/space/1285/platform-eng
+gh https://github.com/
+gcp https://console.cloud.google.com/projectselector2/home/dashboard?organizationId=817788800675&supportedpurview=project
+aws https://console.aws.amazon.com/s3/home?region=us-east-1
+rip https://app.rippling.com/dashboard
diff --git a/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
new file mode 100644
index 0000000..2e37873
--- /dev/null
+++ b/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.skhdrc b/.skhdrc
index 6c7daa0..f344cc8 100755
--- a/.skhdrc
+++ b/.skhdrc
@@ -1,6 +1,9 @@
# open terminal
cmd - return : /Applications/kitty.app/Contents/MacOS/kitty --single-instance -d ~
+# open web browser
+shift + cmd - return : /Applications/qutebrowser.app/Contents/MacOS/qutebrowser
+
# focus window
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
diff --git a/provision_debian b/provision_debian
new file mode 100755
index 0000000..0e0451b
--- /dev/null
+++ b/provision_debian
@@ -0,0 +1,258 @@
+#!/usr/bin/env fish
+
+function main
+ provision_m_env
+ provision_desktop_env
+ provision_libvirt
+ #provision_vagrant
+ #provision_docker
+ #provision_syncthing
+ #provision_wireguard
+ #provision_caddy
+end
+
+function provision_m_env
+ log "Provisioning m's environment." head
+
+ log 'Installing git, neovim, tmux, rsync, curl, and kitty-terminfo...'
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes \
+ git \
+ neovim \
+ tmux \
+ rsync \
+ curl \
+ kitty-terminfo \
+ > /dev/null 2>&1
+
+ log 'Installing fzf, silversearcher, bat, and feh.'
+ sudo apt-get install --yes fzf silversearcher-ag bat feh > /dev/null 2>&1
+
+ log 'Adding fish apt repo and install fish...'
+ sudo apt-get install --yes gpg > /dev/null 2>&1
+
+ echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/3/Debian_10/ /' |
+ sudo tee /etc/apt/sources.list.d/shells:fish:release:3.list
+
+ curl -fsSL https://download.opensuse.org/repositories/shells:fish:release:3/Debian_10/Release.key |
+ gpg --dearmor |
+ sudo apt-key add -
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes fish > /dev/null 2>&1
+
+ log "Setting m's default shell to fish"
+ sudo chsh -s /usr/bin/fish m
+
+ log 'Running dotfiles sync script.'
+ ./sync
+
+ log 'Installing asdf-vm.'
+ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.8 > /dev/null 2>&1
+
+ log "Done provisioning m's environment." tail
+end
+
+function provision_desktop_env
+ log 'Provisioning desktop environment.' head
+
+ log 'Installing window manager and compositor.'
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes bspwm sxhkd picom > /dev/null 2>&1
+
+ log 'Installing terminal.'
+ sudo apt-get install --yes kitty > /dev/null 2>&1
+
+ log 'Installing panel.'
+ sudo apt-get install --yes xfce4-panel xfce4-pulseaudio-plugin > /dev/null 2>&1
+
+ log 'Installing and configuring xinit and xclip.'
+ sudo apt-get install --yes xinit xclip > /dev/null 2>&1
+ echo 'exec bspwm' > ~/.xinitrc
+
+ log 'Installing browser.'
+ sudo apt-get install --yes qutebrowser > /dev/null 2>&1
+
+ log 'Installing application launcher.'
+ sudo apt-get install --yes rofi > /dev/null 2>&1
+
+ log 'Installing and configuring theme.'
+ sudo apt-get install --yes arc-theme fonts-ibm-plex unzip > /dev/null 2>&1
+
+ log 'Installing desktop background manager.'
+ sudo apt-get install --yes feh > /dev/null 2>&1
+
+ mkdir _fonts_tmp
+ cd _fonts_tmp
+
+ wget -q https://github.com/JetBrains/JetBrainsMono/releases/download/v2.002/JetBrainsMono-2.002.zip
+ unzip JetBrainsMono-2.002.zip > /dev/null
+ mkdir -p ~/.local/share/fonts/truetype/JetBrainsMono
+ cp ./ttf/*.ttf ~/.local/share/fonts/truetype/JetBrainsMono/
+
+ cd ..
+ rm -r _fonts_tmp
+
+ log 'Installing keepassxc and syncthing.'
+ sudo apt-get install --yes keepassxc syncthing > /dev/null 2>&1
+ sudo systemctl enable syncthing@m
+
+ mkdir -p ~/.config/gtk-3.0
+ echo "
+[Settings]
+gtk-icon-theme-name = Adwaita
+gtk-theme-name = Arc-Dark
+gtk-font-name = IBM Plex Sans 11" > ~/.config/gtk-3.0/settings.ini
+
+ log 'Done provisioning desktop environment.' tail
+end
+
+function provision_libvirt
+ log 'Provisioning Libvirt and KVM.' head
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes qemu-system libvirt-clients libvirt-daemon-system > /dev/null 2>&1
+ sudo adduser m libvirt
+
+ log 'Done provisioning Libvirt and KVM' tail
+end
+
+function provision_vagrant
+ log 'Provisioning vagrant and the libvirt provider.' head
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes wget unzip > /dev/null 2>&1
+
+ log 'Installing vagrant from upstream.'
+ mkdir ./vagrant; and cd ./vagrant
+ wget -q -O ./vagrant.zip https://releases.hashicorp.com/vagrant/2.2.10/vagrant_2.2.10_linux_amd64.zip
+ unzip ./vagrant.zip
+ mkdir -p ~/.local/bin
+ mv ./vagrant ~/.local/bin/
+ cd ..; and rm -r ./vagrant
+
+ log 'Installing vagrant libvirt provider.'
+ sudo apt-get --yes build-dep vagrant ruby-libvirt > /dev/null 2>&1
+ sudo apt-get --yes install qemu libvirt-daemon-system libvirt-clients ebtables dnsmasq-base > /dev/null 2>&1
+ sudo apt-get --yes install libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev > /dev/null 2>&1
+ vagrant plugin install vagrant-libvirt
+
+ log 'Done provisioning vagrant and libvirt provider.' tail
+end
+
+function provision_docker
+ log 'Provisioning Docker CE and Docker Compose.' head
+
+ log 'Installing docker dependencies.'
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes \
+ apt-transport-https \
+ ca-certificates \
+ curl \
+ gnupg-agent \
+ software-properties-common \
+ > /dev/null 2>&1
+
+ log 'Adding Docker apt repo and install docker-ce.'
+ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
+
+ sudo add-apt-repository \
+ 'deb [arch=amd64] https://download.docker.com/linux/debian
+ buster
+ stable'
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes docker-ce docker-ce-cli containerd.io > /dev/null 2>&1
+
+ log 'Installing docker-compose.'
+ set uname_m (uname -m)
+ set uname_s (uname -s)
+
+ sudo curl \
+ -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$uname_s-$uname_m" \
+ -o /usr/local/bin/docker-compose
+ sudo chmod +x /usr/local/bin/docker-compose
+
+ log 'Adding m to docker group.'
+ sudo adduser m docker
+
+ log 'Done provisioning Docker CE and Docker Compose.' tail
+end
+
+function provision_wireguard
+ log 'Provisioning Wireguard.' head
+
+ log 'Installing wireguard and resolvconf.'
+ set uname_r (uname -r)
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes "linux-headers-$uname_r" > /dev/null 2>&1
+ sudo apt-get install --yes wireguard resolvconf > /dev/null 2>&1
+
+ log 'Configuring and enabling wg-quick@m-net.'
+ sudo mv m-net.conf /etc/wireguard/
+
+ sudo systemctl enable wg-quick@.service
+ sudo systemctl enable wg-quick@m-net.service
+
+ log 'Done provisioning Wireguard.' tail
+end
+
+function provision_syncthing
+ log 'Provisioning Syncthing.' head
+
+ log 'Adding Syncthing apt repo and installing syncthing.'
+ curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
+
+ echo "deb https://apt.syncthing.net/ syncthing stable" |
+ sudo tee /etc/apt/sources.list.d/syncthing.list
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes syncthing > /dev/null 2>&1
+
+ log 'Configuring and enabled syncthing.'
+ mkdir -p ~/.config/syncthing
+ sudo mv config.xml ~/.config/syncthing/
+
+ sudo systemctl enable syncthing@.service
+ sudo systemctl enable syncthing@m.service
+
+ log 'Done provisioning Syncthing.' tail
+end
+
+function provision_caddy
+ log 'Provisioning Caddy.' head
+
+ log 'Adding Caddy repo and installing caddy.'
+ echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" |
+ sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get install --yes caddy > /dev/null 2>&1
+
+ log 'Configuring and enabling caddy.'
+ sudo mv Caddyfile /etc/caddy/
+
+ sudo systemctl enable caddy.service
+
+ log 'Done provisioning Caddy.' tail
+end
+
+function log -a message level
+ if test "$level" = head
+ echo "
+###########################################################################################
+#
+#--> $message
+#"
+ else if test "$level" = tail
+ echo "#--> $message
+#
+###########################################################################################
+"
+ else
+ echo -e "#--> $message\n#"
+ end
+end
+
+main
diff --git a/sync b/sync
index f2e4e4d..0e9612a 100755
--- a/sync
+++ b/sync
@@ -10,12 +10,16 @@ function main
setup_tmp_space $cwd
- sync_files
+ sync_terminal_env
+
+ sync_desktop_env
set_kitty_font_size $uname
install_fisher_packages
+ install_nvim_plugins
+
set_color normal
set_git_user
@@ -35,26 +39,37 @@ function setup_tmp_space -a cwd
end
end
-function sync_files
+function sync_terminal_env
if ! test -e ~/.config; mkdir ~/.config; end
rsync -aP ./.config/fish ~/.config/
- rsync -aP ./.config/kitty ~/.config/
rsync -aP ./.config/nvim ~/.config/
- rsync -aP ./.config/bspwm ~/.config/
- rsync -aP ./.config/sxhkd ~/.config/
- rsync -aP ./.config/picom ~/.config/
rsync -aP ./.gitconfig ~/
rsync -aP ./.tmux-line.conf ~/
rsync -aP ./.tmux.conf ~/
rsync -aP ./.vim ~/
rsync -aP ./.vimrc ~/
- rsync -aP ./.ideavimrc ~/
- rsync -aP ./.yabairc ~/
- rsync -aP ./.skhdrc ~/
rsync -aP ./.taskrc ~/
end
+function sync_desktop_env
+ set prompt 'Would you like to sync the desktop environment?'
+ read -p "set_color red; printf '\n$prompt (Y/n) '; set_color normal" sync_desktop_env
+
+ if test -z "$sync_desktop_env"; or test "$sync_desktop_env" = 'y'; or test "$sync_desktop_env" = 'Y'
+ rsync -aP ./.config/kitty ~/.config/
+ rsync -aP ./.config/bspwm ~/.config/
+ rsync -aP ./.config/sxhkd ~/.config/
+ rsync -aP ./.config/picom ~/.config/
+ rsync -aP ./.config/xfce4 ~/.config/
+ rsync -aP ./.config/qutebrowser ~/.config/
+ rsync -aP ./.config/keepassxc ~/.config/
+ rsync -aP ./.ideavimrc ~/
+ rsync -aP ./.yabairc ~/
+ rsync -aP ./.skhdrc ~/
+ end
+end
+
function set_kitty_font_size -a uname
if test "$uname" = 'Darwin'
sed -i '' -e 's/font_size 11\.0/font_size 13\.0/' ~/.config/kitty/kitty.conf
@@ -71,9 +86,9 @@ end
function set_git_user
set prompt 'Would you like to set your git user name and email?'
- read -p "set_color red; printf '\n$prompt (Y/n) '; set_color normal" set_git_user
+ read -p "set_color red; printf '\n$prompt (y/N) '; set_color normal" set_git_user
- if test -z "$set_git_user"; or test "$set_git_user" = 'y'; or test "$set_git_user" = 'Y'
+ if test "$set_git_user" = 'y'; or test "$set_git_user" = 'Y'
read -P 'name: ' name
read -P 'email: ' email
diff --git a/upgrade_debian b/upgrade_debian
new file mode 100755
index 0000000..a6df722
--- /dev/null
+++ b/upgrade_debian
@@ -0,0 +1,35 @@
+#!/usr/bin/env fish
+
+function main
+ log 'Upgrading debian to unstable.' head
+
+ echo '
+deb http://deb.debian.org/debian unstable main contrib non-free
+deb-src http://deb.debian.org/debian unstable main contrib non-free' | sudo tee /etc/apt/sources.list
+
+ sudo apt-get update > /dev/null 2>&1
+ sudo apt-get dist-upgrade --yes
+
+ log 'Done upgrading debian to unstable and rebooting.' tail
+
+ sudo reboot
+end
+
+function log -a message level
+ if test "$level" = head
+ echo "
+###########################################################################################
+#
+#--> $message"
+ else if test "$level" = tail
+ echo "#
+#--> $message
+#
+###########################################################################################
+"
+ else
+ echo -e "#\n#--> $message"
+ end
+end
+
+main