first commit

This commit is contained in:
2026-02-13 04:20:30 +01:00
commit 2bd6b181f4
159 changed files with 194785 additions and 0 deletions

148
profiles/base/.bashrc Normal file
View File

@@ -0,0 +1,148 @@
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# scripts from gentoo
# shellcheck source=.bashrc.d/10-gentoo-color-r2.bash
source "${HOME}/.bashrc.d/10-gentoo-color-r2.bash" # prompt
# shellcheck source=.bashrc.d/10-gentoo-title-r3.bash
source "${HOME}/.bashrc.d/10-gentoo-title-r3.bash"
# custom variables
if command -v nvim &> /dev/null; then
export EDITOR="nvim"
else
export EDITOR="vim"
fi
# export EDITOR="ec"
export VISUAL="${EDITOR}"
export SUDO_EDITOR="${EDITOR}"
export VIRSH_DEFAULT_CONNECT_URI="qemu:///system"
export BROWSER="chromium"
export PAGER="less -R -F"
export BAT_PAGER="${PAGER}"
export MANPAGER="less -R --use-color -Dd+r -Du+b"
[ -f "/usr/share/cowsay/cows" ] && export COWPATH="/usr/share/cowsay/cows"
export CHROOT="${HOME}/arch_chroot"
export AUR_REPO="whiteman808"
export AURDEST="${HOME}/.cache/paru/clone"
export AUR_PAGER="ranger"
export GPGKEY="4A45503BBE575E3D4DAF28E27264AFFDC98D52BB"
# color output
alias diff='diff --color=auto'
alias grep='grep --color=auto'
alias ip='ip -color=auto'
alias ls='ls --color=auto'
export MANROFFOPT="-P -c"
export LESS="-R --use-color -Dd+r\$Du+b\$"
# better ls
if type "eza" > /dev/null; then
alias ll='eza -bghHlS'
else
alias ll='exa -bghHlS'
fi
# bat (debian)
if type "batcat" >/dev/null 2>&1; then
alias bat='batcat'
fi
# HSTR configuration - add this to ~/.bashrc
alias hh=hstr # hh to be alias for hstr
export HSTR_CONFIG=hicolor # get more colors
shopt -s histappend # append new history items to .bash_history
export HISTCONTROL=ignorespace # leading space hides commands from history
export HISTFILESIZE=10000 # increase history file size (default is 500)
export HISTSIZE=${HISTFILESIZE} # increase history size (default is 500)
# ensure synchronization between bash memory and history file
export PROMPT_COMMAND=( "history -a; history -n;" "${PROMPT_COMMAND[@]}" )
function hstrnotiocsti {
{ READLINE_LINE="$( { </dev/tty hstr -- "${READLINE_LINE}"; } 2>&1 1>&3 3>&- )"; } 3>&1;
READLINE_POINT=${#READLINE_LINE}
}
# if this is interactive shell, then bind hstr to Ctrl-r (for Vi mode check doc)
if [[ $- =~ .*i.* ]]; then bind -x '"\C-r": "hstrnotiocsti"'; fi
export HSTR_TIOCSTI=n
# useful commands
alias ncmpcpp='ncmpcpp -b ~/.config/ncmpcpp/bindings'
alias tb='nc termbin.com 9999'
alias mux='tmuxinator'
alias tm='tmuxinator start misc'
alias tq='tmuxinator start quake'
alias sudo='sudo '
alias rsync_copy='rsync -aAXUHvh --partial-dir=.rsync-partial --progress'
alias rsync_copy_ssh='rsync_copy -e ssh'
alias rsync_backup='rsync_copy --numeric-ids --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}'
alias rsync_backup_ssh='rsync_backup -e ssh'
alias rsync_restore='rsync_copy --numeric-ids --delete --exclude="lost+found"'
alias rsync_restore_ssh='rsync_restore -e ssh'
alias glog='git log --oneline'
alias emerge_world='emerge --ask --verbose --deep --newuse --update @world'
alias sync_repo='rsync_copy_ssh --delete ~/arch_paczuchy/* vps.paraboletancza.org:/srv/http/arch.paraboletancza.org'
alias aur_sync='aur sync --sign --chroot'
alias aur_build='aur build --sign --chroot'
take() {
mkdir -p "$1"
cd "$1" || exit 1
}
# lf
lfwrapper() {
command lf "$@"
# cleanup
awk '$1 == "archivemount" { print $2 }' /etc/mtab | while read -r mntdir; do
sanitized_input="$(printf "${mntdir}")" # /etc/mtab uses octal representation of spaces (possible other symbols too), printf would convert octal representation, so that it can be used in the umount & rmdir commands.
umount "${sanitized_input}"
rmdir "${sanitized_input}"
done
}
lfcd() {
dir="$(lfwrapper -print-last-dir "$@")"
while ! cd "${dir}" 2>/dev/null; do
dir="$(dirname -- "${dir}")"
done
}
alias lf=lfcd
# ranger
ranger_cd() {
temp_file="$(mktemp -t "ranger_cd.XXXXXXXXXX")"
ranger --choosedir="${temp_file}" -- "${@:-${PWD}}"
if chosen_dir="$(cat -- "${temp_file}")" && [ -n "${chosen_dir}" ] && [ "${chosen_dir}" != "${PWD}" ]; then
cd -- "${chosen_dir}" || exit 1
fi
rm -f -- "${temp_file}"
}
alias ranger=ranger_cd
bind '"\C-o":"ranger\n"'
# mc
# shellcheck source=/dev/null
[[ -f "/usr/libexec/mc/mc.sh" ]] && source "/usr/libexec/mc/mc.sh"
[[ -f "/usr/lib/mc/mc.sh" ]] && source "/usr/lib/mc/mc.sh"
# gpg-agent
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket 2>/dev/null)"
export SSH_AUTH_SOCK
fi
# inside tmux, we don't know if Sway got restarted
if [[ -v TMUX ]]; then
swaymsg() {
SWAYSOCK=${XDG_RUNTIME_DIR}/sway-ipc.${UID}.$(pgrep -x sway).sock
export SWAYSOCK
command swaymsg "$@"
}
fi

View File

@@ -0,0 +1,78 @@
#!/usr/bin/env bash
# copied from https://gitweb.gentoo.org/repo/gentoo.git/tree/app-shells/bash
if [[ ${NO_COLOR} ]]; then
# Respect the user's wish not to use color. See https://no-color.org/.
gentoo_color=0
elif [[ ${COLORTERM@a} == *x* && ${COLORTERM} == @(24bit|truecolor) ]]; then
# The COLORTERM environment variable can reasonably be trusted here.
# See https://github.com/termstandard/colors for further information.
gentoo_color=1
else
# Check TERM against a whitelist covering a majority of popular
# terminal emulators and virtual console implementations known to
# support color. If no matching entry is found, try to use tput(1) to
# determine whether color is supported.
case ${TERM} in
*color* |\
*direct* |\
*ghostty |\
[Ekx]term* |\
alacritty |\
aterm |\
contour |\
dtterm |\
foot* |\
jfbterm |\
linux |\
mlterm |\
rxvt* |\
screen* |\
tmux* |\
wsvt25* ) gentoo_color=1 ;;
* ) gentoo_color=$(tput colors 2>/dev/null)
esac
fi
# For direxpand to be missing indicates that bash is lacking readline support.
prompt_exit_code() {
local -r exit_code=$?
if [[ ${exit_code} -ne 0 ]]; then
printf "%s " "${exit_code}"
fi
}
if (( gentoo_color <= 0 )) || ( ! shopt -u direxpand 2>/dev/null ); then
# Define a prompt without color.
PS1='\u@\h \w \$ '
elif (( EUID == 0 )); then
# If root, omit the username and print the hostname in red.
PS1='\[\e[01;31m\]\h\[\e[01;34m\] \w \$\[\e[00m\] '
else
# Otherwise, print the username and hostname in green.
PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \[\e[01;31m\]$(prompt_exit_code)\[\e[01;34m\]\w \$\[\e[00m\] '
fi
if (( gentoo_color > 0 )); then
# Colorize the output of diff(1), grep(1) and a few coreutils utilities.
# However, do so only where no alias/function by the given name exists.
for _ in diff dir grep ls vdir; do
if [[ $(type -t "$_") == file ]]; then
alias "$_=$_ --color=auto"
fi
done
# Enable colors for ls(1) and some other utilities that respect the
# LS_COLORS variable. Prefer ~/.dir_colors, per bug #64489.
if hash dircolors 2>/dev/null; then
if [[ -f ~/.dir_colors ]]; then
eval "$(COLORTERM=1 dircolors -b -- ~/.dir_colors)"
elif [[ -f /etc/DIR_COLORS ]]; then
eval "$(COLORTERM=1 dircolors -b /etc/DIR_COLORS)"
else
eval "$(COLORTERM=1 dircolors -b)"
fi
fi
fi
unset -v gentoo_color

View File

@@ -0,0 +1,78 @@
#!/usr/bin/env bash
# copied from https://gitweb.gentoo.org/repo/gentoo.git/tree/app-shells/bash
# For information regarding the control sequences used, please refer to
# https://invisible-island.net/xterm/ctlseqs/ctlseqs.html.
genfun_set_win_title() {
# Advertise the fact that the presently running interactive shell will
# update the title. Doing so allows for its subprocesses to determine
# whether it is safe to set the title of their own accord. Note that 0
# refers to the value of Ps within the OSC Ps ; Pt BEL sequence.
export SHELL_SETS_TITLE=0
# Sets the window title with the Set Text Parameters control sequence.
# For screen, the sequence defines the hardstatus (%h) and for tmux, the
# pane_title (#T). For graphical terminal emulators, it is normal for
# the title bar to be affected.
genfun_set_win_title() {
local prompt
if [[ ${PROMPT_DIRTRIM} ]]; then
# Respect the value of PROMPT_DIRTRIM. If set as 0, the
# current working directory shall be shown in full.
prompt='\u@\h \w'
else
# Show the basename of the current working directory.
prompt='\u@\h \W'
fi
printf '\033]0;%s\007' "${prompt@P}"
}
genfun_set_win_title
}
unset -v SHELL_SETS_TITLE
# Determine whether the terminal can handle the Set Text Parameters sequence.
# The only terminals permitted here are those for which there is empirical
# evidence that the sequence is supported and that the UTF-8 character encoding
# is handled correctly. Quite rightly, this precludes many vintage terminals.
case ${TERM} in
alacritty*|contour|foot*|tmux*|xterm-ghostty)
# The terminal emulator also supports XTWINOPS. If the PTY was
# created by sshd(8) then push the current window title to the
# stack and arrange for it to be popped upon exiting. Xterm also
# supports this but there are far too many terminal emulators
# that falsely identify as being xterm-compatible.
if [[ ${SSH_TTY} && ${SSH_TTY} == "$(tty)" ]]; then
trap 'printf "\033[23;0t"' EXIT
printf '\033[22;0t'
fi
;;
rxvt-unicode*|st-256color|xterm*)
# If the PTY was created by sshd(8) then proceed no further.
# Alas, there exist many operating environments in which the
# title would otherwise not be restored upon ssh(1) exiting.
# Those wanting for the title to be set regardless may adjust
# ~/.bashrc or create a bashrc.d drop-in to set PROMPT_COMMAND.
# For example, PROMPT_COMMAND=(genfun_set_win_title).
if [[ ${SSH_TTY} && ${SSH_TTY} == "$(tty)" ]]; then
return
fi
;;
screen*)
# If the PTY was created by sshd(8) and screen(1) was launched
# prior to the SSH session beginning, as opposed to afterwards,
# proceed no further. It is another case in which there would be
# no guarantee of the title being restored upon ssh(1) exiting.
if [[ ! ${WINDOW} && ${SSH_TTY} && ${SSH_TTY} == "$(tty)" ]]; then
return
fi
;;
*)
return
esac
# Arrange for the title to be updated each time the primary prompt is displayed.
PROMPT_COMMAND+=('genfun_set_win_title')

20
profiles/base/.inputrc Normal file
View File

@@ -0,0 +1,20 @@
$include /etc/inputrc
set editing-mode vi
set keyseq-timeout 0.01
set show-mode-in-prompt on
$if mode=vi
set keymap vi-command
# these are for vi-command mode
"\e[A": history-search-backward
"\e[B": history-search-forward
j: history-search-forward
k: history-search-backward
"\C-l": clear-screen
set keymap vi-insert
# these are for vi-insert mode
"\e[A": history-search-backward
"\e[B": history-search-forward
"\C-l": clear-screen
$endif
set vi-ins-mode-string "\1\e[6 q\2(ins) "
set vi-cmd-mode-string "\1\e[4 q\2(cmd) "

View File

@@ -0,0 +1,85 @@
#!/usr/bin/env bash
set -o errexit
set -o pipefail
set -o nounset
readonly SCRIPT_NAME="${0##*/}"
check_deps() {
command -v "curl" >/dev/null 2>&1 || die "curl: command not found"
}
usage() {
cat <<EOF
Usage: ${SCRIPT_NAME} [--family auto|4|6] [-h|--help]
Query an external service using curl and print:
1) public IP address
2) reverse DNS (PTR record)
3) curl version
Options:
--family auto|4|6 select IP protocol version (default: auto)
-h, --help show help and exit
EOF
}
shell_quote() {
local -r string="$1"
printf "'%s'" "${string//'/'\\''}"
}
die() {
local -r message="$1"
printf "%s: %b\n" "${SCRIPT_NAME}" "${message}" >&2
exit 1
}
invalid_option() {
local -r option="$1"
die "invalid option $(shell_quote "${option}")\nTry '${SCRIPT_NAME} --help' for usage."
}
parse_args() {
family="auto"
while (( $# > 0 )); do
case "$1" in
-h|--help) usage; exit 0 ;;
--family)
( (( $# < 2 )) || [[ -z "$2" ]] ) && die "--family requires an argument (auto, 4 or 6)"
family="$2"
shift 2
;;
--family=*)
family="${1#*=}"
[[ -z "${family}" ]] && die "--family requires an argument (auto, 4 or 6)"
shift
;;
*) invalid_option "$1" ;;
esac
done
validate_args
}
validate_args() {
case "${family}" in
auto|4|6) ;;
*) die "invalid value for family: '${family}' (expected auto, 4 or 6)"
esac
}
show_ip() {
local -a curl_args=()
[[ ${family} == "4" ]] && curl_args=( "-4" )
[[ ${family} == "6" ]] && curl_args=( "-6" )
curl "${curl_args[@]}" "zx2c4.com/ip"
}
main() {
check_deps
parse_args "$@"
show_ip
}
main "$@"

View File

@@ -0,0 +1,138 @@
#!/usr/bin/env bash
#usage: ./dnsleaktest.sh [-i interface_ip|interface_name]
#example: ./dnsleaktest.sh -i eth1
# ./dnsleaktest.sh -i 10.0.0.2
RED='\033[0;31m'
BOLD='\033[1m'
NC='\033[0m'
api_domain='bash.ws'
error_code=1
getopts "i:" opt
interface=$OPTARG
function echo_bold {
echo -e "${BOLD}${1}${NC}"
}
if [ -z "$interface" ]; then
curl_interface=""
ping_interface=""
else
curl_interface="--interface ${interface}"
ping_interface="-I ${interface}"
echo_bold "Interface: ${interface}"
echo ""
fi
function increment_error_code {
error_code=$((error_code + 1))
}
function echo_error {
(>&2 echo -e "${RED}${1}${NC}")
}
function require_command {
command -v $1 > /dev/null
if [ $? -ne 0 ]; then
echo_error "Please, install \"$1\""
exit $error_code
fi
increment_error_code
}
function check_internet_connection {
curl --silent --head ${curl_interface} --request GET "https://${api_domain}" | grep "200 OK" > /dev/null
if [ $? -ne 0 ]; then
echo_error "No internet connection."
exit $error_code
fi
increment_error_code
}
require_command curl
require_command ping
check_internet_connection
if command -v jq &> /dev/null; then
jq_exists=1
else
jq_exists=0
fi
id=$(curl ${curl_interface} --silent "https://${api_domain}/id")
for i in $(seq 1 10); do
ping -c 1 ${ping_interface} "${i}.${id}.${api_domain}" > /dev/null 2>&1
done
function print_servers {
if (( $jq_exists )); then
echo ${result_json} | \
jq --monochrome-output \
--raw-output \
".[] | select(.type == \"${1}\") | \"\(.ip)\(if .country_name != \"\" and .country_name != false then \" [\(.country_name)\(if .asn != \"\" and .asn != false then \" \(.asn)\" else \"\" end)]\" else \"\" end)\""
else
while IFS= read -r line; do
if [[ "$line" != *${1} ]]; then
continue
fi
ip=$(echo $line | cut -d'|' -f 1)
code=$(echo $line | cut -d'|' -f 2)
country=$(echo $line | cut -d'|' -f 3)
asn=$(echo $line | cut -d'|' -f 4)
if [ -z "${ip// }" ]; then
continue
fi
if [ -z "${country// }" ]; then
echo "$ip"
else
if [ -z "${asn// }" ]; then
echo "$ip [$country]"
else
echo "$ip [$country, $asn]"
fi
fi
done <<< "$result_txt"
fi
}
if (( $jq_exists )); then
result_json=$(curl ${curl_interface} --silent "https://${api_domain}/dnsleak/test/${id}?json")
else
result_txt=$(curl ${curl_interface} --silent "https://${api_domain}/dnsleak/test/${id}?txt")
fi
dns_count=$(print_servers "dns" | wc -l)
echo_bold "Your IP:"
print_servers "ip"
echo ""
if [ ${dns_count} -eq "0" ];then
echo_bold "No DNS servers found"
else
if [ ${dns_count} -eq "1" ];then
echo_bold "You use ${dns_count} DNS server:"
else
echo_bold "You use ${dns_count} DNS servers:"
fi
print_servers "dns"
fi
echo ""
echo_bold "Conclusion:"
print_servers "conclusion"
exit 0

View File

@@ -0,0 +1,8 @@
#!/bin/bash
shopt -s nullglob
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do
echo "IOMMU Group ${g##*/}:"
for d in ${g}/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done;
done;

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
transfer() (if [ $# -eq 0 ]; then printf "No arguments specified.\nUsage:\n transfer <file|directory>\n ... | transfer <file_name>\n">&2; return 1; fi; file_name=$(basename "$1"); if [ -t 0 ]; then file="$1"; if [ ! -e "$file" ]; then echo "$file: No such file or directory">&2; return 1; fi; if [ -d "$file" ]; then cd "$file" || return 1; file_name="$file_name.zip"; set -- zip -r -q - .; else set -- cat "$file"; fi; else set -- cat; fi; url=$("$@" | curl --silent --show-error --progress-bar --upload-file "-" "https://transfer.sh/$file_name"); echo "$url"; )
transfer

1712
profiles/base/.p10k.zsh Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,17 @@
\.git
\.gitignore
\.gitmodules
.+~ # emacs backup files
\#.*\# # emacs autosave files
\.emacs.d/straight
\.emacs.d/eln-cache
^/hooks$
^/parent$
^/README.*
^/LICENSE.*
^/COPYING
^/install
^/pyproject.toml

106
profiles/base/.tmux.conf Normal file
View File

@@ -0,0 +1,106 @@
## user experience related stuff
# fix delay between switching modes in vim
set -sg escape-time 20
# remap prefix
unbind C-b
set -g prefix M-q
bind M-q send-prefix
# make colors display correctly
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",*:RGB"
# set cursor style to underline
set -g cursor-style "underline"
# avoid setting cursor back to block after detaching tmux
set -ag terminal-overrides ",*:Se=\e[4 q"
# undercurl support
set -ag terminal-overrides ',*:Smulx=\E[4::%p1%dm'
# support colors for undercurl
set -ag terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
# set scrollback buffer to 10000
set -g history-limit 10000
# customize the status line
set -g status-fg colour2
set -g status-style bg=default
# disable mouse
set -g mouse off
# enable clipboard
set -g set-clipboard on
set -ag terminal-overrides ",*:clipboard"
# emacs keybindings
# set -g mode-keys emacs
# set -g status-keys emacs
# bind -Tcopy-mode C-w send -X copy-pipe-and-cancel 'xsel --clipboard --input'
# bind -Tcopy-mode M-w send -X copy-pipe-and-cancel 'xsel --clipboard --input'
# vi keybindings
set -g mode-keys vi
set -g status-keys vi
# copy & paste settings
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi V send -X select-line
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel 'wl-copy'
# status bar configuration
set -g status-right-length 100
set -g status-left-length 50
set -g status-right "#{pomodoro_status} #{@mode_indicator_suspend}#{?window_bigger,[#{window_offset_x}#,#{window_offset_y}] ,}\"#{=21:pane_title}\""
# urlscan
bind-key u run "tmux popup -E -b double -w 100% -h 40% -y 0 \
sh -c 'tmux capture-pane -Jp | urlscan -d -c' "
## tmux plugins related stuff
# list of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'MunifTanjim/tmux-suspend'
set -g @plugin 'rafi/tmux-pass'
set -g @plugin 'olimorris/tmux-pomodoro-plus'
# tmux-suspend
set -g @suspend_suspended_options " \
@mode_indicator_suspend::[*] "
set -g @suspend_key 'F12'
# tmux-pass
set -g @pass-copy-to-clipboard off
set -g @pass-hide-pw-from-preview on
set -g @pass-hide-preview on
# tmux-pomodoro-plus
set -g @pomodoro_on " 🍅 " # The formatted output when the Pomodoro is running
set -g @pomodoro_complete " ✔︎ " # The formatted output when the break is running
set -g @pomodoro_pause " ⏸︎ " # The formatted output when the Pomodoro/break is paused
set -g @pomodoro_prompt_break " ⏲︎ break?" # The formatted output when waiting to start a break
set -g @pomodoro_prompt_pomodoro " ⏱︎ start?" # The formatted output when waiting to start a Pomodoro
set -g @pomodoro_mins 25 # The duration of the Pomodoro
set -g @pomodoro_break_mins 5 # The duration of the break after the Pomodoro completes
set -g @pomodoro_intervals 4 # The number of intervals before a longer break is started
set -g @pomodoro_long_break_mins 25 # The duration of the long break
set -g @pomodoro_sound 'off' # Sound for desktop notifications (Run `ls /System/Library/Sounds` for a list of sounds to use on Mac)
set -g @pomodoro_notifications 'on' # Enable desktop notifications from your terminal
set -g @pomodoro_interval_display " [%s/%s]"
# automatically install tpm and tmux plugins when tmux is started
if "test ! -d ~/.tmux/plugins/tpm" \
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
# initialize tmux plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

View File

@@ -0,0 +1,4 @@
" set default tab width to 2 spaces
set tabstop=2 " number of spaces that a tab counts for
set shiftwidth=2 " size of an autoindented shift
set softtabstop=0 " indentation size

View File

@@ -0,0 +1 @@
set noexpandtab " use tabs instead of spaces

View File

@@ -0,0 +1,78 @@
let g:vim_tmux_clipboard#loadb_option = get(g:, 'vim_tmux_clipboard#loadb_option', '')
func! s:TmuxBufferName()
let l:list = systemlist('tmux list-buffers -F"#{buffer_name}"')
if len(l:list)==0
return ""
else
return l:list[0]
endif
endfunc
function! s:on_stdout(job_id, data, event)
let @" = join(a:data, "\n")
endfunction
func! s:AsyncTmuxBuffer()
call jobstart('tmux show-buffer', {'on_stdout': function('s:on_stdout'), 'stdout_buffered': 1})
endfunc
func! s:TmuxBuffer()
return system('tmux show-buffer')
endfunc
func! s:Enable()
if $TMUX==''
" not in tmux session
return
endif
let s:lastbname=""
" if support TextYankPost
if exists('##TextYankPost')==1
" @"
augroup vimtmuxclipboard
autocmd!
autocmd FocusLost * call s:update_from_tmux()
autocmd FocusGained * call s:update_from_tmux()
autocmd TextYankPost * silent! call system('tmux loadb ' . g:vim_tmux_clipboard#loadb_option . ' -',join(v:event["regcontents"],"\n"))
augroup END
if exists('*jobstart')==1 " Only supported on Neovim
call s:AsyncTmuxBuffer()
else
let @" = s:TmuxBuffer()
endif
else
" vim doesn't support TextYankPost event
" This is a workaround for vim
augroup vimtmuxclipboard
autocmd!
autocmd FocusLost * silent! call system('tmux loadb ' . g:vim_tmux_clipboard#loadb_option . ' -',@")
autocmd FocusGained * let @" = s:TmuxBuffer()
augroup END
let @" = s:TmuxBuffer()
endif
endfunc
func! s:update_from_tmux()
let buffer_name = s:TmuxBufferName()
if s:lastbname != buffer_name
let @" = s:TmuxBuffer()
endif
let s:lastbname=s:TmuxBufferName()
endfunc
call s:Enable()
" " workaround for this bug
" if shellescape("\n")=="'\\\n'"
" let l:s=substitute(l:s,'\\\n',"\n","g")
" let g:tmp_s=substitute(l:s,'\\\n',"\n","g")
" ");
" let g:tmp_cmd='tmux set-buffer ' . l:s
" endif
" silent! call system('tmux loadb -w -',l:s)

65
profiles/base/.vimrc Normal file
View File

@@ -0,0 +1,65 @@
" must have stuff
set nocompatible " use modern vim defaults
filetype plugin indent on
set autoindent
syntax on " highlight syntax
set number " display line numbers
" disable arrow keys
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>
inoremap <Up> <Nop>
inoremap <Down> <Nop>
inoremap <Left> <Nop>
inoremap <Right> <Nop>
" set cursor shape to underline in the normal and command mode,
" in the insert mode change shape to vertical bar, and disable
" blinking in all modes
set guicursor=n-c:hor20
set guicursor+=i:ver20
set guicursor+=a:blinkon0
let &t_EI = "\e[4 q" " solid underscore
let &t_SI = "\e[6 q" " vertical bar
if has("autocmd") " reset cursor to underscore after I leave vim
augroup cursor
autocmd!
autocmd VimLeave * silent execute '!echo -ne "\e[4 q"' | redraw!
augroup END
endif
" fix delay when sending escape sequences from insert mode
set timeout
set timeoutlen=1000
set ttimeout
set ttimeoutlen=50
" set default tab width to 4 spaces
set tabstop=4 " number of spaces that a tab counts for
set shiftwidth=4 " number of spaces that are inserted during indent operations
set softtabstop=4 " number of spaces that are inserted after pressing tab
set expandtab " use spaces instead of tabs
" persistent undo
if has("persistent_undo")
let target_path = expand('~/.local/state/vim/undo')
" create the directory and any parent directories
" if the location does not exist.
call mkdir(target_path, "p", 0700)
let &undodir=target_path
set undofile
endif
" enable clipboard
if has("clipboard")
set clipboard=unnamedplus,unnamed
endif
" stuff related to editing html files
let g:html_indent_autotags = "html,thead,tbody,tfoot"
let g:html_indent_script1 = "auto"
let g:html_indent_style1 = "auto"

View File

@@ -0,0 +1,11 @@
# Set PATH environment variable
typeset -U path PATH
path=("${HOME}/.local/bin" "/usr/local/sbin" "/usr/local/bin" "/usr/sbin" "/sbin" "${path[@]}")
export PATH
# Configure shell history behavior
HISTFILE="${HOME}/.zsh_history"
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
setopt HIST_IGNORE_SPACE

View File

@@ -0,0 +1,13 @@
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-${HOME}/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-${HOME}/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# plugins
source "${HOME}/.zsh/plugins/powerlevel10k/powerlevel10k.zsh-theme"
source "${HOME}/.zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh"
# To customize prompt, run `p10k configure` or edit ~/.zsh/prompt/p10k.zsh.
[[ -f "${HOME}/.zsh/prompt/p10k.zsh" ]] && source "${HOME}/.zsh/prompt/p10k.zsh"

View File

@@ -0,0 +1,33 @@
# Enable vi keybindings
bindkey -v
export KEYTIMEOUT=1
autoload -z edit-command-line
zle -N edit-command-line
bindkey '^e' edit-command-line
# Fix backspace character behavior in vi mode
bindkey '^?' backward-delete-char
bindkey '^W' backward-kill-word
bindkey '^H' backward-delete-char # Control-h also deletes the previous char.
bindkey '^U' backward-kill-line
# Change cursor shape for different vi modes
zle-keymap-select() {
if [[ ${KEYMAP} == vicmd ]] ||
[[ $1 = "block" ]]; then
echo -ne '\e[4 q'
elif [[ ${KEYMAP} == main ]] ||
[[ ${KEYMAP} == viins ]] ||
[[ ${KEYMAP} == "" ]] ||
[[ $1 == "beam" ]]; then
echo -ne '\e[6 q'
fi
}
zle -N zle-keymap-select
zle-line-init() {
zle -K viins # Initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne '\e[6 q'
}
zle -N zle-line-init
echo -ne '\e[6 q' # Use beam shape cursor on startup
preexec() { echo -ne '\e[6 q' } # Use beam shape cursor for each new prompt

View File

@@ -0,0 +1,14 @@
## Plugins configuration
# Completions
fpath=("${HOME}/.zsh/plugins/zsh-completions/src" "${fpath[@]}")
autoload -U compinit promptinit
compinit
promptinit
[[ -f "/etc/gentoo-release" ]] && prompt gentoo
# Enable cache for completions
zstyle ":completion::complete:*" use-cache 1
# Syntax highlighting in zsh prompt
source "${HOME}/.zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"

View File

@@ -0,0 +1,3 @@
# emacs specific stuff
[ -n "${EAT_SHELL_INTEGRATION_DIR}" ] && \
source "${EAT_SHELL_INTEGRATION_DIR}/zsh"

View File

@@ -0,0 +1,26 @@
# Set environment variables
if command -v nvim &> /dev/null; then
export EDITOR="nvim"
else
export EDITOR="vim"
fi
# export EDITOR="ec"
export VISUAL="${EDITOR}"
export SUDO_EDITOR="${EDITOR}"
export VIRSH_DEFAULT_CONNECT_URI="qemu:///system"
export BROWSER="chromium"
export PAGER="less -R -F"
export BAT_PAGER="${PAGER}"
export MANPAGER="less -R --use-color -Dd+r -Du+b"
[ -f "/usr/share/cowsay/cows" ] && export COWPATH="/usr/share/cowsay/cows"
export CHROOT="${HOME}/arch_chroot"
export AUR_REPO="whiteman808"
export AURDEST="${HOME}/.cache/paru/clone"
export AUR_PAGER="ranger"
export GPGKEY="4A45503BBE575E3D4DAF28E27264AFFDC98D52BB"
# gpg-agent
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket 2>/dev/null)"
fi

View File

@@ -0,0 +1,22 @@
alias diff="diff --color=auto"
alias grep="grep --color=auto"
alias ip="ip -color=auto"
alias ls="ls --color=auto"
export MANROFFOPT="-P -c"
export LESS='-R --use-color -Dd+r$Du+b$'
zmodload zsh/zpty
pty() {
zpty pty-${UID} ${1+$@}
if [[ ! -t 1 ]]; then
setopt local_traps
trap '' INT
fi
zpty -r pty-${UID}
zpty -d pty-${UID}
}
ptyless() {
pty $@ | less
}

View File

@@ -0,0 +1,101 @@
# HSTR configuration - add this to ~/.zshrc
if type "hstr" >/dev/null; then
alias hh=hstr # hh to be alias for hstr
setopt histignorespace # skip cmds w/ leading space from history
export HSTR_CONFIG=hicolor # get more colors
hstr_no_tiocsti() {
zle -I
{ HSTR_OUT="$( { </dev/tty hstr ${BUFFER}; } 2>&1 1>&3 3>&- )"; } 3>&1;
BUFFER="${HSTR_OUT}"
CURSOR=${#BUFFER}
zle redisplay
}
zle -N hstr_no_tiocsti
bindkey '\C-r' hstr_no_tiocsti
export HSTR_TIOCSTI=n
else
bindkey '\C-r' history-incremental-search-backward
fi
# better ls
if command -v "eza" >/dev/null 2>&1; then
alias ll="eza -bghHlS"
else
alias ll="exa -bghHlS"
fi
# bat (debian)
if command -v "batcat" >/dev/null 2>&1; then
alias bat="batcat"
fi
# lf
lfwrapper() {
command lf "$@"
# cleanup
awk '$1 == "archivemount" { print $2 }' /etc/mtab | while read -r mntdir; do
sanitized_input="$(printf "${mntdir}")" # /etc/mtab uses octal representation of spaces (possible other symbols too), printf would convert octal representation, so that it can be used in the umount & rmdir commands.
umount "${sanitized_input}"
rmdir "${sanitized_input}"
done
}
lfcd() {
dir="$(lfwrapper -print-last-dir "$@")"
while ! cd "${dir}" 2>/dev/null; do
dir="$(dirname -- "${dir}")"
done
}
alias lf=lfcd
# ranger
ranger_cd() {
temp_file="$(mktemp -t "ranger_cd.XXXXXXXXXX")"
ranger --choosedir="${temp_file}" -- "${@:-${PWD}}"
if chosen_dir="$(cat -- "${temp_file}")" && [ -n "${chosen_dir}" ] && [ "${chosen_dir}" != "${PWD}" ]; then
cd -- "${chosen_dir}"
fi
rm -f -- "${temp_file}"
}
alias ranger=ranger_cd
# mc
if [ -f "/usr/libexec/mc/mc.sh" ]; then
source "/usr/libexec/mc/mc.sh"
fi
# nix package manager
if [ -e "${HOME}/.nix-profile/etc/profile.d/nix.sh" ]; then
source "${HOME}/.nix-profile/etc/profile.d/nix.sh"
fi # added by Nix installer
# nix shell
if command -v nix-your-shell >/dev/null 2>&1; then
nix-your-shell zsh | source /dev/stdin
fi
# node.js
export NVM_DIR="${HOME}/.nvm"
[ -s "${NVM_DIR}/nvm.sh" ] && source "${NVM_DIR}/nvm.sh" # This loads nvm
[ -s "${NVM_DIR}/bash_completion" ] && source "${NVM_DIR}/bash_completion" # This loads nvm bash_completion
# rvm
[ -s "${HOME}/.rvm/scripts/rvm" ] && source "${HOME}/.rvm/scripts/rvm"
# pyenv
export PYENV_ROOT="${HOME}/.pyenv"
if [[ -d "${PYENV_ROOT}/bin" ]]; then
path=("${PYENV_ROOT}/bin" "${path[@]}")
export PATH
eval "$(pyenv init - zsh)"
eval "$(pyenv virtualenv-init -)"
fi
# inside tmux, we don't know if Sway got restarted
if [[ -v TMUX ]]; then
swaymsg() {
export SWAYSOCK="${XDG_RUNTIME_DIR}/sway-ipc.${UID}.$(pgrep -x sway).sock"
command swaymsg "$@"
}
fi

View File

@@ -0,0 +1,17 @@
alias ncmpcpp="ncmpcpp -b ${HOME}/.config/ncmpcpp/bindings"
alias tb="nc termbin.com 9999"
alias mux="tmuxinator"
alias tm="tmuxinator start misc"
alias tq="tmuxinator start quake"
alias sudo="sudo "
alias rsync_copy="rsync -aAXUHvh --partial-dir=.rsync-partial --progress"
alias rsync_copy_ssh="rsync_copy -e ssh"
alias rsync_backup="rsync_copy --numeric-ids --delete --exclude={'/dev/*','/proc/*','/sys/*','/tmp/*','/run/*','/mnt/*','/media/*','/lost+found'}"
alias rsync_backup_ssh="rsync_backup -e ssh"
alias rsync_restore="rsync_copy --numeric-ids --delete --exclude='lost+found'"
alias rsync_restore_ssh="rsync_restore -e ssh"
alias glog="git log --oneline"
alias emerge_world="emerge --ask --verbose --deep --newuse --update @world"
alias sync_repo="rsync_copy_ssh --delete ~/arch_paczuchy/* vps.paraboletancza.org:/srv/http/arch.paraboletancza.org"
alias aur_sync="aur sync --sign --chroot"
alias aur_build="aur build --sign --chroot"

View File

@@ -0,0 +1,35 @@
take() {
local -r directory="$1"
mkdir -p "${directory}"
cd "${directory}"
}
# downloading from youtube
yt-dlp() {
local -a -r args=(
--cookies-from-browser "chromium:${HOME}/.local/share/qutebrowser"
--extractor-args "youtube:player_client=default,web_safari;player_js_version=actual"
--fragment-retries infinite
)
command yt-dlp "${args[@]}" "$@"
}
yt_dl_mp3() {
yt-dlp -t mp3 --embed-thumbnail "$@"
}
yt_dl_channel() {
local -a -r args=(
--download-archive "archive.txt"
--output "%(upload_date)s.%(title)s.%(id)s.%(ext)s"
--merge-output-format mkv
--ignore-errors
--write-sub
--sub-langs "en,pl"
--cookies-from-browser "chromium:${HOME}/.local/share/qutebrowser"
--write-description
--write-info-json
--write-thumbnail
)
yt-dlp "${args[@]}" "$@"
}

View File

@@ -0,0 +1 @@
bindkey -s '^o' 'ranger\n'

File diff suppressed because it is too large Load Diff

4
profiles/base/.zshrc Normal file
View File

@@ -0,0 +1,4 @@
# load zsh configuration
for file in "${HOME}/.zsh/conf.d/"*.zsh(N); do
source "${file}"
done

View File

@@ -0,0 +1,3 @@
#include ".Xresources.d/rxvt-unicode"
#include ".Xresources.d/fonts"
#include ".Xresources.d/themes/Elementary"

View File

@@ -0,0 +1,6 @@
Xft.antialias: true
Xft.rgba: rgb
Xft.hinting: true
Xft.hintstyle: hintslight
Xft.autohint: true
Xft.lcdfilter: lcddefault

View File

@@ -0,0 +1,47 @@
! terminal font
URxvt.font: xft:Hack Nerd Font:size=10:style=Regular
URxvt.boldFont: xft:Hack Nerd Font:size=10:style=Bold
URxvt.italicFont: xft:Hack Nerd Font:size=10:style=Italic
URxvt.boldItalicFont: xft:Hack Nerd Font:size=10:style=Bold Italic
URxvt.letterSpace: -1
URxvt.lineSpace: -1
! scrollback buffer lines - 65535 is max on most machines (64 is default)
URxvt.saveLines: 16384
! scroll bar
URxvt.scrollBar: false
URxvt.scrollBar_right: false
URxvt.scrollBar_floating: false
URxvt.scrollstyle: rxvt
! transparency
URxvt.inheritPixmap: true
URxvt.transparent: true
! URxvt*shading: 0 to 99 darkens, 101 to 200 lightens
URxvt.shading: 20
! The string will be interpreted as if typed into the shell as-is.
! In this example, printing will be disabled altogether.
URxvt.print-pipe: "cat > /dev/null"
!-*- Perl extensions -*-
URxvt.perl-ext-common: default,selection-to-clipboard,matcher,keyboard-select,url-select,font-size,clipboard
URxvt.keysym.M-u: perl:url-select:select_next
URxvt.url-select.button: 1
URxvt.url-select.launcher: chromium
URxvt.url-select.underline: true
URxvt.keysym.M-Escape:perl:keyboard-select:activate
! The following configuration will automatically update the CLIPBOARD when the PRIMARY selection changes
! This is deprecated since Control-Alt-C/V has been implemented since 9.20
URxvt.clipboard.autocopy: true
URxvt.keysym.C-V: clipboard:paste
URxvt.keysym.C-Up: font-size:increase
URxvt.keysym.C-Down: font-size:decrease
URxvt.keysym.C-S-Up: font-size:incglobal
URxvt.keysym.C-S-Down: font-size:decglobal
URxvt.keysym.C-equal: font-size:reset
URxvt.keysym.C-slash: font-size:show
! fix geometry
URxvt.geometry: 400x400

View File

@@ -0,0 +1,44 @@
!
! Generated with :
! XRDB2Xreources.py
!
*.foreground: #efefef
*.background: #000000
*.cursorColor: #bbbbbb
!
! Black
*.color0: #000000
*.color8: #5d5d5d
!
! Red
*.color1: #e1321a
*.color9: #ff361e
!
! Green
*.color2: #6ab017
*.color10: #7bc91f
!
! Yellow
*.color3: #ffc005
*.color11: #ffd00a
!
! Blue
*.color4: #004f9e
*.color12: #0071ff
!
! Magenta
*.color5: #ec0048
*.color13: #ff1d62
!
! Cyan
*.color6: #2aa7e7
*.color14: #4bb8fd
!
! White
*.color7: #f2f2f2
*.color15: #ffffff
!
! Bold, Italic, Underline
*.colorBD: #ffffff
!*.colorIT:
!*.colorUL:

View File

@@ -0,0 +1,85 @@
[env]
TERM = 'xterm-256color'
[cursor]
style = 'Underline'
[[keyboard.bindings]]
key = 'V'
mods = 'Control|Alt'
action = 'Paste'
[[keyboard.bindings]]
key = 'C'
mods = 'Control|Alt'
action = 'Copy'
[[keyboard.bindings]]
key = 'V'
mods = 'Control|Shift'
action = 'None'
[[keyboard.bindings]]
key = 'C'
mods = 'Control|Shift'
action = 'None'
# Colors (Elementary)
[colors.bright]
black = '#5d5d5d'
blue = '#0071ff'
cyan = '#4bb8fd'
green = '#7bc91f'
magenta = '#ff1d62'
red = '#ff361e'
white = '#ffffff'
yellow = '#ffd00a'
[colors.cursor]
cursor = '#bbbbbb'
text = '#ffffff'
[colors.normal]
black = '#000000'
blue = '#004f9e'
cyan = '#2aa7e7'
green = '#6ab017'
magenta = '#ec0048'
red = '#e1321a'
white = '#f2f2f2'
yellow = '#ffc005'
[colors.primary]
background = '#000000'
foreground = '#efefef'
[colors.selection]
background = '#b5d5ff'
text = '#000000'
[window]
opacity = 0.9
[font]
size = 15.0
[font.offset]
x = -1
y = -1
[font.bold]
family = 'Hack Nerd Font Mono'
style = 'Bold'
[font.bold_italic]
family = 'Hack Nerd Font Mono'
style = 'Bold Italic'
[font.italic]
family = 'Hack Nerd Font Mono'
style = 'Italic'
[font.normal]
family = 'Hack Nerd Font Mono'
style = 'Regular'

View File

@@ -0,0 +1,20 @@
[Qt]
style=GTK+
[qt]
GUIEffects=none
KDE\contrast=7
KWinPalette\activeBackground=#272727
KWinPalette\activeBlend=#272727
KWinPalette\activeForeground=#dfdfdf
KWinPalette\activeTitleBtnBg=#121212
KWinPalette\frame=#121212
KWinPalette\inactiveBackground=#1e1e1e
KWinPalette\inactiveBlend=#1e1e1e
KWinPalette\inactiveForeground=#8b8b8b
KWinPalette\inactiveFrame=#121212
KWinPalette\inactiveTitleBtnBg=#121212
Palette\active=#dfdfdf, #2e2e2e, #dbdbdb, #b2b2b2, #949494, #6d6d6d, #dfdfdf, #ffffff, #ffffff, #1e1e1e, #121212, #b2b2b2, #285616, #ffffff, #5be026, #ad65af, #2d2d2d, #000000, #616161, #dfdfdf, #696969, #285616
Palette\disabled=#565656, #2c2c2c, #dbdbdb, #b2b2b2, #949494, #6d6d6d, #5d5d5d, #ffffff, #727272, #1d1d1d, #111111, #b2b2b2, #111111, #565656, #315d1f, #4c344d, #2b2b2b, #000000, #616161, #dfdfdf, #363636, #111111
Palette\inactive=#dfdfdf, #2e2e2e, #dbdbdb, #b2b2b2, #949494, #6d6d6d, #dfdfdf, #ffffff, #ffffff, #1e1e1e, #121212, #b2b2b2, #15290d, #dfdfdf, #5be026, #ad65af, #2d2d2d, #000000, #616161, #dfdfdf, #696969, #15290d
font="Noto Sans,10,-1,0,400,0,0,0,0,0,0,0,0,0,0,1"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
priority bat
set chafasixel

View File

@@ -0,0 +1,25 @@
[global]
font = Hack Nerd Font 12
enable_recursive_icon_lookup = true
icon_theme = "Numix-Circle"
width = 550
offset = 10x10
gap_size = 5
[urgency_low]
background = "#066d01"
foreground = "#eeeeee"
frame_color = "#044201"
timeout = 5
[urgency_normal]
background = "#066d01"
foreground = "#eeeeee"
frame_color = "#044201"
timeout = 10
[urgency_critical]
background = "#6d0a01"
foreground = "#eeeeee"
frame_color = "#420601"
timeout = 20

View File

@@ -0,0 +1,37 @@
[main]
font=Hack Nerd Font Mono:size=15
font-bold=Hack Nerd Font Mono:size=15:style=Bold
font-italic=Hack Nerd Font Mono:size=15:style=Italic
font-bold-italic=Hack Nerd Font Mono:size=15:style=Bold Italic
line-height=17
letter-spacing=-1
[cursor]
style=underline
[key-bindings]
clipboard-paste=Control+Alt+v XF86Paste
clipboard-copy=Control+Alt+c XF86Copy
[colors]
background=000000
foreground=efefef
selection-background=b5d5ff
selection-foreground=000000
regular0=000000
regular1=e1321a
regular2=6ab017
regular3=ffc005
regular4=004f9e
regular5=ec0048
regular6=2aa7e7
regular7=f2f2f2
bright0=5d5d5d
bright1=ff361e
bright2=7bc91f
bright3=ffd00a
bright4=0071ff
bright5=ff1d62
bright6=4bb8fd
bright7=ffffff
alpha=0.8

View File

@@ -0,0 +1,25 @@
[Settings]
gtk-application-prefer-dark-theme=true
gtk-button-images=true
gtk-cursor-blink=true
gtk-cursor-blink-time=1000
gtk-cursor-theme-name=Vimix-cursors
gtk-cursor-theme-size=24
gtk-decoration-layout=icon:minimize,maximize,close
gtk-enable-animations=true
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-font-name=Noto Sans, 10
gtk-icon-theme-name=Numix-Circle
gtk-menu-images=true
gtk-modules=colorreload-gtk-module
gtk-primary-button-warps-slider=true
gtk-sound-theme-name=ocean
gtk-theme-name=Materia-dark-compact
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-toolbar-style=3
gtk-xft-antialias=1
gtk-xft-dpi=98304
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb

View File

@@ -0,0 +1,14 @@
[Settings]
gtk-application-prefer-dark-theme=true
gtk-cursor-blink=true
gtk-cursor-blink-time=1000
gtk-cursor-theme-name=Vimix-cursors
gtk-cursor-theme-size=24
gtk-decoration-layout=icon:minimize,maximize,close
gtk-enable-animations=true
gtk-font-name=Noto Sans, 10
gtk-icon-theme-name=Numix-Circle
gtk-primary-button-warps-slider=true
gtk-sound-theme-name=ocean
gtk-theme-name=Materia-dark-compact
gtk-xft-dpi=98304

View File

@@ -0,0 +1,7 @@
{
"term": "alacritty",
"shells": {
"shell": "zsh -c 'tmuxinator start quake'"
},
"ratio": 0.5
}

View File

@@ -0,0 +1,314 @@
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
# Should you change your keyboard layout some time, delete
# this file and re-run i3-config-wizard(1).
#
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
set $Locker ~/.config/i3/i3lock-multimonitor/lock -i ~/.config/i3/lockscreen.png
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Iosevka,Font Awesome 7 Free,Font Awesome 7 Brands 9
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 12
# prevent blank screen & auto lock
exec --no-startup-id xset s off -dpms
# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment i3
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- $Locker
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
# exec --no-startup-id nm-applet
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym $mod+F4 exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# Pipewire-pulse
bindsym $mod+F3 exec pactl set-sink-mute 0 toggle
bindsym $mod+F3 --release exec pkill -RTMIN+1 i3blocks
bindsym $mod+F1 exec pactl set-sink-volume 0 -1%
bindsym $mod+F1 --release exec pkill -RTMIN+1 i3blocks
bindsym $mod+F2 exec pactl set-sink-volume 0 +1%
bindsym $mod+F2 --release exec pkill -RTMIN+1 i3blocks
# Media player controls
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioPause exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
# don't follow focus with mouse
focus_follows_mouse no
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
# start a terminal
bindsym $mod+Return exec alacritty
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
#bindsym $mod+d exec --no-startup-id dmenu_run
# A more modern dmenu replacement is rofi:
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+Control+h split h
# split in vertical orientation
bindsym $mod+Control+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1: "
set $ws2 "2: "
set $ws3 "3: "
set $ws4 "4: "
set $ws5 "5: Torrenty"
set $ws6 "6: Libreoffice"
set $ws7 "7: Wirtualki"
set $ws8 "8: Emacs"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
set $mode_system (l)ock, l(o)gout, (s)uspend, (h)ibernate, (r)eboot, shu(t)down
mode "$mode_system" {
bindsym l exec --no-startup-id $Locker, mode "default"
bindsym o exec --no-startup-id i3-msg exit, mode "default"
bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
bindsym r exec --no-startup-id systemctl reboot, mode "default"
bindsym h exec --no-startup-id systemctl hibernate, mode "default"
bindsym t exec --no-startup-id systemctl poweroff -i, mode "default"
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+Shift+e mode "$mode_system"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym h resize shrink width 10 px or 10 ppt
bindsym j resize grow height 10 px or 10 ppt
bindsym k resize shrink height 10 px or 10 ppt
bindsym l resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3blocks -c ~/.config/i3blocks/i3blocks.conf
position top
i3bar_command i3bar --transparency
tray_output none
colors {
background #00000099
statusline #ffffff
separator #000000
focused_workspace #34003f #6e0284 #ffffff
#active_workspace #333333 #5f676a #ffffff
inactive_workspace #220028 #35013f #888888
urgent_workspace #470801 #630000 #ffffff
#binding_mode #2f343a #900000 #ffffff
}
}
# gnome-keyring
exec --no-startup-id dbus-update-activation-environment --systemd --all
exec --no-startup-id gnome-keyring-daemon --start --components=secrets
# picom
exec --no-startup-id picom
# dunst
exec --no-startup-id dunst
# display wallpaper
exec --no-startup-id feh --bg-fill ~/.config/i3/wallpaper.png
# shortcut for lockscreen
bindsym $mod+x exec $Locker
# set default workspace layout
workspace_layout tabbed
# window assignments
assign [class="[Ff]irefox.*"] $ws2
assign [class="[Ll]ibre[Ww]olf"] $ws2
assign [class="[Cc]hromium"] $ws3
assign [class="[Gg]oogle[ -]*[Cc]hrome.*"] $ws3
assign [class="[Tt]hunderbird.*"] $ws4
assign [class="[Tt]or\s*[Bb]rowser"] $ws10
assign [class="[Nn]yxt"] $ws10
assign [class="qutebrowser"] $ws10
assign [class="[Ll]uakit"] $ws10
assign [class="[Vv]irt[ -]*manager"] $ws7
assign [class="[Vv]irt[ -]*viewer"] $ws7
assign [class="[Qq]emu"] $ws7
assign [class="q[Bb]ittorrent"] $ws5
assign [class="[Nn]icotine"] $ws5
assign [class="[Ll]ibreoffice.*"] $ws6
assign [class="[Mm]ullvad.*"] $ws10
assign [class="[Qq]t[ -]*[Cc]reator"] $ws10
assign [class="[Ee]macs"] $ws8
assign [class="[Kk]iwix"] $ws10
assign [class="[Gg]alaxy[ -]*[Bb]uds[ -]*[Cc]lient"] $ws10
assign [class="[Kk]ee[Pp]ass.*"] $ws10
assign [class="[Tt]hunar"] $ws10
assign [class="[Pp][Hh][Pp][Ss]torm"] $ws10
assign [class="[Rr]uby[Mm]ine"] $ws10
assign [class="[Dd]ata[Gg]rip"] $ws10
assign [class="[Ww]eb[Ss]torm"] $ws10
assign [class="[Jj]etbrains.*"] $ws10
for_window [class="[Tt]or\s*[Bb]rowser"] floating enable, border normal
for_window [class="[Ff]lame[Ss]hot"] floating enable, border normal
# color scheme for windows
# border background text indicator (a line which shows where the next window will be placed)
client.focused #0b4701 #044f00 #ffffff #0b4701
client.unfocused #072d00 #023000 #969696 #072d00
client.focused_inactive #072d00 #023000 #969696 #072d00
client.urgent #630000 #630000 #ffffff #630000
# hide title bar
default_border pixel 1
default_floating_border pixel 1
# start rofi
bindsym $mod+d exec --no-startup-id rofi -show combi
bindsym $mod+p exec --no-startup-id ~/.local/bin/rofi-pass
# i3-quickterm
bindsym $mod+b exec i3-quickterm shell
# flameshot (for screenshots)
bindsym $mod+Print exec flameshot full -u -p ~/Pictures/Screenshots
bindsym $mod+Shift+Print exec flameshot gui -u -p ~/Pictures/Screenshots
bindsym Print exec flameshot full -p ~/Pictures/Screenshots
bindsym Shift+Print exec flameshot gui -p ~/Pictures/Screenshots

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 KiB

View File

@@ -0,0 +1,76 @@
# Global properties
separator=false
separator_block_width=15
#[essid]
#command=~/.config/i3blocks/i3blocks-contrib/essid/essid
#interval=60
#INTERFACE=wlo1
#label=
#separator=false
#
#[wifi]
#command=~/.config/i3blocks/i3blocks-contrib/wifi/wifi
#INTERFACE=wlo1
#interval=60
#
[iface]
command=~/.config/i3blocks/i3blocks-contrib/iface/iface
LABEL=
ADDRESS_FAMILY=inet6?
color=#00FF00
interval=10
# set this to 1 to display the name of the connected WIFI interface instead of the IP address.
display_wifi_name=1
[load_average]
command=~/.config/i3blocks/i3blocks-contrib/load_average/load_average
interval=10
min_width= 99.99
align=center
[memory]
command=~/.config/i3blocks/i3blocks-contrib/memory/memory
label=
interval=30
separator=false
# [memory]
# command=~/.config/i3blocks/i3blocks-contrib/memory/memory
# label=
# instance=swap
# interval=30
[temperature]
command=~/.config/i3blocks/i3blocks-contrib/temperature/temperature
label=
interval=10
T_WARN=70
T_CRIT=90
SENSOR_CHIP=coretemp-isa-0000
min_width=  100.0°C
align=center
[volume-pipewire]
command=~/.config/i3blocks/i3blocks-contrib/volume-pipewire/volume-pipewire
interval=persist
signal=1
SUBSCRIBE=1
[battery]
command=~/.config/i3blocks/i3blocks-contrib/battery/battery
interval=30
#LABEL=BAT
LABEL=⚡
#BAT_NUMBER=0
[time]
label=
command=date '+%d %b %Y %a'
interval=1
separator=false
[time]
label=
command=date '+%H:%M'
interval=1

View File

@@ -0,0 +1,114 @@
# interpreter for shell commands
set shell sh
# set '-eu' options for shell commands
# These options are used to have safer shell commands. Option '-e' is used to
# exit on error and option '-u' is used to give error for unset variables.
# Option '-f' disables pathname expansion which can be useful when $f, $fs, and
# $fx variables contain names with '*' or '?' characters. However, this option
# is used selectively within individual commands as it can be limiting at
# times.
set shellopts '-eu'
# set internal field separator (IFS) to "\n" for shell commands
# This is useful to automatically split file names in $fs and $fx properly
# since default file separator used in these variables (i.e. 'filesep' option)
# is newline. You need to consider the values of these options and create your
# commands accordingly.
set ifs "\n"
# leave some space at the top and the bottom of the screen
set scrolloff 10
# Use the `dim` attribute instead of underline for the cursor in the preview pane
set cursorpreviewfmt "\033[7;2m"
# use enter for shell commands
map <enter> shell
# show the result of execution of previous commands
map ` !true
# execute current file (must be executable)
map x $$f
map X !$f
# dedicated keys for file opener actions
map o &mimeopen $f
map O $mimeopen --ask $f
# define a custom 'open' command
# This command is called when current file is not a directory. You may want to
# use either file extensions and/or mime types here. Below uses an editor for
# text files and a file opener for the rest.
cmd open &{{
case $(file --mime-type -Lb $f) in
text/*) lf -remote "send $id \$$EDITOR \$fx";;
*) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;;
esac
}}
# mkdir command. See wiki if you want it to select created dir
map a :push %mkdir<space>
# define a custom 'rename' command without prompt for overwrite
# cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
# map r push :rename<space>
# make sure trash folder exists
# %mkdir -p ~/.trash
# move current file or selected files to trash folder
# (also see 'man mv' for backup/overwrite options)
cmd trash %set -f; mv -t ~/.trash $fx
# define a custom 'delete' command
# cmd delete ${{
# set -f
# printf "$fx\n"
# printf "delete? [y/N] "
# read ans
# [ "$ans" = "y" ] && rm -rf $fx
# }}
# use '<delete>' key for either 'trash' or 'delete' command
# map <delete> trash
# map <delete> delete
# extract the current file with the right command
# (xkcd link: https://xkcd.com/1168/)
cmd extract ${{
set -f
case $f in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;;
*.zip) unzip $f;;
*.rar) unrar x $f;;
*.7z) 7z x $f;;
esac
}}
# compress current file or selected files with tar and gunzip
cmd tar ${{
set -f
mkdir $1
cp -r $fx $1
tar czf $1.tar.gz $1
rm -rf $1
}}
# compress current file or selected files with zip
cmd zip ${{
set -f
mkdir $1
cp -r $fx $1
zip -r $1.zip $1
rm -rf $1
}}
# set previewer
set previewer ctpv
set cleaner ctpvclear
&ctpv -s $id
&ctpvquit $id

View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
## ~/.config/lf/previewer_sandbox
set -euo pipefail
(
exec bwrap \
--ro-bind /usr/bin /usr/bin \
--ro-bind /usr/share/ /usr/share/ \
--ro-bind /usr/lib /usr/lib \
--ro-bind /usr/lib64 /usr/lib64 \
--symlink /usr/bin /bin \
--symlink /usr/bin /sbin \
--symlink /usr/lib /lib \
--symlink /usr/lib64 /lib64 \
--proc /proc \
--dev /dev \
--ro-bind /etc /etc \
--ro-bind ~/.config ~/.config \
--ro-bind ~/.cache ~/.cache \
--ro-bind "$PWD" "$PWD" \
--unshare-all \
--new-session \
ctpv "$@"
)

View File

@@ -0,0 +1,18 @@
font=Hack Nerd Font 12
icon-path=/usr/share/icons/Numix-Circle
width=550
border-size=3
padding=10,10,10,10
background-color=#055d01
text-color=#eeeeee
border-color=#044201
default-timeout=10000
[urgency="low"]
default-timeout=5000
[urgency="critical"]
background-color=#6d0a01
text-color=#eeeeee
border-color=#420601
default-timeout=20000

View File

@@ -0,0 +1,30 @@
# Recommended location for database
db_file "~/.config/mpd/database"
# If running mpd using systemd, delete this line to log directly to systemd.
#log_file "syslog"
# The music directory is by default the XDG directory, uncomment to amend and choose a different directory
music_directory "~/Music"
# Uncomment to refresh the database whenever files in the music_directory are changed
#auto_update "yes"
#auto_update_depth "5"
# Uncomment to enable the functionalities
playlist_directory "~/.config/mpd/playlists"
#pid_file "~/.config/mpd/pid"
state_file "~/.config/mpd/state"
sticker_file "~/.config/mpd/sticker.sql"
bind_to_address "~/.config/mpd/socket"
restore_paused "yes"
#max_output_buffer_size "32768"
audio_output {
type "pipewire"
name "Pipewire Output"
}

View File

@@ -0,0 +1,30 @@
def_key "j"
scroll_down
def_key "k"
scroll_up
def_key "h"
previous_column
def_key "h"
volume_down
def_key "l"
next_column
def_key "l"
volume_up
def_key "ctrl-b"
page_up
def_key "ctrl-u"
page_up
def_key "ctrl-f"
page_down
def_key "ctrl-d"
page_down
def_key "g"
move_home
def_key "G"
move_end
def_key "n"
next_found_item
def_key "N"
previous_found_item
def_key ";"
show_lyrics

View File

@@ -0,0 +1,2 @@
seek_time = "2"
lyrics_fetchers = tekstowo

View File

@@ -0,0 +1,7 @@
line_endings = 'Unix'
indent_type = 'Spaces'
indent_width = 2
quote_style = 'AutoPreferSingle'
call_parentheses = 'Always'
[sort_requires]
enabled = true

View File

@@ -0,0 +1,4 @@
-- set default tab width to 2 spaces
vim.opt_local.tabstop = 2 -- number of spaces that a tab counts for
vim.opt_local.shiftwidth = 2 -- size of an autoindented shift
vim.opt_local.softtabstop = 0 -- indentation size

View File

@@ -0,0 +1 @@
vim.opt_local.expandtab = false -- use tabs instead of spaces

View File

@@ -0,0 +1,4 @@
-- set default tab width to 2 spaces
vim.opt_local.tabstop = 2 -- number of spaces that a tab counts for
vim.opt_local.shiftwidth = 2 -- size of an autoindented shift
vim.opt_local.softtabstop = 0 -- indentation size

View File

@@ -0,0 +1,8 @@
-- load settings
require('config.settings')
-- load plugins
require('config.lazy')
-- load keybindings
require('config.keybindings')

View File

@@ -0,0 +1,36 @@
{
"LuaSnip": { "branch": "master", "commit": "dae4f5aaa3574bd0c2b9dd20fb9542a02c10471c" },
"catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" },
"gitsigns.nvim": { "branch": "main", "commit": "abf82a65f185bd54adc0679f74b7d6e1ada690c9" },
"guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"lspkind.nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "c953789db7fd28eafe5eb5659846d34b5024b3cc" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" },
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
"neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
"nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" },
"nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" },
"nvim-config-local": { "branch": "main", "commit": "990f3e35e0fba8fb83012d7e85f9a6a77de7f87f" },
"nvim-lint": { "branch": "master", "commit": "bcd1a44edbea8cd473af7e7582d3f7ffc60d8e81" },
"nvim-lspconfig": { "branch": "master", "commit": "3f58aeca0c6ece8a9fb8782ea3fcb6024f285be3" },
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
"nvim-treesitter": { "branch": "main", "commit": "4967fa48b0fe7a7f92cee546c76bb4bb61bb14d5" },
"nvim-ts-autotag": { "branch": "main", "commit": "db15f2e0df2f5db916e511e3fffb682ef2f6354f" },
"nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" },
"orgmode": { "branch": "master", "commit": "c421c7677b7332f5fd543023283a2290cf8dd4ff" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"undotree": { "branch": "master", "commit": "fc28931fbfba66ab75d9af23fe46ffbbb9de6e8c" },
"vim-indent-object": { "branch": "master", "commit": "8ab36d5ec2a3a60468437a95e142ce994df598c6" },
"vim-tmux-clipboard": { "branch": "master", "commit": "d4774dc7dfdd4b8a60613355ed32e6a1c18220cf" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
}

View File

@@ -0,0 +1,3 @@
-- keep in visual mode after indenting
vim.keymap.set('v', '<', '<gv')
vim.keymap.set('v', '>', '>gv')

View File

@@ -0,0 +1,37 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system({ 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ 'Failed to clone lazy.nvim:\n', 'ErrorMsg' },
{ out, 'WarningMsg' },
{ '\nPress any key to exit...' },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = ' '
vim.g.maplocalleader = '\\'
-- Setup lazy.nvim
require('lazy').setup({
spec = {
-- import your plugins
{ import = 'plugins' },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { 'catppuccin' } },
-- configure ui
ui = { border = 'rounded' },
-- automatically check for plugin updates
checker = { enabled = true, notify = false },
})

View File

@@ -0,0 +1,101 @@
-- true color support
vim.o.termguicolors = true
-- fix transparency issues with alacritty
local highlights = {
'Normal',
'LineNr',
'Folded',
'NonText',
'SpecialKey',
'VertSplit',
'SignColumn',
'EndOfBuffer',
'TablineFill', -- this is specific to how I like my tabline to look like
}
for _, name in pairs(highlights) do
vim.cmd.highlight(name .. ' guibg=none ctermbg=none')
end
-- disable arrow keys
local all_modes = { 'n', 'i', 'v', 'o' }
vim.keymap.set(all_modes, '<Up>', '<Nop>', { noremap = true, silent = true })
vim.keymap.set(all_modes, '<Down>', '<Nop>', { noremap = true, silent = true })
vim.keymap.set(all_modes, '<Left>', '<Nop>', { noremap = true, silent = true })
vim.keymap.set(all_modes, '<Right>', '<Nop>', { noremap = true, silent = true })
vim.o.number = true -- display line numbers
vim.opt.clipboard:append({ 'unnamedplus', 'unnamed' }) -- always use clipboard in x11
vim.o.encoding = 'UTF-8' -- sets the character encoding used inside vim
vim.o.title = true -- when on, the title of the window will be set to the value of 'titlestring'
vim.o.signcolumn = 'yes'
-- spell checking
vim.o.spell = true
vim.opt.spelllang:append({ 'en_us', 'en_gb', 'pl' })
vim.opt.spelloptions:append({ 'camel' })
vim.o.spellcapcheck = ''
-- persistent undo
local undodir = vim.fn.stdpath('state') .. 'undo'
vim.fn.mkdir(undodir, 'p', '0700')
vim.o.undodir = undodir
vim.o.undofile = true
-- set proper file types for files in ~/ansible directory
vim.filetype.add({
pattern = {
[os.getenv('HOME') .. '/ansible/.*%.yml'] = 'yaml.ansible',
},
})
-- neovim terminal configuration
local augroup_term = vim.api.nvim_create_augroup('augroup_term', { clear = true })
vim.api.nvim_create_autocmd('TermOpen', { -- enter insert mode automatically
group = augroup_term,
pattern = '*',
callback = vim.cmd.startinsert,
})
vim.api.nvim_create_autocmd('TermOpen', { -- disable number lines on terminal buffers
group = augroup_term,
pattern = '*',
callback = function()
vim.o.number = false
vim.o.relativenumber = false
end,
})
vim.api.nvim_create_autocmd('TermOpen', { -- allow use ctrl-c on terminal windows
group = augroup_term,
pattern = '*',
callback = function(args)
vim.keymap.set('n', '<C-c>', 'i<C-c>', { buffer = args.buf })
end,
})
vim.api.nvim_create_autocmd('TermEnter', { -- no sign column
group = augroup_term,
pattern = '*',
callback = function()
vim.opt_local.signcolumn = false
end,
})
vim.keymap.set('t', '<Esc>', '<C-\\><C-n>') -- esc to exit insert mode
-- set default tab width to 4 spaces
vim.o.tabstop = 4 -- number of spaces that a tab counts for
vim.o.shiftwidth = 4 -- number of spaces that are inserted during indent operations
vim.o.softtabstop = 4 -- number of spaces that are inserted after pressing tab
vim.o.expandtab = true -- use spaces instead of tabs
-- c/c++ settings
vim.opt.cinoptions:append({ 'N-s' })
-- web dev settings
vim.g.html_indent_autotags = 'html,thead,tbody,tfoot'
vim.g.html_indent_script1 = 'auto'
vim.g.html_indent_style1 = 'auto'
-- set cursor shape to underline in the normal and command mode,
-- in the insert mode change shape to vertical bar, and disable
-- blinking in all modes
vim.opt.guicursor:append({ 'n-c:hor20', 'i:ver20', 'a:blinkon0' })

View File

@@ -0,0 +1,15 @@
return {
'catppuccin/nvim',
name = 'catppuccin',
priority = 1000,
lazy = false,
config = function()
require('catppuccin').setup({
flavour = 'mocha', -- latte, frappe, macchiato, mocha
transparent_background = true, -- disables setting the background color.
})
-- setup must be called before loading
vim.cmd.colorscheme('catppuccin')
end,
}

View File

@@ -0,0 +1,6 @@
return {
-- 'norcalli/nvim-colorizer.lua',
-- config = function()
-- require('colorizer').setup({ '*' })
-- end,
}

View File

@@ -0,0 +1,37 @@
return {
'stevearc/conform.nvim',
event = { 'BufReadPre', 'BufNewFile' },
config = function()
local conform = require('conform')
conform.setup({
formatters_by_ft = {
lua = { 'stylua' },
cpp = { 'clang-format' },
c = { 'clang-format' },
html = { 'prettier' },
css = { 'prettier' },
javascript = { 'prettier' },
python = { 'autopep8', 'isort' },
bash = { 'beautysh' },
csh = { 'beautysh' },
ksh = { 'beautysh' },
sh = { 'beautysh' },
zsh = { 'beautysh' },
},
-- format_on_save = {
-- lsp_fallback = true,
-- async = false,
-- timeout_ms = 1000,
-- },
})
vim.keymap.set({ 'n', 'v' }, '<leader>cf', function()
conform.format({
lsp_fallback = true,
async = false,
timeout_ms = 1000,
})
end, { desc = 'Format file or range (in visual mode)' })
end,
}

View File

@@ -0,0 +1,48 @@
return {
'lewis6991/gitsigns.nvim',
config = function()
local gitsigns = require('gitsigns')
gitsigns.setup({
signs = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
interval = 1000,
follow_files = true,
},
attach_to_untracked = true,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
},
current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = 'single',
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1,
},
-- yadm = {
-- enable = false,
-- },
})
end,
}

View File

@@ -0,0 +1,4 @@
return {
'nmac427/guess-indent.nvim',
config = true,
}

View File

@@ -0,0 +1,102 @@
return {
'neovim/nvim-lspconfig',
event = { 'BufReadPre', 'BufNewFile' },
dependencies = {
'hrsh7th/cmp-nvim-lsp', -- LSP source for nvim-cmp,
{ 'folke/neodev.nvim', config = true },
},
config = function()
require('vim.lsp.protocol')
require('mason-lspconfig').setup({
automatic_enable = true,
})
vim.lsp.config('*', {
capabilities = {
textDocument = {
completion = {
completionItem = {
snippetSupport = false,
},
},
},
},
})
vim.lsp.config('lua_ls', {
on_init = function(client)
if client.workspace_folders then
local path = client.workspace_folders[1].name
if
path ~= vim.fn.stdpath('config')
and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc'))
then
return
end
end
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
-- Tell the language server which version of Lua you're using (most
-- likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
-- Tell the language server how to find Lua modules same way as Neovim
-- (see `:h lua-module-load`)
path = {
'lua/?.lua',
'lua/?/init.lua',
},
},
-- Make the server aware of Neovim runtime files
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME,
-- Depending on the usage, you might want to add additional paths
-- here.
'${3rd}/luv/library'
-- '${3rd}/busted/library'
},
-- Or pull in all of 'runtimepath'.
-- NOTE: this is a lot slower and will cause issues when working on
-- your own configuration.
-- See https://github.com/neovim/nvim-lspconfig/issues/3189
-- library = {
-- vim.api.nvim_get_runtime_file('', true),
-- }
},
})
end,
settings = {
Lua = {},
},
})
vim.diagnostic.config({
virtual_text = {
prefix = '', -- Could be '■', '●', '▎', 'x'
},
signs = {
text = {
[vim.diagnostic.severity.ERROR] = '󰅚 ',
[vim.diagnostic.severity.WARN] = '󰀪 ',
[vim.diagnostic.severity.INFO] = '',
[vim.diagnostic.severity.HINT] = '󰌶 ',
},
texthl = {
[vim.diagnostic.severity.ERROR] = 'DiagnosticSignError',
[vim.diagnostic.severity.WARN] = 'DiagnosticSignWarn',
[vim.diagnostic.severity.INFO] = 'DiagnosticSignInfo',
[vim.diagnostic.severity.HINT] = 'DiagnosticSignHint',
},
numhl = {
[vim.diagnostic.severity.ERROR] = 'DiagnosticSignError',
[vim.diagnostic.severity.WARN] = 'DiagnosticSignWarn',
[vim.diagnostic.severity.INFO] = 'DiagnosticSignInfo',
[vim.diagnostic.severity.HINT] = 'DiagnosticSignHint',
},
},
})
end,
}

View File

@@ -0,0 +1,11 @@
return {
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
opts = {
options = {
theme = 'catppuccin',
section_separators = { left = '', right = '' },
component_separators = { left = '', right = '' },
},
},
}

View File

@@ -0,0 +1,75 @@
return {
'williamboman/mason.nvim',
dependencies = {
'williamboman/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
},
config = function()
require('mason').setup({
ui = { border = 'rounded' },
})
require('mason-lspconfig').setup({
automatic_enable = true,
})
require('mason-tool-installer').setup({
ensure_installed = {
-- lua scripting
'stylua', -- lua formatter
'lua_ls',
-- vimrc editing
'vimls',
-- editorconfig stuff
'editorconfig-checker',
-- system administration's related stuff
'ansiblels',
'yamllint',
'systemdlint',
-- 'nginx_language_server',
'dockerls',
'docker_compose_language_service',
-- shell scripting
'shellcheck',
'bashls',
'beautysh',
-- python
'python-lsp-server',
'pylint',
'autopep8',
'mypy',
'isort',
-- c/c++
'clangd',
'clang-format',
'cmakelang',
'cmakelint',
'checkmake',
-- latex
'texlab',
'latexindent',
-- web development
'html',
'cssls',
'stylelint',
'eslint',
'standardjs',
'jsonlint',
-- databases
'sqlfluff',
-- misc
'jinja_lsp',
},
})
end,
}

View File

@@ -0,0 +1,9 @@
return {
'rcarriga/nvim-notify',
config = function()
vim.notify = require("notify")
vim.notify.setup({
background_colour = "#000000",
})
end
}

View File

@@ -0,0 +1,10 @@
return {
'windwp/nvim-autopairs',
event = 'InsertEnter',
opts = {
disable_filetype = { 'TelescopePrompt', 'spectre_panel', 'snacks_picker_input', 'vim' },
enable_afterquote = false,
enable_bracket_in_quote = false,
ignored_next_char = '[%w%.]', -- will ignore alphanumeric and `.` symbol
},
}

View File

@@ -0,0 +1,76 @@
return {
'hrsh7th/nvim-cmp',
dependencies = {
'hrsh7th/cmp-buffer', -- source for text in buffer
'hrsh7th/cmp-path', -- source for file system paths
'saadparwaiz1/cmp_luasnip', -- snippets source for nvim-cmp
{ 'L3MON4D3/LuaSnip', config = true }, -- snippets plugin
'onsails/lspkind.nvim', -- vs-code like pictograms
},
config = function()
local cmp = require('cmp')
local luasnip = require('luasnip')
local window_style = cmp.config.window.bordered({
winhighlight = 'Normal:Pmenu,FloatBorder:Pmenu,Search:None',
col_offset = -3,
side_padding = 0,
})
cmp.setup({
view = {
docs = { auto_open = false },
},
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body) -- use luasnip engine
end,
},
window = {
completion = window_style,
documentation = window_style,
},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-g>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = false }),
['<C-d>'] = cmp.mapping(function(fallback)
if cmp.visible_docs() then
cmp.close_docs()
elseif cmp.visible() then
cmp.open_docs()
else
fallback()
end
end),
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp', max_item_count = 10, keyword_length = 1 },
{ name = 'luasnip', max_item_count = 10, keyword_length = 1 },
{ name = 'buffer', max_item_count = 10, keyword_length = 1 },
{ name = 'path', max_item_count = 10, keyword_length = 1 },
}),
formatting = {
fields = { 'kind', 'abbr', 'menu' },
format = function(entry, vim_item)
local kind = require('lspkind').cmp_format({ mode = 'symbol_text', maxwidth = 50 })(entry, vim_item)
local strings = vim.split(kind.kind, '%s', { trimempty = true })
kind.kind = ' ' .. (strings[1] or '') .. ' '
kind.menu = ' (' .. (strings[2] or '') .. ')'
return kind
end,
},
enabled = function()
-- disable completion in comments
local context = require('cmp.config.context')
-- keep command mode completion enabled when cursor is in a comment
if vim.api.nvim_get_mode().mode == 'c' then
return true
else
return not context.in_treesitter_capture('comment') and not context.in_syntax_group('Comment')
end
end,
})
end,
}

View File

@@ -0,0 +1,19 @@
return {
'klen/nvim-config-local',
config = function()
require('config-local').setup({
-- Default options (optional)
-- Config file patterns to load (lua supported)
config_files = { '.nvim.lua', '.nvimrc', '.exrc' },
-- Where the plugin keeps files data
hashfile = vim.fn.stdpath('data') .. '/config-local',
autocommands_create = true, -- Create autocommands (VimEnter, DirectoryChanged)
commands_create = true, -- Create commands (ConfigLocalSource, ConfigLocalEdit, ConfigLocalTrust, ConfigLocalDeny)
silent = true, -- Disable plugin messages (Config loaded/denied)
lookup_parents = false, -- Lookup config files in parent directories
})
end,
}

View File

@@ -0,0 +1,30 @@
return {
'mfussenegger/nvim-lint',
config = function()
require('lint').linters_by_ft = {
['yaml.ansible'] = { 'ansible_lint' },
bash = { 'shellcheck' },
make = { 'checkmake' },
cmake = { 'cmakelint' },
cpp = { 'clangtidy' },
c = { 'clangtidy' },
editorconfig = { 'editorconfig-checker' },
html = { 'tidy' },
json = { 'jsonlint' },
sql = { 'sqlfluff' },
js = { 'standardjs' },
css = { 'stylelint' },
systemd = { 'systemdlint' },
yaml = { 'yamllint' },
zsh = { 'zsh' },
python = { 'pylint', 'mypy' },
}
vim.api.nvim_create_autocmd({ 'BufWritePost' }, {
callback = function()
-- try_lint without arguments runs the linters defined in `linters_by_ft`
-- for the current filetype
require('lint').try_lint()
end,
})
end,
}

View File

@@ -0,0 +1,22 @@
return {
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
lazy = false,
config = function()
local treesitter = require('nvim-treesitter')
treesitter.setup({})
treesitter.install({
'c',
'cpp',
'lua',
'bash',
'json',
'yaml',
'vim',
'dockerfile',
'gitignore',
'html',
'css',
})
end,
}

View File

@@ -0,0 +1,13 @@
return {
'windwp/nvim-ts-autotag',
config = function()
require('nvim-ts-autotag').setup({
opts = {
-- Defaults
enable_close = true, -- Auto close tags
enable_rename = true, -- Auto rename pairs of tags
enable_close_on_slash = false, -- Auto close on trailing </
},
})
end,
}

View File

@@ -0,0 +1,11 @@
return {
'nvim-orgmode/orgmode',
event = 'VeryLazy',
config = function()
-- Setup orgmode
require('orgmode').setup({
org_agenda_files = '~/orgfiles/**/*',
org_default_notes_file = '~/orgfiles/refile.org',
})
end,
}

View File

@@ -0,0 +1,21 @@
return {
'nvim-telescope/telescope.nvim',
tag = '0.1.8',
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
require('telescope').setup({
pickers = {
find_files = { theme = 'dropdown' },
grep_string = { theme = 'dropdown' },
live_grep = { theme = 'dropdown' },
},
})
-- key bindings
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = 'Telescope find files' })
vim.keymap.set('n', '<leader>fg', builtin.live_grep, { desc = 'Telescope live grep' })
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = 'Telescope buffers' })
vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = 'Telescope help tags' })
end,
}

View File

@@ -0,0 +1,5 @@
return {
'folke/todo-comments.nvim',
dependencies = { 'nvim-lua/plenary.nvim' },
config = true,
}

View File

@@ -0,0 +1,37 @@
return {
'folke/trouble.nvim',
opts = {}, -- for default options, refer to the configuration section for custom setup.
cmd = 'Trouble',
keys = {
{
'<leader>xx',
'<cmd>Trouble diagnostics toggle<cr>',
desc = 'Diagnostics (Trouble)',
},
{
'<leader>xX',
'<cmd>Trouble diagnostics toggle filter.buf=0<cr>',
desc = 'Buffer Diagnostics (Trouble)',
},
{
'<leader>cs',
'<cmd>Trouble symbols toggle focus=false<cr>',
desc = 'Symbols (Trouble)',
},
{
'<leader>cl',
'<cmd>Trouble lsp toggle focus=false win.position=right<cr>',
desc = 'LSP Definitions / references / ... (Trouble)',
},
{
'<leader>xL',
'<cmd>Trouble loclist toggle<cr>',
desc = 'Location List (Trouble)',
},
{
'<leader>xQ',
'<cmd>Trouble qflist toggle<cr>',
desc = 'Quickfix List (Trouble)',
},
},
}

View File

@@ -0,0 +1,6 @@
return {
'mbbill/undotree',
config = function()
vim.keymap.set('n', '<leader>ut', vim.cmd.UndotreeToggle)
end,
}

View File

@@ -0,0 +1,4 @@
return {
'michaeljsmith/vim-indent-object',
config = function() end,
}

View File

@@ -0,0 +1,4 @@
return {
'roxma/vim-tmux-clipboard',
config = function() end,
}

View File

@@ -0,0 +1,18 @@
return {
'folke/which-key.nvim',
event = 'VeryLazy',
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
keys = {
{
'<leader>?',
function()
require('which-key').show({ global = false })
end,
desc = 'Buffer Local Keymaps (which-key)',
},
},
}

View File

@@ -0,0 +1,39 @@
#
# $PARU_CONF
# /etc/paru.conf
# ~/.config/paru/paru.conf
#
# See the paru.conf(5) manpage for options
#
# GENERAL OPTIONS
#
[options]
PgpFetch
Devel
Provides
DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg -fossil
#AurOnly
#BottomUp
#RemoveMake
SudoLoop
#UseAsk
#SaveChanges
#CombinedUpgrade
#CleanAfter
#UpgradeMenu
#NewsOnUpgrade
LocalRepo
Chroot
Sign
SignDb
#KeepRepoCache
#
# Binary OPTIONS
#
[bin]
#FileManager = vifm
MFlags = --nosign
#Sudo = doas

View File

@@ -0,0 +1,14 @@
[github.com*]
target=github.com/whiteman808
[gitlab.com*]
target=gitlab.com/whiteman809
[bitbucket.org*]
target=bitbucket.org/whiteman808@paraboletancza.org
[codeberg.org*]
target=codeberg.org/whiteman808
[git.paraboletancza.org*]
target=git.paraboletancza.org/whiteman808

View File

@@ -0,0 +1,319 @@
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# Can be set per-window using rules.
#
# Default: false
shadow = false;
# The blur radius for shadows, in pixels.
#
# Default: 12
shadow-radius = 7;
# The opacity of shadows.
#
# Range: 0.0 - 1.0
# Default: 0.75
# shadow-opacity = .75
# The left offset for shadows, in pixels.
#
# Default: -15
shadow-offset-x = -7;
# The top offset for shadows, in pixels.
#
# Default: -15
shadow-offset-y = -7;
# Hex string color value of shadow. Formatted like "#RRGGBB", e.g. "#C0FFEE".
#
# Default: #000000
# shadow-color = "#000000"
# Crop shadow of a window fully on a particular monitor to that monitor. This is
# currently implemented using the X RandR extension.
#
# Default: false
# crop-shadow-to-monitor = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used. Can be set per-window using rules.
#
# Default: false
fading = false;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of window titlebars and borders.
#
# Range: 0.1 - 1.0
# Default: 1.0 (disabled)
frame-opacity = 0.7;
# Use fixed inactive dim value, instead of adjusting according to window opacity.
#
# Default: false
# inactive-dim-fixed = true
#################################
# Corners #
#################################
# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
#
# Default: 0 (disabled)
corner-radius = 0
#################################
# Blur #
#################################
# Parameters for background blurring, see BLUR section in the man page for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
#
# blur-strength = 5
# Blur background of semi-transparent / ARGB windows.
# Can be set per-window using rules.
#
# Default: false
# blur-background = false
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
#
# Default: false
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
#
# Default: false
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
# Can also be a pre-defined kernel, see the man page.
#
# Default: ""
blur-kern = "3x3box";
#################################
# General Settings #
#################################
# Enable remote control via D-Bus. See the man page for more details.
#
# Default: false
# dbus = true
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `egl`.
#
# Default: "xrender"
backend = "glx"
# Use higher precision during rendering, and apply dither when presenting the
# rendered screen. Reduces banding artifacts, but may cause performance
# degradation. Only works with OpenGL.
dithered-present = false;
# Enable/disable VSync.
#
# Default: false
vsync = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# Has nothing to do with `corner-radius`.
#
# Default: false
detect-rounded-corners = true;
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
#
# Default: false
detect-client-opacity = true;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. May be more accurate,
# provided that the WM supports it.
#
# Default: false
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# Default: false
unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds.
#
# Default: 0.
# unredir-if-possible-delay = 0
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# Default: false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. This usually means windows from the same application
# will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
#
# Default: false
# detect-client-leader = false
# Use of damage information for rendering. This cause the only the part of the
# screen that has actually changed to be redrawn, instead of the whole screen
# every time. Should improve performance.
#
# Default: false
use-damage = true;
# Use X Sync fence to wait for the completion of rendering of other windows,
# before using their content to render the current screen.
#
# Required for explicit sync drivers, such as nvidia.
#
# Default: false
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window
# contents. Read the man page for a detailed explanation of the interface.
#
# Can be set per-window using rules.
#
# window-shader-fg = "default"
# Force all windows to be painted with blending. Useful if you
# have a `window-shader-fg` that could turn opaque pixels transparent.
#
# Default: false
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# Default: false
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled.
#
# Default: 1.0 (disabled)
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them. e.g. placing a transparent window on top
# of another window will cut a "hole" in that window, and show the desktop background
# underneath.
#
# Default: false
# transparent-clipping = false
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case insensitive.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# Default: "warn"
# log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Rule-based per-window options.
#
# See WINDOW RULES section in the man page for how these work.
rules: ({
match = "window_type = 'tooltip'";
fade = false;
shadow = true;
shadow = false;
#opacity = 0.75;
opacity = 1;
full-shadow = false;
}, {
match = "window_type = 'dock' || "
"window_type = 'desktop' || "
"_GTK_FRAME_EXTENTS@";
blur-background = false;
}, {
match = "window_type != 'dock'";
# shader = "my_shader.frag";
}, {
match = "window_type = 'dock' || "
"window_type = 'desktop'";
corner-radius = 0;
}, {
match = "name = 'Notification' || "
"class_g = 'Conky' || "
"class_g ?= 'Notify-osd' || "
"class_g = 'Cairo-clock' || "
"_GTK_FRAME_EXTENTS@";
shadow = false;
})
# `@include` directive can be used to include additional configuration files.
# Relative paths are search either in the parent of this configuration file
# (when the configuration is loaded through a symlink, the symlink will be
# resolved first). Or in `$XDG_CONFIG_HOME/picom/include`.
#
# @include "extra.conf"

View File

@@ -0,0 +1,41 @@
## browser config
# don't load autoconfig
config.load_autoconfig(False)
# appearance
config.source('gruvbox.py')
# editor
c.editor.command = ['alacritty', '-T', 'auxiliary text edit', '-e', 'nvim', '{file}', '+call cursor({line}, {column})']
# auto save session
c.auto_save.session = True
# set dark mode
c.colors.webpage.darkmode.enabled = True
# spell checking
c.spellcheck.languages = ['en-US', 'en-GB', 'pl-PL']
# built-in adblocker
c.content.blocking.method = 'both'
## key bindings
# swap J and K
config.bind('J', 'tab-prev')
config.bind('K', 'tab-next')
# toggle dark mode
config.bind('td', 'config-cycle colors.webpage.darkmode.enabled true false')
# source config
config.bind('cs', 'config-source')
# unfocus text field after exiting insert mode
config.bind('<Escape>', 'mode-leave ;; jseval -q document.activeElement.blur()', mode='insert')
# view videos in mpv
config.bind(',m', 'spawn mpv {url}')
config.bind(',M', 'hint links spawn mpv {hint-url}')

View File

@@ -0,0 +1,332 @@
# gruvbox dark hard qutebrowser theme by Florian Bruhin <me@the-compiler.org>
#
# Originally based on:
# base16-qutebrowser (https://github.com/theova/base16-qutebrowser)
# Base16 qutebrowser template by theova and Daniel Mulford
# Gruvbox dark, hard scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
bg0_hard = "#1d2021"
bg0_soft = '#32302f'
bg0_normal = '#282828'
bg0 = bg0_normal
bg1 = "#3c3836"
bg2 = "#504945"
bg3 = "#665c54"
bg4 = "#7c6f64"
fg0 = "#fbf1c7"
fg1 = "#ebdbb2"
fg2 = "#d5c4a1"
fg3 = "#bdae93"
fg4 = "#a89984"
bright_red = "#fb4934"
bright_green = "#b8bb26"
bright_yellow = "#fabd2f"
bright_blue = "#83a598"
bright_purple = "#d3869b"
bright_aqua = "#8ec07c"
bright_gray = "#928374"
bright_orange = "#fe8019"
dark_red = "#cc241d"
dark_green = "#98971a"
dark_yellow = "#d79921"
dark_blue = "#458588"
dark_purple = "#b16286"
dark_aqua = "#689d6a"
dark_gray = "#a89984"
dark_orange = "#d65d0e"
### Completion
# 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.
c.colors.completion.fg = [fg1, bright_aqua, bright_yellow]
# Background color of the completion widget for odd rows.
c.colors.completion.odd.bg = bg0
# Background color of the completion widget for even rows.
c.colors.completion.even.bg = c.colors.completion.odd.bg
# Foreground color of completion widget category headers.
c.colors.completion.category.fg = bright_blue
# Background color of the completion widget category headers.
c.colors.completion.category.bg = bg1
# Top border color of the completion widget category headers.
c.colors.completion.category.border.top = c.colors.completion.category.bg
# Bottom border color of the completion widget category headers.
c.colors.completion.category.border.bottom = c.colors.completion.category.bg
# Foreground color of the selected completion item.
c.colors.completion.item.selected.fg = fg0
# Background color of the selected completion item.
c.colors.completion.item.selected.bg = bg4
# Top border color of the selected completion item.
c.colors.completion.item.selected.border.top = bg2
# Bottom border color of the selected completion item.
c.colors.completion.item.selected.border.bottom = c.colors.completion.item.selected.border.top
# Foreground color of the matched text in the selected completion item.
c.colors.completion.item.selected.match.fg = bright_orange
# Foreground color of the matched text in the completion.
c.colors.completion.match.fg = c.colors.completion.item.selected.match.fg
# Color of the scrollbar handle in the completion view.
c.colors.completion.scrollbar.fg = c.colors.completion.item.selected.fg
# Color of the scrollbar in the completion view.
c.colors.completion.scrollbar.bg = c.colors.completion.category.bg
### Context menu
# Background color of disabled items in the context menu.
c.colors.contextmenu.disabled.bg = bg3
# Foreground color of disabled items in the context menu.
c.colors.contextmenu.disabled.fg = fg3
# Background color of the context menu. If set to null, the Qt default is used.
c.colors.contextmenu.menu.bg = bg0
# Foreground color of the context menu. If set to null, the Qt default is used.
c.colors.contextmenu.menu.fg = fg2
# Background color of the context menus selected item. If set to null, the Qt default is used.
c.colors.contextmenu.selected.bg = bg2
#Foreground color of the context menus selected item. If set to null, the Qt default is used.
c.colors.contextmenu.selected.fg = c.colors.contextmenu.menu.fg
### Downloads
# Background color for the download bar.
c.colors.downloads.bar.bg = bg0
# Color gradient start for download text.
c.colors.downloads.start.fg = bg0
# Color gradient start for download backgrounds.
c.colors.downloads.start.bg = bright_blue
# Color gradient end for download text.
c.colors.downloads.stop.fg = c.colors.downloads.start.fg
# Color gradient stop for download backgrounds.
c.colors.downloads.stop.bg = bright_aqua
# Foreground color for downloads with errors.
c.colors.downloads.error.fg = bright_red
### Hints
# Font color for hints.
c.colors.hints.fg = bg0
# Background color for hints.
c.colors.hints.bg = 'rgba(250, 191, 47, 200)' # bright_yellow
# Font color for the matched part of hints.
c.colors.hints.match.fg = bg4
### Keyhint widget
# Text color for the keyhint widget.
c.colors.keyhint.fg = fg4
# Highlight color for keys to complete the current keychain.
c.colors.keyhint.suffix.fg = fg0
# Background color of the keyhint widget.
c.colors.keyhint.bg = bg0
### Messages
# Foreground color of an error message.
c.colors.messages.error.fg = bg0
# Background color of an error message.
c.colors.messages.error.bg = bright_red
# Border color of an error message.
c.colors.messages.error.border = c.colors.messages.error.bg
# Foreground color of a warning message.
c.colors.messages.warning.fg = bg0
# Background color of a warning message.
c.colors.messages.warning.bg = bright_purple
# Border color of a warning message.
c.colors.messages.warning.border = c.colors.messages.warning.bg
# Foreground color of an info message.
c.colors.messages.info.fg = fg2
# Background color of an info message.
c.colors.messages.info.bg = bg0
# Border color of an info message.
c.colors.messages.info.border = c.colors.messages.info.bg
### Prompts
# Foreground color for prompts.
c.colors.prompts.fg = fg2
# Border used around UI elements in prompts.
c.colors.prompts.border = f'1px solid {bg1}'
# Background color for prompts.
c.colors.prompts.bg = bg3
# Background color for the selected item in filename prompts.
c.colors.prompts.selected.bg = bg2
### Statusbar
# Foreground color of the statusbar.
c.colors.statusbar.normal.fg = fg2
# Background color of the statusbar.
c.colors.statusbar.normal.bg = bg0
# Foreground color of the statusbar in insert mode.
c.colors.statusbar.insert.fg = bg0
# Background color of the statusbar in insert mode.
c.colors.statusbar.insert.bg = dark_aqua
# Foreground color of the statusbar in passthrough mode.
c.colors.statusbar.passthrough.fg = bg0
# Background color of the statusbar in passthrough mode.
c.colors.statusbar.passthrough.bg = dark_blue
# Foreground color of the statusbar in private browsing mode.
c.colors.statusbar.private.fg = bright_purple
# Background color of the statusbar in private browsing mode.
c.colors.statusbar.private.bg = bg0
# Foreground color of the statusbar in command mode.
c.colors.statusbar.command.fg = fg3
# Background color of the statusbar in command mode.
c.colors.statusbar.command.bg = bg1
# Foreground color of the statusbar in private browsing + command mode.
c.colors.statusbar.command.private.fg = c.colors.statusbar.private.fg
# Background color of the statusbar in private browsing + command mode.
c.colors.statusbar.command.private.bg = c.colors.statusbar.command.bg
# Foreground color of the statusbar in caret mode.
c.colors.statusbar.caret.fg = bg0
# Background color of the statusbar in caret mode.
c.colors.statusbar.caret.bg = dark_purple
# Foreground color of the statusbar in caret mode with a selection.
c.colors.statusbar.caret.selection.fg = c.colors.statusbar.caret.fg
# Background color of the statusbar in caret mode with a selection.
c.colors.statusbar.caret.selection.bg = bright_purple
# Background color of the progress bar.
c.colors.statusbar.progress.bg = bright_blue
# Default foreground color of the URL in the statusbar.
c.colors.statusbar.url.fg = fg4
# Foreground color of the URL in the statusbar on error.
c.colors.statusbar.url.error.fg = dark_red
# Foreground color of the URL in the statusbar for hovered links.
c.colors.statusbar.url.hover.fg = bright_orange
# Foreground color of the URL in the statusbar on successful load
# (http).
c.colors.statusbar.url.success.http.fg = bright_red
# Foreground color of the URL in the statusbar on successful load
# (https).
c.colors.statusbar.url.success.https.fg = fg0
# Foreground color of the URL in the statusbar when there's a warning.
c.colors.statusbar.url.warn.fg = bright_purple
### tabs
# Background color of the tab bar.
c.colors.tabs.bar.bg = bg0
# Color gradient start for the tab indicator.
c.colors.tabs.indicator.start = bright_blue
# Color gradient end for the tab indicator.
c.colors.tabs.indicator.stop = bright_aqua
# Color for the tab indicator on errors.
c.colors.tabs.indicator.error = bright_red
# Foreground color of unselected odd tabs.
c.colors.tabs.odd.fg = fg2
# Background color of unselected odd tabs.
c.colors.tabs.odd.bg = bg2
# Foreground color of unselected even tabs.
c.colors.tabs.even.fg = c.colors.tabs.odd.fg
# Background color of unselected even tabs.
c.colors.tabs.even.bg = bg3
# Foreground color of selected odd tabs.
c.colors.tabs.selected.odd.fg = fg2
# Background color of selected odd tabs.
c.colors.tabs.selected.odd.bg = bg0
# Foreground color of selected even tabs.
c.colors.tabs.selected.even.fg = c.colors.tabs.selected.odd.fg
# Background color of selected even tabs.
c.colors.tabs.selected.even.bg = bg0
# Background color of pinned unselected even tabs.
c.colors.tabs.pinned.even.bg = bright_green
# Foreground color of pinned unselected even tabs.
c.colors.tabs.pinned.even.fg = bg2
# Background color of pinned unselected odd tabs.
c.colors.tabs.pinned.odd.bg = bright_green
# Foreground color of pinned unselected odd tabs.
c.colors.tabs.pinned.odd.fg = c.colors.tabs.pinned.even.fg
# Background color of pinned selected even tabs.
c.colors.tabs.pinned.selected.even.bg = bg0
# Foreground color of pinned selected even tabs.
c.colors.tabs.pinned.selected.even.fg = c.colors.tabs.selected.odd.fg
# Background color of pinned selected odd tabs.
c.colors.tabs.pinned.selected.odd.bg = c.colors.tabs.pinned.selected.even.bg
# Foreground color of pinned selected odd tabs.
c.colors.tabs.pinned.selected.odd.fg = c.colors.tabs.selected.odd.fg
# Background color for webpages if unset (or empty to use the theme's
# color).
# c.colors.webpage.bg = bg4

Some files were not shown because too many files have changed in this diff Show More