You are not logged in.
I've got a question pertaining to xmonad and dzen. I'm using conky via the dzonky script to display system info and it's working fine but I have yet to be able to get dzen to display the workspaces up in the upper left corner. Is this an issue with my xmonad.hs (which I hacked together via several sources and I'm not completely sure is set up correctly), that I can't do both the workspace and conky, or that I need to run a second instance of dzen (and how exactly would I do that)?
The statusbar stuff in my xmonad.hs I threw in there today in an attempt to fix this; before I was running without it.
.xinitrc:
#!/bin/sh
xcompmgr -o.55 &
xset b off
#xmodmap -e $(cat ~/.Xmodmap) &
xrdb -merge .Xresources
~/bin/conky/dzonky | dzen2 -ta l -w 275 -fn '-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*' -bg '#2c2c32' -fg 'grey70' -p -e '' &
exec dmenu -fn '-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*' -nb '#2c2c32' -nf 'grey70' &
eval `cat ~/.fehbg`
xscreensaver -no-splash &
xmonaddzonky:
FG='#aaaaaa'
BG='#1a1a1a'
FONT='-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*'
conky | dzen2 -e '' -x '0' -h '16' -w '1600' -ta r -fg $FG -bg $BG -fn $FONTxmonad.hs:
--
-- xmonad example config file.
--
-- A template showing all available configuration hooks,
-- and how to override the defaults in your own xmonad.hs conf file.
--
-- Normally, you'd only override those defaults you care about.
--
import XMonad
import System.Exit
import XMonad.Layout.NoBorders ( noBorders, smartBorders )
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import XMonad.Hooks.DynamicLog ( PP(..), dynamicLogWithPP, dzenColor, wrap, defaultPP )
statusBarCmd= "dzen2 -bg '#000000' -fg '#FFFFFF' -h 16 -fn '-*-terminus-*-*-*-*-12-*-*-*-*-*-iso8859' -sa c -e '' -ta l"
-- The preferred terminal program, which is used in a binding below and by
-- certain contrib modules.
--
myTerminal = "urxvt"
-- Width of the window border in pixels.
--
myBorderWidth = 1
-- modMask lets you specify which modkey you want to use. The default
-- is mod1Mask ("left alt"). You may also consider using mod3Mask
-- ("right alt"), which does not conflict with emacs keybindings. The
-- "windows key" is usually mod4Mask.
--
myModMask = mod1Mask
-- The mask for the numlock key. Numlock status is "masked" from the
-- current modifier status, so the keybindings will work with numlock on or
-- off. You may need to change this on some systems.
--
-- You can find the numlock modifier by running "xmodmap" and looking for a
-- modifier with Num_Lock bound to it:
--
-- > $ xmodmap | grep Num
-- > mod2 Num_Lock (0x4d)
--
-- Set numlockMask = 0 if you don't have a numlock key, or want to treat
-- numlock status separately.
--
myNumlockMask = mod2Mask
-- The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a
-- workspace name. The number of workspaces is determined by the length
-- of this list.
--
-- A tagging example:
--
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
--
--myWorkspaces = ["1","2","3","4","5","6","7","8","9"]
myWorkspaces = ["1:web", "2:files", "3:urxvt"] ++ map show [4 .. 9 :: Int]
-- Border colors for unfocused and focused windows, respectively.
--
myNormalBorderColor = "#555555"
myFocusedBorderColor = "#aece92"
-- Default offset of drawable screen boundaries from each physical
-- screen. Anything non-zero here will leave a gap of that many pixels
-- on the given edge, on the that screen. A useful gap at top of screen
-- for a menu bar (e.g. 15)
--
-- An example, to set a top gap on monitor 1, and a gap on the bottom of
-- monitor 2, you'd use a list of geometries like so:
--
-- > defaultGaps = [(18,0,0,0),(0,18,0,0)] -- 2 gaps on 2 monitors
--
-- Fields are: top, bottom, left, right.
--
myDefaultGaps = [(16,0,0,0)]
------------------------------------------------------------------------
-- Key bindings. Add, modify or remove key bindings here.
--
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
-- launch a terminal
[ ((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
-- launch dmenu
, ((modMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
-- launch gmrun
, ((modMask .|. shiftMask, xK_p ), spawn "gmrun")
-- close focused window
, ((modMask .|. shiftMask, xK_c ), kill)
-- Rotate through the available layout algorithms
, ((modMask, xK_space ), sendMessage NextLayout)
-- Reset the layouts on the current workspace to default
, ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
-- Resize viewed windows to the correct size
, ((modMask, xK_n ), refresh)
-- Move focus to the next window
, ((modMask, xK_Tab ), windows W.focusDown)
-- Move focus to the next window
, ((modMask, xK_j ), windows W.focusDown)
-- Move focus to the previous window
, ((modMask, xK_k ), windows W.focusUp )
-- Move focus to the master window
, ((modMask, xK_m ), windows W.focusMaster )
-- Swap the focused window and the master window
, ((modMask, xK_Return), windows W.swapMaster)
-- Swap the focused window with the next window
, ((modMask .|. shiftMask, xK_j ), windows W.swapDown )
-- Swap the focused window with the previous window
, ((modMask .|. shiftMask, xK_k ), windows W.swapUp )
-- Shrink the master area
, ((modMask, xK_h ), sendMessage Shrink)
-- Expand the master area
, ((modMask, xK_l ), sendMessage Expand)
-- Push window back into tiling
, ((modMask, xK_t ), withFocused $ windows . W.sink)
-- Increment the number of windows in the master area
, ((modMask , xK_comma ), sendMessage (IncMasterN 1))
-- Deincrement the number of windows in the master area
, ((modMask , xK_period), sendMessage (IncMasterN (-1)))
-- toggle the status bar gap
, ((modMask , xK_b ),
modifyGap (\i n -> let x = (XMonad.defaultGaps conf ++ repeat (0,0,0,0)) !! i
in if n == x then (0,0,0,0) else x))
-- Quit xmonad
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
-- Restart xmonad
, ((modMask , xK_q ),
broadcastMessage ReleaseResources >> restart "xmonad" True)
]
++
--
-- mod-[1..9], Switch to workspace N
-- mod-shift-[1..9], Move client to workspace N
--
[((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
++
--
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
--
[((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
| (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
------------------------------------------------------------------------
-- Mouse bindings: default actions bound to mouse events
--
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
-- mod-button1, Set the window to floating mode and move by dragging
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
-- mod-button2, Raise the window to the top of the stack
, ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
-- mod-button3, Set the window to floating mode and resize by dragging
, ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
-- you may also bind events to the mouse scroll wheel (button4 and button5)
]
------------------------------------------------------------------------
-- Layouts:
-- You can specify and transform your layouts by modifying these values.
-- If you change layout bindings be sure to use 'mod-shift-space' after
-- restarting (with 'mod-q') to reset your layout state to the new
-- defaults, as xmonad preserves your old layout settings by default.
--
-- The available layouts. Note that each layout is separated by |||,
-- which denotes layout choice.
--
--myLayout = smartBorders $ Mirror tiled ||| Full ||| tiled
myLayout = smartBorders $ tiled ||| Full ||| Mirror tiled
where
-- default tiling algorithm partitions the screen into two panes
tiled = Tall nmaster delta ratio
-- The default number of windows in the master pane
nmaster = 1
-- Default proportion of screen occupied by master pane
ratio = 1/2
-- Percent of screen to increment by when resizing panes
delta = 3/100
------------------------------------------------------------------------
-- Window rules:
-- Execute arbitrary actions and WindowSet manipulations when managing
-- a new window. You can use this to, for example, always float a
-- particular program, or have a client always appear on a particular
-- workspace.
--
-- To find the property name associated with a program, use
-- > xprop | grep WM_CLASS
-- and click on the client you're interested in.
--
-- To match on the WM_NAME, you can use 'title' in the same way that
-- 'className' and 'resource' are used below.
--
myManageHook = composeAll
[ className =? "MPlayer" --> doFloat
, className =? "Gimp" --> doFloat
, className =? "Galculator" --> doFloat
, title =? "Gmail Manager Accounts" --> doFloat
, title =? "Bon Echo - Restore Previous Session" --> doFloat
, className =? "feh" --> doFloat
, resource =? "desktop_window" --> doIgnore
, resource =? "kdesktop" --> doIgnore ]
-- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = True
------------------------------------------------------------------------
-- Status bars and logging
-- Perform an arbitrary action on each internal state change or X event.
-- See the 'DynamicLog' extension for examples.
--
-- To emulate dwm's status bar
--
-- > logHook = dynamicLogDzen
--
myLogHook = return ()
------------------------------------------------------------------------
-- Now run xmonad with all the defaults we set up.
-- Run xmonad with the settings you specify. No need to modify this.
--
main = xmonad defaults
-- A structure containing your configuration settings, overriding
-- fields in the default config. Any you don't override, will
-- use the defaults defined in xmonad/XMonad/Config.hs
--
-- No need to modify this.
--
defaults = defaultConfig {
-- simple stuff
terminal = myTerminal,
focusFollowsMouse = myFocusFollowsMouse,
borderWidth = myBorderWidth,
modMask = myModMask,
numlockMask = myNumlockMask,
workspaces = myWorkspaces,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,
defaultGaps = myDefaultGaps,
-- key bindings
keys = myKeys,
mouseBindings = myMouseBindings,
-- hooks, layouts
layoutHook = myLayout,
manageHook = myManageHook,
logHook = myLogHook
}
-- dynamiclog pretty printer for dzen
myPP h = defaultPP
{ ppCurrent = wrap "^fg(#FFFFFF)^bg(#647A90)^p(2)^i(/home/kodoma/.icons/dzen/has_win.xbm)" "^p(2)^fg(grey55)^bg()"
, ppVisible = wrap "^bg(grey30)^fg(grey75)^p(2)" "^p(2)^fg(grey55)^bg()"
, ppSep = " ^fg(grey60)^r(3x3)^fg() "
, ppLayout = dzenColor "#647A90" "" .
(\x -> case x of
"Tall" -> "tall ^i(/home/kodoma/.icons/dzen/tall.xbm)"
"Mirror Tall" -> "mirror ^i(/home/kodoma/.icons/dzen/mtall.xbm)"
"Full" -> "full ^i(/home/kodoma/.icons/dzen/full.xbm)"
"Grid" -> "grid"
"Tabbed" -> "tabbed"
)
, ppTitle = dzenColor "white" "" . wrap "< " " >"
, ppOutput = hPutStrLn h
}Offline
You have a couple of problems with your xmonad.hs, and so it's not doing what you have probably been expecting it to do.
The main thing is that your "dynamiclog pretty printer" and statusBarCmd is not used anywhere. It's like "the variables have been set but subsequently ignored in the main program". There were also some imported modules missing. Anyway, I played with it a bit, and it runs now on my computer, and it prints "workspaces" in the upper-left corner.
I posted it to nopaste: http://rafb.net/p/3WE2tj62.html. Compare it with your previous one posted above.
EDIT: there's one more thing I noticed: the dzen spawned by xmonad to print the "workspaces" is wide across the whole screen, and so it covers anything else you might be printing into the upper-right corner. To make it a particular width (so that it doesn't cover the whole top of the screen), use "-w <pixels" parameter for dzen in the "statusBarCmd". Have a look at the dzen's list of options http://dzen.googlecode.com/svn/trunk/README.
Last edited by bender02 (2008-03-23 15:18:43)
Offline
There's another thing which I don't understand, now in your .xinitrc: It's the line
exec dmenu -fn '-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*' -nb '#2c2c32' -nf 'grey70' &dmenu ran like this does not do anything. Moreover, you 'exec' it, so that this dmenu process is the main process now running, and the only (reasonable) way to end your X session is to kill it. Usually one has a bunch of lines without 'exec', and then at the end 'exec <window manager>', so that when window manager quits, the whole X quits.
Offline
Yeah I knew in the back of my mind that only the last line got 'exec' but for some reason it never occured to me. I saw dmenu being called from somebody's xinitrc and I threw it in there and didn't see any related errors so I just left it in there.
I switched over to the xmonad.hs you wrote up and it is working. I had to adjust the width and position of conky in dzonky because it was running across the entire screen.
One question though: When I start up xmonad I have to hit the 'Esc' key in order for me to see conky. Is this normal behavior?
Offline
No, it's not normal that you don't see conky right away. But I think this might have something to do with your .xinitrc or conky rather that xmonad.
Offline
Hi everyone...
I have some problems with - I think - conky. (My window manager is xmonad. The conky output is piped to dzen2. xmonad 0.7.1, dzen svn, conky svn (conky 1 repo))
I'll try to explain my problem with screenshots with conky running stand alone...
Everything works fine as long as I see the conky desktop output: screenshot 1
When I move my terminal above the conky desktop output, or when I just use one or more tiled (not floated) terminal(/other windows, e.g. firefox), conky doesn't update anymore: screenshot 2
Now, when I change to another desktop on which you can see the conky desktop output again (or when I resize a floated window), conky updates again (look at the seconds)... screenshot 3
EDIT: #conky (freenode): "i guess your window manager prevents conky from accessing the root window, so it locks up somewhere"
Here are my config files:
I hope anyone can help me... I hope that dzen-conky-statusbar will soon print me updated times and songtitles. =(
// And1
Last edited by And1 (2008-05-05 17:57:23)
Offline
I'm not an expert on xmonad but it looks like your xmonad.hs is missing a line like
myDefaultGaps = [(16,16,0,0)]
That would give you 16 pixels on the top and bottom for conky. Does that help?
Offline
Hi,
thanks for your hint... but it doesn't really help, no. =(
In #conky I was told it may be a conky bug, I reported it to their bugtracker... but when I look at other users screenshots, it also works fine, I think. =/
// And1
Offline
Your xmonad.hs and conky configs look fine...I'm guessing it's the bleeding edge version of conky. Have you tried it with a stable release?
thayer williams ~ cinderwick.ca
Offline
Hey thayer... ![]()
(( Btw, awesome works fine on my notebook, and my sisters boyfriend also likes it and wants to use it...
))
Back to topic:
First I tried the conky version which is in debian stable... 1.4.4-1
It also didn't work... let me try again with my current conkyrc's and xmonad.hs and xinitrc...
EDIT: No, it works not... =/
EDIT2: Is it possible to make conky's $mpd_smart variable use ISO8859-15 instead of UTF-8?
// And1
Last edited by And1 (2008-05-05 19:44:50)
Offline
Hey,
I compiled conky now with the parameter "--disable-x11"... now it works...
// And1
Offline