You are not logged in.
Hello again.
I'm taking the leap and checking out some tiling WMs. I've never used any before and I would like some guidance as I'm very used to Gnome/Xfce/Fluxbox and how those work/are setup.
I've looked over some of the other threads, but I have some questions of my own about tiling WMs.
First off, I currently have about a handful installed: awesome, xmonad (which seems to refuse to start), wmii, musca, and ion3. I'm pretty much completely overwhelmed when entering all of them and get lost pretty quick. I'm looking for something extensible but easy to pick up and go with. I like having a systray and panel of some kind, but they can be minimal and I've heard of more than I thought was possible about simple stand-ins that do these jobs pretty well.
I guess my questions are as follows: which do you think would be the easiest to become accustomed to and use efficiently until I become accustomed? What types of configuration do you use in your choice of WM (as in which systray or no systray at all, etc)? And what programs would you recommend for a simple terminal, a music player (currently using Exaile, which is wonderful by the way), and instant messaging application (currently using Pidgin)?
Furthermore, for those of you using xmonad, I can't login because it's not finding the .xmonad folder in my home folder which includes the executable "xmonad-i386-linux" file (if I remember the error correctly). Any ideas on how to solve this or what I did wrong??
Thanks again for all your help.
Offline
For xmonad: create the .xmonad folder yourself, and put a xmonad.hs (xmonad's config file) in there. Xmonad looks for that file and compiles it at runtime, and you're left with that "xmonad-i386-linux" that you're missing.
Get one from the examples on the official site (http://www.haskell.org/haskellwiki/Xmon … ig_archive)
If you're new to tilers Xmonad will not be your best choice IMO (config file is written in Haskell...)
I'd go with dwm or wmii. Ratpoison could be a choice too but that's a bit of a stretch for a tiling newcomer
You can keep using your old applications, no need to switch them because of a WM change.
BUT if is efficiency you're looking for:
1. urxvt + GNU Screen for terminals/irc (you can have more terminals in one single window..you NEED that )
2. For music either set up mpd/mpc or use mocp
For the systray part..you either stop using it (the whole point of tiling managers is to use as much space as you can), or if you must you need a tiler that allows you to leave "gaps" around the screen (a space that's unmanaged by the wm). dwm has this, xmonad too. I myself use Ratpoison.
edit:
Here's my old xmonad.hs to get you started. Install dzen2 also (to get the bar on top)
import XMonad
import System.Exit
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import XMonad.Util.Run
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Layout.NoBorders
import XMonad.Layout.Tabbed
-- -xos4-terminus-medium-r-*-*-14-*-*-*-*-*-*-*
myLauncher :: String
myLauncher = "`dmenu_path | dmenu -fn '-xos4-terminus-medium-r-*-*-14-*-*-*-*-*-*-*' -nb '#303030' -nf '#959595' -sf '#FFFFFF' -sb '#606060'`"
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
, ((modMask, xK_p ), spawn myLauncher)
, ((modMask .|. shiftMask, xK_c ), kill)
, ((modMask, xK_space ), sendMessage NextLayout)
, ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
, ((modMask, xK_n ), refresh)
, ((modMask, xK_Tab ), windows W.focusDown)
, ((modMask, xK_j ), windows W.focusDown)
, ((modMask, xK_k ), windows W.focusUp )
, ((modMask, xK_m ), windows W.focusMaster )
, ((modMask, xK_Return), windows W.swapMaster)
, ((modMask .|. shiftMask, xK_j ), windows W.swapDown )
, ((modMask .|. shiftMask, xK_k ), windows W.swapUp )
, ((modMask, xK_h ), sendMessage Shrink)
, ((modMask, xK_l ), sendMessage Expand)
, ((modMask, xK_t ), withFocused $ windows . W.sink)
, ((modMask , xK_comma ), sendMessage (IncMasterN 1))
, ((modMask , xK_period), sendMessage (IncMasterN (-1)))
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
, ((modMask , xK_q ), restart "xmonad" True)
, ((modMask .|.shiftMask .|. controlMask , xK_c ), spawn "mousepad ~/.xmonad/xmonad.hs")
, ((modMask , xK_b ), sendMessage ToggleStruts)
]
++
[((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_4]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
, ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
, ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
]
myLayouts = tiled ||| Mirror tiled ||| noBorders Full ||| simpleTabbedBottom
where
tiled = Tall 1 (2/100) (1/2)
myManageHook = composeAll
[ className =? "MPlayer" --> doFloat
, className =? "Gimp" --> doFloat
, resource =? "desktop_window" --> doIgnore ]
main = do
h <- spawnPipe "dzen2 -w 512 -ta l -fn '-xos4-terminus-medium-r-*-*-14-*-*-*-*-*-*-*' -bg '#303030' -fg '#FFFFFF'"
xmonad $ defaultConfig {
terminal = "xterm",
focusFollowsMouse = False,
borderWidth = 1,
modMask = mod1Mask,
workspaces = [" 0x1 "," 0x2 "," 0x3 "," 0x4 "],
normalBorderColor = "#303030",
focusedBorderColor = "#55BBFF",
keys = myKeys,
mouseBindings = myMouseBindings,
layoutHook = avoidStruts $ smartBorders myLayouts,
manageHook = myManageHook,
logHook = dynamicLogWithPP $ defaultPP {
ppCurrent = wrap "^fg(#FFFFFF)^bg(#606060)" "^fg()^bg()"
,ppVisible = wrap "^fg(#FFFFFF)^bg()" "^fg()^bg()"
,ppHidden = wrap "^fg(#55BBFF)^bg()" "^fg()^bg()"
,ppHiddenNoWindows = wrap "^fg(#808080)^bg()" "^fg()^bg()"
,ppUrgent = wrap "^fg(#FF0000)^bg()" "^fg()^bg()"
,ppTitle = wrap " ^fg(#FFFFFF)^bg()" "^fg()^bg()"
,ppLayout = \x -> "^fg(#FFBB00)^bg()"
++ case x of
"Tall" -> "Tiled"
"Full" -> "Full"
"Mirror Tall" -> "Tiled Bottom"
"Tabbed Bottom Simplest" -> "Tabbed"
_ -> x
++ "^fg()^bg()"
,ppSep = " "
,ppWsSep = ""
,ppOutput = hPutStrLn h
}
}
Last edited by Wra!th (2009-04-03 06:10:30)
MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Offline
I hope your search of the forums led you to this thread
Also check the Wiki for a comparison of tiling wms
First off, I currently have about a handful installed: awesome, xmonad (which seems to refuse to start), wmii, musca, and ion3. I'm pretty much completely overwhelmed when entering all of them and get lost pretty quick.
My advice : Do NOT try them all out in 1 day. Any software or WM - especially tiling wms need to used over a decent length of time to be able to gauge the efficiency and usefulness for a particular user. This varies from individual to individual.
I'm looking for something extensible but easy to pick up and go with. I like having a systray and panel of some kind, but they can be minimal and I've heard of more than I thought was possible about simple stand-ins that do these jobs pretty well.
I use musca as my wm and its amazingly simple and easy to use. configuration is thru the .musca_start file - which you can even rename to something else if you like. That's the good thing about it over dwm - that you don't have to keep compiling it all the time. A few of the ratpoison features are simply amazing and musca derives from both dwm and ratpoison.
I guess my questions are as follows: which do you think would be the easiest to become accustomed to and use efficiently until I become accustomed? What types of configuration do you use in your choice of WM (as in which systray or no systray at all, etc)? And what programs would you recommend for a simple terminal, a music player (currently using Exaile, which is wonderful by the way), and instant messaging application (currently using Pidgin)?
1) Awesome is good - only problem is the ever changing and incompatible with older version config files. I can't for the life of me understand why they would make a config file obsolete for the new version. Hopefully they will come around. Its also a bit heavier than other tiling WMs
2) Xmonad - I have never used -- i hear its very pretty but a little heavier than others. It has good support for multiple screens. a little difficult for beginners due to the fact that it uses haskell and that is a steep learning curve unless you don't mind using other ppl's configs as is. I, for one, am never satisfied until I make some changes at least. So no xmonad for me ...yet !
3) wmii -- two great features - stacking mode which shows the title bars of other windows and the fact that it automatically adds/removes tags depending on whether the tag contains windows or not.
4)dwm -- very light - very bare, you will need to configure almost everything from time in the status bar to setting up conky etc etc. Uses about 480KB res memory on my machine.
5) musca -- lighter still -- usage is anywhere between 330KB - 410KB res. I love it more than dwm because it has manual window management, which I prefer.
6) stumpwm - the next gen of ratpoison based in lisp. Used it for a while..but it was not for me for various reasons.
As for apps : I do not use panels -- not even in my OB setup. I do use a systray -- stalonetray. In musca, I just pad the tags at the bottom and place my systray and my conky there. My conky also serves as my clock.
terminal -- urxvt
music player -- cplay -- very very less memory consumption - less than mpd and even moc/mocp
messenger -- this depends on which network you want -- but finch - a CLI version of pidgin is available. I am not a fan of CLI messengers for some reasons..so I just use Skype.
Last edited by Inxsible (2009-04-03 06:28:49)
There's no such thing as a stupid question, but there sure are a lot of inquisitive idiots !
Offline
I'd actually recommend starting with awesome. it works fairly well out of the box and the config files aren't too painful to mess with if you get the urge to. it's got a clock, a toolbar, a taskbar, and a notification area by default. open a terminal with window key+enter, run apps with window key+F1, and the man page is really helpful.
: () { : | :& } ;:
Offline
As far as simply jumping in, my vote would have to go to xmonad. The tour guide is very short and concise. The other documentation I've seen, such as ratpoison and stumpwm, are multi-paged (html page, not printed page) and so when it comes to keeping it up front where you can see it, it seems to be the best option. That's what I did for the first half hour (not even?) when I was getting accustomed to it. The others have multiple pages, and you're really learning new concepts. I mean they're good and all, but not for just getting your hands dirty. But that's just only a slight advantage. I think really either way, if you're determined, you can use any tiling window managers and come out just fine.
I used to use xmonad (hard drive issue, lost everything). I had dzen for my status bar, it had cpu usage, network speeds, current song playing in moc, weather, new email, pidgin messages (someone here wrote a C program), time, and date. Thankfully I posted up my xmonad.hs and dzen script here, so I can recover that. To launch programs I used dmenu. I plan to switch to either stumpwm or ratpoison, both of which have status bars. I'll see what I can do with them soon. I think I tried stalonetray or systray. Didn't really like it, don't remember why, but I ditched it.
As for simple terminal applications, that's been addressed several times, and there's a wiki page on it. I use moc to play music, bitlbee+weechat for im, vim+latex for word processing, gnuplot+coreutils for some graphing/data filtering, rtorrent for torrents, mutt+msmtp+fdm+bogofilter+spamassassin for email, shell-fm for a last.fm client, when as a calendar, and lftp for ftping. Keep in mind CLI apps aren't required when using a tiling window manager. I used pidgin until recently for chatting. Oh, for scrobbling with moc, you can use lastfmsubmitd, or I found a bash script that should be able to do the same thing. Haven't tried the script, but from what I can interpret, it should be fine, and is exactly what I wanted.
I don't remember actually having a ~/.xmonad directory until I started configuring...
Offline
Well. That would explain my problems indeed. Thank you Wra!th for the prompt, and very informative, response. I'm looking at some of the haskell configs now. Quick question: have you found haskell to be a problem as a language or is it more that it's just a bit harder to pick up? I consider myself to be a pretty quick learner when it comes to languages (I can see patterns pretty easily which is basically all a programming language is). I can't write anything very well, but I can modify things to my liking without things breaking...usually.
I was looking at urxvt as a terminal. It seems to definitely fit the bill pretty well. I've used it before and liked it quite a bit back in the Fluxbox days.
As far as MPD is concerned, I like being able to see what I'm doing with the music and whatnot (read: GUIs are good when you have a 90+ gig library of music). Are there any decent frontends that are light and would work well in that situation? I was looking at Sonata to fit that portion of my problem.
I've actually grown quite accustomed (and far too comfortable) with a systray over the years. I've installed Conky to monitor most things, but seeing some simple tray information, like the Wicd client and notifications of certain events, has become something that I generally rely on when doing work, so I guess a systray is rather important now that I've given more thought to it. I believe that all of the listed WMs allow for gaps so hopefully that will work out well. Now it's just a matter of configuration and figuring out which one I like.
Thank you again and if you think of anything else as far as comments or simple advice go, it will again be greatly appreciated.
EDIT: Thank you all for the information. Got sidetracked while writing this post and just saw the slew of messages that I missed out on. All of your help will go great lengths to getting me settled in and it was all very helpful. Hopefully things go well. If I run into problems, I'll be right back here. As usual, this just proves again that the Arch community is the best.
Last edited by zapyourit (2009-04-03 06:27:31)
Offline
Well. That would explain my problems indeed. Thank you Wra!th for the prompt, and very informative, response. I'm looking at some of the haskell configs now. Quick question: have you found haskell to be a problem as a language or is it more that it's just a bit harder to pick up? I consider myself to be a pretty quick learner when it comes to languages (I can see patterns pretty easily which is basically all a programming language is). I can't write anything very well, but I can modify things to my liking without things breaking...usually.
I don't like to learn haskell just to config my wm..that's the only problem I found with it.
As far as MPD is concerned, I like being able to see what I'm doing with the music and whatnot (read: GUIs are good when you have a 90+ gig library of music). Are there any decent frontends that are light and would work well in that situation? I was looking at Sonata to fit that portion of my problem.
Sonata is good yes. Try gmpc too.
I've actually grown quite accustomed (and far too comfortable) with a systray over the years. I've installed Conky to monitor most things, but seeing some simple tray information, like the Wicd client and notifications of certain events, has become something that I generally rely on when doing work, so I guess a systray is rather important now that I've given more thought to it. I believe that all of the listed WMs allow for gaps so hopefully that will work out well. Now it's just a matter of configuration and figuring out which one I like.
If it's a must then out of the mentioned wm's I'd go with xmonad. Try using my xmonad.hs as a base and make that use a tray like trayer or stalonetray.
I'd actually recommend starting with awesome. it works fairly well out of the box and the config files aren't too painful to mess with if you get the urge to. it's got a clock, a toolbar, a taskbar, and a notification area by default. open a terminal with window key+enter, run apps with window key+F1, and the man page is really helpful.
Yes..and you need to redo your config almost every new release
Last edited by Wra!th (2009-04-03 06:35:51)
MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Offline
I only want to add echinus to window managers
well, maybe it is not powerfull as xmonad, or awesome, but it's very simple to configure. maybe you want to try
as im, I use bitlbee
Offline
I found haskell quite different from the usual languages (c, lua, perl, ruby, etc..) I don't consider myself a slow learner, but it took me reading about 2 tutorials and some basic "intro to ..." to catch up with what's going on. [Eventually, I love that language.]
Nevertheless, if you only want to use it to configure xmonad, then just looking at a bunch of sample configs and combining them is usually enough. One thing to remember: whitespace at the beginning of lines matters - that's how haskell recognizes blocks of code.
Offline
I'll suggest awesome as well. In my opinion the config changing troubles are exaggerated. IF something changes (which is becoming more and more unlikely at this point in development), it's usually a piece of cake to fix. Especially so if you stay close to the default config, but which isn't really needed if you know how it works.
Don't let that scare you away from it.
Last edited by Gigamo (2009-04-03 11:59:07)
Offline
Another suggesting you start with Awesome - simply because it already comes with it's own status panel and menu, so you don't have to install (and configure) two or three separate programs to get a decent working tiled desktop. Awesome's main config file (rc.lua) is no harder to understand than Xmonad's, and comes with everything pretty much working from scratch.
For console-based programs i would recommend you look at these to start you off:
music player: mpd with ncmpcpp
file editor: vi/vim
file manager: use the commandline or mc if you have to
chat: irssi
Last edited by manx (2009-04-03 12:22:52)
Offline
I got "converted" to tiling WMs by using wmii, if I remember correctly. Make sure you have xmessage installed: the first time you start it up, you'll get a useful tutorial. It did a few things that wms I'd tried before it didn't do: it didn't automatically move my windows in unexpected places, it allowed me to have pretty much the layout I wanted, and it allowed me to switch focus between windows using directional buttons (instead of cycling through an arbitrarily-ordered list alt-tab style).
I've since moved on to StumpWM, but, as was noted above, maybe you should be convinced that you really want a tiling WM before graduating towards it.
Offline
tried musca as my first wm. It pwns.
Offline
As far as getting started with tiling WMs, I believe wmii to be the best. It's fairly simple and has a great first-run screen that helped me out immensely. After that, I moved on to dwm, and I'm still fairly happy with it.
[ lamy + pilot ] [ arch64 | wmii ] [ ati + amd ]
Offline
wmii -- awesome stacking mode for one thing.
It's small
ALTOUGH it uses a plan9 style filemanaging system for the setup. It's really sweet and makes interactive settings a breeze, only problem is that anyone that hasn't used it probably read this and wonder what tha hell i mean.
But the intro gives you a taste about it, and then you have to write stuff in tags or clents "ctl" to change them and "sel" allways mean the selected object in question. This wont make any sence before you read the intro wmii page and "man wmiir" plus the default wmiirc (located in /etc/wmii-hg/wmiirc)
And ooh yeah... don't use wmii from extra, use wmii-hg from aur
Offline
Currently, I'm writing to you from wmii. Really liking it so far. Very simple to set up and configure to personal preferences. Also, seems like it's one of the most extensible of the bunch. I've actually uninstalled awesome now. I used it for a while and it just didn't feel right for one reason or another. Maybe once they add in some more of what they have planned and decided on making compatible updates I will try it again. But until then, I really don't see the point to be honest, unless some people have very strong thoughts on the topic? Just throwing it out there.
I think that Musca also looks really nice, so I think I am giving that a go sometime soon. Any advice from those who have mentioned/use it?
Also, Wra!th thank you for posting your xmonad.hs file. I appreciate it. Copy/pasted and Xmonad has been willing to boot now, so that's good news overall.
Again, thank you all for your advice. Might be back some time in the near future about some questions I have, but I'm seeing if I can figure it out myself.
Offline
Also, I meant to ask: for those of you who do/have use(d) Xmonad, do you find that it's worth the ~400mb of space ghc takes up by itself? Or are there alternative compilers for haskell that could work in Xmonad that you've found?
Offline
Why don't you just uninstall GHC?
Anyway, 400mb isn't that much.
Last edited by SamC (2009-04-05 00:09:11)
Offline
Indeed, ghc isn't required, and if you really want to play around with configuring and seeing the result on the fly, 400mb is indeed not much.
You have to take into account that you'll at some point be pleased with what you configured, and you'll be capable of deleting ghc (until such time you need it again)
I'd do a +xmonad if you're still looking out. It teaches you a lot (not to talk about the one side-effect: haskell)
It's really extensible and configurable too, albeit I don't know wmii so I can't compare really.
Imho, it's the speed that makes me go xmonad
+ It's the only tile I did, and I somehow was pleased from the very first second.
My coding blog (or an attempt at it)
Archer start page (or an attempt at it)
Offline
Indeed, 400 mb is tiny and really not worth considering, but it also winds up weighing in heavier than any other software I have installed on a system that I'm trying to configure to be as light and fast as possible. Sadly, there are some programs (Exaile and OOo just to name 2) that I seemingly can't live without at this point so they live on in my hard drive.
My problem with ghc is that I like to tinker. A lot. Really bad actually as I wind up breaking things. But I can't help it in Arch where the system is so open to change. Thus, I have a feeling I would be playing with the config every so often, necessitating ghc. However, I am not counting Xmonad out by any means. Merely asking the question.
I've been enthralled with wmii however, which seems like a tough competitor to beat at this point. Installing the hg packages from the AUR as was advised as I write this. Hopefully all goes well.
Offline
I think that Musca also looks really nice, so I think I am giving that a go sometime soon. Any advice from those who have mentioned/use it?
Check out the sticky for Musca thread in the Community Contribution section. It has a lot of info. I also try to update the musca wiki page as and when I get time.
Last edited by Inxsible (2009-04-05 02:26:53)
There's no such thing as a stupid question, but there sure are a lot of inquisitive idiots !
Offline
OK. Just a quick update and a couple questions: I've come to love both Musca and wmii. I'm still getting used to Musca, but wmii has been working beautifully. Xmonad was, as said, too complex and difficult with haskell. I understand what it says, but I have a hard time using that knowledge to edit the config and incorporate new lines of code. So I have given up for now, which seems to be all for the better as I'm learning as I go in a different wm, so I will be better prepared if/when there is a next time.
Now, as for the questions... For those of you who run wmii, right now, when I Mod+a for the actions and select "wmiirc" (where I've configured some things myself), wmii just dies on me. It's as if it tries to run wmiirc but never completes it. All of the commands, and I mean all of them, from changing views and tags to even trying to get into the Actions menu, don't work. I have no idea why that's happening. Any ideas?
I'm completely lost. The wmii guide is not hugely helpful and the wiki is barren...
Thanks again for any help.
Offline
OK. Just a quick update and a couple questions: I've come to love both Musca and wmii. I'm still getting used to Musca, but wmii has been working beautifully. Xmonad was, as said, too complex and difficult with haskell. I understand what it says, but I have a hard time using that knowledge to edit the config and incorporate new lines of code. So I have given up for now, which seems to be all for the better as I'm learning as I go in a different wm, so I will be better prepared if/when there is a next time.
Now, as for the questions... For those of you who run wmii, right now, when I Mod+a for the actions and select "wmiirc" (where I've configured some things myself), wmii just dies on me. It's as if it tries to run wmiirc but never completes it. All of the commands, and I mean all of them, from changing views and tags to even trying to get into the Actions menu, don't work. I have no idea why that's happening. Any ideas?
I'm completely lost. The wmii guide is not hugely helpful and the wiki is barren...
Thanks again for any help.
That's probably because there's something wrong with the config.
Check the terminal output to see what line is buggy. You could also post your config in here so we have a look at it.
MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Offline
OK. Just a quick update and a couple questions: I've come to love both Musca and wmii. I'm still getting used to Musca, but wmii has been working beautifully. Xmonad was, as said, too complex and difficult with haskell. I understand what it says, but I have a hard time using that knowledge to edit the config and incorporate new lines of code. So I have given up for now, which seems to be all for the better as I'm learning as I go in a different wm, so I will be better prepared if/when there is a next time.
Now, as for the questions... For those of you who run wmii, right now, when I Mod+a for the actions and select "wmiirc" (where I've configured some things myself), wmii just dies on me. It's as if it tries to run wmiirc but never completes it. All of the commands, and I mean all of them, from changing views and tags to even trying to get into the Actions menu, don't work. I have no idea why that's happening. Any ideas?
I'm completely lost. The wmii guide is not hugely helpful and the wiki is barren...
Thanks again for any help.
After it dies on you, check the log files. /var/log/Xorg.0.log would be a good place to start. It will probably list the cause of death.
dmesg | tail
is another option which may give you some information. And finally like Wra!th mentioned, checking the terminal output can also be helpful.
Last edited by Inxsible (2009-04-07 06:18:43)
There's no such thing as a stupid question, but there sure are a lot of inquisitive idiots !
Offline
This is my wmiirc:
#!/bin/dash -f
# Configure wmii
wmiiscript=wmiirc # For wmii.sh
. wmii.sh
# Configuration Variables
MODKEY=Mod1
UP=k
DOWN=j
LEFT=h
RIGHT=l
# Bars
noticetimeout=5
noticebar=/rbar/!notice
# Colors tuples: "<text> <background> <border>"
WMII_NORMCOLORS='#000000 #c1c48b #81654f'
WMII_FOCUSCOLORS='#000000 #81654f #000000'
WMII_BACKGROUND='#333333'
WMII_FONT='-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)
WMII_TERM="xterm"
# Menu history
hist="$(wmiir namespace)/history"
histnum=5000
# Column Rules
wmiir write /colrules <<!
/gimp/ -> 17+83+41
/.*/ -> 62+38 # Golden Ratio
!
# Tagging Rules
wmiir write /tagrules <<!
/MPlayer|VLC/ -> ~
/Navigator:.*/ -> +1
/pidgin:.*/ -> +2
/exaile.*:.*/ -> +3
/evolution:.*/ -> +4
/urxvt-tabbed:.*/ -> +0
!
# Status Bar Info
status() {
echo -n $(uptime | sed 's/.*://; s/,//g') '|' $(date)
}
local_events() { true;}
wi_runconf -s wmiirc_local
echo $WMII_NORMCOLORS | wmiir create $noticebar
# Event processing
events() {
sed 's/^ //' <<'!'
# Events
Event CreateTag
echo "$WMII_NORMCOLORS" "$@" | wmiir create "/lbar/$@"
Event DestroyTag
wmiir remove "/lbar/$@"
Event FocusTag
wmiir xwrite "/lbar/$@" "$WMII_FOCUSCOLORS" "$@"
Event UnfocusTag
wmiir xwrite "/lbar/$@" "$WMII_NORMCOLORS" "$@"
Event UrgentTag
shift
wmiir xwrite "/lbar/$@" "*$@"
Event NotUrgentTag
shift
wmiir xwrite "/lbar/$@" "$@"
Event LeftBarClick LeftBarDND
shift
wmiir xwrite /ctl view "$@"
Event Unresponsive
{
client=$1; shift
msg="The following client is not responding. What would you like $
resp=$(wihack -transient $client \
xmessage -nearmouse -buttons Kill,Wait -print \
"$msg $(wmiir read /client/sel/label)")
if [ "$resp" = Kill ]; then
wmiir xwrite /client/$client/ctl slay &
fi
}&
Event Notice
wmiir xwrite $noticebar $wi_arg
kill $xpid 2>/dev/null # Let's hope this isn't reused...
{ sleep $noticetimeout; wmiir xwrite $noticebar ' '; }&
xpid = $!
Menu Client-3-Delete
wmiir xwrite /client/$1/ctl kill
Menu Client-3-Kill
wmiir xwrite /client/$1/ctl slay
Menu Client-3-Fullscreen
wmiir xwrite /client/$1/ctl Fullscreen on
Event ClientMouseDown
wi_fnmenu Client $2 $1 &
Menu LBar-3-Delete
tag=$1; clients=$(wmiir read "/tag/$tag/index" | awk '/[^#]/{print $2}')
for c in $clients; do
if [ "$tag" = "$(wmiir read /client/$c/tags)" ]; then
wmiir xwrite /client/$c/ctl kill
else
wmiir xwrite /client/$c/tags -$tag
fi
if [ "$tag" = "$(wi_seltag)" ]; then
newtag=$(wi_tags | awk -v't='$tag '
$1 == t { if(!l) getline l
print l
exit }
{ l = $0 }')
wmiir xwrite /ctl view $newtag
fi
done
Event LeftBarMouseDown
wi_fnmenu LBar "$@" &
# Actions
Action start
exec firefox-beta & pidgin & urxvt-tabbed
Action quit
wmiir xwrite /ctl quit
Action exec
wmiir xwrite /ctl exec "$@"
Action rehash
proglist $PATH >$progsfile
Action status
set +xv
if wmiir remove /rbar/status 2>/dev/null; then
sleep 2
fi
echo "$WMII_NORMCOLORS" | wmiir create /rbar/status
while status | wmiir write /rbar/status; do
sleep 1
done
# Key Bindings
Key $MODKEY-Control-t
case $(wmiir read /keys | wc -l | tr -d ' \t\n') in
0|1)
echo -n "$Keys" | wmiir write /keys
wmiir xwrite /ctl grabmod $MODKEY;;
*)
wmiir xwrite /keys $MODKEY-Control-t
wmiir xwrite /ctl grabmod Mod3;;
esac
Key $MODKEY-space
wmiir xwrite /tag/sel/ctl select toggle
Key $MODKEY-d
wmiir xwrite /tag/sel/ctl colmode sel default-max
Key $MODKEY-s
wmiir xwrite /tag/sel/ctl colmode sel stack-max
Key $MODKEY-m
wmiir xwrite /tag/sel/ctl colmode sel stack+max
Key $MODKEY-a
action $(wi_actions | wimenu -h "${hist}.actions" -n $histnum) &
Key $MODKEY-p
eval wmiir setsid "$(wimenu -h "${hist}.progs" -n $histnum <$progsfile)" &
Key $MODKEY-t
wmiir xwrite /ctl view $(wi_tags | wimenu -h "${hist}.tags" -n 50) &
Key $MODKEY-Return
eval wmiir setsid $WMII_TERM &
Key $MODKEY-Shift-space
wmiir xwrite /tag/sel/ctl send sel toggle
Key $MODKEY-f
wmiir xwrite /client/sel/ctl Fullscreen toggle
Key $MODKEY-Shift-c
wmiir xwrite /client/sel/ctl kill
Key $MODKEY-Shift-t
wmiir xwrite "/client/$(wmiir read /client/sel/ctl)/tags" $(wi_tags | wim$
Key $MODKEY-$LEFT
wmiir xwrite /tag/sel/ctl select left
Key $MODKEY-$RIGHT
wmiir xwrite /tag/sel/ctl select right
Key $MODKEY-$DOWN
wmiir xwrite /tag/sel/ctl select down
Key $MODKEY-$UP
wmiir xwrite /tag/sel/ctl select up
Key $MODKEY-Control-$DOWN
wmiir xwrite /tag/sel/ctl select down stack
Key $MODKEY-Control-$UP
wmiir xwrite /tag/sel/ctl select up stack
Key $MODKEY-Shift-$LEFT
wmiir xwrite /tag/sel/ctl send sel left
Key $MODKEY-Shift-$RIGHT
wmiir xwrite /tag/sel/ctl send sel right
Key $MODKEY-Shift-$DOWN
wmiir xwrite /tag/sel/ctl send sel down
Key $MODKEY-Shift-$UP
wmiir xwrite /tag/sel/ctl send sel up
#Personal Commands
Key $MODKEY-Shift-p
exec pidgin
Key $MODKEY-Shift-f
exec firefox-beta
Key $MODKEY-Shift-e
exec evolution
Key $MODKEY-Shift-m
exec exaile
Key Control-`
exec exaile -t
Key Control-PageDown
exec exaile -n
Key Control-PageUp
exec exaile -p
!
for i in 0 1 2 3 4 5 6 7 8 9; do
sed 's/^ //' <<!
Key $MODKEY-$i
wmiir xwrite /ctl view "$i"
Key $MODKEY-Shift-$i
wmiir xwrite /client/sel/tags "$i"
!
done
}
wi_events <<!
$(events)
$(local_events)
!
unset events local_events
# WM Configuration
wmiir write /ctl <<!
font $WMII_FONT
focuscolors $WMII_FOCUSCOLORS
normcolors $WMII_NORMCOLORS
grabmod $MODKEY
border 1
!
xsetroot -solid "$WMII_BACKGROUND" &
export WMII_FONT WMII_TERM
export WMII_FOCUSCOLORS WMII_SELCOLORS WMII_NORMCOLORS
# Misc
progsfile="$(wmiir namespace)/.proglist"
action status &
wi_proglist $PATH >$progsfile &
# Setup Tag Bar
IFS="$wi_nl"
wmiir rm $(wmiir ls /lbar | sed 's,^,/lbar/,') >/dev/null
seltag=$(wmiir read /tag/sel/ctl | sed 1q)
unset IFS
wi_tags | while read tag
do
if [ "$tag" = "$seltag" ]; then
echo "$WMII_FOCUSCOLORS" "$tag"
else
echo "$WMII_NORMCOLORS" "$tag"
fi | wmiir create "/lbar/$tag"
done
wi_eventloop
That's it. Trying it in the terminal didn't dump anything which I believe might have to do with the failure of anything happening...
Edit: changed some of the code. Testing the changes now.
Last edited by zapyourit (2009-04-08 03:03:05)
Offline