Trayer-srg: Trayer con soporte para varios monitores

Algo rápido, mientras termino el post de los años maravillosos:

Para quienes usan manejadores de ventanas como dwm o XMonad, existen programas que proveen barras de sistema estilo Gnome o KDE. Los 2 que conozco son stalonetray y trayer. Ambos tienen sus pros y contras.

En lo personal, comencé usando el primero, pero terminé yéndome al segundo por simplicidad. No obstante, trayer tiene un problema: en configuraciones de más de un monitor, el edge left o right se identifica con la parte izquierda del monitor más a la izquierda o la derecha del monitor más a la derecha. Es decir: no es posible poner la barra en un monitor determinado.

Intenté de todo. Las posiciones verticales se pueden arreglar nivelando la parte baja de todos los monitores con algo como xrandr y aritmética básica, pero las horizontales nada más no.

Aquí es donde entra trayer-srg: un fork del programa original que, además de pulir el código, añade funcionalidad, y entre ella, está la opción de especificarle en qué monitor queremos que la barra salga.

Así, mi .xsession queda de la siguiente forma:

# Win Key in HHK2
xmodmap -e "keycode 49 = Super_L"

# Fonts
xset fp+ /usr/share/fonts/truetype/android
xset fp+ /usr/share/fonts/truetype/windows

# Monitor settings
xrandr --output DFP1 --mode 1680x1050 --primary --output DFP5 --mode 1280x1024 --right-of DFP1

# Background
feh --bg-scale `cat /home/mmedina/.xmonad/background`

# Systray (using trayer-srg)
trayer --edge top --align right --width 100 --widthtype pixel --height 14 --SetDockType true --SetPartialStrut true --monitor 0 --transparent true --tint 0 --alpha 0 &

# Let's go!
exec xmonad

En cuanto a la status bar, anteriormente puse los scripts que ejecuto. Sin embargo, en el trabajo simplemente corro xmobar con la siguiente configuración (no le he movido la gran cosa):

    Config { font     = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
           , bgColor  = "#000000"
           , fgColor  = "#BFBFBF"
           , position = Static { xpos = 0, ypos = 0, width = 1580, height = 14 }
           , lowerOnStart = True
           , commands = [ Run  Date "%H:%M:%S * %a %b %_d %Y" "theDate" 10
	     	      	, Run Memory ["-t", "Mem: <usedratio>%"] 10
                        , Run Swap [] 10
                        , Run Cpu ["-L", "3", "-H", "70", "--normal", "green", "--high", "red"] 10
                        , Run StdinReader]
           , sepChar  = "%"
           , alignSep = "}{"
           , template = "%StdinReader% }{ %cpu% - %memory% %swap% <fc=#FFCC33>%theDate%</fc>"
           }

 

El resultado (click para agrandar):

statusbarXmonad

Cierto es que puedo ponerle más funciones a XMobar, o incluso configurar Conky con dzen2 (que me llama más la atención), pero me acostumbré a tener la barra así en el trabajo. En una chance me pongo a jugar para ponerle más monerías.