diff options
Diffstat (limited to 'config')
34 files changed, 772 insertions, 234 deletions
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 Binary files differnew file mode 100644 index 0000000..7d5f820 --- /dev/null +++ b/config/wallpapers/ship.jpg 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" |