NOMBRE¶
spectrwm
—
es un manejador de ventanas para X11
SYNOPSIS¶
DESCRIPCIÓN¶
spectrwm
es un manejador de ventanas super
minimalista para X11. Intenta no superponer las ventanas para que las mismas
puedan usarse de manera eficiente y para cosas mas importantes. Tiene
configuraciones normales y no requiere que sepas un lenguaje de programacion
para configurarlo. Esta escrito por hackers para hackers y apunta a ser
pequeño, compacto y rápido.
Cuando
spectrwm
inicia, lo primero que hace
es leer el archivo de configuracion,
spectrwm.conf. Ver
ARCHIVOS DE
CONFIGURACIÓN
La siguiente anotacion se usa a través de esta pagina:
M
- Meta
S
- Shift
- ⟨
Name
⟩
- Nombre de tecla
M1
- Boton 1 del mouse
M3
- Boton 3 del mouse
spectrwm
es muy simple de usar. La mayoria de
las acciones se hacen con los mapeos (bindings) de mouse o teclado. Ver la
sección de
BINDINGS para
las personalizaciones y configuraciones por defecto.
ARCHIVOS DE CONFIGURACIÓN¶
spectrwm
primero trata de abrir el archivo
por defecto en el directorio del usuario,
~/.spectrwm.conf. Si ese archivo no esta
disponible, luego trata de abrir el archivo global de configuracion
/etc/spectrwm.conf.
El formato del archivo es <tecla> = <configuracion>. Por ejemplo:
color_focus = red
Habilitamos o deshabilitamos la opción usando 1 o 0 respectivamente.
El archivo soporta las siguientes palabras clave:
autorun
- Inicia una aplicacion en un escritorio en particular al primer inicio.
Definido por el formato ws[<idx>]:aplicacion, ej. ws[2]:xterm lanza
xterm en el escritorio 2.
color_focus
- Color del borde de la ventana en foco.
color_unfocus
- Color del borde de la ventana fuera de foco.
bar_enabled
- Habilitar o deshabilitar la barra de estado.
bar_border
[x]
- Color del borde de la barra de estado en pantalla.
x.
bar_border_width
- Setea el grosor de la barra de estado en pixels. Deshabilitado seteando
0.
bar_color
[x]
- Color de la ventana de la barra de estado en pantalla.
x.
bar_font_color
[x]
- Color de la fuente en la barra de estado en pantalla.
x.
bar_font
- Fuente de la barra de estado.
bar_action
- Scripts externos con populares agregados de información para la
barra de estado, como la vida de la bateria.
bar_at_bottom
- Puedes posicionar la statusbar en la parte inferior de la pantalla.
stack_enabled
- Habilitar o deshabilitar mostrar el algoritmo de apilamiento en la barra
de estado.
clock_enabled
- Habilitar o deshabilitar el reloj en la barra de estado, deshabilitado por
defecto con un 0, para usar el reloj de la barra de estado (bar_action)
bar_action script.
dialog_ratio
- Algunas aplicaciones tienen ventanas de dialogo muy pequeñas como
para ser usables. Este relación (ratio) es el tamaño de la
pantalla, por ejemplo 0.6 es 60% del tamaño físico de la
pantalla.
layout
- Selecciona una disposicion para usar en el primer inicio. Definido con el
formato
ws[idx]:master_grow:master_add:stack_inc:layout:always_raise:stack_mode,
ej. ws[2]:-4:0:1:0:horizontal setea el escritorio 2 en horizontal, el
stack principal y reduce 4 puntos agregando una ventana al stack, mientras
mantiene el comportamiento de ventanas flotantes. Modos posible de
stack_mode vertical,
horizontal and
fullscreen.
Ver master_grow,
master_shrink,
master_add,
master_del,
stack_inc,
stack_del, y
always_raise para mas informacion.
Tenga en cuenta que las opciones de stack son complicados y tienen efectos
secundarios. Uno debe familiarizarse con estos comandos antes de
experimentar con la opcion layout
Esta opcion no necesita un reinicio.
region
- Acomodar una region personalizada, removiendo cualquier
autodeteción de regiones que ocupe el espacio en la pantalla.
Definiendo el formato screen[<idx>]:WIDTHxHEIGHT+X+Y, e.g.
screen[1]:800x1200+0+0.
term_width
- Setear un ancho minimo preferido para la terminal. Si el valor es mayor
que 0,
spectrwm
intentará
ajustar el tamaño de la fuente de la terminal para mantener el
ancho de la terminal por encima de este número cuando la ventana
cambia de tamaño. Actualmente solo es soportado por
xterm(1) El binario de
xterm(1) no debe ser un setuid o setgid, que
no sea el que viene por defecto en la mayoria de los sistemas. Los
usuarios pueden necesitar setear program[term] (ver la sección
PROGRAMAS ) para usar una
copia alternativa del binario de xterm(1) sin
el seteo del setgid.
title_class_enabled
- Habilitar o deshabilitar la clase de ventana en la barre de estado.
Habilitado seteando 1
title_name_enabled
- Habilitar o deshabilita el titulo de la ventana en la barra de estado.
Habilitado seteando 1
urgent_enabled
- Habilitar o deshabilitar el aviso de urgencia. Tenga en cuenta que muchos
emuladores de terminal requieren de este parametro habilitado para que
funcione. En xterm, por ejemplo, hay que agregar la siguiente linea
xterm.urgentOnBell: true to
.Xdefaults.
window_name_enabled
- Habilitar o deshabilita el nombre de la ventana en la barra de estado.
Habilitado seteando 1
verbose_layout
- Habilitar o deshabilita la notificacion del area principal y el stack en
la barra de estado. Habilitado seteandolo a 1.
modkey
- Cambiar mod key. Mod1 generalmente es la tecla ALT y Mod4 la tecla de
windows en una PC.
focus_mode
- Usando el valor de follow_cursor puedes
hacer que el manejador de ventanas se enfoque en la ventana cuando el
cursor pase por arriba de las mismas o bien cambiando de estacion de
trabajo.
disable_border
- Remueve el borde de una sola ventana cuando la barra de estado esta
desactivada.
border_width
- Setea el grosor del borde de la ventana en pixels. Deshabilitar todos los
bordes seteandolo a 0.
program
[p]
- Definir una nueva accion para ejecutar un programa.
p. Ver la sección de
PROGRAMAS
bind
[x]
- Combinación de teclas para una acción
x. Ver la sección
BINDINGS
quirk
[c:n]
- Agregar un "quirk" (o forzados) para ventanas con clase
c y nombre
n. Ver la sección
QUIRKS
Los colores deben ser especificados por la especificación
XQueryColor(3) y las fuentes por la
especificación
XQueryFont(3)
PROGRAMAS¶
spectrwm
te permite definir acciones
personales para lanzar los programas que quieras y luego obligar a la misma
con una función de acciones. Ver la sección
BINDINGS
Los programas por defecto se describen acá:
term
- x-terminal-emulator
screenshot_all
- screenshot.sh completo
screenshot_wind
- screenshot.sh por ventana
lock
- xscreensaver-command -lock
initscr
- initscreen.sh
- dmenu_run -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_border
-sf $bar_color
Los programas en la configuración personal, se especifican aca:
program[<nombre>] =
<progpath> [<arg> [... <arg>]]
⟨nombre⟩ es un identificador, no genera conflictos con ninguna
accion o palabra clave, ⟨progpath⟩ es la ruta al programa, y
⟨arg⟩ es ninguno o mas de un argumento para el programa.
Las siguientes variables de configuracion en
spectrwm
(ver
ARCHIVOS DE
CONFIGURACIÓN ), y pueden ser usadas en los campos de
⟨arg⟩ como asi tambien sustituidas por valores al momento del
inicio de un programa:
Ejemplo:
Para deshacer lo anterior:
bind[] = Mod+f
program[ff] =
BINDINGS¶
spectrwm
provee muchas funciones (o acciones)
accesibles por medio de la asignación (bindings) de teclas o el mouse.
Las corrientes asignaciones (bindings) del mouse son:
M1
- Enfoco una ventana
M-M1
- Muevo una ventana
M-M3
- Redimenciono una ventana
M-S-M3
- Redimenciono una ventana hasta que quede centrada
Las corrientes asignaciones (bindings) de teclas son:
El nombre de las acciónes descripta a continuación:
term
- Ejecutar una terminal (ver
PROGRAMAS )
- Menu (ver PROGRAMAS )
quit
- Salir
spectrwm
restart
- Reiniciar
spectrwm
cycle_layout
- Disposición de las ventanas
reset_layout
- Reiniciar la disposición de las ventanas
master_shrink
- Achicar la region principal
master_grow
- Agrandar la region principal
master_add
- Agregar una ventana a la region principal
master_del
- Quitar una ventana de la region principal
stack_inc
- Agregar columnas/filas a las pilas
stack_del
- Quitar columnas/filas de las pilas
swap_main
- Mover la ventana corriente a la region principal
focus_next
- Enfocar la proxima ventana en la estación de trabajo
focus_prev
- Enfocar la anterior ventana en la estación de trabajo
focus_main
- Enfocar en la ventana principal de la estación de trabajo
swap_next
- Ejecutar con la siguiente ventana en la estación de trabajo
swap_prev
- Ejecutar con la anterior ventana en la estación de trabajo
bar_toggle
- Cambiar la barra de estado en todas las estaciones de trabajo
wind_del
- Borrar la ventana corriente en la estación de trabajo
wind_kill
- Destruir la ventana corriente en la estación de trabajo
ws_
n
- Cambiar entre estaciones de trabajo n,
donde n es 1 por 10
mvws_
n
- Mover la ventana corriente a una estación de trabajo
n, donde
n es 1 por 10
ws_next
- Cambiar a la proxima estación de trabajo con una ventana en
ella
ws_prev
- Cambiar a la anterior estación de trabajo con una ventana en
ella
screen_next
- Mover el puntero a la proxima region
screen_prev
- Mover el puntero a la anterior region
screenshot_all
- Tomar una captura de pantalla de todo la pantalla (si esta habilitado)
(ver PROGRAMAS )
screenshot_wind
- Tomar una captura de pantalla de la ventana seleccionada (si esta
habilitado) (ver PROGRAMAS
)
version
- Mostrar la version en la barra de estado
float_toggle
- Mostar la ventana en foco entre las flotantes y acomodadas
lock
- Bloquear pantalla (ver
PROGRAMAS )
initscr
- Reiniciar la pantalla (ver
PROGRAMAS )
iconify
- Minimiza (unmap) la ventana en foco.
uniconify
- Maximiza (map) la ventana seleccionada por dmenu.
always_raise
- Cuando se establece las ventanas en cascada se esconden las ventanas
flotantes.
button2
- Falsifica el boton del medio del mouse.
width_shrink
- Reducir el ancho de una ventana flotante.
width_grow
- Agranda el ancho de una ventana flotante.
height_shrink
- Reducir la altura de una ventana flotante.
height_grow
- Agranda la altura de una ventana flotante.
move_left
- Mueve la ventana flotante un paso a la izquierda.
move_right
- Mueve la ventana flotante un paso a la derecha.
move_up
- Mueve la ventana flotante un paso arriba.
move_down
- Mueve la ventana flotante un paso abajo.
Personalizar mapeos (bindings) en el archivo de configuración:
bind[<accion>] =
<teclas>
⟨accion⟩ una de las acciones listadas (o ninguna) y
⟨teclas⟩ una o mas teclas modificadas (puede ser ninguna
tambien) (MOD, Mod1, Shift, etc.) y una o mas teclas normales (b, barra
espaciadora, etc.), separadas por un "+". Por ejemplo:
bind[reset] = Mod4+q # combinación Tecla de Windows + q reinicia
bind[] = Mod1+q # des-hace la combinación Alt + q
Multiples combinaciones de teclas pueden hacer lo mismo.
QUIRKS¶
spectrwm
te da "quirks" (o
forzados) ventanas que tienen que ser tratas de manera especial, como por
ejemplo, popups, aplicaciones de pantalla completa, etc.
Los "quirks" (o forzados) por defecto son:
- Firefox-bin:firefox-bin
- TRANSSZ
- Firefox:Dialog
- FLOAT
- Gimp:gimp
- FLOAT + ANYWHERE
- MPlayer:xv
- FLOAT + FULLSCREEN
- OpenOffice.org 2.4:VCLSalFrame
- FLOAT
- OpenOffice.org 3.1:VCLSalFrame
- FLOAT
- pcb:pcb
- FLOAT
- xine:Xine Window
- FLOAT + ANYWHERE
- xine:xine Panel
- FLOAT + ANYWHERE
- xine:xine Video Fullscreen Window
- FULLSCREEN + FLOAT
- Xitk:Xitk Combo
- FLOAT + ANYWHERE
- Xitk:Xine Window
- FLOAT + ANYWHERE
- XTerm:xterm
- XTERM_FONTADJ
Los "quirks" (o forzados) se describen a continuación:
- FLOAT
- Esta ventana no tiene que ser acomodada, pero le permitimos flotar
libremente.
- TRANSSZ
- Ajusta el tamaño de las ventanas transitorias que son demasiado
pequeñas utilizando dialog_ratio (ver
ARCHIVOS
DE CONFIGURACIÓN).
- ANYWHERE
- Permite que la ventana se ponga donde quiera.
- XTERM_FONTADJ
- Ajusta las fuentes de xterm cuando se redimenciona.
- FULLSCREEN
- Quita el borde para permitir las ventanas en pantalla completa.
- FOCUSPREV
- El enfoque de salida fuerza la solicitud de aplicacisn que anteriormente
se centraba en la aplicacion anterior del stack.
Las configuraciones de "quirks" (o forzados) en el archivo de
configuración se ven a continuación:
quirk[<clases>:<nombre>]
= <quirk> [+ <quirk> ...]
⟨clases⟩ y ⟨nombre⟩ especifica la ventana en la cual
el "quirk(s)" (o forzados) se aplica, y ⟨quirk⟩ es uno
de los "quirks" (o forzados) de la lista. Por ejemplo:
quirk[MPlayer:xv] = FLOAT + FULLSCREEN # dejamos que mplayer funcione libremente
quirk[pcb:pcb] = NONE # borramos el quirk existente
Podes obtener ⟨clases⟩ y ⟨nombre⟩ corriendo el
programa
xprop(1) y luego clickear en la ventana que quieras. En el proximo
ejemplo, podremos verlo en acción con una ventana de Firefox:
$ xprop | grep WM_CLASS
WM_CLASS(STRING) = "Navigator", "Firefox"
EWMH¶
spectrwm
parcialmente implementa los Consejos
de ventana extendido Manager (EWMH) especificacion. Esto permite el control de
las ventanas, asi como
spectrwm
si a partir
de scripts y programas externos. Esto se logra mediante
spectrwm
responder a ciertos eventos
ClientMessage. Desde la terminal de estos eventos se puede enviar facilmente
el uso de herramientas tales como
wmctrl(1) y
xdotool(1). para el formato real de estos eventos
ClientMessage, consulte la especificacion EWMH.
La Identificacion de la ventana actualmente enfocada se almacena en el
_NET_ACTIVE_WINDOW propiedad de la ventana raiz. Esto puede ser usado por
ejemplo para recuperar el titulo de la ventana activa con
xprop(1) y
grep(1):
$ WINDOWID=`xprop -root _NET_ACTIVE_WINDOW | grep -o "0x.*"`
$ xprop -id $WINDOWID WM_NAME | grep -o "\".*\""
Una ventana se puede enfocar mediante el envio de un mensaje del cliente
_NET_ACTIVE_WINDOW a la ventana principal. Por ejemplo, usando
wmctrl(1) para enviar el mensaje (suponiendo que
0x4a0000b es el ID de la ventana para ser especifico):
Ventanas se pueden cerrar mediante el envmo de un mensaje del cliente
_NET_CLOSE_WINDOW a la ventana principal. Por ejemplo, usando
wmctrl(1) para enviar el mensaje (suponiendo que
0x4a0000b es el ID de la ventana se cierre):
Las ventanas se pueden flotar y flotar sin-mediante la adicion o eliminacion de
la _NET_WM_STATE_ABOVE atom desde _NET_WM_STATE la propiedad de la ventana
Esto se puede lograr mediante el envio de un mensaje a los clientes
_NET_WM_STATE raiz de la ventana. Por ejemplo, el siguiente cambia el estado
de la flota.
wmctrl(1) para enviar el mensaje
(suponiendo que 0x4a0000b es el ID de la ventana flotante o no-flotante):
$ wmctrl -i -r 0x4a0000b -b toggle,_NET_WM_STATE_ABOVE
Ventanas flotantes tambien se puede cambiar el tamano y movido por el envio de
un _NET_MOVERESIZE_WINDOW Mensaje del cliente de la ventana raiz. Por ejemplo,
uso
wmctrl(1) para enviar el mensaje (suponiendo
que 0x4a0000b es el ID de la ventana a redimensionar / mover):
$ wmctrl -i -r 0x4a0000b -e 0,100,50,640,480
Esto mueve la ventana de (100,50) y cambia el tamaqo a 640x480.
Todos los eventos _NET_MOVERESIZE_WINDOW recibido por las ventanas apiladas se
ignoran.
SIGNALS¶
Enviando
spectrwm
una senal de HUP reinicia
spectrwm.
ARCHIVOS¶
- ~/.spectrwm.conf
spectrwm
archivo de
configuración especifico del usuario.
- /etc/spectrwm.conf
spectrwm
configuraciones globales.
HISTORIA¶
spectrwm
fue inspirado en xmonad y dwm.
AUTORES¶
spectrwm
fue escrito por