Aviso de batería, luz nocturna, historial de notificaciones y más

- 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016UdJsHrbkmzhoCb6TthP2m
This commit is contained in:
Alejandro Guerrero 2026-09-27 21:40:00 +02:00
parent 94992e4b45
commit 2c2adaaa79
Signed by: alejandrogs73
GPG key ID: 1CFF10953BEE333C
9 changed files with 367 additions and 6 deletions

View file

@ -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

View file

@ -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

286
home/.config/btop/btop.conf Normal file
View file

@ -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 = ""

View file

@ -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

View file

@ -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"

31
home/.local/bin/bateria Executable file
View file

@ -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

View file

@ -31,5 +31,7 @@ picom &
blueman-applet &
slstatus &
clipmenud &
gammastep &
bateria &
exec dwm

View file

@ -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.

View file

@ -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 } },