From 2c2adaaa79fcf522a435dac4b8b1f2b675285e4d Mon Sep 17 00:00:00 2001 From: alejandrogs73 Date: Sun, 27 Sep 2026 21:40:00 +0200 Subject: [PATCH] =?UTF-8?q?Aviso=20de=20bater=C3=ADa,=20luz=20nocturna,=20?= =?UTF-8?q?historial=20de=20notificaciones=20y=20m=C3=A1s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bateria (home/.local/bin): avisa al 15 % y, en rojo, al 5 % mientras descarga. Se lanza desde .xinitrc. - gammastep: luz cálida (4000 K) de 20:00 a 8:00 con transición de una hora, por horas fijas en vez de ubicación. - dwm: Mod+n recupera la última notificación y Mod+Shift+n las cierra. - Carpetas del usuario en inglés y sin tildes (user-dirs.dirs); las capturas pasan a ~/Images/Screenshots. - .bash_profile lanza startx al entrar en tty1. - btop con el tema everforest-dark-medium. - gpg-agent recuerda la contraseña una hora (antes 10 minutos). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016UdJsHrbkmzhoCb6TthP2m --- README.md | 15 +- home/.bash_profile | 4 + home/.config/btop/btop.conf | 286 ++++++++++++++++++++++++++++++ home/.config/gammastep/config.ini | 9 + home/.config/user-dirs.dirs | 10 ++ home/.local/bin/bateria | 31 ++++ home/.xinitrc | 2 + install.sh | 10 +- suckless/dwm/config.h | 6 +- 9 files changed, 367 insertions(+), 6 deletions(-) create mode 100644 home/.config/btop/btop.conf create mode 100644 home/.config/gammastep/config.ini create mode 100644 home/.config/user-dirs.dirs create mode 100755 home/.local/bin/bateria diff --git a/README.md b/README.md index cf9d460..0b43e31 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,8 @@ tocado. |---|---| | Mod+v | clipmenu (misma paleta y fuente que dmenu) | | Mod+Shift+l | Bloquear la pantalla con `slock` | +| Mod+n | Volver a mostrar la última notificación (historial de dunst) | +| Mod+Shift+n | Cerrar todas las notificaciones | | Mod+`-` / Mod+`+` | Reducir / aumentar los gaps | | Mod+Shift+`+` | Gaps a 0 | | Tecla de subir / bajar volumen | Volumen ±5% con `wpctl` (máximo 100%) | @@ -99,8 +101,17 @@ Las teclas de audio (y los clics en VOL de la barra) usan el script `volumen` (`home/.local/bin/volumen`): cambia el volumen con `wpctl`, refresca slstatus y muestra una notificación con el nivel. -Las capturas se guardan en `~/Imágenes/Capturas`, se copian al portapapeles y -muestran una notificación. +Las capturas se guardan en `~/Images/Screenshots`, se copian al portapapeles +y muestran una notificación. + +## Sesión + +- Al entrar en tty1 se lanza `startx` solo (`.bash_profile`); en las demás + tty no. +- `.xinitrc` arranca también `gammastep` (luz cálida de 20:00 a 8:00, con + transición de una hora) y `bateria` (avisa al 15 % y, en rojo, al 5 %). +- Carpetas del usuario en inglés y sin tildes (`user-dirs.dirs`): + Documents, Downloads e Images. ## Notas diff --git a/home/.bash_profile b/home/.bash_profile index 29b06d1..59a0a05 100644 --- a/home/.bash_profile +++ b/home/.bash_profile @@ -3,3 +3,7 @@ # Get the aliases and functions [ -f $HOME/.bashrc ] && . $HOME/.bashrc +# Al entrar en tty1 se arranca X directamente; al salir de dwm se cierra la sesión. +if [ -z "$DISPLAY" ] && [ "$(tty)" = /dev/tty1 ]; then + exec startx +fi diff --git a/home/.config/btop/btop.conf b/home/.config/btop/btop.conf new file mode 100644 index 0000000..56fdade --- /dev/null +++ b/home/.config/btop/btop.conf @@ -0,0 +1,286 @@ +#? Config file for btop v.1.4.7 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "everforest-dark-medium" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = false + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = true + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = false + +#* Option to disable presets. Either the default preset, custom presets, or all presets. +#* "Off" All presets are enabled. +#* "Default" preset is disabled.#* "Custom" presets are disabled.#* "All" presets are disabled. +disable_presets = "Off" + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = false + +#* Disable all mouse events. +disable_mouse = false + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = true + +#* Use terminal synchronized output sequences to reduce flickering on supported terminals. +terminal_sync = true + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 2000 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "cpu lazy" + +#* Reverse sorting order, True or False. +proc_reversed = false + +#* Show processes as a tree. +proc_tree = false + +#* Use the cpu graph colors in the process list. +proc_colors = true + +#* Use a darkening gradient in the process list. +proc_gradient = true + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = false + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = true + +#* Show cpu graph for each process. +proc_cpu_graphs = true + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = false + +#* Show proc box on left side of screen instead of right. +proc_left = false + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = false + +#* Should the process list follow the selected process when detailed view is open. +proc_follow_detailed = true + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = false + +#* Should cpu and memory usage display be preserved for dead processes when paused. +keep_dead_proc_usage = false + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "Auto" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "Auto" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = true + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = false + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = false + +#* Shows the system uptime in the CPU box. +show_uptime = true + +#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. +show_cpu_watts = true + +#* Show cpu temperature. +check_temp = true + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = true + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = false + +#* Show CPU frequency. +show_cpu_freq = true + +#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average". +freq_mode = "first" + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = true + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = true + +#* Show mem box below net box instead of above. +mem_below_net = false + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = true + +#* If swap memory should be shown in memory box. +show_swap = true + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = true + +#* If mem box should be split to also show disks info. +show_disks = true + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = true + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = true + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = false + +#* Set to true to show available disk space for privileged users. +disk_free_priv = false + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = true + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = false + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = false + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Swap the positions of the upload and download speed graphs. When true, upload will be on top. +swap_upload_download = false + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = true + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = true + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + +#* Show battery stats in top right if battery is present. +show_battery = true + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = true + +#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Automatically save current settings to config file on exit. +save_config_on_exit = true + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = true + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = true + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = true + +#* Set which GPU vendors to show. Available values are "nvidia amd intel apple" +shown_gpus = "nvidia amd intel apple" + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/home/.config/gammastep/config.ini b/home/.config/gammastep/config.ini new file mode 100644 index 0000000..b2acbdc --- /dev/null +++ b/home/.config/gammastep/config.ini @@ -0,0 +1,9 @@ +; Luz nocturna. Con horas fijas en vez de ubicación: de 20:00 a 21:00 pasa +; poco a poco a luz cálida y de 7:00 a 8:00 vuelve a la normal. +[general] +temp-day=6500 +temp-night=4000 +fade=1 +dusk-time=20:00-21:00 +dawn-time=07:00-08:00 +adjustment-method=randr diff --git a/home/.config/user-dirs.dirs b/home/.config/user-dirs.dirs new file mode 100644 index 0000000..1efe953 --- /dev/null +++ b/home/.config/user-dirs.dirs @@ -0,0 +1,10 @@ +# Carpetas del usuario (las usan Firefox, los diálogos de GTK...). En inglés +# y sin tildes; las que no se usan apuntan a $HOME. install.sh las crea. +XDG_DESKTOP_DIR="$HOME" +XDG_DOCUMENTS_DIR="$HOME/Documents" +XDG_DOWNLOAD_DIR="$HOME/Downloads" +XDG_PICTURES_DIR="$HOME/Images" +XDG_MUSIC_DIR="$HOME" +XDG_VIDEOS_DIR="$HOME" +XDG_TEMPLATES_DIR="$HOME" +XDG_PUBLICSHARE_DIR="$HOME" diff --git a/home/.local/bin/bateria b/home/.local/bin/bateria new file mode 100755 index 0000000..a399c56 --- /dev/null +++ b/home/.local/bin/bateria @@ -0,0 +1,31 @@ +#!/bin/sh +# Avisa con una notificación cuando la batería baja del 15 % y del 5 % +# mientras se descarga (una vez por umbral; al enchufar el cargador se +# reinicia). Se lanza desde .xinitrc y se queda comprobando cada minuto. + +BAJA=15 +CRITICA=5 + +bat= +for b in /sys/class/power_supply/BAT*; do + [ -e "$b/capacity" ] && bat=$b && break +done +[ -n "$bat" ] || exit 0 + +avisado=100 +while :; do + nivel=$(cat "$bat/capacity") + estado=$(cat "$bat/status") + if [ "$estado" != Discharging ]; then + avisado=100 + elif [ "$nivel" -le "$CRITICA" ] && [ "$avisado" -gt "$CRITICA" ]; then + notify-send -u critical -h string:x-dunst-stack-tag:bateria \ + -i battery-empty "Batería crítica" "Queda un $nivel %: enchufa el cargador ya" + avisado=$CRITICA + elif [ "$nivel" -le "$BAJA" ] && [ "$avisado" -gt "$BAJA" ]; then + notify-send -h string:x-dunst-stack-tag:bateria \ + -i battery-caution "Batería baja" "Queda un $nivel %" + avisado=$BAJA + fi + sleep 60 +done diff --git a/home/.xinitrc b/home/.xinitrc index 4de3e91..aaab947 100644 --- a/home/.xinitrc +++ b/home/.xinitrc @@ -31,5 +31,7 @@ picom & blueman-applet & slstatus & clipmenud & +gammastep & +bateria & exec dwm diff --git a/install.sh b/install.sh index 8a664e9..b29e62d 100755 --- a/install.sh +++ b/install.sh @@ -17,7 +17,7 @@ PAQUETES=" libXrender-devel xorgproto imlib2-devel zlib-devel libxcrypt-devel xorg xinit setxkbmap xrandr dbus elogind polkit - picom dunst libnotify feh maim xclip + picom dunst libnotify feh maim xclip gammastep pipewire wireplumber libspa-bluetooth alsa-pipewire rtkit pavucontrol NetworkManager bluez blueman acpid chrony font-firacode nerd-fonts-symbols-ttf papirus-icon-theme papirus-folders @@ -77,6 +77,9 @@ enlaces() { echo " $f" done cd "$DIR" + + # Las carpetas de home/.config/user-dirs.dirs (y la de las capturas) + mkdir -p "$HOME/Documents" "$HOME/Downloads" "$HOME/Images/Screenshots" } # Compila el tema GTK Everforest (verde, oscuro, paleta medium) en ~/.themes @@ -127,9 +130,12 @@ gnupg() { conf="$g/gpg-agent.conf" touch "$conf" chmod 600 "$conf" - sed -i '/^pinentry-program/d' "$conf" + sed -i '/^pinentry-program/d; /^default-cache-ttl/d' "$conf" echo "pinentry-program /usr/bin/pinentry-gtk-2" >>"$conf" grep -qx enable-ssh-support "$conf" || echo enable-ssh-support >>"$conf" + # Recordar la contraseña una hora desde el último uso (por defecto, 10 min) + echo "default-cache-ttl 3600" >>"$conf" + echo "default-cache-ttl-ssh 3600" >>"$conf" # sshcontrol dice qué claves usa el agente para SSH: se añaden las # subclaves de autenticación [A] que falten. diff --git a/suckless/dwm/config.h b/suckless/dwm/config.h index 3ecb2ab..7c083c7 100644 --- a/suckless/dwm/config.h +++ b/suckless/dwm/config.h @@ -121,9 +121,9 @@ static const StatusCmd statuscmds[] = { }; static const char *statuscmd[] = { "/bin/sh", "-c", NULL, NULL }; -/* Capturas: se guardan en ~/Imágenes/Capturas y se copian al portapapeles */ +/* Capturas: se guardan en ~/Images/Screenshots y se copian al portapapeles */ #define SCREENSHOT(opts) SHCMD( \ - "d=\"$HOME/Imágenes/Capturas\"; mkdir -p \"$d\"; " \ + "d=\"$HOME/Images/Screenshots\"; mkdir -p \"$d\"; " \ "f=\"$d/$(date +%Y-%m-%d_%H-%M-%S).png\"; " \ "maim " opts " \"$f\" && xclip -selection clipboard -t image/png -i \"$f\" " \ "&& notify-send -i \"$f\" 'Captura guardada' \"$f\"") @@ -134,6 +134,8 @@ static const Key keys[] = { { MODKEY, XK_Return, spawn, {.v = termcmd } }, { MODKEY, XK_v, spawn, {.v = clipcmd } }, { MODKEY|ShiftMask, XK_l, spawn, {.v = lockcmd } }, + { MODKEY, XK_n, spawn, SHCMD("dunstctl history-pop") }, + { MODKEY|ShiftMask, XK_n, spawn, SHCMD("dunstctl close-all") }, { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } },