Compare commits

...

No commits in common. "master" and "v2" have entirely different histories.
master ... v2

50 changed files with 1614 additions and 919 deletions

184
.ashrc Normal file
View File

@ -0,0 +1,184 @@
# Minimal epic ash shell - efficient and powerful
# Core environment
export EDITOR='nvim' VISUAL='nvim'
export LANG="en_US.UTF-8"
export PATH="$HOME/.local/bin:$HOME/void-pilot:$HOME/go/bin:$HOME/scripts:$PATH"
export GOPATH="$HOME/go"
export SVDIR="$HOME/.local/service"
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
export DBUS_SESSION_BUS_ADDRESS="unix:path=$XDG_RUNTIME_DIR/bus"
#export CC="zig cc" CXX="zig c++" CGO_ENABLED=1
umask 077
# Start DBUS if needed
export $(dbus-launch)
# Aliases - battle-tested efficiency
alias ls='ls --color=auto -F'
alias ll='ls -lh'
alias la='ls -A'
alias lt='ls -lhtr'
alias rm='rm -i' cp='cp -i' mv='mv -i'
alias rmdir='rmdir -v'
alias @='cd'
alias ..='cd ..' ...='cd ../..' ....='cd ../../..'
alias c='clear' q='exit'
alias du='du -h' df='df -h'
# XBPS - Void's lightning arsenal
alias xd='doas xbps-install -Sy'
alias xu='doas xbps-install -Su'
alias xs='doas xbps-install -S'
alias xr='doas xbps-remove -R'
alias xq='xbps-query'
alias xf='xbps-query -s'
alias xro='doas xbps-remove -Oo' # Remove orphans
alias xclean='doas vkpurge rm all' # Clean old kernels
# Zig supremacy
export PATH="$HOME/.zig/zig-x86_64-linux-0.15.0-dev.769+4d7980645/:$PATH"
alias zbr='zig build run'
alias zb='zig build -Doptimize=ReleaseFast'
alias zbs='zig build -Doptimize=ReleaseSafe'
alias zbw='zig build run --watch -fincremental'
#alias cc="zig cc" c++="zig c++" gcc="zig cc" g++="zig c++"
# Git essentials
alias gs='git status --short'
alias ga='git add'
alias gap='git add --patch'
alias gc='git commit'
alias gca='git commit --amend'
alias gp='git push'
alias gu='git pull'
alias gb='git branch'
alias gd='git diff --output-indicator-new=" " --output-indicator-old=" "'
alias gds='git diff --staged --output-indicator-new=" " --output-indicator-old=" "'
alias gco='git checkout'
alias gcl='git clone'
alias gl='git log --all --graph --pretty=\
format:"%C(yellow)%h%Creset %C(green)(%ar)%Creset %C(bold blue)%d%Creset %s" '
# Mercurial giga chad commands
alias hgs='hg status'
alias hgd='hg diff'
alias hgl='hg log -l 5 --template "{node|short} | {date|isodate} | {desc|firstline}\n"'
alias hgc='hg commit'
alias hgp='hg push'
alias hgu='hg pull -u'
alias hgb='hg branch'
alias hgba='hg branches'
alias hgco='hg checkout'
alias hgnew='hg init'
# System reconnaissance
alias myip='curl -s ifconfig.co'
alias ports='ss -tulpn'
alias meminfo='free -h'
alias diskreport='df -hT / /home'
alias sysreboot='doas shutdown -r now'
alias sysoff='doas shutdown -P now'
# Enhanced tools
alias grep='grep --color=auto'
alias mkdir='mkdir -pv'
alias history='history 25'
alias pkgcount='xbps-query -l | wc -l'
# Safety first
alias ln='ln -i'
alias chmod='chmod -v'
alias chown='chown -v'
# Wofi warriors
alias powermenu="$HOME/.config/wofi/scripts/power.sh"
alias emojipicker="$HOME/.config/wofi/scripts/emojis.sh"
alias bluetoothmenu="$HOME/.config/wofi/scripts/bluetooth.sh"
export PS1="\e[32m\u\[\e[0m\]@\[\e[33m\]\h\[\e[0m\]:\[\e[34m\] \W\[\e[35m\] シスコン \[\e[0m\]"
hg_branch() {
if [ -d .hg ] || hg root >/dev/null 2>&1; then
echo " (branch: $(hg branch))"
fi
}
# Core utilities --------------------------------------------------------
# Create and enter directory
mcd() { mkdir -p "$1" && cd "$1"; }
# Archive extraction wizard
extract() {
[ -z "$1" ] && echo "Usage: extract <file>" && return 1
[ ! -f "$1" ] && echo "File not found" && return 1
case "$1" in
*.tar.bz2|*.tbz2) tar xvjf "$1" ;;
*.tar.gz|*.tgz) tar xvzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "Unsupported format" && return 1 ;;
esac
}
# Create compressed tarball
targz() {
[ -z "$2" ] && echo "Usage: targz <output.tar.gz> <input>" && return 1
tar cvzf "$1" "$2"
}
# GNU bloat report
bloat_report() {
echo "GNU packages:"
xbps-query -l | grep -i "gnu" | cut -d" " -f2 | sort
echo "\nTotal GNU packages: $(xbps-query -l | grep -i "gnu" | wc -l)"
}
# Update system and clean
void_up() {
doas xbps-install -Su
doas xbps-remove -Oo
doas vkpurge rm all
}
# Edit and reload profile
alias erc='nvim ~/.profile'
alias reload='. ~/.profile'
# Backup files with timestamp
bak() { cp -iv "$1" "${1}_$(date +%Y%m%d%H%M).bak"; }
# Start SSH Agent
#----------------------------
SSH_ENV="$HOME/.ssh/environment"
function run_ssh_env {
. "${SSH_ENV}" > /dev/null
}
function start_ssh_agent {
echo "Initializing new SSH agent..."
ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo "succeeded"
chmod 600 "${SSH_ENV}"
run_ssh_env;
ssh-add ~/.ssh/id_ed25519;
}
if [ -f "${SSH_ENV}" ]; then
run_ssh_env;
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_ssh_agent;
}
else
start_ssh_agent;
fi

96
.gitconfig Normal file
View File

@ -0,0 +1,96 @@
[user]
name="Yuzucchii"
email="me@yuzucchii.xyz"
signinkey=EFF95B412FB129BB
signingkey = /home/yu/.ssh/id_ed25519.pub
[core]
compression=9
whitespace=error
preloadindex=true
[commit]
gpgsign=true
signoff=true
verbose=false
allowEmpty=false
template=~/.config/git/template
[advice]
addEmptyPathspec=false
pushNonFastForward=false
statusHints=false
[url "ssh://git@sv.yuzucchii.xyz:2222/"]
insteadOf = "yu:"
port = 2222
[url "ssh://git@github.com:"]
insteadOf = "gh:"
[status]
branch=true
showStash=true
showUntrackedFiles=all
[diff]
context=3
renames=copies
interHunkContext=10
[pager]
markEmptyLines=false
branch=false
tag=false
[color "diff"]
meta=black bold
frag=magenta
context=white
new=green bold
whitespace=yellow reverse
old=red
[interactive]
diffFilter=diff-so-fancy --patch
singlekey=true
[push]
autoSetupRemote=true
default=current
followTags=true
[pull]
default=true
rebase=true
[rebase]
autostash=true
missingCommitsCheck=warn
[log]
abbrevCommit=true
graphColors=blue,yellow,cyan,magenta,green,red
[color "decorate"]
HEAD=red
branch=blue
tag=yellow
remoteBranch=magenta
[color "branch"]
current=magenta
local=default
remote=yellow
upstream=green
plain=blue
[branch]
sort=-committerdate
[tag]
sort=-triggerdate
gpgSign=true
[gpg]
format=ssh

2
.profile Normal file
View File

@ -0,0 +1,2 @@
export ENV=$HOME/.ashrc;
. $ENV

126
.zshrc
View File

@ -1,126 +0,0 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="heck"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)
source $ZSH/oh-my-zsh.sh
export MANPATH="/usr/local/man:$MANPATH"
export LANG=en_US.UTF-8
export EDITOR='nvim'
# Compilation flags
export ARCHFLAGS="-arch $(uname -m)"
# apps
alias powermenu="/home/yu/.config/wofi/scripts/power.sh"
alias emojipicker="/home/yu/.config/wofi/scripts/emojis.sh"
alias bluetoothmenu="/home/yu/.config/wofi/scripts/bluetooth.sh"
# Void agent xbps aliases
alias xi='doas xbps-install -Sy' # Install package
alias xu='doas xbps-install -Su' # Update system
alias xs='doas xbps-install -S' # Install without upgrade
alias xr='doas xbps-remove -R' # Remove package
alias xq='xbps-query' # Query/search packages
alias xf='xbps-query -s' # Find package
alias zbr='zig build run'
alias zb='zig build -Doptimize=ReleaseFast'
alias zbs='zig build -Doptimize=ReleaseSafe'
alias zbw='zig build run --watch -fincremental'
alias bloat-report='\
echo "GNU packages:"; \
xbps-query -l | grep -i "gnu" | cut -d" " -f2 | sort; \
echo; echo "Total GNU packages: $(xbps-query -l | grep -i "gnu" | wc -l)"'
# Void pilot
export PATH=/home/yu/void-pilot:$PATH
# .local/bin
export PATH=/home/yu/.local/bin:$PATH
# Zig
#export PATH=/home/yu/.zig/zig-linux-x86_64-0.14.0/:$PATH
#export PATH=/home/yu/.zig/zig-linux-x86_64-0.15.0-dev.386+2e35fdd03/:$PATH
#export PATH=/home/yu/.zig/zig-linux-x86_64-0.15.0-dev.451+a843be44a/:$PATH
export PATH=/home/yu/.zig/zig-linux-x86_64-0.15.0-dev.552+bc2f7c754/:$PATH
export HOME="/home/$USER"
export SVDIR="$HOME"/.local/service
export XDG_RUNTIME_DIR="/run/user/$(id -u $USER)"
export DBUS_SESSION_BUS_ADDRESS="unix:path=$XDG_RUNTIME_DIR/bus"
export GOPATH=$HOME/go
export PATH="$HOME/go/bin:$PATH"

11
config Normal file
View File

@ -0,0 +1,11 @@
Host yuzu
HostName sv.yuzucchii.xyz
Port 22 # the container port
IdentityFile ~/.ssh/ssh-key-2025-05-02.key
User yuzucchii
Host gitea
HostName git.yuzucchii.xyz
Port 2222
IdentityFile ~/.ssh/id_ed25519

View File

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#cba6f7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="4"></circle>
<path d="M12 2v2"></path>
<path d="M12 20v2"></path>
<path d="m4.93 4.93 1.41 1.41"></path>
<path d="m17.66 17.66 1.41 1.41"></path>
<path d="M2 12h2"></path>
<path d="M20 12h2"></path>
<path d="m6.34 17.66-1.41 1.41"></path>
<path d="m19.07 4.93-1.41 1.41"></path>
</svg>

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,11 @@
<svg width="96" height="96" viewBox="0 0 96 96" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="45" y="5" width="6" height="20" rx="3" fill="#6e7071"/>
<rect x="45" y="71" width="6" height="20" rx="3" fill="#6e7071"/>
<rect x="62" y="66.2426" width="6" height="20" rx="3" transform="rotate(-45 62 66.2426)" fill="#6e7071"/>
<rect x="15.0974" y="19.3401" width="6" height="20.0641" rx="3" transform="rotate(-45 15.0974 19.3401)" fill="#6e7071"/>
<rect x="5" y="51" width="6" height="20" rx="3" transform="rotate(-90 5 51)" fill="#6e7071"/>
<rect x="71" y="51" width="6" height="20" rx="3" transform="rotate(-90 71 51)" fill="#6e7071"/>
<rect x="66.4446" y="33.5867" width="6" height="20" rx="3" transform="rotate(-135 66.4446 33.5867)" fill="#6e7071"/>
<rect x="19.1094" y="80.7969" width="6" height="20.02" rx="3" transform="rotate(-135 19.1094 80.7969)" fill="#6e7071"/>
<circle cx="48" cy="48" r="19" fill="#6e7071"/>
</svg>

After

Width:  |  Height:  |  Size: 936 B

View File

@ -0,0 +1,11 @@
<svg width="96" height="96" viewBox="0 0 96 96" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="51" y="24" width="6" height="10" rx="3" transform="rotate(-180 51 24)" fill="#6e7071"/>
<rect x="45" y="71" width="6" height="10" rx="3" fill="#6e7071"/>
<rect x="62" y="66.2426" width="6" height="10" rx="3" transform="rotate(-45 62 66.2426)" fill="#6e7071"/>
<rect x="33.4822" y="29.2396" width="6" height="10" rx="3" transform="rotate(135 33.4822 29.2396)" fill="#6e7071"/>
<rect x="25" y="45" width="6" height="10" rx="3" transform="rotate(90 25 45)" fill="#6e7071"/>
<rect x="71" y="51" width="6" height="10" rx="3" transform="rotate(-90 71 51)" fill="#6e7071"/>
<rect x="66.4446" y="33.5867" width="6" height="10" rx="3" transform="rotate(-135 66.4446 33.5867)" fill="#6e7071"/>
<rect x="29.0089" y="62.4121" width="6" height="10" rx="3" transform="rotate(45 29.0089 62.4121)" fill="#6e7071"/>
<circle cx="48" cy="48" r="19" fill="#6e7071"/>
</svg>

After

Width:  |  Height:  |  Size: 959 B

View File

@ -0,0 +1,11 @@
<svg width="96" height="96" viewBox="0 0 96 96" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="51" y="24" width="6" height="15" rx="3" transform="rotate(-180 51 24)" fill="#6e7071"/>
<rect x="45" y="71" width="6" height="15" rx="3" fill="#6e7071"/>
<rect x="62" y="66.2426" width="6" height="15" rx="3" transform="rotate(-45 62 66.2426)" fill="#6e7071"/>
<rect x="33.4822" y="29.2396" width="6" height="15" rx="3" transform="rotate(135 33.4822 29.2396)" fill="#6e7071"/>
<rect x="25" y="45" width="6" height="15" rx="3" transform="rotate(90 25 45)" fill="#6e7071"/>
<rect x="71" y="51" width="6" height="15" rx="3" transform="rotate(-90 71 51)" fill="#6e7071"/>
<rect x="66.4446" y="33.5867" width="6" height="15" rx="3" transform="rotate(-135 66.4446 33.5867)" fill="#6e7071"/>
<rect x="29.0089" y="62.4121" width="6" height="15" rx="3" transform="rotate(45 29.0089 62.4121)" fill="#6e7071"/>
<circle cx="48" cy="48" r="19" fill="#6e7071"/>
</svg>

After

Width:  |  Height:  |  Size: 959 B

View File

@ -0,0 +1,11 @@
<svg width="96" height="96" viewBox="0 0 96 96" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="51" y="24" width="6" height="5" rx="2.5" transform="rotate(-180 51 24)" fill="#6e7071"/>
<rect x="45" y="71" width="6" height="5" rx="2.5" fill="#6e7071"/>
<rect x="62" y="66.2426" width="6" height="5" rx="2.5" transform="rotate(-45 62 66.2426)" fill="#6e7071"/>
<rect x="33.4822" y="29.2396" width="6" height="5" rx="2.5" transform="rotate(135 33.4822 29.2396)" fill="#6e7071"/>
<rect x="25" y="45" width="6" height="5" rx="2.5" transform="rotate(90 25 45)" fill="#6e7071"/>
<rect x="71" y="51" width="6" height="5" rx="2.5" transform="rotate(-90 71 51)" fill="#6e7071"/>
<rect x="66.4446" y="33.5867" width="6" height="5" rx="2.5" transform="rotate(-135 66.4446 33.5867)" fill="#6e7071"/>
<rect x="29.0089" y="62.4121" width="6" height="5" rx="2.5" transform="rotate(45 29.0089 62.4121)" fill="#6e7071"/>
<circle cx="48" cy="48" r="19" fill="#6e7071"/>
</svg>

After

Width:  |  Height:  |  Size: 967 B

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96 96" width="96px" height="96px">
<g id="surface94384493">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(110, 112, 113);fill-opacity:1;" d="M 48.433594 14.203125 C 48.167969 14.203125 47.90625 14.222656 47.640625 14.257812 C 46.582031 14.402344 45.539062 14.835938 44.679688 15.601562 C 44.679688 15.601562 44.679688 15.605469 44.679688 15.605469 L 26.234375 32 L 13 32 C 8.066406 32 4 36.066406 4 41 L 4 55 C 4 59.933594 8.066406 64 13 64 L 26.234375 64 L 44.679688 80.394531 C 46.402344 81.925781 48.84375 82.148438 50.691406 81.320312 C 52.539062 80.492188 54 78.515625 54 76.210938 L 54 19.789062 C 54 17.484375 52.542969 15.511719 50.695312 14.679688 C 50.003906 14.367188 49.226562 14.203125 48.433594 14.203125 Z M 80.4375 15.964844 C 79.378906 16.007812 78.421875 16.605469 77.917969 17.535156 C 77.414062 18.46875 77.441406 19.59375 77.984375 20.503906 C 88.75 39.074219 88.789062 56.929688 77.988281 75.492188 C 77.402344 76.421875 77.371094 77.59375 77.90625 78.550781 C 78.441406 79.507812 79.457031 80.097656 80.550781 80.089844 C 81.648438 80.082031 82.652344 79.472656 83.171875 78.507812 C 94.851562 58.433594 94.808594 37.566406 83.175781 17.496094 C 82.625 16.511719 81.566406 15.917969 80.4375 15.964844 Z M 71.511719 23.960938 C 70.453125 23.957031 69.46875 24.511719 68.925781 25.417969 C 68.382812 26.328125 68.355469 27.453125 68.859375 28.386719 C 75.777344 41.636719 75.777344 54.363281 68.859375 67.613281 C 68.34375 68.566406 68.378906 69.722656 68.957031 70.640625 C 69.535156 71.558594 70.558594 72.09375 71.640625 72.039062 C 72.726562 71.988281 73.695312 71.355469 74.179688 70.386719 C 81.859375 55.675781 81.859375 40.324219 74.179688 25.613281 C 73.671875 24.605469 72.640625 23.964844 71.511719 23.960938 Z M 62.34375 33.992188 C 61.339844 34.035156 60.421875 34.578125 59.902344 35.441406 C 59.382812 36.304688 59.328125 37.367188 59.761719 38.277344 C 62.792969 44.914062 62.789062 51.121094 59.746094 57.757812 C 59.292969 58.734375 59.394531 59.875 60.015625 60.753906 C 60.636719 61.632812 61.679688 62.113281 62.75 62.011719 C 63.820312 61.910156 64.753906 61.242188 65.199219 60.261719 C 68.875 52.246094 68.882812 43.796875 65.21875 35.78125 C 64.71875 34.648438 63.578125 33.9375 62.34375 33.992188 Z M 62.34375 33.992188 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96 96" width="96px" height="96px">
<g id="surface94458578">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(110, 112, 113);fill-opacity:1;" d="M 60.433594 14.203125 C 60.167969 14.203125 59.90625 14.222656 59.640625 14.257812 C 58.582031 14.402344 57.539062 14.835938 56.679688 15.601562 C 56.679688 15.601562 56.679688 15.605469 56.679688 15.605469 L 38.234375 32 L 25 32 C 20.066406 32 16 36.066406 16 41 L 16 55 C 16 59.933594 20.066406 64 25 64 L 38.234375 64 L 56.679688 80.394531 C 58.402344 81.925781 60.84375 82.148438 62.691406 81.320312 C 64.539062 80.492188 66 78.515625 66 76.210938 L 66 19.789062 C 66 17.484375 64.542969 15.511719 62.695312 14.679688 C 62.003906 14.367188 61.226562 14.203125 60.433594 14.203125 Z M 74.34375 33.992188 C 73.339844 34.035156 72.421875 34.578125 71.902344 35.441406 C 71.382812 36.304688 71.328125 37.367188 71.761719 38.277344 C 74.792969 44.914062 74.789062 51.121094 71.746094 57.757812 C 71.292969 58.734375 71.394531 59.875 72.015625 60.753906 C 72.636719 61.632812 73.679688 62.113281 74.75 62.011719 C 75.820312 61.910156 76.753906 61.242188 77.199219 60.261719 C 80.875 52.246094 80.882812 43.796875 77.21875 35.78125 C 76.71875 34.648438 75.578125 33.9375 74.34375 33.992188 Z M 74.34375 33.992188 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96 96" width="96px" height="96px">
<g id="surface94454368">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(110, 112, 113);fill-opacity:1;" d="M 54.433594 14.203125 C 54.167969 14.203125 53.90625 14.222656 53.640625 14.257812 C 52.582031 14.402344 51.539062 14.835938 50.679688 15.601562 C 50.679688 15.601562 50.679688 15.605469 50.679688 15.605469 L 32.234375 32 L 19 32 C 14.066406 32 10 36.066406 10 41 L 10 55 C 10 59.933594 14.066406 64 19 64 L 32.234375 64 L 50.679688 80.394531 C 52.402344 81.925781 54.84375 82.148438 56.691406 81.320312 C 58.539062 80.492188 60 78.515625 60 76.210938 L 60 19.789062 C 60 17.484375 58.542969 15.511719 56.695312 14.679688 C 56.003906 14.367188 55.226562 14.203125 54.433594 14.203125 Z M 77.511719 23.960938 C 76.453125 23.957031 75.46875 24.511719 74.925781 25.417969 C 74.382812 26.328125 74.355469 27.453125 74.859375 28.386719 C 81.777344 41.636719 81.777344 54.363281 74.859375 67.613281 C 74.34375 68.566406 74.378906 69.722656 74.957031 70.640625 C 75.535156 71.558594 76.558594 72.09375 77.640625 72.039062 C 78.726562 71.988281 79.695312 71.355469 80.179688 70.386719 C 87.859375 55.675781 87.859375 40.324219 80.179688 25.613281 C 79.671875 24.605469 78.640625 23.964844 77.511719 23.960938 Z M 68.34375 33.992188 C 67.339844 34.035156 66.421875 34.578125 65.902344 35.441406 C 65.382812 36.304688 65.328125 37.367188 65.761719 38.277344 C 68.792969 44.914062 68.789062 51.121094 65.746094 57.757812 C 65.292969 58.734375 65.394531 59.875 66.015625 60.753906 C 66.636719 61.632812 67.679688 62.113281 68.75 62.011719 C 69.820312 61.910156 70.753906 61.242188 71.199219 60.261719 C 74.875 52.246094 74.882812 43.796875 71.21875 35.78125 C 70.71875 34.648438 69.578125 33.9375 68.34375 33.992188 Z M 68.34375 33.992188 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96 96" width="96px" height="96px">
<g id="surface94463317">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(224,95,101);fill-opacity:1;" d="M 10.949219 7.96875 C 9.726562 7.96875 8.628906 8.710938 8.167969 9.839844 C 7.710938 10.972656 7.984375 12.269531 8.859375 13.121094 L 27.738281 32 L 19 32 C 14.039062 32 10 36.039062 10 41 L 10 55 C 10 59.960938 14.039062 64 19 64 L 32.238281 64 L 50.679688 80.398438 C 51.738281 81.339844 53.039062 81.820312 54.378906 81.820312 C 55.160156 81.820312 55.9375 81.660156 56.699219 81.320312 C 58.738281 80.398438 60 78.4375 60 76.21875 L 60 64.261719 L 82.859375 87.121094 C 83.613281 87.90625 84.730469 88.21875 85.78125 87.945312 C 86.832031 87.671875 87.652344 86.851562 87.925781 85.800781 C 88.199219 84.75 87.886719 83.632812 87.101562 82.878906 L 13.101562 8.878906 C 12.535156 8.296875 11.761719 7.96875 10.949219 7.96875 Z M 54.339844 14.175781 C 53.019531 14.1875 51.730469 14.675781 50.679688 15.601562 L 38.839844 26.140625 L 60 47.300781 L 60 19.78125 C 60 17.5625 58.738281 15.601562 56.699219 14.679688 C 55.933594 14.335938 55.132812 14.167969 54.339844 14.175781 Z M 77.28125 24.011719 C 76.894531 24.042969 76.503906 24.148438 76.140625 24.339844 C 74.660156 25.101562 74.097656 26.917969 74.859375 28.378906 C 81.121094 40.339844 81.699219 52 76.621094 63.921875 L 81.140625 68.441406 C 87.921875 54.222656 87.601562 39.820312 80.179688 25.621094 C 79.609375 24.511719 78.445312 23.917969 77.28125 24.011719 Z M 68.40625 34.023438 C 68.015625 34.035156 67.617188 34.125 67.238281 34.300781 C 65.738281 35 65.082031 36.761719 65.761719 38.28125 C 68.242188 43.703125 68.660156 48.980469 67.039062 54.339844 L 71.71875 59.019531 C 74.917969 51.300781 74.757812 43.5 71.21875 35.78125 C 70.707031 34.65625 69.578125 33.988281 68.40625 34.023438 Z M 68.40625 34.023438 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96 96" width="96px" height="96px">
<g id="surface94461773">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(110, 112, 113);fill-opacity:1;" d="M 64.433594 14.203125 C 64.167969 14.203125 63.90625 14.222656 63.640625 14.257812 C 62.582031 14.402344 61.539062 14.835938 60.679688 15.601562 C 60.679688 15.601562 60.679688 15.605469 60.679688 15.605469 L 42.234375 32 L 29 32 C 24.066406 32 20 36.066406 20 41 L 20 55 C 20 59.933594 24.066406 64 29 64 L 42.234375 64 L 60.679688 80.394531 C 62.402344 81.925781 64.84375 82.148438 66.691406 81.320312 C 68.539062 80.492188 70 78.515625 70 76.210938 L 70 19.789062 C 70 17.484375 68.542969 15.511719 66.695312 14.679688 C 66.003906 14.367188 65.226562 14.203125 64.433594 14.203125 Z M 64.433594 14.203125 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 907 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#cba6f7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-x"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line></svg>

After

Width:  |  Height:  |  Size: 365 B

1
dunst/assets/volume.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#cba6f7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-2"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path></svg>

After

Width:  |  Height:  |  Size: 354 B

View File

@ -33,7 +33,7 @@
show_age_threshold = 60
markup = "full"
font = "monospace 10"
format = "<b>%s</b>\n%b: "
format = "<b>%s</b>\n%b "
word_wrap = "yes"
sort = "yes"
shrink = "no"

45
dunst/scripts/openEwwPopup.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/bash
DND_LOCK_FILE="$HOME/.cache/dnd-lock.lock"
LOCK_FILE="$HOME/.cache/eww-notif-popup.lock"
EWW_BIN="$HOME/.local/bin/eww"
finish() {
${EWW_BIN} update noti=false; sleep 0.075
${EWW_BIN} close notification-popup
rm -f ${LOCK_FILE}
}
# Run eww daemon if not running
if [[ ! `pidof eww` ]]; then
${EWW_BIN} daemon
sleep 1
else
if [[ -f "$LOCK_FILE" ]]; then
sleep 0.275 && ${EWW_BIN} update has_another_notif=true && canberra-gtk-play -i message-new-instant
fi
if [[ ! -f "$DND_LOCK_FILE" ]]; then
KILLED=false
for pid in $(pidof -x openEwwPopup.sh); do
if [ $pid != $$ ]; then
kill -9 $pid
KILLED=true
fi
done >/dev/null
if ! $KILLED; then
sleep 0.5
${EWW_BIN} update noti=true
${EWW_BIN} open notification-popup
canberra-gtk-play -i message
touch ${LOCK_FILE}
fi
# ${EWW_BIN} update has_another_notif=true
sleep 5
finish
unset KILLED
${EWW_BIN} update has_another_notif=false
fi
fi

View File

@ -0,0 +1,3 @@
#!/bin/bash
canberra-gtk-play -i message

17
dunst/scripts/songArtLogger.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
TMP_DIR="$HOME/.cache/dunst"
TMP_COVER_PATH="$TMP_DIR/$DUNST_SUMMARY.png"
TMP_TEMP_PATH="$TMP_DIR/temp.png"
if [ ! -d "$TMP_DIR" ]; then
mkdir -p "$TMP_DIR"
fi
ART_FROM_SPOTIFY="$(playerctl -p %any,spotify metadata mpris:artUrl | sed -e 's/open.spotify.com/i.scdn.co/g')"
if [[ $(playerctl -p spotify,%any,firefox,chromium,brave,mpd metadata mpris:artUrl) ]]; then
curl -s "$ART_FROM_SPOTIFY" --output "$TMP_COVER_PATH"
fi
cp "$TMP_TEMP_PATH" "$TMP_COVER_PATH"

View File

@ -2,10 +2,10 @@
shell-integration = zsh
term = xterm-256color
custom-shader = ~/.config/ghostty/shaders/bettercrt.glsl
custom-shader-animation = true
#custom-shader = ~/.config/ghostty/shaders/bettercrt.glsl
#custom-shader-animation = true
window-decoration = true
background-opacity = 0.5
background-opacity = 0.90
theme = catppuccin-mocha
cursor-style = block
font-size = 14
@ -13,4 +13,4 @@ font-thicken = true
font-family = "FiraMono Nerd Font"
keybind = global:cmd+s=toggle_quick_terminal
mouse-hide-while-typing = true
macos-icon = xray
class = "ghostty"

View File

@ -5,9 +5,9 @@ xwayland {
}
# apps
$terminal = ghostty
$browser = firefox || chromium
$fileManager = $terminal --shell-integration=zsh --command="lf"
$terminal = ghostty
$browser = firefox
$fileManager = $terminal --command="lf"
$passwordManager = /usr/bin/keepassxc
# yes I have Discord virtualised, don't judge me
@ -15,7 +15,7 @@ $discord = /home/yu/.local/bin/distrobox-enter -n pkg -- /usr/bin/discord
# menus and scripts
$emojipicker = ~/.config/wofi/scripts/emojis.sh
$menu = wofi --style ~/.config/wofi/style/style.css --show drun
$menu = ~/scripts/menu
$powermenu = ~/.config/wofi/scripts/power.sh
exec-once = $terminal
@ -65,8 +65,8 @@ general {
col.active_border = rgba(66ccffee) rgba(99ffccff) 45deg
col.inactive_border = rgba(444444aa)
resize_on_border = false
allow_tearing = false
layout = dwindle
allow_tearing = true
layout = master
}
decoration {
@ -116,12 +116,13 @@ animations {
bezier = aero_menu, 0.1, 1, 0, 1
animation = windows, 1, 3, aero_bounce, popin 70%
animation = windowsIn, 1, 3, aero_gentle, slideup 30%
animation = windowsOut, 1, 3, aero_snap, slidedown 30%
#this crap breaks slurp do not use it
#animation = windowsIn, 1, 3, aero_gentle, slideup 30%
#animation = windowsOut, 1, 3, aero_snap, slidedown 30%
animation = border, 1, 5, linear
animation = layersIn, 1, 3, aero_gentle, slideup 20%
animation = layersOut, 1, 2, aero_snap, slidedown 20%
#animation = layersIn, 1, 3, aero_gentle, slideup 20%
#animation = layersOut, 1, 2, aero_snap, slidedown 20%
animation = fadeLayersIn, 1, 2, aero_gentle
animation = fadeLayersOut, 1, 1, aero_snap
@ -132,11 +133,6 @@ animations {
animation = borderangle, 1, 10, linear, loop
}
dwindle {
pseudotile = true
preserve_split = true
}
master {
new_status = master
}
@ -151,9 +147,9 @@ misc {
}
input {
kb_layout = us
kb_variant = intl
kb_options = "deadkeys"
kb_layout = us
kb_variant = altgr-intl
kb_options = deadkeys
follow_mouse = 1
@ -184,24 +180,27 @@ bind = $mainMod SHIFT, Q, exec, $powermenu # Shift+Q for power menu
bind = $mainMod, SPACE, exec, $menu # Spacebar for app launcher (like Spotlight)
# ==== Apps ====
bind = $mainMod, B, exec, $browser # B = Browser
bind = $mainMod, E, exec, $fileManager # E = Explorer
bind = $mainMod, D, exec, $discord # D = Discord
bind = $mainMod, P, exec, $passwordManager # P = Password manager
bind = $mainMod, X, exec, $emojipicker # X = eXpression (emoji)
bind = $mainMod SHIFT, B, exec, kill $(pidof waybar) || waybar # toggle waybar, reloads waybar
# ==== Window Management ====
bind = CONTROL, TAB, workspace, previous # Normie feature
bind = $mainMod, F, fullscreen, 1 # F = Fullscreen
bind = $mainMod SHIFT, F, fullscreen, 0 # Shift+F = Fake fullscreen
bind = $mainMod, V, togglefloating # V = "levitate" window
bind = $mainMod, C, centerwindow # C = Center window (new!)
bind = $mainMod, M, exit # M = "Murder" Hyprland (emergency)
bind = $mainMod SHIFT, M, exit # M = "Murder" Hyprland (emergency)
bind = $mainMod, i, centerwindow # C = Center window (new!)
# ==== Navigation ====
bind = $mainMod, H, movefocus, l # Vim keys for focus
bind = $mainMod, J, movefocus, d
bind = $mainMod, K, movefocus, u
bind = $mainMod, L, movefocus, r
bind = $mainMod, J, layoutmsg, cyclenext noloop
bind = $mainMod, K, layoutmsg, cycleprev noloop
bind = $mainMod, Y, layoutmsg, toggledwindle
bind = $mainMod, T, togglegroup
bind = $mainMod, O, layoutmsg, focusmaster
bind = $mainMod SHIFT, O, layoutmsg, swapwithmaster
# ==== Workspaces ====
bind = $mainMod, 1-9, workspace, 1-9 # Numbers for workspaces
@ -224,6 +223,7 @@ bindel = , XF86MonBrightnessDown, exec, brightnessctl s 10%-
# ==== Screenshots ====
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy # Area → clipboard
bind = $mainMod, U, exec, grim - | wl-copy # Fullscreen → clipboard
bind = $mainMod SHIFT, U, exec, sh ~/scripts/upload # this is epic uploader to my selfhosted site
# ==== Utilities ====
bind = $mainMod, R, exec, hyprctl reload # R = Reload config

View File

@ -8,12 +8,11 @@ $font_material_symbols = Material Symbols Rounded
background {
color = rgba(181818FF)
# TODO: set some wallpaper
# path = {{ SWWW_WALL }}
# path = "~/Pictures/wallpaper/default.jpg"
# path = screenshot
# blur_size = 15
# blur_passes = 4
path = screenshot
blur_size = 15
blur_passes = 4
}
input-field {
monitor =

View File

@ -1,4 +1,2 @@
preload = /home/yu/Pictures/wallpaper/2246.png
/home/yu/Pictures/wallpaper/0141.png
wallpaper = , /home/yu/Pictures/wallpaper/2246.png
/home/yu/Pictures/wallpaper/0141.png
preload = /home/yu/Pictures/wallpaper/1.png
wallpaper = , /home/yu/Pictures/wallpaper/1.png

View File

@ -1,4 +1,4 @@
#!/usr/bin/env zsh
#!/bin/sh
WALLPAPER_DIR="$HOME/Pictures/wallpaper/"
CURRENT_WALL=$(hyprctl hyprpaper listloaded)

174
lf/colors
View File

@ -1,174 +0,0 @@
# vim:ft=dircolors
# (This is not a dircolors file but it helps to highlight colors and comments)
# default values from dircolors
# (entries with a leading # are not implemented in lf)
# #no 00 # NORMAL
# fi 00 # FILE
# #rs 0 # RESET
# di 01;34 # DIR
# ln 01;36 # LINK
# #mh 00 # MULTIHARDLINK
# pi 40;33 # FIFO
# so 01;35 # SOCK
# #do 01;35 # DOOR
# bd 40;33;01 # BLK
# cd 40;33;01 # CHR
# or 40;31;01 # ORPHAN
# #mi 00 # MISSING
# su 37;41 # SETUID
# sg 30;43 # SETGID
# #ca 30;41 # CAPABILITY
# tw 30;42 # STICKY_OTHER_WRITABLE
# ow 34;42 # OTHER_WRITABLE
# st 37;44 # STICKY
# ex 01;32 # EXEC
# default values from lf (with matching order)
# ln 01;36 # LINK
# or 31;01 # ORPHAN
# tw 01;34 # STICKY_OTHER_WRITABLE
# ow 01;34 # OTHER_WRITABLE
# st 01;34 # STICKY
# di 01;34 # DIR
# pi 33 # FIFO
# so 01;35 # SOCK
# bd 33;01 # BLK
# cd 33;01 # CHR
# su 01;32 # SETUID
# sg 01;32 # SETGID
# ex 01;32 # EXEC
# fi 00 # FILE
# file types (with matching order)
ln 01;36 # LINK
or 31;01 # ORPHAN
tw 34 # STICKY_OTHER_WRITABLE
ow 34 # OTHER_WRITABLE
st 01;34 # STICKY
di 01;34 # DIR
pi 33 # FIFO
so 01;35 # SOCK
bd 33;01 # BLK
cd 33;01 # CHR
su 01;32 # SETUID
sg 01;32 # SETGID
ex 01;32 # EXEC
fi 00 # FILE
# archives or compressed (dircolors defaults)
*.tar 01;31
*.tgz 01;31
*.arc 01;31
*.arj 01;31
*.taz 01;31
*.lha 01;31
*.lz4 01;31
*.lzh 01;31
*.lzma 01;31
*.tlz 01;31
*.txz 01;31
*.tzo 01;31
*.t7z 01;31
*.zip 01;31
*.z 01;31
*.dz 01;31
*.gz 01;31
*.lrz 01;31
*.lz 01;31
*.lzo 01;31
*.xz 01;31
*.zst 01;31
*.tzst 01;31
*.bz2 01;31
*.bz 01;31
*.tbz 01;31
*.tbz2 01;31
*.tz 01;31
*.deb 01;31
*.rpm 01;31
*.jar 01;31
*.war 01;31
*.ear 01;31
*.sar 01;31
*.rar 01;31
*.alz 01;31
*.ace 01;31
*.zoo 01;31
*.cpio 01;31
*.7z 01;31
*.rz 01;31
*.cab 01;31
*.wim 01;31
*.swm 01;31
*.dwm 01;31
*.esd 01;31
# image formats (dircolors defaults)
*.jpg 01;35
*.jpeg 01;35
*.mjpg 01;35
*.mjpeg 01;35
*.gif 01;35
*.bmp 01;35
*.pbm 01;35
*.pgm 01;35
*.ppm 01;35
*.tga 01;35
*.xbm 01;35
*.xpm 01;35
*.tif 01;35
*.tiff 01;35
*.png 01;35
*.svg 01;35
*.svgz 01;35
*.mng 01;35
*.pcx 01;35
*.mov 01;35
*.mpg 01;35
*.mpeg 01;35
*.m2v 01;35
*.mkv 01;35
*.webm 01;35
*.ogm 01;35
*.mp4 01;35
*.m4v 01;35
*.mp4v 01;35
*.vob 01;35
*.qt 01;35
*.nuv 01;35
*.wmv 01;35
*.asf 01;35
*.rm 01;35
*.rmvb 01;35
*.flc 01;35
*.avi 01;35
*.fli 01;35
*.flv 01;35
*.gl 01;35
*.dl 01;35
*.xcf 01;35
*.xwd 01;35
*.yuv 01;35
*.cgm 01;35
*.emf 01;35
*.ogv 01;35
*.ogx 01;35
# audio formats (dircolors defaults)
*.aac 00;36
*.au 00;36
*.flac 00;36
*.m4a 00;36
*.mid 00;36
*.midi 00;36
*.mka 00;36
*.mp3 00;36
*.mpc 00;36
*.ogg 00;36
*.ra 00;36
*.wav 00;36
*.oga 00;36
*.opus 00;36
*.spx 00;36
*.xspf 00;36

377
lf/icons
View File

@ -1,377 +0,0 @@
# vim:ft=conf
# These examples require Nerd Fonts or a compatible font to be used.
# See https://www.nerdfonts.com for more information.
# default values from lf (with matching order)
# ln l # LINK
# or l # ORPHAN
# tw t # STICKY_OTHER_WRITABLE
# ow d # OTHER_WRITABLE
# st t # STICKY
# di d # DIR
# pi p # FIFO
# so s # SOCK
# bd b # BLK
# cd c # CHR
# su u # SETUID
# sg g # SETGID
# ex x # EXEC
# fi - # FILE
# file types (with matching order)
ln  # LINK
or  # ORPHAN
tw t # STICKY_OTHER_WRITABLE
ow  # OTHER_WRITABLE
st t # STICKY
di  # DIR
pi p # FIFO
so s # SOCK
bd b # BLK
cd c # CHR
su u # SETUID
sg g # SETGID
ex  # EXEC
fi  # FILE
# disable some default filetype icons, let them choose icon by filename
# ln  # LINK
# or  # ORPHAN
# tw # STICKY_OTHER_WRITABLE
# ow # OTHER_WRITABLE
# st # STICKY
# di  # DIR
# pi # FIFO
# so # SOCK
# bd # BLK
# cd # CHR
# su # SETUID
# sg # SETGID
# ex # EXEC
# fi  # FILE
# file extensions (vim-devicons)
*.styl 
*.sass 
*.scss 
*.htm 
*.html 
*.slim 
*.haml 
*.ejs 
*.css 
*.less 
*.md 
*.mdx 
*.markdown 
*.rmd 
*.json 
*.webmanifest 
*.js 
*.mjs 
*.jsx 
*.rb 
*.gemspec 
*.rake 
*.php 
*.py 
*.pyc 
*.pyo 
*.pyd 
*.coffee 
*.mustache 
*.hbs 
*.conf 
*.ini 
*.yml 
*.yaml 
*.toml 
*.bat 
*.mk 
*.jpg 
*.jpeg 
*.bmp 
*.png 
*.webp 
*.gif 
*.ico 
*.twig 
*.cpp 
*.c++ 
*.cxx 
*.cc 
*.cp 
*.c 
*.cs 󰌛
*.h 
*.hh 
*.hpp 
*.hxx 
*.hs 
*.lhs 
*.nix 
*.lua 
*.java 
*.sh 
*.fish 
*.bash 
*.zsh 
*.ksh 
*.csh 
*.awk 
*.ps1 
*.ml λ
*.mli λ
*.diff 
*.db 
*.sql 
*.dump 
*.clj 
*.cljc 
*.cljs 
*.edn 
*.scala 
*.go 
*.dart 
*.xul 
*.sln 
*.suo 
*.pl 
*.pm 
*.t 
*.rss 
'*.f#' 
*.fsscript 
*.fsx 
*.fs 
*.fsi 
*.rs 
*.rlib 
*.d 
*.erl 
*.hrl 
*.ex 
*.exs 
*.eex 
*.leex 
*.heex 
*.vim 
*.ai 
*.psd 
*.psb 
*.ts 
*.tsx 
*.jl 
*.pp 
*.vue 
*.elm 
*.swift 
*.xcplayground 
*.tex 󰙩
*.r 󰟔
*.rproj 󰗆
*.sol 󰡪
*.pem 
# file names (vim-devicons) (case-insensitive not supported in lf)
*gruntfile.coffee 
*gruntfile.js 
*gruntfile.ls 
*gulpfile.coffee 
*gulpfile.js 
*gulpfile.ls 
*mix.lock 
*dropbox 
*.ds_store 
*.gitconfig 
*.gitignore 
*.gitattributes 
*.gitlab-ci.yml 
*.bashrc 
*.zshrc 
*.zshenv 
*.zprofile 
*.vimrc 
*.gvimrc 
*_vimrc 
*_gvimrc 
*.bashprofile 
*favicon.ico 
*license 
*node_modules 
*react.jsx 
*procfile 
*dockerfile 
*docker-compose.yml 
*docker-compose.yaml 
*compose.yml 
*compose.yaml 
*rakefile 
*config.ru 
*gemfile 
*makefile 
*cmakelists.txt 
*robots.txt 󰚩
# file names (case-sensitive adaptations)
*Gruntfile.coffee 
*Gruntfile.js 
*Gruntfile.ls 
*Gulpfile.coffee 
*Gulpfile.js 
*Gulpfile.ls 
*Dropbox 
*.DS_Store 
*LICENSE 
*React.jsx 
*Procfile 
*Dockerfile 
*Docker-compose.yml 
*Docker-compose.yaml 
*Rakefile 
*Gemfile 
*Makefile 
*CMakeLists.txt 
# file patterns (vim-devicons) (patterns not supported in lf)
# .*jquery.*\.js$ 
# .*angular.*\.js$ 
# .*backbone.*\.js$ 
# .*require.*\.js$ 
# .*materialize.*\.js$ 
# .*materialize.*\.css$ 
# .*mootools.*\.js$ 
# .*vimrc.* 
# Vagrantfile$ 
# file patterns (file name adaptations)
*jquery.min.js 
*angular.min.js 
*backbone.min.js 
*require.min.js 
*materialize.min.js 
*materialize.min.css 
*mootools.min.js 
*vimrc 
Vagrantfile 
# archives or compressed (extensions from dircolors defaults)
*.tar 
*.tgz 
*.arc 
*.arj 
*.taz 
*.lha 
*.lz4 
*.lzh 
*.lzma 
*.tlz 
*.txz 
*.tzo 
*.t7z 
*.zip 
*.z 
*.dz 
*.gz 
*.lrz 
*.lz 
*.lzo 
*.xz 
*.zst 
*.tzst 
*.bz2 
*.bz 
*.tbz 
*.tbz2 
*.tz 
*.deb 
*.rpm 
*.jar 
*.war 
*.ear 
*.sar 
*.rar 
*.alz 
*.ace 
*.zoo 
*.cpio 
*.7z 
*.rz 
*.cab 
*.wim 
*.swm 
*.dwm 
*.esd 
# image formats (extensions from dircolors defaults)
*.jpg 
*.jpeg 
*.mjpg 
*.mjpeg 
*.gif 
*.bmp 
*.pbm 
*.pgm 
*.ppm 
*.tga 
*.xbm 
*.xpm 
*.tif 
*.tiff 
*.png 
*.svg 
*.svgz 
*.mng 
*.pcx 
*.mov 
*.mpg 
*.mpeg 
*.m2v 
*.mkv 
*.webm 
*.ogm 
*.mp4 
*.m4v 
*.mp4v 
*.vob 
*.qt 
*.nuv 
*.wmv 
*.asf 
*.rm 
*.rmvb 
*.flc 
*.avi 
*.fli 
*.flv 
*.gl 
*.dl 
*.xcf 
*.xwd 
*.yuv 
*.cgm 
*.emf 
*.ogv 
*.ogx 
# audio formats (extensions from dircolors defaults)
*.aac 
*.au 
*.flac 
*.m4a 
*.mid 
*.midi 
*.mka 
*.mp3 
*.mpc 
*.ogg 
*.ra 
*.wav 
*.oga 
*.opus 
*.spx 
*.xspf 
# other formats
*.pdf 

View File

@ -4,6 +4,7 @@ local Plug = vim.fn['plug#']
local o = vim.opt
local g = vim.g
o.title = true
g.mapleader = ' '
g.maplocalleader = ' '
g.toggle_theme_icon = ""
@ -85,9 +86,92 @@ map('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic messa
map('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' })
map('v', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
-- Prevent CapsLock from interfering with movement keys
map('n', 'J', 'j', { noremap = true })
map('n', 'K', 'k', { noremap = true })
map('n', 'H', 'h', { noremap = true })
map('n', 'L', 'l', { noremap = true })
map('n', 'U', 'u', { noremap = true })
-- Better window navigation (works across splits)
map('n', '<C-h>', '<C-w>h', { desc = 'Move to left window' })
map('n', '<C-j>', '<C-w>j', { desc = 'Move to lower window' })
map('n', '<C-k>', '<C-w>k', { desc = 'Move to upper window' })
map('n', '<C-l>', '<C-w>l', { desc = 'Move to right window' })
-- Keep cursor centered during searches and jumps
map('n', 'n', 'nzzzv', { desc = 'Next search result (centered)' })
map('n', 'N', 'Nzzzv', { desc = 'Prev search result (centered)' })
map('n', 'G', 'Gzz', { desc = 'Jump to line (centered)' })
-- Clear last search highlight
map('n', '<leader>nh', ':nohlsearch<CR>', { desc = 'Clear search highlights' })
-- Half-page jumping with centered cursor
map('n', '<C-d>', '<C-d>zz')
map('n', '<C-u>', '<C-u>zz')
-- Move lines up/down in visual mode
map('v', 'J', ":m '>+1<CR>gv=gv", { desc = 'Move selection down' })
map('v', 'K', ":m '<-2<CR>gv=gv", { desc = 'Move selection up' })
-- Quick fix list navigation
map('n', '<C-q>', ':cnext<CR>', { desc = 'Next quickfix item' })
map('n', '<C-Q>', ':cprev<CR>', { desc = 'Previous quickfix item' })
-- System clipboard integration
map('n', '<leader>p', '"+p', { desc = 'Paste from system clipboard' })
map('n', '<leader>P', '"+P', { desc = 'Paste from system clipboard (before)' })
-- Better indentation
map('v', '<', '<gv', { desc = 'Unindent and stay in visual mode' })
map('v', '>', '>gv', { desc = 'Indent and stay in visual mode' })
-- Buffer navigation
map('n', '<leader>bn', ':bnext<CR>', { desc = 'Next buffer' })
map('n', '<leader>bp', ':bprevious<CR>', { desc = 'Previous buffer' })
map('n', '<leader>bd', ':bdelete<CR>', { desc = 'Delete buffer' })
-- Replace current word
map('n', '<leader>s', [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]],
{ desc = 'Replace current word' })
-- Keep search matches in middle
map('n', '*', '*zz', { desc = 'Search word under cursor (centered)' })
map('n', '#', '#zz', { desc = 'Search backward word (centered)' })
-- Quick save/quit
map('n', '<leader>w', ':w<CR>', { desc = 'Save file' })
map('n', '<leader>q', ':q<CR>', { desc = 'Quit window' })
-- Disable hell
map('n', 'Q', 'gq')
map('n', '<leader>.', '<cmd>:CHADopen<cr>')
-- Toggle terminal
map('n', '<leader>tt', ':terminal<CR>',
{ desc = '[T]oggle [T]erminal' })
-- Escape terminal mode
map('t', '<Esc>', '<C-\\><C-n>',
{ desc = 'Exit terminal mode' })
-- Open chad tree
map('n', '<leader>.', ':CHADopen<CR>', { noremap = true })
-- Quick escape from insert mode
map('i', 'jk', '<Esc>', { desc = 'Exit insert mode' })
-- Clear search highlights
map('n', '<Esc>', '<cmd>nohlsearch<CR>',
{ desc = 'Clear search highlights' })
-- Toggle spellcheck
map('n', '<leader>ts', ':set spell!<CR>',
{ desc = '[T]oggle [S]pellcheck' })
-- Epic Golang JSON metadata macro, piss off pussies
map('n', '<leader>j', '_ywA<Space><Esc>pbeld$bguwciw"<Esc>pA"<Esc>F"<Ignore>ijson:<Esc>bi`<Esc>A`<Esc>_j', { noremap = true })
map('n', '<leader>_', 'ebcw_<Esc>', { noremap = true, desc = 'Replace word with _ (to ignore variable)' })
vim.call('plug#begin')
@ -125,7 +209,21 @@ Plug 'echasnovski/mini.nvim'
Plug 'zbirenbaum/copilot.lua'
Plug 'ms-jpq/chadtree'
Plug 'ryanoasis/vim-devicons'
Plug 'kyazdani42/nvim-web-devicons'
Plug 'jetzig-framework/zmpl.vim'
Plug 'folke/which-key.nvim'
-- Personalization
Plug 'nvim-lualine/lualine.nvim'
Plug 'goolord/alpha-nvim'
Plug 'lukas-reineke/indent-blankline.nvim'
Plug 'karb94/neoscroll.nvim'
Plug 'folke/noice.nvim'
Plug 'MunifTanjim/nui.nvim'
-- More stuff
Plug 'SmiteshP/nvim-navic'
Plug 'kr40/nvim-macros'
-- tree sitter
Plug 'nvim-treesitter/nvim-treesitter'
@ -137,7 +235,6 @@ Plug('aaronik/treewalker.nvim', {
vim.call('plug#end')
vim.cmd('set background=dark')
vim.cmd('colorscheme nova')
-- Better Around/Inside textobjects
--
@ -175,22 +272,21 @@ end
require('mini.pairs').setup()
require('nvim-treesitter.configs').setup({
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
ensure_installed = {'bash', 'c', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc'},
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
ensure_installed = {'bash', 'c', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc'},
sync_install = false,
sync_install = false,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
})
require("mason").setup()
local lspconfig = require('lspconfig')
lspconfig.hls.setup({})
lspconfig.zls.setup({
{cmd = '~/.zig/zls'}
})
@ -198,44 +294,44 @@ lspconfig.zls.setup({
local lsp_cmds = vim.api.nvim_create_augroup('lsp_cmds', {clear = true})
vim.api.nvim_create_autocmd('LspAttach', {
group = lsp_cmds,
desc = 'LSP actions',
callback = function()
local bufmap = function(mode, lhs, rhs)
vim.keymap.set(mode, lhs, rhs, {buffer = true})
end
bufmap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>')
bufmap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<cr>')
bufmap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>')
bufmap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>')
bufmap('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>')
bufmap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>')
bufmap('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>')
bufmap('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<cr>')
bufmap({'n', 'x'}, '<F3>', '<cmd>lua vim.lsp.buf.format({async = true})<cr>')
bufmap('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>')
bufmap('n', 'gl', '<cmd>lua vim.diagnostic.open_float()<cr>')
bufmap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<cr>')
bufmap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>')
end
group = lsp_cmds,
desc = 'LSP actions',
callback = function()
local bufmap = function(mode, lhs, rhs)
vim.keymap.set(mode, lhs, rhs, {buffer = true})
end
bufmap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>')
bufmap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<cr>')
bufmap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>')
bufmap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>')
bufmap('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>')
bufmap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>')
bufmap('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>')
bufmap('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<cr>')
bufmap({'n', 'x'}, '<F3>', '<cmd>lua vim.lsp.buf.format({async = true})<cr>')
bufmap('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>')
bufmap('n', 'gl', '<cmd>lua vim.diagnostic.open_float()<cr>')
bufmap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<cr>')
bufmap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>')
end
})
require('mason-lspconfig').setup({
ensure_installed = {'hls'},
handlers = {
function(server)
lspconfig[server].setup({
capabilities = lsp_capabilities,
})
end,
}
ensure_installed = {},
handlers = {
function(server)
lspconfig[server].setup({
capabilities = lsp_capabilities,
})
end,
}
})
vim.opt.completeopt = {'menu', 'menuone', 'noselect'}
require("copilot").setup({
suggestion = { enabled = false },
panel = { enabled = false },
suggestion = { enabled = false },
panel = { enabled = false },
})
require("copilot_cmp").setup()
@ -244,103 +340,311 @@ local luasnip = require('luasnip')
local select_opts = {behavior = cmp.SelectBehavior.Select}
local has_words_before = function()
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then return false end
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_text(0, line-1, 0, line-1, col, {})[1]:match("^%s*$") == nil
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then return false end
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_text(0, line-1, 0, line-1, col, {})[1]:match("^%s*$") == nil
end
-- See :help cmp-config
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end
},
sources = {
{name = 'path'},
{name = 'nvim_lsp', keyword_length = 3},
{name = 'buffer', keyword_length = 3},
{name = 'luasnip', keyword_length = 2},
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end
},
sources = {
{name = 'path'},
{name = 'nvim_lsp', keyword_length = 3},
{name = 'buffer', keyword_length = 3},
{name = 'luasnip', keyword_length = 2},
{name = 'copilot', group_index = 2}
},
window = {
documentation = cmp.config.window.bordered()
},
formatting = {
fields = {'menu', 'abbr', 'kind'},
format = function(entry, item)
local menu_icon = {
nvim_lsp = 'λ',
luasnip = '',
buffer = 'Ω',
path = '🖫',
}
},
window = {
documentation = cmp.config.window.bordered()
},
formatting = {
fields = {'menu', 'abbr', 'kind'},
format = function(entry, item)
local menu_icon = {
nvim_lsp = 'λ',
luasnip = '',
buffer = 'Ω',
path = '🖫',
}
item.menu = menu_icon[entry.source.name]
return item
end,
},
-- See :help cmp-mapping
mapping = {
['<Up>'] = cmp.mapping.select_prev_item(select_opts),
['<Down>'] = cmp.mapping.select_next_item(select_opts),
item.menu = menu_icon[entry.source.name]
return item
end,
},
-- See :help cmp-mapping
mapping = {
['<Up>'] = cmp.mapping.select_prev_item(select_opts),
['<Down>'] = cmp.mapping.select_next_item(select_opts),
['<C-p>'] = cmp.mapping.select_prev_item(select_opts),
['<C-n>'] = cmp.mapping.select_next_item(select_opts),
['<C-p>'] = cmp.mapping.select_prev_item(select_opts),
['<C-n>'] = cmp.mapping.select_next_item(select_opts),
['<C-u>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-u>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({select = false}),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({select = false}),
['<C-d>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(1) then
luasnip.jump(1)
else
fallback()
end
end, {'i', 's'}),
['<C-d>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(1) then
luasnip.jump(1)
else
fallback()
end
end, {'i', 's'}),
['<C-b>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, {'i', 's'}),
['<C-b>'] = cmp.mapping(function(fallback)
if luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, {'i', 's'}),
['<Tab>'] = cmp.mapping(function(fallback)
local col = vim.fn.col('.') - 1
if cmp.visible() and has_words_before() then
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
elseif cmp.visible() then
cmp.select_next_item(select_opts)
elseif col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
fallback()
else
cmp.complete()
end
end, {'i', 's'}),
['<Tab>'] = cmp.mapping(function(fallback)
local col = vim.fn.col('.') - 1
if cmp.visible() and has_words_before() then
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
elseif cmp.visible() then
cmp.select_next_item(select_opts)
elseif col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
fallback()
else
cmp.complete()
end
end, {'i', 's'}),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item(select_opts)
else
fallback()
end
end, {'i', 's'}),
},
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item(select_opts)
else
fallback()
end
end, {'i', 's'}),
},
})
-- hyprland
-- auto save
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "hyprland.conf",
callback = function()
os.execute("hyprctl reload")
vim.cmd.edit()
end
pattern = "hyprland.conf",
callback = function()
os.execute("hyprctl reload")
vim.cmd.edit()
end
})
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "init.lua",
callback = function()
-- Reload config without restarting Neovim
vim.cmd("source $MYVIMRC")
end
})
-- Execute go tidy on save because nico told me so
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.go",
callback = function()
vim.cmd("silent! !go mod tidy")
vim.cmd("silent! edit")
end
})
-- Format on save
vim.api.nvim_create_autocmd('BufWritePre', {
pattern = '*',
callback = function() vim.lsp.buf.format() end
})
-- Code actions menu
map('n', '<leader>ca', vim.lsp.buf.code_action,
{ desc = '[C]ode [A]ctions' })
-- Find references
map('n', '<leader>gr', vim.lsp.buf.references,
{ desc = '[G]oto [R]eferences' })
-- files to the right
local chadtree_settings = {
['view.open_direction'] = "right",
['view.width'] = 20
}
vim.api.nvim_set_var("chadtree_settings", chadtree_settings)
-- Customization
require('lualine').setup {
options = {
theme = 'tokyonight',
component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''},
globalstatus = true,
icons_enabled = true
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {
{
'filename',
path = 1, -- Show relative path
symbols = { modified = '', readonly = '' }
}
},
lualine_x = {
'encoding',
{
'fileformat',
symbols = { unix = ' LF' }
},
{
'filetype',
icons_enabled = true,
icon = { align = 'right' }
}
},
lualine_y = {'progress'},
lualine_z = {'location'}
},
extensions = {'chadtree', 'fugitive'}
}
local alpha = require'alpha'
local dashboard = require'alpha.themes.dashboard'
dashboard.section.header.val = {
[[ __ __ __ __ ______ __ __ ______ __ __ ]],
[[/\ \_\ \ /\ \/\ \ /\___ \ /\ \/\ \ /\ == \ /\ \/\ \ ]],
[[\ \____ \\ \ \_\ \\/_/ /__\ \ \_\ \\ \ __- \ \ \_\ \ ]],
[[ \/\_____\\ \_____\ /\_____\\ \_____\\ \_\ \_\\ \_____\]],
[[ \/_____/ \/_____/ \/_____/ \/_____/ \/_/ /_/ \/_____/]]
}
dashboard.section.buttons.val = {
dashboard.button("e", " New file", ":ene <BAR> startinsert <CR>"),
dashboard.button("f", "󰈞 Find file", ":CHADopen<CR>"),
dashboard.button("c", " Config", ":e ~/.config/nvim/init.lua<CR>"),
dashboard.button("q", " Quit", ":qa<CR>"),
}
alpha.setup(dashboard.config)
local highlight = {
"CursorColumn",
-- "Whitespace",
}
-- Indent guides
require('ibl').setup {
indent = { highlight = highlight, char = "" },
scope = { enabled = false },
}
-- Smooth scrolling
require('neoscroll').setup {
mappings = {'<C-u>', '<C-d>', 'zz', 'zt', 'zb'},
hide_cursor = true,
stop_eof = true,
respect_scrolloff = false,
}
require('nvim-navic').setup {
icons = {
File = "󰈙 ",
Module = "",
Namespace = "󰌗 ",
Package = "",
Class = "󰌗 ",
Method = "󰆧 ",
Property = "",
Field = "",
Constructor = "",
Enum = "󰕘",
Interface = "󰕘",
Function = "󰊕 ",
Variable = "󰆧 ",
Constant = "󰏿 ",
String = "󰀬 ",
Number = "󰎠 ",
Boolean = "",
Array = "󰅪 ",
Object = "󰅩 ",
Key = "󰌋 ",
Null = "󰟢 ",
EnumMember = "",
Struct = "󰌗 ",
Event = "",
Operator = "󰆕 ",
TypeParameter = "󰊄 ",
}
}
vim.o.winbar = "%{%v:lua.require'nvim-navic'.get_location()%}"
map('n', '<leader>tt', function()
local height = math.ceil(vim.o.lines * 0.3)
vim.api.nvim_command('botright split | resize ' .. height)
vim.api.nvim_command('terminal')
end, { desc = 'Open floating terminal' })
-- Better theme configuration
require('tokyonight').setup {
style = 'night',
transparent = true,
styles = {
floats = 'transparent',
sidebars = 'transparent'
},
on_highlights = function(hl, c)
hl.TelescopeBorder = { fg = c.bg_dark, bg = c.bg_dark }
hl.TelescopePromptBorder = { fg = c.orange, bg = c.bg }
end
}
vim.cmd.colorscheme('tokyonight')
-- Etc
require('noice').setup {
cmdline = {
view = 'cmdline_popup',
format = {
cmdline = { pattern = '^:', icon = '', lang = 'vim' },
search_down = { kind = 'search', pattern = '^/', icon = ' ', lang = 'regex' },
search_up = { kind = 'search', pattern = '^%?', icon = ' ', lang = 'regex' },
}
},
popupmenu = {
backend = 'nui',
},
views = {
cmdline_popup = {
position = { row = 5, col = '50%' },
size = { width = 60, height = 'auto' },
}
}
}
require('which-key').setup {
plugins = {
marks = true,
registers = true,
spelling = { enabled = true },
presets = {
operators = true,
motions = true,
text_objects = true,
windows = true,
nav = true,
z = true,
g = true
}
},
}

189
rofi/config.rasi Normal file
View File

@ -0,0 +1,189 @@
configuration {
font: "NerdFont JetBrains Mono 10";
show-icons: true;
icon-theme: "Deepin2022-Dark";
drun-display-format: "{icon} {name}";
display-drun: "Apps";
scroll-method: 0;
}
* {
background: rgba ( 19, 19, 25, 50% );
normal-background: none;
urgent-background: none;
active-background: none;
alternate-normal-background: none;
alternate-urgent-background: none;
alternate-active-background: none;
selected-urgent-background: none;
selected-normal-background: none;
selected-active-background: none;
foreground: rgba ( 255, 239, 222, 100% );
urgent-foreground: @foreground;
normal-foreground: @foreground;
active-foreground: rgba ( 101, 172, 255, 100 % );
alternate-normal-foreground: @foreground;
alternate-urgent-foreground: @urgent-foreground;
alternate-active-foreground: @active-foreground;
selected-urgent-foreground: none;
selected-normal-foreground: none;
selected-active-foreground: none;
alternate-normal-foreground: @foreground;
selected-normal-foreground: rgba ( 255, 200, 87, 100% );
spacing: 2;
separatorcolor: rgba ( 45, 48, 59, 1 % );
background-color: rgba ( 0, 0, 0, 0 % );
}
window {
background-color: @background;
border: 0;
padding: 30;
}
listview {
lines: 10;
columns: 3;
}
mainbox {
border: 0;
padding: 0;
}
message {
border: 2px 0px 0px ;
border-color: @separatorcolor;
padding: 1px ;
}
textbox {
text-color: @foreground;
}
listview {
fixed-height: 0;
border: 8px 0px 0px ;
border-color: @separatorcolor;
spacing: 8px ;
scrollbar: false;
padding: 2px 0px 0px ;
}
element {
border: 0;
padding: 1px ;
}
element-text {
background-color: inherit;
text-color: inherit;
}
element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px ;
border: 0;
handle-color: @normal-foreground;
handle-width: 8px ;
padding: 0;
}
mode-switcher {
border: 2px 0px 0px ;
border-color: @separatorcolor;
}
button {
spacing: 0;
text-color: @normal-foreground;
}
button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px ;
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
spacing: 0;
text-color: @normal-foreground;
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em ;
text-color: @normal-foreground;
}

View File

@ -110,15 +110,15 @@ elif command -v pacman >/dev/null; then
conscious=$(pacman -Qqen | wc -l)
gnu=$(pacman -Qqs gnu | wc -l)
elif command -v dpkg >/dev/null; then
# Debian/Ubuntu (i don't have a debian machine to test)
# Debian/Ubuntu
total=$(dpkg -l | grep '^ii' | wc -l)
conscious=$(apt-mark showmanual | wc -l)
gnu=$(apt-mark showmanual | grep -i gnu | wc -l)
elif command -v rpm >/dev/null && command -v dnf >/dev/null; then
# Fedora/RHEL (i don't have a fedora machine to test)
# Fedora/RHEL
total=$(rpm -qa | wc -l)
conscious=$(dnf history userinstalled | grep -v '^ID' | wc -l)
gnu=$(rpm -qa --queryformat '%{NAME}\n' | grep -i gnu | wc -l)
gnu=$(yum list --installed | wc -l)
else
echo "Error: Unsupported package manager"
return 1
@ -180,20 +180,40 @@ if command -v snap >/dev/null; then
[ $snap_bloat -gt 0 ] && echo " - 💀 SNAP: Congratulations on your 20GB /var/lib/snapd"
fi
# Distrobox containers
distrobox_bloat=0
if [ -d ~/.distrobox ]; then
echo "📦 Distrobox Containers:"
for container in ~/.distrobox/*; do
if [ -d "$container" ]; then
container_name=$(basename "$container")
size=$(du -sh "$container" 2>/dev/null | cut -f1)
distrobox_bloat=$((distrobox_bloat + 1))
echo " - $container_name: $size"
echo " 💀 DISTROBOX: '$container_name' is just Docker with extra steps (${size} wasted)"
fi
done
fi
# GIGACHAD Distrobox Bloat Inspector
# Checks your containers and roasts them appropriately
# 100% POSIX-compliant Distrobox Bloat Inspector
# No numfmt, no bashisms, no weak dependencies
bytes_to_human() {
bytes=$1
if [ "$bytes" -ge 1073741824 ]; then
printf "%.1fGiB" "$(echo "$bytes / 1073741824" | bc -l)"
elif [ "$bytes" -ge 1048576 ]; then
printf "%.1fMiB" "$(echo "$bytes / 1048576" | bc -l)"
elif [ "$bytes" -ge 1024 ]; then
printf "%dKiB" "$((bytes / 1024))"
else
printf "%dB" "$bytes"
fi
}
# Ultra-minimalist Distrobox Bloat Checker
# POSIX-compliant, dependency-free (except distrobox/docker)
echo "📦 Distrobox Containers Found:"
distrobox-list | tail -n +2 | while IFS='|' read -r id name status _; do
name=$(echo "$name" | xargs)
status=$(echo "$status" | xargs)
case "$status" in
Up*) echo " 🚀 $name: RUNNING (stop wasting RAM)" ;;
Exited*) echo " 💀 $name: DEAD (but still wasting disk space)" ;;
*) echo " ❓ $name: WEIRD STATE ('$status')" ;;
esac
done
# ===== Fedora Special Shame =====
if [[ "$distro_name" == *"Fedora"* ]]; then

4
scripts/circumspicio Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
# circumspiciō: Latin for looking around, inspecting
du -a ~/my-repos/* | awk '{print $2}' | fzf | xargs -r $EDITOR

34
scripts/img Executable file
View File

@ -0,0 +1,34 @@
#!/bin/sh
# GIGACHAD image viewer script
# Usage: img [directory]
# Set default directory to current if none provided
dir="${1:-.}"
# Check if sxiv is installed
if ! command -v sxiv >/dev/null 2>&1; then
echo "ERROR: sxiv not found. Install this gigachad viewer first!" >&2
exit 1
fi
# Verify the directory exists
if [ ! -d "$dir" ]; then
echo "ERROR: Directory '$dir' not found" >&2
exit 1
fi
# Find images (common extensions) and pass to sxiv
find "$dir" -maxdepth 1 -type f \( \
-iname "*.jpg" -o \
-iname "*.jpeg" -o \
-iname "*.png" -o \
-iname "*.gif" -o \
-iname "*.bmp" -o \
-iname "*.tif" -o \
-iname "*.tiff" -o \
-iname "*.svg" -o \
-iname "*.webp" \
\) | sort | sxiv -i -f -
exit 0

9
scripts/killer Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
ps a | awk '
NR > 1 {
pid = $1
$1 = $2 = $3 = $4 = ""
sub(/^ */, "", $0)
print pid " " $0
}
' | (wofi --style ~/.config/wofi/style/style.css -dmenu -l 10 || exit 0) | awk '{print $1}' | xargs kill -9

24
scripts/lfub Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh
# This is a wrapper script for lf that allows it to create image previews with
# ueberzug. This works in concert with the lf configuration file and the
# lf-cleaner script.
set -e
cleanup() {
exec 3>&-
rm "$FIFO_UEBERZUG"
}
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
lf "$@"
else
[ ! -d "$HOME/.cache/lf" ] && mkdir -p "$HOME/.cache/lf"
export FIFO_UEBERZUG="$HOME/.cache/lf/ueberzug-$$"
mkfifo "$FIFO_UEBERZUG"
ueberzug layer -s <"$FIFO_UEBERZUG" -p json &
exec 3>"$FIFO_UEBERZUG"
trap cleanup HUP INT QUIT TERM PWR EXIT
lf "$@" 3>&-
fi

3
scripts/menu Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
kill $(pidof wofi) || wofi --style ~/.config/wofi/style/style.css --show drun

32
scripts/nekos Executable file
View File

@ -0,0 +1,32 @@
#!/bin/sh
api="https://nekos.life/api/v2/img/wallpaper"
MONITOR="HDMI-A-1"
TMPDIR=$(mktemp -d) || { echo "FAILED TO CREATE TMPDIR 🥀"; exit 1; }
wallpaper_url=$(curl -sf "$api" | awk -F'"' '/url/{print $4; exit}') || {
echo "API request failed 🥀"
exit 1
}
extension=$(echo "$wallpaper_url" | sed -E 's/.*\.([a-zA-Z]+).*/\1/' | head -c 5)
wallpaper="$TMPDIR/wallpaper.$extension"
echo $wallpaper_url " into " $wallpaper
curl -sfL "$wallpaper_url" -o "$TMPDIR/wallpaper.$extension" || {
echo "Download failed 🥀"
exit 1
}
if [ ! -s "$wallpaper" ]; then
echo "Empty wallpaper file 🥀"
exit 1
fi
# Ensure we unload them all
hyprctl hyprpaper unload all&>/dev/null
# Apply the selected wallpaper
hyprctl hyprpaper reload $MONITOR,"$wallpaper"&>/dev/null

2
scripts/rimor Normal file
View File

@ -0,0 +1,2 @@
#!/bin/sh
du -a ~/my-repos/* | awk '{print $2}' | fzf | xargs -r $EDITOR

3
scripts/stay Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
ghostty --command="$*; tput setaf 5 bold; read -p 'Press any key to exit' -s -n 1" >/dev/null 2>&1

46
scripts/steal Executable file
View File

@ -0,0 +1,46 @@
#!/bin/sh
# NO CUCKED ZSH OR BASH, JUST POSIX ASH/DASH
# BECAUSE THIS MUST RUN IN MY PC AND I USE VOID BTW
# cucked auth for simonet's minio instance
MINIO_KEY="suiVHTeAr9N7cpvQYEmz"
MINIO_SECRET="fA8PDZiCGXQuDSARiIlRCdHu9in6MpRF2NNBJlau"
# Usage: ./steal cunny "link to yuzu's website cuz it's full of cunny"
# EXPLANATION OF CUCKED VARIABLES
# $1 IS A STRING TO THE FOLDER NAME YOU WANT
# $2 IS A STRING TO THE URL YOU WANT TO STEAL FROM
# ALL WALLPAPERS WILL BE UPLOADED TO ENV VARIABLE 'BUCKET' (defaults to 'wallpapers')
# SET 'MINIO_KEY' TO YOUR KEY
# SET 'MINIO_SECRET' TO YOUR SECRET, CAREFUL, THIS MAY ONLY BE COPIED ONCE
# MATIAS IS A CUCKHOLD AND A FAGGOT LOL
# HARDCODED CHAD CONFIG (NO PUSSY VARIABLES)
MINIO_HOST="simxnet.andremor.eu.org:9000"
BUCKET="wallpapers"
sub_folder=$1
# CREATE TEMP DIR (GIGA CHAD STYLE)
TMPDIR=$(mktemp -d) || { echo "FAILED TO CREATE TMPDIR 🥀"; exit 1; }
trap 'rm -rf "$TMPDIR"' EXIT
# STEAL IMAGES LIKE A TRUE GENTLEMAN
# CREDIT TO SIMONET FOR THIS SNIPPET SHE GOONED HARD FOR IT
echo "🕵️‍♂️ STEALING WALLPAPERS FROM $2..."
gallery-dl --filter "extension in ('jpg','jpeg','png','webp')" \
--range 1-50 \
--no-skip \
-D "$TMPDIR" \
"$2" || { echo "❌ STEALING FAILED LOL YOU ARE A CUCK"; exit 1; }
# UPLOAD EACH FILE WITH MAXIMUM CHAD ENERGY
# THANKS TO INSPECT ELEMENT COPY AS VALUE/CURL + SOME TINKERING
find "$TMPDIR" -type f | while read -r file; do
echo "🚀 UPLOADING $(basename "$file")..."
sh -c 'curl -s -X PUT -T "$file" -H "Host: $MINIO_HOST" -H "Date: $(date -R)" -H "Content-Type: $(file -b --mime-type "$file" 2>/dev/null || echo 'application/octet-stream')" -H "Authorization: AWS $MINIO_KEY:$(echo -en "PUT\n\n$(file -b --mime-type "$file")\n$(date -R)\n/$BUCKET/$sub_folder/$(basename "$file")" | openssl sha1 -hmac "$MINIO_SECRET" -binary | base64)" "https://$MINIO_HOST/$BUCKET/$sub_folder/$(basename "$file")"' &
done
wait # WAIT FOR ALL UPLOADS TO FINISH
echo "✅ ALL WALLPAPERS STOLEN AND LOLLIES HIDDEN FROM THE FEDS"

25
scripts/upload Executable file
View File

@ -0,0 +1,25 @@
#!/bin/sh
grim -g "$(slurp)" -o screenshot /tmp/screenshot.png || {
notify-send "Screenshot Failed" "Selection cancelled"
exit 1
}
response=$(curl -X POST \
-H "Authorization: Bearer simxnet" \
-F "file=@/tmp/screenshot.png;type=image/png" \
https://simxnet.andremor.eu.org:8080/upload) || {
notify-send "Upload Failed" "Could not connect to server"
exit 1
}
path=$(echo "$response" | sed -E 's/.*"(\/file\/[a-f0-9-]+)".*/\1/')
url="https://simxnet.andremor.eu.org:8080$path"
wl-copy "$url"
# works with dbus so check if you have it
notify-send "Screenshot Uploaded" "URL copied to clipboard!" --app-name="Chad Uploader" --icon=dialog-information
rm -f /tmp/screenshot.png

BIN
wallpaper.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

View File

@ -2,10 +2,8 @@
"layer": "top",
// Using margin-bottom with a negative value in order to reduce the space between Hyprland window and waybar
"margin-bottom": -10,
"margin-top": 10,
"modules-left": ["custom/launcher", "cpu","memory","custom/spotify", "bluetooth", "tray"],
"modules-center": ["hyprland/workspaces"],
"modules-right": ["custom/clipboard", "pulseaudio","clock", "temperature", "custom/power"],
"modules-left": ["custom/launcher", "clock", "hyprland/workspaces"],
"modules-right": ["custom/clipboard", "pulseaudio", "bluetooth", "cpu", "memory", "tray", "custom/power"],
"pulseaudio": {
"tooltip": false,
@ -52,12 +50,12 @@
"escape": true
},
"custom/launcher":{
"format": " ",
"on-click": "wofi --style ~/.config/wofi/style/style.css -d --show drun",
"format": " Run",
"on-click": "~/scripts/menu",
"on-click-right": "killall wofi"
},
"custom/power":{
"format": " ",
"format": " Exit",
"on-click": "sh ~/.config/wofi/scripts/power.sh",
},
"bluetooth": {
@ -67,14 +65,7 @@
"tooltip-format": "{device_alias}",
"tooltip-format-connected": " {device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}",
"on-click": "~/.config/wofi/scripts/bluetooth.sh"
},
// The code following below is given in the great documentation for Waybar status bar under Useful Utilities in Hyprland wiki
"hyrpland/workspaces": {
"format": "{icon}",
"on-click": "activate",
"on-scroll-up": "hyprctl dispatch workspace e-1",
"on-scroll-down": "hyprctl dispatch workspace e+1"
"on-click": "sh ~/.config/wofi/scripts/bluetooth.sh"
},
"temperature": {
"format": " {temperatureC}°C",
@ -83,8 +74,61 @@
"critical-threshold": 80
},
"custom/clipboard":{
"format":"",
"max-length": 10,
"format":"  ",
"on-click": "cliphist list | wofi --style ~/.config/wofi/style/style.css --show dmenu | cliphist decode | wl-copy",
"interval": 86400
},
"hyprland/workspaces": {
"persistent-workspaces": {
"*":[1,2,3,4,5,6],
},
"all-output": true,
"on-scroll-up": "hyprctl dispatch workspace r+1",
"on-scroll-down": "hyprctl dispatch workspace r-1",
"on-click-forward": "hyprctl dispatch workspace r+1",
"on-click-backward": "hyprctl dispatch workspace r-1",
"format": "{icon} {windows}",
"format-icons": {
"1": "",
"2": "󰖟",
"3": "",
"4": "󰯄",
"5": "󰙯",
"6": "",
"urgent": "",
"active": "",
"default": ""
},
"window-rewrite-default": "{title}",
"window-rewrite": {
"class<firefox>": "Web",
"class<thunderbird>": "Thunderbird",
// having set title in init.lua
// eg: vim.opt.title = true
"class<cm.mitchellh.ghostty> title<.*nvim.*>": "Code",
"class<com.mitchellh.ghostty>": "Ghostty",
"class<mpv>": "Video player",
"class<discord>": "Discord",
"class<session>": "Session",
"class<keepassxc>": "KeePassXC",
"title<.*MONERO.*>":"Monero",
"title<.*bluetooth.*>":"Bluetooth",
"title<.*searx.*>":"SearX",
"title<.*telegram.*>": "Telegram",
"title<.*discord.*>": "Cord",
"title<.*outlook.*>": "Outlook",
"title<.*youtube.*>": "Youtube",
"title<.*Gitea.*": "Gitea",
"title<.*Codeberg.*": "Codeberg",
"title<.*github.*>": "Github",
"title<.*gitlab.*>": "Gitlab",
"title<.*twitch.*>": "Twitch",
"title<.*reddit.*>": "Reddit",
"title<.*matrix.*>": "Matrix",
"title<.*signal.*>": "Signal",
"title<.*torrent.*>": "Torrent",
"title<.*yuzucchii.*>": "yuzucchii.xyz",
},
}
}

View File

@ -1,74 +1,182 @@
@define-color glass-white rgba(255,255,255, 0.4);
@define-color glass-black rgba(0,0,0, 0.2);
* {
border: none;
border-radius: 4px; /* Your sharp corners */
font-family: "JetBrainsMono Nerd Font";
font-size: 14px;
min-height: 10px;
font-size: 13px;
min-height: 20px;
}
/*
window#waybar {
background: rgba(240, 240, 240, 0.8); /* Your original light gray */
background:
linear-gradient(
160deg,
rgba(255, 255, 255, 0.95) 0%,
rgba(245, 240, 255, 0.85) 100%
),
radial-gradient(
circle at 90% 50%,
rgba(255, 255, 255, 0.6) 0%,
rgba(255, 255, 255, 0) 70%
);
box-shadow:
inset 0 4px 8px rgba(255, 255, 255, 0.6),
0 6px 12px rgba(0, 0, 0, 0.15),
0 0 0 1px rgba(255, 255, 255, 0.4);
border-bottom: 1px solid rgba(230, 225, 220, 0.8);
border-radius: 0 0 8px 8px;
}*/
window#waybar {
background:
/* Base glass layer */
linear-gradient(
160deg,
rgba(255, 255, 255, 0.85) 0%,
rgba(245, 245, 245, 0.75) 100%
),
/* Light streak */
radial-gradient(
circle at 95% 50%,
rgba(255, 255, 255, 0.7) 0%,
rgba(255, 255, 255, 0) 80%
),
/* Noise texture for frosted effect */
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAUVBMVEWFhYWDg4N3d3dtbW17e3t1dXWBgYGHh4d5eXlzc3OLi4ubm5uVlZWPj4+NjY19fX2JiYl/f39ra2uRkZGZmZlpaWmXl5dvb29xcXGTk5NnZ2c8TV1mAAAAG3RSTlNAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAvEOwtAAAFVklEQVR4XpWWB67c2BUFb3g557T/hRo9/WUMZHlgr4Bg8Z4qQgQJlHI4A8SzFVrapvmTF9O7dmYRFZ60YiBhJRCgh1FYhiLAmdvX0CzTOpNE77ME0Zty/nWWzchDtiqrmQDeuv3powQ5ta2eN0FY0InkqDD73lT9c9lEzwUNqgFHs9VQce3TVClFCQrSTfOiYkVJQBmpbq2L6iZavPnAPcoU0dSw0SUTqz/GtrGuXfbyyBniKykOWQWGqwwMA7QiYAxi+IlPdqo+hYHnUt5ZPfnsHJyNiDtnpJyayNBkF6cWoYGAMY92U2hXHF/C1M8uP/ZtYdiuj26UdAdQQSXQErwSOMzt/XWRWAz5GuSBIkwG1H3FabJ2OsUOUhGC6tK4EMtJO0ttC6IBD3kM0ve0tJwMdSfjZo+EEISaeTr9P3wYrGjXqyC1krcKdhMpxEnt5JetoulscpyzhXN5FRpuPHvbeQaKxFAEB6EN+cYN6xD7RYGpXpNndMmZgM5Dcs3YSNFDHUo2LGfZuukSWyUYirJAdYbF3MfqEKmjM+I2EfhA94iG3L7uKrR+GdWD73ydlIB+6hgref1QTlmgmbM3/LeX5GI1Ux1RWpgxpLuZ2+I+IjzZ8wqE4nilvQdkUdfhzI5QDWy+kw5Wgg2pGpeEVeCCA7b85BO3F9DzxB3cdqvBzWcmzbyMiqhzuYqtHRVG2y4x+KOlnyqla8AoWWpuBoYRxzXrfKuILl6SfiWCbjxoZJUaCBj1CjH7GIaDbc9kqBY3W/Rgjda1iqQcOJu2WW+76pZC9QG7M00dffe9hNnseupFL53r8F7YHSwJWUKP2q+k7RdsxyOB11n0xtOvnW4irMMFNV4H0uqwS5ExsmP9AxbDTc9JwgneAT5vTiUSm1E7BSflSt3bfa1tv8Di3R8n3Af7MNWzs49hmauE2wP+ttrq+AsWpFG2awvsuOqbipWHgtuvuaAE+A1Z/7gC9hesnr+7wqCwG8c5yAg3AL1fm8T9AZtp/bbJGwl1pNrE7RuOX7PeMRUERVaPpEs+yqeoSmuOlokqw49pgomjLeh7icHNlG19yjs6XXOMedYm5xH2YxpV2tc0Ro2jJfxC50ApuxGob7lMsxfTbeUv07TyYxpeLucEH1gNd4IKH2LAg5TdVhlCafZvpskfncCfx8pOhJzd76bJWeYFnFciwcYfubRc12Ip/ppIhA1/mSZ/RxjFDrJC5xifFjJpY2Xl5zXdguFqYyTR1zSp1Y9p+tktDYYSNflcxI0iyO4TPBdlRcpeqjK/piF5bklq77VSEaA+z8qmJTFzIWiitbnzR794USKBUaT0NTEsVjZqLaFVqJoPN9ODG70IPbfBHKK+/q/AWR0tJzYHRULOa4MP+W/HfGadZUbfw177G7j/OGbIs8TahLyynl4X4RinF793Oz+BU0saXtUHrVBFT/DnA3ctNPoGbs4hRIjTok8i+algT1lTHi4SxFvONKNrgQFAq2/gFnWMXgwffgYMJpiKYkmW3tTg3ZQ9Jq+f8XN+A5eeUKHWvJWJ2sgJ1Sop+wwhqFVijqWaJhwtD8MNlSBeWNNWTa5Z5kPZw5+LbVT99wqTdx29lMUH4OIG/D86ruKEauBjvH5xy6um/Sfj7ei6UUVk4AIl3MyD4MSSTOFgSwsH/QJWaQ5as7ZcmgBZkzjjU1UrQ74ci1gWBCSGHtuV1H2mhSnO3Wp/3fEV5a+4wz//6qy8JxjZsmxxy5+4w9CDNJY09T072iKG0EnOS0arEYgXqYnXcYHwjTtUNAcMelOd4xpkoqiTYICWFq0JSiPfPDQdnt+4/wuqcXY47QILbgAAAABJRU5ErkJggg==");
box-shadow:
inset 0 4px 8px rgba(255, 255, 255, 0.7),
inset 0 -2px 4px rgba(0, 0, 0, 0.1),
0 8px 16px rgba(0, 0, 0, 0.2),
0 0 0 1px rgba(255, 255, 255, 0.5);
border-bottom: 1px solid rgba(255, 255, 255, 0.4);
border-radius: 0 0 12px 12px;
}
/* Workspaces - Your original style */
/* Monochrome Workspaces */
#workspaces {
margin: 5px 8px;
background: linear-gradient(to bottom, #ffffff, #d9d9d9);
border: 1px solid #aaaaaa;
box-shadow: 0px 0px 4px rgba(0,0,0,0.2);
margin: 4px 10px;
}
#workspaces button {
color: #555;
background: linear-gradient(145deg,
rgba(250, 250, 250, 0.9) 0%,
rgba(235, 235, 235, 0.9) 100%);
border: 1px solid rgba(200, 200, 200, 0.4);
min-width: 40px;
/* little fix */
padding: 4px 8px 4px 10px;
border-radius: 6px;
margin: 2px 2px 2px;
transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
box-shadow:
0 2px 4px rgba(0, 0, 0, 0.05),
inset 0 -1px 2px rgba(255, 255, 255, 0.5);
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
}
#workspaces button.active {
background: linear-gradient(to bottom, #ffffff, #c0d9f2);
border: 1px solid #66aaff;
color: #003366;
color: #222;
background: linear-gradient(145deg,
rgba(235, 220, 255, 0.9) 0%,
rgba(220, 200, 255, 0.9) 100%);
box-shadow:
0 3px 6px rgba(0, 0, 0, 0.1),
inset 0 -1px 2px rgba(255, 255, 255, 0.6);
text-shadow:
0 1px 1px rgba(255, 255, 255, 0.8);
}
#workspaces button:hover {
background: linear-gradient(to bottom, #d9ecff, #a9cfff);
color: #003366;
color: #0066cc; /* Dark blue text */
background: linear-gradient(145deg,
rgba(245, 245, 245, 0.9) 0%,
rgba(225, 225, 225, 0.9) 100%);
}
/* Modules - Your structure + Aero accents */
#network, #bluetooth, #pulseaudio, #battery, #clock, #cpu, #memory, #tray, #backlight,
#custom-launcher, #custom-power, #custom-wallpaper, #custom-spotify, #custom-clipboard {
margin: 5px 5px;
padding: 5px 10px;
background: linear-gradient(to bottom, #ffffff, #e6e6e6);
border: 1px solid #aaaaaa;
color: #111;
box-shadow: 0px 0px 3px rgba(0,0,0,0.15);
transition: all 0.2s ease; /* Smooth hover */
/* Monochrome Modules */
#bluetooth, #pulseaudio, #clock, #tray, #custom-clipboard, #custom-launcher, #custom-power {
margin: 6px 2px 6px;
padding: 0px 16px 0px;
background: linear-gradient(145deg,
rgba(255, 255, 255, 0.8) 0%,
rgba(245, 245, 245, 0.6) 100%);
border: 1px solid rgba(220, 220, 220, 0.4);
border-radius: 6px;
color: #444;
box-shadow:
0 2px 6px rgba(0, 0, 0, 0.06),
inset 0 1px 2px rgba(255, 255, 255, 0.6);
}
/* Color coding (Aero-inspired) */
#pulseaudio {
color: #aa55ff; /* Purple for volume */
/* Monochrome Modules */
#network, #cpu, #memory {
background: none;
border: none;
padding: 0px 10px 0px;
color: #444;
}
#cpu {
color: #0066cc; /* Blue for CPU */
/* Special buttons */
#custom-launcher {
margin-left: 6px;
padding: 2px 8px 2px;
}
#memory {
color: #0099ff; /* Lighter blue for RAM */
#custom-power {
margin-right: 6px;
background: linear-gradient(145deg,
rgba(255, 230, 230, 0.8) 0%,
rgba(255, 200, 200, 0.6) 100%);
padding: 2px 8px 2px;
box-shadow:
0 2px 4px rgba(0, 0, 0, 0.08),
inset 0 1px 2px rgba(255, 255, 255, 0.6);
transition: all 0.2s ease;
}
#battery {
color: #00aa44; /* Green for battery */
#custom-power:hover {
background: linear-gradient(145deg,
rgba(255, 200, 200, 0.8) 0%,
rgba(255, 150, 150, 0.6) 100%);
}
#clock {
color: #0077cc; /* Blue for clock */
/* Urgent in B&W */
#workspaces button.urgent {
animation: monochrome-pulse 2s infinite;
color: #000;
background: linear-gradient(145deg,
rgba(200, 200, 200, 0.9) 0%,
rgba(180, 180, 180, 0.9) 100%);
}
#network {
color: #3366ff; /* Bright blue for Wi-Fi */
@keyframes monochrome-pulse {
0% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1); }
100% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1); }
70% { box-shadow: 0 0 0 6px rgba(0, 0, 0, 0); }
}
/* Hover effects (Aero glow) */
#network:hover, #bluetooth:hover, #pulseaudio:hover, #battery:hover, #clock:hover,
#cpu:hover, #memory:hover, #tray:hover, #backlight:hover, #custom-launcher:hover,
#custom-power:hover, #custom-wallpaper:hover, #custom-spotify:hover, #custom-clipboard:hover {
box-shadow: 0 0 8px rgba(100, 180, 255, 0.5);
/* Tray Adjustments */
#tray {
padding: 2px 8px 2px;
margin-right: 3px;
background: linear-gradient(145deg,
rgba(255, 255, 255, 0.7) 0%,
rgba(245, 245, 245, 0.5) 100%);
}
/* Hover States */
#bluetooth:hover,
#pulseaudio:hover,
#clock:hover,
#tray:hover,
#custom-launcher:hover,
#custom-clipboard:hover {
background: linear-gradient(145deg,
rgba(255, 255, 255, 0.9) 0%,
rgba(250, 250, 250, 0.7) 100%);
color: #0066cc; /* Dark blue text */
}

View File

@ -2,7 +2,6 @@ width=600
height=300
location=center
show=drun
prompt=Search...
filter_rate=100
allow_markup=true
no_actions=true
@ -14,3 +13,4 @@ allow_images=true
image_size=40
gtk_dark=true
dynamic_lines=true
hide_search=true

View File

@ -4,17 +4,19 @@
padding: 3px;
}
/* Main window - Frosted glass effect */
window {
margin: 5px;
background-color: rgba(240, 240, 240, 0.85);
backdrop-filter: blur(12px);
background-color: rgba(240, 240, 240, 0.85); /* Light translucent */
backdrop-filter: blur(12px); /* Glass blur */
border: 1px solid rgba(200, 200, 200, 0.6);
border-radius: 8px;
border-radius: 8px; /* Softer corners */
box-shadow:
0 2px 5px rgba(0, 0, 0, 0.2),
inset 0 1px 1px rgba(255, 255, 255, 0.4);
inset 0 1px 1px rgba(255, 255, 255, 0.4); /* Inner glow */
}
/* Input bar - Aero "search box" */
#input {
margin: 8px;
padding: 8px 12px;
@ -26,6 +28,7 @@ window {
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
/* Items - Bubbly and interactive */
#entry {
padding: 8px 12px;
margin: 4px 8px;
@ -36,19 +39,22 @@ window {
transition: all 0.2s ease;
}
/* Selected item - Luminous highlight */
#entry:selected {
background: linear-gradient(to bottom, #bb86fc, #9a67ea);
background: linear-gradient(to bottom, #bb86fc, #9a67ea); /* Purple gradient */
color: #000;
border: 1px solid rgba(150, 100, 255, 0.5);
box-shadow: 0 0 8px rgba(187, 134, 252, 0.4);
box-shadow: 0 0 8px rgba(187, 134, 252, 0.4); /* Glow */
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
}
/* Hover effect - Subtle "pop" */
#entry:hover {
background: linear-gradient(to bottom, rgba(210, 220, 255, 0.8), rgba(180, 200, 255, 0.6));
transform: scale(1.01);
}
/* Inner/outer boxes - Transparent layers */
#inner-box {
margin: 5px;
background-color: transparent;

76
wofi/style/style.old.css Normal file
View File

@ -0,0 +1,76 @@
window {
margin: 0px;
border: 5px solid #1e1e2e;
background-color: #cdd6f4;
border-radius: 15px;
}
#input {
padding: 4px;
margin: 4px;
padding-left: 20px;
border: none;
color: #cdd6f4;
font-weight: bold;
background-color: #1e1e2e;
background: ;
outline: none;
border-radius: 15px;
margin: 10px;
margin-bottom: 2px;
}
#input:focus {
border: 0px solid #1e1e2e;
margin-bottom: 0px;
}
#inner-box {
margin: 4px;
border: 10px solid #1e1e2e;
color: #cdd6f4;
font-weight: bold;
background-color: #1e1e2e;
border-radius: 15px;
}
#outer-box {
margin: 0px;
border: none;
border-radius: 15px;
background-color: #1e1e2e;
}
#scroll {
margin-top: 5px;
border: none;
border-radius: 15px;
margin-bottom: 5px;
/* background: rgb(255,255,255); */
}
#img:selected {
background-color: #89b4fa;
border-radius: 15px;
}
#text:selected {
color: #cdd6f4;
margin: 0px 0px;
border: none;
border-radius: 15px;
background-color: #89b4fa;
}
#entry {
margin: 0px 0px;
border: none;
border-radius: 15px;
background-color: transparent;
}
#entry:selected {
margin: 0px 0px;
border: none;
border-radius: 15px;
background-color: #89b4fa;
}