commit 35daab70d247d15f16fed247277a6b9feea7d823
parent 19dc654340b5319938efd8bbe2c54469c908e3d5
Author: Bharatvaj <bharatvaj@yahoo.com>
Date: Sat, 23 Jul 2022 16:10:40 +0530
Add .local/bin/sh for posix scripts
Add .config/vim/ftplugin/cpp.vim for cpp filetype completions in vim
Add insert mode keybindings for vim
Use Regular Fira Mono font for alacritty. SemiBold seems a little
fluffy.
Refactor scripts to use $FUZZER variable instead of hard coding the fzy
or fzf
Diffstat:
13 files changed, 115 insertions(+), 26 deletions(-)
diff --git a/.config/alacritty/font.yml b/.config/alacritty/font.yml
@@ -1,15 +1,16 @@
font:
normal:
- family: Fira Code
- style: SemiBold
+ family: Fira Mono
+ style: Regular
bold:
- family: Fira Code
+ family: Fira Mono
style: Bold
italic:
- family: Fira Code
- style: Italic
+ family: Fira Mono
+ style: Regular Italic
bold_italic:
- family: Fira Code
+ family: Fira Mono
+ style: Bold Italic
diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf
@@ -2,11 +2,12 @@
set -g base-index 1
set escape-time 0
set -g set-titles on
+bind c new-window -c "#{pane_current_path}"
# Status bar
set -g status-position top
-set -g status-justify absolute-centre
-set -g status-right ""
+set -g status-justify left
+set -g status-right "#(tmux-now-playing)"
set -g status-keys vi
bind v split-window -h
bind s split-window -v
@@ -40,10 +41,10 @@ bind P paste-buffer
# Themes
set -g status-bg black
set -g status-fg white
-set -g status-right "#(mpc current)"
set -g window-status-current-style "bg=black,fg=red"
set -g pane-active-border-style "fg=red"
+
# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs
@@ -1,8 +1,8 @@
-XDG_DESKTOP_DIR="$HOME/Desktop"
-XDG_DOCUMENTS_DIR="$HOME/Documents"
-XDG_DOWNLOAD_DIR="$HOME/downloads"
-XDG_MUSIC_DIR="$HOME/Music"
-XDG_PICTURES_DIR="$HOME/Pictures"
-XDG_PUBLICSHARE_DIR="$HOME/Public"
-XDG_TEMPLATES_DIR="$HOME/Templates"
-XDG_VIDEOS_DIR="$HOME/Videos"
+XDG_DESKTOP_DIR="$XDG_DATA_HOME/desktop"
+XDG_DOCUMENTS_DIR="$XDG_DATA_HOME/documents"
+XDG_DOWNLOAD_DIR="$XDG_CACHE_HOME/downloads"
+XDG_MUSIC_DIR="$XDG_DATA_HOME/music"
+XDG_PICTURES_DIR="$XDG_DATA_HOME/pictures"
+XDG_PUBLICSHARE_DIR="$XDG_DATA_HOME/public"
+XDG_TEMPLATES_DIR="$XDG_DATA_HOME/templates"
+XDG_VIDEOS_DIR="$XDG_DATA_HOME/videos"
diff --git a/.config/vim/ftplugin/cpp.vim b/.config/vim/ftplugin/cpp.vim
@@ -0,0 +1,10 @@
+augroup CppIAbbrevs
+ autocmd!
+ autocmd FileType c,cpp :iabbrev main@ int main(int argc, char* argv[]) {<cr><cr>}<up>
+ autocmd FileType c,cpp :iabbrev fun@ <esc>bvedivoid <C-o>P() {<cr><cr>}<up>
+ autocmd FileType c,cpp :iabbrev p@ printf("\n");<esc>4hi
+ autocmd FileType c,cpp :iabbrev r@ return;<left>
+ autocmd FileType c,cpp :iabbrev i@ #include <><left>
+ autocmd FileType c,cpp :iabbrev for@ <esc>bvedifor(int <c-o>P=0; <c-o>P < n; <c-o>P++) {<cr><cr>}<up>
+augroup END
+
diff --git a/.config/vim/keybindings/keybindings.vim b/.config/vim/keybindings/keybindings.vim
@@ -1,11 +1,11 @@
" General keybindings
-nnoremap <Leader>lb :ls<CR>:b<space>
+nnoremap <leader>lb :ls<CR>:b<space>
nnoremap <leader>co :copen<cr>
nnoremap <leader>cs :cdo<space>s/
nnoremap <leader>ec :edit $XDG_CONFIG_HOME/vim/vimrc<cr>
nnoremap <leader>ek :edit $XDG_CONFIG_HOME/vim/keybindings/keybindings.vim<cr>
nnoremap <leader>et :set expandtab<cr>
-nnoremap <leader>f :find *
+nnoremap <leader>ff :find *
nnoremap <leader>lo :lopen<cr>
nnoremap <leader>ls :ldo<space>s/
nnoremap <leader>p :Rg<cr>
@@ -13,10 +13,13 @@ nnoremap <leader>so :source %<cr>
nnoremap <leader>tt :tabnew<cr>
nnoremap <leader>vg :vimgrep<space>
" Buffer Creation
-nnoremap <Leader>sc :source ~/.config/vim/vimrc<enter>
-nnoremap <Leader>ss :split<enter>
-nnoremap <Leader>vv :vsplit<enter>
+nnoremap <leader>sc :source ~/.config/vim/vimrc<enter>
+nnoremap <leader>ss :split<enter>
+nnoremap <leader>vv :vsplit<enter>
+" Accessible completions
+inoremap <c-f> <c-x><c-f>
+inoremap <c-l> <c-x><c-l>
" Behave vim
nnoremap Y y$
@@ -67,7 +70,7 @@ let g:ctrlp_map = '<tab><tab>'
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
let g:ctrlp_working_path_mode = 'r'
let g:gutentags_file_list_command = 'rg --files'
-nnoremap <leader><leader> :CtrlPTag<cr>
+nnoremap <leader><leader> :CtrlPBuffer<cr>
" vim-fugitive
nnoremap <leader>gg :Ggrep<space>
nnoremap <leader>lg :Glgrep<space>
diff --git a/.config/vim/plugin/plugin.vim b/.config/vim/plugin/plugin.vim
@@ -15,3 +15,6 @@ function SaveAndBuild()
wall
Make
endfunction
+
+" TODO load this automatically
+source $XDG_CONFIG_HOME/vim/ftplugin/cpp.vim
diff --git a/.gitignore b/.gitignore
@@ -17,7 +17,11 @@
# Local shell scripts
!.local/
!.local/bin/
-!.local/bin/**
+# !.local/bin/**
+!.local/bin/cmd/
+!.local/bin/cmd/**
+!.local/bin/sh/
+!.local/bin/sh/**
# !.local/share/vim/pack/**/start/**
# !.local/share/vim/pack/**/opt/**
diff --git a/.local/bin/sh/pfs b/.local/bin/sh/pfs
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# reliable password fuzzy searcher
+
+cd "${PASSWORD_STORE_DIR}" || exit 1
+
+selection="$(find -L . -name '*.gpg' | sed 's/.gpg$//g' | ${FUZZER})"
+
+test -z "${selection}" || pass ${1} "${selection}"
+
diff --git a/.local/bin/sh/rssr b/.local/bin/sh/rssr
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# rssr - rss reader
+
+[ -z "$RSSR_FUZZY_SEARCHER" ] && RSSR_FUZZY_SEARCHER=$(FUZZER)
+[ -z "$FEEDS_PATH" ] && FEEDS_PATH="${HOME}/.sfeed/feeds"
+[ -z "$BROWSER" ] && BROWSER=open
+
+test -z "$RSSR_FUZZY_SEARCHER" && ( echo "RSSR_FUZZY_SEARCHER needs to be set" && exit 1 )
+
+cd "$FEEDS_PATH" || (echo "FEEDS_PATH: $FEEDS_PATH does not exist" && exit 1)
+
+website="$(ls | $RSSR_FUZZY_SEARCHER)"
+
+[ -n "$website" ] && link=$(cat "$website" | cut -f3 | $RSSR_FUZZY_SEARCHER)
+
+[ -n "$link" ] && "$BROWSER" "$link"
+
diff --git a/.local/bin/sh/songdl b/.local/bin/sh/songdl
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+[ $# -ne 1 ] && echo "Usage: $0 <youtube-url>" && exit 1
+
+[ -z "$SONGDL_HOME" ] && SONGDL_HOME="${XDG_MUSIC_DIR}"
+
+cd "$SONGDL_HOME"
+
+song_name=$1
+
+youtube-dl --external-downloader aria2c --extract-audio --audio-format mp3 "$song_name"
diff --git a/.local/bin/sh/spot b/.local/bin/sh/spot
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+#TODO Check system for this variable before setting default.
+#TODO Handle if program not found
+#TODO Add more search dirs for different platforms
+search_dirs=("/Applications" "/System/Applications")
+
+app="$(find ${search_dirs[@]} -maxdepth 2 -name "*.app" -type d | ${FUZZER})"
+
+test -n "${app}" && open "${app}"
diff --git a/.local/bin/sh/tmux-now-playing b/.local/bin/sh/tmux-now-playing
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+#TODO figure out how th this is working in the first place
+status=$(mpc)
+
+song_status="$(mpc | sed 2q | tac | head -n1)"
+song_title="$(printf $status | head -n2 | tac | head -n1)"
+
+printf "%s - %s\n" "${song_status}" "${song_title}"
diff --git a/.profile b/.profile
@@ -8,6 +8,15 @@ export XDG_CONFIG_HOME="$XDG_ROOT/.config"
export XDG_DATA_HOME="$XDG_ROOT/.local/share"
export XDG_CACHE_HOME="$XDG_ROOT/.cache"
+export XDG_DESKTOP_DIR="$XDG_DATA_HOME/desktop"
+export XDG_DOCUMENTS_DIR="$XDG_DATA_HOME/documents"
+export XDG_DOWNLOAD_DIR="$XDG_CACHE_HOME/downloads"
+export XDG_MUSIC_DIR="$XDG_DATA_HOME/music"
+export XDG_PICTURES_DIR="$XDG_DATA_HOME/pictures"
+export XDG_PUBLICSHARE_DIR="$XDG_DATA_HOME/public"
+export XDG_TEMPLATES_DIR="$XDG_DATA_HOME/templates"
+export XDG_VIDEOS_DIR="$XDG_DATA_HOME/videos"
+
# Global programs
export VIMINIT="if !has('nvim')
source $XDG_CONFIG_HOME/vim/vimrc
@@ -49,7 +58,7 @@ export VSCODE_PORTABLE="$XDG_DATA_HOME/vscode"
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export SQLITE_HISTORY="$XDG_DATA_HOME/sqlite_history"
export MYSQL_HISTFILE="$XDG_DATA_HOME/mysql_history"
-# export ZDOTDIR="$XDG_DATA_HOME/zsh"
+export SONGDL_HOME="${XDG_DATA_HOME}/music/"
export PSQL_HISTORY="$XDG_CACHE_HOME/pg/psql_history"
export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
@@ -60,7 +69,7 @@ export GEM_SPEC_CACHE="$XDG_CACHE_HOME"/gem
HISTTIMEFORMAT="%F %T "
# Local executables
-export PATH=${PATH}:${HOME}/.local/bin:${XDG_DATA_HOME}/npm/bin:${XDG_DATA_HOME}/.cargo/bin
+export PATH=${PATH}:${HOME}/.local/bin:${HOME}/.local/bin/sh:${XDG_DATA_HOME}/npm/bin:${XDG_DATA_HOME}/.cargo/bin
chance() {
# Hit or miss