dev: automated commit - 2025-09-22 09:56:48

This commit is contained in:
Mariano Z. 2025-09-22 09:56:48 -03:00
parent dbcbcf4077
commit 7bf9a172ac
37 changed files with 311 additions and 140 deletions

View file

@ -1,7 +1,7 @@
[user] [user]
email = marianoz@posteo.net email = marianoz@posteo.net
name = Mariano Z. name = Mariano Z.
signingkey = 13D35660EC8E8AA03D4370A83FA93CB876C8FFAA signingkey = E54F23DDA33256B4BC82B7184C73BAD25156DACE
[core] [core]
autocrlf = input autocrlf = input

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,12 +1,12 @@
#!/bin/bash #!/usr/bin/env bash
MODULE_URL="mzunino.com.uy/go/code" MODULE_URL="github.com/marianozunino/code/v2"
BINARY_NAME="code" BINARY_NAME="code"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"
BINARY_PATH="$TARGET_DIR/$BINARY_NAME" BINARY_PATH="$TARGET_DIR/$BINARY_NAME"
if [ ! -x "$BINARY_PATH" ]; then if [ ! -x "$BINARY_PATH" ]; then
notify-send "📦 Installing $BINARY_NAME" "Installing from $MODULE_URL..." notify-send "📦 Installing $BINARY_NAME" "Installing from $MODULE_URL..."
GO111MODULE=on GOBIN="$TARGET_DIR" go install "$MODULE_URL@master" || { GO111MODULE=on GOBIN="$TARGET_DIR" go install "$MODULE_URL@v2.0.2" || {
notify-send -u critical "Installation Failed" "Failed to install $BINARY_NAME from $MODULE_URL" notify-send -u critical "Installation Failed" "Failed to install $BINARY_NAME from $MODULE_URL"
exit 1 exit 1
} }

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# DBeaver Profile Backup Script # DBeaver Profile Backup Script
# This script creates a backup of DBeaver profiles and configurations # This script creates a backup of DBeaver profiles and configurations

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# DBeaver Profile Restore Script # DBeaver Profile Restore Script
# This script restores a DBeaver backup created with the backup script # This script restores a DBeaver backup created with the backup script

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
OLD_URL=$(git remote get-url origin) OLD_URL=$(git remote get-url origin)
if [[ $OLD_URL == "https://github.com"* ]]; then if [[ $OLD_URL == "https://github.com"* ]]; then

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# ~/.local/bin/font-manager # ~/.local/bin/font-manager
# This script extracts font archives and rebuilds font cache # This script extracts font archives and rebuilds font cache
# Enhanced version with better integration and error handling # Enhanced version with better integration and error handling

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
MODULE_URL="github.com/marianozunino/goq" MODULE_URL="github.com/marianozunino/goq"
BINARY_NAME="goq" BINARY_NAME="goq"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
REPO="noovolari/leapp" REPO="noovolari/leapp"
BINARY_NAME="leapp" BINARY_NAME="leapp"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
swaylock -f \ swaylock -f \
--screenshots \ --screenshots \
--clock \ --clock \

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Make sure we're running as root or with sudo # Make sure we're running as root or with sudo
if [ "$(id -u)" -ne 0 ]; then if [ "$(id -u)" -ne 0 ]; then

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
BINARY_NAME="nosql" BINARY_NAME="nosql"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"
BINARY_PATH="$TARGET_DIR/$BINARY_NAME" BINARY_PATH="$TARGET_DIR/$BINARY_NAME"

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
REPO="MuhammedKalkan/OpenLens" REPO="MuhammedKalkan/OpenLens"
BINARY_NAME="openlens" BINARY_NAME="openlens"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Kill any existing swaybg or feh instances # Kill any existing swaybg or feh instances
pkill swaybg pkill swaybg

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
REPO="qishibo/AnotherRedisDesktopManager" REPO="qishibo/AnotherRedisDesktopManager"
BINARY_NAME="redis" BINARY_NAME="redis"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
MODULE_URL="github.com/marianozunino/rop" MODULE_URL="github.com/marianozunino/rop"
BINARY_NAME="rop" BINARY_NAME="rop"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
file=/tmp/$(date "+%Y%m%d-%H%M%S")_screenshot.png file=/tmp/$(date "+%Y%m%d-%H%M%S")_screenshot.png
grim -g "$(slurp)" "$file" && grim -g "$(slurp)" "$file" &&

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
MODULE_URL="github.com/marianozunino/sdm-ui" MODULE_URL="github.com/marianozunino/sdm-ui"
BINARY_NAME="sdm-ui" BINARY_NAME="sdm-ui"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
BINARY_NAME="sm" BINARY_NAME="sm"
TARGET_DIR="$HOME/.local/bin" TARGET_DIR="$HOME/.local/bin"
BINARY_PATH="$TARGET_DIR/$BINARY_NAME" BINARY_PATH="$TARGET_DIR/$BINARY_NAME"

View file

@ -1,11 +1,11 @@
#!/bin/bash #!/usr/bin/env bash
CONFIG_FILES="$HOME/.config/waybar/config.jsonc $HOME/.config/waybar/style.css" CONFIG_FILES="$HOME/.config/waybar/config.jsonc $HOME/.config/waybar/style.css"
trap "killall waybar" EXIT trap "killall waybar" EXIT
while true; do while true; do
waybar & waybar &
inotifywait -e create,modify $CONFIG_FILES inotifywait -e create,modify $CONFIG_FILES
killall waybar killall waybar
done done

View file

@ -1,5 +1,6 @@
# Include system defaults # Include system defaults
include /etc/sway/config.d/* # include /etc/sway/config.d/*
exec systemd-cat --identifier=sway dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
# Include custom configuration modules # Include custom configuration modules
include ~/.config/sway/config.d/variables include ~/.config/sway/config.d/variables

View file

@ -15,13 +15,13 @@ gaps outer 5
xwayland enable xwayland enable
# SwayFX Settings # SwayFX Settings
smart_corner_radius on # smart_corner_radius on
corner_radius 10 # corner_radius 10
#
default_dim_inactive 0.05 # default_dim_inactive 0.05
blur enable # blur enable
blur_passes 1 # blur_passes 1
blur_radius 1 # blur_radius 1
layer_effects "waybar" "blur enable"; shadows enable # layer_effects "waybar" "blur enable"; shadows enable
shadows on # shadows on
shadow_blur_radius 20 # shadow_blur_radius 20

View file

@ -1,28 +1,28 @@
# vim: ft=swayconfig # vim: ft=swayconfig
# System Services # System Services
exec { exec {
/usr/lib/mate-polkit/polkit-mate-authentication-agent-1 # /usr/lib/mate-polkit/polkit-mate-authentication-agent-1
blueman-applet blueman-applet
nm-applet nm-applet
swaync swaync
wlsunset -l -34.9 -L -56.2 -t 4500 -g 0.9 wlsunset -l -34.9 -L -56.2 -t 4500 -g 0.9
easyeffects --gapplication-service easyeffects --gapplication-service
} }
#
# User Interface # # User Interface
exec { exec {
~/.local/bin/randwall ~/.local/bin/randwall
~/.local/bin/waybar.sh ~/.local/bin/waybar.sh
} }
#
# Applications # Applications
exec { exec {
$term --class="uy.com.mzunino" $term --class="uy.com.mzunino"
slack slack
davmail davmail
betterbird thunderbird
zen-browser zen
obsidian # obsidian
localsend localsend_app
vesktop vesktop
} }

View file

@ -16,7 +16,7 @@ bindgesture swipe:down workspace prev
bindsym { bindsym {
$mod+Return exec $term $mod+Return exec $term
$mod+d exec rofi -show combi -combi-modi "window,drun" -modi combi $mod+d exec rofi -show combi -combi-modi "window,drun" -modi combi
$mod+t exec ~/.local/bin/code.sh -s ~/.local/bin/fuzzel.lua $mod+t exec ~/.local/bin/code.sh -s ~/.local/bin/rofi.yaml
$mod+shift+t exec ~/.local/bin/present $mod+shift+t exec ~/.local/bin/present
$mod+n exec ~/.local/bin/sdm-ui.sh dmenu $mod+n exec ~/.local/bin/sdm-ui.sh dmenu
$mod+o exec ~/.local/bin/launch-or-focus obsidian "cd /home/forbi/Documents/Vault && $term --class obsidian nvim" $mod+o exec ~/.local/bin/launch-or-focus obsidian "cd /home/forbi/Documents/Vault && $term --class obsidian nvim"

View file

@ -15,6 +15,7 @@ setw -g aggressive-resize on # Only resize screen if smaller scree
set -g history-limit 10000 # Store 10k lines of history set -g history-limit 10000 # Store 10k lines of history
set-option -g allow-rename off # Disable automatic window renaming set-option -g allow-rename off # Disable automatic window renaming
set-option -s set-clipboard on # Enable clipboard support set-option -s set-clipboard on # Enable clipboard support
setw -g mode-keys vi # Use vi keys in copy mode
# Key Bindings # Key Bindings
@ -35,6 +36,25 @@ bind -r J resize-pane -D 5
bind -r K resize-pane -U 5 bind -r K resize-pane -U 5
bind -r L resize-pane -R 5 bind -r L resize-pane -R 5
# Vim-like copy mode navigation
bind-key -T copy-mode-vi h send-keys -X cursor-left
bind-key -T copy-mode-vi j send-keys -X cursor-down
bind-key -T copy-mode-vi k send-keys -X cursor-up
bind-key -T copy-mode-vi l send-keys -X cursor-right
bind-key -T copy-mode-vi w send-keys -X next-word
bind-key -T copy-mode-vi b send-keys -X previous-word
bind-key -T copy-mode-vi 0 send-keys -X start-of-line
bind-key -T copy-mode-vi $ send-keys -X end-of-line
bind-key -T copy-mode-vi G send-keys -X history-bottom
bind-key -T copy-mode-vi g send-keys -X history-top
bind-key -T copy-mode-vi / command-prompt -T search -I "#{pane_current_path}" "send -X search-forward \"%%\""
bind-key -T copy-mode-vi ? command-prompt -T search -I "#{pane_current_path}" "send -X search-backward \"%%\""
bind-key -T copy-mode-vi n send-keys -X search-again
bind-key -T copy-mode-vi N send-keys -X search-reverse
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
bind-key -T copy-mode-vi Escape send-keys -X cancel
# Move pane to a different window # Move pane to a different window
bind-key m choose-window -F "#{window_index}: #{window_name}" "join-pane -h -t %%" bind-key m choose-window -F "#{window_index}: #{window_name}" "join-pane -h -t %%"
bind-key M choose-window -F "#{window_index}: #{window_name}" "join-pane -v -t %%" bind-key M choose-window -F "#{window_index}: #{window_name}" "join-pane -v -t %%"
@ -85,7 +105,7 @@ set -g @catppuccin_window_current_text "#W#{?window_zoomed_flag,(🔍),}"
set -g @catppuccin_window_default_text "#W" set -g @catppuccin_window_default_text "#W"
# Determine status modules based on hostname # Determine status modules based on hostname
run-shell "if [ $(hostname) = 't14' ]; then \ run-shell "if [ $(hostname) = 'fw' ]; then \
tmux set -g @catppuccin_status_modules_right 'date_time battery session'; \ tmux set -g @catppuccin_status_modules_right 'date_time battery session'; \
else \ else \
tmux set -g @catppuccin_status_modules_right 'date_time session'; \ tmux set -g @catppuccin_status_modules_right 'date_time session'; \

View file

@ -123,16 +123,16 @@
] ]
} }
}, },
"pulseaudio#microphone": { // "pulseaudio#microphone": {
"format": "{format_source}", // "format": "{format_source}",
"format-source": " {volume}%", // "format-source": " {volume}%",
"format-source-muted": " Muted", // "format-source-muted": " Muted",
"on-click": "wpctl set-mute @DEFAULT_SOURCE@ toggle", // "on-click": "wpctl set-mute @DEFAULT_SOURCE@ toggle",
"on-click-right": "pavucontrol", // "on-click-right": "pavucontrol",
"on-scroll-up": "wpctl set-volume -l 1 @DEFAULT_SOURCE@ 5%+", // "on-scroll-up": "wpctl set-volume -l 1 @DEFAULT_SOURCE@ 5%+",
"on-scroll-down": "wpctl set-volume -l 1 @DEFAULT_SOURCE@ 5%-", // "on-scroll-down": "wpctl set-volume -l 1 @DEFAULT_SOURCE@ 5%-",
"scroll-step": 5 // "scroll-step": 5
}, // },
"temperature": { "temperature": {
"thermal-zone": 1, "thermal-zone": 1,
"format": " {temperatureC}°C", "format": " {temperatureC}°C",

View file

@ -45,21 +45,21 @@
"custom/wf-recorder", "custom/wf-recorder",
"custom/randwall", "custom/randwall",
"pulseaudio", "pulseaudio",
"custom/vpn", // "custom/vpn",
"custom/notification", "custom/notification",
"tray", "tray",
"clock" "clock"
], ],
"output": [ "output": [
"HDMI-A-1" "HDMI-A-1"
], ]
"custom/vpn": { // "custom/vpn": {
"format": "{}", // "format": "{}",
"return-type": "json", // "return-type": "json",
"interval": 1, // "interval": 1,
"exec": "/home/forbi/.local/bin/vpn", // "exec": "/home/forbi/.local/bin/vpn",
"on-click": "/home/forbi/.local/bin/vpn toggle" // "on-click": "/home/forbi/.local/bin/vpn toggle"
} // }
}, },
{ {
"include": [ "include": [
@ -73,10 +73,10 @@
"custom/playerlabel" "custom/playerlabel"
], ],
"modules-right": [ "modules-right": [
"custom/microphone", // "custom/microphone",
"custom/randwall", "custom/randwall",
"pulseaudio", "pulseaudio",
"custom/vpn", // "custom/vpn",
"custom/notification", "custom/notification",
"backlight", "backlight",
"battery", "battery",
@ -85,20 +85,20 @@
], ],
"output": [ "output": [
"eDP-1" "eDP-1"
], ]
"custom/vpn": { // "custom/vpn": {
"format": "{}", // "format": "{}",
"return-type": "json", // "return-type": "json",
"interval": 1, // "interval": 1,
"exec": "/home/forbi/.local/bin/vpn", // "exec": "/home/forbi/.local/bin/vpn",
"on-click": "/home/forbi/.local/bin/vpn toggle" // "on-click": "/home/forbi/.local/bin/vpn toggle"
}, // }
"custom/microphone": { // "custom/microphone": {
"format": "{}", // "format": "{}",
"return-type": "json", // "return-type": "json",
"exec": "~/.config/waybar/scripts/mic-status.sh --monitor", // "exec": "~/.config/waybar/scripts/mic-status.sh --monitor",
"restart-interval": 1, // "restart-interval": 1,
"on-click": "pavucontrol -t 4" // "on-click": "pavucontrol -t 4"
} // }
} }
] ]

View file

@ -25,7 +25,7 @@ tooltip {
#workspaces button { #workspaces button {
color: #fff; color: #fff;
border-radius: 10px; border-radius: 10px;
padding: 0px; padding: 5px;
margin: 4px 4px; margin: 4px 4px;
} }

View file

@ -11,5 +11,6 @@ export ZDOTDIR=${ZDOTDIR:-~/.config/zsh}
if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
#exec niri #exec niri
exec sway exec sway
# exec niri
fi fi

View file

@ -1,6 +1,6 @@
# Package management # Package management
alias fly='flyctl' alias fly='flyctl'
alias yay="paru --bottomup" # alias yay="paru --bottomup"
alias yeet="sudo pacman -Rns" alias yeet="sudo pacman -Rns"
alias orphan="doas pacman -Rns (pacman -Qtdq)" alias orphan="doas pacman -Rns (pacman -Qtdq)"
@ -44,7 +44,6 @@ alias gho="gh browse"
alias gh-clone='gc' alias gh-clone='gc'
alias task='go-task' alias task='go-task'
alias sdu='sdm-ui fzf' alias sdu='sdm-ui fzf'
alias fd='/bin/fd'
# Tmux # Tmux
@ -58,6 +57,8 @@ alias doomconf="vim ~/.config/gzdoom/gzdoom.ini"
alias pluginconf="vim ~/.config/nvim/plugins.vim" alias pluginconf="vim ~/.config/nvim/plugins.vim"
alias i3conf="vim ~/.config/i3/config" alias i3conf="vim ~/.config/i3/config"
alias cssh="vim ~/.ssh/config" alias cssh="vim ~/.ssh/config"
alias sm="sublime_merge"
alias nv = "nix run github:vic/nix-versions --";
function vimwhich { function vimwhich {
nvim $(which $1) nvim $(which $1)

View file

@ -46,3 +46,45 @@ _kf_completion() {
# Register the completion # Register the completion
compdef _kf_completion kf compdef _kf_completion kf
_yay_completion() {
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="-Syyu -Syu -Ss -S -R -Q -Si -Sc help install remove list clean"
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
# For zsh:
_yay_zsh_completion() {
local -a opts
opts=(
'-Syyu:Update system'
'-Syu:Update system'
'-Ss:Search packages'
'-S:Install system-wide'
'-R:Remove package'
'-Q:List installed'
'-Si:Package info'
'-Sc:Clean cache'
'help:Show help'
'install:Install to user env'
'remove:Remove from user env'
'list:List installed packages'
'clean:Clean nix store'
)
_describe 'yay commands' opts
}
# Enable completion based on shell
if [[ -n "${BASH_VERSION:-}" ]]; then
complete -F _yay_completion yay
elif [[ -n "${ZSH_VERSION:-}" ]]; then
compdef _yay_zsh_completion yay
fi

View file

@ -23,7 +23,7 @@ function open {
echo "Opens files using the system default application" echo "Opens files using the system default application"
return 1 return 1
fi fi
for i in "$@"; do for i in "$@"; do
if [[ ! -e "$i" ]]; then if [[ ! -e "$i" ]]; then
echo "Warning: '$i' does not exist" >&2 echo "Warning: '$i' does not exist" >&2
@ -39,12 +39,12 @@ function fopen() {
echo "Error: fd is not installed" >&2 echo "Error: fd is not installed" >&2
return 1 return 1
fi fi
if ! command -v fzf >/dev/null 2>&1; then if ! command -v fzf >/dev/null 2>&1; then
echo "Error: fzf is not installed" >&2 echo "Error: fzf is not installed" >&2
return 1 return 1
fi fi
local selected local selected
selected=$(fd "$@" | fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}') selected=$(fd "$@" | fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}')
[[ -n "$selected" ]] && setsid nohup xdg-open "$selected" >/dev/null 2>&1 & [[ -n "$selected" ]] && setsid nohup xdg-open "$selected" >/dev/null 2>&1 &
@ -57,7 +57,7 @@ function fopen() {
# Smart package manager detection and execution # Smart package manager detection and execution
function _package_manager { function _package_manager {
local pkg_manager="" local pkg_manager=""
# Detect package manager based on lock files # Detect package manager based on lock files
if [[ -f bun.lockb ]]; then if [[ -f bun.lockb ]]; then
pkg_manager="bun" pkg_manager="bun"
@ -95,7 +95,7 @@ function dc() {
echo "If no message provided, uses timestamp-based message" echo "If no message provided, uses timestamp-based message"
return 0 return 0
fi fi
if ! git rev-parse --is-inside-work-tree &>/dev/null; then if ! git rev-parse --is-inside-work-tree &>/dev/null; then
echo "Error: Not in a git repository" >&2 echo "Error: Not in a git repository" >&2
return 1 return 1
@ -139,7 +139,7 @@ function git-clean() {
echo "Protects main, master, and develop branches" echo "Protects main, master, and develop branches"
return 0 return 0
fi fi
if ! git rev-parse --is-inside-work-tree &>/dev/null; then if ! git rev-parse --is-inside-work-tree &>/dev/null; then
echo "Error: Not in a git repository" >&2 echo "Error: Not in a git repository" >&2
return 1 return 1
@ -174,22 +174,13 @@ function git-clean() {
fi fi
} }
# Open Sublime Merge
function sm {
if [[ ! -f /opt/sublime_merge/sublime_merge ]]; then
echo "Error: Sublime Merge not found at /opt/sublime_merge/sublime_merge" >&2
return 1
fi
/opt/sublime_merge/sublime_merge "$@"
}
# Quick access to Neovim config # Quick access to Neovim config
function vimrc { function vimrc {
if [[ -z "$XDG_CONFIG_HOME" ]]; then if [[ -z "$XDG_CONFIG_HOME" ]]; then
echo "Error: XDG_CONFIG_HOME not set" >&2 echo "Error: XDG_CONFIG_HOME not set" >&2
return 1 return 1
fi fi
local original_dir=$(pwd) local original_dir=$(pwd)
cd "$XDG_CONFIG_HOME/nvim" || { cd "$XDG_CONFIG_HOME/nvim" || {
echo "Error: Cannot access $XDG_CONFIG_HOME/nvim" >&2 echo "Error: Cannot access $XDG_CONFIG_HOME/nvim" >&2
@ -199,13 +190,29 @@ function vimrc {
cd "$original_dir" cd "$original_dir"
} }
function nixrc {
if [[ -z "$XDG_CONFIG_HOME" ]]; then
echo "Error: XDG_CONFIG_HOME not set" >&2
return 1
fi
local original_dir=$(pwd)
cd "$XDG_CONFIG_HOME/nixos" || {
echo "Error: Cannot access $XDG_CONFIG_HOME/nixos" >&2
return 1
}
nvim
cd "$original_dir"
}
# Quick access to Zsh config # Quick access to Zsh config
function zshrc { function zshrc {
if [[ -z "$XDG_CONFIG_HOME" ]]; then if [[ -z "$XDG_CONFIG_HOME" ]]; then
echo "Error: XDG_CONFIG_HOME not set" >&2 echo "Error: XDG_CONFIG_HOME not set" >&2
return 1 return 1
fi fi
local original_dir=$(pwd) local original_dir=$(pwd)
cd "$XDG_CONFIG_HOME/zsh" || { cd "$XDG_CONFIG_HOME/zsh" || {
echo "Error: Cannot access $XDG_CONFIG_HOME/zsh" >&2 echo "Error: Cannot access $XDG_CONFIG_HOME/zsh" >&2
@ -224,19 +231,19 @@ function expose() {
echo "Example: expose 3000 # Exposes localhost:3000" echo "Example: expose 3000 # Exposes localhost:3000"
return 0 return 0
fi fi
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Error: Port number required" >&2 echo "Error: Port number required" >&2
echo "Usage: expose <port>" >&2 echo "Usage: expose <port>" >&2
return 1 return 1
fi fi
# Validate port number # Validate port number
if ! [[ "$1" =~ ^[0-9]+$ ]] || [[ "$1" -lt 1 ]] || [[ "$1" -gt 65535 ]]; then if ! [[ "$1" =~ ^[0-9]+$ ]] || [[ "$1" -lt 1 ]] || [[ "$1" -gt 65535 ]]; then
echo "Error: Invalid port number. Must be between 1-65535" >&2 echo "Error: Invalid port number. Must be between 1-65535" >&2
return 1 return 1
fi fi
# Check if port is already in use # Check if port is already in use
if lsof -i ":$1" >/dev/null 2>&1; then if lsof -i ":$1" >/dev/null 2>&1; then
echo "Warning: Port $1 is already in use" >&2 echo "Warning: Port $1 is already in use" >&2
@ -249,7 +256,7 @@ function expose() {
return 1 return 1
fi fi
fi fi
echo "Creating SSH tunnel for port $1..." echo "Creating SSH tunnel for port $1..."
ssh marianozunino@srv.us -R 1:localhost:"$1" ssh marianozunino@srv.us -R 1:localhost:"$1"
} }
@ -263,19 +270,19 @@ function ppid {
echo "Alias: pport" echo "Alias: pport"
return 0 return 0
fi fi
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Error: Port number required" >&2 echo "Error: Port number required" >&2
echo "Usage: ppid <port>" >&2 echo "Usage: ppid <port>" >&2
return 1 return 1
fi fi
# Validate port number # Validate port number
if ! [[ "$1" =~ ^[0-9]+$ ]] || [[ "$1" -lt 1 ]] || [[ "$1" -gt 65535 ]]; then if ! [[ "$1" =~ ^[0-9]+$ ]] || [[ "$1" -lt 1 ]] || [[ "$1" -gt 65535 ]]; then
echo "Error: Invalid port number. Must be between 1-65535" >&2 echo "Error: Invalid port number. Must be between 1-65535" >&2
return 1 return 1
fi fi
lsof -i ":$1" lsof -i ":$1"
} }
@ -295,7 +302,7 @@ function kf {
echo "Example: kf prod my-service" echo "Example: kf prod my-service"
return 0 return 0
fi fi
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Error: Cluster name required" >&2 echo "Error: Cluster name required" >&2
echo "Usage: kf <cluster> [service-name]" >&2 echo "Usage: kf <cluster> [service-name]" >&2
@ -314,7 +321,7 @@ function kf {
echo "Error: kubefwd is not installed" >&2 echo "Error: kubefwd is not installed" >&2
return 1 return 1
fi fi
echo "Starting kubefwd for cluster: $cluster" echo "Starting kubefwd for cluster: $cluster"
sudo -E kubefwd svc -n "${namespace}" -x "${cluster}" ${svc_filter} sudo -E kubefwd svc -n "${namespace}" -x "${cluster}" ${svc_filter}
} }
@ -347,15 +354,15 @@ function wacom {
echo "Supports both Wayland and X11 sessions" echo "Supports both Wayland and X11 sessions"
return 0 return 0
fi fi
if [[ "$XDG_SESSION_TYPE" = "wayland" ]]; then if [[ "$XDG_SESSION_TYPE" = "wayland" ]]; then
if ! command -v otd >/dev/null 2>&1; then if ! command -v otd >/dev/null 2>&1; then
echo "Error: opentabletdriver (otd) not found" >&2 echo "Error: opentabletdriver (otd) not found" >&2
return 1 return 1
fi fi
systemctl --user enable opentabletdriver --now systemctl --user enable opentabletdriver --now
local config_file="$HOME/Sync/System/Configs/wacom/wacom.json" local config_file="$HOME/Sync/System/Configs/wacom/wacom.json"
if [[ -f "$config_file" ]]; then if [[ -f "$config_file" ]]; then
otd loadsettings "$config_file" otd loadsettings "$config_file"
@ -368,14 +375,14 @@ function wacom {
echo "Error: xsetwacom not found" >&2 echo "Error: xsetwacom not found" >&2
return 1 return 1
fi fi
xsetwacom --set "Wacom One by Wacom S Pen stylus" ResetArea xsetwacom --set "Wacom One by Wacom S Pen stylus" ResetArea
xsetwacom --set "Wacom One by Wacom S Pen stylus" MapToOutput DisplayPort-0 xsetwacom --set "Wacom One by Wacom S Pen stylus" MapToOutput DisplayPort-0
xsetwacom --set "Wacom One by Wacom S Pen stylus" Rotate half xsetwacom --set "Wacom One by Wacom S Pen stylus" Rotate half
xsetwacom --set "Wacom One by Wacom S Pen eraser" ResetArea xsetwacom --set "Wacom One by Wacom S Pen eraser" ResetArea
xsetwacom --set "Wacom One by Wacom S Pen eraser" MapToOutput DisplayPort-0 xsetwacom --set "Wacom One by Wacom S Pen eraser" MapToOutput DisplayPort-0
echo "Wacom configured for X11" echo "Wacom configured for X11"
fi fi
} }
@ -389,13 +396,13 @@ function cat {
echo "Automatically adjusts output for SSH sessions" echo "Automatically adjusts output for SSH sessions"
return 0 return 0
fi fi
if ! command -v bat >/dev/null 2>&1; then if ! command -v bat >/dev/null 2>&1; then
echo "Warning: bat not found, falling back to system cat" >&2 echo "Warning: bat not found, falling back to system cat" >&2
command cat "$@" command cat "$@"
return $? return $?
fi fi
if [[ -n "$SSH_TTY" ]] || [[ -n "$SSH_CLIENT" ]] || [[ -n "$SSH_CONNECTION" ]]; then if [[ -n "$SSH_TTY" ]] || [[ -n "$SSH_CLIENT" ]] || [[ -n "$SSH_CONNECTION" ]]; then
bat --plain --paging=never "$@" bat --plain --paging=never "$@"
else else
@ -413,7 +420,7 @@ function toggle_resolution() {
echo " -m, --mirror Force mirror mode" echo " -m, --mirror Force mirror mode"
return 0 return 0
fi fi
local mirror_mode=false local mirror_mode=false
# Parse flags # Parse flags
@ -434,7 +441,7 @@ function toggle_resolution() {
echo "Error: swaymsg not found. This function requires Sway window manager" >&2 echo "Error: swaymsg not found. This function requires Sway window manager" >&2
return 1 return 1
fi fi
# Check if jq is available # Check if jq is available
if ! command -v jq >/dev/null 2>&1; then if ! command -v jq >/dev/null 2>&1; then
echo "Error: jq not found. Required for JSON parsing" >&2 echo "Error: jq not found. Required for JSON parsing" >&2
@ -501,18 +508,18 @@ function cb {
echo "Launch Code::Blocks with high contrast theme" echo "Launch Code::Blocks with high contrast theme"
return 0 return 0
fi fi
if [[ ! -f /usr/bin/codeblocks ]]; then if [[ ! -f /usr/bin/codeblocks ]]; then
echo "Error: Code::Blocks not found at /usr/bin/codeblocks" >&2 echo "Error: Code::Blocks not found at /usr/bin/codeblocks" >&2
return 1 return 1
fi fi
# Store original values # Store original values
local original_gtk_theme="$GTK_THEME" local original_gtk_theme="$GTK_THEME"
local original_gdk_theme="$GDK_THEME" local original_gdk_theme="$GDK_THEME"
local original_qt_style="$QT_STYLE_OVERRIDE" local original_qt_style="$QT_STYLE_OVERRIDE"
local original_xdg_desktop="$XDG_CURRENT_DESKTOP" local original_xdg_desktop="$XDG_CURRENT_DESKTOP"
# Set high contrast theme temporarily # Set high contrast theme temporarily
GTK_THEME=HighContrast \ GTK_THEME=HighContrast \
GDK_THEME=HighContrast \ GDK_THEME=HighContrast \
@ -521,7 +528,7 @@ function cb {
GTK2_RC_FILES="" \ GTK2_RC_FILES="" \
GTK_RC_FILES="" \ GTK_RC_FILES="" \
/usr/bin/codeblocks "$@" /usr/bin/codeblocks "$@"
# Restore original values # Restore original values
export GTK_THEME="$original_gtk_theme" export GTK_THEME="$original_gtk_theme"
export GDK_THEME="$original_gdk_theme" export GDK_THEME="$original_gdk_theme"
@ -539,13 +546,13 @@ function zrepo() {
echo "Example: zrepo my-project" echo "Example: zrepo my-project"
return 0 return 0
fi fi
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Error: Repository name required" >&2 echo "Error: Repository name required" >&2
echo "Usage: zrepo <repo-name>" >&2 echo "Usage: zrepo <repo-name>" >&2
return 1 return 1
fi fi
# Validate repository name (basic check) # Validate repository name (basic check)
if [[ ! "$1" =~ ^[a-zA-Z0-9_-]+$ ]]; then if [[ ! "$1" =~ ^[a-zA-Z0-9_-]+$ ]]; then
echo "Error: Repository name contains invalid characters" >&2 echo "Error: Repository name contains invalid characters" >&2
@ -558,7 +565,7 @@ function zrepo() {
local PATH_ON_SERVER="/var/git/$REPO.git" local PATH_ON_SERVER="/var/git/$REPO.git"
echo "Creating repository '$REPO' on $SERVER..." echo "Creating repository '$REPO' on $SERVER..."
ssh "$SERVER" " ssh "$SERVER" "
if [ -d $PATH_ON_SERVER ]; then if [ -d $PATH_ON_SERVER ]; then
echo 'Error: Repository '$REPO' already exists' echo 'Error: Repository '$REPO' already exists'
@ -592,7 +599,7 @@ function _has {
echo "Usage: _has <command>" >&2 echo "Usage: _has <command>" >&2
return 1 return 1
fi fi
whence "$1" >/dev/null 2>&1 whence "$1" >/dev/null 2>&1
} }
@ -604,12 +611,12 @@ function cdr {
echo "Navigate to recently visited directories using fzf" echo "Navigate to recently visited directories using fzf"
return 0 return 0
fi fi
if ! command -v fzf >/dev/null 2>&1; then if ! command -v fzf >/dev/null 2>&1; then
echo "Error: fzf is not installed" >&2 echo "Error: fzf is not installed" >&2
return 1 return 1
fi fi
local dir local dir
dir=$(dirs -pl | awk '!x[$0]++' | fzf --height 40% --reverse) dir=$(dirs -pl | awk '!x[$0]++' | fzf --height 40% --reverse)
[[ -n "$dir" ]] && cd "$dir" [[ -n "$dir" ]] && cd "$dir"
@ -653,15 +660,15 @@ function font-switch() {
echo "Example: font-switch jetbrains-mono" echo "Example: font-switch jetbrains-mono"
return 0 return 0
fi fi
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Available fonts:" echo "Available fonts:"
font-manager list font-manager list
return 0 return 0
fi fi
local font_name="$1" local font_name="$1"
# Check if font exists # Check if font exists
if ! font-manager list | grep -q "$font_name"; then if ! font-manager list | grep -q "$font_name"; then
echo "Error: Font '$font_name' not found" >&2 echo "Error: Font '$font_name' not found" >&2
@ -669,17 +676,17 @@ function font-switch() {
font-manager list >&2 font-manager list >&2
return 1 return 1
fi fi
echo "Switching to $font_name fonts..." echo "Switching to $font_name fonts..."
font-manager clean font-manager clean
font-manager extract "$font_name" font-manager extract "$font_name"
# Reload terminal if in kitty # Reload terminal if in kitty
if [[ "$TERM" == "xterm-kitty" ]] && command -v kitty >/dev/null 2>&1; then if [[ "$TERM" == "xterm-kitty" ]] && command -v kitty >/dev/null 2>&1; then
echo "Reloading kitty configuration..." echo "Reloading kitty configuration..."
kitty @ set-colors --all ~/.config/kitty/kitty.conf kitty @ set-colors --all ~/.config/kitty/kitty.conf
fi fi
echo "Font switch complete!" echo "Font switch complete!"
} }
@ -692,24 +699,107 @@ function font-preview() {
echo "Example: font-preview jetbrains-mono" echo "Example: font-preview jetbrains-mono"
return 0 return 0
fi fi
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "Error: Font name required" >&2 echo "Error: Font name required" >&2
echo "Usage: font-preview [font-name]" >&2 echo "Usage: font-preview [font-name]" >&2
return 1 return 1
fi fi
local font_name="$1" local font_name="$1"
local preview_text="The quick brown fox jumps over the lazy dog local preview_text="The quick brown fox jumps over the lazy dog
ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz
0123456789 0123456789
!@#$%^&*()_+-=[]{}|;':\",./<>?" !@#$%^&*()_+-=[]{}|;':\",./<>?"
echo "Previewing font: $font_name" echo "Previewing font: $font_name"
echo "----------------------------------------" echo "----------------------------------------"
echo "$preview_text" | font-manager extract "$font_name" && echo "$preview_text" echo "$preview_text" | font-manager extract "$font_name" && echo "$preview_text"
} }
yay() {
case "$1" in
# System update
update|"-Syu")
echo "Updating NixOS system..."
nh os switch ~/.config/nixos --update
;;
# Search packages
search|"-Ss")
[ -z "$2" ] && { echo "Usage: yay search <package>"; return 1; }
echo "Searching for '$2'..."
nix search nixpkgs "$2" 2>/dev/null || nix-env -qaP | grep -i "$2"
;;
# Install package to user environment
install|"-S")
[ -z "$2" ] && { echo "Usage: yay install <package>"; return 1; }
echo "Installing $2..."
nix-env -iA nixpkgs.$2
;;
# Remove package
remove|"-R")
[ -z "$2" ] && { echo "Usage: yay remove <package>"; return 1; }
echo "Removing $2..."
nix-env -e "$2"
;;
# List installed packages
list|"-Q")
echo "Installed packages:"
nix-env -q
;;
# Clean up
clean|"-Sc")
echo "Cleaning nix store..."
nix-collect-garbage
sudo nix-collect-garbage -d
;;
# Help
help|"-h")
bat -Pp << 'EOF'
yay - Simple NixOS package manager wrapper
Commands:
yay Rebuild system
yay update Update system
yay search <pkg> Search packages
yay install <pkg> Install package (user)
yay remove <pkg> Remove package
yay list List installed packages
yay clean Clean package cache
yay help Show this help
Note: For system packages, edit ~/.config/nixos/configuration.nix
EOF
;;
# Default: rebuild system
"")
echo "Rebuilding NixOS system..."
nh os switch ~/.config/nixos
;;
# Try to install unknown commands
*)
if [[ ! "$1" =~ ^- ]]; then
echo "Installing '$1'..."
nix-env -iA nixpkgs.$1
else
echo "Unknown option: $1"
echo "Run 'yay help' for available commands"
return 1
fi
;;
esac
}
function nas() {
rclone mount --vfs-cache-mode writes --dir-cache-time 5s --no-check-certificate --allow-other nas: /home/mzunino/nas
}

View file

@ -76,10 +76,10 @@ source "$PLUGIN_DIR/minimal/minimal.zsh"
# Source config files # Source config files
source "$ZDOTDIR/opts.zsh" source "$ZDOTDIR/opts.zsh"
source "$ZDOTDIR/rose-pine.sh" source "$ZDOTDIR/rose-pine.sh"
source "$ZDOTDIR/maintenance.zsh" #source "$ZDOTDIR/maintenance.zsh"
# Defer loading # Defer loading
zsh-defer source "$PLUGIN_DIR/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" zsh-defer source "$PLUGIN_DIR/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
for config in mise.zsh tmux.zsh functions.zsh alias.zsh keymap.zsh path.zsh pnpm.zsh; do for config in mise.zsh tmux.zsh functions.zsh alias.zsh keymap.zsh path.zsh pnpm.zsh; do
zsh-defer source "$ZDOTDIR/$config" zsh-defer source "$ZDOTDIR/$config"
done done

View file

@ -73,3 +73,19 @@ bindkey "^[[H" beginning-of-line
bindkey "^[[F" end-of-line bindkey "^[[F" end-of-line
bindkey "^[[1~" beginning-of-line bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line bindkey "^[[4~" end-of-line
# Function to open NixOS config directory
function edit-nixos-config() {
# Store current directory
local original_dir="$PWD"
# Build the command that will cd, run nvim, then cd back
BUFFER="cd ~/.config/nixos && nvim . && cd '$original_dir'"
zle accept-line
}
zle -N edit-nixos-config
# Bind Ctrl+X then C in both insert and command modes
bindkey -M viins '^xc' edit-nixos-config
bindkey -M vicmd '^xc' edit-nixos-config

Binary file not shown.