Cleanup, update vim to neovim, improve bin scripts. - dotfiles - These are my dotfiles. There are many like it, but these are mine.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit bee752b8d87c5679b3e8af65c68e573c982aecbd
(DIR) parent 76b0da6317935978f70ad93a5286c8eaf57782b5
(HTM) Author: Jay Scott <me@jay.scot>
Date: Sun, 21 Jan 2024 11:03:12 +0000
Cleanup, update vim to neovim, improve bin scripts.
Diffstat:
M .gitignore | 4 +++-
M README | 1 -
D alacritty/alacritty.yml | 40 -------------------------------
M bashrc | 8 +++++---
M bin/dwmstatus.sh | 25 +++++++++++++++----------
M bin/game_select.sh | 59 ++++++++++++++++++++-----------
M bin/genaccount.sh | 32 +++++++++++++++++++++----------
M bootstrap.sh | 32 ++++++++++++++++----------------
M newsraft/config | 2 +-
M newsraft/feeds | 1 +
A nvim/init.lua | 93 +++++++++++++++++++++++++++++++
M pkg/pkglist-repo.txt | 12 +++++++++---
D vimrc | 79 -------------------------------
13 files changed, 203 insertions(+), 185 deletions(-)
---
(DIR) diff --git a/.gitignore b/.gitignore
@@ -16,13 +16,15 @@ ncmpcpp/error.log
*.swp
bin/terraform
bin/golangci-lint
+bin/neonmodem
bin/radio
# vim
-vim/bundle
+nvim/lazy-lock.json
# mutt contacts
mutt/aliases
+mutt/cache
# suckless
suckless/dwm/src
(DIR) diff --git a/README b/README
@@ -7,7 +7,6 @@ Privacy is at the forefront of my mind as such some of my browser
settings maybe too restrictive for some. I also don't use social media
at all, the closest I come is using IRC.
-
operating sys : archlinux / alpine linux
window manager : dwm
terminal : alacritty
(DIR) diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml
@@ -1,40 +0,0 @@
-font:
- normal:
- family: Hack
- style: Regular
-
- size: 15
-
-env:
- TERM: xterm-256color
-
-# Colors (Gruvbox dark)
-colors:
- # Default colors
- primary:
- # hard contrast: background = '0x1d2021'
- background: '0x282828'
- # soft contrast: background = '0x32302f'
- foreground: '0xebdbb2'
-
- # Normal colors
- normal:
- black: '0x282828'
- red: '0xcc241d'
- green: '0x98971a'
- yellow: '0xd79921'
- blue: '0x458588'
- magenta: '0xb16286'
- cyan: '0x689d6a'
- white: '0xa89984'
-
- # Bright colors
- bright:
- black: '0x928374'
- red: '0xfb4934'
- green: '0xb8bb26'
- yellow: '0xfabd2f'
- blue: '0x83a598'
- magenta: '0xd3869b'
- cyan: '0x8ec07c'
- white: '0xebdbb2'
(DIR) diff --git a/bashrc b/bashrc
@@ -24,8 +24,6 @@ export GOPROXY=direct
export PATH=$PATH:$GOPATH/bin:$HOME/bin:$HOME/.local/bin
export PS1="[\[$(tput sgr0)\]\[\033[38;5;7m\]\W\[$(tput sgr0)\]] \\$ \[$(tput sgr0)\]"
-export BEMENU_OPTS="-p '> ' --tb '#013220' --tf '#ffffff' --hf '#444444'"
-
# terraform config
export TF_CLOUD_ORGANIZATION="jay-scot"
export TF_WORKSPACE="hetzner"
@@ -46,11 +44,15 @@ alias voff='mullvad lockdown-mode set off; mullvad disconnect'
alias von='mullvad lockdown-mode set on; mullvad connect'
alias vcheck='curl https://am.i.mullvad.net/connected'
+# neo
+alias vim='nvim'
+alias mutt='neomutt'
+
# git alias
alias ga='git add -A'
alias gs='git status -s'
alias gl="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
-alias gd='git diff'
+alias gd='git diff --color=always --word-diff=color | less -RFX'
alias gma='git commit -am'
source ~/.secret
(DIR) diff --git a/bin/dwmstatus.sh b/bin/dwmstatus.sh
@@ -1,18 +1,23 @@
#!/bin/sh
+get_volume() {
+ pactl list sinks | awk '/Volume:/ {print $5; exit}'
+}
+
+get_vpn_status() {
+ mullvad status
+}
+
while true; do
+ localtime=$(date +"%T")
- localtime=$(date +"%T")
- vol=$(pactl list sinks | tr ' ' '\n' | grep -m1 '%')
- vstatus=$(mullvad status)
+ vol=$(get_volume)
+ [ -z "$vol" ] && vol="N/A"
- if [ "$vstatus" != "Disconnected" ]; then
- vstatus="On"
- else
- vstatus="Off"
- fi
+ vstatus=$(get_vpn_status)
+ [ "$vstatus" != "Disconnected" ] && vstatus="On" || vstatus="Off"
- xsetroot -name " VPN: $vstatus | VOL: $vol | $localtime |"
+ xsetroot -name " VPN: $vstatus | VOL: $vol | $localtime "
- sleep 10
+ sleep 10
done
(DIR) diff --git a/bin/game_select.sh b/bin/game_select.sh
@@ -1,26 +1,43 @@
#!/bin/sh
-games=$(printf "%s\n" "Stellaris" "Gibbous" "Rimworld" "AtomRPG" "Primordia" "Steam" | dmenu -p "games »")
+MEDIA_GAMES_DIR=~/media/games
-[ -z "$games" ] && exit 0
+# Define game paths
+stellaris_path=$MEDIA_GAMES_DIR/stellaris/start.sh
+gibbous_path=$MEDIA_GAMES_DIR/gibbous/start.sh
+rimworld_path=$MEDIA_GAMES_DIR/rimworld/start.sh
+atomrpg_path=$MEDIA_GAMES_DIR/atomrpg/start.sh
+primordia_path=$MEDIA_GAMES_DIR/primordia/start.sh
+steam_command=steam
-case "$games" in
-"Steam")
- steam
- ;;
-"Stellaris")
- ~/media/games/stellaris/start.sh
- ;;
-"Gibbous")
- ~/media/games/gibbous/start.sh
- ;;
-"Rimworld")
- ~/media/games/rimworld/start.sh
- ;;
-"AtomRPG")
- ~/media/games/atomrpg/start.sh
- ;;
-"Primordia")
- ~/media/games/primordia/start.sh
- ;;
+# Define game list
+games=("Stellaris" "Gibbous" "Rimworld" "AtomRPG" "Steam")
+
+# Prompt user to choose a game
+selected_game=$(printf "%s\n" "${games[@]}" | dmenu -p "games »")
+
+# Exit if no game selected
+[ -z "$selected_game" ] && exit 0
+
+# Launch the selected game
+case "$selected_game" in
+ "Steam")
+ $steam_command
+ ;;
+ "Stellaris")
+ $stellaris_path
+ ;;
+ "Gibbous")
+ $gibbous_path
+ ;;
+ "Rimworld")
+ $rimworld_path
+ ;;
+ "AtomRPG")
+ $atomrpg_path
+ ;;
+ *)
+ echo "Invalid game selection"
+ exit 1
+ ;;
esac
(DIR) diff --git a/bin/genaccount.sh b/bin/genaccount.sh
@@ -1,15 +1,27 @@
#!/bin/sh
-# script I use for creating accounts.
+generate_username() {
+ od -An -N3 -x /dev/random | awk '{$1=$1};1' | sed 's/ //g'
+}
-username=$(od -An -N3 -x /dev/random | awk '{$1=$1};1' | sed 's/ //g')
-password=$(
- tr </dev/urandom -dc _A-Z-a-z-0-9 | head -c"${1:-16}"
- echo
-)
+generate_password() {
+ tr </dev/urandom -dc _A-Z-a-z-0-9 | head -c"${1:-16}"
+ echo
+}
-convert -size 200x200 xc:gray +noise random /tmp/avatar.png
+generate_avatar() {
+ convert -size 200x200 xc:gray +noise random /tmp/avatar.png
+}
+
+main() {
+ username=$(generate_username)
+ password=$(generate_password)
+ generate_avatar
+
+ printf "username: %s\n" "$username"
+ printf "password: %s\n" "$password"
+ printf "image : /tmp/avatar.png\n"
+}
+
+main
-echo "username: $username"
-echo "password: $password"
-echo "image : /tmp/avatar.png"
(DIR) diff --git a/bootstrap.sh b/bootstrap.sh
@@ -2,39 +2,39 @@
DOTFILES=$(pwd)
-FILES='bashrc profile vimrc'
+FILES='bashrc profile'
ROOT='bin'
-CONFIG='alacritty git isync lynx mutt newsraft mpd ncmpcpp qutebrowser X11'
+CONFIG='alacritty git isync lynx mutt newsraft mpd ncmpcpp nvim qutebrowser X11'
link() {
- for f in $FILES; do ln -sfn "$DOTFILES/$f" "$HOME/.$f"; done
- for f in $ROOT; do ln -sfn "$DOTFILES/$f" "$HOME/$f"; done
- for f in $CONFIG; do ln -sfn "$DOTFILES/$f" "$HOME/.config/$f"; done
+ for f in $FILES; do ln -sfn "$DOTFILES/$f" "$HOME/.$f"; done
+ for f in $ROOT; do ln -sfn "$DOTFILES/$f" "$HOME/$f"; done
+ for f in $CONFIG; do ln -sfn "$DOTFILES/$f" "$HOME/.config/$f"; done
}
unlink() {
- for f in $FILES; do unlink "$HOME/.$f"; done
- for f in $ROOT; do unlink "$HOME/$f"; done
- for f in $CONFIG; do unlink "$HOME/.config/$f"; done
+ for f in $FILES; do unlink "$HOME/.$f"; done
+ for f in $ROOT; do unlink "$HOME/$f"; done
+ for f in $CONFIG; do unlink "$HOME/.config/$f"; done
}
backup() {
- pacman -Qqen >pkg/pkglist-repo.txt
- pacman -Qqem >pkg/pkglist-aur.txt
+ pacman -Qqen >pkg/pkglist-repo.txt
+ pacman -Qqem >pkg/pkglist-aur.txt
}
restore() {
- crontab "$DOTFILES/crontab"
+ crontab "$DOTFILES/crontab"
}
testsh() {
- shellcheck -s sh "$DOTFILES"/bin/*.sh
- shfmt -p -w "$DOTFILES"/bin/*.sh
+ shellcheck -s sh "$DOTFILES"/bin/*.sh
+ shfmt -p -w "$DOTFILES"/bin/*.sh
}
-if [ $# -eq 0 ]; then
- echo "No arguments supplied"
- exit 1
+if [ "$#" -eq 0 ]; then
+ printf "No arguments supplied\n" >&2
+ exit 1
fi
$1
(DIR) diff --git a/newsraft/config b/newsraft/config
@@ -1,5 +1,5 @@
# settings
-set open-in-browser-command /home/jay/bin/link_handler.sh "%l"
+set open-in-browser-command ~/bin/link_handler.sh "%l"
set send-user-agent-header true
set clean-database-on-startup true
(DIR) diff --git a/newsraft/feeds b/newsraft/feeds
@@ -87,3 +87,4 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCfpCQ89W9wjkHc8J_6eTbBg "Th
https://www.youtube.com/feeds/videos.xml?channel_id=UCcjx6m03fZwtRBFn1Cf7kKQ "Zack Alsop"
https://www.youtube.com/feeds/videos.xml?channel_id=UCKBUeKsqzKWSxp4pahxljBw "WildBeare"
https://www.youtube.com/feeds/videos.xml?channel_id=UCcKw8Eg0FfRvhIAnC0cPGAA "Planes, Trains and Everything"
+https://www.youtube.com/feeds/videos.xml?channel_id=UCBhQuxcHU3aydk_zTXcbdTg "Steve Marsh"
(DIR) diff --git a/nvim/init.lua b/nvim/init.lua
@@ -0,0 +1,93 @@
+--- bootstrap
+
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not vim.loop.fs_stat(lazypath) then
+ vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "https://github.com/folke/lazy.nvim.git",
+ "--branch=stable",
+ lazypath,
+ })
+end
+vim.opt.rtp:prepend(lazypath)
+
+--- plugins
+
+require("lazy").setup({
+
+ {
+ "ellisonleao/gruvbox.nvim",
+ priority = 1000,
+ config = function ()
+ require("gruvbox").setup({
+ contrast = "hard"
+ })
+ vim.cmd([[colorscheme gruvbox]])
+ end,
+ },
+
+ {
+ "nvim-lualine/lualine.nvim",
+ dependencies = { 'nvim-tree/nvim-web-devicons' },
+ config = function ()
+ require("lualine").setup({
+ options = {
+ theme = 'gruvbox',
+ icons_enabled = false,
+ },
+ sections = {
+ lualine_c = {
+ {
+ 'filename',
+ file_status = true,
+ path = 1
+ }
+ }
+ }
+ })
+ end,
+ },
+
+ {
+ "lewis6991/spaceless.nvim",
+ config = function()
+ require'spaceless'.setup()
+ end
+ }
+
+})
+
+--- settings
+
+vim.opt.termguicolors = true
+vim.opt.number = true
+vim.opt.showmatch = true
+vim.opt.swapfile = false
+vim.opt.ignorecase = true
+vim.o.spelllang = 'en_gb'
+vim.o.spell = true
+vim.o.spelloptions = "camel"
+
+-- show space and tab characters
+vim.o.list = true
+vim.o.listchars = 'tab:› ,eol:¬,trail:⋅,nbsp:␣'
+
+-- map leader to <Space>
+vim.keymap.set("n", " ", "<Nop>", { silent = true, remap = false })
+vim.g.mapleader = " "
+
+-- format paragraphs
+vim.keymap.set('n', '<leader>f', 'gqap', { noremap = true, silent = true })
+
+-- indent Settings
+vim.opt.expandtab = true
+vim.opt.shiftwidth = 2
+vim.opt.tabstop = 2
+vim.opt.autoindent = true
+vim.opt.wrap = true
+
+
+--- functions
+
(DIR) diff --git a/pkg/pkglist-repo.txt b/pkg/pkglist-repo.txt
@@ -8,6 +8,7 @@ dhcpcd
docker
docker-compose
efibootmgr
+fzf
gamemode
git
gnu-netcat
@@ -18,10 +19,12 @@ lib32-libpng12
lib32-pipewire
linux
linux-firmware
-lutris
lynx
+mpd
mpv
-mutt
+ncmpcpp
+neomutt
+neovim
noto-fonts-emoji
ntfs-3g
pamixer
@@ -30,6 +33,8 @@ pipewire-alsa
pipewire-pulse
profanity
pulsemixer
+python-adblock
+qutebrowser
rsync
scrot
shfmt
@@ -38,13 +43,14 @@ sudo
terraform
ttf-dejavu
ttf-hack
+ttf-jetbrains-mono-nerd
ttf-liberation
unrar
unzip
-vim
vulkan-radeon
wayland
wine-staging
+xclip
xdg-utils
xf86-video-amdgpu
xorg-server
(DIR) diff --git a/vimrc b/vimrc
@@ -1,79 +0,0 @@
-" vim-plug autoinstall
-if empty(glob('~/.vim/autoload/plug.vim'))
- silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
- \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
-endif
-
-let mapleader = "\<space>"
-
-call plug#begin()
-Plug 'VundleVim/Vundle.vim'
-
-Plug 'morhetz/gruvbox'
- autocmd vimenter * ++nested colorscheme gruvbox
-
-Plug 'maximbaz/lightline-ale'
-
-Plug 'itchyny/lightline.vim'
- let g:lightline = {}
- set laststatus=2
-
- let g:lightline.colorscheme = 'wombat'
- let g:lightline.component_expand = {
- \ 'linter_checking': 'lightline#ale#checking',
- \ 'linter_infos': 'lightline#ale#infos',
- \ 'linter_warnings': 'lightline#ale#warnings',
- \ 'linter_errors': 'lightline#ale#errors',
- \ 'linter_ok': 'lightline#ale#ok',
- \ }
-
- let g:lightline.component_type = {
- \ 'linter_checking': 'right',
- \ 'linter_infos': 'right',
- \ 'linter_warnings': 'warning',
- \ 'linter_errors': 'error',
- \ 'linter_ok': 'right',
- \ }
-
- let g:lightline.active = {
- \ 'right': [ [ 'linter_checking', 'linter_errors', 'linter_warnings', 'linter_infos', 'linter_ok' ],
- \ [ 'lineinfo' ],
- \ [ 'percent' ],
- \ [ 'fileformat', 'filetype'] ] }
-
-Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
-Plug 'junegunn/fzf.vim'
- map <leader>f :Files!<CR>
- nnoremap <Tab> :Buffers<CR>
-
-Plug 'airblade/vim-gitgutter'
- let g:gitgutter_enabled=1
-
-call plug#end()
-
-filetype plugin indent on
-set background=dark
-set number
-set colorcolumn=80
-highlight ColorColumn ctermbg=red guibg=red
-
-syntax enable
-
-" remove whitespaces
-autocmd BufWritePre * :%s/\s\+$//e
-
-" spell-check the current buffer
-map <leader>s :setlocal spell! spelllang=en_gb<CR>
-augroup my_colours
- autocmd!
- autocmd ColorScheme gruvbox hi SpellBad cterm=reverse
-augroup END
-
-" format paragraph
-map <leader>t :setl comments=fn\:\\|<CR>:setl formatoptions=tcorjq1l<CR>gqip
-
-au BufRead ~/.cache/mutt* set tw=72
-
-map <F7> :N<CR>
-map <F8> :n<CR>