summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/X11/Xresources2
-rw-r--r--.config/X11/xprofile7
-rw-r--r--.config/git/config2
-rw-r--r--.config/i3/config32
-rw-r--r--.config/i3blocks/bar27
-rw-r--r--.config/i3blocks/config5
-rw-r--r--.config/keepassxc/keepassxc.ini6
-rw-r--r--.config/lf/lfrc4
-rw-r--r--.config/nvim/coc.vim15
-rw-r--r--.config/nvim/init.vim103
-rw-r--r--.config/nvim/plugins.conf.d/coc-onload.vim (renamed from .config/nvim/user/coc-onload.vim)0
-rw-r--r--.config/nvim/plugins.conf.d/coc-settings.json (renamed from .config/nvim/user/coc-settings.json)0
-rw-r--r--.config/nvim/plugins.conf.d/fzf.vim (renamed from .config/nvim/user/fzf.vim)6
-rw-r--r--.config/nvim/plugins.conf.d/onedark.vim (renamed from .config/nvim/user/onedark.vim)0
-rw-r--r--.config/nvim/plugins.conf.d/out.vim (renamed from .config/nvim/user/out.vim)0
-rw-r--r--.config/nvim/plugins.conf.d/vimspector.vim (renamed from .config/nvim/user/vimspector.vim)0
-rw-r--r--.config/nvim/plugins.conf.d/zeal.vim (renamed from .config/nvim/user/zeal.vim)0
-rw-r--r--.config/nvim/templates/_default.sh2
-rw-r--r--.config/nvim/templates/sh/err.sh2
-rw-r--r--.config/nvim/templates/sh/getopts.sh6
-rw-r--r--.config/nvim/templates/sh/help.sh10
-rw-r--r--.config/shell/aliasrc1
-rw-r--r--.config/shell/bm-dirs41
-rw-r--r--.config/shell/bm-files34
-rw-r--r--.config/shell/profile15
-rw-r--r--.config/starship.toml12
-rw-r--r--.config/tmux/tmux.conf12
-rw-r--r--.config/yt-dlp/channel.conf5
-rw-r--r--.config/yt-dlp/config2
-rw-r--r--.config/yt-dlp/playlist.conf3
-rw-r--r--.config/yt-dlp/videos.conf1
-rw-r--r--.config/zsh/.zshrc53
-rw-r--r--.config/zsh/command-tools.zsh2
-rwxr-xr-x.local/bin/background-cleanup27
-rwxr-xr-x.local/bin/desktop/dmenu-file-history6
-rwxr-xr-x.local/bin/desktop/dmenu-sound6
-rwxr-xr-x.local/bin/desktop/dmenu-unicode2
-rwxr-xr-x.local/bin/development/envrun55
-rwxr-xr-x.local/bin/development/gi8
-rwxr-xr-x.local/bin/development/gitignore6
-rwxr-xr-x.local/bin/fcode7
-rwxr-xr-x.local/bin/open13
-rwxr-xr-x.local/bin/preview8
-rwxr-xr-x.local/bin/shortcuts20
-rwxr-xr-x.local/bin/shorts/nvc4
-rwxr-xr-x.local/bin/statusbar/i3battery8
-rwxr-xr-x.local/bin/statusbar/i3weather48
-rwxr-xr-x.local/bin/statusbar/sb-clock61
-rwxr-xr-x.local/bin/text-preview23
-rwxr-xr-x.local/bin/web/yth19
-rwxr-xr-x.local/bin/web/ytv13
51 files changed, 476 insertions, 248 deletions
diff --git a/.config/X11/Xresources b/.config/X11/Xresources
index e03daba..9ce1a52 100644
--- a/.config/X11/Xresources
+++ b/.config/X11/Xresources
@@ -6,7 +6,7 @@ st.alpha: 0.95
st.alphaOffset: 0.1
!! Set a default font and font size as below:
-st.font: MesloLGS Nerd\ Font:size=17
+*.font: monospace:size=16
! st.termname: st-256color
! st.borderpx: 2
diff --git a/.config/X11/xprofile b/.config/X11/xprofile
index dec8036..ebd736b 100644
--- a/.config/X11/xprofile
+++ b/.config/X11/xprofile
@@ -2,13 +2,12 @@
# gui -e
+setdp
xrdb "${XDG_CONFIG_HOME:-$HOME/.config}/X11/Xresources" & xrdbpid=$!
numlockx on &
-setdp
-setbg
logdir="${XDG_STATE_HOME:-$HOME/.local/state}/startup"
-autostart="copyq dunst pipewire syncthing remapd gammastep prime-offload picom mailsyncd"
+autostart="copyq dunst pipewire syncthing remapd setdp gammastep prime-offload mailsyncd background-cleanup"
sleep 1
mkdir -pv "$logdir"
@@ -16,5 +15,5 @@ for program in $autostart; do
pidof -sx "$program" || "$program" >"$logdir/$program.stdout.log" 2>"$logdir/$program.stderr.log" &
done
-{ sleep 5; wireplumber; } &
+{ sleep 5 && wireplumber; } &
[ -n "$xrdbpid" ] && wait "$xrdbpid"
diff --git a/.config/git/config b/.config/git/config
index e63dac2..5ad6ffe 100644
--- a/.config/git/config
+++ b/.config/git/config
@@ -3,3 +3,5 @@
name = Vikas Kushwaha
[init]
defaultBranch = master
+[http]
+ postbuffer = 10g
diff --git a/.config/i3/config b/.config/i3/config
index 2c12947..12cbff0 100644
--- a/.config/i3/config
+++ b/.config/i3/config
@@ -18,6 +18,7 @@
# exec --no-startup-id pasystray
exec st -c dropdown_tmuxdd -e tmux new -A -s ddterm
+exec sh -c "sleep 1 && i3-msg scratchpad show"
################################
### Commonly Used Variables: ###
@@ -27,11 +28,6 @@ exec st -c dropdown_tmuxdd -e tmux new -A -s ddterm
# - Make sure that you give the absolute path to the binary / program / executable
# - You may specify any additional arguments required by the binary / executable
-### Wallpaper: ###
-# - You need to specify homescreen wallpaper using azote
-set $lockScreenWallpaper '/usr/share/wallpapers/garuda-wallpapers/Garuda-Desert.png'
-set $homeScreenWallpaper '/usr/share/wallpapers/garuda-wallpapers/background.jpg'
-
### Applications: ###
set $preferredTerminalEmulator $TERMINAL
set $preferredBrowser librewolf
@@ -50,6 +46,7 @@ set $right l
set $super Mod4
set $alt Mod1
+set $passmenu '$PASSWORD_STORE_DIR=$HOME/Phone/Backup/pass passmenu'
@@ -59,11 +56,13 @@ set $alt Mod1
bindsym $super+F2 exec --no-startup-id dmenu-unicode
bindsym $super+Shift+F2 exec --no-startup-id dmenu-unicode get-code
-bindsym $super+F3 exec --no-startup-id st -c "dropdown_sender" -e fsend
-bindsym $super+F4 exec --no-startup-id passmenu
-bindsym $super+Shift+F4 exec --no-startup-id passmenu --type
+bindsym $super+F3 exec --no-startup-id dmenu-file-history
+bindsym $super+F4 exec --no-startup-id $passmenu
+bindsym $super+Shift+F4 exec --no-startup-id $passmenu --type
bindsym $super+F5 exec --no-startup-id dmenu-zeal
+bindsym $super+F6 exec --no-startup-id st -c "dropdown_sender" -e fsend
bindsym $super+F7 exec --no-startup-id sh -c 'find ~/.librewolf -mindepth 1 -maxdepth 1 -type d -name '????????.*' -printf "%f\n" | cut -d. -f2- | dmenu -p "LibreWolf Profile" | xargs -I{} setsid -f librewolf -P "{}"'
+bindsym $super+F8 exec --no-startup-id sh -c 'yth dmenu | xclip -in -sel clip'
bindsym $super+b exec --no-startup-id librewolf-open
bindsym $super+c exec --no-startup-id edit-graphical-buffer
bindsym $super+x exec --no-startup-id toggle-xeyes
@@ -100,6 +99,7 @@ bindsym Ctrl+Print exec --no-startup-id $preferredScreenCaptureTool
# - $TERMINAL & xfce4-terminal can also be started using their individual keybindings
bindsym $super+Return exec --no-startup-id $preferredTerminalEmulator
+bindsym $super+Shift+Return exec --no-startup-id sh -c 'cd "$(tail -1 $CD_HISTFILE)" && $TERMINAL'
bindsym $super+t exec --no-startup-id xfce4-terminal
bindsym $super+Shift+t exec --no-startup-id notify-send Temprature "$(sensors --no-adapter coretemp-isa-0000 | tail +2 | sed "s|(.*)||")"
@@ -169,13 +169,13 @@ bindsym $super+Ctrl+Left exec $brightnessDown
bindsym $super+Ctrl+Up exec --no-startup-id $raiseVolume
bindsym $super+Ctrl+Down exec --no-startup-id $lowerVolume
-bindsym $super+Ctrl+Insert exec --no-startup-id $muteOutput
-bindsym $super+Ctrl+Del exec --no-startup-id $muteInput
+bindsym $super+Ctrl+Home exec --no-startup-id volctl toggle
+bindsym $super+Ctrl+End exec --no-startup-id $muteInput
bindsym $super+Ctrl+Next exec $nextAudio
bindsym $super+Ctrl+Prior exec $prevAudio
-bindsym $super+Ctrl+Home exec $playAudio
-bindsym $super+Ctrl+End exec $stopAudio
+# bindsym $super+Ctrl+Home exec $playAudio
+# bindsym $super+Ctrl+End exec $stopAudio
# bindsym XF86TouchpadToggle exec ~/bin/toggletouchpad.sh
@@ -285,15 +285,10 @@ bindsym $super+Shift+Right move right
##################
# navigate workspaces
-bindsym $super+bracketleft workspace $ws1
bindsym $super+n workspace next
bindsym $super+p workspace prev
-bindsym $super+bracketright workspace $ws10
-
-bindsym $super+Home workspace $ws1
bindsym $super+Prior workspace prev
bindsym $super+Next workspace next
-bindsym $super+End workspace $ws10
bindsym $super+Tab workspace back_and_forth
bindsym $super+Shift+Tab move container to workspace back_and_forth; workspace back_and_forth
@@ -468,6 +463,7 @@ for_window [window_type='dialog'] move position center
for_window [title="Android Emulator - *"] floating enable border none sticky enable
for_window [title="Emulator"] floating enable border none sticky enable
for_window [class="mpv"] floating enable
+for_window [class="flameshot"] floating enable
# for_window [class="Zeal"] floating enable move position below
# #---Dropdown Windows---# #
@@ -644,6 +640,6 @@ mode "$mode_system" {
# TODO: create your own i3exit script as ?syst-power
# Lock screen
-bindsym $super+Escape exec i3lock -t -i $lockScreenWallpaper
+bindsym $super+Escape exec i3exit lock
# exec_always xrandr --output eDP-1-1-1 --auto --primary
diff --git a/.config/i3blocks/bar2 b/.config/i3blocks/bar2
index 3bcfe48..575a78d 100644
--- a/.config/i3blocks/bar2
+++ b/.config/i3blocks/bar2
@@ -29,7 +29,7 @@ separator_block_width=60
[weather]
separator=true
separator_block_width=50
-command=i3weather 2
+command=i3weather info
interval=1800
color=#A4C2F4
@@ -57,13 +57,14 @@ color=#A4C2F4
# command=echo " $(i3memory)"
# interval=1
-[disk_nas]
+[disk_root]
label=  
-instance=/nas
+instance=/
interval=30
command=disk_usage
[disk-io]
+separator=true
separator_block_width=60
command=disk-io
#command=$SCRIPT_DIR/disk-io -w 3 -M -P 0
diff --git a/.config/i3blocks/config b/.config/i3blocks/config
index 96f2448..8b7838c 100644
--- a/.config/i3blocks/config
+++ b/.config/i3blocks/config
@@ -29,7 +29,7 @@ separator_block_width=35
[weather]
separator=true
separator_block_width=50
-command=i3weather 1
+command=i3weather cache
interval=1800
color=#A4C2F4
@@ -59,8 +59,7 @@ interval=1
[datetime]
separator=true
-# command=case "$BLOCK_BUTTON" in 1) TERM=256colors clearx -n 'cal -y --color=always | less' ;; 2) $TERMINAL -e nvim ~/.config/i3blocks/config ;; esac; date +'🕒 %H:%M:%S 🗓️ %a %d.%m.%Y '
-command=case "$BLOCK_BUTTON" in 1) $TERMINAL -e sh -c 'cal -y --color=always | less' ;; 2) $TERMINAL -e nvim ~/.config/i3blocks/config ;; esac; date +' %H:%M:%S 󰃭 %a %d.%m.%Y ✝ '
+command=sb-clock
color=#BBDDDD
interval=1
diff --git a/.config/keepassxc/keepassxc.ini b/.config/keepassxc/keepassxc.ini
index be49131..c84bbd3 100644
--- a/.config/keepassxc/keepassxc.ini
+++ b/.config/keepassxc/keepassxc.ini
@@ -17,9 +17,11 @@ CheckForUpdates=false
CompactMode=false
HidePreviewPanel=true
HideToolbar=false
-MinimizeOnClose=false
+MinimizeOnClose=true
MinimizeOnStartup=true
-TrayIconAppearance=monochrome-light
+MinimizeToTray=true
+ShowTrayIcon=true
+TrayIconAppearance=colorful
[KeeShare]
Active="<?xml version=\"1.0\"?><KeeShare><Active/></KeeShare>\n"
diff --git a/.config/lf/lfrc b/.config/lf/lfrc
index d2937e6..2d10228 100644
--- a/.config/lf/lfrc
+++ b/.config/lf/lfrc
@@ -112,9 +112,9 @@ map <backtab> :toggle; up
map Z :toggle; up
map <c-j> select_eval "fzf --reverse --track --header-first --header='Jump to location' --query \"^${f##*/}$\" --bind 'load:change-query(!/$ )'"
map <backspace> ${{ lf -remote "send $id select \"$(cat "${OPEN_HISTFILE:-${XDG_STATE_HOME:-$HOME/.local/state}/open_history}" |
- fzf --reverse --tac --header-first --header='File History')\"" }}
+ fzf --reverse --tac --no-sort --header-first --header='File History')\"" }}
map <c-k> ${{ lf -remote "send $id cd \"$(cat ${CD_HISTFILE:-${XDG_STATE_HOME:-$HOME/.local/state}/cd_history} |
- fzf --reverse --tac --header-first --header='Path History')\"" }}
+ fzf --reverse --tac --no-sort --header-first --header='Path History')\"" }}
map <c-c> select_eval "fzf --reverse --track --header-first --header='Jump to location' --query \"^${f##*/}/$\" --bind 'load:change-query(/$ )'"
map d
diff --git a/.config/nvim/coc.vim b/.config/nvim/coc.vim
index 1175735..2ba6c06 100644
--- a/.config/nvim/coc.vim
+++ b/.config/nvim/coc.vim
@@ -7,21 +7,21 @@ packadd! vim-jsx-pretty
" packadd! copilot.vim
" --> Fzf
-" source ~/.config/nvim/user/fzf.vim
+" source ~/.config/nvim/plugins.conf.d/fzf.vim
" set rtp+=/usr/share/vim/vimfiles
" --> Zeal
-source ~/.config/nvim/user/zeal.vim
+source ~/.config/nvim/plugins.conf.d/zeal.vim
" --> Onedark theme
-source ~/.config/nvim/user/onedark.vim
+source ~/.config/nvim/plugins.conf.d/onedark.vim
" --> Vimspector
-source ~/.config/nvim/user/vimspector.vim
+source ~/.config/nvim/plugins.conf.d/vimspector.vim
" --> COC
-autocmd! User coc.nvim source $HOME/.config/nvim/user/coc-onload.vim
-let g:coc_config_home = '$HOME/.config/nvim/user'
+autocmd! User coc.nvim source $HOME/.config/nvim/plugins.conf.d/coc-onload.vim
+let g:coc_config_home = '$HOME/.config/nvim/plugins.conf.d'
let g:coc_data_home = '$HOME/.local/share/nvim/site/coc'
let g:coc_global_extensions = [
\ 'coc-json',
@@ -45,8 +45,5 @@ inoremap <silent><expr><c-l> coc#refresh()
nnoremap <leader><C-r> :source ~/.config/nvim/coc.vim<CR>
-" autocmd VimLeave * call SaveSess()
-" autocmd VimEnter * nested call RestoreSess()
-
AirlineTheme
CocList extensions
diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
index 67eb5b8..fbda0fa 100644
--- a/.config/nvim/init.vim
+++ b/.config/nvim/init.vim
@@ -33,13 +33,12 @@ if filereadable(config_dir . "autoload/plug.vim")
endif
packadd! fzf.vim
-source ~/.config/nvim/user/fzf.vim
+source ~/.config/nvim/plugins.conf.d/fzf.vim
set rtp+=/usr/share/vim/vimfiles
let g:Verdin#autocomplete = 1
let g:livepreview_previewer = 'zathura'
let g:tex_flavor = 'latex'
-let g:session_filename = '.session.vim'
set title showmatch nowrap mouse=a scrolloff=5
set tabstop=2 shiftwidth=0
@@ -88,46 +87,74 @@ nnoremap <Esc>o :LfWorkingDirectory<CR>
nnoremap <leader>l :LfCurrentFileNewTab<CR>
nnoremap <leader>o :LfWorkingDirectoryExistingOrNewTab<CR>
+
" --> Sessions
-fu! SaveSess()
- execute 'mksession! ' . getcwd() . '/' . g:session_filename
+let g:session_filename = '.session.vim'
+
+function! SaveSess()
+ execute 'mksession! ' . getcwd() . '/' . g:session_filename
endfunction
-fu! RestoreSess()
-if filereadable(getcwd() . '/' . g:session_filename)
- execute 'so ' . getcwd() . '/' . g:session_filename
- if bufexists(1)
- for l in range(1, bufnr('$'))
- if bufwinnr(l) == -1
- exec 'sbuffer ' . l
- endif
- endfor
- endif
-endif
+function! RestoreSess()
+ execute 'so ' . getcwd() . '/' . g:session_filename
+ if bufexists(1)
+ for l in range(1, bufnr('$'))
+ if bufwinnr(l) == -1
+ exec 'sbuffer ' . l
+ endif
+ endfor
+ endif
endfunction
-command! -nargs=0 Mksess :call SaveSess()
-command! -nargs=0 Resess :call RestoreSess()
+if argc() == 0 && filereadable(getcwd() . '/' . g:session_filename)
+ autocmd VimLeave * call SaveSess()
+ autocmd VimEnter * nested call RestoreSess()
+endif
+
+command! -nargs=0 Mksession :call SaveSess()
+
" --> Template Management
-function SourceTemplate()
- let b:template = glob("${XDG_CONFIG_HOME:-$HOME/.config}/nvim/templates/_default." . expand('%:e'))
- if !empty(b:template)
- execute('0r' . b:template)
+let g:templates_dir = "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/templates"
+
+function ReadDefaultTemplate()
+ let b:default_template = glob(g:templates_dir . "/_default." . expand('%:e'))
+ if !empty(b:default_template)
+ execute('0r ' . b:default_template)
endif
endfunction
-autocmd BufNewFile * call SourceTemplate()
+autocmd BufNewFile * call ReadDefaultTemplate()
+
+function ReadTemplate(template)
+ execute('r ' . a:template)
+endfunction
+
+function FzfTemplates()
+ call fzf#run(fzf#wrap({
+ \ 'source': 'find ' . g:templates_dir . '/' . &filetype . ' -mindepth 1',
+ \ 'sink': function('ReadTemplate'),
+ \ 'options': ['--delimiter', '/templates/' . &filetype . '/', '--with-nth', '2..'],
+ \ }))
+endfunction
+
+command -nargs=0 Templates call FzfTemplates()
+nnoremap <leader>t :Templates<CR>
+
+
+" --> Other commands
autocmd TermOpen * startinsert
-command! -nargs=* TermSplit split | terminal <args>
-command! -nargs=* TermVSplit vsplit | terminal <args>
+command! -nargs=* TermSplit split | terminal <args>
+command! -nargs=* TermVSplit vsplit | terminal <args>
+
+command -nargs=* T tabnew <args>
+command Gi execute "tabnew" system('EDITOR=echo gi')
-command! -nargs=* T tabnew <args>
-" --> Bindings and configs
+" --> Bindings
if !exists('g:lasttab')
let g:lasttab = 1
@@ -194,24 +221,21 @@ autocmd FileType go inoremap ;ae err<Space>:=<Space><++><CR>if<Space>err<Space>!
nnoremap <leader>fl :w<CR>:!dev lint "%"<CR>
nnoremap <leader>fm :w<CR>:%!dev format "%"<CR>
nnoremap <leader>fM :w<CR>:%!dev minify "%"<CR>
-nnoremap <leader>fc :w<CR>:!dev compile "%"<CR>
-nnoremap <leader>fe :w<CR>:!dev run "%"<CR>
-nnoremap <leader>ft :w<CR>:!dev test "%"<CR>
-nnoremap <leader>fb :w<CR>:!dev build "%"<CR>
+nnoremap <leader>fc :w<CR>:se nornu<CR>:!dev compile "%"<CR>:se rnu<CR>
+nnoremap <leader>fe :w<CR>:se nornu<CR>:!dev run "%"<CR>:se rnu<CR>
+nnoremap <leader>fa :w<CR>:se nornu<CR>:!dev test "%"<CR>:se rnu<CR>
+nnoremap <leader>fb :w<CR>:se nornu<CR>:!dev build "%"<CR>:se rnu<CR>
nnoremap <leader>fr :w<CR>:!dev clean "%"<CR>
nnoremap <leader>Fl :w<CR>:TermSplit dev lint "%"<CR>
nnoremap <leader>Fm :w<CR>:TermSplit dev format "%"<CR>
-nnoremap <leader>Fc :w<CR>:TermSplit dev compile "%"<CR>
-nnoremap <leader>Fe :w<CR>:TermSplit dev run "%"<CR>
-nnoremap <leader>Ft :w<CR>:TermSplit dev test "%"<CR>
+nnoremap <leader>Fc :w<CR>:se nornu<CR>:TermSplit dev compile "%"<CR>
+nnoremap <leader>Fe :w<CR>:se nornu<CR>:TermSplit dev run "%"<CR>
+nnoremap <leader>Fb :w<CR>:se nornu<CR>:TermSplit dev build "%"<CR>
+nnoremap <leader>Fa :w<CR>:se nornu<CR>:TermSplit dev test "%"<CR>
nnoremap <leader>Fr :w<CR>:TermSplit dev clean "%"<CR>
-nnoremap <leader>b :w<CR>:se nornu<CR>:!dev build "%"<CR>:se rnu<CR>
-nnoremap <leader>B :w<CR>:se nornu<CR>:TermSplit dev build "%"<CR>
-nnoremap <leader>t :w<CR>:se nornu<CR>:!dev test "%"<CR>:se rnu<CR>
-nnoremap <leader>T :w<CR>:se nornu<CR>:TermSplit dev test "%"<CR>
-
+nnoremap <leader>a :w<CR>:se nornu<CR>:!dev test "%"<CR>:se rnu<CR>
nnoremap <leader>w :set wrap!<CR>
nnoremap <leader>fo :!opout "%:p"<CR>
nnoremap <leader><C-r> :source ~/.config/nvim/init.vim<CR>
@@ -220,6 +244,9 @@ nnoremap <leader>s :%s//gc<Left><Left><Left>
nnoremap <leader>gc :TermSplit git add --all && git commit<CR>
nnoremap <leader>gp :TermSplit gitpush<CR>
+
+" --> Update shortcuts
+
let shortcuts = config_dir . "shortcuts.vim"
if filereadable(shortcuts)
execute "source " . shortcuts
diff --git a/.config/nvim/user/coc-onload.vim b/.config/nvim/plugins.conf.d/coc-onload.vim
index b3db607..b3db607 100644
--- a/.config/nvim/user/coc-onload.vim
+++ b/.config/nvim/plugins.conf.d/coc-onload.vim
diff --git a/.config/nvim/user/coc-settings.json b/.config/nvim/plugins.conf.d/coc-settings.json
index 437572d..437572d 100644
--- a/.config/nvim/user/coc-settings.json
+++ b/.config/nvim/plugins.conf.d/coc-settings.json
diff --git a/.config/nvim/user/fzf.vim b/.config/nvim/plugins.conf.d/fzf.vim
index 371b680..49fec8d 100644
--- a/.config/nvim/user/fzf.vim
+++ b/.config/nvim/plugins.conf.d/fzf.vim
@@ -1,4 +1,7 @@
" --> Fzf
+
+let g:fzf_history_dir = system('echo "${XDG_STATE_HOME:-$HOME/.local/state}/fzf/fzf_vim_history')
+
let g:fzf_layout = { 'window': { 'width': 1, 'height': 1 } }
command! -bang -nargs=? -complete=dir Files
\ call fzf#vim#files(<q-args>, {'options': ['--info=inline', '--preview', 'preview {}']}, <bang>0)
@@ -14,6 +17,7 @@ imap <c-x><c-f> <plug>(fzf-complete-path)
imap <c-x><c-l> <plug>(fzf-complete-line)
" Fzf keybindings
+nnoremap <leader>fh :History<CR>
nnoremap <leader>ff :Files<CR>
-nnoremap <leader>f. :Files %:p:h<CR>
+nnoremap <leader>f. :Files %:p:h<CR>
diff --git a/.config/nvim/user/onedark.vim b/.config/nvim/plugins.conf.d/onedark.vim
index 6f526bd..6f526bd 100644
--- a/.config/nvim/user/onedark.vim
+++ b/.config/nvim/plugins.conf.d/onedark.vim
diff --git a/.config/nvim/user/out.vim b/.config/nvim/plugins.conf.d/out.vim
index 6e4e1f1..6e4e1f1 100644
--- a/.config/nvim/user/out.vim
+++ b/.config/nvim/plugins.conf.d/out.vim
diff --git a/.config/nvim/user/vimspector.vim b/.config/nvim/plugins.conf.d/vimspector.vim
index 521e252..521e252 100644
--- a/.config/nvim/user/vimspector.vim
+++ b/.config/nvim/plugins.conf.d/vimspector.vim
diff --git a/.config/nvim/user/zeal.vim b/.config/nvim/plugins.conf.d/zeal.vim
index 1b2734f..1b2734f 100644
--- a/.config/nvim/user/zeal.vim
+++ b/.config/nvim/plugins.conf.d/zeal.vim
diff --git a/.config/nvim/templates/_default.sh b/.config/nvim/templates/_default.sh
new file mode 100644
index 0000000..13f4793
--- /dev/null
+++ b/.config/nvim/templates/_default.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+
diff --git a/.config/nvim/templates/sh/err.sh b/.config/nvim/templates/sh/err.sh
new file mode 100644
index 0000000..a4414cd
--- /dev/null
+++ b/.config/nvim/templates/sh/err.sh
@@ -0,0 +1,2 @@
+err() { printf '%s: %s\n' "$0" "$@" >&2; exit 1; }
+
diff --git a/.config/nvim/templates/sh/getopts.sh b/.config/nvim/templates/sh/getopts.sh
new file mode 100644
index 0000000..9013ff9
--- /dev/null
+++ b/.config/nvim/templates/sh/getopts.sh
@@ -0,0 +1,6 @@
+while getopts 'h' o; do case "$o" in
+ h) help >&2; exit ;;
+ *) err "invalid option -- '$OPTARG'" ;;
+esac done
+shift $((OPTIND - 1))
+
diff --git a/.config/nvim/templates/sh/help.sh b/.config/nvim/templates/sh/help.sh
new file mode 100644
index 0000000..953de68
--- /dev/null
+++ b/.config/nvim/templates/sh/help.sh
@@ -0,0 +1,10 @@
+help() { echo "<++> -
+
+USAGE:
+ <++> [OPTION]...
+
+OPTIONS:
+ -h show this help message"; }
+
+[ "$#" -lt 1 ] && help >&2 && exit 1
+
diff --git a/.config/shell/aliasrc b/.config/shell/aliasrc
index 06b59da..888705d 100644
--- a/.config/shell/aliasrc
+++ b/.config/shell/aliasrc
@@ -8,7 +8,6 @@ alias md='mkdir'
alias s='sudo'
alias l='ls -A'
alias ll='ls -al'
-alias lr='ls -aR'
# open
alias o="${OPENER:-xdg-open}"
alias e="${EDITOR:-vi}"
diff --git a/.config/shell/bm-dirs b/.config/shell/bm-dirs
index 25eb1ea..794d362 100644
--- a/.config/shell/bm-dirs
+++ b/.config/shell/bm-dirs
@@ -1,38 +1,31 @@
# You can add comments to these files with #
-cac ${XDG_CACHE_HOME:-$HOME/.cache}
-cg ${XDG_CONFIG_HOME:-$HOME/.config}
-lb ${XDG_SCRIPTS_DIR:-$HOME/.local/bin}
-lsh ${XDG_DATA_DIR:-$HOME/.local/share}
-lst ${XDG_STATE_DIR:-$HOME/.local/state}
-lsr ${XDG_SOURCE_DIR:-$HOME/.local/src}
-dn ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
-dx ${XDG_DOCUMENTS_DIR:-$HOME/Documents}
-ms ${XDG_MUSIC_DIR:-$HOME/Music}
-px ${XDG_PICTURES_DIR:-$HOME/Pictures}
-vd ${XDG_VIDEOS_DIR:-$HOME/Videos}
+ch ${XDG_CACHE_HOME:-$HOME/.cache} # CacHe
+cf ${XDG_CONFIG_HOME:-$HOME/.config} # ConFig
+lb ${XDG_SCRIPTS_DIR:-$HOME/.local/bin} # Local Bin
+dt ${XDG_DATA_DIR:-$HOME/.local/share} # DaTa
+hs ${XDG_STATE_DIR:-$HOME/.local/state} # HiStory
+sr ${XDG_SOURCE_DIR:-$HOME/.local/src} # SRc
+ds ${XDG_DOWNLOAD_DIR:-$HOME/Desktop} # DeSktop
+dn ${XDG_DOWNLOAD_DIR:-$HOME/Downloads} # DowNloads
+dx ${XDG_DOCUMENTS_DIR:-$HOME/Documents} # DoX
+ms ${XDG_MUSIC_DIR:-$HOME/Music} # MuSic
+px ${XDG_PICTURES_DIR:-$HOME/Pictures} # PiX
+vd ${XDG_VIDEOS_DIR:-$HOME/Videos} # ViDeos
-nv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim
lsa ${XDG_DATA_DIR:-$HOME/.local/share}/applications
vnv ${XDG_DATA_DIR:-$HOME/.local/share}/virtualenvs
ltr ${XDG_DATA_DIR:-$HOME/.local/share}/Trash
-dl ${XDG_DOCUMENTS_DIR:-$HOME/Documents}/latex
-dr ${XDG_DOCUMENTS_DIR:-$HOME/Documents}/latex/resume
-nt ${XDG_DOCUMENTS_DIR:-$HOME/Documents}/Notes
bn ~/bin
sd ~/sdcard
rp ~/repos
an ~/Android
-ap ~/Applications
dv ~/Dev
-vr ~/Dev/sites/vikas.rocks
-vc ~/Dev/sites/vikas.rocks/content
-vl ~/Dev/sites/vikas.rocks/layouts
-vp ~/Dev/sites/vikas.rocks/public
-td ~/Dev/test
-gd ~/GDrive/vartak/CS
-ph ~/Phone
-sv ~/Phone/.stversions
+dp ~/Dev/sites/personal
+td ~/Dev/test # Test Dir
+gd ~/GDrive # Google Drive
+ph ~/Phone # PHone
+stv ~/Phone/.stversions # SyncThing Versions
pw ~/Phone/Android/media/com.whatsapp.w4b/WhatsApp\ Business/Media/WhatsApp\ Business\ Documents
mn /mnt
diff --git a/.config/shell/bm-files b/.config/shell/bm-files
index 2585175..6324347 100644
--- a/.config/shell/bm-files
+++ b/.config/shell/bm-files
@@ -4,25 +4,27 @@
bf ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files
bd ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs
-pf ~/.profile
-zp ~/.zprofile
-xp ~/.xprofile
-gi ~/.gitignore
-zr ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/.zshrc
-ar ${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc
-lf ${XDG_CONFIG_HOME:-$HOME/.config}/lf/lfrc
-sx ${XDG_CONFIG_HOME:-$HOME/.config}/sxiv/exec/key-handler
-in ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim
-ac ${XDG_CONFIG_HOME:-$HOME/.config}/alacritty/alacritty.toml
-xr ${XDG_CONFIG_HOME:-$HOME/.config}/X11/Xresources
-xi ${XDG_CONFIG_HOME:-$HOME/.config}/X11/xinitrc
-ml ${XDG_CONFIG_HOME:-$HOME/.config}/mimeapps.list
-fi ${XDG_CONFIG_HOME:-$HOME/.config}/fd/ignore
-sc ~/.ssh/config
+cfpf ~/.profile
+cfzp ~/.zprofile
+cfxp ~/.xprofile
+cfgi ~/.gitignore
+cfzc ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/.zshrc
+cfar ${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc
+cflc ${XDG_CONFIG_HOME:-$HOME/.config}/lf/lfrc
+cfsx ${XDG_CONFIG_HOME:-$HOME/.config}/sxiv/exec/key-handler
+cfin ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim
+cfac ${XDG_CONFIG_HOME:-$HOME/.config}/alacritty/alacritty.toml
+cfza ${XDG_CONFIG_HOME:-$HOME/.config}/zathura/zathurarc
+cfxr ${XDG_CONFIG_HOME:-$HOME/.config}/X11/Xresources
+cfxi ${XDG_CONFIG_HOME:-$HOME/.config}/X11/xinitrc
+cfml ${XDG_CONFIG_HOME:-$HOME/.config}/mimeapps.list
+cffi ${XDG_CONFIG_HOME:-$HOME/.config}/fd/ignore
+cfsc ~/.ssh/config
zh ${XDG_STATE_HOME:-$HOME/.local/state}/zsh/history
qn ${XDG_DOCUMENTS_HOME:-$HOME/Documents}/Notes/QuickNote.md
bm ${XDG_DOCUMENTS_HOME:-$HOME/Documents}/Notes/bookmarks.txt
-akn ${XDG_DOCUMENTS_HOME:-$HOME/Documents}/Notes/ak47.txt
li ${XDG_DOCUMENTS_HOME:-$HOME/Documents}/latex/lorem-ipsum.txt
vh ~/Dev/sites/vikas.rocks/layouts/_default/home.html
+wtr /tmp/wttr.txt
+
diff --git a/.config/shell/profile b/.config/shell/profile
index af1b4a9..d512687 100644
--- a/.config/shell/profile
+++ b/.config/shell/profile
@@ -14,15 +14,15 @@ export TERMINAL="st"
export PREVIEWER="preview"
export MOUNTPATH="/run/media/$USER"
-export PASSWORD_STORE_DIR="$HOME/Phone/Backup/pass"
+export CUSTOM_PASSWORD_STORE="$HOME/Phone/Backup/pass"
export SSH_AUTH_SOCK="$HOME/.ssh/ssh_auth_sock"
export NCFTPDIR="$XDG_DATA_HOME/ncftp"
export R_ENVIRON_USER="$XDG_DATA_HOME/R/.Renviron"
export GOPATH="$XDG_DATA_HOME/go"
export ANDROID_USER_HOME="$XDG_DATA_HOME/android"
export ANDROID_HOME="$HOME/Android/Sdk"
-export __GL_SHADER_DISK_CACHE_PATH="$HOME/.cache/nv"
export PYENV_ROOT="$XDG_DATA_HOME/pyenv"
+export __GL_SHADER_DISK_CACHE_PATH="$HOME/.cache/nv"
export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
@@ -50,6 +50,7 @@ export CD_HISTFILE="$XDG_STATE_HOME/cd_history"
export LESS='-fiR --mouse --use-color -j 10 -Dd+r -Du+b'
export LESSOPEN='|lessopen.sh %s'
export GROFF_NO_SGR=1
+export SUDO_ASKPASS='/usr/lib/ssh/ssh-askpass'
export GTK_IM_MODULE='fcitx'
export QT_IM_MODULE='fcitx'
export SDL_IM_MODULE='fcitx'
@@ -62,14 +63,14 @@ export CHROME_EXECUTABLE='chromium'
export FZF_DEFAULT_COMMAND="find -H . ! -wholename '*.git*' ! \( -type d -printf '%p/\n' , ! -type d -print \)"
export FZF_DEFAULT_OPTS="
--history='$FZF_HISTFILE'
- --preview='\$PREVIEWER {}' --preview-window=hidden
+ --preview='\$PREVIEWER {}'
+ --preview-window='<30(up,border-bottom),right,border-left,hidden'
--bind 'ctrl-s:toggle-sort'
--bind 'ctrl-y:execute-silent(printf \"%s\\\n\" {+} | xsel --clipboard)'
--bind 'ctrl-v:toggle-preview,ctrl-space:toggle-preview'
--bind 'alt-space:toggle-preview,alt-w:toggle-preview-wrap'
- --bind 'alt-enter:print-query'
--bind 'ctrl-alt-c:change-preview-window(up|left:50%|down|right:50%)'
- --bind 'ctrl-alt-k:change-preview-window(50%|60%|70%|80%|90%)'
+ --bind 'ctrl-alt-k:change-preview-window(60%|70%|80%|90%)'
--bind 'ctrl-alt-j:change-preview-window(50%|40%|30%|20%)'
--bind 'ctrl-alt-a:select-all,ctrl-alt-d:deselect-all'
--bind 'alt-n:half-page-down,alt-p:half-page-up'
@@ -79,8 +80,6 @@ export FZF_DEFAULT_OPTS="
--bind 'alt-j:preview-half-page-down,alt-k:preview-half-page-up'
--bind 'alt-l:preview-page-down,alt-h:preview-page-up'
--bind 'alt-H:preview-top,alt-L:preview-bottom'
- --bind 'alt-g:preview-top,alt-G:preview-bottom'
- --bind 'alt-s:execute(dmenu-send {})'
--bind 'alt-0:change-preview(echo {})'
--bind 'alt-1:change-preview(text-preview {})'
--bind 'alt-2:change-preview(\$PREVIEWER {})'
@@ -92,7 +91,7 @@ export FZF_DEFAULT_OPTS="
--bind 'alt-e:execute(append-to-history {q} \"$FZF_HISTFILE\"; eval \"\${EDITOR:-vi} {}\")'
--bind 'alt-O:execute(append-to-history {q} \"$FZF_HISTFILE\"; mimeopen --ask {})'
--bind 'alt-o:execute(append-to-history {q} \"$FZF_HISTFILE\"; eval \"\${FILES:-lf} {}\")'
- --bind 'alt-D:become(append-to-history {q} \"$FZF_HISTFILE\"; dirname {} )'
+ --bind 'alt-s:execute(append-to-history {q} \"$FZF_HISTFILE\"; fsend {} )'
"
## Custom themes for GTypist
diff --git a/.config/starship.toml b/.config/starship.toml
index 06f8b23..127847f 100644
--- a/.config/starship.toml
+++ b/.config/starship.toml
@@ -35,6 +35,9 @@ min_time = 50
format = "took [$duration]($style)"
disabled = false
+[line_break]
+disabled = true
+
## SECOND LINE/ROW: Prompt
# Somethere at the beginning
@@ -47,24 +50,21 @@ disabled = true
[[battery.display]] # "bold red" style when capacity is between 0% and 10%
threshold = 15
style = "bold red"
-disabled = true
[[battery.display]] # "bold yellow" style when capacity is between 10% and 30%
threshold = 50
style = "bold yellow"
-disabled = true
[[battery.display]] # "bold green" style when capacity is between 10% and 30%
threshold = 80
style = "bold green"
-disabled = true
# Prompt: optional param 1
[time]
-format = " 🕙 $time($style)\n"
+format = " [󱑋 $time]($style)\n"
time_format = "%T"
-style = "bright-white"
-disabled = true
+style = "#aaaa33"
+disabled = false
# # Prompt: param 2 └─
# [character]
diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf
index cc53fde..cc14782 100644
--- a/.config/tmux/tmux.conf
+++ b/.config/tmux/tmux.conf
@@ -1,9 +1,9 @@
-if-shell '[ "$COLORTERM" != "${COLORTERM#*truecolor}" ]' {
- set -g default-terminal "tmux-256color"
- set -ga terminal-overrides ',*256col*:Tc'
- source ~/.config/tmux/tmux-gruvbox-dark.conf
- # run 'bash ~/.config/tmux/tmux-onedark-theme.tmux'
-}
+# if-shell '[ "$COLORTERM" != "${COLORTERM#*truecolor}" ]' {
+# set -g default-terminal "tmux-256color"
+# set -ga terminal-overrides ',*256col*:Tc'
+# source ~/.config/tmux/tmux-gruvbox-dark.conf
+# # run 'bash ~/.config/tmux/tmux-onedark-theme.tmux'
+# }
if-shell '[ -z "$SSH_CONNECTION" ] && [ -n "$TERMUX_VERSION" ]' {
set -g status-right ""
diff --git a/.config/yt-dlp/channel.conf b/.config/yt-dlp/channel.conf
index e67e86c..925cb02 100644
--- a/.config/yt-dlp/channel.conf
+++ b/.config/yt-dlp/channel.conf
@@ -1,12 +1,13 @@
---config videos.conf
+--config config
--output '%(channel)s/%(title)s.%(ext)s'
--output 'thumbnail:%(channel)s/.thumbnail/%(title)s.%(ext)s'
--output 'description:%(channel)s/.description/%(title)s.txt'
---print-to-file %(title)s.%(ext)s %(channel)s/%(channel)s.channel.pl.txt
+--print-to-file %(title)s %(channel)s/%(channel)s.channel.pl.txt
# --playlist-items ::-1
+--write-description
--write-thumbnail
--embed-thumbnail
--write-playlist-metafiles
diff --git a/.config/yt-dlp/config b/.config/yt-dlp/config
index 20f6aad..9e817f8 100644
--- a/.config/yt-dlp/config
+++ b/.config/yt-dlp/config
@@ -1,5 +1,5 @@
---output %(title)s.%(ext)s
--restrict-filenames
+--output %(title)s.%(ext)s
--format bestvideo*[height<=1080][fps<=30]+bestaudio
--prefer-free-format
diff --git a/.config/yt-dlp/playlist.conf b/.config/yt-dlp/playlist.conf
index 74af4dd..43ed334 100644
--- a/.config/yt-dlp/playlist.conf
+++ b/.config/yt-dlp/playlist.conf
@@ -1,4 +1,4 @@
---config videos.conf
+--config config
--output '%(playlist)s/%(title)s.%(ext)s'
--output 'thumbnail:%(playlist)s/.thumbnail/%(title)s.%(ext)s'
@@ -7,6 +7,7 @@
--print-to-file %(title)s %(playlist)s/%(playlist)s.pl.txt
--playlist-items ::-1
+--write-description
--write-thumbnail
--embed-thumbnail
--write-playlist-metafiles
diff --git a/.config/yt-dlp/videos.conf b/.config/yt-dlp/videos.conf
index 42d9c40..10d2564 100644
--- a/.config/yt-dlp/videos.conf
+++ b/.config/yt-dlp/videos.conf
@@ -1,3 +1,4 @@
--config config
--format bestvideo*[height<=1080][fps<=60]+bestaudio
--write-description
+--print-to-file "%(original_url)s %(channel)s %(title)s %(filepath)s" $HOME/.local/state/yt_history.tsv
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
index a1a32d8..d3ba554 100644
--- a/.config/zsh/.zshrc
+++ b/.config/zsh/.zshrc
@@ -6,8 +6,12 @@ bindkey -e
alias find="2> >(grep -v 'Permission denied' >&2) find"
source ~/.profile
+
[ -n "$SDOTDIR" ] || SDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/shell"
[ -n "$ZDOTDIR" ] || ZDOTDIR="${XDG_CONFIG_HOME:-HOME/.config}/zsh"
+[ -n "$CD_HISTFILE" ] || CD_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/cd_history"
+[ -n "$OPEN_HISTFILE" ] || OPEN_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/open_history"
+
source "${PREFIX:-/usr}/share/fzf/completion.zsh"
source "$ZDOTDIR/command-tools.zsh"
source "$ZDOTDIR/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh"
@@ -67,7 +71,9 @@ zstyle ':completion:*' cache-path ~/.cache/zsh
# automatically load bash completion functions
autoload -U +X bashcompinit && bashcompinit
-source "$ZDOTDIR/completion/arduino-cli.zsh"
+
+unset WORDCHARS
+stty -ixon
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(end-of-line vi-end-of-line vi-add-eol)
@@ -77,14 +83,7 @@ HISTFILE="${XDG_STATE_HOME:=$HOME/.local/state}/zsh/history"
HISTSIZE=100000
SAVEHIST=50000
-unset WORDCHARS
-stty -ixon
-
-[ -z "$CD_HISTFILE" ] &&
- export CD_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/cd_history"
-
-[ -z "$OPEN_HISTFILE" ] &&
- export OPEN_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/open_history"
+# source "$ZDOTDIR/completion/arduino-cli.zsh"
# Angular
# _ng_yargs_completions()
@@ -99,12 +98,20 @@ stty -ixon
# compdef _ng_yargs_completions ng
+[ -n "$DISPLAY" ] && command -V xdotool >/dev/null && {
+ TERMINAL_WINDOW_ID="$(xdotool getactivewindow)"
+ function set_win_title() {
+ echo -ne "\033]0; $USER@$HOST:${PWD/$HOME/~} \007"
+ }
+ precmd_functions+=(set_win_title)
+}
+
_command_fail_hook() {
[ $? = 1 ] || return
if [ -n "$TMUX" ]; then
tmux send-keys C-p
- elif [ -n "$XDOTOOL_WINDOW_ID" ]; then
- xdotool key --window "$XDOTOOL_WINDOW_ID" ctrl+p
+ elif [ -n "$TERMINAL_WINDOW_ID" ]; then
+ xdotool key --window "$TERMINAL_WINDOW_ID" ctrl+p
fi
}
add-zsh-hook precmd _command_fail_hook
@@ -150,21 +157,18 @@ if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
fi
-[ -n "$DISPLAY" ] && command -V xdotool >/dev/null &&
- XDOTOOL_WINDOW_ID="$(xdotool getactivewindow)"
-
[ -f "$BUFFER_CACHE" ] && {
{
if [ -n "$TMUX" ]; then
tmux send-keys -l "$(cat "$BUFFER_CACHE")"
elif [ -z "$TERMUX_VERSION" ]; then
- xdotool type --window "$XDOTOOL_WINDOW_ID" "$(cat "$BUFFER_CACHE")"
+ xdotool type --window "$TERMINAL_WINDOW_ID" "$(cat "$BUFFER_CACHE")"
fi
rm -f "$BUFFER_CACHE"
} & disown
}
-BUFFER_CACHE="${ZCACHEDIR:=$HOME/.cache/zsh}/previous-command-buffer-$$.tmp"
+export BUFFER_CACHE="${ZCACHEDIR:=$HOME/.cache/zsh}/previous-command-buffer-$$.tmp"
_exec-zsh() {
echo "$BUFFER" > "$BUFFER_CACHE"
BUFFER=' exec zsh'
@@ -266,27 +270,22 @@ case "$TERM" in *256*)
command -v fd >/dev/null && {
FZF_DEFAULT_COMMAND="fd --hidden --color=always"
FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --ansi"
- ff() { fzf -m "$@"; }
alias f='fd --hidden --no-ignore-vcs'
alias sr='fd --no-ignore-vcs --color=always . ~/.config ~/.local/bin ~/bin | fzf --ansi'
}
command -v starship >/dev/null && {
eval "$(starship init zsh)"
- function set_win_title() {
- echo -ne "\033]0; $USER@$HOST:${PWD/$HOME/~} \007"
- }
- precmd_functions+=(set_win_title)
}
;; esac
+alias s='sudo '
alias p='pacman'
alias sp='sudo pacman'
alias sv='sudo sv'
+alias pm='PASSWORD_STORE_DIR=$CUSTOM_PASSWORD_STORE pass'
alias mmv='noglob zmv -W'
-alias s='sudo '
-alias fh='fzf --tac < "$OPEN_HISTFILE"'
alias ide='nvim -u "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/coc.vim"'
alias mirror='sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist-arch'
alias mirrord='sudo reflector --latest 50 --number 20 --sort delay --save /etc/pacman.d/mirrorlist-arch'
@@ -295,14 +294,18 @@ alias fixpacman='sudo rm /var/lib/pacman/db.lck'
alias gtypist="gtypist $GTYPIST_OPTS"
alias typ='launch-gtypist -l "$(sed "/^gtypist lesson - \(.*\)$/!d; s//\1/" ~/Documents/Notes/QuickNote.md)"'
alias typa='launch-gtypist -e 3 -l "$(sed "/^gtypist lesson - \(.*\)$/!d; s//\1/" ~/Documents/Notes/ak47.txt)"'
+alias uc='cd ~ && gitpush' # update config
+alias gpu='gitpush'
+alias wtr='less -r /tmp/wttr.in'
# Launch new (W)indow in background
-W() {
+new_window() {
windowid="$(xdotool getactivewindow)"
- setsid -f $TERMINAL >/dev/null 2>&1
+ setsid -f $TERMINAL -e sh -c "${*:-$SHELL}" >/dev/null 2>&1
while [ "$(xdotool getactivewindow)" = "$windowid" ]; do sleep 0.1; done
xdotool windowfocus "$windowid"
}
+alias W='new_window '
# Find command package
F() {
diff --git a/.config/zsh/command-tools.zsh b/.config/zsh/command-tools.zsh
index b63b0ac..fe17ed1 100644
--- a/.config/zsh/command-tools.zsh
+++ b/.config/zsh/command-tools.zsh
@@ -1,5 +1,5 @@
whereis_alias() {
- location="$(zsh -xic exit 2>&1 | sed -E "/alias[ '$]*$1=/!d; /\/plugins\//d" |
+ location="$(zsh -xic exit 2>&1 | sed -E "/sh.*alias[ '$]*$1=/!d; /\/plugins\//d" |
fzf --exit-0 --select-1 --ansi --header-first --header='Select alias location' |
sed -n "s|^\+\(/.*:[0-9]*\)>.*$|\1|p")"
diff --git a/.local/bin/background-cleanup b/.local/bin/background-cleanup
new file mode 100755
index 0000000..c61caec
--- /dev/null
+++ b/.local/bin/background-cleanup
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+[ -z "$CD_HISTFILE" ] &&
+ export CD_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/cd_history"
+
+[ -z "$OPEN_HISTFILE" ] &&
+ export OPEN_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/open_history"
+
+on_ac_power() { [ "$(cat /sys/class/power_supply/ACAD/online)" = 1 ]; }
+
+sleep 10
+on_ac_power || echo "System not plugged to AC Adapter, waiting..."
+
+until on_ac_power; do
+ sleep 10m
+done
+
+echo "[cleanup] Cleaning $CD_HISTFILE"
+cleanup-history-file "$CD_HISTFILE"
+
+echo "[cleanup] Cleaning $OPEN_HISTFILE"
+cleanup-history-file "$OPEN_HISTFILE"
+
+echo "[cleanup] Cleaning orphaned packages..."
+pacman -Qtdq | xargs -r sudo pacman -Rns --noconfirm
+
+echo "[cleanup] Finished Cleaning."
diff --git a/.local/bin/desktop/dmenu-file-history b/.local/bin/desktop/dmenu-file-history
new file mode 100755
index 0000000..0997c76
--- /dev/null
+++ b/.local/bin/desktop/dmenu-file-history
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+[ -n "$OPEN_HISTFILE" ] ||
+ export OPEN_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/open_history"
+
+tac "$OPEN_HISTFILE" | dmenu -i -l 30 | xargs -I{} "${OPENER:-xdg-open}" "{}"
diff --git a/.local/bin/desktop/dmenu-sound b/.local/bin/desktop/dmenu-sound
new file mode 100755
index 0000000..967e9fa
--- /dev/null
+++ b/.local/bin/desktop/dmenu-sound
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+node="$(wpctl status | grep vol: | cut -c5- | dmenu -i -l 30 |
+ sed -E "s/^[ *]*([0-9]{2}).*$/\1/")"
+
+[ -n "$node" ] && wpctl set-default "$node"
diff --git a/.local/bin/desktop/dmenu-unicode b/.local/bin/desktop/dmenu-unicode
index 16e1cfc..5a3a0f5 100755
--- a/.local/bin/desktop/dmenu-unicode
+++ b/.local/bin/desktop/dmenu-unicode
@@ -1,6 +1,6 @@
#!/bin/sh
-chosen=$(cat ~/.local/share/chars/* | dmenu -i -l 25 -fn :size=20)
+chosen=$(cat ~/.local/share/chars/* | dmenu -i -l 25)
[ -z "$chosen" ] && exit
diff --git a/.local/bin/development/envrun b/.local/bin/development/envrun
new file mode 100755
index 0000000..aad0822
--- /dev/null
+++ b/.local/bin/development/envrun
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+help() { echo "envrun - run programs in an isolated home directory
+
+USAGE:
+ envrun [OPTION]... COMMAND
+
+OPTIONS:
+ -d ENVHOME use the ENVHOME environment directory
+ -h show this help message"; }
+
+while getopts 'd:h' o; do case "$o" in
+ d) export ENVHOME="$OPTARG" ;;
+ *) help >&2; exit ;;
+esac done
+shift $((OPTIND - 1))
+
+export HOME="${ENVHOME:-"$PWD"}"
+export XDG_CACHE_HOME="$HOME/.cache"
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_STATE_HOME="$HOME/.local/state"
+
+ensure_dirs() {
+ for dir in "$@"; do
+ [ -d "$dir" ] || { missing=1; break; }
+ done
+
+ [ "$missing" = 1 ] || return
+ printf "\nFollowing directories will be created.\n\n"
+ for dir in "$@"; do
+ [ -d "$dir" ] || echo "$dir/"
+ done
+
+ printf "\ncontinue? [y/N] "
+ read -r ans
+ case "$ans" in
+ y|Y) echo; mkdir -pv "$@"; echo ;;
+ *) exit ;;
+ esac
+}
+
+ensure_dirs \
+ "$XDG_CACHE_HOME" \
+ "$XDG_CONFIG_HOME" \
+ "$XDG_DATA_HOME" \
+ "$XDG_STATE_HOME"
+
+[ "$#" -lt 1 ] && {
+ echo "Please provide a command to run."
+ exit
+}
+
+"$@"
+
diff --git a/.local/bin/development/gi b/.local/bin/development/gi
new file mode 100755
index 0000000..f7884a9
--- /dev/null
+++ b/.local/bin/development/gi
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# gi (git-ignore) - open current repo's gitingore file in $EDITOR
+
+[ -f .gitignore ] && { ${EDITOR:-nvim -p} .gitignore; exit; }
+
+TOPLEVEL="$(git rev-parse --show-toplevel)" || exit
+find "$TOPLEVEL" -name ".gitignore" | xargs -r ${EDITOR:-nvim -p}
diff --git a/.local/bin/development/gitignore b/.local/bin/development/gitignore
deleted file mode 100755
index d78ff99..0000000
--- a/.local/bin/development/gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# gi - edit the Git Ignore file of current repo
-
-TOPLEVEL="$(git rev-parse --show-toplevel)" || exit
-find "$TOPLEVEL" -name ".gitignore" | xargs -r nvim -p
diff --git a/.local/bin/fcode b/.local/bin/fcode
index 073bec4..2c8041d 100755
--- a/.local/bin/fcode
+++ b/.local/bin/fcode
@@ -4,9 +4,8 @@
# place your charecter files in plain text in ~/.local/share/chars/*
if [ "$OPENFLAG" = 0 ]; then
- notify-send fzf-unicode "$*"
chosen="$(printf '%s\n' "$@" | cut -d\ -f1 | tr -d '\n')"
- echo "$chosen" | xclip -selection clipboard
+ printf "%s" "$chosen" | xclip -selection clipboard
notify-send "'$chosen' copied to clipboard."
exit
fi
@@ -16,10 +15,10 @@ fi
mkdir -pv "$FZF_HISTDIR"
export FZF_HIST="$FZF_HISTDIR/unicode_history"
-cut -d ';' -f1 ~/.local/share/chars/* |
+cat ~/.local/share/chars/* |
fzf -m --history="$FZF_HIST" \
--header="Copy Emojis to Clipboard" --header-first \
--preview 'printf "%s\n" {+} | cut -d\ -f1 | tr -d "\n"' \
--preview-window=nohidden,up,1 \
--bind 'ctrl-/:change-preview-window(down|up)' \
- --bind 'enter:execute(echo {q} >> $FZF_HIST; OPENFLAG=0 fzf-unicode {+})'
+ --bind "enter:execute(echo {q} >> \"$FZF_HIST\"; OPENFLAG=0 \"$0\" {+})"
diff --git a/.local/bin/open b/.local/bin/open
index 69dcb9c..dc90c9b 100755
--- a/.local/bin/open
+++ b/.local/bin/open
@@ -1,5 +1,7 @@
#!/bin/sh
+[ -t 1 ] || exec "$TERMINAL" -e open "$@"
+
[ -z "$1" ] && echo "USAGE: open <FILE>" >&2 && exit 1
for file in "$@"; do
@@ -8,15 +10,15 @@ for file in "$@"; do
*.pdf|*.djvu|*.epub) setsid -f zathura "$file" 2>/dev/null ;;
*.png|*.jpg|*.jpeg|*.webp) setsid -f nsxiv "$file" ;;
*.gif|*.mkv|*.mp3|*.mp4|*.webm|*.ogg) ${PLAYER:-mpv --no-config --sub-auto=fuzzy} "$file" ;;
- *.html) ${BROWSER:-w3m} "$file" ;;
+ *.html) ${BROWSER:-w3m --enable-mouse} "$file" ;;
*.pl.txt) fpl "$file" ;;
*.txt|*.description) ${PAGER:-less} "$file" ;;
- *.md) glow --pager --width $(("$(tput cols)" - 5)) "$file" ;;
+ *.md) glow --pager --width $(($(tput cols) - 5)) "$file" ;;
*.css|*.json|*.ipynb|*.vim|*.lua|*.iso|*.zip) LESSOPEN="|preview %s" less -r "$file" ;;
*.srt) fzf-subtitles -o "$file" ;;
*.dig) setsid -f digital "$file" ;;
*.doc|*.docx|*.ppt|*.pptx) setsid -f libreoffice "$file" ;;
- *.sc|*.xls|*.xlsx) sc-im "$file" ;;
+ *.sc|*.xls|*.xlsx) /usr/bin/sc-im "$file" ;;
*.sim1) simulide "$file" ;;
*.xz) ${EDITOR:-nvim} "$file" ;;
@@ -24,7 +26,7 @@ for file in "$@"; do
filetype="$(file --dereference --brief --mime-type "$file")"
case "$filetype" in
inode/directory) ${FILES:-lf} "$file" ; exit ;;
- text/html*) ${BROWSER:-w3m} "$file" ;;
+ text/html*) ${BROWSER:-w3m --enable-mouse} "$file" ;;
*pdf|*djvu|*epub+zip|*oxps|*fictionbook) setsid -f zathura "$file" 2>/dev/null ;;
text/*|*json|*zip|*zstd|*javascript) "${EDITOR:-nvim}" "$file" ;;
application/vnd.openxmlformats-officedocument.*) setsid -f libreoffice "$file" ;;
@@ -42,8 +44,9 @@ for file in "$@"; do
esac
- [ -z "$OPEN_HISTFILE" ] &&
+ [ -n "$OPEN_HISTFILE" ] ||
export OPEN_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/open_history"
+
file="$(realpath "$file")"
sed -i "\|^$file$|d" "$OPEN_HISTFILE"
echo "$file" >> "$OPEN_HISTFILE"
diff --git a/.local/bin/preview b/.local/bin/preview
index 68eec32..5201fcd 100755
--- a/.local/bin/preview
+++ b/.local/bin/preview
@@ -6,8 +6,7 @@ if [ -d "$1" ]; then
else
ls -lhAF --group-directories-first --color=always -- "$1"
fi
- readme="$(find "$1" -maxdepth 1 -name "README.*" | head -1)"
- [ -z "$readme" ] || preview "$readme"
+ find "$1" -maxdepth 1 -iname "README*" | xargs -r preview
exit
fi
@@ -18,8 +17,8 @@ case "$1" in
'') echo "USAGE: preview <FILE>" >&2; exit 1 ;;
*.html) w3m -dump "$1" ;;
*.md) glow "$1" ;;
- # *.vim) highlight --syntax=vim --replace-tabs=2 -- "$1" ;;
- *.js*|*.ts*|*.vim|*.lua) highlight --replace-tabs=2 -- "$1" ;;
+ *.vim) highlight --syntax=vim --replace-tabs=2 -- "$1" ;;
+ *.js*|*.ts*|*.lua) highlight --replace-tabs=2 -- "$1" ;;
*.txt|*.description|*.srt) cat -- "$1" ;;
*.png|*.jpg|*.jpeg|*.webp|*.mp3|*.ogg|*.mp4|*.mkv|*.webm) mediainfo -- "$1" ;;
*.info.json) jq -C . "$1" ;;
@@ -39,7 +38,6 @@ case "$1" in
*odt|*.ods|*.odp|*.sxw) odt2txt "$1" ;;
*.doc) catdoc "$1" ;;
*.docx) docx2txt "$1" - ;;
- # *.csv) sed s/,/\\n/g "$1" ;;
*)
filetype=$(file --dereference --brief --mime-type "$1")
diff --git a/.local/bin/shortcuts b/.local/bin/shortcuts
index 91790e6..368f1ba 100755
--- a/.local/bin/shortcuts
+++ b/.local/bin/shortcuts
@@ -17,13 +17,11 @@ eval "echo \"$(cat "$bmdirs")\"" |
awk -F'\t' "
!/^\s*#/ && !/^\s*$/ {
gsub(\"\\\s*#.*$\", \"\");
- printf(\"C%s='cd %s && ls -A' \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\"
- printf(\"D%s='cd %s && ls -A' \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\"
- printf(\"D%s=\42%s\42 \\\\\n\", \$1, \$2) >> \"$shell_env_shortcuts\"
- printf(\"hash -d D%s=%s\n\", \$1, \$2) >> \"$zsh_named_dirs\"
+ printf(\"%s='cd %s && ls -A' \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\"
+ printf(\"%s=\42%s\42 \\\\\n\", \$1, \$2) >> \"$shell_env_shortcuts\"
+ printf(\"hash -d %s=%s\n\", \$1, \$2) >> \"$zsh_named_dirs\"
printf(\"map C%s :cd %s\n\", \$1, \$2) >> \"$lf_shortcuts\"
- printf(\"cmap ;D%s %s\n\", \$1, \$2) >> \"$vim_shortcuts\"
- printf(\"imap ;D%s %s\n\", \$1, \$2) >> \"$vim_shortcuts\"
+ printf(\"cmap ;%s %s\n\", \$1, \$2) >> \"$vim_shortcuts\"
}
"
@@ -31,12 +29,10 @@ eval "echo \"$(cat "$bmfiles")\"" |
awk -F'\t' "
!/^\s*#/ && !/^\s*$/ {
gsub(\"\\\s*#.*$\", \"\");
- printf(\"E%s='\$EDITOR %s' \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\"
- printf(\"F%s='\$EDITOR %s' \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\"
- printf(\"F%s=\42%s\42 \\\\\n\", \$1, \$2) >> \"$shell_env_shortcuts\"
- printf(\"hash -d F%s=%s\n\", \$1, \$2) >> \"$zsh_named_dirs\"
+ printf(\"%s='\$EDITOR %s' \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\"
+ printf(\"%s=\42%s\42 \\\\\n\", \$1, \$2) >> \"$shell_env_shortcuts\"
+ printf(\"hash -d %s=%s\n\", \$1, \$2) >> \"$zsh_named_dirs\"
printf(\"map E%s $\$EDITOR %s\n\", \$1, \$2) >> \"$lf_shortcuts\"
- printf(\"cmap ;F%s %s\n\", \$1, \$2) >> \"$vim_shortcuts\"
- printf(\"imap ;F%s %s\n\", \$1, \$2) >> \"$vim_shortcuts\"
+ printf(\"cmap ;%s %s\n\", \$1, \$2) >> \"$vim_shortcuts\"
}
"
diff --git a/.local/bin/shorts/nvc b/.local/bin/shorts/nvc
new file mode 100755
index 0000000..0df642d
--- /dev/null
+++ b/.local/bin/shorts/nvc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# assumes NvChad is configured in ~/Dev/.config/nvim
+envrun -d "$HOME/Dev" nvim "$@"
diff --git a/.local/bin/statusbar/i3battery b/.local/bin/statusbar/i3battery
index 5b2fb15..17a4dfd 100755
--- a/.local/bin/statusbar/i3battery
+++ b/.local/bin/statusbar/i3battery
@@ -47,7 +47,7 @@ for battery in /sys/class/power_supply/BAT?*; do
*) exit 1 ;;
esac
# Will make a warn variable if discharging and low
- [ "$status" = "Discharging" ] && [ "$capacity" -le 25 ] && warn="❗"
+ [ "$status" = "Discharging" ] && [ "$capacity" -lt 30 ] && warn="❗"
# Prints the info
printf "%s%s %d%%" "$warn" "$icon" "$capacity"; unset warn
done && printf "\\n"
@@ -55,11 +55,11 @@ done && printf "\\n"
echo
if [ $capacity -ge 80 ]; then
echo "$BLOCK_COLOR_LEVEL1"
-elif [ $capacity -ge 40 ]; then
+elif [ $capacity -ge 60 ]; then
echo "$BLOCK_COLOR_LEVEL2"
-elif [ $capacity -ge 20 ]; then
+elif [ $capacity -ge 40 ]; then
echo "$BLOCK_COLOR_LEVEL3"
-elif [ $capacity -ge 10 ]; then
+elif [ $capacity -ge 20 ]; then
echo "$BLOCK_COLOR_LEVEL4"
else
echo "$BLOCK_COLOR_LEVEL5"
diff --git a/.local/bin/statusbar/i3weather b/.local/bin/statusbar/i3weather
index c894be6..dec12dd 100755
--- a/.local/bin/statusbar/i3weather
+++ b/.local/bin/statusbar/i3weather
@@ -1,6 +1,6 @@
#!/bin/sh
-# weather module for i3blocks
-# output is set to 'WEATHER UNAVAILABLE' in case wttr.in is unreachable
+# i3blocks weather module using wttr.in
+# output is set to -- in case wttr.in is unreachable
WTTR_CACHE_DIR="/tmp"
WTTR_CACHE="$WTTR_CACHE_DIR/wttr.in"
@@ -8,30 +8,46 @@ WTTR_TXT="$WTTR_CACHE_DIR/wttr.txt"
WTTR_LOCATION="Vasai"
WTTR_URL="https://wttr.in/$WTTR_LOCATION"
+notify() {
+ [ "$isUpdating" = 1 ] &&
+ notify-send --replace-id=217534 "$@"
+}
+
+err() {
+ printf "i3weather: %s\n" "$@" >&2
+ notify "🛑 ERROR (i3weather)" "$*"
+ echo "⛅ -- "
+ exit 1
+}
+
case "$BLOCK_BUTTON" in
'') true ;;
1)
[ -f "$WTTR_CACHE" ] || BLOCK_BUTTON=5 i3weather
- sed 's,\x1B\[[0-9;]*[a-zA-z],,g' "$WTTR_CACHE" > "$WTTR_TXT"
st -c "dropdown_weather" \
- -g "$(wc -L < "$WTTR_TXT")x38" \
- -e less -r "$WTTR_CACHE" & sleep 0.3
- ;;
+ -g "$(wc -L < "$WTTR_TXT")x30" \
+ -e less -r "$WTTR_CACHE" & sleep 0.3 ;;
2) $TERMINAL -e nvim "$0" ;;
- *) notify-send "⛅ Refreshing weather info..." ;;
+ *) isUpdating=1; notify "⛅ Refreshing weather info..." ;;
esac
+# update cache files
+res="$(curl -Ss "$WTTR_URL" > "$WTTR_CACHE" 2>&1)" || err "$res"
+sed 's,\x1B\[[0-9;]*[a-zA-z],,g' "$WTTR_CACHE" > "$WTTR_TXT"
+[ "$(wc -l "$WTTR_TXT" | cut -d' ' -f1)" -lt 20 ] && err "$(cat "$WTTR_TXT")"
+
+# get weather based on argument
case "$1" in
- 1) weather="$(curl -s "$WTTR_URL?format=%c")$WTTR_LOCATION $(curl -Ss "$WTTR_URL?0&T&Q" | sed -E '2,3!d; s/.{16}(.{13}).*/\1/; s/ {4}$//' | tr -d '\n')" ;;
- 2) weather="$(curl -s "$WTTR_URL?format=%c%C")" ;;
- *) weather="$(curl -s "$WTTR_URL?format=%c") $(curl -Ss "$WTTR_URL?0&T&Q" | cut -c 16- | head -2)" ;;
+ info) weather="$(curl -Ss "$WTTR_URL?format=%c%C" 2>&1)" ;;
+ cache) weather="$(sed -E '1,7!d; 3d; 6d; s/.{16}(.{,13}).*/\1/; s/\s//g' "$WTTR_TXT" |
+ sed -z 's/\n/:/; s/\n/ /g; s/\s*$//' 2>&1)" ;;
+ *) weather="$(curl -Ss "$WTTR_URL?format=%l:+%c+%t(%f)++%w++%p" 2>&1)" ;;
esac
-if [ "$(echo "$weather" | grep -Ec "(Unknown|curl|HTML)")" -gt 0 ]; then
- echo "WEATHER UNAVAILABLE"
-else
- echo "${weather:-⛅ -- }"
-fi
+# check for empty responses and errors
+[ "$(echo "$weather" | grep -Ec "(Unknown|curl|HTML)")" -gt 0 ] &&
+ err "$weather" || echo "${weather:-⛅ -- }"
-curl -s "$WTTR_URL" > "$WTTR_CACHE"
+# End response when no error occurs
+notify "✔️ Weather Updated."
diff --git a/.local/bin/statusbar/sb-clock b/.local/bin/statusbar/sb-clock
new file mode 100755
index 0000000..d652e92
--- /dev/null
+++ b/.local/bin/statusbar/sb-clock
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+clock=$(date '+%I')
+
+# # emoji icons
+# case "$clock" in
+# "00") icon="🕛" ;;
+# "01") icon="🕐" ;;
+# "02") icon="🕑" ;;
+# "03") icon="🕒" ;;
+# "04") icon="🕓" ;;
+# "05") icon="🕔" ;;
+# "06") icon="🕕" ;;
+# "07") icon="🕖" ;;
+# "08") icon="🕗" ;;
+# "09") icon="🕘" ;;
+# "10") icon="🕙" ;;
+# "11") icon="🕚" ;;
+# "12") icon="🕛" ;;
+# esac
+
+# nerd fonts clock
+case "$clock" in
+ "00") icon="󱑖" ;;
+ "01") icon="󱑋" ;;
+ "02") icon="󱑌" ;;
+ "03") icon="󱑍" ;;
+ "04") icon="󱑎" ;;
+ "05") icon="󱑏" ;;
+ "06") icon="󱑐" ;;
+ "07") icon="󱑑" ;;
+ "08") icon="󱑒" ;;
+ "09") icon="󱑓" ;;
+ "10") icon="󱑔" ;;
+ "11") icon="󱑕" ;;
+ "12") icon="󱑖" ;;
+esac
+
+# # nerd fonts clock filled
+# case "$clock" in
+# "00") icon="󱑊" ;;
+# "01") icon="󱐿" ;;
+# "02") icon="󱑀" ;;
+# "03") icon="󱑁" ;;
+# "04") icon="󱑂" ;;
+# "05") icon="󱑃" ;;
+# "06") icon="󱑄" ;;
+# "07") icon="󱑅" ;;
+# "08") icon="󱑆" ;;
+# "09") icon="󱑇" ;;
+# "10") icon="󱑈" ;;
+# "11") icon="󱑉" ;;
+# "12") icon="󱑊" ;;
+# esac
+
+case $BLOCK_BUTTON in
+ 1) st -c "dropdown_calendar" -g 66x34 -e sh -c "cal -y --color=always|less" ;;
+ 2) setsid -f "$TERMINAL" -e "$EDITOR" "$0" ;;
+esac
+
+date +"$icon %H:%M:%S 󰃭 %a %d.%m.%Y ✟ "
diff --git a/.local/bin/text-preview b/.local/bin/text-preview
deleted file mode 100755
index 4d0931d..0000000
--- a/.local/bin/text-preview
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-# A simple text previewer.
-# Useful in certain cases when you don't want to use your glorified previewer
-# and just see the raw text content of a processable document like a markdown
-# file.
-
-[ -f "$1" ] && {
- if command -v highlight >/dev/null; then
- highlight --out-format=ansi -- "$1"
- elif command -v bat >/dev/null; then
- bat -- "$1"
- else
- cat -- "$1"
- fi
- exit
-}
-
-if command -v eza >/dev/null; then
- eza -alhF --group-directories-first --color=always --icons=always -- "$1"
-else
- ls -lhAF --group-directories-first --color=always -- "$1"
-fi
diff --git a/.local/bin/web/yth b/.local/bin/web/yth
new file mode 100755
index 0000000..26cbe91
--- /dev/null
+++ b/.local/bin/web/yth
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+[ -n "$YT_HISTFILE" ] ||
+ export YT_HISTFILE="${XDG_STATE_HOME:-$HOME/.local/state}/yt_history.tsv"
+
+menu() {
+ case "$1" in
+ dmenu) tac "$YT_HISTFILE" | dmenu -l 30 ;;
+ *)
+ bat --color=always --language=tsv --style=plain "$YT_HISTFILE" |
+ fzf --ansi --tac \
+ --delimiter '\t' --with-nth 2,3 \
+ --header-first --header "YT History" \
+ --preview="echo {1}" --preview-window="up,1" \
+ --bind 'ctrl-y:execute-silent(printf "%s\n" {1} | xsel --clipboard)' ;;
+ esac
+}
+
+ menu "$@" | sed -E "s/\t.*\t.*$//"
diff --git a/.local/bin/web/ytv b/.local/bin/web/ytv
index c6e9eec..697c86f 100755
--- a/.local/bin/web/ytv
+++ b/.local/bin/web/ytv
@@ -1,3 +1,16 @@
#!/bin/sh
+case "$(echo "$PWD" | tr '[:upper:]' '[:lower:]')" in
+ *videos*|*movies*|*series*) ;;
+ *)
+ printf "Non standard path for video download, continue? [Y/n] " >&2
+
+ read -r arg
+ case "$arg" in
+ n|N) exit ;;
+ esac
+ echo
+ ;;
+esac
+
yt-dlp "$@" --config ~/.config/yt-dlp/videos.conf