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_delay
- Frecuencia de actualización, en segundos, de los
scripts de la barra de estado.
- 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
- xterm
- screenshot_all
- screenshot.sh completo
- screenshot_wind
- screenshot.sh por ventana
- lock
- xlock
- initscr
- initscreen.sh
- menu
- 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:
- $bar_border
-
- $bar_color
-
- $bar_font
-
- $bar_font_color
-
- $color_focus
-
- $color_unfocus
-
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:
- M-S-⟨Return⟩
- term
- M-p
- menu
- M-S-q
- quit
- M-q
- restart spectrwm
- M-⟨Space⟩
- cycle_layout
- M-S-⟨Space⟩
- reset_layout
- M-h
- master_shrink
- M-l
- master_grow
- M-,
- master_add
- M-.
- master_del
- M-S-,
- stack_inc
- M-S-.
- stack_del
- M-⟨Return⟩
- swap_main
- M-j,
M-⟨TAB⟩
- focus_next
- M-k,
M-S-⟨TAB⟩
- focus_prev
- M-m
- focus_main
- M-S-j
- swap_next
- M-S-k
- swap_prev
- M-b
- bar_toggle
- M-x
- wind_del
- M-S-x
- wind_kill
- M-⟨n⟩
- ws_n
- M-S-⟨n⟩
- mvws_n
- M-⟨Right⟩
- ws_next
- M-⟨Left⟩
- ws_prev
- M-a
- ws_prior
- M-S-⟨Right⟩
- screen_next
- M-S-⟨Left⟩
- screen_prev
- M-s
- screenshot_all
- M-S-s
- screenshot_wind
- M-S-v
- version
- M-t
- float_toggle
- M-S
⟨Delete⟩
- lock
- M-S-i
- initscr
- M-w
- iconify
- M-S-w
- uniconify
- M-S-r
- always_raise
- M-v
- button2
- M--
- width_shrink
- M-=
- width_grow
- M-S-
- height_shrink
- M-S-=
- height_grow
- M-[
- move_left
- M-]
- move_right
- M-S-[
- move_up
- M-S-]
- move_down
El nombre de las acciónes descripta a continuación:
- term
- Ejecutar una terminal (ver
PROGRAMAS )
- menu
- 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
Marco
Peereboom ⟨marco@peereboom.us⟩,
Ryan
Thomas McBride ⟨mcbride@countersiege.com⟩ and
Darrin Chandler
⟨dwchandler@stilyagin.com⟩.
BUGS¶
Actualmente el menu, se llama con
M-p, depende de dmenu.