From e4275cab9a588f457e762d1444a555431504094e Mon Sep 17 00:00:00 2001 From: kaizen Date: Fri, 1 Sep 2023 03:19:14 -0400 Subject: [PATCH] remove walls from git repo until cleaned --- .bash_logout | 2 - .bash_profile | 2 - .bashrc | 9 - .gitconfig => .config/git/config | 4 +- .config/i3/config | 11 +- .config/pcmanfm/default/pcmanfm.conf | 4 +- .config/polybar/config.ini | 2 +- .config/starship.toml | 48 ++-- .config/zsh/.zcompdump-arch-5.9 | 399 ++++++++++++++------------- .config/zsh/.zcompdump-arch-5.9.zwc | Bin 116632 -> 117856 bytes .config/zsh/.zshrc | 11 +- .fehbg | 2 - .github/README.md | 397 ++++++++++++++++++++++++++ .github/config.ini | 8 + .github/docgen.py | 98 +++++++ .github/ftaudit.py | 325 ++++++++++++++++++++++ .github/templates/body.category.md | 1 + .github/templates/body.heading.md | 3 + .github/templates/category.md | 1 + .github/templates/conclusion.md | 5 + .github/templates/heading.md | 5 + .github/templates/sources.md | 29 ++ .github/workflows/docgen.yml | 34 +++ .gitignore | 9 +- .xinitrc | 4 +- scripts/delete-wallpaper.sh | 10 + scripts/wallpaper-changer.sh | 13 + 27 files changed, 1188 insertions(+), 248 deletions(-) rename .gitconfig => .config/git/config (96%) delete mode 100755 .fehbg create mode 100644 .github/README.md create mode 100644 .github/config.ini create mode 100755 .github/docgen.py create mode 100644 .github/ftaudit.py create mode 100644 .github/templates/body.category.md create mode 100644 .github/templates/body.heading.md create mode 100644 .github/templates/category.md create mode 100644 .github/templates/conclusion.md create mode 100644 .github/templates/heading.md create mode 100644 .github/templates/sources.md create mode 100644 .github/workflows/docgen.yml create mode 100755 scripts/delete-wallpaper.sh create mode 100755 scripts/wallpaper-changer.sh diff --git a/.bash_logout b/.bash_logout index 0e4e4f18..73dcc0fd 100644 --- a/.bash_logout +++ b/.bash_logout @@ -1,3 +1 @@ -# # ~/.bash_logout -# diff --git a/.bash_profile b/.bash_profile index 5545f007..043ecc2b 100644 --- a/.bash_profile +++ b/.bash_profile @@ -1,5 +1,3 @@ -# # ~/.bash_profile -# [[ -f ~/.bashrc ]] && . ~/.bashrc diff --git a/.bashrc b/.bashrc index 7178f1d1..b7ba7117 100644 --- a/.bashrc +++ b/.bashrc @@ -1,12 +1,3 @@ -# # ~/.bashrc -# - -# If not running interactively, don't do anything [[ $- != *i* ]] && return - -alias ls='ls --color=auto' -alias grep='grep --color=auto' PS1='[\u@\h \W]\$ ' - -PATH=~/.console-ninja/.bin:$PATH \ No newline at end of file diff --git a/.gitconfig b/.config/git/config similarity index 96% rename from .gitconfig rename to .config/git/config index 20b32ac5..9492a0af 100644 --- a/.gitconfig +++ b/.config/git/config @@ -1,6 +1,6 @@ [user] - email = admin@kaizen.wtf - name = kaizen +email = admin@kaizen.wtf +name = kaizen [core] editor = micro diff --git a/.config/i3/config b/.config/i3/config index 3742a402..ef1054ba 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -168,6 +168,12 @@ bindsym Ctrl+$mod+Delete exec --no-startup-id ~/dotfiles/.config/rofi/power # Feh - Set desktop wallpaper # exec_always --no-startup-id feh --bg-fill ~/.wallpaper.jpg +# Delete wallpaper +bindsym $mod+Shift+n exec ~/scripts/delete-wallpaper.sh +# Ranomdize wallpaper +bindsym $mod+Shift+s exec ~/scripts/wallpaper-changer.sh + + # Polybar - Start polybar exec_always --no-startup-id ~/dotfiles/.config/polybar/start-polybar.sh @@ -186,6 +192,7 @@ exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork # Start picom compositor exec_always --no-startup-id picom --config ~/dotfiles/.config/picom/picom.conf + # Disable automatic monitor power saving # exec --no-startup-id xset dpms 0 0 0 @@ -216,15 +223,13 @@ exec --no-startup-id /usr/lib/gsd-xsettings bindsym Ctrl+Shift+Print exec --no-startup-id maim --select | xclip -selection clipboard -t image/png # bindsym Ctrl+Print exec --no-startup-id path="$HOME/screenshots/$(date).png" && maim --select "$path" && xclip -selection clipboard -t image/png "$path" -bindsym $mod+Shift+s --release exec flameshot gui +# bindsym $mod+Shift+s --release exec flameshot gui # exec -> On start-up # exec_always -> On start-up and reload - - # Alacritty - Start a terminal instance bindsym $mod+Return exec alacritty diff --git a/.config/pcmanfm/default/pcmanfm.conf b/.config/pcmanfm/default/pcmanfm.conf index ee469c3a..8f6e9dc7 100644 --- a/.config/pcmanfm/default/pcmanfm.conf +++ b/.config/pcmanfm/default/pcmanfm.conf @@ -9,8 +9,8 @@ autorun=0 [ui] always_show_tabs=1 max_tab_chars=32 -win_width=1920 -win_height=1054 +win_width=960 +win_height=527 splitter_pos=181 media_in_new_tab=0 desktop_folder_new_win=0 diff --git a/.config/polybar/config.ini b/.config/polybar/config.ini index 9f9493d4..ba88f501 100644 --- a/.config/polybar/config.ini +++ b/.config/polybar/config.ini @@ -155,7 +155,7 @@ type = custom/script format-prefix = " " format-prefix-foreground = ${colors.primary} exec = ~/dotfiles/.config/polybar/modules/pending-updates.sh -interval = 600 +interval = 300 [module/filesystem] type = internal/fs diff --git a/.config/starship.toml b/.config/starship.toml index 828787b4..28c4105c 100644 --- a/.config/starship.toml +++ b/.config/starship.toml @@ -1,31 +1,31 @@ -# format = """ -# [░▒▓](#a3aed2)\ -# [  ](bg:#a3aed2 fg:#090c0c)\ -# [](bg:#769ff0 fg:#a3aed2)\ -# $directory\ -# [](fg:#769ff0 bg:#394260)\ -# $git_branch\ -# $git_status\ -# [](fg:#394260 bg:#212736)\ -# $nodejs\ -# $rust\ -# $golang\ -# $php\ -# [](fg:#212736 bg:#1d2230)\ -# $time\ -# [ ](fg:#1d2230)\ -# \n$character""" -# +format = """ +[░▒▓](#a3aed2)\ +[  ](bg:#a3aed2 fg:#090c0c)\ +[](bg:#769ff0 fg:#a3aed2)\ +$directory\ +[](fg:#769ff0 bg:#394260)\ +$git_branch\ +$git_status\ +[](fg:#394260 bg:#212736)\ +$nodejs\ +$rust\ +$golang\ +$php\ +[](fg:#212736 bg:#1d2230)\ +$time\ +[ ](fg:#1d2230)\ +\n$character""" + # A continuation prompt that displays two filled in arrows continuation_prompt = '▶▶ ' - -# A minimal left prompt -format = """$character""" - -# move the rest of the prompt to the right -right_format = """$all""" +# +# # A minimal left prompt +# format = """$character""" +# +# # move the rest of the prompt to the right +# right_format = """$all""" [directory] diff --git a/.config/zsh/.zcompdump-arch-5.9 b/.config/zsh/.zcompdump-arch-5.9 index 0e993fd4..5e352427 100644 --- a/.config/zsh/.zcompdump-arch-5.9 +++ b/.config/zsh/.zcompdump-arch-5.9 @@ -1,4 +1,4 @@ -#files: 971 version: 5.9 +#files: 986 version: 5.9 _comps=( '-' '_precommand' @@ -168,6 +168,7 @@ _comps=( 'chattr' '_chattr' 'chcon' '_chcon' 'chdir' '_cd' +'checkupdates' '_checkupdates' 'chfn' '_users' 'chgrp' '_chown' 'chimera' '_webbrowser' @@ -629,6 +630,7 @@ _comps=( 'gzgrep' '_grep' 'gzilla' '_webbrowser' 'gzip' '_gzip' +'handlr' '_handlr' 'hash' '_hash' 'hd' '_hexdump' 'head' '_head' @@ -820,9 +822,11 @@ _comps=( 'md5' '_cksum' 'md5sum' '_md5sum' 'mdadm' '_mdadm' +'mdcat' '_mdcat' 'mdel' '_mtools' 'mdeltree' '_mtools' 'mdir' '_mtools' +'mdless' '_mdless' 'mdu' '_mtools' 'mencal' '_mencal' 'mere' '_mere' @@ -975,19 +979,26 @@ _comps=( 'p4' '_perforce' 'p4d' '_perforce' 'pacat' '_pulseaudio' +'paccache' '_paccache' +'pacdiff' '_pacdiff' 'pack' '_pack' 'packf' '_mh' +'paclist' '_paclist' +'paclog-pkglist' '_paclog-pkglist' 'pacman' '_pacman' 'pacman-conf' '_pacman' 'pacman-key' '_pacman' 'pacman.static' '_pacman' 'pacmd' '_pulseaudio' +'pacscripts' '_pacscripts' +'pacsearch' '_pacsearch' +'pacsort' '_pacsort' 'pacstrap' '_archinstallscripts' 'pactl' '_pulseaudio' +'pactree' '_pactree' 'padsp' '_pulseaudio' 'pandoc' '_pandoc' 'paplay' '_pulseaudio' -'parallel' '_parallel' '-parameter-' '_parameter' 'parec' '_pulseaudio' 'parecord' '_pulseaudio' @@ -1135,6 +1146,7 @@ _comps=( 'rails' '_rails' 'rake' '_rake' 'ralio' '_ralio' +'rankmirrors' '_rankmirrors' 'ranlib' '_ranlib' 'rar' '_rar' 'rc' '_sh' @@ -1472,6 +1484,7 @@ _comps=( 'unwrapdiff' '_patchutils' 'unxz' '_xz' 'unzip' '_zip' +'updpkgsums' '_updpkgsums' 'uptime' '_uptime' 'urxvt' '_urxvt' 'urxvt256c' '_urxvt' @@ -1660,6 +1673,7 @@ _comps=( 'ypxfr' '_yp' 'ytalk' '_other_accounts' 'zargs' '_zargs' +'zathura' '_zathura' 'zcalc' '_zcalc' '-zcalc-line-' '_zcalc_line' 'zcash-cli' '_zcash-cli' @@ -1774,7 +1788,6 @@ _postpatcomps=( 'lua[0-9.-]##' '_lua' '(p[bgpn]m*|*top[bgpn]m)' '_pbm' 'php[0-9.-]' '_php' -'pip[0-9.]#' '_pip' 'pydoc[0-9.]#' '_pydoc' 'python[0-9.]#' '_python' 'qemu(|-system-*)' '_qemu' @@ -1836,195 +1849,197 @@ autoload -Uz _fd _nvm _z _extract _gh \ _artisan _atach _bat _bitcoin-cli _bootctl \ _bower _bundle _busctl _bwrap _caffeinate \ _cap _cargo _cask _ccache _cf \ - _choc _chromium _cmake _code _coffee \ - _composer _conan _concourse _console _coredumpctl \ - _cppcheck _curl _dad _debuild _dget \ - _dhcpcd _diana _docpad _drush _ecdsautil \ - _emulator _envdir _exa _exportfs _fab \ - _fail2ban-client _ffind _flatpak _fleetctl _flutter \ - _force _fwupdmgr _gas _gh _ghc \ - _gist _git-flow _git-journal _git-pulls _git-revise \ - _git-wtf _glances _glow _golang _google \ - _gpgconf _gtk-launch _hello _highlight _hledger \ - _homestead _hostnamectl _httpie _ibus _include-what-you-use \ - _inxi _jmeter _jmeter-plugins _jonas _journalctl \ - _jrnl _kak _kernel-install _kitchen _knife \ - _language_codes _libinput _lilypond _localectl _loginctl \ - _lunchy _machinectl _mc _meson _middleman \ - _mina _mix _mkinitcpio _mpv _mssh \ - _mussh _mvn _nano _nanoc _networkctl \ - _nftables _ninja _node _nvm _nvme \ - _oomctl _openssl _openvpn3 _optirun _opustools \ - _pacman _parallel _pastel _patool _perf \ - _periscope _pgsql_utils _phing _pixz _pkcon \ - _play _playerctl _pm2 _polybar _polybar_msg \ - _port _protoc _psd _pulseaudio _pygmentize \ - _qmk _rails _ralio _redis-cli _resolvectl \ - _rfkill _rg _rkt _rmlint _rslsync \ - _rspec _rsvm _rubocop _rustup _sbt \ - _scala _scrub _sdd _sd_hosts_or_user_at_host _sd_machines \ - _sd_outputmodes _sd_unit_files _setcap _setup.py _sfdx \ - _shellcheck _showoff _srm _stack _starship \ - _subl _subliminal _supervisorctl _svm _systemctl \ - _systemd _systemd-analyze _systemd-delta _systemd-inhibit _systemd-nspawn \ - _systemd-path _systemd-run _systemd-tmpfiles _tarsnap _teamocil \ - _thor _timedatectl _tmuxinator _tox _udevadm \ - _udisksctl _ufw _virtualbox _vnstat _wemux \ - _wg-quick _xinput _xsel _yaourt _yarn \ - _yay _zcash-cli _zscroll _cdr _all_labels \ - _all_matches _alternative _approximate _arg_compile _arguments \ - _bash_completions _cache_invalid _call_function _combination _complete \ - _complete_debug _complete_help _complete_help_generic _complete_tag _comp_locale \ - _correct _correct_filename _correct_word _describe _description \ - _dispatch _expand _expand_alias _expand_word _extensions \ - _external_pwds _generic _guard _history _history_complete_word \ - _ignored _list _main_complete _match _menu \ - _message _most_recent_file _multi_parts _next_label _next_tags \ - _normal _nothing _numbers _oldlist _pick_variant \ - _prefix _read_comp _regex_arguments _regex_words _requested \ - _retrieve_cache _sep_parts _sequence _set_command _setup \ - _store_cache _sub_commands _tags _user_expand _values \ - _wanted _acpi _acpitool _alsa-utils _analyseplugin \ - _basenc _brctl _btrfs _capabilities _chattr \ - _chcon _choom _chrt _cpupower _cryptsetup \ - _dkms _e2label _ethtool _findmnt _free \ - _fuse_arguments _fusermount _fuse_values _gpasswd _htop \ - _iconvconfig _ionice _ipset _iptables _iwconfig \ - _kpartx _losetup _lsattr _lsblk _lsns \ - _lsusb _ltrace _mat _mat2 _mdadm \ - _mii-tool _modutils _mondo _networkmanager _nsenter \ - _opkg _perf _pidof _pmap _qdbus \ - _schedtool _selinux_contexts _selinux_roles _selinux_types _selinux_users \ - _setpriv _setsid _slabtop _ss _sshfs \ - _strace _sysstat _tload _tpb _tracepath \ - _tune2fs _uml _unshare _valgrind _vserver \ - _wakeup_capable_devices _wipefs _wpa_cli _a2ps _aap \ - _abcde _absolute_command_paths _ack _adb _ansible \ - _ant _antiword _apachectl _apm _arch_archives \ - _arch_namespace _arp _arping _asciidoctor _asciinema \ - _at _attr _augeas _avahi _awk \ - _base64 _basename _bash _baudrates _baz \ - _beep _bibtex _bind_addresses _bison _bittorrent \ - _bogofilter _bpf_filters _bpython _bzip2 _bzr \ - _cabal _cal _calendar _canonical_paths _cat \ - _ccal _cdcd _cdrdao _cdrecord _chkconfig \ - _chmod _chown _chroot _chsh _cksum \ - _clay _cmdambivalent _cmdstring _cmp _column \ - _comm _composer _compress _configure _cowsay \ - _cp _cpio _cplay _crontab _cscope \ - _csplit _cssh _ctags _ctags_tags _curl \ - _cut _cvs _darcs _date _date_formats \ - _dates _dbus _dconf _dd _devtodo \ - _df _dhclient _dict _dict_words _diff \ - _diff3 _diff_options _diffstat _dig _directories \ - _dir_list _django _dmesg _dmidecode _dns_types \ - _doas _domains _dos2unix _drill _dropbox \ - _dsh _dtruss _du _dvi _ecasound \ - _ed _elfdump _elinks _email_addresses _enscript \ - _entr _env _espeak _etags _fakeroot \ - _feh _fetchmail _ffmpeg _figlet _file_modes \ - _files _file_systems _find _find_net_interfaces _finger \ - _flac _flex _fmt _fold _fortune \ - _fsh _fuser _gcc _gcore _gdb \ - _gem _genisoimage _getconf _getent _getfacl \ - _getmail _getopt _ghostscript _git _global \ - _global_tags _gnu_generic _gnupod _gnutls _go \ - _gpg _gphoto2 _gprof _gradle _graphicsmagick \ - _grep _groff _groups _growisofs _gsettings \ - _guilt _gzip _have_glob_qual _head _hexdump \ - _host _hostname _hosts _iconv _id \ - _ifconfig _iftop _imagemagick _initctl _init_d \ - _install _iostat _ip _ipsec _irssi \ - _ispell _java _java_class _joe _join \ - _jq _killall _knock _kvno _last \ - _ldconfig _ldd _ld_debug _less _lha \ - _libvirt _links _list_files _lldb _ln \ - _loadkeys _locale _localedef _locales _locate \ - _logger _look _lp _ls _lsof \ - _lua _luarocks _lynx _lz4 _lzop \ - _mail _mailboxes _make _man _md5sum \ - _mencal _mh _mime_types _mkdir _mkfifo \ - _mknod _mktemp _module _monotone _moosic \ - _mosh _mount _mpc _mt _mtools \ - _mtr _mutt _mv _my_accounts _myrepos \ - _mysqldiff _mysql_utils _ncftp _netcat _net_interfaces \ - _netstat _newsgroups _nginx _ngrep _nice \ - _nkf _nl _nm _nmap _npm \ - _nslookup _numfmt _objdump _object_files _od \ - _openstack _opustools _other_accounts _pack _pandoc \ - _paste _patch _patchutils _path_commands _path_files \ - _pax _pbm _pdf _perforce _perl \ - _perl_basepods _perldoc _perl_modules _pgids _pgrep \ - _php _picocom _pids _pine _ping \ - _pip _pkgadd _pkg-config _pkginfo _pkg_instance \ - _pkgrm _pon _ports _postfix _postgresql \ - _postscript _pr _printenv _printers _process_names \ - _prove _ps _pspdf _psutils _ptx \ - _pump _pv _pwgen _pydoc _python \ - _python_modules _qemu _quilt _rake _ranlib \ - _rar _rclone _rcs _readelf _readlink \ - _remote_files _renice _ri _rlogin _rm \ - _rmdir _route _rrdtool _rsync _rubber \ - _ruby _runit _samba _sccs _scons \ - _screen _script _seafile _sed _seq \ - _service _services _setfacl _sh _shasum \ - _showmount _shred _shuf _shutdown _signals \ - _sisu _slrn _smartmontools _socket _sort \ - _spamassassin _split _sqlite _sqsh _ssh \ - _ssh_hosts _stat _stdbuf _stgit _stow \ - _strings _strip _stty _su _subversion \ - _sudo _surfraw _swaks _swanctl _swift \ - _sys_calls _sysctl _tac _tail _tar \ - _tar_archive _tardy _tcpdump _tcptraceroute _tee \ - _telnet _terminals _tex _texi _texinfo \ - _tidy _tiff _tilde_files _timeout _time_zone \ - _tin _tla _tmux _todo.sh _toilet \ - _top _topgit _totd _touch _tput \ - _tr _transmission _tree _truncate _truss \ - _tty _ttys _twidge _twisted _umountable \ - _unace _uname _unexpand _uniq _unison \ - _units _uptime _urls _user_admin _user_at_host \ - _users _users_on _vi _vim _visudo \ - _vmstat _vorbis _vpnc _w _w3m \ - _watch _wc _webbrowser _wget _whereis \ - _who _whois _wiggle _xargs _xmlsoft \ - _xmlstarlet _xmms2 _xxd _xz _yafc \ - _yodl _yp _zcat _zdump _zfs \ - _zfs_dataset _zfs_pool _zip _zsh _acroread \ - _code _dcop _eog _evince _geany \ - _gnome-gv _gqview _gv _kdeconnect _kfmclient \ - _matlab _mozilla _mplayer _mupdf _nautilus \ - _nedit _netscape _okular _pdftk _qiv \ - _rdesktop _setxkbmap _sublimetext _urxvt _vnc \ - _x_arguments _xauth _xautolock _x_borderwidth _xclip \ - _x_color _x_colormapid _x_cursor _x_display _xdvi \ - _x_extension _xfig _x_font _xft_fonts _x_geometry \ - _xinput _x_keysym _xloadimage _x_locale _x_modifier \ - _xmodmap _x_name _xournal _xpdf _xrandr \ - _x_resource _xscreensaver _x_selection_timeout _xset _xt_arguments \ - _xterm _x_title _xt_session_id _x_utils _xv \ - _x_visual _x_window _xwit _zeal _add-zle-hook-widget \ - _add-zsh-hook _alias _aliases __arguments _arrays \ - _assign _autocd _bindkey _brace_parameter _builtin \ - _cd _command _command_names _compadd _compdef \ - _completers _condition _default _delimiters _directory_stack \ - _dirs _disable _dynamic_directory_name _echotc _echoti \ - _emulate _enable _equal _exec _fc \ - _file_descriptors _first _functions _globflags _globqual_delims \ - _globquals _hash _history_modifiers _in_vared _jobs \ - _jobs_bg _jobs_builtin _jobs_fg _kill _limit \ - _limits _math _math_params _mere _module_math_func \ - _options _options_set _options_unset _parameter _parameters \ - _precommand _print _prompt _ps1234 _read \ - _redirect _run-help _sched _set _setopt \ - _source _strftime _subscript _suffix_alias_files _tcpsys \ - _tilde _trap _ttyctl _typeset _ulimit \ - _unhash _user_math_func _value _vared _vars \ - _vcs_info _vcs_info_hooks _wait _which _widgets \ - _zargs _zattr _zcalc _zcalc_line _zcompile \ - _zed _zftp _zle _zmodload _zmv \ - _zparseopts _zpty _zsh-mime-handler _zsocket _zstyle \ - _ztodo + _checkupdates _choc _chromium _cmake _code \ + _coffee _composer _conan _concourse _console \ + _coredumpctl _cppcheck _curl _dad _debuild \ + _dget _dhcpcd _diana _docpad _drush \ + _ecdsautil _emulator _envdir _exa _exportfs \ + _fab _fail2ban-client _ffind _flatpak _fleetctl \ + _flutter _force _fwupdmgr _gas _gh \ + _ghc _gist _git-flow _git-journal _git-pulls \ + _git-revise _git-wtf _glances _glow _golang \ + _google _gpgconf _gtk-launch _handlr _hello \ + _highlight _hledger _homestead _hostnamectl _httpie \ + _ibus _include-what-you-use _inxi _jmeter _jmeter-plugins \ + _jonas _journalctl _jrnl _kak _kernel-install \ + _kitchen _knife _language_codes _libinput _lilypond \ + _localectl _loginctl _lunchy _machinectl _mc \ + _mdcat _mdless _meson _middleman _mina \ + _mix _mkinitcpio _mpv _mssh _mussh \ + _mvn _nano _nanoc _networkctl _nftables \ + _ninja _node _nvm _nvme _oomctl \ + _openssl _openvpn3 _optirun _opustools _paccache \ + _pacdiff _paclist _paclog-pkglist _pacman _pacscripts \ + _pacsearch _pacsort _pactree _pastel _patool \ + _perf _periscope _pgsql_utils _phing _pixz \ + _pkcon _play _playerctl _pm2 _polybar \ + _polybar_msg _port _protoc _psd _pulseaudio \ + _pygmentize _qmk _rails _ralio _rankmirrors \ + _redis-cli _resolvectl _rfkill _rg _rkt \ + _rmlint _rslsync _rspec _rsvm _rubocop \ + _rustup _sbt _scala _scrub _sdd \ + _sd_hosts_or_user_at_host _sd_machines _sd_outputmodes _sd_unit_files _setcap \ + _setup.py _sfdx _shellcheck _showoff _srm \ + _stack _starship _subl _subliminal _supervisorctl \ + _svm _systemctl _systemd _systemd-analyze _systemd-delta \ + _systemd-inhibit _systemd-nspawn _systemd-path _systemd-run _systemd-tmpfiles \ + _tarsnap _teamocil _thor _timedatectl _tmuxinator \ + _tox _udevadm _udisksctl _ufw _updpkgsums \ + _virtualbox _vnstat _wemux _wg-quick _xinput \ + _xsel _yaourt _yarn _yay _zathura \ + _zcash-cli _zscroll _cdr _all_labels _all_matches \ + _alternative _approximate _arg_compile _arguments _bash_completions \ + _cache_invalid _call_function _combination _complete _complete_debug \ + _complete_help _complete_help_generic _complete_tag _comp_locale _correct \ + _correct_filename _correct_word _describe _description _dispatch \ + _expand _expand_alias _expand_word _extensions _external_pwds \ + _generic _guard _history _history_complete_word _ignored \ + _list _main_complete _match _menu _message \ + _most_recent_file _multi_parts _next_label _next_tags _normal \ + _nothing _numbers _oldlist _pick_variant _prefix \ + _read_comp _regex_arguments _regex_words _requested _retrieve_cache \ + _sep_parts _sequence _set_command _setup _store_cache \ + _sub_commands _tags _user_expand _values _wanted \ + _acpi _acpitool _alsa-utils _analyseplugin _basenc \ + _brctl _btrfs _capabilities _chattr _chcon \ + _choom _chrt _cpupower _cryptsetup _dkms \ + _e2label _ethtool _findmnt _free _fuse_arguments \ + _fusermount _fuse_values _gpasswd _htop _iconvconfig \ + _ionice _ipset _iptables _iwconfig _kpartx \ + _losetup _lsattr _lsblk _lsns _lsusb \ + _ltrace _mat _mat2 _mdadm _mii-tool \ + _modutils _mondo _networkmanager _nsenter _opkg \ + _perf _pidof _pmap _qdbus _schedtool \ + _selinux_contexts _selinux_roles _selinux_types _selinux_users _setpriv \ + _setsid _slabtop _ss _sshfs _strace \ + _sysstat _tload _tpb _tracepath _tune2fs \ + _uml _unshare _valgrind _vserver _wakeup_capable_devices \ + _wipefs _wpa_cli _a2ps _aap _abcde \ + _absolute_command_paths _ack _adb _ansible _ant \ + _antiword _apachectl _apm _arch_archives _arch_namespace \ + _arp _arping _asciidoctor _asciinema _at \ + _attr _augeas _avahi _awk _base64 \ + _basename _bash _baudrates _baz _beep \ + _bibtex _bind_addresses _bison _bittorrent _bogofilter \ + _bpf_filters _bpython _bzip2 _bzr _cabal \ + _cal _calendar _canonical_paths _cat _ccal \ + _cdcd _cdrdao _cdrecord _chkconfig _chmod \ + _chown _chroot _chsh _cksum _clay \ + _cmdambivalent _cmdstring _cmp _column _comm \ + _composer _compress _configure _cowsay _cp \ + _cpio _cplay _crontab _cscope _csplit \ + _cssh _ctags _ctags_tags _curl _cut \ + _cvs _darcs _date _date_formats _dates \ + _dbus _dconf _dd _devtodo _df \ + _dhclient _dict _dict_words _diff _diff3 \ + _diff_options _diffstat _dig _directories _dir_list \ + _django _dmesg _dmidecode _dns_types _doas \ + _domains _dos2unix _drill _dropbox _dsh \ + _dtruss _du _dvi _ecasound _ed \ + _elfdump _elinks _email_addresses _enscript _entr \ + _env _espeak _etags _fakeroot _feh \ + _fetchmail _ffmpeg _figlet _file_modes _files \ + _file_systems _find _find_net_interfaces _finger _flac \ + _flex _fmt _fold _fortune _fsh \ + _fuser _gcc _gcore _gdb _gem \ + _genisoimage _getconf _getent _getfacl _getmail \ + _getopt _ghostscript _git _global _global_tags \ + _gnu_generic _gnupod _gnutls _go _gpg \ + _gphoto2 _gprof _gradle _graphicsmagick _grep \ + _groff _groups _growisofs _gsettings _guilt \ + _gzip _have_glob_qual _head _hexdump _host \ + _hostname _hosts _iconv _id _ifconfig \ + _iftop _imagemagick _initctl _init_d _install \ + _iostat _ip _ipsec _irssi _ispell \ + _java _java_class _joe _join _jq \ + _killall _knock _kvno _last _ldconfig \ + _ldd _ld_debug _less _lha _libvirt \ + _links _list_files _lldb _ln _loadkeys \ + _locale _localedef _locales _locate _logger \ + _look _lp _ls _lsof _lua \ + _luarocks _lynx _lz4 _lzop _mail \ + _mailboxes _make _man _md5sum _mencal \ + _mh _mime_types _mkdir _mkfifo _mknod \ + _mktemp _module _monotone _moosic _mosh \ + _mount _mpc _mt _mtools _mtr \ + _mutt _mv _my_accounts _myrepos _mysqldiff \ + _mysql_utils _ncftp _netcat _net_interfaces _netstat \ + _newsgroups _nginx _ngrep _nice _nkf \ + _nl _nm _nmap _npm _nslookup \ + _numfmt _objdump _object_files _od _openstack \ + _opustools _other_accounts _pack _pandoc _paste \ + _patch _patchutils _path_commands _path_files _pax \ + _pbm _pdf _perforce _perl _perl_basepods \ + _perldoc _perl_modules _pgids _pgrep _php \ + _picocom _pids _pine _ping _pkgadd \ + _pkg-config _pkginfo _pkg_instance _pkgrm _pon \ + _ports _postfix _postgresql _postscript _pr \ + _printenv _printers _process_names _prove _ps \ + _pspdf _psutils _ptx _pump _pv \ + _pwgen _pydoc _python _python_modules _qemu \ + _quilt _rake _ranlib _rar _rclone \ + _rcs _readelf _readlink _remote_files _renice \ + _ri _rlogin _rm _rmdir _route \ + _rrdtool _rsync _rubber _ruby _runit \ + _samba _sccs _scons _screen _script \ + _seafile _sed _seq _service _services \ + _setfacl _sh _shasum _showmount _shred \ + _shuf _shutdown _signals _sisu _slrn \ + _smartmontools _socket _sort _spamassassin _split \ + _sqlite _sqsh _ssh _ssh_hosts _stat \ + _stdbuf _stgit _stow _strings _strip \ + _stty _su _subversion _sudo _surfraw \ + _swaks _swanctl _swift _sys_calls _sysctl \ + _tac _tail _tar _tar_archive _tardy \ + _tcpdump _tcptraceroute _tee _telnet _terminals \ + _tex _texi _texinfo _tidy _tiff \ + _tilde_files _timeout _time_zone _tin _tla \ + _tmux _todo.sh _toilet _top _topgit \ + _totd _touch _tput _tr _transmission \ + _tree _truncate _truss _tty _ttys \ + _twidge _twisted _umountable _unace _uname \ + _unexpand _uniq _unison _units _uptime \ + _urls _user_admin _user_at_host _users _users_on \ + _vi _vim _visudo _vmstat _vorbis \ + _vpnc _w _w3m _watch _wc \ + _webbrowser _wget _whereis _who _whois \ + _wiggle _xargs _xmlsoft _xmlstarlet _xmms2 \ + _xxd _xz _yafc _yodl _yp \ + _zcat _zdump _zfs _zfs_dataset _zfs_pool \ + _zip _zsh _acroread _code _dcop \ + _eog _evince _geany _gnome-gv _gqview \ + _gv _kdeconnect _kfmclient _matlab _mozilla \ + _mplayer _mupdf _nautilus _nedit _netscape \ + _okular _pdftk _qiv _rdesktop _setxkbmap \ + _sublimetext _urxvt _vnc _x_arguments _xauth \ + _xautolock _x_borderwidth _xclip _x_color _x_colormapid \ + _x_cursor _x_display _xdvi _x_extension _xfig \ + _x_font _xft_fonts _x_geometry _xinput _x_keysym \ + _xloadimage _x_locale _x_modifier _xmodmap _x_name \ + _xournal _xpdf _xrandr _x_resource _xscreensaver \ + _x_selection_timeout _xset _xt_arguments _xterm _x_title \ + _xt_session_id _x_utils _xv _x_visual _x_window \ + _xwit _zeal _add-zle-hook-widget _add-zsh-hook _alias \ + _aliases __arguments _arrays _assign _autocd \ + _bindkey _brace_parameter _builtin _cd _command \ + _command_names _compadd _compdef _completers _condition \ + _default _delimiters _directory_stack _dirs _disable \ + _dynamic_directory_name _echotc _echoti _emulate _enable \ + _equal _exec _fc _file_descriptors _first \ + _functions _globflags _globqual_delims _globquals _hash \ + _history_modifiers _in_vared _jobs _jobs_bg _jobs_builtin \ + _jobs_fg _kill _limit _limits _math \ + _math_params _mere _module_math_func _options _options_set \ + _options_unset _parameter _parameters _precommand _print \ + _prompt _ps1234 _read _redirect _run-help \ + _sched _set _setopt _source _strftime \ + _subscript _suffix_alias_files _tcpsys _tilde _trap \ + _ttyctl _typeset _ulimit _unhash _user_math_func \ + _value _vared _vars _vcs_info _vcs_info_hooks \ + _wait _which _widgets _zargs _zattr \ + _zcalc _zcalc_line _zcompile _zed _zftp \ + _zle _zmodload _zmv _zparseopts _zpty \ + _zsh-mime-handler _zsocket _zstyle _ztodo autoload -Uz +X _call_program typeset -gUa _comp_assocs diff --git a/.config/zsh/.zcompdump-arch-5.9.zwc b/.config/zsh/.zcompdump-arch-5.9.zwc index 933f242cf1a4ca1ddec35d8a3325006216a69e6c..374ee1331e74ad6fb4878a6162b6af3d93549805 100644 GIT binary patch delta 37712 zcmaIf4_sb#p$GnR#;{Q%M~xb}m8jfYxtmj0&Rj{3a^*^D+(vCRQflPLO-GFyJ(ALu zk{Z`hQlmRcY^0Rr$k81oDJ3;()VN8F?&yw^l#-I}SgwBW@ADjUKYy>+&)4hye9k%F z@A-be=il?3=g;uY&p+?jozHv0^Ulbg8(;XlXvM#-Y|eW{^Vw%KUpV*q-8vW99}7~&MmFOH&eYH6j9QD!N)B#KrM z*4rrSX=jL26s}N4B@Lv@We>wEqEwXqS{+bEBi)Q~io(}LQOB#Is5r?g*$}1~V49*! z4UR_o87F&X6fI#Tp`*33iblE^VV1(nQnn`B7F=e8v@=TH>!WBHYpJ7yA!b>1xw^ER zVQXY3Bb;LCDjPxrJxsIY4ceiaX1W<8_l-6z<)M}?rYO83ib`pqi&5fYol-+LBb;LC zo7AO}I$G&vlv6Cd(w?D#9>!U+I+LZcmQ;s_{;-hz5+h|Bt>nL0hjN5dgn9*Uwl~hS zYm=-`a!^i?{T7|Dl2WQ^pq+ju2<^sKsdts*zsf`nElCb18LzQ7D4~M-Bzuw^Pcr|l znetUhR?B)?>1T@Ue4V~cTWlj7@@Copwp0|&m{@YPvy_e0&`dXDm+5yq{srr8F*S5CN=~`mN;S>&GDh}$41(n$&vAmuS~?hH znu7Ogk8QLwz!U`=Y#fy|&_?eD$A8R3_D08ql`MOqO0tPw#>sx4a#m46Bb^K}L*e^v zDdjZL%M=Bh91dz}VTdVmDl%D=GO>njG|)y5!%UI;0b5H2;Vf>D-HelStxoC8wWnkY z{mf8!osFT4HYUlhv}dTKnGRBY9wsRGU?xjsIooKYgAsB*}V8)Nhl$j3o0j zGH;v1Mkp^!vQDvBWi4%lldoTnGDG3VmC?-<;X2RxMCLiaP?oTbRt7%d_)nV1+v#$lGRZbs zwa_7u(=4geIaM^%&6MkSP)<|$$;?1XWH{?9WjIIbWjGhwWmtbuh5=8?Sl`Q29!l6q z4b4e*B{?Ez$iLYYLLfm2C6?esE|Wd5gg%r-iiAe6_q=$urghp?bqPO#+G z%>3FU+moD>c@0iPHd04BBb;LCr*%X*b#ySq40->qGuBW+4ShJtQ_+}-?Ax3mlu|<* z15A?J=!t`kG}6Nm6PzOdGX}*r!Y*x-15B~}vj#-S&Lk(2Ty}d{ZiUM9gbGPcCb^=? zZhnnpo@7swQ!@UXEvA@q!c|c#+ZbSqg3lWm6*SOEKVwPG%EHtx$CXe}m1MK*WrF-> z=LeNE(!~g~6#hph*T^c`8796XbCNBQ;i-6yte}=Q`WYvCx8uLuLlrIb5#}e!Z81#+ zEv$92b;pKq)me)5RbYH-vn;#QrA#B;cRKzPCURSKMj17<(9HLfdpoJ=zRYsr9;Y)Y~($?Usq6sffy>gZyKDe^k(Zpx{rg)XKxsgvYnlKFQ# zrj$@Y9qkMd+L@5y887$inOu=%xvcxTqp;a93NB zWKELINp>eWn&fPf1^<;Xb_AXeGRe^&E8kN6gH!tWO1MX{L)ICWyah zFx1gc&iB12QAHSNv+QSvya#PPn}JJwqAwbTdl!A$yQws%W8;{v;=p%pJ-sUzN_3hLQ!gW4By)f6 z$%i$B_xCljlX0?tp)Ja&NwPV~Zt2!58j`8-1Tkx(@Q8+(&UM|(@WDf~>|v7dgp@sE z3t34SHH34gRrWDK?teQsSVIN1wA0Td;eA2;%S;yh((w-qmRnFp9c}b8PWGb)#u{p9 zqnB~AM;#7IsHT}-MwlUd?w9{7gQ1-8Ua&!SF~Ssizjpk?maY1ACM%L`NU|--fg~rB z%srZ^zd}~h$^bLujoBc|X`+LE!p-ft%>Ipm6V9EAl!t`0U5u7X3JVJUY!_2OJsk`% zN%mj7fKWme^|TS*dUea<_p2+%iJ#IAWz^8e6h$-YQ9%QJjFJD>aQy#jgw)YW*wtNf zg!un#0UN1fAoz?ra>}8~KH>aeWuiRE8rjAm;Vs&jjAxw>tfhul`ez;gNfUV|jpoHV zlcm(s#sE_k{LSvAj!s6IW%<(vPaEORs8^1Yd&-qU70nDVP0`;CmMZG$PI(w6=O0#} zk|uf?VTN#s@}oFfMHOAlP!PvaF}1Wa!YNkGiK9vy=wq6tzVa!ji5|wuof~`q@1cP{ zCdkWH_C@CBLWB{ICY)yX#c3GGfLnLj_wr<~a) z!m+QE^|Uigc5WOMQcM*sgaP&@IVQuGPPs44Bq!^@LwN|yJBd9u&Ul&_Rwy=vK% z^3cs76NFImwq9a^?jk1~p}a!YF~|hj1(vgsu>?=sw z4Q2{nW@Tz@VZL|?q?3YvIotv3oF3YG7^9(b?vh!TSRM5f@ljIcHTmR~*R<5Fq&~8nV z&9a*ja{k5fFa8&WwA0T7rzm)(tz<3LJihz!x#4|$v*~U|m?rOh^(do>L8i!GYLKiU zT;3aHJ)QJ3NzV$`fBdR2VZ^eG2HNQ-e1|hB!^dj*uXZBkdqI)qG||sAE$4e-xgeA6 zNzTZ!W!htc{C{3E|ICuhA3pOkdS za8{4VS&A;oY+;G4qM1;?OO8`;u}hw6Qq3L)nIiuZPdpS8KC`KiQ(k5plI)PZ3^Pgg zicCjKW%z(`l?=D@6*8Rt^|GA-!T`o(xNK*W%zv%p9~P{At&@<}BnM?!VO*x)TD{Iw zF(p*fN;rnya+K^#Z8dACq=60wnIK-NoV7_dB-ytzrGlBf%k291xxSMumksnV>4s!T zPP6p&8li@;XIhf%mg#yS$-O*tITp#VCyHfw3g0N}=}G2?QYI#dSJ^^JsG^Cm2RdbF zU?9n9nfC@yI8@R~FJsJ*_eN!Gq@GSD$i2eVKq*x;&`oO0LwMqtkp;!Jj_?_7r3{Cr zMfNdC{3d&eVybASFUgs(Y@wUhD{TbTw9wB4xvQP5RME;1ldB#7oRZAQi)6S?SITe_ zmB~6f7zxV)%M0IZE2t&Rx5*)9lKFzSI1kuHDDRMiOjC4~JwqKGw4CAk?>8|;!5S-4 zM+d`9lmAx7yVbp(+(;9h3=%q+O|s~1nfX##PcP%-UhS}a*ZQ)YdcvXVko_qS12c%3f^tG+wiqAeEwf0>u8~yVY1h2 zn;JUTr#w5Em>^_cxegrDrLu}H!X6rtljOcf=M+;;Gkwgk>b)AJjS=!TIG?DZi5|v@ zH)?}5RHr;N(!(h6`@EV_Nf)z}z2BA+vNy?@Bv)+GDZPa9yb1%OgY^6dGFc{D8E470 z4h!M6Ak|@FjDqWQN)KVhm6f(=k9R||hEBp)Cj)Yvr60^3+hSQk16_;~f5~nQ^N_vW?$Xf`Sxgn-v)m@x!#LqXsJxm?u9e$prI!hEKI(;s zFtD|05`E)Ttaf=g_!LYlhO_Y8?hl~<`(aA+4rzpD9VWE%0R=b@pMkx7`LqPaCZdjIo z*?LS+u*ViNOi7!8a*Cy2$($3NAyZDS{QopMs%fH|DT?-LkY)xr#hP{lWq=tPDtvbI z)l3%2a8tS}$;z;tZYIe4nnBRaIJtMZ{x^DPq>B+wvAn}&M;%=ZCOIpY+-+-Upo>8! zlPvnWL&xI>AD>$*o9LjQF;1~$pWROtZTnpR;mhN0GsDb~*J%K3q=|4gcgpa^#861` zzv0+ZPCZ==F-`aqI_DlI9Ocx~Mz~Yzm1AVz>o8DyZ^}tyqMboz$nUa+Y@~%AMhSPf zv$Eiu4j0w5)6WEX-?E%?Y6&k^?Me2BWHiZXnR}l>raXj#a@jynGCv|`DeTUa7t3;* zlN?BvPbXRQZJkp?ILX?Q`C&Ot{{70SqM1QLzo~H(Is5HSO4-Jw=kR73Ds;;cP9^gN zJvyO>VW!Fbjx8Y!uvCWi>SP#5ryOL8a4xNQz&S!AZ4Ws9Jto46BQjLTJ&?&_ncg!= zHpq7Rlld_@6Q+AJms3%aC9;BgIv7ea_q&ccYe;|GC+oiJ__vw}Ka=fCaxBU0|H>?1 zo@7~)wMn)m*_Y%*lGz7cx>VCdH=|_tS2c^`|M1Pof0(%OGikY)3jH zt}Fc7rP1>6+mP_f*52^6ZV!d8YQqT{zJd*3$A+(9Lx!*O!dH8>DVq@%gztF5_di`4 z2{|gmXZ+z~@^JGJK4c053?DL`GT87TQr-Z@UcpGcbb0R_a2q36yDKG9{ct&kOS4V6J)MdMO@v+j&ttPFiXL*g6gfej zQnqBs3jDMDG3BnBA|F8SvwWQJPcUX=xIxMPX(m@BSti48LmOrI`h7qy`^ZGYmP_FD0Ub%|%s={UJ6ArZ&g!EMXxJC4 zPpfpxb1Ky;3w0hntQi^yz(FnR-s8N0Wxm{>`(azU4V} zHY*Da?LMu}L(i%6pt3ONC!VR}ZY0Y!`9X(u(f>FpSVt)p!`9F7A=^`r|ooEc?#%DMaFQFPd{U*G%l ztdkd=oAs3GlRwXj=KZg{?8>YQ z$(LQ6bxbb$on6LywsSl8a)c*Y{QEe%g6-^KKacPPb00GRu3!^8*~ej?WbUK^P|U6D z<>5&$=uenf@CSvgBW&Gfxsw+9m}bf2UXIwxZtmp}PmuS7j@iUc_Hl?4Trd?!S5wJB zjxfU|e~hDR{+NoRn@!wF7f-O@PgY_JyE({XEO^r1;pB(U%GxA%vWEj4=V=y98wl&z z!fotfKZl9_97pG~ns7)rq)cpQHwQSz+`s6E_3WgbV?<9`&IWGgE*|DMPjmi^GIp?w zdwG~Anfq7eY+yUP*+=S85A*)dvE@?M(a3&|bMil4pEdV{bAwCSzz%k?pCdfR+}Suf zn@iZkVHTXU>)FC??&T=a-{NQ?7yixhUvFY7dpXLJEPmRFLIeF|pYj?>9o?K@@!#!6 zHn58aIl>9f`-j1@nL9ba2v4&(niE~ZI<`cqInm7~IylTz%!}tlm$HSu9AVxZE3uOU zJjMB0nODYZ z_i*sVj{h+ePqSd5N^D{~ck&>|S)H#zZeuU|In0GGQO0_9vWo*8=LDC$R9oD}K8|wo z`CrSLx5y#lij;>9Y-JY*ILy;5D6spvircu0Bg}o76O;|?;CA+LkmH$sUaIeE^xS^Lv@an_@+aQvgQjfkt*#7_2elqWf_P)BUxHuiIj6D&T*?q?IX zawjLxxhLy@JQSv1<&{$|I@boVle;*`VV*oUH7A;Xp5w$-Y-cz7IZjk$MXup49_A=d zG4EgODOR(d?cBy)9N-YqD{TO)+05a-64G@UQA{4L5W012<*eDIeq*^Iu~_xQ4Bq{J|IKje;LjA90oiDFq zLwf%HtnG3ihc0sbPnfviVinlTJ`V9Ti!QNMT+PWFugyAn(p>TnYCW-;4U8IQKBoHxm?aVc5xq%5Ea|iT+TW+vzvQ4#A8HnvOZUE@=K|Eveuip zjlDd~G3H)r*K;*nxS2b-mt#E5*{f{@TiL}y4)YlEOLW5JY-KkOa)if--mIL}DG%$} z!7lFQMzEQa-+o)xE_oLZ zbDY%Nw<`E>uR}^-5lT$k1_9UM$J|1U^gd!@QbW{^1(3u<6E*Gl}|GN zYI}%v>|_^r5#CoElE*o5wd22N?VM-@8#sB{{aHKZy*$bZ7QcN?bOjr@mAyQ|W6XVr zOOz|v!d?z?n7P*&09SJxcku{Osgsa(Y$;7y$;1I3W$rtje5_+9_i}`}@3InCv4vZ? zizCcm=h>4T+{YoFPqHA@^HEdxI5A!HbGWR-da|K&zyiSLQO+3ZI z$~jT`Ex6Cmvb<6Fw2w+Iv@E;@e^0+HIj#H_pz+EFV|LREL7WCaqTnHCaWi21cf5~-5cT-Juy3jsM<{o&*=i-l_nOCuWbIpwvVFVw~Ox{1+`_;Mk zf9rc+%6|T{`}l#peQ{Hqo!PfP8_0_1hkY8^wPBCm@v|R(V|{wxMPV<7{gs{wyCgGl z!-u|{?4tC1b;U>0ne2$E@2l#}~%Un_hkeUe32UvS6#<8R1$)X5fS zMQ8Nh|E}Y!{b?q*M3Yf;kuN|m@{#{VYpAA$A^dxSi(Drv}+uTZ|C2j5$yUaRBR>fp6yG}6r&R(_q8U)3RtldLkW zk=KP~158Kmvnj{Am-aL6yN+y@urkxp%C)AgyHcH%U5sGxmlgVIAiK}RDk^DbG>TrI z$1<$=`Z_uo!b+E`d%3!2*h81s(}@NzKjp4wDK=zP13ehv8`m&v$za}8M=QNp=S|A5RDNYS z+PczUt{jh|)k~7J-s)PyPlH$Yqp&2OwQQp`ie4P%by%Xq5)FoWZ!UB_{QDIFXB~(zKWKWXg znS86pLit;@lTIDJRo%DRfVcKD<=YyAdYgK0)7IN;TsY)!Yo_1vf7?tHU2P;+uVEuK zD7?CxF<*w|vI-5awR~+aqnwJOw->OIGOYLZ7L>o;R=y*jWoY*uRkSk@Mc2eEL7Uf9 zI{w#a^qL;V-DTupl;Pwmt)LAng?y)hymKiUJWFHm)aW}K>0&I3-j#R7O(F>PJl{Plf%Xk#M zPxn44z zoKFdrG}A$<&%;C%eb7kLslo@#*+wHOeQ+d-KBTh`EoCjrKGaGVqnShTq1hO!qR9%&WIeo7xJ1q~eXGrmJbnT;Dh9^v3BZx~Yg&=rp$CP1`a9yUDu;~26M{}V>%Bn-yc&yybSNqet0$AQA7ztFvYcA17oG=d`x#{>iaxIH$CZ7&o2kro{t4}b=loA7 z`-A~}VjHatxc)z3lsofSiBY9f!wZda=O6}Cw}fIWt81n^bN$vSuT%a>4TphzQsd#Q z|D<-pIr7PR$2w28t7rXBs-LbmY0G1lJN_vvr8ZK7#?#rAp1 zyk3X(I;+=Fz4ChNh5VHDKBePNZKIQk%<@}we#>%FVMP^h=|U>oXC)}W(?Q&IHkrReC>pcq)oMlg}!)*;BE!?q{s~nW-rHtWG~`KZPsve36(U`#RyjZkHRF^n6~bJ zv@`7I8gb?%yJJb_iR}*McT`Y|0p8Kicogl!5wzy+C2GOCjjuw=MJC_c1(y616ckAfxW!O7+ z+p4>@b$2@h>T2iiiOk9P_1q*^B&qGMtDE|IPp0D6hb@@#YpW&Lx_v6_tEM&c47g9d zed=@?d1n!8GSBIqm6>{-O_udB9Yx>BXKm(X`5W6ZcRJtD&Nup*ilTe;aZf4Lj{iMY zyr&mibZ;RWX+UH5jxy^9a~kYgMLD%}G7?4Kj9H4oe6yMk#xqaN-<*k}Z)xva+WS@` zy^KZCeFlGD2~{*W{`U=GRNXr1UP(>nhN0WQy8BV~Z5@2OlL2hu{RON=-TT`!x9|5W zyMHo@_AA?8Om(LIe(QxBnf=3==YyWuKbBa64eCi%cxa@H5j5}}6~40^W$Elrawdu% z$V1r!rRe;D7HnCl_rOFZ510<~2e!F8*3kj&AJG1RalcvAc5ji((tvu49opVX6HREO zSLff&V_D{|_PZrX>L}dhez!Tv?j%Q(oXzBa6(qSlivFvNI{KsNU=BJxsIP;T9c=ZY zwNZxa|KNxT4fN?W{GHOiT6ENB#C=0dMA7$*`gq&{GcQAM&t(?eX*5(Fq-6S zCLb#BX`ul;RK_-%lhjezgAWZSss6)7sP}LS1B_w$Kt8Dz9@bKg5e;;q(ty$aFc+i! z;YO_dLxcI@bQJwa2S2jjkIJY`vQ73e%1jhJlApO}e55!@?LX4Vhp==7#_@OFV=%hc% z$xIH}sIYu!RXS7AkcQF=j4+*zNp@xKScWt(G!aEVwc<~gQJT4oep+K%Lq8qQTy{T; zqv&T#(D2X7G4P+Y(uX>Sb0|dl;VP6J?sNPPYkb(s!wQF2VnFHKmZU97&-cnvrZf3- z1N!+=)_4n_Ck^Q5o#^Zr_Qo%?^$TtN!t!)BC)u63_4>t-=ZDmQg|ks~MCV5|l&kS0 z6`2nlj#%MH50jZEq!Epd*uoJFk7#&A!{OWse?W1>R*u+^|2C-qUV*m$TRZ<e^w@0ZMvCWGm1wwuwQeqUe9~DWwK`;D7s>jiTe0A74QkwX~z53Ckyn(eT7DI{cl^f42;6 zhv)j=)zLyX158KJ?{ggg-!C^&iUxnL!taef?DF4_b1I4+TY@@|t)YTuH1L>#PHK3v z5S>p}(Mmt#QS=98e^|=K%vt{j?f*gfAGH66QD&p)@o@Yf*Kl}4@wkecH2S!TkL%>| zt|V0sZ@V8?_Czk~r?XC~^MuaA{8V0&N%@p^!euvQW5OR-oEm02ivF0NdCmA^sp&e$ z|Bo68@5lc*$XFEp$;e;bC<|R)A&V(Thv{rf@|pTmk)JQIh8j8;V%9&XTSg^K^k??$ zv<(Wk`{7Rooslx}=K_{fK|LDy^8k}k^p|XkD4`1Fe=&eYEB~e2r(DHS-M@^de`pvz zrJbkBFp#JEFt{1(&!{(3K?9c0j78C3^Bw=cTH&vi)X|#R)qm|WJrYI#7h?qv#(wSm7TU`$rQR`o{<}>0{9Irnn%A<6>%QXM|HxJV(7b zl{C=DwC{VCQce>+j7Ra@Tv95|RdKG0b0?xWJCEh)C|l)hm9s~q_zcU>SVJ9c=A~|>vXOcW;&}s1M)5rL=czx>@_ClevwWWAIhN-vr6j$9aVn=GeVZNU=q#s;q4b?k zoMX#hxGajFUy!5~((^S*+U4$a;^*6Y={%KL{({2H{0r1~w;aE~fL~z1FX&Io9nR3s z{QPvL;`u7N#fs-wVzl#(cK&b_=Vnt#F;%o=2AJEM z>E->(#-sSm?9B2r9sjWW%xaqaY5Fs}8Dt`JtQW-oIMY(fsG&9e6dEtE1s%3{ z!5FhqoL7*f2E&%-m7{*1fu^%Z+K{~ID1MRkUbF&rUQ~~=7fnU+i&Oa?im9N14h-hS z6H&Y{8!IiW%53pMsFPpHwq(9J$(|%fl2kX;e~E#ob5#_l z(i29N&blPqlQfX@^65;zG(U=8x}3G?r_lJNw&bOq=wMMUYcl1FY|J8UEwcV18&Y6H z3anSKF-q_Hg2p8Kd}LH$H@wV&-7Rn{xDPcC?-B@8KtOq))13X zyjaJJS70L+8_;5dUp$b0a~dypj`-j)UObc8gG=(Fcu5hfs3IKyB|R9#%N4%dAYQKV zmv=E5#jmjJ6)L~NvR7#M6=B(I6ra7EGISUQa<+5CM=mw+A=Gi({Ebgxp|rSbC;Xe(YZQ0SHtIO_}rN&K5rS;J+Fcm zhOjq^JdyotESF;7Mb-@iDym7c*>pD}QT#7Cj{mK?esIjsVIJ>(Y;dVuUt#@ zTz{A;{XRZ^r3PN9fmdqamD5ptejdvyqlrPLqIhXO%UF}Syq9h?T~8N^{_*F*yDvi9V0fTv!%kBLddXU)YwU=Y=r8+}4DS zmphByA;rtpaBd$7wc zo{Hj2jPMeB;gaGgd`cZ(Qjva{jW20Pvcs}o?2St%qj*JjrlS>0eV|xjepULuK3-wH zaMrJ=r=5Y!09K4;F54BenS8B1kn+Ahe(hSe(VFC7W`);|r|(+h*Tqr%xx}w! z>V;$Yx^70J_)-J8w1_oS(m)4;Or-xXQ@pZB>L;Db(;2S+l`348m;R(8zHC{N<(8>* zSx*%1{o>1pn2zGtFGVA-ugUC@*S93uovHVF^3E%&OCypzuTwH*Y?+b&nGINZITTJV?crprqm??hK z5{l8to2>UHW$B!W!Z#-Il{Vr^8*ybd*1fVH16XYUt5>4VYJ*-qgf>$pIhm1{*i|pi zkKz)qX5JIVC1upn!3d`^%ipYnH`|Ig*Cz9ArZx6v0|@KA#YVhk4cn4=>%V1?=_tOc zh>d9Xs*dy?PQ_Ol;Z;*nyvB-athh$u8Y`_C#!7F^_aStRT#l9B+C(Q#($L{soy{TN zW&_e$YPz0Y#-sRZ=R&wax!U?ym!m8ks;l*Jb-&|(wMuJqvEo{VYZa^=MWb(DMrr2c zdV7^=oxk15^Cbg%`*7wQdHZw}zayVj)S}~eSpOaNn6F~vYqW8Vwy#lkO*{6+H4{-> znoX*}LkSzPOJ6f4RVwXaC^OPhmBWbNnVY1J((?xK&K7!;`Ke64t0;=!rOkI$c^=X3 zyBg@mhOUcQmj2j2UT1Ho)>T{3N*_8}cPfg@3eicK1}-j_8Yr{N%Z5?@Z$;Rmf2+sx ze;dI7-(BD~-12ujiNCC^cUMt|LB87n-fjK$*=T!x4V|w4^#dkU4q2X;Ifms+Owh3<#Q?5d!p6*N!L=zBuN{lx>k826bv>CCDp&eeWK|SbmZF33KS1!+NnAOAMn1SS zb8J6YY`TI54ETeiQTW45@rRaCPCflmyg55_d2cTCm97D7)_%y;W@mSLfn%LcD{R)# zW=~9ehUH8YR~cNDr_gX2Rh4J%cEgVd!d-7wcarLd`48uy;SZNkf%ZP!Mqm01&G^G3 zrcXuj^@Xf*{I9ol*X!{5N#FPAXp2s^EN5fp#bb-|EgIM|nCW24R1{Zdqk-yTD$z-G zI~xCp>pg79N0w4b9m+m3$T+8>_y+CYpzMZij{glU7{CoG+@Qh@Dr_~7t#;8@^5j}H zvb8(OiOloCHg&db!}4uI7}$-r{ze_&xCR5iQQJ3a_r{4RzDZktM-bmsO%v9;$@71_ z-Ld(K-L-uQ#W)l{>XRyM@4?IPXO~BDjjJP_YfW#Xm0mRdQ5}DDMP^_hRsPW`nxga_ z(?_-OQT=>OosX@gng;BZ)W-%)Ol3OUu{25NL>Ryh$JmEW@s3UgnTq1tdWJchuS`-0w`t(E8Vt5Ek9vAC_l}=gnb}jHX^Y~|#%S}i?F>cn?Zs@% zw3E7h+^1amQQV}XbPh!E=hjloL==DCF7$z7>?`#6^RrRB%U;>lia|Hqy5>rTqwt5B z;{Vu&4#RqP}N zETV~3Xu zPiFG#MN$0qwR8PpCTWmgZ=!>K#?baY>+dV3inb_9-M!3&5$+piCW<@rFo4dDI7`D_ zZ>L?AJ1vKhzTb_%u>yPN8}%5-HZ>Qmt~HBD7eo`_cfri^!$kF*(mNV%*=Nen^vd0Imv-!xrRdhZx^BS zZ`Wi_vTwH~^TSe|`}0wLzukU+Gd4D?cYkU;iudQRf>KMOh@r|Y{_@*?l8dblxFIEr!F&)?{r$Gv+qo0&Y=hN^T1jfG04;d8VV~u zFp{ZoKx5&gJ79~$01hZir@eEao&IEg%=AnY_vU3Tr(S1&xU70hsGyz>hBEnG?S6MD zYce+?->o!V=lFlOH3~nIjlb&#A)RBH{IBdJmnT`4q+=WE{g;y}oymItHIbP=m>tCj zi>RiFZVar?@;=M^*3dv7Q;z@l3R%TQ?3VBKGR#yIf8R>qSN{FAY@-=_?EA{U?`+?y z?t`xX@OJ&dWt31Cg`eZa54vhDZj~dM`TjUluiu{fba52-mqgKRsZtY;dE=05j?(Yr z`@2osy+4R`VgNtT_zyJvgQ`peKQPGfYW9QnBnM58b1I4-GKhzig$;N}{a=(x^&c|m zhbEHcr!wc*!`e+fY|9>Q$aM5@hv|MaHju*#Do{SqMsF1VFdK&=nv&bFg+CmK!ta3M zA5KK^kF58j>0{~sNTqNPT9esvT-l4DmbmCK^^ zziRkwd6fAfnPdCe&M5p=EPg~ow@+gJ^JB=n2P|)l(!UL<>T)6)X!^B(+R2w^FVwIS zdpKnHI`4lhpQ`owe^~IR;`H}F@gr9L;@@;xNXivQ+->+$UOxyAw=dmJlx8$>>FtG61QW#i#VQM0?;G&|; z$1367Y3Wer9nFtb3h!vbyPY2!)K9Wmj*fRWW!4KXRzFeiCkA{dH}hh3Nc}^$_#tJU z0mH3(?D9-^oW30EmA7T~bn4JxW>+W2CR*g!9P}rhVk;baDvF1eQ2)0JZ$-}kq_%^csh!Io`=2j^Oh+7MGniO@VmhH7v{t3{Sk*X z%pYmxR1}XarJ129{_ho3hITha@h?^SrP2JdfgVPfdUlJ$9vQeYvqv7CAH|QZr1shJ z#maxEJi0sU)z|(!nzQ)V${n6ZZP4hVFYbJK?C&+1?82Wpbpb@_RqVvmSNYWinN{RJ z>-;F|Id!%qb@rWB=Q&;f>UdJ;w7yb5y5;}f(61L~D#>R%d(MD3t1e=_)^cSC2iKY3Mg+Kik>ha|ZOA&6$RNv-`9<&l%8f9!%PKB2#CfGvUW!Kp%|a z|5=1H<$uU&v&%wIAd1H?JgqG0 zF!VR>kdE(4m!;BMf9SLh$NOx3a)yQu51rQGxC?MRT!6_I4xQHFZ|zd&%Clvsb@*Ew z=p1>r?4SL4mH%xO_36Sh{lnP!ryBkE-Ig8B`uV-T&N}y^lct}FvVJcAcV5<&mxXjm z{_kqG;>7yji6}mP9#`S&IBpA%-^*d1h~kO)SZ6}{#13x9bL2$o!K{m4rooA0QT#i* z=64sep6#ggyL)jd{qD&q{=G}{_gA3o_j}mSBRmnskIlsZ9#j6x>rN`4 zynteEWiJnVm7lco9~PkS59=~p_lM11JTK?pPS!aFN-g;6;PwME&JsjXTPe<{zI@1O+y$ZRk9*en@bu_Y{<5{o&4_kY}$|n|~{DcNh>_7)6 z)H!j4$D(*vo!PUwggqRN;*$%w8hhg8ZVc$;(J20#4f)$bE_D3=w%){6_7V!8jN+#k z<3xGd>)zA-QG6x3HIoIU3D5a{<;l^J?^!I@3yL z9^_awXF1fWv1*o)e6Gpbs)-HUIzs8t>#+OJQhwHcj-lPfi?IIU zYe=cE_*QJ`;wPdxOCpSHi3)B(=Pc3jlKok?c#W8|MCVJ?dHFmp;A*yD{g=CZy(Y|g zxxv5OAYOhVn)8ZG zxlcO&=gp7ioOcNZaNc%yv!CP9oFaoOvSN{4Rb)l~E896m|4)1O?^D$s1pxfp?`3dc za9|)U1Bn!$@_<);{^SXWfDe3B1Qf()1;Lb524WpZYl5i`G<6`U14$W7%Ro|_klLoC zaln>=Gz=znaByI7aBy&NAPq_Td3Nd8KR}WX+;`9Uo^$TKQQjrwVzBpLhgj<@)K=5Z z5Z2ZjuvT8}3L7ErwtjaFa&}K}hx=@zMykT~PidSoS!yBq-1qjFGF{4aDG7Ual3@zP z{mtySXN^}O?ybUbdwZE<2~GDt53#PCRI;mEy*kb7Cb7Ow?K;iV220l@x4LH}q$Q+B zFhqKRpHL*dm3-AFUcZwp8r4s56V2)stCv^59b$u=200CK8g3?^Ube1bo>ewOY&1|~ z2JyzJiphgFudmx)V#D>{Cvkro3Hv7y*uTMch}lXURko0fUHdD! zdQGwH2-Dob(Ag(!CA&ToJKzWp6q#imgZOhU@t{Eu9!C9xi&%5;1>3Iwp`8dG>P68* z%LpDWqZ$Jo9%71F?(v9MAs(rqfWk*^Fwa9?CSQMHpraZeZD*3D&0F4b+fhfH{^ijCbYn zcokyD#g0#Km-}p>ew&;&>)TqB@Aa68ZJM;ra*s7OLp)JNH3cTQ$vg_3D8;u!Y!`1Y zGKC@9AMzMYI?Bo)bN9n_F#n!CxLzgc@~iPhxRAEoW5yb7^Ujx$skK&^ttg+=!f z*L_v5pm|}-_3x<+vF8B(Z5~yiM{>`76zY-ip}{_ErO0jWvCfMSPnTi+Y4OvOh@F1O z;}CnrdaEfg%OcjD38XOCnbPw*&scP31r7Tw>dPY7XOKRF^gRi&-~N7!`txYie;Wn+ z#Rke5VVY$&a0bq%lLw`B0)rL}J_~WEk{p^1&GC@U5YO+#z~?8i|NN^EhwU5AVE^!S=92gJsWrTW_yv6~ z9A;+RCp#}Vk_#_GEZSMrpg4`eiuM<`LcFNpMT1=|V9mvOmJ$1?ieB!p!ix|uRgz_Z z>xfb%7 delta 36585 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 diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index 65c93444..60d87d32 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -29,7 +29,7 @@ setopt incappendhistory # Immediately append to the history file, not just ##### GTK EXPORTS # export GTK_THEME=TokyoNight # export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc -# export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc +export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc # export GDK_BACKEND=x11 # export GTK_CSD=0 # titlebars export GTK_USE_PORTAL=1 @@ -65,7 +65,7 @@ export GOPATH="$XDG_DATA_HOME"/go export GOMODCACHE="$XDG_CACHE_HOME"/go/mod ##### MISC EXPORTS -# export GNUPGHOME="$XDG_DATA_HOME"/gnupg +export GNUPGHOME="$XDG_DATA_HOME"/gnupg export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android @@ -217,7 +217,7 @@ source /usr/share/doc/git-extras/git-extras-completion.zsh # gpg (for Github) # export GPG_TTY="$(tty)" -eval $(keychain --eval --quiet id_ed25519 id_rsa) +eval $(keychain --dir "$XDG_RUNTIME_DIR"/keychain --eval --quiet id_ed25519 id_rsa ) ########## ALIASES alias edit-i3="micro ~/dotfiles/.config/i3/config" @@ -226,7 +226,9 @@ alias edit-zsh="micro ~/dotfiles/.config/zsh/.zshrc" alias cat='bat' alias bat='bat' alias nano='micro' +alias flattendir='find . -mindepth 2 -type f -print -exec mv {} . \;' alias emptydirs='find . -type d -empty -delete' +alias count='ls | wc -l' alias dotfiles='~/dotfiles' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' @@ -282,8 +284,11 @@ path+=('$HOME/.cargo/bin') path+=('$HOME/.local/share/cargo/bin') # java path+=('$HOME/.jenv/bin') +# console ninja +path+=('~/.console-ninja/.bin') export PATH +# jenv eval "$(jenv init -)" # zsh-syntax-highlighting and autosuggestions diff --git a/.fehbg b/.fehbg deleted file mode 100755 index 5c98d17f..00000000 --- a/.fehbg +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -feh --no-fehbg --bg-fill '/home/kaizen/.wallpaper.jpg' diff --git a/.github/README.md b/.github/README.md new file mode 100644 index 00000000..0003816d --- /dev/null +++ b/.github/README.md @@ -0,0 +1,397 @@ +# Wallpapers + +This README is auto-generated. You may view its source code [here](docgen.py). +Showcases are randomly chosen. Files are shuffled then first two +from each category are chosen. + +## Showcase + +Categorized wallpaper showcase. two pictures per category. + +## painting + +paint

+ +dreamoftheredchamber

+ +[Browse](../painting/README.md) + +## m-26.jp + +11

+ +14

+ +[Browse](../m-26.jp/README.md) + +## abstract + +d0a.1.0

+ +arabia-gruv

+ +[Browse](../abstract/README.md) + +## interior + +empty-living-room-with-blue-sofa-plants-table-empty-white-wall-background-3d-rendering

+ +clay-banks-0hG9jeO74-w-unsplash

+ +[Browse](../interior/README.md) + +## apocalypse + +kanistra-studio-13-crossing

+ +kanistra-studio-20-workplace

+ +[Browse](../apocalypse/README.md) + +## flowers + +andrea-tummons-oPW-njJj1oM-unsplash

+ +wallhaven-q6253r_3840x2160

+ +[Browse](../flowers/README.md) + +## fauna + +44 - sgNnIlC

+ +103 - qlVeiGJ

+ +[Browse](../fauna/README.md) + +## cold + +w5fohvw1xv191

+ +undefined - Imgur

+ +[Browse](../cold/README.md) + +## mountain + +extra-12

+ +5

+ +[Browse](../mountain/README.md) + +## pixel + +PixelartCity

+ +a00cdcb59e25e8c96ca947c919a1e13f

+ +[Browse](../pixel/README.md) + +## architecture + +CITYSCAPE1142023

+ +175fe5597b12c33ba7c9864404772bbd

+ +[Browse](../architecture/README.md) + +## logo + +wallhaven-eo5vgw

+ +wallhaven-j5o5my

+ +[Browse](../logo/README.md) + +## lightbulb + +ruthson-zimmerman-MAawiPJCQN8-unsplash

+ +black-pendent-lamps

+ +[Browse](../lightbulb/README.md) + +## poly + +pokemon-pixel-4k

+ +buildings

+ +[Browse](../poly/README.md) + +## gruvbox + +od_4

+ +od_1

+ +[Browse](../gruvbox/README.md) + +## apeiros + +ocean_front_2

+ +rock_2

+ +[Browse](../apeiros/README.md) + +## retro + +topk5

+ +jpn

+ +[Browse](../retro/README.md) + +## weirdcode + +1687155287949789

+ +1687154664825712

+ +[Browse](../weirdcode/README.md) + +## aerial + +114578-coffee-cup-simple-background-minimalism

+ +MoarBeach

+ +[Browse](../aerial/README.md) + +## nature + +erwan-hesry-WIdhyut3bp4-unsplash

+ +forest-river-misty

+ +[Browse](../nature/README.md) + +## nord + +64m36y0xpf561

+ +Nord Day

+ +[Browse](../nord/README.md) + +## geometry + +wallhaven-z8pdqo

+ +wallhaven-g8x697

+ +[Browse](../geometry/README.md) + +## evangelion + +748657

+ +evangelion-unit-002-red

+ +[Browse](../evangelion/README.md) + +## centered + +da14a00f4cf6294c351ef473c3787d77

+ +0fd979f8891feab2ce0ad52a97294eb2

+ +[Browse](../centered/README.md) + +## chillop + +wallhaven-3zp6o9

+ +20210817_004904

+ +[Browse](../chillop/README.md) + +## minimal + +sleepy_mountains_dark_v02

+ +8337e8bf18303f6aa4c348261322d07e

+ +[Browse](../minimal/README.md) + +## manga + +1183004

+ +582

+ +[Browse](../manga/README.md) + +## boccha + +cat-boccha-big

+ +cat-boccha-small

+ +[Browse](../boccha/README.md) + +## paper + +1647935972998

+ +1648005473077

+ +[Browse](../paper/README.md) + +## solarized + +wallhaven-ymdvjg

+ +ketqb6blpnt81

+ +[Browse](../solarized/README.md) + +## outrun + +r

+ +neon

+ +[Browse](../outrun/README.md) + +## digital + +s61f586j38aa1

+ +ll5spy1k38aa1

+ +[Browse](../digital/README.md) + +## fogsmoke + +6

+ +mont_des_ranges_saint-colomban-des-villards

+ +[Browse](../fogsmoke/README.md) + +## basalt + +basalt

+ +sarah-thorenz-eeh_ardhh0k-unsplash

+ +[Browse](../basalt/README.md) + +## radium + +OD_house_night_sat

+ +output-1659958155

+ +[Browse](../radium/README.md) + +## animated + +fireplace

+ +qo1zd98o0ghb1

+ +[Browse](../animated/README.md) + +## cherry + +nikhil-kumar-JdPHvI7VF0o-unsplash

+ +cherry-blossom-white

+ +[Browse](../cherry/README.md) + +## halloween + +scott-webb-sEX6PAx4lGs-unsplash

+ +freestocks-y_dCjaRWthY-unsplash

+ +[Browse](../halloween/README.md) + +## unsorted + +140 - K9Z0tmJ

+ +unknown

+ +[Browse](../unsorted/README.md) + +## monochrome + +monochrome-eye-character

+ +denny-muller-zgrakjjOfGk-unsplash

+ +[Browse](../monochrome/README.md) + +## anime + +53 - 5mfxcOd

+ +wallhaven-q63vdr

+ +[Browse](../anime/README.md) + +## dreamcore + +alex-bierwagen-Uuz7yti7SQA-unsplash

+ +emma-steinhobel-uYyK5wQwvS8-unsplash

+ +[Browse](../dreamcore/README.md) + +## jackb + +wallhaven-6ox1ql

+ +wallhaven-v981x8

+ +[Browse](../jackb/README.md) + +## spam + +car

+ +Dark red Japan

+ +[Browse](../spam/README.md) + +## Sources + +Following are roughly the sources from where I scraped these images from. + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + +## Ending Note + +You may use [download-directory](https://download-directory.github.io) for downloading a specific directory. + +I do not own these images. All credits belong to the respective artists. diff --git a/.github/config.ini b/.github/config.ini new file mode 100644 index 00000000..4ac21feb --- /dev/null +++ b/.github/config.ini @@ -0,0 +1,8 @@ +[DEFAULT] +source = docgen.py +download = https://download-directory.github.io +spacing = 1 +choose = 2 +dry = false +browse = true +exclude = tile:devicons diff --git a/.github/docgen.py b/.github/docgen.py new file mode 100755 index 00000000..8b7eeead --- /dev/null +++ b/.github/docgen.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python + +from configparser import ConfigParser +from json import dumps +from os import listdir +from os.path import isfile +from pathlib import Path +from random import shuffle +from typing import Callable + + +def get_config(config_path: Path = Path("./.github/config.ini")) -> dict[str, str]: + parser = ConfigParser() + parser.read_string(config_path.read_text()) + return dict(parser.defaults()) + + +def categorical_wallpapers(exclude: str | list[str] = []) -> dict[str, list[Path]]: + exclude = exclude.split(":") if type(exclude) is str else exclude + return { + # exclude categorical README.md + str(category): [Path(picture) for picture in listdir(category) if picture != "README.md"] + # exclude hidden directories and README.md + for category in listdir(".") + if not category.startswith(".") and not isfile(category) and category not in exclude + } + + +def get_templates() -> dict[str, str]: + return {template: Path(f".github/templates/{template}").read_text() for template in listdir(".github/templates")} + + +def generate_shuffled( + config: dict[str, str], + categories: dict[str, list[Path]], +) -> dict[str, list[Path]]: + results = {} + choose = int(config["choose"]) + for category, pictures in categories.items(): + shuffle(pictures) + results[category] = pictures[:choose] + return results + + +def prime_templates( + config: dict[str, str], + handlers: dict[str, Callable], + templates: dict[str, str] = get_templates(), +): + return { + template: handlers[template](template, string, config) if template in handlers else string.format(**config) + for template, string in templates.items() + } + + +# Handlers {{{ +def handle_body(_, string: str, config: dict[str, str]) -> str: + shuffled = generate_shuffled(config, categorical_wallpapers(config["exclude"])) + results = [] + spacing = "\n" * int(config["spacing"]) + for category, pictures in shuffled.items(): + merged = {"category": category} | config + results.append(f"## {category}{spacing}") + for picture in pictures: + merged["random"] = str(picture) + merged["random_stem"] = picture.stem + results.append(string.format(**merged)) + if config["browse"].casefold() == "True".casefold(): + results.append(f"[Browse](../{category}/README.md){spacing}") + return spacing.join(results) + + +def handle_category(_, string: str, config: dict[str, str]) -> dict[str, str]: + results = {} + spacing = "\n" * int(config["spacing"]) + for category, pictures in categorical_wallpapers().items(): + readme = f"{category}/README.md" + results[readme] = f"# {category}\n\n" + for picture in pictures: + merged = config | {"filepath": str(picture), "filename": picture.stem} + results[readme] = f"{results[readme]}{string.format(**merged)}{spacing}" + return results +# }}} + + +if __name__ == "__main__": + CONFIG = get_config() + primed = prime_templates(CONFIG, {"body.category.md": handle_body, "category.md": handle_category}) + full_templates = ["heading", "body.heading", "body.category", "sources", "conclusion"] # ordered + full_templates = [primed[f"{item}.md"] for item in full_templates] + partial_template = primed["category.md"] + + if CONFIG["dry"].casefold() == "True".casefold(): + print(dumps({"full": full_templates, "partial": partial_template})) # use this with jq/fq + else: + Path(".github/README.md").write_text(("\n" * int(CONFIG["spacing"])).join(full_templates)) + for category, readme in partial_template.items(): + Path(category).write_text(readme) diff --git a/.github/ftaudit.py b/.github/ftaudit.py new file mode 100644 index 00000000..63ac160f --- /dev/null +++ b/.github/ftaudit.py @@ -0,0 +1,325 @@ +from enum import Enum +from itertools import chain +from os import walk +from typing import NamedTuple, Optional, TypeVar, Union, Generic, cast + +import filetype as ft +import json +import os.path as path +import shutil +import sys + + +OkT, ErrT = TypeVar("R"), TypeVar("E") + + +class Result(Generic[OkT, ErrT]): + def unwrap(self) -> OkT: + if self.ok is True: + return cast(OkT, self.value) + + raise ValueError("Attempted to unwrap an Err value.") + + def __init__(self, value: Union[OkT, ErrT], ok: bool): + self.value = value + self.ok = ok + + +class Ok(Generic[OkT, ErrT], Result[OkT, ErrT]): + def __init__(self, value: OkT): + super().__init__(value, True) + + +class Err(Generic[OkT, ErrT], Result[OkT, ErrT]): + def __init__(self, value: ErrT): + super().__init__(value, False) + + +Discrepancy = NamedTuple( + "T", [("file_path", str), ("incorrect", str), ("correct", str)] +) + + +def examine_file(file_path: str) -> Result[Optional[Discrepancy], str]: + if not path.isfile(file_path): + return Err(f'The path "{file_path}" is not a valid file.') + + file_type = ft.guess(file_path) + + if file_type is None: + return Err(f'Could not determine file type for "{file_path}"') + + file_extension: str = path.splitext(file_path)[1].lower()[1:] + + # Standardize multiple accepted extensions down to a single extension, the + # one used by the file type library, as it does not recognize alternative + # extensions, only one extension per file type. + + file_extension = {"jpeg": "jpg", "tiff": "tif"}.get( + file_extension, file_extension + ) + + # Mismatch between the expected extension for the determined file type, + # and the actual extension of the file. + + if file_type.extension != file_extension: + return Ok( + Discrepancy( + file_path=file_path, + incorrect=file_extension, + correct=file_type.extension, + ) + ) + + # No discrepancy. + return Ok(None) + + +def generate_csv_report( + discrepancies: list[Discrepancy], delimiter="," +) -> Result[list[str], str]: + if len(discrepancies) == 0: + return Err("No discrepancies to report.") + + try: + report: list[str] = [ + f"IncorrectExtension{delimiter}CorrectExtension{delimiter}FilePath", + *[ + f"{d.incorrect}{delimiter}{d.correct}{delimiter}{d.file_path}" + for d in discrepancies + ], + ] + except Exception as e: + return Err(f"Encountered an exception while generating CSV report: {e}") + + return Ok(report) + + +def generate_json_report( + discrepancies: list[Discrepancy], +) -> Result[list[dict], str]: + if len(discrepancies) == 0: + return Err("No discrepancies to report.") + + try: + report: list[dict] = [ + { + "file_path": d.file_path, + "incorrect": d.incorrect, + "correct": d.correct, + } + for d in discrepancies + ] + except Exception as e: + return Err( + f"Encountered an exception while generating JSON report: {e}" + ) + + return Ok(report) + + +def fix_discrepancies( + discrepancies: list[Discrepancy], what_if: bool = True +) -> Result[None, str]: + def fix_discrepancy(discrepancy: Discrepancy) -> Result[None, str]: + try: + wrong_abs: str = path.abspath(discrepancy.file_path) + wrong_bas: str = path.basename(wrong_abs) + wrong_spl: tuple[str, str] = path.split(wrong_abs) + wrong_nex: str = path.splitext(wrong_bas)[0] + + correct_abs: str = path.join( + wrong_spl[0], f"{wrong_nex}.{discrepancy.correct}" + ) + + if what_if: + print(f'Would move "{wrong_abs}" to "{correct_abs}"') + else: + try: + shutil.move(wrong_abs, correct_abs) + except Exception as e: + return Err( + f'Encountered an exception while fixing discrepancy "{discrepancy.file_path}" -> "{discrepancy.correct}": {e}' + ) + except OSError as e: + return Err( + f"Encountered an exception while fixing discrepancy: {e}" + ) + + return Ok(None) + + for d in discrepancies: + fix_discrepancy(d) + + # r = map(fix_discrepancy, discrepancies) + return Ok(None) + + +# If this isn't faster than glob, I'm going to be very disappointed. +def gather_file_paths(start_path: str) -> Result[list[str], str]: + return Ok( + [ + *chain.from_iterable( + map( + lambda x: map(lambda y: path.join(x[0], y), x[2]), + walk(start_path), + ) + ) + ] + ) + + +HELP: str = """ + +Usage: python ftaudit.py [OPTIONS] + +-------------------------------------------------------------------------------- + +General Options: + -h, --help Show this help message and exit. + -p, --path Set the path of the starting directory from which to + search from. Default: current directory, '.' + +Output: + -o, --output [FILE] In addition to stdout, write the report to a file. + + -c, --csv Writes a CSV report to stdout, rather than plaintext. + + -j, --json Writes a JSON report to stdout, rather than plaintext. + -i, --indent Set the indentation level for JSON output. Default: 4. + +-------------------------------------------------------------------------------- + +Modifying Operations: + -f, --fix Automatically fix the file extensions of any files + with divergent extensions. Not set by default. + + -w, --what-if Simulates the effects of the --fix option, but does not + actually modify any files. Not set by default. +""" + +OutputFormat = Enum("OutputFormat", ("Text", "Json", "CSV")) + +if __name__ == "__main__": + search_start: str = "." + fixing_enabled: bool = False + output_format: OutputFormat = OutputFormat.Text + output_file: Optional[str] = None + json_indent: int = 4 + what_if: bool = False + + for index, argument in enumerate(sys.argv): + next_argument: str | None = ( + sys.argv[index + 1] if index + 1 < len(sys.argv) else None + ) + + if argument in ("--help", "-h"): + print(HELP) + exit(0) + + elif argument in ("--csv", "-c"): + output_format = OutputFormat.CSV + + elif argument in ("--json", "-j"): + output_format = OutputFormat.Json + + elif argument in ("--fix", "-f"): + fixing_enabled = True + + elif argument in ("--what-if", "-w"): + what_if = True + + if not isinstance(next_argument, str): + continue + + if argument in ("--path", "-p"): + search_start = next_argument + + elif argument in ("--output", "-o"): + output_file = next_argument + + elif argument in ("--indent", "-i"): + try: + json_indent = int(next_argument) + except ValueError as e: + print( + f'Invalid indent value: "{next_argument}"; must be convertible to an integer.' + ) + print(f"Exception: {e}") + exit(1) + except Exception as e: + print( + f'Unexpected exception when converting "{next_argument}" to an integer: {e}' + ) + + r_file_list: Result[list[str], str] = gather_file_paths(search_start) + + if not r_file_list.ok: + print(r_file_list.value) + exit(1) + + file_list: list[str] = r_file_list.unwrap() + + map(lambda fp: examine_file(fp), file_list) + + results = map(lambda fp: examine_file(fp), file_list) + + discrepant_results: list[Discrepancy] = [ + *map( + Result.unwrap, + filter(lambda r: r.ok and r.unwrap() is not None, results), + ) + ] + + output: Optional[str] = None + + if output_format == OutputFormat.Text: + output = "\n".join( + [ + f"{r.incorrect} should be {r.correct} for file {r.file_path}" + for r in discrepant_results + ] + ) + + elif output_format == OutputFormat.Json: + json_report = generate_json_report(discrepant_results) + + if json_report.ok: + output = json.dumps(json_report.unwrap(), indent=json_indent) + else: + print(json_report.value) + exit(1) + + elif output_format == OutputFormat.CSV: + csv_report = generate_csv_report(discrepant_results) + + if csv_report.ok: + output = "\n".join(csv_report.unwrap()) + else: + print(csv_report.value) + exit(1) + + if output is None: + print( + f"No output was generated for format {output_format}. This could be a bug." + ) + exit(1) + + print(output) + + try: + if isinstance(output_file, str): + with open(output_file, "w+") as io: + io.write(output) + except Exception as e: + print( + f"Encountered an exception while writing to output file {output_file}: {e}" + ) + exit(1) + + # This should be the very last operation, since it has the ability to modify + # file names. Keeping it last ensures that any errors will have occurred before + # this point, minimizing risk for the uncertain (I miss Rust). + + if fixing_enabled: + fix_discrepancies(discrepant_results, what_if) diff --git a/.github/templates/body.category.md b/.github/templates/body.category.md new file mode 100644 index 00000000..258d4088 --- /dev/null +++ b/.github/templates/body.category.md @@ -0,0 +1 @@ +{random_stem}

diff --git a/.github/templates/body.heading.md b/.github/templates/body.heading.md new file mode 100644 index 00000000..55d2c0e6 --- /dev/null +++ b/.github/templates/body.heading.md @@ -0,0 +1,3 @@ +## Showcase + +Categorized wallpaper showcase. two pictures per category. diff --git a/.github/templates/category.md b/.github/templates/category.md new file mode 100644 index 00000000..7c8709c1 --- /dev/null +++ b/.github/templates/category.md @@ -0,0 +1 @@ +{filename} diff --git a/.github/templates/conclusion.md b/.github/templates/conclusion.md new file mode 100644 index 00000000..7c0731c1 --- /dev/null +++ b/.github/templates/conclusion.md @@ -0,0 +1,5 @@ +## Ending Note + +You may use [download-directory]({download}) for downloading a specific directory. + +I do not own these images. All credits belong to the respective artists. diff --git a/.github/templates/heading.md b/.github/templates/heading.md new file mode 100644 index 00000000..efc73439 --- /dev/null +++ b/.github/templates/heading.md @@ -0,0 +1,5 @@ +# Wallpapers + +This README is auto-generated. You may view its source code [here]({source}). +Showcases are randomly chosen. Files are shuffled then first two +from each category are chosen. diff --git a/.github/templates/sources.md b/.github/templates/sources.md new file mode 100644 index 00000000..370647b9 --- /dev/null +++ b/.github/templates/sources.md @@ -0,0 +1,29 @@ +## Sources + +Following are roughly the sources from where I scraped these images from. + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- diff --git a/.github/workflows/docgen.yml b/.github/workflows/docgen.yml new file mode 100644 index 00000000..db8a4ab3 --- /dev/null +++ b/.github/workflows/docgen.yml @@ -0,0 +1,34 @@ +name: Auto Release + +on: + push: + branches: + - main + +jobs: + build: + name: Readme generation + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Configure + run: sudo apt-get update && sudo apt-get install libimage-exiftool-perl + - name: Build + run: | + ./.github/docgen.py + - name: Commit + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + COMMIT_MSG: | + [README] Generated readmes. + run: | + git config user.email "actions@github" + git config user.name "Github Actions" + git remote set-url origin https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git + git add . + git diff --quiet && git diff --staged --quiet || (git commit -m "${COMMIT_MSG}"; git push origin HEAD:${GITHUB_REF}) diff --git a/.gitignore b/.gitignore index d3e41d0d..317da698 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ -.config/micro/backups/* -.config/micro/buffers/* -.config/micro/plug/* +.config/micro/backups/ +.config/micro/buffers/ +.config/micro/plug/ .icons/default -.config/tmux/plugins/* +.config/tmux/plugins/ +walls/ diff --git a/.xinitrc b/.xinitrc index 8396f397..752a81f7 100644 --- a/.xinitrc +++ b/.xinitrc @@ -63,8 +63,8 @@ export $(run-parts /usr/lib/systemd/user-environment-generators | sed '/:$/d; /^ source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh -keychain ~/.ssh/id_ed25519 -keychain ~/.ssh/id_rsa +keychain --dir "$XDG_RUNTIME_DIR"/keychain ~/.ssh/id_ed25519 +keychain --dir "$XDG_RUNTIME_DIR"/keychain ~/.ssh/id_rsa [ -f ~/.keychain/$HOSTNAME-sh ] && . ~/.keychain/$HOSTNAME-sh 2>/dev/null [ -f ~/.keychain/$HOSTNAME-sh-gpg ] && . ~/.keychain/$HOSTNAME-sh-gpg 2>/dev/null diff --git a/scripts/delete-wallpaper.sh b/scripts/delete-wallpaper.sh new file mode 100755 index 00000000..4ef0779b --- /dev/null +++ b/scripts/delete-wallpaper.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Read the current wallpaper path from the saved file +CURRENT_WALLPAPER=$(cat ~/.current_wallpaper) + +# Delete the current wallpaper file +rm "$CURRENT_WALLPAPER" + +# Run the wallpaper changer script to set a new wallpaper +/home/kaizen/scripts/wallpaper-changer.sh diff --git a/scripts/wallpaper-changer.sh b/scripts/wallpaper-changer.sh new file mode 100755 index 00000000..e904ddf4 --- /dev/null +++ b/scripts/wallpaper-changer.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Set the directory containing your wallpapers +WALLPAPER_DIR="/home/kaizen/walls" + +# Get a random wallpaper from the directory +RANDOM_WALLPAPER=$(ls $WALLPAPER_DIR | shuf -n 1) + +# Set the wallpaper using feh +feh --bg-fill --no-fehbg "$WALLPAPER_DIR/$RANDOM_WALLPAPER" + +# Save the current wallpaper path to a file for later deletion +echo "$WALLPAPER_DIR/$RANDOM_WALLPAPER" > ~/.current_wallpaper