Compare commits

...

5 Commits

Author SHA1 Message Date
Hektor Misplon 21e5d0ac86 Separate config into '.vim/plugins/' 2024-09-22 11:54:49 +00:00
Hektor Misplon 0ce01efd46 Update colorscheme config 2024-09-22 11:54:49 +00:00
Hektor Misplon 5a29b672a2 Add rofi keybindings to XMonad 2024-09-22 11:54:49 +00:00
Hektor Misplon 2f4ed6cc51 Update password backup scripts 2024-09-22 11:54:49 +00:00
Hektor Misplon a6a85d1ea5 Update 'save-passwddb script'
Update `save-passwddb` script to use Proton drive instead of Google
drive. Also fixes an issue with too many files being included.
2024-09-22 11:54:49 +00:00
10 changed files with 98 additions and 78 deletions

19
.bin/restore-passwddb Executable file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env bash
# Backup existing password databases and
# database keys (using date in filename date -u
# +%Y-%m-%d_%H-%M-%S)
RCLONE_REMOTE="proton-drive"
for f in "$HOME/doc"/*.{kdbx,kdbx.key}; do
[ -e "$f" ] || continue
echo "Backing up $f to $f-$(date -u +%Y-%m-%d_%H-%M-%S)"
cp "$f" "$f-$(date -u +%Y-%m-%d_%H-%M-%S)"
done
echo "Restoring KeePassXC databases and database keys"
rclone copyto \
"$RCLONE_REMOTE:doc"/ "$HOME/doc/" \
--progress \
--include "/*.{kdbx,kdbx.key}"

View File

@ -8,14 +8,18 @@
# `systemctl --user enable save-passwddb.service` # `systemctl --user enable save-passwddb.service`
# `systemctl --user enable save-passwddb.timer` # `systemctl --user enable save-passwddb.timer`
# https://unix.stackexchange.com/questions/100871/in-a-bash-if-condition-how-to-check-whether-any-files-matching-a-simple-wildcard RCLONE_REMOTE="proton-drive"
# Reference: <https://unix.stackexchange.com/questions/100871/in-a-bash-if-condition-how-to-check-whether-any-files-matching-a-simple-wildcard>
if [ 0 -lt "$(ls $HOME/doc/*.kdbx 2>/dev/null | wc -w)" ]; then if [ 0 -lt "$(ls $HOME/doc/*.kdbx 2>/dev/null | wc -w)" ]; then
rclone copy "$HOME/doc" google-drive:doc --include "*.kdbx" echo "Saving KeePassXC databases and database keys"
rclone copy "$HOME/doc" google-drive:doc --include "*.kdbx.key" rclone copyto \
"$HOME/doc/" "$RCLONE_REMOTE:doc"/ \
--progress \
--include "/*.{kdbx,kdbx.key}"
else else
echo "No password database found, use the following commands to restore" echo "No password database found, use the following commands to restore"
echo "" echo ""
echo "rclone copy google-drive:doc \"$HOME/doc\" --include \"*.kdbx\"" echo "rclone copy $RCLONE_REMOTE:doc \"$HOME/doc\" --include \"*.{kdbx,kdbx.key}\""
echo "rclone copy google-drive:doc \"$HOME/doc\" --include \"*.kdbx.key\""
exit 1 exit 1
fi fi

14
.vim/plugin/cursor.vim Normal file
View File

@ -0,0 +1,14 @@
" Taken from /usr/share/vim/vim90/defaults.vim
augroup vimStartup
au!
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid, when inside an event handler
" (happens when dropping a file on gvim) and for a commit message (it's
" likely a different one than last time).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
augroup END

3
.vim/plugin/jsonc.vim Normal file
View File

@ -0,0 +1,3 @@
" JSONC (see https://github.com/neoclide/jsonc.vim/pull/9")
au BufNewFile,BufRead */.vscode/*.json setlocal filetype=jsonc

10
.vim/plugin/pandoc.vim Normal file
View File

@ -0,0 +1,10 @@
fu! Compile()
if expand('%:e') == "md"
:silent exec "!pandoc % -s -o /tmp/op.pdf &"
endif
endfu
fu! Preview()
:call Compile()
:silent exec "!zathura /tmp/op.pdf &"
endfu

5
.vim/plugin/reload.vim Normal file
View File

@ -0,0 +1,5 @@
augroup Vim
au!
" Reload vim config when ~/.vimrc is changed
au BufWritePost $HOME/.vimrc so $MYVIMRC | redraw | echo "Reloaded vimrc"
augroup END

View File

@ -0,0 +1,7 @@
se ls=2
se stl=\ %0*%n
se stl+=\ %m
se stl+=\ %y%0*
se stl+=\ %<%F
se stl+=\ %0*%=%5l%*
se stl+=%0*/%L%*

20
.vim/plugin/zk.vim Normal file
View File

@ -0,0 +1,20 @@
let s:zk_preview_enabled = 0
let s:live_server_job = -1
au BufEnter /home/h/.zk/*.md silent exe '!echo "%" > /home/h/.zk/current-zettel.txt'
function! ToggleZKPreview()
if s:zk_preview_enabled == 1
let s:zk_preview_enabled = 0
call jobstop(s:live_server_job)
au! ZKPreview
else
let s:zk_preview_enabled = 1
let s:live_server_job = jobstart('live-server --watch=/home/h/.zk/current-zettel-content.html --open=current-zettel-content.html --port=8080')
augroup ZKPreview
au BufEnter /home/h/.zk/*.md silent exe '!cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
au BufWritePost /home/h/.zk/*.md silent exe '!make && cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
augroup END
endif
endfunction
command! ToggleZKPreview call ToggleZKPreview()
nn <leader>o :ToggleZKPreview<cr> :!xdg-open http://localhost:8080/%:t:r.html & <cr>

79
.vimrc
View File

@ -32,6 +32,12 @@ set thesaurus+=~/.vim/thesaurus/mthesaur.txt
" }}} " }}}
" Colorscheme {{{
set termguicolors
set bg=light
hi Normal ctermbg=none guibg=none
" }}}
" Mappings {{{ " Mappings {{{
" "
@ -223,90 +229,17 @@ au Filetype supercollider packadd scvim
" }}} " }}}
" }}}
" Color theme & statusline {{{
"
se ls=2
se stl=\ %0*%n
se stl+=\ %m
se stl+=\ %y%0*
se stl+=\ %<%F
se stl+=\ %0*%=%5l%*
se stl+=%0*/%L%*
colo yang
" }}} " }}}
" Quick hacks {{{ " Quick hacks {{{
" "
fu! Compile()
if expand('%:e') == "md"
:silent exec "!pandoc % -s -o /tmp/op.pdf &"
endif
endfu
fu! Preview()
:call Compile()
:silent exec "!zathura /tmp/op.pdf &"
endfu
" VIM config hot reload
" TODO: separate to filetype specific files " TODO: separate to filetype specific files
" JS " JS
" Jump between `=` and `;` " Jump between `=` and `;`
au FileType javascript set mps+==:; au FileType javascript set mps+==:;
" JSONC (see https://github.com/neoclide/jsonc.vim/pull/9")
au BufNewFile,BufRead */.vscode/*.json setlocal filetype=jsonc
let s:zk_preview_enabled = 0
let s:live_server_job = -1
au BufEnter /home/h/.zk/*.md silent exe '!echo "%" > /home/h/.zk/current-zettel.txt'
function! ToggleZKPreview()
if s:zk_preview_enabled == 1
let s:zk_preview_enabled = 0
call jobstop(s:live_server_job)
au! ZKPreview
else
let s:zk_preview_enabled = 1
let s:live_server_job = jobstart('live-server --watch=/home/h/.zk/current-zettel-content.html --open=current-zettel-content.html --port=8080')
augroup ZKPreview
au BufEnter /home/h/.zk/*.md silent exe '!cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
au BufWritePost /home/h/.zk/*.md silent exe '!make && cat "%:r.html" > /home/h/.zk/current-zettel-content.html'
augroup END
endif
endfunction
command! ToggleZKPreview call ToggleZKPreview()
nn <leader>o :ToggleZKPreview<cr> :!xdg-open http://localhost:8080/%:t:r.html & <cr>
highlight QuickScopeSecondary cterm=underline highlight QuickScopeSecondary cterm=underline
highlight QuickScopePrimary ctermbg=253 ctermfg=232 cterm=none highlight QuickScopePrimary ctermbg=253 ctermfg=232 cterm=none
highlight Pmenu ctermfg=232 highlight Pmenu ctermfg=232
" Taken from /usr/share/vim/vim90/defaults.vim
augroup vimStartup
au!
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid, when inside an event handler
" (happens when dropping a file on gvim) and for a commit message (it's
" likely a different one than last time).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
augroup END
augroup Vim
au!
" Reload vim config when ~/.vimrc is changed
au BufWritePost $HOME/.vimrc so $MYVIMRC | redraw | echo "Reloaded vimrc"
augroup END

View File

@ -197,6 +197,8 @@ myKeys =
("<F8>", spawnKeepassXC), ("<F8>", spawnKeepassXC),
("M-z", spawnZettelkasten), ("M-z", spawnZettelkasten),
("M-p", spawnLauncher), ("M-p", spawnLauncher),
("M-w", spawnWindowSwitcher),
("M-S-w", spawnWifiMenu),
("<Insert>", pasteSelection), ("<Insert>", pasteSelection),
("<Print>", printScreen), ("<Print>", printScreen),
("<XF86AudioRaiseVolume>", raiseVol), -- Audio volume & playback ("<XF86AudioRaiseVolume>", raiseVol), -- Audio volume & playback
@ -260,6 +262,9 @@ spawnKeepassXC = spawn "keepassxc"
fullscreenBrowser :: X () fullscreenBrowser :: X ()
fullscreenBrowser = spawn "firefox --fullscreen" fullscreenBrowser = spawn "firefox --fullscreen"
spawnWindowSwitcher = spawn "rofi -show window -show-icons"
spawnWifiMenu = spawn "rofi -show wifi -modi \"wifi:iwdrofimenu\""
spawnLauncher, spawnClipManager, spawnCalculator :: X () spawnLauncher, spawnClipManager, spawnCalculator :: X ()
spawnLauncher = spawn "rofi -show drun -show-icons" spawnLauncher = spawn "rofi -show drun -show-icons"
spawnClipManager = spawn "rofi -modi 'clipboard:greenclip print' -show clipboard -run-command '{cmd}'" spawnClipManager = spawn "rofi -modi 'clipboard:greenclip print' -show clipboard -run-command '{cmd}'"