You are not logged in.
Hi,
First, I'd like to thank McManiaC for his config. Nice work ^^
However, I can't seem to get dzen2 / conky (-cli) working... I am not sure why... It seems the configuration was correct (at very least).
I put the icon pack in my ~/.dzen, and I placed the conky config in ~/.conkytoprc, I hope that was correct to do...
I'd really like to have that bar running, because not knowing whether or not someone is talking to me on pidgin e.g. is annoying ^^
Thanks in advance.
// edit:
Also, what I just noticed that somehow, out of somewhere, the mod4mask button doesn't work anymore. I can't switch desktops, I can't do anything with that key (not restart xmonad either)
Weird actually...
Last edited by X/ax (2009-03-23 00:41:37)
My coding blog (or an attempt at it)
Archer start page (or an attempt at it)
Offline
@X/ax: I hope you changed '/home/nils/.dzen' in his xmonad.hs to your home directory...
Offline
@X/ax: I hope you changed '/home/nils/.dzen' in his xmonad.hs to your home directory...
I did... I'm currently running on my old xmonad.hs, perhaps starting to "merge" that one and Nils' one...
// edit
Another annoying thing is that if I run the config without changing anything (straight from the web to my .xmonad folder), I get following errors:
Error detected while loading xmonad configuration file: /home/cpf/.xmonad/xmonad.hs
on the commandline:
Warning: -no-recomp is deprecated: Use -fforce-recomp instead
xmonad.hs:109:10: Not in scope: `handleEventHook'
xmonad.hs:304:74: Not in scope: `W.shiftMaster'
xmonad.hs:305:53: Not in scope: `W.shiftMaster'
xmonad.hs:306:76: Not in scope: `W.shiftMaster'
Please check the file for errors.
I mostly solve that stuff by commenting them out...
Last edited by X/ax (2009-03-23 10:02:13)
My coding blog (or an attempt at it)
Archer start page (or an attempt at it)
Offline
Are you using the darcs version? Thats at least what I've been running.
Offline
Are you using the darcs version? Thats at least what I've been running.
I've installed the darcs version now. And with some configuration I've got my desired outcome. Except for dzen / conky.
Once again, it doesn't seem to work. However, this time I see a small (2px wide) window outlined by xmonad. I suspect that to be dzen... So I must be doing something wrong still...
// edit
Major breakthrough, I seem to have done something right
I think it's because I installed haskell-dzen-utils or-so... Because now I see some bar at least ^^
Thanks for the patience, from this point off, I think I'll go pay attention to the dzen / xmobar hacking thread
Last edited by X/ax (2009-03-23 13:26:06)
My coding blog (or an attempt at it)
Archer start page (or an attempt at it)
Offline
Has anyone made something l33t with XMonad.Actions.DynamicWorkspaces? I was thinking of something like this:
I run firefox
if a workspace named "www" exists, move firefox to this workspace
else, create a workspace named "www" and move firefox to this workspace
It doesn't seem to be very hard to do, but I don't know how to check if there's such workspace.
(lambda ())
Offline
After using dwm quite some time on my laptop I decided to leave PekWM for a Gnome/Xmonad combination on my desktop.
Works great so far using the standard Gnome config provided.
But I get into trouble when trying to modify it. All templates and examples refer to default config instead of Gnome, so I often break useful things when applying something new.
Where can I get the defaults to work with?
Offline
a1ex: GnomeConfig adds a couple of keybindings to the desktopConfig which in turn is based on defaultConfig:
http://hackage.haskell.org/packages/arc … Gnome.html
http://hackage.haskell.org/packages/arc … sktop.html
When you override say the manageHook, you should probably add it as such:
main = xmonad gnomeConfig { manageHook = myManageHook <+> manageHook gnomeConfig, ... }
Offline
Hey, I changed my xmonad.hs a little bit to have better Xinerama-support with more than one screen.
The xmonad.hs is available at
www.n-sch.de/xmonad/xmonad.hs
http://sprunge.us/ZcNV?hs (remove the ?hs from the url to get rid of the numbers at the beginning)
The whole package with icons and conkytoprc is available at:
www.n-sch.de/xmonad/xmonad.tar
So whats new?
mod + tab does ignore the visible screens and just tabs through the last recent, not visible workspaces
mod + a cycles through the different screens
mod + s swaps the current workspace on the visible screens with those visible on the other screens.
(thats line 377 to 392)
...and a few other workarounds.
I hope you enjoy!
McManiaC
Last edited by McManiaC (2009-05-11 19:20:05)
Offline
Hi folks,
How can I configure xmonad to run a program when I switch to a particular workspace?
Example: I want to run a script changing the keyboard layout to "us" unconditionally when I'm on particular workspaces (with ssh, rdesktop etc.).
Thanks for ideas!
Offline
Hi!
I guess you could use the EventHook for that, but I'm not that familiar with that X11-lib.
You can also adjust your Key-Settings for the workspace-change. This is what works for me:
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
{- ... -}
-- mod-[1..9] , Switch to workspace N
-- mod-shift-[1..9] , Move client to workspace N, then switch to it
[ ((m .|. modMask, k), windows (f i) >> spawnMaybe i)
| (i, k) <- zip (workspaces conf) ([xK_1 .. xK_9] ++ [xK_0])
, (f, m) <- [(W.greedyView, 0), (liftM2 (.) W.greedyView W.shift, shiftMask)] ]
++
{- ... -}
where spawnMaybe ws
-- spawn urxvt with name "foo" and application "bar" on workspace 5
| ws == (workspace conf !! 4) = spawn $ myTerminal ++ " -name foo -e bar"
| otherwise = return ()
I hope this works, just be a bit carefull with the (!!) operator, since it will cause an error if the index is too big. The index starts at 0, so the first workspace is (workspace conf !! 0) etc... You could also use "runOrRaise" instead of "spawn" to avoid multiple instances of one application (set -name for your terminal when using this with CLI apps!).
McManiaC
Last edited by McManiaC (2009-05-27 12:07:37)
Offline
Thanks, McManiaC!
I like your idea. Works fine!
Regarding to X11-libs - I wrote a small program to manipulate keyboard layouts, it works fine for me.
I use with shell script and dzen2 to display a small flag in the status bar. Here is the C code:
// xkb3.c by Sergey Manucharian
// provides X keyboard layout switching between 3 layouts set
// in either in xorg.conf or by setxkbmap
// accept 1, 2 or 3 arguments - integers 0, 1, 2 corresponding to the layouts
// 1 argument - switches to that layout
// 2 arguments - toggles those layouts
// 3 arguments - increments layout by 1 every time or wraps around
// compile: gcc -Wall -lxkbfile xkb3.c -o xkb3
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/extensions/XKB.h>
#include <X11/extensions/XKBstr.h>
#define MIN_LAYOUT 0
#define MAX_LAYOUT 2
#define LAYOUT_0 0
#define LAYOUT_1 1
#define LAYOUT_2 2
int main(int argc, char *argv[])
{
Display *dpy;
int res;
XkbStateRec state;
int layout0, layout1, layout2;
if (argc < 2) {printf("Usage: xkb3 layout0 [layout1]\n"); return(0);}
dpy = XOpenDisplay(NULL);
if (!dpy) {printf("Can't open display\n"); return(1);}
res = XkbQueryExtension(dpy, NULL, NULL, NULL, NULL, NULL);
if (!res) {printf("Can't init XKB\n"); return(1);}
XkbGetState(dpy, XkbUseCoreKbd, &state);
switch (argc)
{
case 2:
layout0 = atoi(argv[1]);
if (layout0 < MIN_LAYOUT || layout0 > MAX_LAYOUT) {printf("Argument is not within range of 0...2\n");return(1);}
XkbLockGroup(dpy, XkbUseCoreKbd, layout0);
break;
case 3:
layout0 = atoi(argv[1]);
if (layout0 < MIN_LAYOUT || layout0 > MAX_LAYOUT) {printf("Argument #1 is not within range of 0...2\n");return(1);}
layout1 = atoi(argv[2]);
if (layout1 < MIN_LAYOUT || layout1 > MAX_LAYOUT) {printf("Argument #2 is not within range of 0...2\n");return(1);}
switch (state.group)
{
case LAYOUT_0:
XkbLockGroup(dpy, XkbUseCoreKbd, layout1);
break;
case LAYOUT_1:
XkbLockGroup(dpy, XkbUseCoreKbd, layout0);
break;
default:
XkbLockGroup(dpy, XkbUseCoreKbd, 0);
}
break;
case 4:
layout0 = atoi(argv[1]);
if (layout0 < MIN_LAYOUT || layout0 > MAX_LAYOUT) {printf("Argument #1 is not within range of 0...2\n");return(1);}
layout1 = atoi(argv[2]);
if (layout1 < MIN_LAYOUT || layout1 > MAX_LAYOUT) {printf("Argument #2 is not within range of 0...2\n");return(1);}
layout2 = atoi(argv[3]);
if (layout2 < MIN_LAYOUT || layout2 > MAX_LAYOUT) {printf("Argument #3 is not within range of 0...2\n");return(1);}
XkbLockGroup(dpy, XkbUseCoreKbd, (state.group + 1)%(MAX_LAYOUT + 1));
default:
printf("Too many arguments, will do nothing\n");
}
XkbGetState(dpy, XkbUseCoreKbd, &state);
XCloseDisplay(dpy);
printf("%d\n", state.group);
return(0);
}
Cheers
S.M.
Last edited by aragats (2009-05-29 05:10:58)
Offline
does anyone know what this browser is? Is it totally keyboard friendly and mouse free?
http://arch.har-ikkje.net/gfx/ss/2008-1 … _scrot.png
Offline
unregistered: That would be vimperator.
Offline
any good chm viewer that can be used sole with the keyboard for xmonad to recommend?
Offline
xmonad+lxpanel
In ~/.xmonad/xmonad.hs
......
myStartupHook = do
spawn "fcitx"
spawn "lxpanel"
......
lxpanel can run normally, however there is only one problem: The Task Bar cannot display the started applications ! Can anybody shed a light on me ?
e^(π⋅i) + 1 = 0
Offline
To display the started applications in lxpanel, you need this extension:
http://xmonad.org/xmonad-docs/xmonad-co … ktops.html
Note that it has changed somewhat since the last release (0.8.1), so beware of the api differences if you use xmonad from darcs.
Offline
To display the started applications in lxpanel, you need this extension:
http://xmonad.org/xmonad-docs/xmonad-co … ktops.html
Note that it has changed somewhat since the last release (0.8.1), so beware of the api differences if you use xmonad from darcs.
thanks ! I will test it later
e^(π⋅i) + 1 = 0
Offline
Hi, friends
There already is a window on workspace. Now when i start firefox, i want want it appear down the existed window.
[ className =? "Firefox" --> (ask >>= doF . W.swapDown)] doesnot compile.
tbanks!
e^(π⋅i) + 1 = 0
Offline
sw2wolf: See the functions defined in here, which will be in the next release:
http://code.haskell.org/XMonadContrib/X … osition.hs
Offline
[ className =? "Firefox" --> (ask >>= doF . W.insertUp] works, however there is no W.insertDown ? So i want use the code you supplied first while waiting for the new release.
thanks !
e^(π⋅i) + 1 = 0
Offline
Hey guys, here's my current xmonad.hs file, how can I change the default tiling algorithm to say Full or some other algorithm, etc?
oh and how does the tabbed layout behave and look like?
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO
main = do
xmproc <- spawnPipe "xmobar"
xmonad $ defaultConfig
{ manageHook = manageDocks <+> manageHook defaultConfig
, layoutHook = avoidStruts $ layoutHook defaultConfig
, logHook = dynamicLogWithPP $ xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "green" "" . shorten 50
}
, focusedBorderColor = "#00ff00"
--, modMask = mod4Mask -- Rebind Mod to the Windows key
}
Thanks.
Offline
You can do something like this:
tiled = Tall 1 1/2 3/100
myLayout = avoidStruts $ Full ||| tiled ||| Mirror tiled ||| other tiling algorithm
in your main, you should then assign the layoutHook to myLayout:
layoutHook = myLayout
You can toggle between layouts with mod + spacebar if you didn't change the default key for it.
Last edited by Nepherte (2009-06-10 14:54:05)
Offline
I'm having trouble with XMonad.Actions.FindEmptyWorkspace. There are no errors, it just doesn't work. I press 'e' (the key I binded to view the empty workspace) and nothing happens. Here is my xmonad.hs:
import XMonad
import System.Exit
import XMonad.Layout
import XMonad.Layout.ThreeColumns
import XMonad.Layout.NoBorders
import XMonad.Layout.SimplestFloat
import XMonad.Actions.WindowNavigation
import XMonad.Actions.FindEmptyWorkspace
import XMonad.Layout.Combo
import XMonad.Layout.LayoutCombinators
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run (spawnPipe)
import System.IO
import XMonad.Hooks.FadeInactive
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import XMonad.Config (defaultConfig)
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[ ((modm, xK_Return), spawn "urxvtc")
, ((modm, xK_p ), spawn "bash /home/oliver/.xmonad/dmenu.sh")
, ((modm .|. shiftMask, xK_c ), kill)
, ((modm, xK_space ), sendMessage NextLayout)
, ((modm, xK_n ), refresh)
, ((modm .|. shiftMask, xK_Return), windows W.swapMaster)
, ((modm, xK_e ), viewEmptyWorkspace)
, ((modm .|. shiftMask, xK_e ), tagToEmptyWorkspace)
--, ((modm .|. shiftMask, xK_h), sendMessage $ swap L)
--, ((modm .|. shiftMask, xK_l), sendMessage $ swap R)
--, ((modm .|. shiftMask, xK_j), sendMessage $ swap D)
--, ((modm .|. shiftMask, xK_k), sendMessage $ swap U)
--, ((modm, xK_w), sendMessage $ go U)
--, ((modm, xK_s), sendMessage $ go D)
--, ((modm, xK_d), sendMessage $ go R)
--, ((modm, xK_a), sendMessage $ go L)
, ((modm, xK_minus ), sendMessage Shrink)
, ((modm, xK_equal ), sendMessage Expand)
, ((modm, xK_b ), sendMessage ToggleStruts)
, ((modm, xK_t ), withFocused $ windows . W.sink)
, ((modm , xK_comma ), sendMessage (IncMasterN 1))
, ((modm , xK_period), sendMessage (IncMasterN (-1)))
, ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
, ((modm , xK_q ), restart "xmonad" True)
]
++
[((m .|. modm, k), windows $ f i) | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9], (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
++
[((m .|. modm, 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)]]
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w)),
((mod1Mask, button1), (\w -> focus w >> mouseResizeWindow w))]
myLogHook :: Handle -> X ()
myLogHook h = dynamicLogWithPP $ defaultPP {
ppCurrent = dzenColor "#6d78ff" "#222222" . pad
, ppVisible = dzenColor "#222222" "#111111" . pad
, ppLayout = \x -> " | ^fg(#bb6667)"
++ case x of
"Tall" -> "::"
"Full" -> "[]"
"SimplestFloat" -> ".'"
"combining combining Tall and Tall with Tall and combining Tall and Tall with Tall with Mirror Tall" -> "+:"
_ -> x
++ "^fg(#aaaaaa) "
, ppHidden = dzenColor "#6d78ff" "#111111" . pad
, ppHiddenNoWindows = dzenColor "" "" . pad
, ppUrgent = dzenColor "#000000" "#ffffff" . pad
, ppWsSep = " "
, ppSep = ""
, ppTitle = ("" ++) . dzenColor "#0095b9" "#111111" . dzenEscape
, ppOutput = hPutStrLn h
}
main = do
workspaceBarPipe <- spawnPipe "/usr/bin/dzen2 -ta l -fn -*-fixed-medium-r-*-*-13-*-*-*-*-*-* -bg #222222"
config <-withWindowNavigation(xK_k, xK_h, xK_j, xK_l) $ defaults {
manageHook = manageDocks <+> manageHook defaults
, layoutHook = avoidStruts $ layoutHook defaults
, logHook = myLogHook workspaceBarPipe-- >> fadeInactiveLogHook 0xdddddd
}
xmonad config
defaults = defaultConfig {
focusFollowsMouse = True,
borderWidth = 1,
modMask = mod4Mask,
workspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9"],
normalBorderColor = "#000000",
focusedBorderColor = "#86a2be",
keys = myKeys,
mouseBindings = myMouseBindings,
layoutHook = smartBorders $ (twocol XMonad.Layout.||| Full XMonad.Layout.||| ((twocol *|* twocol) */* (twocol *|* twocol))),
manageHook = composeAll [],
logHook = return (),
startupHook = spawn "xsetroot -cursor_name left_ptr"
}
where
twocol = Tall nmaster delta ratio
nmaster = 1
ratio = 1/2
delta = 3/100
Btw, this thread is great!
urxvtc / wmii / zsh / configs / onebluecat.net
Arch will not hold your hand
Offline
You can do something like this:
tiled = Tall 1 1/2 3/100 myLayout = avoidStruts $ Full ||| tiled ||| Mirror tiled ||| other tiling algorithm
in your main, you should then assign the layoutHook to myLayout:
layoutHook = myLayout
You can toggle between layouts with mod + spacebar if you didn't change the default key for it.
hey I got a tiled and myLayout not in scope error when trying to compile, any ideas?
here's the config
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO
main = do
xmproc <- spawnPipe "xmobar"
xmonad $ defaultConfig
{ manageHook = manageDocks <+> manageHook defaultConfig
, tiled = Tall 1 1/2 3/100
, myLayout = avoidStruts $ Full ||| Mirror tiled ||| tiled
, layoutHook = myLayout
, logHook = dynamicLogWithPP $ xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "green" "" . shorten 50
}
, focusedBorderColor = "#00ff00"
--, modMask = mod4Mask -- Rebind Mod to the Windows key
}
Last edited by unregistered (2009-06-11 01:37:59)
Offline