summaryrefslogtreecommitdiffstats
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/firefox/larbs.js47
-rwxr-xr-x.config/fontconfig/fonts.conf25
-rw-r--r--.config/git/config15
-rw-r--r--.config/newsboat/urls10
-rw-r--r--.config/nvim/init.vim156
-rw-r--r--.config/pipewire/pipewire.conf247
-rw-r--r--.config/python/pythonrc2
-rw-r--r--.config/shell/aliasrc2
-rw-r--r--.config/shell/bm-dirs7
-rw-r--r--.config/shell/eibhear/aliasrc43
-rw-r--r--.config/shell/eibhear/bm-dirs5
-rw-r--r--.config/shell/eibhear/bm-files4
-rw-r--r--.config/shell/eibhear/profile22
-rw-r--r--.config/shell/profile2
14 files changed, 381 insertions, 206 deletions
diff --git a/.config/firefox/larbs.js b/.config/firefox/larbs.js
deleted file mode 100644
index 8328357..0000000
--- a/.config/firefox/larbs.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// These are changes made on top of the Arkenfox JS file to tweak it as
-// desired. Any of these settings can be overridden by the user.
-
-// Disable the Twitter/R*ddit/Faceberg ads in the URL bar:
-user_pref("browser.urlbar.quicksuggest.enabled", false);
-user_pref("browser.urlbar.suggest.topsites", false); // [FF78+]
-
-// Do not suggest web history in the URL bar:
-user_pref("browser.urlbar.suggest.history", false);
-
-// Do not prefil forms:
-user_pref("signon.prefillForms", false);
-
-// Do not autocomplete in the URL bar:
-user_pref("browser.urlbar.autoFill", false);
-
-// Enable the addition of search keywords:
-user_pref("keyword.enabled", true);
-
-// Allow access to http (i.e. not https) sites:
-user_pref("dom.security.https_only_mode", false);
-
-// Keep cookies until expiration or user deletion:
-user_pref("network.cookie.lifetimePolicy", 0);
-
-user_pref("dom.webnotifications.serviceworker.enabled", false);
-
-// Disable push notifications:
-user_pref("dom.push.enabled", false);
-
-// Disable the pocket antifeature:
-user_pref("extensions.pocket.enabled", false);
-
-// Don't autodelete cookies on shutdown:
-user_pref("privacy.clearOnShutdown.cookies", false);
-
-// Enable custom userChrome.js:
-user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
-
-// This could otherwise cause some issues on bank logins and other annoying sites:
-user_pref("network.http.referer.XOriginPolicy", 0);
-
-// Disable Firefox sync and its menu entries
-user_pref("identity.fxaccounts.enabled", false);
-
-// Fix the issue where right mouse button instantly clicks
-user_pref("ui.context_menus.after_mouseup", true);
diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf
index 761ae00..67b1690 100755
--- a/.config/fontconfig/fonts.conf
+++ b/.config/fontconfig/fonts.conf
@@ -1,6 +1,28 @@
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
+ <description>Enable some typographic features of FiraCode font, for all applications.</description>
+ <match target="font">
+ <test name="family" compare="contains" ignore-blanks="true">
+ <string>FiraCode Nerd Font</string>
+ </test>
+ <edit name="fontfeatures" mode="append">
+ <string>cv02</string>
+ <string>cv06</string>
+ <string>ss01</string>
+ <string>cv13</string>
+ <string>ss05</string>
+ <string>ss03</string>
+ <string>cv31</string>
+ <string>cv29</string>
+ <string>cv30</string>
+ <string>ss09</string>
+ <string>cv25</string>
+ <string>cv26</string>
+ <string>cv27</string>
+ <string>ss07</string>
+ </edit>
+ </match>
<alias>
<family>serif</family>
<prefer>
@@ -22,6 +44,8 @@
<alias>
<family>sans</family>
<prefer>
+ <family>FiraCodeNerdFontMono</family>
+ <family>FiraCodeNerdFont</family>
<family>Libertinus Sans</family>
<family>Joy Pixels</family>
<family>Noto Color Emoji</family>
@@ -31,6 +55,7 @@
<alias>
<family>monospace</family>
<prefer>
+ <family>FiraCodeNerdFontMono</family>
<family>Noto Sans Mono</family>
<family>Libertinus Mono</family>
<family>FontAwesome</family>
diff --git a/.config/git/config b/.config/git/config
new file mode 100644
index 0000000..6f7086d
--- /dev/null
+++ b/.config/git/config
@@ -0,0 +1,15 @@
+[core]
+ pager = delta
+
+[interactive]
+ diffFilter = delta --color-only
+
+[delta]
+ navigate = true # use n and N to move between diff sections
+ dark = true # or light = true, or omit for auto-detection
+ side-by-side = true
+
+[merge]
+ conflictstyle = zdiff3
+[init]
+ defaultBranch = master
diff --git a/.config/newsboat/urls b/.config/newsboat/urls
new file mode 100644
index 0000000..497e494
--- /dev/null
+++ b/.config/newsboat/urls
@@ -0,0 +1,10 @@
+https://lukesmith.xyz/rss.xml
+https://videos.lukesmith.xyz/feeds/videos.xml?videoChannelId=2 "~Luke Smith (Videos)"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~Luke Smith (YouTube)"
+https://lindypress.net/rss
+https://notrelated.xyz/rss
+https://landchad.net/rss.xml
+https://based.cooking/index.xml
+https://artixlinux.org/feed.php "tech"
+https://www.archlinux.org/feeds/news/ "tech"
+https://github.com/LukeSmithxyz/voidrice/commits/master.atom "~LARBS dotfiles"
diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
deleted file mode 100644
index a70df27..0000000
--- a/.config/nvim/init.vim
+++ /dev/null
@@ -1,156 +0,0 @@
-let mapleader =","
-
-if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"'))
- echo "Downloading junegunn/vim-plug to manage plugins..."
- silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/
- silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim
- autocmd VimEnter * PlugInstall
-endif
-
-map ,, :keepp /<++><CR>ca<
-imap ,, <esc>:keepp /<++><CR>ca<
-
-call plug#begin(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/plugged"'))
-Plug 'tpope/vim-surround'
-Plug 'preservim/nerdtree'
-Plug 'junegunn/goyo.vim'
-Plug 'jreybert/vimagit'
-Plug 'vimwiki/vimwiki'
-Plug 'vim-airline/vim-airline'
-Plug 'tpope/vim-commentary'
-Plug 'ap/vim-css-color'
-call plug#end()
-
-set title
-set bg=light
-set go=a
-set mouse=a
-set nohlsearch
-set clipboard+=unnamedplus
-set noshowmode
-set noruler
-set laststatus=0
-set noshowcmd
-colorscheme vim
-
-" Some basics:
- nnoremap c "_c
- filetype plugin on
- syntax on
- set encoding=utf-8
- set number relativenumber
-" Enable autocompletion:
- set wildmode=longest,list,full
-" Disables automatic commenting on newline:
- autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
-" Perform dot commands over visual blocks:
- vnoremap . :normal .<CR>
-" Goyo plugin makes text more readable when writing prose:
- map <leader>f :Goyo \| set bg=light \| set linebreak<CR>
-" Spell-check set to <leader>o, 'o' for 'orthography':
- map <leader>o :setlocal spell! spelllang=en_us<CR>
-" Splits open at the bottom and right, which is non-retarded, unlike vim defaults.
- set splitbelow splitright
-
-" Nerd tree
- map <leader>n :NERDTreeToggle<CR>
- autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
- let NERDTreeBookmarksFile = stdpath('data') . '/NERDTreeBookmarks'
-
-" vim-airline
- if !exists('g:airline_symbols')
- let g:airline_symbols = {}
- endif
- let g:airline_symbols.colnr = ' C:'
- let g:airline_symbols.linenr = ' L:'
- let g:airline_symbols.maxlinenr = ' '
- let g:airline#extensions#whitespace#symbol = '!'
-
-" Shortcutting split navigation, saving a keypress:
- map <C-h> <C-w>h
- map <C-j> <C-w>j
- map <C-k> <C-w>k
- map <C-l> <C-w>l
-
-" Replace ex mode with gq
- map Q gq
-
-" Check file in shellcheck:
- map <leader>s :!clear && shellcheck -x %<CR>
-
-" Open my bibliography file in split
- map <leader>b :vsp<space>$BIB<CR>
- map <leader>r :vsp<space>$REFER<CR>
-
-" Replace all is aliased to S.
- nnoremap S :%s//g<Left><Left>
-
-" Compile document, be it groff/LaTeX/markdown/etc.
- map <leader>c :w! \| !compiler "%:p"<CR>
-
-" Open corresponding .pdf/.html or preview
- map <leader>p :!opout "%:p"<CR>
-
-" Runs a script that cleans out tex build files whenever I close out of a .tex file.
- autocmd VimLeave *.tex !latexmk -c %
-
-" Ensure files are read as what I want:
- let g:vimwiki_ext2syntax = {'.Rmd': 'markdown', '.rmd': 'markdown','.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'}
- map <leader>v :VimwikiIndex<CR>
- let g:vimwiki_list = [{'path': '~/.local/share/nvim/vimwiki', 'syntax': 'markdown', 'ext': '.md'}]
- autocmd BufRead,BufNewFile /tmp/calcurse*,~/.calcurse/notes/* set filetype=markdown
- autocmd BufRead,BufNewFile *.ms,*.me,*.mom,*.man set filetype=groff
- autocmd BufRead,BufNewFile *.tex set filetype=tex
-
-" Save file as sudo on files that require root permission
- cabbrev w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!
-
-" Enable Goyo by default for mutt writing
- autocmd BufRead,BufNewFile /tmp/neomutt* :Goyo 80 | call feedkeys("jk")
- autocmd BufRead,BufNewFile /tmp/neomutt* map ZZ :Goyo!\|x!<CR>
- autocmd BufRead,BufNewFile /tmp/neomutt* map ZQ :Goyo!\|q!<CR>
-
-" Automatically deletes all trailing whitespace and newlines at end of file on save. & reset cursor position
- autocmd BufWritePre * let currPos = getpos(".")
- autocmd BufWritePre * %s/\s\+$//e
- autocmd BufWritePre * %s/\n\+\%$//e
- autocmd BufWritePre *.[ch] %s/\%$/\r/e " add trailing newline for ANSI C standard
- autocmd BufWritePre *neomutt* %s/^--$/-- /e " dash-dash-space signature delimiter in emails
- autocmd BufWritePre * cal cursor(currPos[1], currPos[2])
-
-" When shortcut files are updated, renew bash and ranger configs with new material:
- autocmd BufWritePost bm-files,bm-dirs !shortcuts
-" Run xrdb whenever Xdefaults or Xresources are updated.
- autocmd BufRead,BufNewFile Xresources,Xdefaults,xresources,xdefaults set filetype=xdefaults
- autocmd BufWritePost Xresources,Xdefaults,xresources,xdefaults !xrdb %
-" Recompile dwmblocks on config edit.
- autocmd BufWritePost ~/.local/src/dwmblocks/config.h !cd ~/.local/src/dwmblocks/; sudo make install && { killall -q dwmblocks;setsid -f dwmblocks }
-
-" Turns off highlighting on the bits of code that are changed, so the line that is changed is highlighted but the actual text that has changed stands out on the line and is readable.
-if &diff
- highlight! link DiffText MatchParen
-endif
-
-" Function for toggling the bottom statusbar:
-let s:hidden_all = 0
-function! ToggleHiddenAll()
- if s:hidden_all == 0
- let s:hidden_all = 1
- set noshowmode
- set noruler
- set laststatus=0
- set noshowcmd
- else
- let s:hidden_all = 0
- set showmode
- set ruler
- set laststatus=2
- set showcmd
- endif
-endfunction
-nnoremap <leader>h :call ToggleHiddenAll()<CR>
-" Load command shortcuts generated from bm-dirs and bm-files via shortcuts script.
-" Here leader is ";".
-" So ":vs ;cfz" will expand into ":vs /home/<user>/.config/zsh/.zshrc"
-" if typed fast without the timeout.
-silent! source ~/.config/nvim/shortcuts.vim
diff --git a/.config/pipewire/pipewire.conf b/.config/pipewire/pipewire.conf
new file mode 100644
index 0000000..b8a3672
--- /dev/null
+++ b/.config/pipewire/pipewire.conf
@@ -0,0 +1,247 @@
+# Daemon config file for PipeWire version "0.3.40" #
+#
+# Copy and edit this file in /etc/pipewire for system-wide changes
+# or in ~/.config/pipewire for local changes.
+
+context.properties = {
+ ## Configure properties in the system.
+ #library.name.system = support/libspa-support
+ #context.data-loop.library.name.system = support/libspa-support
+ #support.dbus = true
+ #link.max-buffers = 64
+ link.max-buffers = 16 # version < 3 clients can't handle more
+ #mem.warn-mlock = false
+ #mem.allow-mlock = true
+ #mem.mlock-all = false
+ #clock.power-of-two-quantum = true
+ #log.level = 2
+ #cpu.zero.denormals = true
+
+ core.daemon = true # listening for socket connections
+ core.name = pipewire-0 # core name and socket name
+
+ ## Properties for the DSP configuration.
+ #default.clock.rate = 48000
+ #default.clock.allowed-rates = [ 48000 ]
+ #default.clock.quantum = 1024
+ #default.clock.min-quantum = 32
+ #default.clock.max-quantum = 8192
+ #default.video.width = 640
+ #default.video.height = 480
+ #default.video.rate.num = 25
+ #default.video.rate.denom = 1
+ #
+ # These overrides are only applied when running in a vm.
+ vm.overrides = {
+ default.clock.min-quantum = 1024
+ }
+}
+
+context.spa-libs = {
+ #<factory-name regex> = <library-name>
+ #
+ # Used to find spa factory names. It maps an spa factory name
+ # regular expression to a library name that should contain
+ # that factory.
+ #
+ audio.convert.* = audioconvert/libspa-audioconvert
+ api.alsa.* = alsa/libspa-alsa
+ api.v4l2.* = v4l2/libspa-v4l2
+ api.libcamera.* = libcamera/libspa-libcamera
+ api.bluez5.* = bluez5/libspa-bluez5
+ api.vulkan.* = vulkan/libspa-vulkan
+ api.jack.* = jack/libspa-jack
+ support.* = support/libspa-support
+ #videotestsrc = videotestsrc/libspa-videotestsrc
+ #audiotestsrc = audiotestsrc/libspa-audiotestsrc
+}
+
+context.modules = [
+ #{ name = <module-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ ifexists ] [ nofail ] ]
+ #}
+ #
+ # Loads a module with the given parameters.
+ # If ifexists is given, the module is ignored when it is not found.
+ # If nofail is given, module initialization failures are ignored.
+ #
+
+ # Uses RTKit to boost the data thread priority.
+ { name = libpipewire-module-rtkit
+ args = {
+ #nice.level = -11
+ #rt.prio = 88
+ #rt.time.soft = 2000000
+ #rt.time.hard = 2000000
+ }
+ flags = [ ifexists nofail ]
+ }
+
+ # Set thread priorities without using RTKit.
+ #{ name = libpipewire-module-rt
+ # args = {
+ # nice.level = -11
+ # rt.prio = 88
+ # rt.time.soft = 2000000
+ # rt.time.hard = 2000000
+ # }
+ # flags = [ ifexists nofail ]
+ #}
+
+ # The native communication protocol.
+ { name = libpipewire-module-protocol-native }
+
+ # The profile module. Allows application to access profiler
+ # and performance data. It provides an interface that is used
+ # by pw-top and pw-profiler.
+ { name = libpipewire-module-profiler }
+
+ # Allows applications to create metadata objects. It creates
+ # a factory for Metadata objects.
+ { name = libpipewire-module-metadata }
+
+ # Creates a factory for making devices that run in the
+ # context of the PipeWire server.
+ { name = libpipewire-module-spa-device-factory }
+
+ # Creates a factory for making nodes that run in the
+ # context of the PipeWire server.
+ { name = libpipewire-module-spa-node-factory }
+
+ # Allows creating nodes that run in the context of the
+ # client. Is used by all clients that want to provide
+ # data to PipeWire.
+ { name = libpipewire-module-client-node }
+
+ # Allows creating devices that run in the context of the
+ # client. Is used by the session manager.
+ { name = libpipewire-module-client-device }
+
+ # The portal module monitors the PID of the portal process
+ # and tags connections with the same PID as portal
+ # connections.
+ { name = libpipewire-module-portal
+ flags = [ ifexists nofail ]
+ }
+
+ # The access module can perform access checks and block
+ # new clients.
+ { name = libpipewire-module-access
+ args = {
+ # access.allowed to list an array of paths of allowed
+ # apps.
+ #access.allowed = [
+ # /usr/bin/pipewire-media-session
+ #]
+
+ # An array of rejected paths.
+ #access.rejected = [ ]
+
+ # An array of paths with restricted access.
+ #access.restricted = [ ]
+
+ # Anything not in the above lists gets assigned the
+ # access.force permission.
+ #access.force = flatpak
+ }
+ }
+
+ # Makes a factory for wrapping nodes in an adapter with a
+ # converter and resampler.
+ { name = libpipewire-module-adapter }
+
+ # Makes a factory for creating links between ports.
+ { name = libpipewire-module-link-factory }
+
+ # Provides factories to make session manager objects.
+ { name = libpipewire-module-session-manager }
+]
+
+context.objects = [
+ #{ factory = <factory-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ nofail ] ]
+ #}
+ #
+ # Creates an object from a PipeWire factory with the given parameters.
+ # If nofail is given, errors are ignored (and no object is created).
+ #
+ #{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } }
+ #{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
+ #{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
+ #{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
+ #{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test } }
+ #{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
+
+ # A default dummy driver. This handles nodes marked with the "node.always-driver"
+ # property when no other driver is currently active. JACK clients need this.
+ { factory = spa-node-factory
+ args = {
+ factory.name = support.node.driver
+ node.name = Dummy-Driver
+ node.group = pipewire.dummy
+ priority.driver = 20000
+ }
+ }
+ { factory = spa-node-factory
+ args = {
+ factory.name = support.node.driver
+ node.name = Freewheel-Driver
+ priority.driver = 19000
+ node.group = pipewire.freewheel
+ node.freewheel = true
+ }
+ }
+ # This creates a new Source node. It will have input ports
+ # that you can link, to provide audio for this source.
+ #{ factory = adapter
+ # args = {
+ # factory.name = support.null-audio-sink
+ # node.name = "my-mic"
+ # node.description = "Microphone"
+ # media.class = "Audio/Source/Virtual"
+ # audio.position = "FL,FR"
+ # }
+ #}
+
+ # This creates a single PCM source device for the given
+ # alsa device path hw:0. You can change source to sink
+ # to make a sink in the same way.
+ #{ factory = adapter
+ # args = {
+ # factory.name = api.alsa.pcm.source
+ # node.name = "alsa-source"
+ # node.description = "PCM Source"
+ # media.class = "Audio/Source"
+ # api.alsa.path = "hw:0"
+ # api.alsa.period-size = 1024
+ # api.alsa.headroom = 0
+ # api.alsa.disable-mmap = false
+ # api.alsa.disable-batch = false
+ # audio.format = "S16LE"
+ # audio.rate = 48000
+ # audio.channels = 2
+ # audio.position = "FL,FR"
+ # }
+ #}
+]
+
+context.exec = [
+ #{ path = <program-name> [ args = "<arguments>" ] }
+ #
+ # Execute the given program with arguments.
+ #
+ # You can optionally start the session manager here,
+ # but it is better to start it as a systemd service.
+ # Run the session manager with -h for options.
+ #
+ { path = "/usr/bin/wireplumber" args = "" }
+ #
+ # You can optionally start the pulseaudio-server here as well
+ # but it is better to start it as a systemd service.
+ # It can be interesting to start another daemon here that listens
+ # on another address with the -a option (eg. -a tcp:4713).
+ #
+ { path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
+]
diff --git a/.config/python/pythonrc b/.config/python/pythonrc
deleted file mode 100644
index b32e6b6..0000000
--- a/.config/python/pythonrc
+++ /dev/null
@@ -1,2 +0,0 @@
-import readline
-readline.write_history_file = lambda *args: None
diff --git a/.config/shell/aliasrc b/.config/shell/aliasrc
index c9ddbc4..fe7c70c 100644
--- a/.config/shell/aliasrc
+++ b/.config/shell/aliasrc
@@ -59,3 +59,5 @@ alias \
lf="lfub" \
magit="nvim -c MagitOnly" \
ref='shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutenvrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc'
+
+source "$XDG_CONFIG_HOME"/shell/eibhear/aliasrc
diff --git a/.config/shell/bm-dirs b/.config/shell/bm-dirs
index 9d212ec..3bb1a67 100644
--- a/.config/shell/bm-dirs
+++ b/.config/shell/bm-dirs
@@ -4,7 +4,6 @@ cf ${XDG_CONFIG_HOME:-$HOME/.config}
D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
d ${XDG_DOCUMENTS_DIR:-$HOME/Documents}
dt ${XDG_DATA_HOME:-$HOME/.local/share}
-rr $HOME/.local/src
h $HOME
m ${XDG_MUSIC_DIR:-$HOME/Music}
mn /mnt
@@ -12,3 +11,9 @@ pp ${XDG_PICTURES_DIR:-$HOME/Pictures}
sc $HOME/.local/bin
src $HOME/.local/src
vv ${XDG_VIDEOS_DIR:-$HOME/Videos}
+
+# Maks's
+work $HOME/work
+agh $HOME/agh
+# Work
+headlesslims $work/prym-soft/headlesslims
diff --git a/.config/shell/eibhear/aliasrc b/.config/shell/eibhear/aliasrc
new file mode 100644
index 0000000..7cdcb86
--- /dev/null
+++ b/.config/shell/eibhear/aliasrc
@@ -0,0 +1,43 @@
+#!/bin/sh
+alias eibhear="git --git-dir=$XDG_DATA_HOME/eibhear --work-tree=$HOME"
+
+alias la="ls -lAhNF --group-directories-first"
+
+# eval "$(pyenv init - zsh)"
+source /usr/share/zsh/site-functions/_pyenv
+export PATH="$XDG_DATA_HOME/pyenv/shims:${PATH}"
+export PYENV_SHELL=zsh
+( command pyenv rehash 2>/dev/null & )
+pyenv() {
+ local command=${1:-}
+ [ "$#" -gt 0 ] && shift
+ case "$command" in
+ rehash|shell)
+ eval "$(pyenv "sh-$command" "$@")"
+ ;;
+ *)
+ command pyenv "$command" "$@"
+ ;;
+ esac
+}
+
+
+# eval "$(nodenv init - zsh)"
+export PATH="$XDG_DATA_HOME/nodenv/shims:${PATH}"
+export NODENV_SHELL=zsh
+source '/usr/lib/nodenv/completions/nodenv.zsh'
+( command nodenv rehash 2>/dev/null & )
+nodenv() {
+ local command
+ command="${1:-}"
+ if [ "$#" -gt 0 ]; then
+ shift
+ fi
+
+ case "$command" in
+ rehash|shell)
+ eval "$(nodenv "sh-$command" "$@")";;
+ *)
+ command nodenv "$command" "$@";;
+ esac
+}
diff --git a/.config/shell/eibhear/bm-dirs b/.config/shell/eibhear/bm-dirs
new file mode 100644
index 0000000..1fd0312
--- /dev/null
+++ b/.config/shell/eibhear/bm-dirs
@@ -0,0 +1,5 @@
+work $HOME/work
+agh $HOME/agh
+
+# Work
+headlesslims $work/prym-soft/headlesslims
diff --git a/.config/shell/eibhear/bm-files b/.config/shell/eibhear/bm-files
new file mode 100644
index 0000000..b2b0a0c
--- /dev/null
+++ b/.config/shell/eibhear/bm-files
@@ -0,0 +1,4 @@
+bf ${XDG_CONFIG_HOME:-$HOME/.config}/shell/eibhear/bm-file
+bd ${XDG_CONFIG_HOME:-$HOME/.config}/shell/eibhear/bm-dirs
+cfx ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources
+cfb ~/.local/src/dwmblocks/config.h
diff --git a/.config/shell/eibhear/profile b/.config/shell/eibhear/profile
new file mode 100644
index 0000000..e8fb8ef
--- /dev/null
+++ b/.config/shell/eibhear/profile
@@ -0,0 +1,22 @@
+#!/bin/sh
+export BROWSER="brave"
+export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority"
+export GNUPGHOME="$XDG_DATA_HOME/gnupg"
+
+export NODE_REPL_HISTORY="$XDG_DATA_HOME/node_repl_history"
+
+export SUDO_ASKPASS="$HOME/.local/bin/maks/dmenudoas"
+
+export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
+
+export PYTHON_HISTORY=$XDG_STATE_HOME/python_history
+export PYTHONPYCACHEPREFIX=$XDG_CACHE_HOME/python
+export PYTHONUSERBASE=$XDG_DATA_HOME/python
+
+export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
+
+export PYENV_ROOT="$XDG_DATA_HOME"/pyenv
+export PATH="$PYENV_ROOT/bin:$PATH"
+
+export NODENV_ROOT="$XDG_DATA_HOME/nodenv"
+export PATH="$NODENV_ROOT/bin:$PATH"
diff --git a/.config/shell/profile b/.config/shell/profile
index 872e312..595cb29 100644
--- a/.config/shell/profile
+++ b/.config/shell/profile
@@ -66,6 +66,8 @@ export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
[ ! -f "$XDG_CONFIG_HOME/shell/shortcutrc" ] && setsid -f shortcuts >/dev/null 2>&1
+source "$XDG_CONFIG_HOME"/shell/eibhear/profile
+
# Start graphical server on user's current tty if not already running.
[ "$(tty)" = "/dev/tty1" ] && ! pidof -s Xorg >/dev/null 2>&1 && exec startx "$XINITRC"