summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--BUGS1
-rw-r--r--Makefile181
-rw-r--r--config/bash/bashrc37
-rw-r--r--config/dunst/dunstrc27
-rw-r--r--config/git/gitconfig22
-rw-r--r--config/lf/lfrc51
-rw-r--r--config/mimeapps.list43
-rw-r--r--config/mpv/input.conf9
-rw-r--r--config/nvim/init.lua98
-rw-r--r--config/nvim/lua/plugins.lua24
-rw-r--r--config/picom/picom.conf19
l---------config/qutebrowser/bookmarks/bookmarks.txt1
-rwxr-xr-xconfig/qutebrowser/bookmarks/urls2
-rwxr-xr-xconfig/qutebrowser/config.py10
l---------config/qutebrowser/current_theme.py1
-rwxr-xr-x[-rw-r--r--]config/qutebrowser/startpage/index.html6
-rw-r--r--config/qutebrowser/themes/ayu_light.py16
-rw-r--r--config/qutebrowser/themes/gruvbox.py (renamed from config/qutebrowser/gruvbox.py)0
-rw-r--r--config/qutebrowser/themes/nord.py16
-rw-r--r--config/shell/aliasrc90
-rw-r--r--config/shell/profile25
-rwxr-xr-xconfig/sxiv/exec/key-handler79
-rw-r--r--config/vim/vimrc52
-rw-r--r--config/wallpapers/ship.jpgbin0 -> 4100424 bytes
-rw-r--r--config/x11/themes/catppuccin28
-rw-r--r--config/x11/themes/light-nord28
-rw-r--r--config/x11/themes/material28
-rw-r--r--config/x11/themes/nord25
-rw-r--r--config/x11/themes/one-dark27
-rw-r--r--config/x11/themes/one-light27
-rw-r--r--config/x11/themes/solarized-dark27
-rw-r--r--config/x11/themes/solarized-light27
-rw-r--r--config/x11/xinitrc16
l---------config/x11/xresources1
-rwxr-xr-xconfig/zathura/zathurarc115
-rwxr-xr-xconfig/zsh/zshrc29
-rwxr-xr-xdep.sh71
-rwxr-xr-xscripts/br8
-rwxr-xr-xscripts/nospac3
-rwxr-xr-xscripts/nsend12
-rwxr-xr-xscripts/qw9
-rwxr-xr-xscripts/sdev21
-rwxr-xr-xscripts/shot7
-rwxr-xr-xscripts/slib9
-rwxr-xr-xscripts/slight11
-rwxr-xr-xscripts/svol13
-rwxr-xr-xscripts/swall7
48 files changed, 972 insertions, 389 deletions
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 8c1937f..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-slcf/
-slcf.tar.gz
diff --git a/BUGS b/BUGS
deleted file mode 100644
index 6ef53dd..0000000
--- a/BUGS
+++ /dev/null
@@ -1 +0,0 @@
-- bashrc: prompt gets distorted when the length of the command string exceeds the terminal length
diff --git a/Makefile b/Makefile
index 869318c..78396b3 100644
--- a/Makefile
+++ b/Makefile
@@ -1,91 +1,116 @@
.POSIX:
-DWM = dwm-farajli-6.5
-ST = st-farajli-0.9.2
-DMENU = dmenu-farajli-5.3
-SLSTATUS = slstatus-farajli-1.0
-
-CONFDIR = $(HOME)/.config
-MUSICDIR = $(HOME)/music
-PROJDIR = $(HOME)/proj
-BOOKDIR = $(HOME)/tproj
-TESTPROJDIR = $(HOME)/tproj
-BINDIR = $(HOME)/.local/bin
-
-BASHRC = $(HOME)/.bashrc
-ZSHRC = $(HOME)/.zshrc
-ZPROFILE = $(HOME)/.zprofile
-BASHPROFILE = $(HOME)/.bash_profile
-GITCONFIG = $(HOME)/.gitconfig
-
-COPY = cp -r
-LINK = ln -sf
-
-all: config scripts directory check
-
-full: config scripts git directory desktop
-
-desktop: $(DWM) $(ST) $(DMENU) $(SLSTATUS)
-
-config:
- mkdir -p $(CONFDIR)/sites
- $(COPY) config/bash/bashrc $(BASHRC)
- $(COPY) config/zsh/zshrc $(ZSHRC)
- $(COPY) config/lf $(CONFDIR)
- $(COPY) config/mpv $(CONFDIR)
- $(COPY) config/sxiv $(CONFDIR)
- $(COPY) config/nsxiv $(CONFDIR)
- $(COPY) config/picom $(CONFDIR)
- $(COPY) config/qutebrowser $(CONFDIR)
- $(COPY) config/shell $(CONFDIR)
- $(COPY) config/vim $(CONFDIR)
- $(COPY) config/nvim $(CONFDIR)
- $(COPY) config/x11 $(CONFDIR)
- $(COPY) config/zathura $(CONFDIR)
- $(COPY) config/mimeapps.list $(CONFDIR)
- $(COPY) config/sites/bookmarks.txt $(CONFDIR)/sites
- $(LINK) $(CONFDIR)/shell/profile $(BASHPROFILE)
- $(LINK) $(CONFDIR)/shell/profile $(ZPROFILE)
+DMENU = dmenu_farajli-5.3.0
+DWM = dwm_farajli-6.5.1
+FONT1 = LiberationMono
+FONT2 = JetBrainsMono
+SLSTATUS = slstatus_farajli-1.0.0
+ST = st_farajli-0.9.2.0
+
+FONTS = $(FONT1) $(FONT2)
+SOFTWARE = $(DWM) $(DMENU) $(SLSTATUS) $(ST)
+ARCHIVE = $(SOFTWARE:=.tar.gz) $(FONTS:=.tar.gz)
+
+BINDIR = $(HOME)/.local/bin
+CONFDIR = $(HOME)/.config
+FONTDIR = $(HOME)/.local/share/fonts/
+
+BASHPROFILE = $(HOME)/.bash_profile
+BASHRC = $(HOME)/.bashrc
+GITCONFIG = $(HOME)/.gitconfig
+ZCACHE = $(HOME)/.cache/zsh/history
+ZPROFILE = $(HOME)/.zprofile
+ZSHRC = $(HOME)/.zshrc
+
+INSTALL_TARGETS = dmenu-install dwm-install font1-install font2-install slstatus-install st-install
+DIRECTORIES = $(BINDIR) $(CONFDIR) $(FONTDIR)
+
+COPY = cp -r
+LINK = ln -sf
+
+all: config $(DIRECTORIES) scripts
+
+full: all desktop
+
+desktop: $(INSTALL_TARGETS)
+
+$(BINDIR) $(CONFDIR) $(FONTDIR):
+ mkdir -p $@
+
+config: $(CONFDIR)
+ mkdir -p $$(dirname $(ZCACHE))
+ mkdir -p $(CONFDIR)/sites
+ touch $(ZCACHE)
+ $(COPY) config/bash/bashrc $(BASHRC)
+ $(COPY) config/dunst $(CONFDIR)
+ $(COPY) config/lf $(CONFDIR)
+ $(COPY) config/mimeapps.list $(CONFDIR)
+ $(COPY) config/mpv $(CONFDIR)
+ $(COPY) config/nsxiv $(CONFDIR)
+ $(COPY) config/nvim $(CONFDIR)
+ $(COPY) config/picom $(CONFDIR)
+ $(COPY) config/qutebrowser $(CONFDIR)
+ $(COPY) config/shell $(CONFDIR)
+ $(COPY) config/sites/bookmarks.txt $(CONFDIR)/sites
+ $(COPY) config/sxiv $(CONFDIR)
+ $(COPY) config/vim $(CONFDIR)
+ $(COPY) config/wallpapers $(CONFDIR)
+ $(COPY) config/x11 $(CONFDIR)
+ $(COPY) config/zathura $(CONFDIR)
+ $(COPY) config/zsh/zshrc $(ZSHRC)
+ $(LINK) $(CONFDIR)/shell/profile $(BASHPROFILE)
+ $(LINK) $(CONFDIR)/shell/profile $(ZPROFILE)
git:
- $(COPY) config/git/gitconfig $(GITCONFIG)
-
-scripts:
- mkdir -p $(BINDIR)
- $(COPY) scripts/* $(BINDIR)
+ sed '/# signingkey = <to be set manually>/d' config/git/gitconfig > $(GITCONFIG)
+ @echo "#####################################################################"
+ @echo "Warning: Git commit/tag signing is enabled but signingKey is not set." >&2
+ @echo "#####################################################################"
+ @echo "Configure it manually using:" >&2
+ @echo " gpg --list-secret-keys --keyid-format=long" >&2
+ @echo " git config --global user.signingkey <YOUR_KEY_ID>" >&2
+
+scripts: $(BINDIR)
+ mkdir -p $(BINDIR)
+ $(COPY) scripts/* $(BINDIR)
server:
- $(COPY) config/bash/bashrc $(BASHRC)
- $(COPY) config/zsh/zshrc $(ZSHRC)
- $(COPY) config/lf $(CONFDIR)
- $(COPY) config/shell $(CONFDIR)
- $(COPY) config/vim $(CONFDIR)
+ $(COPY) config/bash/bashrc $(BASHRC)
+ $(COPY) config/lf $(CONFDIR)
+ $(COPY) config/shell $(CONFDIR)
+ $(COPY) config/vim $(CONFDIR)
+ $(COPY) config/zsh/zshrc $(ZSHRC)
+ $(COPY) scripts/noc
arch-linux:
sudo $(COPY) distros/arch-linux/pacman.conf /etc
-directory:
- mkdir -p $(CONFDIR) \
- $(MUSICDIR) \
- $(PROJDIR) \
- $(BOOKDIR) \
- $(TESTPROJDIR) \
- $(BINDIR)
+sync: $(ARCHIVE)
-$(DWM).tar.gz $(ST).tar.gz $(DMENU).tar.gz $(SLSTATUS).tar.gz: clean
+$(ARCHIVE):
curl -LO https://farajli.net/archive/$@
-$(DWM): $(DWM).tar.gz
-$(ST): $(ST).tar.gz
-$(DMENU): $(DMENU).tar.gz
-$(SLSTATUS): $(SLSTATUS).tar.gz
+dmenu-install: $(DMENU).tar.gz $(BINDIR)
+dwm-install: $(DWM).tar.gz $(BINDIR)
+slstatus-install: $(SLSTATUS).tar.gz $(BINDIR)
+st-install: $(ST).tar.gz $(BINDIR)
+font1-install: $(FONT1).tar.gz $(FONTDIR)
+font2-install: $(FONT2).tar.gz $(FONTDIR)
+
+dmenu-install dwm-install slstatus-install st-install:
+ tar xf $<
+ PREFIX=~/.local make -C $$(basename $< .tar.gz) install
+
+font1-install font2-install:
+ tar xf $<
+ $(COPY) $$(basename $< .tar.gz) $(FONTDIR)
+ fc-cache
-$(DWM) $(ST) $(DMENU) $(SLSTATUS):
- tar -xf $<
- cd $@; PREFIX=~/.local make install
+check:
+ @./dep.sh
-check:
- @-./dep.sh
+fullcheck:
+ @./dep.sh --optional
dist: clean
mkdir -p slcf/
@@ -94,10 +119,8 @@ dist: clean
rm -rf slcf/
clean:
- rm -rf slcf/ slcf.tar.gz \
- $(DWM) $(DWM).tar.gz \
- $(ST) $(ST).tar.gz \
- $(DMENU) $(DMENU).tar.gz \
- $(SLSTATUS) $(SLSTATUS).tar.gz
+ rm -rf slcf/ slcf.tar.gz $(ARCHIVE) $(FONTS) $(SOFTWARE)
-.PHONY: all config desktop scripts server arch-linux directory full check
+.PHONY: all arch-linux check clean config desktop directory dist \
+ fonts full fullcheck git scripts server sync \
+ $(INSTALL_TARGETS)
diff --git a/config/bash/bashrc b/config/bash/bashrc
index ca2435d..9f12e54 100644
--- a/config/bash/bashrc
+++ b/config/bash/bashrc
@@ -1,18 +1,43 @@
-# Minimal bash config for servers
+# Minimal bashrc meant for servers
set -o vi
-stty -ixon # Disable ctrl-s and ctrl-q for freezing prompt
-shopt -s autocd # automatically cd into typed directory
+# `set show-mode-in-prompt on` is not set,
+# indicating vi mode in bash is too slow
-alias vi=vim
-alias vi=nvim
+# Ctrl-l is disabled in vi mode, bind it manually
+bind -m vi-command '"\C-l": clear-screen'
+bind -m vi-insert '"\C-l": clear-screen'
-PS1='\e[01;31m$(code=${?##0};echo ${code:+[${code}]" "})\e[00m\u@\H \w % '
+stty -ixon # Disable ctrl-s and ctrl-q for freezing prompt
+shopt -s autocd # Automatically cd into typed directory
+
+PS1='\[\e[01;31m\]$(code=$?; [ "$code" -ne 0 ] && echo "[${code}] ")\[\e[00m\]\[\e[01;34m\]\u\[\e[00m\]@\H \w % '
+
+# Source bash completion
+for bc in /etc/bash_completion /usr/share/bash-completion/bash_completion; do
+ [ -f "$bc" ] && . "$bc"
+done
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ];then
source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
+else
+ # Fallback aliases where aliasrc isn't present (e.g., on servers)
+ alias \
+ claer="clear -x" \
+ clear="clear -x" \
+ clera="clear -x" \
+ lf="lfcd" \
+ vi="nvim" \
+ vi="vim"
+
fi
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/functionrc" ];then
source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/functionrc"
+else
+ lfcd () {
+ cd "$(command lf -print-last-dir "$@")"
+ }
fi
+
+bind '"\C-o": "\C-ulfcd\n"'
diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc
new file mode 100644
index 0000000..81dba80
--- /dev/null
+++ b/config/dunst/dunstrc
@@ -0,0 +1,27 @@
+[global]
+font = "Liberation Mono 12"
+frame_width = 1
+gap_size = 8
+gaps = true
+offset = 12
+origin = bottom-right
+padding = 12
+separator_color = "auto"
+
+[urgency_low]
+frame_color = "#434C5E" # Polar Night (dim)
+foreground = "#D8DEE9" # Frost white (soft text)
+background = "#2E3440" # Polar Night (dark bg)
+timeout = 5
+
+[urgency_normal]
+frame_color = "#81A1C1" # Frost Blue (accent)
+foreground = "#E5E9F0" # Arctic White (text)
+background = "#3B4252" # Polar Night (slightly lighter bg)
+timeout = 10
+
+[urgency_critical]
+frame_color = "#BF616A" # Aurora Red (error)
+foreground = "#ECEFF4" # Bright Frost (text)
+background = "#3B4252"
+timeout = 0
diff --git a/config/git/gitconfig b/config/git/gitconfig
index 976d768..bf61c21 100644
--- a/config/git/gitconfig
+++ b/config/git/gitconfig
@@ -1,9 +1,29 @@
[init]
defaultBranch = master
+
[pager]
branch = false
+
[alias]
- pushall = !git remote | xargs -L1 git push --all
+ a = add
+ br = branch
+ ci = commit
+ co = checkout
+ df = diff
+ ds = diff --staged
+ st = status
+ pushall = "!for r in $(git remote); do git push --all \"$r\"; done"
+
[user]
email = suleyman@farajli.net
name = Suleyman Farajli
+ # signingkey = <to be set manually>
+
+[commit]
+ gpgSign = true
+
+[tag]
+ gpgSign = true
+
+[gpg]
+ format = openpgp
diff --git a/config/lf/lfrc b/config/lf/lfrc
index 1b50065..40b6272 100644
--- a/config/lf/lfrc
+++ b/config/lf/lfrc
@@ -1,51 +1,48 @@
-# Suleyman's gruvbox themed lf config at "https://git.farajli.net/slcf.git"
-
-# Due to the facts that ueberzug is no longer maintained and adds extra \
-# complexity it is not included in the config
+# Due to the fact that ueberzug is no longer maintained and
+# adds extra complexity, it is not included in the configuration."
# Options
set incsearch
-set scrolloff 4 #smooth scrolling
+set scrolloff 4 # Smooth scrolling
-# Key-maps
+# Bindings
map <enter> shell
map m push $mkdir<space>
map t push $touch<space>
map D trash
map <c-f> $lf -remote "send $id select \"$(fzf --reverse)\""
-map x $$f # execute current file (must be executable)
+map x $$f # Execute current file (must be executable)
map zb :{{ set sortby natural; set info size; set preview; set ratios 5:2; }}
map zz :{{ set preview; set ratios 1:2:3; }}
-# Directory change
-map <c-h> cd ~
+# Directory change keybinds (some overwrite default ones)
+# <c-h> and <c-k> might fail on some terminal emulators
+map <c-h> cd ~/
map <c-p> cd ~/proj
map <c-t> cd ~/tproj
-map <c-c> cd ~/.config
-map <c-r> cd /tmp
-map <c-u> cd /usr/local/bin
-map <c-m> cd ~/music
-map <c-b> cd ~/books
-
-# Colors
-set cursoractivefmt "\033[0;1;7m" #white
-# set cursoractivefmt "\033[32;1;7m" #yellowish green
-# set cursoractivefmt "\033[33;1;7m" #orange
-# set cursoractivefmt "\033[36;1;7m" #green
+map <c-k> cd /tmp
+map <c-w> cd ~/work
+# Theme
+set cursoractivefmt "\033[0;1;7m"
set cursorparentfmt "\033[0;1;7m"
set tagfmt "\033[32;1;7m"
set rulerfmt "\033[32;1;7m"
set promptfmt "\033[48;1;234m %w/%f"
-#FIXME: Doesn't overwrite some files
cmd trash ${{
- mkdir -p ~/.trash
- if [ -z "$fs" ]; then
- mv "$f" ~/.trash
- else
- IFS="$(printf '\n\t')"; mv $fs ~/.trash
- fi
+ set -f
+ mkdir -p ~/.trash
+ for entry in $fx; do
+ trash_path=~/.trash/$(basename -- "${entry}")
+ if [ -e "${trash_path}" ]; then
+ printf '%s exists\n' "${trash_path}" >&2
+ trash_path="${trash_path}_$(date +%s)_$RANDOM"
+ printf 'moving to %s\n' "${trash_path}" >&2
+ fi
+
+ mv -- "${entry}" "${trash_path}"
+ done
}}
diff --git a/config/mimeapps.list b/config/mimeapps.list
index cab0678..976b369 100644
--- a/config/mimeapps.list
+++ b/config/mimeapps.list
@@ -1,17 +1,36 @@
[Default Applications]
application/pdf=org.pwmt.zathura.desktop
-[Default Applications]
-image/jpeg=sxiv.desktop
-image/png=sxiv.desktop
-image/jpg=sxiv.desktop
-
-[Default Applications]
-text/plain=nvim.desktop
+image/jpeg=nsxiv.desktop;sxiv.desktop;
+image/png=nsxiv.desktop;sxiv.desktop;
+image/gif=nsxiv.desktop;sxiv.desktop;
+image/svg+xml=nsxiv.desktop;sxiv.desktop;
+image/jxl=nsxiv.desktop;sxiv.desktop;
+image/webp=nsxiv.desktop;sxiv.desktop;
+image/tiff=nsxiv.desktop;sxiv.desktop;
+image/heif=nsxiv.desktop;sxiv.desktop;
+image/heic=nsxiv.desktop;sxiv.desktop;
+image/avif=nsxiv.desktop;sxiv.desktop;
+image/x-icon=nsxiv.desktop;sxiv.desktop;
+image/bmp=nsxiv.desktop;sxiv.desktop;
+image/x-portable-anymap=nsxiv.desktop;sxiv.desktop;
+image/x-portable-bitmap=nsxiv.desktop;sxiv.desktop;
+image/x-portable-pixmap=nsxiv.desktop;sxiv.desktop;
+image/x-tga=nsxiv.desktop;sxiv.desktop;
+image/qoi=nsxiv.desktop;sxiv.desktop;
+image/ff=nsxiv.desktop;sxiv.desktop;
-[Default Applications]
-text/html=org.qutebrowser.qutebrowser.desktop
+text/plain=nvim.desktop;vim.desktop;
-[Default Application]
-x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop
-x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop
+video/mp4=mpv.desktop;
+video/webm=mpv.desktop;
+video/x-matroska=mpv.desktop;
+video/x-msvideo=mpv.desktop;
+video/ogg=mpv.desktop;
+video/mpeg=mpv.desktop;
+video/3gpp=mpv.desktop;
+video/quicktime=mpv.desktop;
+video/x-flv=mpv.desktop;
+video/x-ms-wmv=mpv.desktop;
+video/x-ms-asf=mpv.desktop;
+video/x-ms-dvr=mpv.desktop;
diff --git a/config/mpv/input.conf b/config/mpv/input.conf
index 192a14c..8c32fe8 100644
--- a/config/mpv/input.conf
+++ b/config/mpv/input.conf
@@ -1,7 +1,8 @@
-l seek 5
-h seek -5
, seek -60
. seek 60
+h seek -5
+l seek 5
+
S cycle sub
-L ab-loop
-J cycle-values loop-file "inf" "no"
+Ctrl+l ab-loop
+L cycle-values loop-file "inf" "no"
diff --git a/config/nvim/init.lua b/config/nvim/init.lua
index df90607..9e0d4be 100644
--- a/config/nvim/init.lua
+++ b/config/nvim/init.lua
@@ -1,15 +1,20 @@
-require("plugins")
-
-vim.cmd("let mapleader = ' '")
-vim.cmd("set relativenumber")
-vim.cmd("set number")
-vim.cmd("colorscheme duskfox")
-vim.cmd("set nowrap")
-vim.cmd("set clipboard=unnamedplus") -- Use system clipboard
-vim.cmd("set background=dark")
-vim.cmd("set shm+=I") -- Disable intro message
-vim.cmd("autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o") -- Disable auto-comment
--- vim.cmd("set list") -- Show spaces tabs etc.
+local ok, err = pcall(require, "plugins")
+if ok then
+ -- Plugin settings
+ vim.keymap.set('n', '<leader>e', '<cmd>Neotree toggle right<CR>', { noremap = true, silent = true })
+ vim.cmd.colorscheme("duskfox")
+else
+ vim.notify("Error loading plugins: " .. err, vim.log.levels.WARN)
+end
+
+vim.g.mapleader = ' '
+vim.opt.background = "dark"
+vim.opt.clipboard = "unnamedplus" -- Use system clipboard
+-- vim.opt.list = true -- Show spaces, tabs, etc.
+vim.opt.number = true
+vim.opt.relativenumber = true
+vim.opt.shortmess:append("I") -- Disable intro message
+vim.opt.wrap = false
vim.opt.fillchars = {
vert = "|",
@@ -22,16 +27,59 @@ vim.opt.fillchars = {
foldclose = ">",
}
-vim.keymap.set('n', '<leader><leader>', ':w!<CR>')
-vim.keymap.set('n', '<leader>q', ':wq!<CR>')
-vim.keymap.set('n', '<C-t>', ':tabnew<CR>')
-vim.keymap.set('n', 'J', ':tabn<CR>')
-vim.keymap.set('n', 'K', ':tabp<CR>')
-vim.keymap.set('n', '<C-n>', ':vsplit<CR>')
-vim.keymap.set('n', 'H', ':wincmd h<CR>')
-vim.keymap.set('n', 'L', ':wincmd l<CR>')
-vim.keymap.set('n', '<leader>e', ':Neotree toggle right<CR>')
-vim.keymap.set('n', '<leader>o', '<C-W>w')
-vim.keymap.set('i', '<C-h>', '<Left>')
-vim.keymap.set('i', '<C-l>', '<Right>')
-vim.keymap.set('i', '<C-space>', '<ESC>')
+-- Remove trailing whitespace on all lines before saving, excluding markdown files
+vim.api.nvim_create_autocmd("BufWritePre", {
+ pattern = "*",
+ callback = function()
+ if vim.bo.filetype == "markdown" then
+ return
+ end
+ vim.cmd([[%s/\s\+$//e]])
+ end,
+})
+
+-- Disable auto-comment
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "*",
+ callback = function()
+ vim.opt_local.formatoptions:remove({ "c", "r", "o" })
+ end,
+})
+
+-- Enable spellcheck for certain file types
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = {
+ "gitcommit", "markdown", "text", "rst",
+ "asciidoc", "org", "norg", "latex", "tex", "mail", "pandoc"
+ },
+ callback = function()
+ vim.opt_local.spell = true
+ end,
+})
+
+-- NOTE: On some terminal emulators, the keybinds
+-- <C-j> and <C-k> don't work either in normal or insert mode.
+
+-- Tabs
+vim.keymap.set('n', '<C-t>', '<cmd>tabnew<CR>' , { noremap = true, silent = true })
+vim.keymap.set('n', 'J' , '<cmd>tabn<CR>' , { noremap = true, silent = true })
+vim.keymap.set('n', 'K' , '<cmd>tabp<CR>' , { noremap = true, silent = true })
+
+-- Windows
+vim.keymap.set('n', '<C-Down>' , '<cmd>split<CR>' , { noremap = true, silent = true })
+vim.keymap.set('n', '<C-Right>', '<cmd>vsplit<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<C-h>' , '<C-w>h' , { noremap = true })
+vim.keymap.set('n', '<C-j>' , '<C-w>j' , { noremap = true })
+vim.keymap.set('n', '<C-k>' , '<C-w>k' , { noremap = true })
+vim.keymap.set('n', '<C-l>' , '<C-w>l' , { noremap = true })
+
+-- Imitate normal mode in insert mode
+vim.keymap.set('i', '<C-h>' , '<Left>' , { noremap = true })
+vim.keymap.set('i', '<C-l>' , '<Right>', { noremap = true })
+vim.keymap.set('i', '<C-j>' , '<Down>' , { noremap = true })
+vim.keymap.set('i', '<C-k>' , '<Up>' , { noremap = true })
+vim.keymap.set('i', '<C-space>', '<ESC>' , { noremap = true })
+
+-- Other
+vim.keymap.set('n', '<leader><leader>', '<cmd>w!<CR>' , { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>q' , '<cmd>wq!<CR>', { noremap = true, silent = true })
diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua
index 911a4d7..7b00b1c 100644
--- a/config/nvim/lua/plugins.lua
+++ b/config/nvim/lua/plugins.lua
@@ -33,18 +33,18 @@ require("lazy").setup({
})
require("Comment").setup{
- padding = true, -- Add a space b/w comment and the line
- sticky = true, -- Whether the cursor should stay at its position
- ignore = nil, -- Lines to be ignored while (un)comment
+ padding = true, -- Add a space b/w comment and the line
+ sticky = true, -- Whether the cursor should stay at its position
+ ignore = nil, -- Lines to be ignored while (un)comment
-- LHS of toggle mappings in NORMAL mode
toggler = {
- line = 'cc', --Line-comment toggle keymap
- block = 'cb', -- Block-comment toggle keymap
+ line = 'cc', --Line-comment toggle keymap
+ block = 'cb', -- Block-comment toggle keymap
},
-- LHS of operator-pending mappings in NORMAL and VISUAL mode
opleader = {
- line = 'cc', --Line-comment keymap
- block = 'cb', --Block-comment keymap
+ line = 'cc', --Line-comment keymap
+ block = 'cb', --Block-comment keymap
},
}
@@ -72,25 +72,21 @@ require("neo-tree").setup({
}
}
},
- --Indent Markers
default_component_configs = {
indent = {
+ --Indent Markers
with_markers = true,
indent_marker = "│",
last_indent_marker = "└",
indent_size = 2,
- },
- },
- --Expanders
- default_component_configs = {
- indent = {
+ -- Expanders
with_expanders = false, --Not active
expander_collapsed = ">",
expander_expanded = "",
expander_highlight = "NeoTreeExpander",
+
},
},
-
})
require("nvim-autopairs").setup({
diff --git a/config/picom/picom.conf b/config/picom/picom.conf
index 58188aa..a5583a0 100644
--- a/config/picom/picom.conf
+++ b/config/picom/picom.conf
@@ -1,16 +1,13 @@
-# Minimal picom config
-
backend = "glx";
shadow = false;
fading = false;
-
vsync = true;
- wintypes:
- {
- tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
- dock = { shadow = false; clip-shadow-above = true; }
- dnd = { shadow = false; }
- popup_menu = { opacity = 0.8; }
- dropdown_menu = { opacity = 0.8; }
- };
+wintypes:
+{
+ tooltip = { shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
+ dock = { shadow = false; clip-shadow-above = true; };
+ dnd = { shadow = false; };
+ popup_menu = { opacity = 0.8; };
+ dropdown_menu = { opacity = 0.8; };
+};
diff --git a/config/qutebrowser/bookmarks/bookmarks.txt b/config/qutebrowser/bookmarks/bookmarks.txt
new file mode 120000
index 0000000..526f096
--- /dev/null
+++ b/config/qutebrowser/bookmarks/bookmarks.txt
@@ -0,0 +1 @@
+../../sites/bookmarks.txt \ No newline at end of file
diff --git a/config/qutebrowser/bookmarks/urls b/config/qutebrowser/bookmarks/urls
deleted file mode 100755
index 0711a66..0000000
--- a/config/qutebrowser/bookmarks/urls
+++ /dev/null
@@ -1,2 +0,0 @@
-yewtu.be
-onion.tube
diff --git a/config/qutebrowser/config.py b/config/qutebrowser/config.py
index faaf7f2..da80685 100755
--- a/config/qutebrowser/config.py
+++ b/config/qutebrowser/config.py
@@ -1,4 +1,12 @@
-from gruvbox import *
+from current_theme import *
+
+c.tabs.show = 'multiple'
+
+c.statusbar.show = 'in-mode'
+
+c.url.searchengines = { 'DEFAULT': 'https://google.com/search?hl=en&q={}' }
+
+c.url.start_pages = '~/.config/qutebrowser/startpage/index.html'
# Text color of the completion widget. May be a single color to use for
# all columns or a list of three colors, one for each column.
diff --git a/config/qutebrowser/current_theme.py b/config/qutebrowser/current_theme.py
new file mode 120000
index 0000000..f9e5462
--- /dev/null
+++ b/config/qutebrowser/current_theme.py
@@ -0,0 +1 @@
+themes/nord.py \ No newline at end of file
diff --git a/config/qutebrowser/startpage/index.html b/config/qutebrowser/startpage/index.html
index b848797..16eec12 100644..100755
--- a/config/qutebrowser/startpage/index.html
+++ b/config/qutebrowser/startpage/index.html
@@ -3,14 +3,14 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <link rel='stylesheet' type='text/css' href="style.css">
<title>startpage</title>
<style>
body {
- height: 97.5vh;
+ height: 100vh;
display: flex;
align-items: center;
- font: 12px monospace;
+ font-family: 'Roboto Mono', monospace;
+ font-size: 11px;
justify-content: center;
background: #212121;
color: #fff;
diff --git a/config/qutebrowser/themes/ayu_light.py b/config/qutebrowser/themes/ayu_light.py
new file mode 100644
index 0000000..afb20e9
--- /dev/null
+++ b/config/qutebrowser/themes/ayu_light.py
@@ -0,0 +1,16 @@
+base00 = "#fafafa"
+base01 = "#f0f0f0"
+base02 = "#dedede"
+base03 = "#b3b1ad"
+base04 = "#9e9e9e"
+base05 = "#5c6773"
+base06 = "#6c7680"
+base07 = "#14191f"
+base08 = "#ff3333"
+base09 = "#f6973f"
+base0A = "#f2ae49"
+base0B = "#86b300"
+base0C = "#4cbf99"
+base0D = "#36a3d9"
+base0E = "#a37acc"
+base0F = "#d33f3f"
diff --git a/config/qutebrowser/gruvbox.py b/config/qutebrowser/themes/gruvbox.py
index d06e346..d06e346 100644
--- a/config/qutebrowser/gruvbox.py
+++ b/config/qutebrowser/themes/gruvbox.py
diff --git a/config/qutebrowser/themes/nord.py b/config/qutebrowser/themes/nord.py
new file mode 100644
index 0000000..3e4f13d
--- /dev/null
+++ b/config/qutebrowser/themes/nord.py
@@ -0,0 +1,16 @@
+base00 = "#2e3440"
+base01 = "#3b4252"
+base02 = "#434c5e"
+base03 = "#4c566a"
+base04 = "#d8dee9"
+base05 = "#e5e9f0"
+base06 = "#eceff4"
+base07 = "#8fbcbb"
+base08 = "#bf616a"
+base09 = "#d08770"
+base0A = "#ebcb8b"
+base0B = "#a3be8c"
+base0C = "#88c0d0"
+base0D = "#81a1c1"
+base0E = "#b48ead"
+base0F = "#5e81ac"
diff --git a/config/shell/aliasrc b/config/shell/aliasrc
index a95f6f1..2de3313 100644
--- a/config/shell/aliasrc
+++ b/config/shell/aliasrc
@@ -1,57 +1,67 @@
#!/bin/sh
-[ -f $XINITRC ] && alias startx="startx $XINITRC"
+[ -f "${XINITRC}" ] && alias startx='startx ${XINITRC}'
[ -x "$(command -v vim)" ] && alias vi="vim"
[ -x "$(command -v nvim)" ] && alias vi="nvim"
[ -x "$(command -v neomutt)" ] && alias mutt="neomutt"
-alias ls="ls --color=auto --group-directories-first -p"
-alias ip="ip -color=auto"
-alias diff="diff --color=auto"
-alias grep="grep --color=auto"
-alias ping="ping -c 2"
-alias clear="clear -x"
-alias open="xdg-open"
-alias lf="lfcd"
-alias py="python3"
-alias makeb="make -C ../"
-alias fren="trans fr:en"
-alias enfr="trans en:fr"
-alias clip="xclip -selection clipboard"
-alias push="git remote show | xargs -I remote git push remote master" # push master branch of all remotes
+if [ -x "$(command -v nsxiv)" ] && ! [ -x "$(command -v sxiv)" ]; then
+ alias sxiv="nsxiv"
+fi
+
+# TODO: Deal with the flags that are not supported on BSD
+# Older versions of ip doesn't support -color flg, so don't use it
+alias \
+ clear="clear -x" \
+ clip="xclip -selection clipboard" \
+ diff="diff --color=auto" \
+ enfr="trans en:fr" \
+ fren="trans fr:en" \
+ g="git" \
+ grep="grep --color=auto" \
+ lf="lfcd" \
+ ls="ls --color=auto --group-directories-first -p" \
+ makeb="make -C ../" \
+ open="xdg-open" \
+ ping="ping -c 2" \
+ py="python3" \
+ push="git remote show | xargs -I remote git push remote master" # push master branch of all remotes
# Occasionally mistyped commands
-alias suod="sudo"
-alias maek="make"
-alias meak="make"
-alias sl="ls --color=auto --group-directories-first -p"
-alias claer="clear -x"
-alias clera="clear -x"
-alias gti="git"
+alias \
+ claer="clear -x" \
+ clera="clear -x" \
+ gti="git" \
+ maek="make" \
+ meak="make" \
+ suod="sudo" \
+ sl="ls --color=auto --group-directories-first -p"
# Directory change aliases
-alias gp="cd ~/proj"
-alias gt="cd ~/tproj"
-alias gc="cd ~/.config"
-alias gu="cd /usr/local/bin"
+alias \
+ gk="cd /tmp" \
+ gp="cd ~/proj" \
+ gt="cd ~/tproj" \
+ gw="cd ~/work"
# Init system aliases
if [ -x "$(command -v systemctl)" ]; then
- alias systemctl="sudo systemctl"
- alias net="sudo systemctl start NetworkManager"
- alias is="systemctl stop NetworkManager"
- alias blue="sudo systemctl start bluetooth"
- alias red="sudo systemctl stop bluetooth"
-
+ alias \
+ blue="sudo systemctl start bluetooth" \
+ net="sudo systemctl start NetworkManager" \
+ netstop="systemctl stop NetworkManager" \
+ red="sudo systemctl stop bluetooth" \
+ systemctl="sudo systemctl"
elif [ -x "$(command -v rc-service)" ]; then
- alias rc-service="sudo rc-service"
- alias net="sudo rc-service NetworkManager start"
- alias is="sudo rc-service NetworkManager stop"
- alias blue="sudo rc-service bluetooth start"
- alias red="sudo rc-service bluetooth stop"
-
+ alias \
+ blue="sudo rc-service bluetooth start" \
+ net="sudo rc-service NetworkManager start" \
+ netstop="sudo rc-service NetworkManager stop" \
+ rc-service="sudo rc-service" \
+ red="sudo rc-service bluetooth stop"
fi
# Arch linux specific aliases
-alias pacman="sudo pacman --color=always"
-alias arch-wiki="cd /usr/share/doc/arch-wiki/html/en/"
+alias \
+ pacman="sudo pacman --color=always" \
+ arch-wiki="cd /usr/share/doc/arch-wiki/html/en/"
diff --git a/config/shell/profile b/config/shell/profile
index 0504af9..ef518c4 100644
--- a/config/shell/profile
+++ b/config/shell/profile
@@ -1,21 +1,26 @@
# Directories and Files
-export XDG_BIN_DIR="$HOME/.local/bin"
-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"
-export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
-export ZSHRC="$XDG_CONFIG_HOME/zsh/zshrc"
+export XDG_BIN_DIR="${HOME}/.local/bin"
+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"
+
+export BASHRC="${HOME}/.bashrc"
+export ZSHRC="${HOME}/.zshrc"
+export XINITRC="${XDG_CONFIG_HOME}/x11/xinitrc"
mkdir -p "${XDG_BIN_DIR}"
-PATH="${XDG_BIN_DIR}":$PATH
+export PATH="${XDG_BIN_DIR}:${PATH}"
# Environment variables
[ -x "$(command -v vim)" ] && export EDITOR="vim"
[ -x "$(command -v nvim)" ] && export EDITOR="nvim"
[ -x "$(command -v alacritty)" ] && export TERMINAL="alacritty"
[ -x "$(command -v st)" ] && export TERMINAL="st"
-[ -x "$(command -v qutebrowser)" ] && export BROWSER="qutebrowser"
[ -x "$(command -v firefox)" ] && export BROWSER="firefox"
+[ -x "$(command -v qutebrowser)" ] && export BROWSER="qutebrowser"
+
+export MAKEFLAGS="-j8" # Reduce compile times
-export MAKEFLAGS="-j8" # Reduce compile times
+# Source bashrc for tty
+[ -n "${BASH_VERSION}" ] && [ -f "${BASHRC}" ] && . "${BASHRC}"
diff --git a/config/sxiv/exec/key-handler b/config/sxiv/exec/key-handler
index 50202fc..e90cbb1 100755
--- a/config/sxiv/exec/key-handler
+++ b/config/sxiv/exec/key-handler
@@ -1,76 +1,91 @@
#!/bin/sh
# For theme to be applied ~/.Xresource file must be present
-picdir="${HOME}/pics"
+set -f
while read -r file; do
case "$1" in
"m")
+ # FIXME: Providing directory selections to dmenu limits choices;
+ # e.g., if `/home/user/pics` is given, `/` can't be selected.
+
if [ -z "${destdir}" ]; then
- destdir="$(echo "${picdir}" \
- | dmenu -p "Move directory: " \
+ destdir="$(printf '' \
+ | dmenu -c -bw 2 -p "Copy directory: " \
| sed "s|~|${HOME}|g")"
fi
+ # Skip non-directories to prevent overwriting files during loop processing
if [ ! -d "${destdir}" ]; then
- nsend -s "Not a directory"
+ nsend -s "Failed to move" "Not a directory: ${destdir}"
exit 1
fi
- if mv "${file}" "${destdir}"; then
- nsend -s "${file} moved to ${destdir}" &
+ if output=$(mv -- "${file}" "${destdir}" 2>&1); then
+ nsend -s "Moved" "${file} to ${destdir}" &
else
- nsend -s "Failed to move ${file} to ${destdir}"
+ nsend -s "Failed to Move" "$output" &
fi
;;
"c")
-
- if [ -z "${destdir}" ];then
- destdir="$(echo "${picdir}" \
- | dmenu -p "Copy directory: " \
+ if [ -z "${destdir}" ]; then
+ destdir="$(printf '' \
+ | dmenu -c -bw 2 -p "Copy directory: " \
| sed "s|~|${HOME}|g")"
fi
if [ ! -d "${destdir}" ]; then
- nsend -s "Not a directory" &
+ nsend -s "Failed to copy" "Not a directory: ${destdir}"
exit 1
fi
- if cp "${file}" "${destdir}"; then
- nsend -s "${file} copied to ${destdir}" &
+ if output=$(cp -- "${file}" "${destdir}" 2>&1); then
+ nsend -s "Copied" "${file} to ${destdir}" &
else
- nsend -s "Failed to copy ${file} to ${destdir}" &
+ nsend -s "Failed to copy" "$output" &
fi
;;
- "w")
- swall -d "$file" && nsend -s "Wallpaper ${file}" \
- || nsend -s "Couldn't set wallpaper"
- ;;
"d")
- mkdir -p ~/.trash
+ mkdir -p "${HOME}/.trash"
+ trash_path="$HOME/.trash/$(basename -- "${file}")"
+ if [ -e "${trash_path}" ]; then
+ rand=$(od -An -N2 -tu2 /dev/urandom | tr -d ' ')
+ trash_path="${trash_path}_$(date +%Y%m%d%H%M%S)_${rand}"
+ fi
- if mv "$file" ~/.trash; then
- nsend -s "$file is moved to ~/.trash" &
+ if output=$(mv -- "${file}" "${trash_path}" 2>&1); then
+ nsend -s "Deleted" "${file} to ${trash_path}" &
else
- nsend -s "Failed to move ${file} to ~/.trash" &
+ nsend -s "Failed to delete" "$output" &
fi
+
;;
- "r") convert -rotate 90 "$file" "$file" ;;
- "R") convert -rotate -90 "$file" "$file" ;;
- "f") convert -flop "$file" "$file" ;;
"y")
if printf "%s" "${file}" | xclip -selection clipboard; then
- nsend -s "Copied to clipboard" &
+ nsend -s "Relative path copied to clipboard." &
else
- nsend -s "Failed to copy to clipboard" &
+ nsend -s "Failed to copy relative path to clipboard." &
fi
;;
"Y")
- if readlink -f "$file" | tr -d '\n' | xclip -selection clipboard; then
- nsend -s "Copied to clipboard" &
+ if readlink -f "${file}" | tr -d '\n' | xclip -selection clipboard; then
+ nsend -s "Full path copied to clipboard." &
+ else
+ nsend -s "Failed to copy full path to clipboard." &
+ fi
+ ;;
+ "w")
+
+ if output=$(swall -d "${file}" 2>&1); then
+ nsend -s "Set as wallpaper" "${file}" &
else
- nsend -s "Failed to copy to clipboard" &
+ nsend -s "Failed to set as wallpaper" "$output" &
fi
;;
- esac
+ # No need for nsend since whether the photo has rotated or not is obvious
+ # FIXME: convert is depricated use magick instead
+ "r") convert -rotate 90 "${file}" "${file}" ;;
+ "R") convert -rotate -90 "${file}" "${file}" ;;
+ "f") convert -flop "${file}" "${file}" ;;
+ esac
done
diff --git a/config/vim/vimrc b/config/vim/vimrc
index 7c66eef..1cbd86c 100644
--- a/config/vim/vimrc
+++ b/config/vim/vimrc
@@ -1,15 +1,16 @@
-" Suleyman's minimal vim config for servers
-" at https://git.farajli.net/slcf
-
let mapleader = " "
+set background=dark
+set clipboard=unnamedplus " Use system clipboard
+" set list " Show spaces, tabs, etc.
set number
-set scrolloff=5 " Smooth scroll
-set clipboard=unnamedplus " Use system clipboard
-set shortmess+=I " Deactivate intro text
-set fillchars=eob:\ " Remove "~" for empty lines (`eob:\` must end with a trailing space)
-:set nowrap " Disable wrapping
-autocmd BufwritePost * %s/\s\+$//e " Remove useless trailing spaces when saving
-autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o " Disable autocomments
+set relativenumber
+set shortmess+=I " Deactivate intro text
+set nowrap " Disable wrapping
+set fillchars=eob:\ " Remove "~" for empty lines (`eob:\` must end with a trailing space)
+
+autocmd BufwritePost * %s/\s\+$//e " Remove trailing spaces when saving
+" Disable autocomments
+autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
" Different cursor shapes for insert and normal modes
let &t_SI = "\e[6 q"
@@ -18,19 +19,26 @@ set ttimeout
set ttimeoutlen=1
set ttyfast
-" Normal mode maps
-map <leader><leader> :w!<CR>
-map <leader>q :wqa!<CR>
-map <C-t> :tabnew<CR>
-map <C-w> :tabclose!<CR>
-map J :tabn <CR>
-map K :tabp <CR>
+" Tabs
+nnoremap <silent> <C-t> :tabnew<CR>
+nnoremap <silent> J :tabn<CR>
+nnoremap <silent> K :tabp<CR>
-" Insert mode maps
+" Windows
+nnoremap <silent> <C-Down> :split<CR>
+nnoremap <silent> <C-Right> :vsplit<CR>
+nnoremap <C-h> <C-w>h
+nnoremap <C-j> <C-w>j
+nnoremap <C-k> <C-w>k
+nnoremap <C-l> <C-w>l
+
+" Imitate normal mode in insert mode
inoremap <C-h> <Left>
+inoremap <C-j> <Down>
+inoremap <C-k> <Up>
inoremap <C-l> <Right>
-inoremap <C-j> <C-o>gj
-inoremap <C-k> <C-o>gk
-inoremap <C-o> <C-o>o
+inoremap <C-Space> <Esc>
-set background=dark
+" Other
+nnoremap <silent> <leader><leader> :w!<CR>
+nnoremap <silent> <leader>q :wq!<CR>
diff --git a/config/wallpapers/ship.jpg b/config/wallpapers/ship.jpg
new file mode 100644
index 0000000..7d5f820
--- /dev/null
+++ b/config/wallpapers/ship.jpg
Binary files differ
diff --git a/config/x11/themes/catppuccin b/config/x11/themes/catppuccin
new file mode 100644
index 0000000..addc742
--- /dev/null
+++ b/config/x11/themes/catppuccin
@@ -0,0 +1,28 @@
+! Catppuccin Macchiato Palette (soft pastel/dark)
+
+*color0: #1e1e2e ! background dark purple-gray
+*color1: #f38ba8 ! pink (red)
+*color2: #a6e3a1 ! green
+*color3: #f9e2af ! yellow
+*color4: #89b4fa ! blue
+*color5: #f5c2e7 ! magenta
+*color6: #94e2d5 ! cyan
+*color7: #cdd6f4 ! light text
+
+*color8: #585b70 ! dark gray (bright black)
+*color9: #f38ba8 ! bright pink (red)
+*color10: #a6e3a1 ! bright green
+*color11: #f9e2af ! bright yellow
+*color12: #89b4fa ! bright blue
+*color13: #f5c2e7 ! bright magenta
+*color14: #94e2d5 ! bright cyan
+*color15: #f7faff ! bright white
+
+XTerm.vt100.background: #1e1e2e
+XTerm.vt100.foreground: #cdd6f4
+
+Sxiv.background: #1e1e2e
+Sxiv.foreground: #cdd6f4
+
+Nsxiv.window.background: #1e1e2e
+Nsxiv.window.foreground: #cdd6f4
diff --git a/config/x11/themes/light-nord b/config/x11/themes/light-nord
new file mode 100644
index 0000000..085b5d8
--- /dev/null
+++ b/config/x11/themes/light-nord
@@ -0,0 +1,28 @@
+! Light Nord Theme
+
+*color0: #d8dee9 ! nord4 - light background base
+*color1: #bf616a ! nord11 - red
+*color2: #a3be8c ! nord14 - green
+*color3: #ebcb8b ! nord13 - yellow
+*color4: #81a1c1 ! nord10 - blue
+*color5: #b48ead ! nord15 - magenta
+*color6: #88c0d0 ! nord8 - cyan
+*color7: #434c5e ! nord1 - dark gray (text)
+*color8: #e5e9f0 ! nord6 - bright background (lighter)
+*color9: #bf616a ! nord11 - bright red
+*color10: #a3be8c ! nord14 - bright green
+*color11: #ebcb8b ! nord13 - bright yellow
+*color12: #81a1c1 ! nord10 - bright blue
+*color13: #b48ead ! nord15 - bright magenta
+*color14: #8fbcbb ! nord7 - bright cyan
+*color15: #2e3440 ! nord0 - dark text for contrast
+
+! Background and foreground for terminal and apps
+XTerm.vt100.background: #d8dee9 ! light background
+XTerm.vt100.foreground: #434c5e ! dark text
+
+Sxiv.background: #d8dee9
+Sxiv.foreground: #434c5e
+
+Nsxiv.window.background: #d8dee9
+Nsxiv.window.foreground: #434c5e
diff --git a/config/x11/themes/material b/config/x11/themes/material
new file mode 100644
index 0000000..a159177
--- /dev/null
+++ b/config/x11/themes/material
@@ -0,0 +1,28 @@
+! Material Theme (default/dark variant)
+
+*color0: #263238 ! background dark blue-gray
+*color1: #e06c75 ! red (error)
+*color2: #98c379 ! green (success)
+*color3: #e5c07b ! yellow (warning)
+*color4: #61afef ! blue (info)
+*color5: #c678dd ! magenta (purple)
+*color6: #56b6c2 ! cyan
+*color7: #abb2bf ! light gray (foreground)
+
+*color8: #5c6370 ! dark gray (bright black)
+*color9: #e06c75 ! bright red
+*color10: #98c379 ! bright green
+*color11: #e5c07b ! bright yellow
+*color12: #61afef ! bright blue
+*color13: #c678dd ! bright magenta
+*color14: #56b6c2 ! bright cyan
+*color15: #ffffff ! white
+
+XTerm.vt100.background: #263238
+XTerm.vt100.foreground: #abb2bf
+
+Sxiv.background: #263238
+Sxiv.foreground: #abb2bf
+
+Nsxiv.window.background: #263238
+Nsxiv.window.foreground: #abb2bf
diff --git a/config/x11/themes/nord b/config/x11/themes/nord
new file mode 100644
index 0000000..b3b1fb9
--- /dev/null
+++ b/config/x11/themes/nord
@@ -0,0 +1,25 @@
+! nord theme colors
+*color0: #2e3440
+*color1: #bf616a
+*color2: #a3be8c
+*color3: #ebcb8b
+*color4: #81a1c1
+*color5: #b48ead
+*color6: #88c0d0
+*color7: #e5e9f0
+*color8: #4c566a
+*color9: #bf616a
+*color10: #a3be8c
+*color11: #ebcb8b
+*color12: #81a1c1
+*color13: #b48ead
+*color14: #8fbcbb
+*color15: #eceff4
+
+Sxiv.background: #2e3440
+Sxiv.foreground: #d8dee9
+Nsxiv.window.background: #2e3440
+Nsxiv.window.foreground: #d8dee9
+
+XTerm.vt100.background: #2e3440
+XTerm.vt100.foreground: #d8dee9
diff --git a/config/x11/themes/one-dark b/config/x11/themes/one-dark
new file mode 100644
index 0000000..99e2564
--- /dev/null
+++ b/config/x11/themes/one-dark
@@ -0,0 +1,27 @@
+! One Dark Theme (dark)
+
+*color0: #282c34 ! background
+*color1: #e06c75 ! red
+*color2: #98c379 ! green
+*color3: #e5c07b ! yellow
+*color4: #61afef ! blue
+*color5: #c678dd ! magenta
+*color6: #56b6c2 ! cyan
+*color7: #abb2bf ! light gray (foreground)
+*color8: #5c6370 ! dark gray
+*color9: #e06c75 ! bright red
+*color10: #98c379 ! bright green
+*color11: #e5c07b ! bright yellow
+*color12: #61afef ! bright blue
+*color13: #c678dd ! bright magenta
+*color14: #56b6c2 ! bright cyan
+*color15: #ffffff ! white
+
+XTerm.vt100.background: #282c34
+XTerm.vt100.foreground: #abb2bf
+
+Sxiv.background: #282c34
+Sxiv.foreground: #abb2bf
+
+Nsxiv.window.background: #282c34
+Nsxiv.window.foreground: #abb2bf
diff --git a/config/x11/themes/one-light b/config/x11/themes/one-light
new file mode 100644
index 0000000..dea790d
--- /dev/null
+++ b/config/x11/themes/one-light
@@ -0,0 +1,27 @@
+! One Light Theme (light)
+
+*color0: #fafafa ! background
+*color1: #e45649 ! red
+*color2: #50a14f ! green
+*color3: #c18401 ! yellow
+*color4: #0184bc ! blue
+*color5: #a626a4 ! magenta
+*color6: #0997b3 ! cyan
+*color7: #383a42 ! dark gray (foreground)
+*color8: #a0a1a7 ! light gray
+*color9: #e45649 ! bright red
+*color10: #50a14f ! bright green
+*color11: #c18401 ! bright yellow
+*color12: #0184bc ! bright blue
+*color13: #a626a4 ! bright magenta
+*color14: #0997b3 ! bright cyan
+*color15: #fafafa ! white
+
+XTerm.vt100.background: #fafafa
+XTerm.vt100.foreground: #383a42
+
+Sxiv.background: #fafafa
+Sxiv.foreground: #383a42
+
+Nsxiv.window.background: #fafafa
+Nsxiv.window.foreground: #383a42
diff --git a/config/x11/themes/solarized-dark b/config/x11/themes/solarized-dark
new file mode 100644
index 0000000..a76850a
--- /dev/null
+++ b/config/x11/themes/solarized-dark
@@ -0,0 +1,27 @@
+! Solarized Dark
+
+*color0: #073642
+*color1: #dc322f
+*color2: #859900
+*color3: #b58900
+*color4: #268bd2
+*color5: #d33682
+*color6: #2aa198
+*color7: #eee8d5
+*color8: #002b36
+*color9: #cb4b16
+*color10: #586e75
+*color11: #657b83
+*color12: #839496
+*color13: #6c71c4
+*color14: #93a1a1
+*color15: #fdf6e3
+
+XTerm.vt100.background: #002b36
+XTerm.vt100.foreground: #839496
+
+Sxiv.background: #002b36
+Sxiv.foreground: #839496
+
+Nsxiv.window.background: #002b36
+Nsxiv.window.foreground: #839496
diff --git a/config/x11/themes/solarized-light b/config/x11/themes/solarized-light
new file mode 100644
index 0000000..8a89223
--- /dev/null
+++ b/config/x11/themes/solarized-light
@@ -0,0 +1,27 @@
+! Solarized Light
+
+*color0: #eee8d5
+*color1: #dc322f
+*color2: #859900
+*color3: #b58900
+*color4: #268bd2
+*color5: #d33682
+*color6: #2aa198
+*color7: #073642
+*color8: #fdf6e3
+*color9: #cb4b16
+*color10: #586e75
+*color11: #657b83
+*color12: #839496
+*color13: #6c71c4
+*color14: #93a1a1
+*color15: #002b36
+
+XTerm.vt100.background: #fdf6e3
+XTerm.vt100.foreground: #586e75
+
+Sxiv.background: #fdf6e3
+Sxiv.foreground: #586e75
+
+Nsxiv.window.background: #fdf6e3
+Nsxiv.window.foreground: #586e75
diff --git a/config/x11/xinitrc b/config/x11/xinitrc
index 3cf201f..f874be6 100644
--- a/config/x11/xinitrc
+++ b/config/x11/xinitrc
@@ -1,15 +1,13 @@
#!/bin/sh
-userresources="$HOME/config/x11/Xresources"
+userresources="$HOME/.config/x11/xresources"
# merge in defaults and keymaps
-
if [ -f "$userresources" ]; then
xrdb -merge "$userresources"
fi
# start some nice programs
-
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
@@ -19,11 +17,13 @@ fi
dunst &
picom &
-setxkbmap -option "caps:ctrl_modifier" # change caps_lock to ctrl
+setxkbmap -option "caps:ctrl_modifier" # Map Caps Lock to Ctrl
+setxkbmap us # Set US keyboard layout
slstatus &
-swall # set wallpaper
-xgamma -gamma 0.8 # change gamma
-xset r rate 300 50 # increase cursor speed
-xset s off && xset -dpms # disable screen blackening
+swall # Set a wallpaper
+unclutter & # Hide mouse cursor if inactive
+xgamma -gamma 0.8 # Change gamma
+xset r rate 300 50 # Increase cursor speed
+xset s off && xset -dpms # Disable screen blackening
exec dwm
diff --git a/config/x11/xresources b/config/x11/xresources
new file mode 120000
index 0000000..2ed52bc
--- /dev/null
+++ b/config/x11/xresources
@@ -0,0 +1 @@
+themes/one-dark \ No newline at end of file
diff --git a/config/zathura/zathurarc b/config/zathura/zathurarc
index 0e3d717..2598c2f 100755
--- a/config/zathura/zathurarc
+++ b/config/zathura/zathurarc
@@ -1,3 +1,118 @@
+# NORD (Dark)
+# set background "#2e3440"
+# set foreground "#d8dee9"
+# set highlight "#88c0d0"
+# set selection "#434c5e"
+# set statusbar-bg "#3b4252"
+# set statusbar-fg "#d8dee9"
+# set inputbar-bg "#3b4252"
+# set inputbar-fg "#d8dee9"
+# set error-fg "#bf616a"
+# set recolor-lightcolor "#2e3440"
+# set recolor-darkcolor "#d8dee9"
+# set default-bg "#2e3440"
+
+# CATPPUCCIN (Mocha)
+# set background "#1e1e2e"
+# set foreground "#cdd6f4"
+# set highlight "#89b4fa"
+# set selection "#585b70"
+# set statusbar-bg "#313244"
+# set statusbar-fg "#cdd6f4"
+# set inputbar-bg "#313244"
+# set inputbar-fg "#cdd6f4"
+# set error-fg "#f38ba8"
+# set recolor-lightcolor "#1e1e2e"
+# set recolor-darkcolor "#cdd6f4"
+# set default-bg "#1e1e2e"
+
+# LIGHT-NORD
+# set background "#eceff4"
+# set foreground "#2e3440"
+# set highlight "#5e81ac"
+# set selection "#d8dee9"
+# set statusbar-bg "#e5e9f0"
+# set statusbar-fg "#2e3440"
+# set inputbar-bg "#e5e9f0"
+# set inputbar-fg "#2e3440"
+# set error-fg "#bf616a"
+# set recolor-lightcolor "#eceff4"
+# set recolor-darkcolor "#2e3440"
+# set default-bg "#eceff4"
+
+# MATERIAL (Dark)
+# set background "#263238"
+# set foreground "#eeffff"
+# set highlight "#82aaff"
+# set selection "#37474f"
+# set statusbar-bg "#2e3c43"
+# set statusbar-fg "#eeffff"
+# set inputbar-bg "#2e3c43"
+# set inputbar-fg "#eeffff"
+# set error-fg "#f07178"
+# set recolor-lightcolor "#263238"
+# set recolor-darkcolor "#eeffff"
+# set default-bg "#263238"
+
+# ONE DARK
+set background "#282c34"
+set foreground "#abb2bf"
+set highlight "#61afef"
+set selection "#3e4451"
+set statusbar-bg "#21252b"
+set statusbar-fg "#abb2bf"
+set inputbar-bg "#21252b"
+set inputbar-fg "#abb2bf"
+set error-fg "#e06c75"
+set recolor-lightcolor "#282c34"
+set recolor-darkcolor "#abb2bf"
+set default-bg "#282c34"
+
+# ONE LIGHT
+# set background "#fafafa"
+# set foreground "#383a42"
+# set highlight "#0184bc"
+# set selection "#d0d0d0"
+# set statusbar-bg "#e5e5e5"
+# set statusbar-fg "#383a42"
+# set inputbar-bg "#e5e5e5"
+# set inputbar-fg "#383a42"
+# set error-fg "#e45649"
+# set recolor-lightcolor "#fafafa"
+# set recolor-darkcolor "#383a42"
+# set default-bg "#fafafa"
+
+# SOLARIZED DARK
+# set background "#002b36"
+# set foreground "#839496"
+# set highlight "#268bd2"
+# set selection "#073642"
+# set statusbar-bg "#073642"
+# set statusbar-fg "#839496"
+# set inputbar-bg "#073642"
+# set inputbar-fg "#839496"
+# set error-fg "#dc322f"
+# set recolor-lightcolor "#002b36"
+# set recolor-darkcolor "#839496"
+# set default-bg "#002b36"
+
+# SOLARIZED LIGHT
+# set background "#fdf6e3"
+# set foreground "#657b83"
+# set highlight "#268bd2"
+# set selection "#eee8d5"
+# set statusbar-bg "#eee8d5"
+# set statusbar-fg "#657b83"
+# set inputbar-bg "#eee8d5"
+# set inputbar-fg "#657b83"
+# set error-fg "#dc322f"
+# set recolor-lightcolor "#fdf6e3"
+# set recolor-darkcolor "#002b36"
+# set default-bg "#fdf6e3"
+
+set recolor-keephue
+set font "Liberation Mono 9"
+map t toggle_statusbar
map i recolor
map J zoom in
map K zoom out
diff --git a/config/zsh/zshrc b/config/zsh/zshrc
index 4afbbc1..5805115 100755
--- a/config/zsh/zshrc
+++ b/config/zsh/zshrc
@@ -1,5 +1,3 @@
-# Suleyman's zsh interactive shell config at "https://git.farajli.net/slcf"
-
PROMPT="%B%F{red}%(?..%? )%B%F{blue}%n%b%f@%m %B%~ %% %b"
# Git integration
@@ -20,11 +18,11 @@ autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
compinit
-_comp_options+=(globdots) # Include hidden files.
+_comp_options+=(globdots) # Include hidden files.
# vi mode
-bindkey -v # Vi mode.
-export KEYTIMEOUT=1 # Set escape delay to 0.01 sec.
+bindkey -v # Vi mode.
+export KEYTIMEOUT=0 # Set escape delay to 0.01 sec.
# Use vim keys in tab complete menu:
bindkey -M menuselect 'h' vi-backward-char
@@ -33,7 +31,6 @@ bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -v '^?' backward-delete-char
-
# Change cursor shape for different vi modes.
function zle-keymap-select () {
case "${KEYMAP}" in
@@ -50,23 +47,23 @@ zle-line-init() {
echo -ne "\e[5 q"
}
zle -N zle-line-init
-echo -ne '\e[5 q' # Use beam shape cursor on startup.
-preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
-
+echo -ne '\e[5 q' # Use beam shape cursor on startup.
+preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
# Options
-setopt autocd # Automatically cd into typed directory.
-stty stop undef # Disable ctrl-s to freeze terminal.
-setopt interactive_comments
-unsetopt nomatch
-setopt INC_APPEND_HISTORY # Add commands to history when they are run.
-setopt HIST_FIND_NO_DUPS # Don't show duplicate commands when backward searching.
+setopt autocd # Automatically cd into typed directory.
+stty stop undef # Disable ctrl-s to freeze terminal.
+setopt interactive_comments # Write comments in interactive shell
+unsetopt nomatch # Allow unmatched globs without error (leave pattern as-is)
+setopt INC_APPEND_HISTORY # Add commands to history when they are run.
+setopt HIST_FIND_NO_DUPS # Don't show duplicate commands when backward searching.
# Custom keybinds
bindkey '^R' history-incremental-search-backward
+bindkey -s '^f' '^uls\n'
bindkey -s '^o' '^ulfcd\n'
-bindkey -s '^f' '^ucd "$(dirname "$(fzf --reverse)")"\n'
bindkey -s '^v' '^u!!\n'
+bindkey ^@ vi-cmd-mode
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ];then
source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
diff --git a/dep.sh b/dep.sh
index 865a5be..2e51e18 100755
--- a/dep.sh
+++ b/dep.sh
@@ -29,39 +29,68 @@ check() {
retval=0
+# Optional Dependencies, skip QEMU and lualatex check
+[ "${1}" = "--optional" ] && check \
+ cmus \
+ latex,pdflatex:"latex is missing" \
+ neomutt,mutt \
+ pamus \
+ pandoc \
+ shellcheck \
+ ssh \
+ trans:"translate shell is missing" \
+ abook \
+ acpi \
+ cmus \
+ dash \
+ docker \
+ ffmpeg \
+ less \
+ pass \
+ python3 \
+ rsync \
+ sudo \
+ tldr:"a tldr implementation is missing" \
+ unclutter:"unclutter-xfixes is missing" \
+ yt-dlp
+
# Programs
check \
- Xorg \
- dunst \
- fzf \
- git \
- lf \
- mpv \
- picom \
- qutebrowser \
- scrot \
- setxkbmap \
- startx:"xorg-xinit is missing" \
- sxiv,nsxiv \
- vim,nvim \
- zathura \
- zsh,bash || retval=1
+ Xorg \
+ dunst \
+ fzf \
+ git \
+ lf \
+ mpv \
+ notify-send:"libnotify is missing" \
+ nsxiv,sxiv \
+ nvim,vim \
+ picom \
+ qutebrowser \
+ scrot \
+ setxkbmap \
+ startx:"xorg-xinit is missing" \
+ xclip \
+ zathura \
+ zsh,bash
# Script dependencies
check \
brightnessctl \
- pactl:"pulseaudio is missing" \
+ pulseaudio \
xgamma \
xinput \
xset \
- xwallpaper || retval=1
+ xwallpaper
# Build dependencies
check \
- cc:"c compiler is missing" \
- curl \
- ld:"linker is missing" \
- make \
+ cc:"c compiler is missing" \
+ curl \
+ fc-cache:"fontconfig is missing" \
+ ld:"linker is missing" \
+ make \
+ tic:"ncurses is missing" \
tar || retval=1
# Libraries
diff --git a/scripts/br b/scripts/br
index 6802b75..0fd6dc5 100755
--- a/scripts/br
+++ b/scripts/br
@@ -6,8 +6,8 @@ help() {
cat << EOF
${0}: Open links from bookmarks through dmenu
options:
-[link] Open link
- -h Print this message and exit
+[link] Open link
+ -h Print this message and exit
NOTE: bookmarks file is located at ~/.config/sites/bookmarks
EOF
@@ -33,8 +33,8 @@ if [ "${#}" -eq 0 ]; then
[ -z "${link}" ] || "${browser}" "${link}"
-elif [ "${#}" -eq 1 ]; then
- [ "${1}" = "-h" ] && help
+elif [ "${#}" -eq 1 ]; then
+ [ "${1}" = "-h" ] && help
"${browser}" "${1}"
else
diff --git a/scripts/nospac b/scripts/nospac
index 650c216..6ba466a 100755
--- a/scripts/nospac
+++ b/scripts/nospac
@@ -4,9 +4,8 @@ help() {
cat << EOF
${0}: Replace all the spaces in file and directory
names with "_" in in the current directory.
-
options:
- -h Print this message and exit
+ -h Print this message and exit
EOF
}
diff --git a/scripts/nsend b/scripts/nsend
index 7337b4d..80e1764 100755
--- a/scripts/nsend
+++ b/scripts/nsend
@@ -5,23 +5,23 @@
help() {
cat << EOF
${0}: Wrapper script to send notifications
-
options:
- -s [Name] [Msg] Send Msg with Name
- -s [Msg] Send Msg Without Name
- -h Print this message and exit
+ -s [Name] [Msg] Send Msg with Name
+ -s [Msg] Send Msg Without Name
+ -h Print this message and exit
EOF
exit 0
}
-check_program "notify-send" "dunst must be installed"
+check_program "notify-send" "libnotify must be installed"
case "${1}" in
"-s")
[ "${#}" -gt 3 ] && invalid_use
- run "notify-send ${2} ${3}"
+ shift
+ eval $(printf 'notify-send "%s" "%s"' "${1}" "${2}")
exit 0
;;
diff --git a/scripts/qw b/scripts/qw
index a0d5181..1199227 100755
--- a/scripts/qw
+++ b/scripts/qw
@@ -6,11 +6,10 @@ help() {
cat << EOF
${0}: Qemu Wrapper, very simple script for abriviating \
verbose qemu commands and options
-
options:
- -c create an Image.img with 10G space
- -r [input.iso] run input.iso
- -x [input.qcow2] run input.qcow2
+ -c create an Image.img with 10G space
+ -r [input.iso] run input.iso
+ -x [input.qcow2] run input.qcow2
EOF
exit 0
@@ -25,7 +24,7 @@ while getopts "cr:x:h" option ;do
case "${option}" in
c) run "qemu-img create -f qcow2 Image.img 10G" ;;
- x) run "qemu-system-x86_64 -drive file=${OPTARG},format=qcow2 -enable-kvm" ;;
+ x) run "qemu-system-x86_64 -drive file=${OPTARG},format=qcow2 -enable-kvm -cpu host -smp 2 -m 2048 -net nic -net user -display sdl" ;;
r)
run "qemu-system-x86_64 -enable-kvm -cdrom ${OPTARG} \
diff --git a/scripts/sdev b/scripts/sdev
index 22c1af5..c227771 100755
--- a/scripts/sdev
+++ b/scripts/sdev
@@ -5,15 +5,14 @@
help() {
cat << EOF
${0}: Disable and Enable devices
-
options:
- -e [dev] Enable dev
- -d [dev] Disable dev
- -t [dev] Toggle dev
- -l List devices
- -h Print this message and exit
+ -e [dev] Enable dev
+ -d [dev] Disable dev
+ -t [dev] Toggle dev
+ -l List devices
+ -h Print this message and exit
-Note: Nondescriptive inputs may disable (or enable) unwanted devices.
+Note: Nondescriptive inputs may disable/enable unwanted devices.
EOF
exit 0
@@ -50,13 +49,13 @@ check_program "xinput"
while getopts "e:d:t:lh" option; do
case "${option}" in
- e)
+ e)
get_id "${OPTARG}"
xenable "${id}"
;;
- d)
+ d)
get_id "${OPTARG}"
- xdisable "${id}"
+ xdisable "${id}"
;;
t)
get_id "${OPTARG}"
@@ -67,7 +66,7 @@ while getopts "e:d:t:lh" option; do
l)
if ! xinput list 2>/dev/null; then
err "Listing Failed"
- else
+ else
exit 0
fi
;;
diff --git a/scripts/shot b/scripts/shot
index 4a58dd2..1d296c8 100755
--- a/scripts/shot
+++ b/scripts/shot
@@ -5,11 +5,10 @@
help() {
cat << EOF
${0}: Wrapper script to take screenshots
-
options:
- -d [File] Write to File
- -s Select the area with the cursor
- -h Print this message and exit
+ -d [File] Write to File
+ -s Select the area with the cursor
+ -h Print this message and exit
NOTE: save directory is ~/pics/screenshots
EOF
diff --git a/scripts/slib b/scripts/slib
index 30e32ca..e598db7 100755
--- a/scripts/slib
+++ b/scripts/slib
@@ -1,7 +1,7 @@
#!/bin/sh
# Avoid using full paths instead only use the program names.
-argv0=$(basename "${0}")
+argv0="${0}"
# @FUNCTION: err
# @USAGE: [-x] <message> ...
@@ -15,7 +15,6 @@ argv0=$(basename "${0}")
# @EXAMPLE:
# err "Invalid usage" "Try '${argv0} -h' for help."
-
err() {
if [ "${1}" != "-x" ]; then
printf "%s: " "${argv0}"
@@ -32,7 +31,7 @@ err() {
# @FUNCTION: invalid_use
# USAGE: [-h]
# @DESCRIPTION:
-# Output a usage error message. If `-h` is not specified output:
+# Output a usage error message. If `-h` is not specified output:
# "<program>: Invalid usage "
# "Try 'program -h' for help."
# else output only:
@@ -72,6 +71,10 @@ check_program() {
# To add a failure message a success message must also be present.
# The output of the command is not suppressed.
#
+# This implementation does **not** use `eval`. Only simple commands and arguments are supported.
+# Shell control operators like `&&`, `||`, pipes (`|`), or redirection (`>`, `>>`, etc.) will not work.
+# This prevents unintended execution and makes it safe for use in scripts.
+#
# @EXAMPLE:
# Run xwallpaper command if success print out ${image}:
#
diff --git a/scripts/slight b/scripts/slight
index 0f8cba0..0289ff4 100755
--- a/scripts/slight
+++ b/scripts/slight
@@ -5,13 +5,12 @@
help() {
cat << EOF
${0}: Wrapper script to change backlight
-
options:
- -i [Brg] Increase backlight by Brg
- -d [Brg] Decrease backlight by Brg
- -s [Brg] Set backlight to Brg
- -p Show the current backlight
- -h Print this message and exit
+ -i [Brg] Increase backlight by Brg
+ -d [Brg] Decrease backlight by Brg
+ -s [Brg] Set backlight to Brg
+ -p Show the current backlight
+ -h Print this message and exit
NOTE: Script interprets values as percentages
EOF
diff --git a/scripts/svol b/scripts/svol
index f0765bb..ec60450 100755
--- a/scripts/svol
+++ b/scripts/svol
@@ -5,14 +5,13 @@
help() {
cat << EOF
${0}: Wrapper script to change volume
-
options:
- -i [Vol] Increase volume by Vol
- -d [Vol] Decrease volume by Vol
- -s [Vol] Set volume to Vol
- -p Show the current volume
- -t Toggle between mute and unmute
- -h Print this message and exit
+ -i [Vol] Increase volume by Vol
+ -d [Vol] Decrease volume by Vol
+ -s [Vol] Set volume to Vol
+ -p Show the current volume
+ -t Toggle between mute and unmute
+ -h Print this message and exit
EOF
exit 0
diff --git a/scripts/swall b/scripts/swall
index 34c4bc8..2588b4b 100755
--- a/scripts/swall
+++ b/scripts/swall
@@ -5,11 +5,10 @@
help() {
cat << EOF
${0}: Wrapper script to set wallpapers
-
options:
- -d [File] Select a wallpaper or a directory
- -c Remove the current wallpaper
- -h Print this message and exit
+ -d [File] Select a wallpaper or a directory
+ -c Remove the current wallpaper
+ -h Print this message and exit
NOTE: default directory is ~/.config/wallpapers
EOF