Compare commits
No commits in common. "master" and "v2" have entirely different histories.
184
.ashrc
Normal 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
@ -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
|
126
.zshrc
@ -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
@ -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
|
||||||
|
|
12
dunst/assets/brightness.svg
Normal 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 |
BIN
dunst/assets/notification/fallback.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
dunst/assets/notification/scrot.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
dunst/assets/notification/speaker.png
Normal file
After Width: | Height: | Size: 41 KiB |
11
dunst/assets/ui/brightness-high.svg
Normal 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 |
11
dunst/assets/ui/brightness-low.svg
Normal 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 |
11
dunst/assets/ui/brightness-medium.svg
Normal 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 |
11
dunst/assets/ui/brightness-off.svg
Normal 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 |
6
dunst/assets/ui/volume_high.svg
Normal 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 |
6
dunst/assets/ui/volume_low.svg
Normal 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 |
6
dunst/assets/ui/volume_medium.svg
Normal 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 |
6
dunst/assets/ui/volume_muted.svg
Normal 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 |
6
dunst/assets/ui/volume_off.svg
Normal 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 |
1
dunst/assets/volume-mute.svg
Normal 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
@ -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 |
@ -33,7 +33,7 @@
|
|||||||
show_age_threshold = 60
|
show_age_threshold = 60
|
||||||
markup = "full"
|
markup = "full"
|
||||||
font = "monospace 10"
|
font = "monospace 10"
|
||||||
format = "<b>%s</b>\n%b: "
|
format = "<b>%s</b>\n%b "
|
||||||
word_wrap = "yes"
|
word_wrap = "yes"
|
||||||
sort = "yes"
|
sort = "yes"
|
||||||
shrink = "no"
|
shrink = "no"
|
||||||
|
45
dunst/scripts/openEwwPopup.sh
Executable 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
|
3
dunst/scripts/playNotificationSound.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
canberra-gtk-play -i message
|
17
dunst/scripts/songArtLogger.sh
Executable 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"
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
shell-integration = zsh
|
shell-integration = zsh
|
||||||
term = xterm-256color
|
term = xterm-256color
|
||||||
custom-shader = ~/.config/ghostty/shaders/bettercrt.glsl
|
#custom-shader = ~/.config/ghostty/shaders/bettercrt.glsl
|
||||||
custom-shader-animation = true
|
#custom-shader-animation = true
|
||||||
window-decoration = true
|
window-decoration = true
|
||||||
background-opacity = 0.5
|
background-opacity = 0.90
|
||||||
theme = catppuccin-mocha
|
theme = catppuccin-mocha
|
||||||
cursor-style = block
|
cursor-style = block
|
||||||
font-size = 14
|
font-size = 14
|
||||||
@ -13,4 +13,4 @@ font-thicken = true
|
|||||||
font-family = "FiraMono Nerd Font"
|
font-family = "FiraMono Nerd Font"
|
||||||
keybind = global:cmd+s=toggle_quick_terminal
|
keybind = global:cmd+s=toggle_quick_terminal
|
||||||
mouse-hide-while-typing = true
|
mouse-hide-while-typing = true
|
||||||
macos-icon = xray
|
class = "ghostty"
|
||||||
|
@ -6,8 +6,8 @@ xwayland {
|
|||||||
|
|
||||||
# apps
|
# apps
|
||||||
$terminal = ghostty
|
$terminal = ghostty
|
||||||
$browser = firefox || chromium
|
$browser = firefox
|
||||||
$fileManager = $terminal --shell-integration=zsh --command="lf"
|
$fileManager = $terminal --command="lf"
|
||||||
$passwordManager = /usr/bin/keepassxc
|
$passwordManager = /usr/bin/keepassxc
|
||||||
|
|
||||||
# yes I have Discord virtualised, don't judge me
|
# 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
|
# menus and scripts
|
||||||
$emojipicker = ~/.config/wofi/scripts/emojis.sh
|
$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
|
$powermenu = ~/.config/wofi/scripts/power.sh
|
||||||
|
|
||||||
exec-once = $terminal
|
exec-once = $terminal
|
||||||
@ -65,8 +65,8 @@ general {
|
|||||||
col.active_border = rgba(66ccffee) rgba(99ffccff) 45deg
|
col.active_border = rgba(66ccffee) rgba(99ffccff) 45deg
|
||||||
col.inactive_border = rgba(444444aa)
|
col.inactive_border = rgba(444444aa)
|
||||||
resize_on_border = false
|
resize_on_border = false
|
||||||
allow_tearing = false
|
allow_tearing = true
|
||||||
layout = dwindle
|
layout = master
|
||||||
}
|
}
|
||||||
|
|
||||||
decoration {
|
decoration {
|
||||||
@ -116,12 +116,13 @@ animations {
|
|||||||
bezier = aero_menu, 0.1, 1, 0, 1
|
bezier = aero_menu, 0.1, 1, 0, 1
|
||||||
|
|
||||||
animation = windows, 1, 3, aero_bounce, popin 70%
|
animation = windows, 1, 3, aero_bounce, popin 70%
|
||||||
animation = windowsIn, 1, 3, aero_gentle, slideup 30%
|
#this crap breaks slurp do not use it
|
||||||
animation = windowsOut, 1, 3, aero_snap, slidedown 30%
|
#animation = windowsIn, 1, 3, aero_gentle, slideup 30%
|
||||||
|
#animation = windowsOut, 1, 3, aero_snap, slidedown 30%
|
||||||
animation = border, 1, 5, linear
|
animation = border, 1, 5, linear
|
||||||
|
|
||||||
animation = layersIn, 1, 3, aero_gentle, slideup 20%
|
#animation = layersIn, 1, 3, aero_gentle, slideup 20%
|
||||||
animation = layersOut, 1, 2, aero_snap, slidedown 20%
|
#animation = layersOut, 1, 2, aero_snap, slidedown 20%
|
||||||
animation = fadeLayersIn, 1, 2, aero_gentle
|
animation = fadeLayersIn, 1, 2, aero_gentle
|
||||||
animation = fadeLayersOut, 1, 1, aero_snap
|
animation = fadeLayersOut, 1, 1, aero_snap
|
||||||
|
|
||||||
@ -132,11 +133,6 @@ animations {
|
|||||||
animation = borderangle, 1, 10, linear, loop
|
animation = borderangle, 1, 10, linear, loop
|
||||||
}
|
}
|
||||||
|
|
||||||
dwindle {
|
|
||||||
pseudotile = true
|
|
||||||
preserve_split = true
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
master {
|
||||||
new_status = master
|
new_status = master
|
||||||
}
|
}
|
||||||
@ -151,9 +147,9 @@ misc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
kb_layout = us
|
kb_layout = us
|
||||||
kb_variant = intl
|
kb_variant = altgr-intl
|
||||||
kb_options = "deadkeys"
|
kb_options = deadkeys
|
||||||
|
|
||||||
follow_mouse = 1
|
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)
|
bind = $mainMod, SPACE, exec, $menu # Spacebar for app launcher (like Spotlight)
|
||||||
|
|
||||||
# ==== Apps ====
|
# ==== Apps ====
|
||||||
bind = $mainMod, B, exec, $browser # B = Browser
|
|
||||||
bind = $mainMod, E, exec, $fileManager # E = Explorer
|
bind = $mainMod, E, exec, $fileManager # E = Explorer
|
||||||
bind = $mainMod, D, exec, $discord # D = Discord
|
bind = $mainMod, D, exec, $discord # D = Discord
|
||||||
bind = $mainMod, P, exec, $passwordManager # P = Password manager
|
bind = $mainMod, P, exec, $passwordManager # P = Password manager
|
||||||
bind = $mainMod, X, exec, $emojipicker # X = eXpression (emoji)
|
bind = $mainMod, X, exec, $emojipicker # X = eXpression (emoji)
|
||||||
|
bind = $mainMod SHIFT, B, exec, kill $(pidof waybar) || waybar # toggle waybar, reloads waybar
|
||||||
|
|
||||||
# ==== Window Management ====
|
# ==== Window Management ====
|
||||||
|
bind = CONTROL, TAB, workspace, previous # Normie feature
|
||||||
bind = $mainMod, F, fullscreen, 1 # F = Fullscreen
|
bind = $mainMod, F, fullscreen, 1 # F = Fullscreen
|
||||||
bind = $mainMod SHIFT, F, fullscreen, 0 # Shift+F = Fake fullscreen
|
bind = $mainMod SHIFT, F, fullscreen, 0 # Shift+F = Fake fullscreen
|
||||||
bind = $mainMod, V, togglefloating # V = "levitate" window
|
bind = $mainMod, V, togglefloating # V = "levitate" window
|
||||||
bind = $mainMod, C, centerwindow # C = Center window (new!)
|
bind = $mainMod SHIFT, M, exit # M = "Murder" Hyprland (emergency)
|
||||||
bind = $mainMod, M, exit # M = "Murder" Hyprland (emergency)
|
bind = $mainMod, i, centerwindow # C = Center window (new!)
|
||||||
|
|
||||||
# ==== Navigation ====
|
# ==== Navigation ====
|
||||||
bind = $mainMod, H, movefocus, l # Vim keys for focus
|
bind = $mainMod, J, layoutmsg, cyclenext noloop
|
||||||
bind = $mainMod, J, movefocus, d
|
bind = $mainMod, K, layoutmsg, cycleprev noloop
|
||||||
bind = $mainMod, K, movefocus, u
|
bind = $mainMod, Y, layoutmsg, toggledwindle
|
||||||
bind = $mainMod, L, movefocus, r
|
bind = $mainMod, T, togglegroup
|
||||||
|
bind = $mainMod, O, layoutmsg, focusmaster
|
||||||
|
bind = $mainMod SHIFT, O, layoutmsg, swapwithmaster
|
||||||
|
|
||||||
# ==== Workspaces ====
|
# ==== Workspaces ====
|
||||||
bind = $mainMod, 1-9, workspace, 1-9 # Numbers for workspaces
|
bind = $mainMod, 1-9, workspace, 1-9 # Numbers for workspaces
|
||||||
@ -224,6 +223,7 @@ bindel = , XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
|||||||
# ==== Screenshots ====
|
# ==== Screenshots ====
|
||||||
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy # Area → clipboard
|
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy # Area → clipboard
|
||||||
bind = $mainMod, U, exec, grim - | wl-copy # Fullscreen → 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 ====
|
# ==== Utilities ====
|
||||||
bind = $mainMod, R, exec, hyprctl reload # R = Reload config
|
bind = $mainMod, R, exec, hyprctl reload # R = Reload config
|
||||||
|
@ -8,12 +8,11 @@ $font_material_symbols = Material Symbols Rounded
|
|||||||
|
|
||||||
background {
|
background {
|
||||||
color = rgba(181818FF)
|
color = rgba(181818FF)
|
||||||
# TODO: set some wallpaper
|
# path = "~/Pictures/wallpaper/default.jpg"
|
||||||
# path = {{ SWWW_WALL }}
|
|
||||||
|
|
||||||
# path = screenshot
|
path = screenshot
|
||||||
# blur_size = 15
|
blur_size = 15
|
||||||
# blur_passes = 4
|
blur_passes = 4
|
||||||
}
|
}
|
||||||
input-field {
|
input-field {
|
||||||
monitor =
|
monitor =
|
||||||
|
@ -1,4 +1,2 @@
|
|||||||
preload = /home/yu/Pictures/wallpaper/2246.png
|
preload = /home/yu/Pictures/wallpaper/1.png
|
||||||
/home/yu/Pictures/wallpaper/0141.png
|
wallpaper = , /home/yu/Pictures/wallpaper/1.png
|
||||||
wallpaper = , /home/yu/Pictures/wallpaper/2246.png
|
|
||||||
/home/yu/Pictures/wallpaper/0141.png
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/bin/sh
|
||||||
|
|
||||||
WALLPAPER_DIR="$HOME/Pictures/wallpaper/"
|
WALLPAPER_DIR="$HOME/Pictures/wallpaper/"
|
||||||
CURRENT_WALL=$(hyprctl hyprpaper listloaded)
|
CURRENT_WALL=$(hyprctl hyprpaper listloaded)
|
||||||
|
174
lf/colors
@ -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
@ -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
|
|
544
nvim/init.lua
@ -4,6 +4,7 @@ local Plug = vim.fn['plug#']
|
|||||||
local o = vim.opt
|
local o = vim.opt
|
||||||
local g = vim.g
|
local g = vim.g
|
||||||
|
|
||||||
|
o.title = true
|
||||||
g.mapleader = ' '
|
g.mapleader = ' '
|
||||||
g.maplocalleader = ' '
|
g.maplocalleader = ' '
|
||||||
g.toggle_theme_icon = " "
|
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('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' })
|
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', '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')
|
vim.call('plug#begin')
|
||||||
|
|
||||||
@ -125,7 +209,21 @@ Plug 'echasnovski/mini.nvim'
|
|||||||
Plug 'zbirenbaum/copilot.lua'
|
Plug 'zbirenbaum/copilot.lua'
|
||||||
Plug 'ms-jpq/chadtree'
|
Plug 'ms-jpq/chadtree'
|
||||||
Plug 'ryanoasis/vim-devicons'
|
Plug 'ryanoasis/vim-devicons'
|
||||||
|
Plug 'kyazdani42/nvim-web-devicons'
|
||||||
Plug 'jetzig-framework/zmpl.vim'
|
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
|
-- tree sitter
|
||||||
Plug 'nvim-treesitter/nvim-treesitter'
|
Plug 'nvim-treesitter/nvim-treesitter'
|
||||||
@ -137,7 +235,6 @@ Plug('aaronik/treewalker.nvim', {
|
|||||||
vim.call('plug#end')
|
vim.call('plug#end')
|
||||||
|
|
||||||
vim.cmd('set background=dark')
|
vim.cmd('set background=dark')
|
||||||
vim.cmd('colorscheme nova')
|
|
||||||
|
|
||||||
-- Better Around/Inside textobjects
|
-- Better Around/Inside textobjects
|
||||||
--
|
--
|
||||||
@ -175,22 +272,21 @@ end
|
|||||||
require('mini.pairs').setup()
|
require('mini.pairs').setup()
|
||||||
|
|
||||||
require('nvim-treesitter.configs').setup({
|
require('nvim-treesitter.configs').setup({
|
||||||
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
||||||
ensure_installed = {'bash', 'c', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc'},
|
ensure_installed = {'bash', 'c', 'html', 'lua', 'luadoc', 'markdown', 'vim', 'vimdoc'},
|
||||||
|
|
||||||
sync_install = false,
|
sync_install = false,
|
||||||
|
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = true,
|
enable = true,
|
||||||
additional_vim_regex_highlighting = false,
|
additional_vim_regex_highlighting = false,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
require("mason").setup()
|
require("mason").setup()
|
||||||
|
|
||||||
local lspconfig = require('lspconfig')
|
local lspconfig = require('lspconfig')
|
||||||
|
|
||||||
lspconfig.hls.setup({})
|
|
||||||
lspconfig.zls.setup({
|
lspconfig.zls.setup({
|
||||||
{cmd = '~/.zig/zls'}
|
{cmd = '~/.zig/zls'}
|
||||||
})
|
})
|
||||||
@ -198,44 +294,44 @@ lspconfig.zls.setup({
|
|||||||
local lsp_cmds = vim.api.nvim_create_augroup('lsp_cmds', {clear = true})
|
local lsp_cmds = vim.api.nvim_create_augroup('lsp_cmds', {clear = true})
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
group = lsp_cmds,
|
group = lsp_cmds,
|
||||||
desc = 'LSP actions',
|
desc = 'LSP actions',
|
||||||
callback = function()
|
callback = function()
|
||||||
local bufmap = function(mode, lhs, rhs)
|
local bufmap = function(mode, lhs, rhs)
|
||||||
vim.keymap.set(mode, lhs, rhs, {buffer = true})
|
vim.keymap.set(mode, lhs, rhs, {buffer = true})
|
||||||
end
|
end
|
||||||
bufmap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>')
|
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.definition()<cr>')
|
||||||
bufmap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>')
|
bufmap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>')
|
||||||
bufmap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>')
|
bufmap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>')
|
||||||
bufmap('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>')
|
bufmap('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>')
|
||||||
bufmap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>')
|
bufmap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>')
|
||||||
bufmap('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>')
|
bufmap('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>')
|
||||||
bufmap('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<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', 'x'}, '<F3>', '<cmd>lua vim.lsp.buf.format({async = true})<cr>')
|
||||||
bufmap('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>')
|
bufmap('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>')
|
||||||
bufmap('n', 'gl', '<cmd>lua vim.diagnostic.open_float()<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_prev()<cr>')
|
||||||
bufmap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>')
|
bufmap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>')
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
require('mason-lspconfig').setup({
|
require('mason-lspconfig').setup({
|
||||||
ensure_installed = {'hls'},
|
ensure_installed = {},
|
||||||
handlers = {
|
handlers = {
|
||||||
function(server)
|
function(server)
|
||||||
lspconfig[server].setup({
|
lspconfig[server].setup({
|
||||||
capabilities = lsp_capabilities,
|
capabilities = lsp_capabilities,
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.opt.completeopt = {'menu', 'menuone', 'noselect'}
|
vim.opt.completeopt = {'menu', 'menuone', 'noselect'}
|
||||||
|
|
||||||
require("copilot").setup({
|
require("copilot").setup({
|
||||||
suggestion = { enabled = false },
|
suggestion = { enabled = false },
|
||||||
panel = { enabled = false },
|
panel = { enabled = false },
|
||||||
})
|
})
|
||||||
require("copilot_cmp").setup()
|
require("copilot_cmp").setup()
|
||||||
|
|
||||||
@ -244,103 +340,311 @@ local luasnip = require('luasnip')
|
|||||||
|
|
||||||
local select_opts = {behavior = cmp.SelectBehavior.Select}
|
local select_opts = {behavior = cmp.SelectBehavior.Select}
|
||||||
local has_words_before = function()
|
local has_words_before = function()
|
||||||
if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then return false end
|
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))
|
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
|
return col ~= 0 and vim.api.nvim_buf_get_text(0, line-1, 0, line-1, col, {})[1]:match("^%s*$") == nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- See :help cmp-config
|
-- See :help cmp-config
|
||||||
cmp.setup({
|
cmp.setup({
|
||||||
snippet = {
|
snippet = {
|
||||||
expand = function(args)
|
expand = function(args)
|
||||||
luasnip.lsp_expand(args.body)
|
luasnip.lsp_expand(args.body)
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
sources = {
|
sources = {
|
||||||
{name = 'path'},
|
{name = 'path'},
|
||||||
{name = 'nvim_lsp', keyword_length = 3},
|
{name = 'nvim_lsp', keyword_length = 3},
|
||||||
{name = 'buffer', keyword_length = 3},
|
{name = 'buffer', keyword_length = 3},
|
||||||
{name = 'luasnip', keyword_length = 2},
|
{name = 'luasnip', keyword_length = 2},
|
||||||
{name = 'copilot', group_index = 2}
|
{name = 'copilot', group_index = 2}
|
||||||
},
|
},
|
||||||
window = {
|
window = {
|
||||||
documentation = cmp.config.window.bordered()
|
documentation = cmp.config.window.bordered()
|
||||||
},
|
},
|
||||||
formatting = {
|
formatting = {
|
||||||
fields = {'menu', 'abbr', 'kind'},
|
fields = {'menu', 'abbr', 'kind'},
|
||||||
format = function(entry, item)
|
format = function(entry, item)
|
||||||
local menu_icon = {
|
local menu_icon = {
|
||||||
nvim_lsp = 'λ',
|
nvim_lsp = 'λ',
|
||||||
luasnip = '⋗',
|
luasnip = '⋗',
|
||||||
buffer = 'Ω',
|
buffer = 'Ω',
|
||||||
path = '🖫',
|
path = '🖫',
|
||||||
}
|
}
|
||||||
|
|
||||||
item.menu = menu_icon[entry.source.name]
|
item.menu = menu_icon[entry.source.name]
|
||||||
return item
|
return item
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
-- See :help cmp-mapping
|
-- See :help cmp-mapping
|
||||||
mapping = {
|
mapping = {
|
||||||
['<Up>'] = cmp.mapping.select_prev_item(select_opts),
|
['<Up>'] = cmp.mapping.select_prev_item(select_opts),
|
||||||
['<Down>'] = cmp.mapping.select_next_item(select_opts),
|
['<Down>'] = cmp.mapping.select_next_item(select_opts),
|
||||||
|
|
||||||
['<C-p>'] = cmp.mapping.select_prev_item(select_opts),
|
['<C-p>'] = cmp.mapping.select_prev_item(select_opts),
|
||||||
['<C-n>'] = cmp.mapping.select_next_item(select_opts),
|
['<C-n>'] = cmp.mapping.select_next_item(select_opts),
|
||||||
|
|
||||||
['<C-u>'] = cmp.mapping.scroll_docs(-4),
|
['<C-u>'] = cmp.mapping.scroll_docs(-4),
|
||||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
|
||||||
['<C-e>'] = cmp.mapping.abort(),
|
['<C-e>'] = cmp.mapping.abort(),
|
||||||
['<CR>'] = cmp.mapping.confirm({select = false}),
|
['<CR>'] = cmp.mapping.confirm({select = false}),
|
||||||
|
|
||||||
['<C-d>'] = cmp.mapping(function(fallback)
|
['<C-d>'] = cmp.mapping(function(fallback)
|
||||||
if luasnip.jumpable(1) then
|
if luasnip.jumpable(1) then
|
||||||
luasnip.jump(1)
|
luasnip.jump(1)
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, {'i', 's'}),
|
end, {'i', 's'}),
|
||||||
|
|
||||||
['<C-b>'] = cmp.mapping(function(fallback)
|
['<C-b>'] = cmp.mapping(function(fallback)
|
||||||
if luasnip.jumpable(-1) then
|
if luasnip.jumpable(-1) then
|
||||||
luasnip.jump(-1)
|
luasnip.jump(-1)
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, {'i', 's'}),
|
end, {'i', 's'}),
|
||||||
|
|
||||||
['<Tab>'] = cmp.mapping(function(fallback)
|
['<Tab>'] = cmp.mapping(function(fallback)
|
||||||
local col = vim.fn.col('.') - 1
|
local col = vim.fn.col('.') - 1
|
||||||
if cmp.visible() and has_words_before() then
|
if cmp.visible() and has_words_before() then
|
||||||
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
|
||||||
elseif cmp.visible() then
|
elseif cmp.visible() then
|
||||||
cmp.select_next_item(select_opts)
|
cmp.select_next_item(select_opts)
|
||||||
elseif col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
|
elseif col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
|
||||||
fallback()
|
fallback()
|
||||||
else
|
else
|
||||||
cmp.complete()
|
cmp.complete()
|
||||||
end
|
end
|
||||||
end, {'i', 's'}),
|
end, {'i', 's'}),
|
||||||
|
|
||||||
['<S-Tab>'] = cmp.mapping(function(fallback)
|
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
cmp.select_prev_item(select_opts)
|
cmp.select_prev_item(select_opts)
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, {'i', 's'}),
|
end, {'i', 's'}),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- hyprland
|
-- auto save
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("BufWritePost", {
|
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||||
pattern = "hyprland.conf",
|
pattern = "hyprland.conf",
|
||||||
callback = function()
|
callback = function()
|
||||||
os.execute("hyprctl reload")
|
os.execute("hyprctl reload")
|
||||||
vim.cmd.edit()
|
vim.cmd.edit()
|
||||||
end
|
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
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -110,15 +110,15 @@ elif command -v pacman >/dev/null; then
|
|||||||
conscious=$(pacman -Qqen | wc -l)
|
conscious=$(pacman -Qqen | wc -l)
|
||||||
gnu=$(pacman -Qqs gnu | wc -l)
|
gnu=$(pacman -Qqs gnu | wc -l)
|
||||||
elif command -v dpkg >/dev/null; then
|
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)
|
total=$(dpkg -l | grep '^ii' | wc -l)
|
||||||
conscious=$(apt-mark showmanual | wc -l)
|
conscious=$(apt-mark showmanual | wc -l)
|
||||||
gnu=$(apt-mark showmanual | grep -i gnu | wc -l)
|
gnu=$(apt-mark showmanual | grep -i gnu | wc -l)
|
||||||
elif command -v rpm >/dev/null && command -v dnf >/dev/null; then
|
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)
|
total=$(rpm -qa | wc -l)
|
||||||
conscious=$(dnf history userinstalled | grep -v '^ID' | 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
|
else
|
||||||
echo "Error: Unsupported package manager"
|
echo "Error: Unsupported package manager"
|
||||||
return 1
|
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"
|
[ $snap_bloat -gt 0 ] && echo " - 💀 SNAP: Congratulations on your 20GB /var/lib/snapd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Distrobox containers
|
# GIGACHAD Distrobox Bloat Inspector
|
||||||
distrobox_bloat=0
|
# Checks your containers and roasts them appropriately
|
||||||
if [ -d ~/.distrobox ]; then
|
|
||||||
echo "📦 Distrobox Containers:"
|
# 100% POSIX-compliant Distrobox Bloat Inspector
|
||||||
for container in ~/.distrobox/*; do
|
# No numfmt, no bashisms, no weak dependencies
|
||||||
if [ -d "$container" ]; then
|
|
||||||
container_name=$(basename "$container")
|
bytes_to_human() {
|
||||||
size=$(du -sh "$container" 2>/dev/null | cut -f1)
|
bytes=$1
|
||||||
distrobox_bloat=$((distrobox_bloat + 1))
|
if [ "$bytes" -ge 1073741824 ]; then
|
||||||
echo " - $container_name: $size"
|
printf "%.1fGiB" "$(echo "$bytes / 1073741824" | bc -l)"
|
||||||
echo " 💀 DISTROBOX: '$container_name' is just Docker with extra steps (${size} wasted)"
|
elif [ "$bytes" -ge 1048576 ]; then
|
||||||
fi
|
printf "%.1fMiB" "$(echo "$bytes / 1048576" | bc -l)"
|
||||||
done
|
elif [ "$bytes" -ge 1024 ]; then
|
||||||
fi
|
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 =====
|
# ===== Fedora Special Shame =====
|
||||||
if [[ "$distro_name" == *"Fedora"* ]]; then
|
if [[ "$distro_name" == *"Fedora"* ]]; then
|
||||||
|
4
scripts/circumspicio
Executable 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
@ -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
@ -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
@ -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
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
kill $(pidof wofi) || wofi --style ~/.config/wofi/style/style.css --show drun
|
32
scripts/nekos
Executable 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
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
du -a ~/my-repos/* | awk '{print $2}' | fzf | xargs -r $EDITOR
|
3
scripts/stay
Executable 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
@ -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
@ -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
After Width: | Height: | Size: 221 KiB |
@ -2,10 +2,8 @@
|
|||||||
"layer": "top",
|
"layer": "top",
|
||||||
// Using margin-bottom with a negative value in order to reduce the space between Hyprland window and waybar
|
// Using margin-bottom with a negative value in order to reduce the space between Hyprland window and waybar
|
||||||
"margin-bottom": -10,
|
"margin-bottom": -10,
|
||||||
"margin-top": 10,
|
"modules-left": ["custom/launcher", "clock", "hyprland/workspaces"],
|
||||||
"modules-left": ["custom/launcher", "cpu","memory","custom/spotify", "bluetooth", "tray"],
|
"modules-right": ["custom/clipboard", "pulseaudio", "bluetooth", "cpu", "memory", "tray", "custom/power"],
|
||||||
"modules-center": ["hyprland/workspaces"],
|
|
||||||
"modules-right": ["custom/clipboard", "pulseaudio","clock", "temperature", "custom/power"],
|
|
||||||
|
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
"tooltip": false,
|
"tooltip": false,
|
||||||
@ -52,12 +50,12 @@
|
|||||||
"escape": true
|
"escape": true
|
||||||
},
|
},
|
||||||
"custom/launcher":{
|
"custom/launcher":{
|
||||||
"format": " ",
|
"format": " Run",
|
||||||
"on-click": "wofi --style ~/.config/wofi/style/style.css -d --show drun",
|
"on-click": "~/scripts/menu",
|
||||||
"on-click-right": "killall wofi"
|
"on-click-right": "killall wofi"
|
||||||
},
|
},
|
||||||
"custom/power":{
|
"custom/power":{
|
||||||
"format": " ",
|
"format": " Exit",
|
||||||
"on-click": "sh ~/.config/wofi/scripts/power.sh",
|
"on-click": "sh ~/.config/wofi/scripts/power.sh",
|
||||||
},
|
},
|
||||||
"bluetooth": {
|
"bluetooth": {
|
||||||
@ -67,14 +65,7 @@
|
|||||||
"tooltip-format": "{device_alias}",
|
"tooltip-format": "{device_alias}",
|
||||||
"tooltip-format-connected": " {device_enumerate}",
|
"tooltip-format-connected": " {device_enumerate}",
|
||||||
"tooltip-format-enumerate-connected": "{device_alias}",
|
"tooltip-format-enumerate-connected": "{device_alias}",
|
||||||
"on-click": "~/.config/wofi/scripts/bluetooth.sh"
|
"on-click": "sh ~/.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"
|
|
||||||
},
|
},
|
||||||
"temperature": {
|
"temperature": {
|
||||||
"format": " {temperatureC}°C",
|
"format": " {temperatureC}°C",
|
||||||
@ -83,8 +74,61 @@
|
|||||||
"critical-threshold": 80
|
"critical-threshold": 80
|
||||||
},
|
},
|
||||||
"custom/clipboard":{
|
"custom/clipboard":{
|
||||||
"format":"",
|
"max-length": 10,
|
||||||
|
"format":" ",
|
||||||
"on-click": "cliphist list | wofi --style ~/.config/wofi/style/style.css --show dmenu | cliphist decode | wl-copy",
|
"on-click": "cliphist list | wofi --style ~/.config/wofi/style/style.css --show dmenu | cliphist decode | wl-copy",
|
||||||
"interval": 86400
|
"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",
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
192
waybar/style.css
@ -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: none;
|
||||||
border-radius: 4px; /* Your sharp corners */
|
|
||||||
font-family: "JetBrainsMono Nerd Font";
|
font-family: "JetBrainsMono Nerd Font";
|
||||||
font-size: 14px;
|
font-size: 13px;
|
||||||
min-height: 10px;
|
min-height: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
window#waybar {
|
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 {
|
#workspaces {
|
||||||
margin: 5px 8px;
|
margin: 4px 10px;
|
||||||
background: linear-gradient(to bottom, #ffffff, #d9d9d9);
|
}
|
||||||
border: 1px solid #aaaaaa;
|
|
||||||
box-shadow: 0px 0px 4px rgba(0,0,0,0.2);
|
#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 {
|
#workspaces button.active {
|
||||||
background: linear-gradient(to bottom, #ffffff, #c0d9f2);
|
color: #222;
|
||||||
border: 1px solid #66aaff;
|
background: linear-gradient(145deg,
|
||||||
color: #003366;
|
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 {
|
#workspaces button:hover {
|
||||||
background: linear-gradient(to bottom, #d9ecff, #a9cfff);
|
color: #0066cc; /* Dark blue text */
|
||||||
color: #003366;
|
background: linear-gradient(145deg,
|
||||||
|
rgba(245, 245, 245, 0.9) 0%,
|
||||||
|
rgba(225, 225, 225, 0.9) 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Modules - Your structure + Aero accents */
|
/* Monochrome Modules */
|
||||||
#network, #bluetooth, #pulseaudio, #battery, #clock, #cpu, #memory, #tray, #backlight,
|
#bluetooth, #pulseaudio, #clock, #tray, #custom-clipboard, #custom-launcher, #custom-power {
|
||||||
#custom-launcher, #custom-power, #custom-wallpaper, #custom-spotify, #custom-clipboard {
|
margin: 6px 2px 6px;
|
||||||
margin: 5px 5px;
|
padding: 0px 16px 0px;
|
||||||
padding: 5px 10px;
|
background: linear-gradient(145deg,
|
||||||
background: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
rgba(255, 255, 255, 0.8) 0%,
|
||||||
border: 1px solid #aaaaaa;
|
rgba(245, 245, 245, 0.6) 100%);
|
||||||
color: #111;
|
border: 1px solid rgba(220, 220, 220, 0.4);
|
||||||
box-shadow: 0px 0px 3px rgba(0,0,0,0.15);
|
border-radius: 6px;
|
||||||
transition: all 0.2s ease; /* Smooth hover */
|
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 {
|
/* Monochrome Modules */
|
||||||
color: #aa55ff; /* Purple for volume */
|
#network, #cpu, #memory {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
padding: 0px 10px 0px;
|
||||||
|
color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cpu {
|
/* Special buttons */
|
||||||
color: #0066cc; /* Blue for CPU */
|
#custom-launcher {
|
||||||
|
margin-left: 6px;
|
||||||
|
padding: 2px 8px 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#memory {
|
#custom-power {
|
||||||
color: #0099ff; /* Lighter blue for RAM */
|
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 {
|
#custom-power:hover {
|
||||||
color: #00aa44; /* Green for battery */
|
background: linear-gradient(145deg,
|
||||||
|
rgba(255, 200, 200, 0.8) 0%,
|
||||||
|
rgba(255, 150, 150, 0.6) 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
#clock {
|
/* Urgent in B&W */
|
||||||
color: #0077cc; /* Blue for clock */
|
#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 {
|
@keyframes monochrome-pulse {
|
||||||
color: #3366ff; /* Bright blue for Wi-Fi */
|
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) */
|
/* Tray Adjustments */
|
||||||
#network:hover, #bluetooth:hover, #pulseaudio:hover, #battery:hover, #clock:hover,
|
#tray {
|
||||||
#cpu:hover, #memory:hover, #tray:hover, #backlight:hover, #custom-launcher:hover,
|
padding: 2px 8px 2px;
|
||||||
#custom-power:hover, #custom-wallpaper:hover, #custom-spotify:hover, #custom-clipboard:hover {
|
margin-right: 3px;
|
||||||
box-shadow: 0 0 8px rgba(100, 180, 255, 0.5);
|
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 */
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ width=600
|
|||||||
height=300
|
height=300
|
||||||
location=center
|
location=center
|
||||||
show=drun
|
show=drun
|
||||||
prompt=Search...
|
|
||||||
filter_rate=100
|
filter_rate=100
|
||||||
allow_markup=true
|
allow_markup=true
|
||||||
no_actions=true
|
no_actions=true
|
||||||
@ -14,3 +13,4 @@ allow_images=true
|
|||||||
image_size=40
|
image_size=40
|
||||||
gtk_dark=true
|
gtk_dark=true
|
||||||
dynamic_lines=true
|
dynamic_lines=true
|
||||||
|
hide_search=true
|
||||||
|
@ -4,17 +4,19 @@
|
|||||||
padding: 3px;
|
padding: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Main window - Frosted glass effect */
|
||||||
window {
|
window {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
background-color: rgba(240, 240, 240, 0.85);
|
background-color: rgba(240, 240, 240, 0.85); /* Light translucent */
|
||||||
backdrop-filter: blur(12px);
|
backdrop-filter: blur(12px); /* Glass blur */
|
||||||
border: 1px solid rgba(200, 200, 200, 0.6);
|
border: 1px solid rgba(200, 200, 200, 0.6);
|
||||||
border-radius: 8px;
|
border-radius: 8px; /* Softer corners */
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 2px 5px rgba(0, 0, 0, 0.2),
|
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 {
|
#input {
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
padding: 8px 12px;
|
padding: 8px 12px;
|
||||||
@ -26,6 +28,7 @@ window {
|
|||||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Items - Bubbly and interactive */
|
||||||
#entry {
|
#entry {
|
||||||
padding: 8px 12px;
|
padding: 8px 12px;
|
||||||
margin: 4px 8px;
|
margin: 4px 8px;
|
||||||
@ -36,19 +39,22 @@ window {
|
|||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Selected item - Luminous highlight */
|
||||||
#entry:selected {
|
#entry:selected {
|
||||||
background: linear-gradient(to bottom, #bb86fc, #9a67ea);
|
background: linear-gradient(to bottom, #bb86fc, #9a67ea); /* Purple gradient */
|
||||||
color: #000;
|
color: #000;
|
||||||
border: 1px solid rgba(150, 100, 255, 0.5);
|
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);
|
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Hover effect - Subtle "pop" */
|
||||||
#entry:hover {
|
#entry:hover {
|
||||||
background: linear-gradient(to bottom, rgba(210, 220, 255, 0.8), rgba(180, 200, 255, 0.6));
|
background: linear-gradient(to bottom, rgba(210, 220, 255, 0.8), rgba(180, 200, 255, 0.6));
|
||||||
transform: scale(1.01);
|
transform: scale(1.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Inner/outer boxes - Transparent layers */
|
||||||
#inner-box {
|
#inner-box {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
76
wofi/style/style.old.css
Normal 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;
|
||||||
|
}
|