Browse Source

Initial commit

master
FollieHiyuki 12 months ago
commit
5255ea5c2b
Signed by: FollieHiyuki GPG Key ID: 813CF484F4993419
  1. 19
      LICENSE
  2. 69
      README.md
  3. BIN
      assets/AnimuThinku.png
  4. BIN
      assets/dotfiles.png
  5. 23
      assets/palette-nord
  6. 25
      assets/palette-onedark
  7. 52
      assets/public.key
  8. BIN
      assets/sway.png
  9. 135
      deploy.sh
  10. 7
      home/.bash_profile
  11. 85
      home/.bashrc
  12. 767
      home/.bashrc-bloated
  13. BIN
      home/.config/GIMP/2.10/splashes/splash.png
  14. 118
      home/.config/X11/Xresources
  15. 57
      home/.config/X11/xinitrc
  16. 408
      home/.config/alacritty/alacritty.yml
  17. 340
      home/.config/amfora/config.toml
  18. 96
      home/.config/bottom/bottom.toml
  19. 301
      home/.config/broot/conf.toml
  20. 2
      home/.config/bsp-layout/layoutrc
  21. 59
      home/.config/bspwm/bspwmrc
  22. 165
      home/.config/cava/config
  23. 88
      home/.config/cointop/config.toml
  24. 149
      home/.config/doom/config.el
  25. 65
      home/.config/doom/elfeed.org
  26. BIN
      home/.config/doom/images/asuna.png
  27. BIN
      home/.config/doom/images/chiyo.png
  28. BIN
      home/.config/doom/images/emilia.png
  29. BIN
      home/.config/doom/images/girl.png
  30. BIN
      home/.config/doom/images/miku.png
  31. BIN
      home/.config/doom/images/miku2.png
  32. BIN
      home/.config/doom/images/rem.png
  33. BIN
      home/.config/doom/images/rin.png
  34. BIN
      home/.config/doom/images/yui.png
  35. BIN
      home/.config/doom/images/yukino.png
  36. 209
      home/.config/doom/init.el
  37. 61
      home/.config/doom/packages.el
  38. BIN
      home/.config/dunst/clipboard.png
  39. 429
      home/.config/dunst/dunstrc
  40. BIN
      home/.config/dunst/headphones.png
  41. BIN
      home/.config/dunst/idea.png
  42. BIN
      home/.config/dunst/microphone.png
  43. BIN
      home/.config/dunst/mute.png
  44. BIN
      home/.config/dunst/notrackpad.png
  45. BIN
      home/.config/dunst/penguin.png
  46. BIN
      home/.config/dunst/penguin_red.png
  47. BIN
      home/.config/dunst/photograph.png
  48. BIN
      home/.config/dunst/speaker.png
  49. BIN
      home/.config/dunst/trackpad.png
  50. 70
      home/.config/fish/conf.d/aliases.fish
  51. 363
      home/.config/fish/conf.d/env.fish
  52. 66
      home/.config/fish/conf.d/evaluate.fish
  53. 26
      home/.config/fish/conf.d/gpg-agent.fish
  54. 3
      home/.config/fish/conf.d/startwm.fish
  55. 9
      home/.config/fish/fish_plugins
  56. 86
      home/.config/fish/functions/extract.fish
  57. 3
      home/.config/fish/functions/fish_greeting.fish
  58. 3
      home/.config/fish/functions/fish_mode_prompt.fish
  59. 39
      home/.config/fish/functions/fish_user_key_bindings.fish
  60. 206
      home/.config/fish/functions/fisher.fish
  61. 5
      home/.config/fish/functions/fzf-bcd-widget.fish
  62. 7
      home/.config/fish/functions/fzf-select.fish
  63. 3
      home/.config/fish/functions/fztmux.fish
  64. 10
      home/.config/fish/functions/man.fish
  65. 36
      home/.config/fish/functions/n.fish
  66. 5
      home/.config/fish/functions/n2.fish
  67. 3
      home/.config/fish/functions/pathclean.fish
  68. 6
      home/.config/fish/functions/tt.fish
  69. 77
      home/.config/flashfocus/flashfocus.yml
  70. 138
      home/.config/foot/foot.ini
  71. 213
      home/.config/gallery-dl/config.json
  72. 56
      home/.config/git/config
  73. 9
      home/.config/greenclip.cfg
  74. 9
      home/.config/gtk-3.0/settings.ini
  75. 16
      home/.config/hikari/autostart
  76. 310
      home/.config/hikari/hikari.conf
  77. 77
      home/.config/imv/config
  78. 3
      home/.config/ion/initrc
  79. 143
      home/.config/jesseduffield/lazygit/config.yml
  80. 88
      home/.config/kitty/kitty.conf
  81. 272
      home/.config/lf/lfrc
  82. 44
      home/.config/lf/preview
  83. 247
      home/.config/luakit/theme.lua
  84. 65
      home/.config/luakit/userconf.lua
  85. BIN
      home/.config/mako/clipboard.png
  86. 44
      home/.config/mako/config
  87. BIN
      home/.config/mako/headphones.png
  88. BIN
      home/.config/mako/idea.png
  89. BIN
      home/.config/mako/microphone.png
  90. BIN
      home/.config/mako/mute.png
  91. BIN
      home/.config/mako/notrackpad.png
  92. BIN
      home/.config/mako/penguin.png
  93. BIN
      home/.config/mako/penguin_red.png
  94. BIN
      home/.config/mako/photograph.png
  95. BIN
      home/.config/mako/speaker.png
  96. BIN
      home/.config/mako/trackpad.png
  97. 10
      home/.config/mimeapps.list
  98. 12
      home/.config/mpDris2/mpDris2.conf
  99. 25
      home/.config/mpd/mpd.conf
  100. 25
      home/.config/ncmpcpp/album_art.sh

19
LICENSE

@ -0,0 +1,19 @@
MIT License Copyright (c) 2021 FollieHiyuki
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

69
README.md

@ -0,0 +1,69 @@
<p align="center">
<img src="https://git.disroot.org/FollieHiyuki/dotfiles/raw/branch/master/assets/dotfiles.png" height="121px" alt="dotfiles_icon"/>
</p>
### :question: What can you find here
<img src="https://git.disroot.org/FollieHiyuki/dotfiles/raw/branch/master/assets/AnimuThinku.png" width="121px" align="left" alt="AnimuThinku"></a>
**My personal dotfiles, which:**
=> is bloated (I use a lot of programs, sometimes just to try out)
=> yet clean (follow XDG base directory specification)
=> for [bspwm](https://github.com/baskerville/bspwm), [spectrwm](https://github.com/conformal/spectrwm), [sway](https://github.com/swaywm/sway), [wayfire](https://github.com/WayfireWM/wayfire), [river](https://github.com/ifreund/river), [hikari](https://hikari.acmelabs.space/)
=> and features [Nord](https://github.com/arcticicestudio/nord) and [OneDark](https://github.com/joshdick/onedark.vim) colorschemes
![sway](https://git.disroot.org/FollieHiyuki/dotfiles/raw/branch/master/assets/sway.png)
### :package: Installation
- Fonts: **[Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic)** + **Iosevka Nerd Font**
- Other dependencies:
- jq, sysstat, psmisc, wireless_tools (status on spectrwm's bar)
- [light](https://github.com/haikarainen/light) / [brightnessctl](https://github.com/Hummer12007/brightnessctl)
- [bottom](https://github.com/clementtsang/bottom)
- [fzf](https://github.com/junegunn/fzf), [fd](https://github.com/sharkdp/fd), [ripgrep](https://github.com/BurntSushi/ripgrep)
- [greenclip](https://github.com/erebe/greenclip) / [clipman](https://github.com/yory8/clipman)
- [mpDris2](https://github.com/eonpatapon/mpDris2), [mpv-mpris](https://github.com/hoyon/mpv-mpris), [playerctl](https://github.com/altdesktop/playerctl)
- [delta](https://github.com/dandavison/delta), [bat](https://github.com/sharkdp/bat), [glow](https://github.com/charmbracelet/glow) (or [mdcat](https://github.com/lunaryorn/mdcat)), [exa](https://github.com/ogham/exa), pandoc (previewing in terminal)
- [starship](https://starship.rs/)
- [gallery-dl](https://github.com/mikf/gallery-dl) / [mangadl-bash](https://github.com/Akianonymus/mangadl-bash)
- [translate-shell](https://github.com/soimort/translate-shell)
- [pulsemixer](https://github.com/GeorgeFilipkin/pulsemixer)
- [nwg-launchers](https://github.com/nwg-piotr/nwg-launchers) / [wofi](https://hg.sr.ht/~scoopta/wofi)
- [rofi](https://github.com/davatorium/rofi) / [dmenu](https://git.disroot.org/FollieHiyuki/dmenu)
- Run `deploy.sh` to deploy the dotfiles
> zsh requires adding `export ZDOTDIR=$HOME/.config/zsh` to **/etc/zsh/zshenv**
> Refer to [this gist](https://gist.github.com/st3r4g/6c681a28b0403b3b02636f510ff68039) for making `pipewire` work on Void Linux. The dotfiles works with `alsa` and `pulseaudio` too with some slightly changes.
### :clipboard: TODO
- [ ] ~~[Material](https://material-theme.site/) / [Ayu](https://github.com/ayu-theme/ayu-colors) palette~~
- [ ] ~~[dotdrop](https://github.com/deadc0de6/dotdrop)~~
- [x] Migrate zsh to [zinit](https://github.com/zdharma/zinit)
- [x] Wayland compositors
- [ ] ion / oksh / nushell / osh / xonsh / elvish / oh
- [ ] NixOS / Guix / Gentoo / FreeBSD
- [ ] New Neovim's config in Lua
- [ ] My own ~/.emacs.d
### :star2: Credits & License
- [@ChristianChiarulli](https://github.com/ChristianChiarulli) for the Neovim's config
- [@hlissner](https://github.com/hlissner) for a detailed zsh config (and Doom Emacs)
- My Waybar config is heavily inspired by [@begs](https://git.sr.ht/~begs/dotfiles)
- I use some scripts from other people:
- [some fzf scripts](https://github.com/DanielFGray/fzf-scripts)
- [colorscripts](https://gitlab.com/dwt1/shell-color-scripts)
- **farge**, **tmpsms** and **tmpmail** from [@sdushantha](https://github.com/sdushantha)
- **ytmenu** from [here](https://github.com/sayan01/scripts)
- You want some more **kawaii** wallpapers? Here is the list of artists: [@rimuu](https://rimuu.com/), [@hiten](https://www.pixiv.net/users/490219/artworks), [@Tiv](https://www.pixiv.net/en/users/35081), [@mery](https://www.pixiv.net/en/users/2750098), [@Mashima_saki](https://www.pixiv.net/en/users/18403608), [@Yuuki_Tatsuya](https://www.pixiv.net/en/users/27691), [@Bison倉鼠](https://www.pixiv.net/en/users/333556/artworks), [@Dana](https://twitter.com/hapong07), [@gomzi](https://twitter.com/gcmzi), [@Rella](https://twitter.com/Rellakinoko), [@dnwls3010](https://twitter.com/dnwls3010), [@Shigure_Ui](https://www.pixiv.net/en/users/431873), [@QuAn_](https://www.pixiv.net/en/users/6657532/artworks), [@杉87](https://twitter.com/k_su_keke1121), [@fuzichoco](https://twitter.com/fuzichoco), [@Astero](https://twitter.com/asteroid_ill), [@shin556](https://www.pixiv.net/en/users/642762)
- Others are under MIT license

BIN
assets/AnimuThinku.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
assets/dotfiles.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

23
assets/palette-nord

@ -0,0 +1,23 @@
Polar Night:
#2e3440
#3b4252
#434c5e
#4c566a
Snow Storm:
#d8dee9
#e5e9f0
#eceff4
Frost:
#8fbcbb
#88c0d0
#81a1c1
#5e81ac
Aurora:
#bf616a
#d08770
#ebcb8b
#a3be8c
#b48ead

25
assets/palette-onedark

@ -0,0 +1,25 @@
Original colors: Doom Emacs' variant:
#181a1f #1b2229
#282c34 #1c1f24
#2c323c #202328
#3b4048 #21242b
#3e4452 #23272e
#4b5263 #282c34
#5c6470 #3f444a
#abb2bf #5b6268
#73797e
#9ca0a4
#dfdfdf
#bbc2cf
#e06c75 #be5046 #ff6c6b
#98c379 #98be56
#e5c07b #ecbe7b
#d19a66 #da8548
#61afef #51afef #2257a0
#c678dd #c678dd #a9a1e1
#56b6c2 #4db5bd #5699af #46d9ff
Additional colors:
#979eab
#8c9cff

52
assets/public.key

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
+5tMxfcjYzE=
=ispU
-----END PGP PUBLIC KEY BLOCK-----

BIN
assets/sway.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

135
deploy.sh

@ -0,0 +1,135 @@
#!/bin/sh
echo "Shell (bash/zsh/fish): "
read -r shell
if [ -z "${shell}" ]
then exit
fi
echo "Display server (wayland/x11): "
read -r server
if [ -z "${server}" ]
then exit
fi
echo "
~~~ Installing shell config ~~~
"
case ${shell} in
bash)
cp -rfv ./home/.bashrc-bloated ~/.bashrc
cp -rfv ./home/.bash_profile ~/.bash_profile
;;
zsh)
cp -rfv ./home/.bashrc ~/.bashrc
cp -rfv ./home/.bash_profile ~/.bash_profile
cp -rfv ./home/.config/zsh/ ~/.config/zsh/
cp -rfv ./home/.local/share/zsh/ ~/.local/share/zsh/
;;
fish)
cp -rfv ./home/.bashrc ~/.bashrc
cp -rfv ./home/.bash_profile ~/.bash_profile
cp -rfv ./home/.config/fish/ ~/.config/fish/
mkdir -pv ~/.config/fish/completions
;;
*)
exit ;;
esac
echo "
~~~ Installing ${server} specified config ~~~
"
case ${server} in
wayland)
cp -rfv ./home/.config/foot/ ~/.config/foot/
cp -rfv ./home/.config/hikari/ ~/.config/hikari/
cp -rfv ./home/.config/mako/ ~/.config/mako/
cp -rfv ./home/.config/nwg-launchers/ ~/.config/nwg-launchers/
cp -rfv ./home/.config/river/ ~/.config/river/
cp -rfv ./home/.config/sway/ ~/.config/sway/
cp -rfv ./home/.config/swaylock/ ~/.config/swaylock/
cp -rfv ./home/.config/waybar/ ~/.config/waybar/
cp -rfv ./home/.config/wofi/ ~/.config/wofi/
cp -rfv ./home/.config/imv/ ~/.config/imv/
cp -rfv ./home/.config/wayfire.ini ~/.config/wayfire.ini
;;
x11)
cp -rfv ./home/.config/bsp-layout/ ~/.config/bsp-layout/
cp -rfv ./home/.config/bspwm/ ~/.config/bspwm/
cp -rfv ./home/.config/dunst/ ~/.config/dunst/
cp -rfv ./home/.config/kitty/ ~/.config/kitty/
cp -rfv ./home/.config/polybar/ ~/.config/polybar/
cp -rfv ./home/.config/rofi/ ~/.config/rofi/
cp -rfv ./home/.config/spectrwm/ ~/.config/spectrwm/
cp -rfv ./home/.config/sxhkd/ ~/.config/sxhkd/
cp -rfv ./home/.config/X11/ ~/.config/X11/
cp -rfv ./home/.config/greenclip.cfg ~/.config/greenclip.cfg
cp -rfv ./home/.config/picom.conf ~/.config/picom.conf
;;
*)
exit ;;
esac
echo "
~~~ Installing standard config ~~~
"
# Assests
mkdir -pv ~/Pictures
cp -rfv ./home/Pictures/Animated/ ~/Pictures/Animated/
cp -rfv ./home/Pictures/Wallpapers/ ~/Pictures/Wallpapers/
cp -rfv ./home/.local/share/fonts/ ~/.local/share/fonts/
# Scripts
cp -rfv ./home/.local/bin/ ~/.local/bin/
# The bloated dotfiles itself
cp -rfv ./home/.config/alacritty/ ~/.config/alacritty/
cp -rfv ./home/.config/amfora/ ~/.config/amfora/
cp -rfv ./home/.config/bottom/ ~/.config/bottom/
cp -rfv ./home/.config/cava/ ~/.config/cava/
cp -rfv ./home/.config/cointop/ ~/.config/cointop/
cp -rfv ./home/.config/doom/ ~/.config/doom/
cp -rfv ./home/.config/gallery-dl/ ~/.config/gallery-dl/
cp -rfv ./home/.config/GIMP/ ~/.config/GIMP/
cp -rfv ./home/.config/git/ ~/.config/git/
cp -rfv ./home/.config/gtk-3.0/ ~/.config/gtk-3.0/
cp -rfv ./home/.config/mpd/ ~/.config/mpd/
cp -rfv ./home/.config/mpDris2/ ~/.config/mpDris2/
cp -rfv ./home/.config/ncmpcpp/ ~/.config/ncmpcpp/
cp -rfv ./home/.config/neofetch/ ~/.config/neofetch/
cp -rfv ./home/.config/newsboat/ ~/.config/newsboat/
cp -rfv ./home/.config/npm/ ~/.config/npm/
cp -rfv ./home/.config/nvim/ ~/.config/nvim/
cp -rfv ./home/.config/qutebrowser/ ~/.config/qutebrowser/
cp -rfv ./home/.config/ranger/ ~/.config/ranger/
cp -rfv ./home/.config/tmux/ ~/.config/tmux/
cp -rfv ./home/.config/translate-shell/ ~/.config/translate-shell/
cp -rfv ./home/.config/tridactyl/ ~/.config/tridactyl/
cp -rfv ./home/.config/vifm/ ~/.config/vifm/
cp -rfv ./home/.config/youtube-dl/ ~/.config/youtube-dl/
cp -rfv ./home/.config/zathura/ ~/.config/zathura/
cp -rfv ./home/.config/mimeapps.list ~/.config/mimeapps.list
cp -rfv ./home/.config/pulsemixer.cfg ~/.config/pulsemixer.cfg
cp -rfv ./home/.config/starship.toml ~/.config/starship.toml
echo "
~~~ Cloning submodules ~~~
"
[ -d ~/.config/emacs ] || git clone https://github.com/hlissner/doom-emacs ~/.config/emacs
[ -d ~/.config/tmux/plugins/tpm ] || git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
[ -d ~/.config/ranger/plugins/ranger_devicons ] || git clone https://github.com/FollieHiyuki/ranger_devicons ~/.config/ranger/plugins/ranger_devicons
# Post deployment
mkdir -pv ~/.local/share/bash
mkdir -pv ~/.local/share/mpd/playlists
mkdir -pv ~/.local/share/gallery-dl
# tridactyl needs `tridactylrc` to exist
touch ~/.config/tridactyl/tridactylrc
mkdir -pv ~/.local/share/gnupg
chmod -v 700 ~/.local/share/gnupg
cp -rfv ./home/.local/share/gnupg/gpg-agent.conf ~/.local/share/gnupg/
chmod -v 600 ~/.local/share/gnupg/*
# chsh -s /usr/bin/${shell} ${USER}
echo "
~~~ Finished ~~~"

7
home/.bash_profile

@ -0,0 +1,7 @@
#!/bin/bash
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
# if [[ "$(tty)" = "/dev/tty1" ]]; then
# exec startx $HOME/.config/X11/xinitrc
# fi

85
home/.bashrc

@ -0,0 +1,85 @@
#!/usr/bin/env bash
# a minimal approach when bash is not a default shell
export BASH_COMPLETION_USER_DIR="$HOME/.local/share/bash"
export HISTFILE="$HOME/.local/share/bash/bash_history"
# ________ _______________
# __ ___/______ /__ /___(_)_____________ ________
# _____ \_ _ \ __/ __/_ /__ __ \_ __ `/_ ___/
# ____/ // __/ /_ / /_ _ / _ / / / /_/ /_(__ )
# /____/ \___/\__/ \__/ /_/ /_/ /_/_\__, / /____/
# /____/
# vi mode
set -o vi
# ignore upper and lowercase when TAB completion
bind "set completion-ignore-case on"
# Shell options
shopt -s autocd
shopt -s cdspell
shopt -s cmdhist
shopt -s dotglob
shopt -s checkwinsize
shopt -s expand_aliases
shopt -s histappend
# ________ _____
# ___ __ \___________________ _____________ /_
# __ /_/ /_ ___/ __ \_ __ `__ \__ __ \ __/
# _ ____/_ / / /_/ / / / / / /_ /_/ / /_
# /_/ /_/ \____//_/ /_/ /_/_ .___/\__/
# /_/
#
# get current branch in git repo
parse_git_branch() {
BRANCH=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
if [ ! "${BRANCH}" = "" ]
then
STAT=$(parse_git_dirty)
echo "${BRANCH}${STAT}"
else
echo ""
fi
}
# get current status of git repo
parse_git_dirty() {
status=$(git status 2>&1 | tee)
dirty=$(echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?")
untracked=$(echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?")
ahead=$(echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?")
newfile=$(echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?")
renamed=$(echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?")
deleted=$(echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?")
bits=''
if [ "${ahead}" = "0" ]; then
bits="*${bits}"
fi
if [ "${renamed}" = "0" ]; then
bits=">${bits}"
fi
if [ "${newfile}" = "0" ]; then
bits="+${bits}"
fi
if [ "${untracked}" = "0" ]; then
bits="?${bits}"
fi
if [ "${deleted}" = "0" ]; then
bits="x${bits}"
fi
if [ "${dirty}" = "0" ]; then
bits="!${bits}"
fi
if [ ! "${bits}" = "" ]; then
echo " ${bits}"
else
echo ""
fi
}
# Prompt
export PS1="\[$(tput bold)\]\[$(tput setaf 1)\]╭─[\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \$(if [[ \$? == 0 ]]; then echo \"\[$(tput setaf 2)\]\342\234\223\"; else echo \"\[$(tput setaf 1)\]\342\234\227\"; fi)\[$(tput setaf 1)\]] \[$(tput setaf 5)\]\w \[$(tput setaf 2)\]\`parse_git_branch\`\n\[$(tput setaf 1)\]╰\[$(tput sgr0)\] "
export PS2="\[\e[1;31m\]> "

767
home/.bashrc-bloated

@ -0,0 +1,767 @@
#!/usr/bin/env bash
# __________
# ___ ____/_________ __
# __ __/ __ __ \_ | / /
# _ /___ _ / / /_ |/ /
# /_____/ /_/ /_/_____/
#
# XDG thingy
export XDG_CONFIG_HOME=$HOME/.config
export XDG_CACHE_HOME=$HOME/.cache
export XDG_DATA_HOME=$HOME/.local/share
export XDG_DATA_DIRS=$HOME/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
# alternate paths
export HISTFILE="$XDG_DATA_HOME/bash/bash_history"
export BASH_COMPLETION_USER_DIR="$XDG_DATA_HOME/bash"
export LESSHISTFILE=-
export MOST_INITFILE=$XDG_CONFIG_HOME/mostrc
export GTK2_RC_FILES=$XDG_CONFIG_HOME/gtk-2.0/gtkrc
export TERMINFO="$XDG_DATA_HOME/terminfo"
export TERMINFO_DIRS="$XDG_DATA_HOME/terminfo:/usr/share/terminfo"
export GOPATH=$XDG_DATA_HOME/go
export GRADLE_USER_HOME=$XDG_DATA_HOME/gradle
export _JAVA_OPTIONS=-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java
export NODE_REPL_HISTORY=$XDG_CACHE_HOME/node_repl_history
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
export NPM_CONFIG_PREFIX="$XDG_DATA_HOME/npm-global"
export CARGO_HOME=$XDG_DATA_HOME/cargo
export RUSTUP_HOME=$XDG_DATA_HOME/rustup
export BUNDLE_USER_CONFIG=$XDG_CONFIG_HOME/bundle
export BUNDLE_USER_CACHE=$XDG_CACHE_HOME/bundle
export BUNDLE_USER_PLUGIN=$XDG_DATA_HOME/bundle
export GEM_HOME=$XDG_DATA_HOME/gem
export GEM_SPEC_CACHE=$XDG_CACHE_HOME/gem
export DOCKER_CONFIG=$XDG_CONFIG_HOME/docker
export GNUPGHOME=$XDG_DATA_HOME/gnupg
export JUPYTER_CONFIG_DIR=$XDG_CONFIG_HOME/jupyter
export IPYTHONDIR=$XDG_CONFIG_HOME/ipython
export XAUTHORITY=$XDG_RUNTIME_DIR/Xauthority
export XINITRC=$XDG_CONFIG_HOME/X11/xinitrc
export XSERVERRC=$XDG_CONFIG_HOME/X11/xserverrc
# env
export PAGER=less
export VISUAL=nvim
export EDITOR=nvim
export SVDIR=$HOME/.local/share/service
export _JAVA_AWT_WM_NONREPARENTING=1
export GPG_TTY="$(tty)"
# bat
export BAT_THEME="base16"
# pfetch
export PF_INFO="ascii title kernel wm shell uptime pkgs memory"
# fzf
export FZF_DEFAULT_OPTS="--multi --layout=reverse --inline-info
--color fg:#D8DEE9,bg:#2E3440,hl:#A3BE8C,fg+:#D8DEE9,bg+:#434C5E,hl+:#A3BE8C
--color pointer:#BF616A,info:#4C566A,spinner:#4C566A,header:#4C566A,prompt:#81A1C1,marker:#EBCB8B"
# export FZF_DEFAULT_OPTS="--multi --layout=reverse --inline-info
# --color dark
# --color fg:-1,bg:-1,hl:#c678dd,fg+:#ffffff,bg+:#4b5263,hl+:#d858fe
# --color info:#98c379,prompt:#61afef,pointer:#be5046,marker:#e5c07b,spinner:#61afef,header:#61afef"
export FZF_DEFAULT_COMMAND="fd --type f --follow --hidden --exclude .git"
export FZF_CTRL_T_OPTS="--no-height --preview-window 'left:60%' --preview '$HOME/.local/bin/garbage/preview {} 2>/dev/null'"
export FZF_CTRL_T_COMMAND="fd --follow --hidden --exclude .git"
export FZF_ALT_C_OPTS="--preview 'tree -La 1 -C --dirsfirst {} 2>/dev/null'"
export FZF_ALT_C_COMMAND="fd --type d --follow --hidden --exclude .git"
export FZF_TMUX=1
# ibus
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
# qt5ct
export QT_QPA_PLATFORMTHEME=qt5ct
export QT_PLATFORM_PLUGIN=qt5ct
# .NET
export DOTNET_CLI_TELEMETRY_OPTOUT=1
# z.lua
export _ZL_DATA="$HOME/.local/share/zlua/zlua"
export _ZL_HYPHEN=1
export _ZL_MATCH_MODE=1
export _ZL_FZF_FLAG="-e"
export _ZL_INT_SORT=1
export _ZL_ROOT_MARKERS=".git,.svn,.hg,.root,package.json,.projectile,.pro"
export RANGER_ZLUA="$HOME/.local/share/bash/z.lua"
# Basher
export BASHER_ROOT="$HOME/.local/share/bash/basher"
# nodenv
export NODENV_ROOT="$HOME/.local/share/nodenv"
# pyenv
export PYENV_ROOT="$HOME/.local/share/pyenv"
# poetry
export POETRY_HOME="$HOME/.local/share/poetry"
# nnn
if command -v nnn >/dev/null
then
export TERMINAL=alacritty # for the preview script
export NNN_PLUG='t:preview-tui;m:nmount;f:fzcd;c:chksum;n:nuke;z:fzz;b:bulknew;d:dups:h:hexview;o:organize;p:pdfview;s:suedit'
export NNN_FIFO="/tmp/nnn.fifo"
export NNN_ARCHIVE='\\.(7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)$'
export NNN_OPENER="$XDG_CONFIG_HOME/nnn/plugins/nuke"
export USE_SCOPE=1
export NNN_COLORS='2345'
export NNN_FCOLORS='c1e2272e006033f7c6d6abc4'
export NNN_BMS="h:~;C:~/Code;D:~/Downloads;P:~/Pictures;V:~/Videos;A:~/Media;U:~/Music;f:~/.config;l:~/.local/share;e:/etc;u:/usr/share;o:/opt;b:/boot;m:/media;M:/mnt;i:/run/media/$USER;v:/var;t:/tmp;d:/dev;s:/srv;r:/;k:/bedrock/strata"
export NNN_SSHFS="sshfs -o reconnect,idmap=user,follow_symlinks"
fi
# lf
if command -v lf >/dev/null
then
export LF_ICONS="\
tw=:\
st=:\
ow=:\
dt=:\
di=:\
fi=:\
ln=:\
or=:\
ex=:\
*.7z=:\
*.a=:\
*.ace=:\
*.alz=:\
*.ai=:\
*.apk=:\
*.arc=:\
*.arj=:\
*.asm=:\
*.asp=:\
*.aup=:\
*.avi=:\
*.awk=:\
*.bash=:\
*.bat=:\
*.bmp=:\
*.bz=:\
*.bz2=:\
*.c=:\
*.c++=:\
*.cab=:\
*.cbr=:\
*.cbz=:\
*.cc=:\
*.class=:\
*.clj=:\
*.cljc=:\
*.cljs=:\
*.cmake=:\
*.cmd=:\
*.coffee=:\
*.conf=:\
*.cp=:\
*.cpio=:\
*.cpp=:\
*.cs=:\
*.csh=:\
*.css=:\
*.cue=:\
*.cvs=:\
*.cxx=:\
*.d=:\
*.dart=:\
*.db=:\
*.deb=:\
*.diff=:\
*.dll=:\
*.doc=:\
*.docx=:\
*.dump=:\
*.dwm=:\
*.dz=:\
*.edn=:\
*.eex=:\
*.efi=:\
*.ejs=:\
*.elf=:\
*.elm=:\
*.epub=:\
*.ear=:\
*.erl=:\
*.esd=:\
*.ex=:\
*.exe=:\
*.exs=:\
*.f#=:\
*.fifo=|:\
*.fish=:\
*.flac=:\
*.flv=:\
*.fs=:\
*.fsi=:\
*.fsscript=:\
*.fsx=:\
*.gem=:\
*.gemspec=:\
*.gif=:\
*.go=:\
*.gz=:\
*.gzip=:\
*.h=:\
*.haml=:\
*.hbs=:\
*.hh=:\
*.hpp=:\
*.hrl=:\
*.hs=:\
*.htaccess=:\
*.htm=:\
*.html=:\
*.htpasswd=:\
*.hxx=:\
*.ico=:\
*.img=:\
*.ini=:\
*.iso=:\
*.jar=:\
*.java=:\
*.jl=:\
*.jpeg=:\
*.jpg=:\
*.js=:\
*.json=:\
*.jsx=:\
*.key=:\
*.ksh=:\
*.leex=:\
*.less=:\
*.lha=:\
*.lhs=:\
*.log=:\
*.lrz=:\
*.lua=:\
*.lz=:\
*.lz4=:\
*.lzh=:\
*.lzma=:\
*.lzo=:\
*.m2v=:\
*.m4a=:\
*.m4v=:\
*.markdown=:\
*.md=:\
*.mdx=:\
*.mjpeg=:\
*.mjpg=:\
*.mjs=:\
*.mkv=:\
*.ml=λ:\
*.mli=λ:\
*.mng=:\
*.mov=:\
*.mp3=:\
*.mp4=:\
*.mp4v=:\
*.mpeg=:\
*.mpg=:\
*.msi=:\
*.mustache=:\
*.nix=:\
*.o=:\
*.odt=:\
*.ods=:\
*.odp=:\
*.ogg=:\
*.pdf=:\
*.php=:\
*.pl=:\
*.pm=:\
*.png=:\
*.pp=:\
*.ppt=:\
*.pptx=:\
*.pro=:\
*.ps1=:\
*.psb=:\
*.pub=:\
*.py=:\
*.pyc=:\
*.pyd=:\
*.pyo=:\
*.r=ﳒ:\
*.rake=:\
*.rar=:\
*.rb=:\
*.rc=:\
*.rlib=:\
*.rmd=:\
*.rom=:\
*.rpm=:\
*.rproj=鉶:\
*.rs=:\
*.rss=:\
*.rtf=:\
*.rz=:\
*.s=:\
*.sar=:\
*.sass=:\
*.scala=:\
*.scss=:\
*.sh=:\
*.slim=:\
*.sln=:\
*.so=:\
*.sql=:\
*.styl=:\
*.suo=:\
*.svg=:\
*.swift=:\
*.swm=:\
*.t=:\
*.t7z=:\
*.tar=:\
*.taz=:\
*.tbz=:\
*.tbz2=:\
*.tex=ﭨ:\
*.tgz=:\
*.tif=:\
*.tiff=:\
*.tlz=:\
*.toml=:\
*.ts=:\
*.tsx=:\
*.txz=:\
*.tz=:\
*.tzo=:\
*.tzst=:\
*.twig=:\
*.vifm=:\
*.vim=:\
*.vimrc=:\
*.vob=:\
*.vue=﵂:\
*.wav=:\
*.war=:\
*.webm=:\
*.webmanifest=:\
*.webp=:\
*.wim=:\
*.xbm=:\
*.xbps=:\
*.xcplayground=:\
*.xhtml=:\
*.xls=:\
*.xlsx=:\
*.xml=:\
*.xpm=:\
*.xul=:\
*.xz=:\
*.yaml=:\
*.yml=:\
*.z=:\
*.zip=:\
*.zoo=:\
*.zsh=:\
*.zip=:\
*.zst=:\
"
fi
# PATH
export PATH=$HOME/.local/bin:$HOME/.local/bin/fzf:$HOME/.local/share/bash/basher/bin:$NODENV_ROOT/bin:$PYENV_ROOT/bin:$POETRY_HOME/bin:$CARGO_HOME/bin:$NPM_CONFIG_PREFIX/bin:$PATH
# _________________
# ___ |__ /__(_)_____ ________
# __ /| |_ /__ /_ __ `/_ ___/
# _ ___ | / _ / / /_/ /_(__ )
# /_/ |_/_/ /_/ \__,_/ /____/
#
# remap
alias doas="doas --"
alias p="pulsemixer"
alias ls="exa -lF --icons --sort=type"
alias la="exa -laF --icons --sort=type"
alias lt="exa --tree"
alias cp="cp -vir"
alias mv="mv -vir"
alias rm="rm -vr"
alias mkdir="mkdir -pv"
alias no="grep -viP"
alias wttr="curl wttr.in"
alias myip="curl ipinfo.io/geo"
alias latest_pkg="expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort | tail -n 30"
alias yarn="yarn --use-yarnrc $XDG_CONFIG_HOME/yarn/config"
alias tmux="TERM=screen-256color tmux"
alias cat="bat --style plain --color=always"
alias startx="startx $HOME/.config/X11/xinitrc"
alias fehwpp="feh --no-fehbg --bg-fill --randomize ~/Pictures/Wallpapers/*"
# colorizing
alias grep="grep --color=auto"
alias fgrep="fgrep --color=auto"
alias egrep="egrep --color=auto"
alias diff="diff --color=auto"
alias ncdu="ncdu --color=dark"
alias ip="ip -color=always"
# vim
alias v="nvim"
alias vi='nvim -o "$(fzf)"'
# emacs
alias doom="$HOME/.config/emacs/bin/doom"
alias e="emacs -nw"
alias emacs="emacsclient -c -a 'emacs'"
# rsync
alias rsyncdir="rsync -uavP --delete-after"
alias rsyncfile="rsync -avP"
# youtube-dl
alias yoump3="youtube-dl --extract-audio --audio-format mp3 --embed-thumbnail"
alias youflac="youtube-dl --extract-audio --audio-format flac"
alias youbest="youtube-dl -f bestvideo+bestaudio"
alias youlist="youtube-dl -f bestvideo+bestaudio --yes-playlist"
# z.lua
alias zz='z -c' # restrict matches to subdirs of $PWD
alias zi='z -i' # cd with interactive selection
alias zf='z -I' # use fzf to select in multiple matches
alias zb='z -b' # quickly cd to the parent directory
# nnn
alias nnn="nnn -Hc"
alias ncp="cat ${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} | tr '\0' '\n'"
# Lazy cd-ing
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# colorize man pages
man() {
LESS_TERMCAP_mb=$'\e[01;31m' \
LESS_TERMCAP_md=$'\e[01;36m' \
LESS_TERMCAP_me=$'\e[0m' \
LESS_TERMCAP_se=$'\e[0m' \
LESS_TERMCAP_so=$'\e[01;44;33m' \
LESS_TERMCAP_ue=$'\e[0m' \
LESS_TERMCAP_us=$'\e[01;32m' \
command man $@
}
alias x=extract
extract() {
local remove_archive
local success
local extract_dir
if (( $# == 0 )); then
cat <<-'EOF' >&2
Usage: extract [-option] [file ...]
Options:
-r, --remove Remove archive after unpacking.
EOF
fi
remove_archive=1
if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
remove_archive=0
shift
fi
while (( $# > 0 )); do
if [[ ! -f "$1" ]]; then
echo "extract: '$1' is not a valid file" >&2
shift
continue
fi
success=0
extract_dir="${1:t:r}"
case "${1:l}" in
*.tar.gz|*.tgz) tar zxvf "$1" ;;
*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
*.tar.xz|*.txz)
tar --xz -xvf "$1" || xzcat "$1" | tar xvf - ;;
*.tar.zma|*.tlz)
tar --lzma -xvf "$1" || lzcat "$1" | tar xvf - ;;
*.tar.zst|*.tzst)
tar --zstd -xvf "$1" || zstdcat "$1" | tar xvf - ;;
*.tar) tar xvf "$1" ;;
*.tar.lz) tar xvf "$1" ;;
*.tar.lz4) lz4 -c -d "$1" | tar xvf - ;;
*.tar.lrz) lrzuntar "$1" ;;
*.gz) gunzip -k "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.xz) unxz "$1" ;;
*.lrz) lrunzip "$1" ;;
*.lz4) lz4 -d "$1" ;;
*.lzma) unlzma "$1" ;;
*.z) uncompress "$1" ;;
*.zip|*.war|*.jar|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d "$extract_dir" ;;
*.rar) unrar x -ad "$1" ;;
*.rpm) mkdir "$extract_dir" && cd "$extract_dir" && rpm2cpio "../$1" | cpio --quiet -id && cd .. ;;
*.7z) 7za x "$1" ;;
*.deb)
mkdir -p "$extract_dir/control"
mkdir -p "$extract_dir/data"
cd "$extract_dir"; ar vx "../${1}" > /dev/null
cd control; tar xzvf ../control.tar.gz
cd ../data; extract ../data.tar.*
cd ..; rm *.tar.* debian-binary
cd ..
;;
*.zst) unzstd "$1" ;;
*)
echo "extract: '$1' cannot be extracted" >&2
success=1
;;
esac
(( success = $success > 0 ? $success : $? ))
(( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
shift
done
}
# update Basher
basher_update() {
pushd $HOME/.local/share/bash/basher >/dev/null || exit
git pull
echo -e "\e[01;34mFinished updating Basher\e[0m"
popd >/dev/null || exit
}
# upgrade Basher's packages
basherpacks_update() {
packages=$(basher list)
for pack in $packages
do
echo -e "\e[01;34mUpgrading $pack\e[0m"
basher upgrade "$pack" >/dev/null 2>&1
done
}
# nnn with cd on quit
n ()
{
# Block nesting of nnn in subshells
if [[ -n $NNNLVL ]] && [ "${NNNLVL:-0}" -ge 1 ]; then
echo "nnn is already running"
return
fi
# The default behaviour is to cd on quit (nnn checks if NNN_TMPFILE is set)
# To cd on quit only on ^G, remove the "export" as in:
# NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
# NOTE: NNN_TMPFILE is fixed, should not be modified
export NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
# Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn
# stty start undef
# stty stop undef
# stty lwrap undef
# stty lnext undef
nnn "$@"
if [ -f "$NNN_TMPFILE" ]; then
. "$NNN_TMPFILE"
rm -f "$NNN_TMPFILE" > /dev/null
fi
}
# nnn in dual pane mode (tmux)
n2() {
tmux new-session -d -s nnn -n nnn "nnn -Hc"
tmux split-window -h "nnn -Hc"
TERM=screen-256color tmux attach -t nnn:nnn
}
# typing speed testing
tt() {
iconv -f UTF-8 -t ASCII "$1" | sed 's/--/-/g' \
| sed '/^$/d' | sed 's/^[ \t]*//' | sed 's/\(^.\{1,80\}\).*/\1/' \
> /tmp/tt.txt
command tt /tmp/tt.txt
}
# ________ ______
# ___ __ )_____ __________ /______________
# __ __ | __ `/_ ___/_ __ \ _ \_ ___/
# _ /_/ // /_/ /_(__ )_ / / / __/ /
# /_____/ \__,_/ /____/ /_/ /_/\___//_/
#
# Install Basher if missing
if [[ ! -d $HOME/.local/share/bash/basher ]]; then
git clone https://github.com/basherpm/basher.git $HOME/.local/share/bash/basher
fi
eval "$(basher init - bash)"
# Plugins
# [[ -d $HOME/.local/share/bash/basher/cellar/packages/kazhala/dotbare ]] || basher install kazhala/dotbare
[[ -d $HOME/.local/share/bash/basher/cellar/packages/wfxr/forgit ]] || basher install wfxr/forgit
[[ -d $HOME/.local/share/bash/basher/cellar/packages/holman/spark ]] || basher install holman/spark
[[ -d $HOME/.local/share/bash/basher/cellar/packages/unixorn/git-extra-commands ]] || basher install unixorn/git-extra-commands
# Plugins' init
# include kazhala/dotbare dotbare.plugin.bash && _dotbare_completion_cmd
include wfxr/forgit forgit.plugin.sh
# ________ _______________
# __ ___/______ /__ /___(_)_____________ ________
# _____ \_ _ \ __/ __/_ /__ __ \_ __ `/_ ___/
# ____/ // __/ /_ / /_ _ / _ / / / /_/ /_(__ )
# /____/ \___/\__/ \__/ /_/ /_/ /_/_\__, / /____/
# /____/
#
mkdir -p "$BASH_COMPLETION_USER_DIR/completions"
# github cli completion
if command -v gh >/dev/null && [ ! -f "$BASH_COMPLETION_USER_DIR/completions/gh" ]; then
gh completion -s bash > "$BASH_COMPLETION_USER_DIR/completions/gh"
fi
# kitten from kitty
if command -v kitty > /dev/null; then
source <(kitty + complete setup bash)
fi
# Starship prompt
if command -v starship > /dev/null; then
eval "$(starship init bash --print-full-init)"
fi
# direnv
if command -v direnv >/dev/null ; then
eval "$(direnv hook bash)"
fi
# poetry
# if [ ! -d "$POETRY_HOME" ]; then
# curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
# fi
# if [[ ! -f $BASH_COMPLETION_USER_DIR/completions/poetry ]]; then
# poetry completions bash > "$BASH_COMPLETION_USER_DIR/completions/poetry"
# fi
# pyenv
# if [[ ! -d $PYENV_ROOT ]]; then
# git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT
# git clone https://github.com/pyenv/pyenv-virtualenv.git $PYENV_ROOT/plugins/pyenv-virtualenv
# git clone https://github.com/pyenv/pyenv-update.git $PYENV_ROOT/plugins/pyenv-update
# fi
# eval "$(pyenv init -)"
# eval "$(pyenv virtualenv-init -)"
# nodenv
# if [[ ! -d $NODENV_ROOT ]]; then
# git clone https://github.com/nodenv/nodenv.git $NODENV_ROOT
# mkdir -p $NODENV_ROOT/plugins
# git clone https://github.com/nodenv/node-build.git $NODENV_ROOT/plugins/node-build
# git clone https://github.com/nodenv/nodenv-env.git $NODENV_ROOT/plugins/nodenv-env
# git clone https://github.com/nodenv/nodenv-man.git $NODENV_ROOT/plugins/nodenv-man
# git clone https://github.com/nodenv/nodenv-aliases.git $NODENV_ROOT/plugins/nodenv-aliases
# git clone https://github.com/nodenv/nodenv-each.git $NODENV_ROOT/plugins/nodenv-each
# git clone https://github.com/nodenv/nodenv-update.git $NODENV_ROOT/plugins/nodenv-update
# git clone https://github.com/nodenv/nodenv-vars.git $NODENV_ROOT/plugins/nodenv-vars
# fi
# eval "$(nodenv init -)"
# z.lua
if [[ ! -f "$HOME/.local/share/bash/z.lua" ]]; then
curl -sfLo $HOME/.local/share/bash/z.lua https://raw.githubusercontent.com/skywind3000/z.lua/master/z.lua
mkdir -p $HOME/.local/share/zlua
fi
eval "$(lua $HOME/.local/share/bash/z.lua --init bash fzf)"
# autostart gpg-agent at login
if ! pgrep -u "$USER" gpg-agent >/dev/null; then
gpg-agent --daemon --enable-ssh-support >/dev/null
fi
if [[ -z "$SSH_AUTH_SOCK" ]]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
gpg-connect-agent updatestartuptty /bye >/dev/null
# vi mode
set -o vi
bind 'set show-mode-in-prompt on'
bind 'set vi-cmd-mode-string "\e[01;32mN "'
bind 'set vi-ins-mode-string "\e[01;32mI "'
# ignore upper and lowercase when TAB completion
bind "set completion-ignore-case on"
# Shell options
shopt -s autocd
shopt -s cdspell
shopt -s cmdhist
shopt -s dotglob
shopt -s checkwinsize
shopt -s expand_aliases
shopt -s histappend
# this is overkilled but it works conveniently
[[ -d $HOME/.local/share/bash/basher/cellar/packages/junegunn/fzf ]] || basher install junegunn/fzf
include junegunn/fzf shell/key-bindings.bash
include junegunn/fzf shell/completion.bash
export FZF_COMPLETION_OPTS='-x'
# Use fd instead of find for fzf_completion
_fzf_compgen_path() {
fd --hidden --follow --exclude ".git" . "$1"
}
_fzf_compgen_dir() {
fd --type d --hidden --follow --exclude ".git" . "$1"
}
# Some more completions with fzf
_fzf_setup_completion path ag kubectl
_fzf_setup_completion dir tree
# ^X^R
bind "$(bind -s | grep '^"\\C-r"' | sed 's/"/"\\C-x/' | sed 's/"$/\\C-m"/')"
# ________ _____
# ___ __ \___________________ _____________ /_
# __ /_/ /_ ___/ __ \_ __ `__ \__ __ \ __/
# _ ____/_ / / /_/ / / / / / /_ /_/ / /_
# /_/ /_/ \____//_/ /_/ /_/_ .___/\__/
# /_/
#
# get current branch in git repo
parse_git_branch() {
BRANCH=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
if [ ! "${BRANCH}" = "" ]
then
STAT=$(parse_git_dirty)
echo "${BRANCH}${STAT}"
else
echo ""
fi
}
# get current status of git repo
parse_git_dirty() {
status=$(git status 2>&1 | tee)
dirty=$(echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?")
untracked=$(echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?")
ahead=$(echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?")
newfile=$(echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?")
renamed=$(echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?")
deleted=$(echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?")
bits=''
if [ "${ahead}" = "0" ]; then
bits="*${bits}"
fi
if [ "${renamed}" = "0" ]; then
bits=">${bits}"
fi
if [ "${newfile}" = "0" ]; then
bits="+${bits}"
fi
if [ "${untracked}" = "0" ]; then
bits="?${bits}"
fi
if [ "${deleted}" = "0" ]; then
bits="x${bits}"
fi
if [ "${dirty}" = "0" ]; then
bits="!${bits}"
fi
if [ ! "${bits}" = "" ]; then
echo " ${bits}"
else
echo ""
fi
}
# Prompt
export PS1="\[$(tput bold)\]\[$(tput setaf 1)\]╭─[\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \$(if [[ \$? == 0 ]]; then echo \"\[$(tput setaf 2)\]\342\234\223\"; else echo \"\[$(tput setaf 1)\]\342\234\227\"; fi)\[$(tput setaf 1)\]] \[$(tput setaf 5)\]\w \[$(tput setaf 2)\]\`parse_git_branch\`\n\[$(tput setaf 1)\]╰\[$(tput sgr0)\] "
export PS2="\[\e[1;31m\]> "
# _________ __________
# __ ____/__________________ /___(_)_____________ _
# _ / __ __ ___/ _ \ _ \ __/_ /__ __ \_ __ `/
# / /_/ / _ / / __/ __/ /_ _ / _ / / / /_/ /
# \____/ /_/ \___/\___/\__/ /_/ /_/ /_/_\__, /
# /____/
$HOME/.local/bin/bunny

BIN
home/.config/GIMP/2.10/splashes/splash.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 MiB

118
home/.config/X11/Xresources

@ -0,0 +1,118 @@
! general
Xft.dpi: 96
Xft.autohint: 1
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintslight
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
! --- Nord --- !
*.foreground: #d8dee9
*.background: #2e3440
*.cursorColor: #d8dee9
*.color0: #3b4252
*.color8: #4c566a
*.color1: #bf616a
*.color9: #bf616a
*.color2: #a3be8c
*.color10: #a3be8c
*.color3: #ebcb8b
*.color11: #ebcb8b
*.color4: #81a1c1
*.color12: #81a1c1
*.color5: #b48ead
*.color13: #b48ead
*.color6: #88c0d0
*.color14: #8fbcbb
*.color7: #e5e9f0
*.color15: #eceff4
! -- OneDark -- !
! *.foreground: #abb2bf
! *.background: #282c34
! *.cursorColor: #bbc2cf
! *.color0: #282c34
! *.color8: #3e4452
! *.color1: #be5046
! *.color9: #e06c75
! *.color2: #98c379
! *.color10: #98c379
! *.color3: #d19a66
! *.color11: #e5c07b
! *.color4: #61afef
! *.color12: #61afef
! *.color5: #c678dd
! *.color13: #c678dd
! *.color6: #56b6c2
! *.color14: #56b6c2
! *.color7: #abb2bf
! *.color15: #bbc2cf
! _____ _________ _____
! __ / / /__ __ \___ ____ ___ /_
! _ / / /__ /_/ /_ |/_/_ | / / __/
! / /_/ / _ _, _/__> < __ |/ // /_
! \____/ /_/ |_| /_/|_| _____/ \__/
! font
URxvt.font: xft:Iosevka Nerd Font:size=12
URxvt.boldFont: xft:Iosevka Nerd Font:style=Bold:size=12
URxvt.italicFont: xft:Iosevka Nerd Font:style=Italic:size=12
URxvt.boldItalicFont: xft:Iosevka Nerd Font:style=Bold Italic:size=12
! spacing
URxvt.letterSpace: -1
URxvt.lineSpace: 0
! do not scroll with output
URxvt*scrollTtyOutput: false
! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
URxvt*scrollWithBuffer: true
! scroll back to the bottom on keypress
URxvt*scrollTtyKeypress: true
! no scrollbar
URxvt.scrollBar: false
URxvt.scrollBar_right: false
URxvt.scrollBar_floating: false
URxvt.scrollstyle: rxvt
! no scrollback buffer in secondary screen
URxvt.secondaryScreen: 1
URxvt.secondaryScroll: 0
! no output when pressing Print
URxvt.print-pipe: "cat > /dev/null"
! ring
URxvt.urgentOnBell: false
! transparency
URxvt.depth: 32
! ibus
URxvt.inputMethod: ibus
URxvt.preeditType: OverTheSpot
! perl extensions
URxvt.perl-ext-common:default,matcher,tabbed,clipboard,resize-font
! urls
URxvt.url-launcher: /usr/bin/firefox
URxvt.matcher.button: 1
URxvt.matcher.rend.0: Uline Bold fg3
URxvt.underlineURLs: true
URxvt.keysym.C-Delete: perl:matcher:last
URxvt.keysym.M-Delete: perl:matcher:list
! tabs
URxvt.tabbed.tabbar-fg: 4
URxvt.tabbed.tabbar-bg: 0
URxvt.tabbed.tab-fg: 0
URxvt.tabbed.tab-bg: 4
! let Ctrl+Shift work
URxvt.iso14755: false
URxvt.iso14755_52: false
! clipboard
URxvt.clipboard.autocopy: false
URxvt.keysym.C-Shift-C: perl:clipboard:copy
URxvt.keysym.C-Shift-V: perl:clipboard:paste
URxvt.keysym.C-M-v: perl:clipboard:paste_escaped
! resize-font
URxvt.keysym.C-minus:resize-font:smaller
URxvt.keysym.C-equal:resize-font:bigger
URxvt.keysym.C-0:resize-font:reset

57
home/.config/X11/xinitrc

@ -0,0 +1,57 @@
#!/bin/sh
userresources=$HOME/.config/X11/Xresources
usermodmap=$HOME/.config/X11/Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f "$userresources" ]; then
xrdb -merge "$userresources"
fi
if [ -f "$usermodmap" ]; then
xmodmap "$usermodmap"
fi
# start some nice programs
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
pipewire &
if ! pgrep -f mpd > /dev/null ;
then
mpd &
fi
dunst &
greenclip daemon &
ibus-daemon -drx &
emacs --daemon &
picom -b &
# xrandr --output eDP-1 --primary --auto --output DP-2 --left-of eDP-1 --auto --output HDMI-2 --right-of eDP-1 --auto &
# $HOME/.local/bin/garbage/off_touch &
# animatedwall --full ~/Pictures/Animated/fubuki.mp4 &
feh --no-fehbg --bg-fill --randomize ~/Pictures/Wallpapers/* &
export XDG_SESSION_TYPE=x11
export PATH=$HOME/.local/bin/X11:$PATH
session=${1:-spectrwm}
case $session in
bspwm ) exec bspwm ;;
spectrwm ) exec spectrwm -c ~/.config/spectrwm/spectrwm-nord.conf ;;
* ) exec "$1" ;;
esac

408
home/.config/alacritty/alacritty.yml

@ -0,0 +1,408 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator.
env:
TERM: alacritty
window:
padding:
x: 2
y: 2
dynamic_padding: false
decorations: none
title: Alacritty
class:
instance: Alacritty
general: Alacritty
gtk_theme_variant: dark
dynamic_title: true
scrolling:
history: 50000
multiplier: 5
font:
normal:
family: Iosevka Nerd Font
style: Regular
bold:
family: Iosevka Nerd Font
style: Bold
italic:
family: Iosevka Nerd Font
style: Italic
bold_italic:
family: Iosevka Nerd Font
style: Bold Italic
size: 12
offset:
x: 0
y: 0
glyph_offset:
x: 0
y: 0
draw_bold_text_with_bright_colors: false
colors:
# --- Nord --- #
primary:
background: '#2e3440'
foreground: '#d8dee9'
cursor:
text: '#2e3440'
cursor: '#d8dee9'
selection:
text: '#2e3440'
background: '#d8dee9'
normal:
black: '#3b4252'
red: '#bf616a'
green: '#a3be8c'
yellow: '#ebcb8b'
blue: '#81a1c1'
magenta: '#b48ead'
cyan: '#88c0d0'
white: '#e5e9f0'
bright:
black: '#4c566a'
red: '#bf616a'
green: '#a3be8c'
yellow: '#ebcb8b'
blue: '#81a1c1'
magenta: '#b48ead'
cyan: '#8fbcbb'
white: '#eceff4'
# -- OneDark -- #
# primary:
# background: '#282c34'
# foreground: '#abb2bf'
# cursor:
# text: '#282c34'
# cursor: '#bbc2cf'
# selection:
# text: '#282c34'
# background: '#abb2bf'
# normal:
# black: '#282c34'
# red: '#be5046'
# green: '#98c379'
# yellow: '#d19a66'
# blue: '#61afef'
# magenta: '#c678dd'
# cyan: '#56b6c2'
# white: '#abb2bf'
# bright:
# black: '#3e4452'
# red: '#e06c75'
# green: '#98c379'
# yellow: '#e5c07b'
# blue: '#61afef'
# magenta: '#c678dd'
# cyan: '#56b6c2'
# white: '#bbc2cf'
background_opacity: 1.0
selection:
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
# When set to `true`, selected text will be copied to the primary clipboard.
save_to_clipboard: false
cursor:
# Cursor style
#
# Values for `style`:
# - ▇ Block
# - _ Underline
# - | Beam
style: Block
#vi_mode_style: None
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
unfocused_hollow: true
# Live config reload (changes require restart)
live_config_reload: false
#shell:
# program: /bin/bash
# args:
# - --login
# Startup directory
#
# Directory the shell is started in. If this is unset, or `None`, the working
# directory of the parent process will be used.
working_directory: None
# Send ESC (\x1b) before characters when alt is pressed.
#alt_send_esc: true
mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
double_click: { threshold: 300 }
triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
hide_when_typing: true
url:
# URL launcher
#
# This program is executed when clicking on a text which is recognized as a URL.
# The URL is always added to the command as the last parameter.
#
# When set to `None`, URL launching will be disabled completely.
#
# Default:
# - (macOS) open
# - (Linux/BSD) xdg-open
# - (Windows) explorer
launcher:
program: xdg-open
args: []
# URL modifiers
#
# These are the modifiers that need to be held down for opening URLs when clicking
# on them. The available modifiers are documented in the key binding section.
modifiers: None
# Mouse bindings
#
# Mouse bindings are specified as a list of objects, much like the key
# bindings further below.
#
# To trigger mouse bindings when an application running within Alacritty captures the mouse, the
# `Shift` modifier is automatically added as a requirement.
#
# Each mouse binding will specify a:
#
# - `mouse`:
#
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# - `action` (see key bindings)
#
# And optionally:
#
# - `mods` (see key bindings)
mouse_bindings:
- { mouse: Middle, action: PasteSelection }
# Key bindings
#
# Key bindings are specified as a list of objects. For example, this is the
# default paste binding:
#
# `- { key: V, mods: Control|Shift, action: Paste }`
#
# Each key binding will specify a:
#
# - `key`: Identifier of the key pressed
#
# - A-Z
# - F1-F24
# - Key0-Key9
#
# A full list with available key codes can be found here:
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
#
# Instead of using the name of the keys, the `key` field also supports using
# the scancode of the desired key. Scancodes have to be specified as a
# decimal number. This command will allow you to display the hex scancodes
# for certain keys:
#
# `showkey --scancodes`.
#
# Then exactly one of:
#
# - `chars`: Send a byte sequence to the running application
#
# The `chars` field writes the specified string to the terminal. This makes
# it possible to pass escape sequences. To find escape codes for bindings
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
# of tmux. Note that applications use terminfo to map escape sequences back
# to keys. It is therefore required to update the terminfo when changing an
# escape sequence.
#
# - `action`: Execute a predefined action
#
# - Copy
# - Paste
# - PasteSelection
# - IncreaseFontSize
# - DecreaseFontSize
# - ResetFontSize
# - ScrollPageUp
# - ScrollPageDown
# - ScrollLineUp
# - ScrollLineDown
# - ScrollToTop
# - ScrollToBottom
# - ClearHistory
# - Hide
# - Minimize
# - Quit
# - ToggleFullscreen
# - SpawnNewInstance
# - ClearLogNotice
# - ReceiveChar
# - None
#
# (macOS only):
# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
#
# - `command`: Fork and execute a specified command plus arguments
#
# The `command` field must be a map containing a `program` string and an
# `args` array of command line parameter strings. For example:
# `{ program: "alacritty", args: ["-e", "vttest"] }`
#
# And optionally:
#
# - `mods`: Key modifiers to filter binding actions
#
# - Command
# - Control
# - Option
# - Super
# - Shift
# - Alt
#
# Multiple `mods` can be combined using `|` like this:
# `mods: Control|Shift`.
# Whitespace and capitalization are relevant and must match the example.
#
# - `mode`: Indicate a binding for only specific terminal reported modes
#
# This is mainly used to send applications the correct escape sequences
# when in different modes.
#
# - AppCursor
# - AppKeypad
# - Alt
#
# A `~` operator can be used before a mode to apply the binding whenever
# the mode is *not* active, e.g. `~Alt`.
#
# Bindings are always filled by default, but will be replaced when a new
# binding with the same triggers is defined. To unset a default binding, it can
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
# a no-op if you do not wish to receive input characters for that binding.
#
# If the same trigger is assigned to multiple actions, all of them are executed
# at once.
key_bindings:
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: L, mods: Control, action: ClearLogNotice }
- { key: L, mods: Control, chars: "\x0c" }
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt }
- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt }
# Vi Mode
- { key: Space, mods: Shift|Control, mode: Vi, action: ScrollToBottom }
- { key: Space, mods: Shift|Control, action: ToggleViMode }
- { key: Escape, mode: Vi, action: ClearSelection }
- { key: I, mode: Vi, action: ScrollToBottom }
- { key: I, mode: Vi, action: ToggleViMode }
- { key: Y, mods: Control, mode: Vi, action: ScrollLineUp }
- { key: E, mods: Control, mode: Vi, action: ScrollLineDown }
- { key: G, mode: Vi, action: ScrollToTop }
- { key: G, mods: Shift, mode: Vi, action: ScrollToBottom }
- { key: B, mods: Control, mode: Vi, action: ScrollPageUp }
- { key: F, mods: Control, mode: Vi, action: ScrollPageDown }
- { key: U, mods: Control, mode: Vi, action: ScrollHalfPageUp }
- { key: D, mods: Control, mode: Vi, action: ScrollHalfPageDown }
- { key: Y, mode: Vi, action: Copy }
- { key: Y, mode: Vi, action: ClearSelection }
- { key: Copy, mode: Vi, action: ClearSelection }
- { key: V, mode: Vi, action: ToggleNormalSelection }
- { key: V, mods: Shift, mode: Vi, action: ToggleLineSelection }
- { key: V, mods: Control, mode: Vi, action: ToggleBlockSelection }
- { key: V, mods: Alt, mode: Vi, action: ToggleSemanticSelection }
- { key: Return, mode: Vi, action: Open }
- { key: K, mode: Vi, action: Up }
- { key: J, mode: Vi, action: Down }
- { key: H, mode: Vi, action: Left }
- { key: L, mode: Vi, action: Right }
- { key: Up, mode: Vi, action: Up }
- { key: Down, mode: Vi, action: Down }
- { key: Left, mode: Vi, action: Left }
- { key: Right, mode: Vi, action: Right }
- { key: Key0, mode: Vi, action: First }
- { key: Key4, mods: Shift, mode: Vi, action: Last }
- { key: Key6, mods: Shift, mode: Vi, action: FirstOccupied }
- { key: H, mods: Shift, mode: Vi, action: High }
- { key: M, mods: Shift, mode: Vi, action: Middle }
- { key: L, mods: Shift, mode: Vi, action: Low }
- { key: B, mode: Vi, action: SemanticLeft }
- { key: W, mode: Vi, action: SemanticRight }
- { key: E, mode: Vi, action: SemanticRightEnd }
- { key: B, mods: Shift, mode: Vi, action: WordLeft }
- { key: W, mods: Shift, mode: Vi, action: WordRight }
- { key: E, mods: Shift, mode: Vi, action: WordRightEnd }
- { key: Key5, mods: Shift, mode: Vi, action: Bracket }
- { key: Slash, mode: Vi, action: SearchForward }
- { key: Slash, mods: Shift, mode: Vi, action: SearchBackward }
- { key: N, mode: Vi, action: SearchNext }
- { key: N, mods: Shift, mode: Vi, action: SearchPrevious }
debug:
render_timer: false
persistent_logging: false
# Log level
#
# Values for `log_level`:
# - None
# - Error
# - Warn
# - Info