Calendario en la barra, prompt con rama de git, historial compartido e impresora
- calendario (home/.local/bin): clic izquierdo en la fecha de la barra (zona \004 en slstatus, statuscmd 4 en dwm) muestra el mes en una notificación, empezando en lunes y con hoy en verde. - .bashrc: rama de git en el prompt (git-prompt.sh, con * y +) e historial grande, sin duplicados y compartido entre terminales. - install.sh: cups, cups-filters y hplip, servicio cupsd y grupo lpadmin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016UdJsHrbkmzhoCb6TthP2m
This commit is contained in:
parent
68427bdf7a
commit
2870ac7dca
6 changed files with 56 additions and 10 deletions
11
README.md
11
README.md
|
|
@ -44,9 +44,9 @@ Hace seis pasos, que también se pueden lanzar por separado
|
|||
Si `~/.gnupg` no existe todavía, no hace nada.
|
||||
6. `sistema`: copia `sistema/` en `/`, activa los servicios de runit (dbus,
|
||||
elogind, polkitd, NetworkManager, bluetoothd, acpid, chronyd, tlp,
|
||||
automontaje), quita dhcpcd y wpa_supplicant (NetworkManager ya gestiona la
|
||||
red) y añade el usuario a los grupos audio, video, input, network y
|
||||
bluetooth. Los archivos de `sudoers.d` se validan con `visudo` y se
|
||||
automontaje, cupsd), quita dhcpcd y wpa_supplicant (NetworkManager ya gestiona la
|
||||
red) y añade el usuario a los grupos audio, video, input, network,
|
||||
bluetooth y lpadmin (para gestionar impresoras). Los archivos de `sudoers.d` se validan con `visudo` y se
|
||||
instalan con modo 440.
|
||||
|
||||
Después hay que cerrar sesión y volver a entrar (por los grupos) y lanzar
|
||||
|
|
@ -118,6 +118,11 @@ y muestran una notificación.
|
|||
- Pantallas: `autorandr` las pone en fila (la del portátil a la izquierda y
|
||||
como principal) al arrancar y cada vez que se conecta o desconecta una
|
||||
(regla de udev en `sistema/`), y vuelve a pintar el fondo.
|
||||
- Clic izquierdo en la fecha de la barra: calendario del mes en una
|
||||
notificación (`calendario`), con el día de hoy en verde.
|
||||
- bash: historial de 10 000 órdenes, sin duplicados y compartido entre
|
||||
terminales; el prompt muestra la rama de git (`*` cambios sin añadir,
|
||||
`+` añadidos).
|
||||
- `~/.ssh/config` con alias: `ssh server` (10.0.0.10) y `forgejo`. Sin
|
||||
claves: las da gpg-agent.
|
||||
- Tras 30 minutos sin tocar nada se bloquea con slock (`xss-lock`) y un
|
||||
|
|
|
|||
21
home/.bashrc
21
home/.bashrc
|
|
@ -25,8 +25,25 @@ YELLOW='\[\e[0;33m\]'
|
|||
BLUE='\[\e[0;34m\]'
|
||||
NC='\[\e[0m\]' # Sin color
|
||||
|
||||
# Formato: usuario@maquina:~/directorio$ (en colores)
|
||||
PS1="${GREEN}\u@\h${NC}:${BLUE}\w${NC}\$ "
|
||||
# Rama de git (con * si hay cambios sin añadir y + si hay cambios añadidos)
|
||||
if [ -f /usr/share/git/git-prompt.sh ]; then
|
||||
. /usr/share/git/git-prompt.sh
|
||||
GIT_PS1_SHOWDIRTYSTATE=1
|
||||
else
|
||||
__git_ps1() { :; }
|
||||
fi
|
||||
|
||||
# Formato: usuario@maquina:~/directorio (rama)$ (en colores)
|
||||
PS1="${GREEN}\u@\h${NC}:${BLUE}\w${YELLOW}\$(__git_ps1 ' (%s)')${NC}\$ "
|
||||
|
||||
# --- Historial ---
|
||||
# Grande, sin duplicados y compartido entre terminales: cada orden se guarda
|
||||
# al momento y cada prompt lee las de las otras terminales.
|
||||
HISTSIZE=10000
|
||||
HISTFILESIZE=20000
|
||||
HISTCONTROL=ignoreboth:erasedups
|
||||
shopt -s histappend
|
||||
PROMPT_COMMAND="history -a; history -n${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
|
||||
|
||||
# --- 3. Aliases Base (Comodidad y Seguridad) ---
|
||||
alias ls='ls --color=auto'
|
||||
|
|
|
|||
21
home/.local/bin/calendario
Executable file
21
home/.local/bin/calendario
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh
|
||||
# Muestra el calendario del mes en una notificación (clic en la fecha de la
|
||||
# barra de dwm), con la semana empezando en lunes y el día de hoy en verde.
|
||||
|
||||
hoy=$(date +%-d)
|
||||
mes=$(cal -m | head -1 | sed 's/^ *//; s/ *$//')
|
||||
|
||||
# Resaltar el número de hoy (solo en las filas de días, no en la cabecera)
|
||||
dias=$(cal -m | tail -n +2 | awk -v hoy="$hoy" '
|
||||
NR == 1 { print; next }
|
||||
{
|
||||
linea = " " $0 " "
|
||||
sub(" " hoy " ", " <b><span foreground=\"#a7c080\">" hoy "</span></b> ", linea)
|
||||
print substr(linea, 2, length(linea) - 2)
|
||||
}')
|
||||
|
||||
# Primera letra del mes en mayúscula ("septiembre 2026" -> "Septiembre 2026")
|
||||
mes=$(printf %s "$mes" | sed 's/^./\U&/')
|
||||
|
||||
notify-send -t 10000 -h string:x-dunst-stack-tag:calendario \
|
||||
-i x-office-calendar "$mes" "$dias"
|
||||
|
|
@ -20,6 +20,7 @@ PAQUETES="
|
|||
picom dunst libnotify feh maim xclip gammastep xss-lock autorandr
|
||||
pipewire wireplumber libspa-bluetooth alsa-pipewire rtkit pavucontrol
|
||||
NetworkManager bluez blueman acpid chrony tlp tlp-rdw
|
||||
cups cups-filters hplip
|
||||
font-firacode nerd-fonts-symbols-ttf papirus-icon-theme papirus-folders
|
||||
sassc gtk-engine-murrine gnome-themes-extra qt5ct qt6ct
|
||||
|
||||
|
|
@ -32,10 +33,10 @@ SUCKLESS="dwm st dmenu slstatus slock scroll clipmenu"
|
|||
# Tema GTK Everforest, en una versión fija para que siempre salga igual
|
||||
GTK_TEMA_REPO=https://github.com/Fausto-Korpsvart/Everforest-GTK-Theme
|
||||
GTK_TEMA_COMMIT=9b8be4d6648ae9eaae3dd550105081f8c9054825
|
||||
SERVICIOS="dbus elogind polkitd NetworkManager bluetoothd acpid chronyd tlp automontaje"
|
||||
SERVICIOS="dbus elogind polkitd NetworkManager bluetoothd acpid chronyd tlp automontaje cupsd"
|
||||
# NetworkManager gestiona la red él solo; estos servicios se pelean con él.
|
||||
SERVICIOS_FUERA="dhcpcd wpa_supplicant"
|
||||
GRUPOS="audio video input network bluetooth"
|
||||
GRUPOS="audio video input network bluetooth lpadmin"
|
||||
|
||||
msg() { printf '\033[1;32m==>\033[0m %s\n' "$*"; }
|
||||
die() { printf '\033[1;31merror:\033[0m %s\n' "$*" >&2; exit 1; }
|
||||
|
|
|
|||
|
|
@ -118,6 +118,8 @@ static const StatusCmd statuscmds[] = {
|
|||
"3) if bluetoothctl show | grep -q 'Powered: yes'; "
|
||||
"then bluetoothctl power off; else bluetoothctl power on; fi >/dev/null" STATUSREFRESH " ;; "
|
||||
"esac", 3 },
|
||||
/* fecha: izquierdo el calendario del mes */
|
||||
{ "case $BUTTON in 1) calendario ;; esac", 4 },
|
||||
};
|
||||
static const char *statuscmd[] = { "/bin/sh", "-c", NULL, NULL };
|
||||
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@ red(const char *unused)
|
|||
}
|
||||
|
||||
/*
|
||||
* Los bytes \001, \002 y \003 delimitan las zonas clicables de la barra
|
||||
* (parche statuscmd de dwm): la red, el volumen y el bluetooth. Lo que hace
|
||||
* Los bytes \001 a \004 delimitan las zonas clicables de la barra
|
||||
* (parche statuscmd de dwm): la red, el volumen, el bluetooth y la fecha. Lo que hace
|
||||
* cada clic está en statuscmds, en el config.h de dwm.
|
||||
*/
|
||||
static const struct arg args[] = {
|
||||
|
|
@ -55,5 +55,5 @@ static const struct arg args[] = {
|
|||
/* OFF si el adaptador está apagado; si no, el primer dispositivo conectado */
|
||||
{ run_command, "\003[ BT: %s ]\003 ", "bluetoothctl show | grep -q 'Powered: yes' || { echo OFF; exit; }; "
|
||||
"bluetoothctl devices Connected | head -1 | cut -d' ' -f3-" },
|
||||
{ datetime, "[ %s ]", "%d/%m/%y %H:%M" },
|
||||
{ datetime, "\004[ %s ]\004", "%d/%m/%y %H:%M" },
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue