Índice
A lo largo de los años he probado varios gestores de ventanas, como fluxbox, openbox y el más reciente xmonad, casi puedo decir que es el definitivo por su capacidad de configuración.
La instalación es muy sencilla. En este artículo voy a profundizar más en los dos aspectos que más problemas me han causado, configurar apropiadamente trayer y establecer fondos de pantalla aleatoriamente.
NOTA: Hace tiempo que dejé de usar xmonad ahora uso DWM
Configurar trayer
La documentación oficial de xmonad configura trayer de forma se ejecute al iniciar sesión modificando el archivo ~/.xsession tal que así:
#!/bin/bash
# Load resources
xrdb -merge .Xresources
# Set up an icon tray
trayer --edge top --align right --SetDockType true --SetPartialStrut true
--expand true --width 10 --transparent true --tint 0x191970 --height 12 &
# Set the background color<
xsetroot -solid midnightblue
# Fire up apps
gajim &
xscreensaver -no-splash &
if [ -x /usr/bin/nm-applet ] ; then
nm-applet --sm-disable &
fi
if [ -x /usr/bin/gnome-power-manager ] ; then
sleep 3
gnome-power-manager &
fi
exec xmonad
Este xsession no me lanzaba trayer, así que lo saqué fuera a un script aparte:
#!/bin/bash
trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --height 20 --transparent true --tint 0x000000 --monitor 1 &
if [ -x /usr/bin/nm-applet ] ; then
nm-applet --sm-disable &
fi
if [ -x /usr/bin/gnome-power-manager ] ; then
sleep 1
gnome-power-manager &
fi
Finalmente, añadí el script al crontab con la opción @reboot, que en teoría debe ejecutarse en cada inicio del pc (ejecutando crontab -e):
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot /home/hkr/bin/trayerxmonad.sh
Pero no dió resultado, así que como última opción, asigne una combinación de teclas al script en el archivo de configuración de xmonad (xmonad.hs):
import XMonad
import XMonad.Config.Azerty
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig
import Graphics.X11.ExtraTypes.XF86
import XMonad.Layout.Spacing
import XMonad.Layout.NoBorders(smartBorders)
import XMonad.Layout.PerWorkspace
import XMonad.Layout.IM
import XMonad.Layout.Grid
--import XMonad.Actions.GridSelect
import Data.Ratio ((%))
import XMonad.Actions.CycleWS
import qualified XMonad.StackSet as W
import System.IO
myWorkspaces = ["1","2","3","4","5","6", "7"]
myLayout = onWorkspace "4" pidginLayout $ onWorkspaces ["2", "7"] nobordersLayout $ tiled1 ||| Mirror tiled1 ||| nobordersLayout
where
tiled1 = spacing 5 $ Tall nmaster1 delta ratio
--tiled2 = spacing 5 $ Tall nmaster2 delta ratio
nmaster1 = 1
nmaster2 = 2
ratio = 2/3
delta = 3/100
nobordersLayout = smartBorders $ Full
gridLayout = spacing 8 $ Grid
--gimpLayout = withIM (0.20) (Role "gimp-toolbox") $ reflectHoriz $ withIM (0.20) (Role "gimp-dock") Full
pidginLayout = withIM (18/100) (Role "buddy_list") gridLayout
myManageHook = composeAll
[ className =? "File Operation Progress" --> doFloat
, resource =? "desktop_window" --> doIgnore
, className =? "xfce4-notifyd" --> doIgnore
--, className =? "Iron" --> doShift "1:main"
, className =? "Firefox" --> doShift "2"
, className =? "Gimp" --> doFloat
, className =? "Vlc" --> doShift "7"
]
main = do
xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmobarrc"
xmonad $ defaultConfig
{ manageHook = manageDocks <+> myManageHook -- make sure to include myManageHook definition from above
<+> manageHook defaultConfig
, layoutHook = avoidStruts $ myLayout
, logHook = dynamicLogWithPP xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "#2CE3FF" "" . shorten 50
}
, modMask = mod4Mask -- Rebind Mod to the Windows key
, workspaces = myWorkspaces
, normalBorderColor = "#60A1AD"
, focusedBorderColor = "#68e862"
, borderWidth = 2
} `additionalKeys`
[ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock")
, ((mod4Mask, xK_KP_Enter), spawn "exe=`dmenu_run -b -nb black -nf yellow -sf yellow` && eval "exec $exe"") -- spawn dmenu
, ((mod4Mask, xK_Return), spawn "terminator") -- spawn terminator terminal
, ((mod4Mask, xK_w), spawn "/usr/bin/firefox")
, ((mod4Mask, xK_f), spawn "nautilus --no-desktop")
, ((mod4Mask, xK_s), spawn "~/Pictures/wall_aleatorio.sh")
, ((0, xF86XK_HomePage), spawn "gedit ~/.xmonad/xmonad.hs") -- hit a button to open the xmonad.hs file
, ((mod4Mask, xK_m), spawn "vlc") -- hit a button to run mpd with ncmpcpp
, ((mod4Mask .|. shiftMask, xK_F4), spawn "sudo shutdown -h now") -- to shutdown
, ((0, xF86XK_AudioLowerVolume), spawn "amixer set Master 3%-") -- decrease volume
, ((0, xF86XK_AudioRaiseVolume), spawn "amixer set Master 3%+") -- increase volume
, ((0, xF86XK_AudioMute), spawn "amixer set Master toggle") -- mute volume
--, ((controlMask .|. shiftMask, xK_Right), spawn "ncmpcpp next") -- play next song in mpd
--, ((controlMask .|. shiftMask, xK_Left), spawn "ncmpcpp prev") -- play previous song
, ((mod4Mask, xK_Up ), windows W.swapUp) -- swap up window
, ((mod4Mask, xK_Down ), windows W.swapDown) -- swap down window
, ((mod4Mask, xK_KP_Add ), sendMessage (IncMasterN 1)) -- increase the number of window on master pane
, ((mod4Mask, xK_KP_Subtract ), sendMessage (IncMasterN (-1))) -- decrease the number of window
, ((controlMask, xK_Right ), sendMessage Expand) -- expand master pane
, ((controlMask, xK_Left ), sendMessage Shrink) -- shrink master pane
, ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
, ((0, xK_Print), spawn "gnome-screenshot -i")
, ((0, xF86XK_Calculator), spawn "~/bin/trayerxmonad.sh")
, ((mod4Mask .|. shiftMask, xK_e), spawn "~/Desktop/eclipse/eclipse") -- eclipse
]
Concretamente la tecla con el iconito de la calculadora:
, ((0, xF86XK_Calculator), spawn "~/bin/trayerxmonad.sh")
Configurar fondos de pantalla aleatorios
Antes de continuar, es necesario instalar feh para establecer fondos de pantalla:
sudo aptitude install feh
Para conseguir que cada x tiempo el fondo de pantalla cambie, creé un script, que selecciona aleatoriamente una imagen de una carpeta:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
picsfolder="/home/hkr/Pictures/HD/"
cd $picsfolder
files=(*.jpg)
N=${#files[@]}
((N=RANDOM%N))
randomfile1=${files[$N]}
feh --bg-fill $picsfolder$randomfile1
Seguidamente, configuré crontab para que ejecutara dicho script cada 5 minutos por ejemplo:
$ hkr-> crontab -l
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/5 * * * * /home/hkr/Pictures/wall_aleatorio.sh
Así luce mi escritorio con xmonad:
Referencias
- Askubuntu »» Visitar sitio
¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.