3 - This hasn't been updated in a LOOONG time, so I'll do so now. Some
4 exciting new features have been added to bbkeys with this release
5 (0.8.0), and I'll try to explain one of them here. By default, bbkeys
6 will now window-cycle MUCH better. Of course, all keybindings are
7 user-configurable as before, and whatever keys you were using before for
8 PrevWindow/NextWindow will still work--they'll just work better.
10 xOr has helped me considerably (HUGE THANKS AGAIN, xOr!!) with this
11 release, and one of the new features that we added was a "stackedCycling"
12 methodology to window-switching. To turn off this incredibly GOOD
13 feature (although I have NO idea why you would want to), put this in your
14 bbtools/bbkeys config file (no, not ~/.bbkeysrc--this is the other one
15 that's by default looked for at ~/.bbtools/bbkeys.bb or
16 ~/.bbtools/bbkeys.nobb)....
18 ! set this to false to use the linear style of window cycling
19 bbkeys.menu.stackedCycling: False
21 Again, why you'd want to do that is beyond me, because there's SO much
22 more benefit to letting bbkeys do things the way it wants to--the new
23 way. But if you're absolutely dead-set against progress, then put that
24 in. What you'll then be using is another improvement--a "linear" cycling
25 method. This will look the same as the old blackbox/bbkeys window
26 cycling method, but will act a little bit better and make more sense. It
27 will, for instance, put a newly-created window into the cycling stack
28 immediately after the currently-focused window, so you just have to
29 "alt+tab" to it, rather than having to go all the way around the stack.
31 As for the new method for cycling windows... When you hit your
32 NextWindow keybinding (mine's <alt+tab>), a window menu will pop up and
33 stay up until you release your PrevWindow/NextWindow keys. This allows you
34 to navigate through the window list (only showing the windows on the current
35 workspace, but INCLUDING STICKY WINDOWS!!), and then release your keys
36 when you have the window hilighted that you want to switch to. You can
37 go backwards or forwards through the list, by using your NextWindow and
38 PrevWindow keys. You can also make the pop-up window menu go away by
39 hitting <Escape>, or if you want, you can select the window currently
40 hilighted with <Return> or <Enter>. What this last little feature also
41 means is that if you have only one key bound to PrevWindow or NextWindow
42 (i.e. using F11 to cycle forwards and F12 to cycle backwards), you can
43 keep cycling backwards/forwards, and then when you've hilighted the
44 window you want, just hit <Return>, or <Escape> to cancel.
46 But that's not all!! With this new cycling scheme, the window list stack
47 will be re-organized when you cycle to a new/different window. The
48 window that you had previously focused is now right below the one you now
49 have focused. So you can switch back and forth between windows with a
50 simple <alt+tab> (or whatever you choose for your NextWindow keybinding.
52 I guess that's about it. Give it a try. I think you'll be pleasantly
56 -----------------------------------------------------------------------------
58 -- README for bbkeys, a general XWindow keygrabber, meant to be a working
59 -- example of a better window-hinting scheme with blackbox.
61 One thing to note on the tool that may seem odd to the user, but... (well,
62 frankly, I didn't see you helping me write this application.... =:) ) and
63 that would be how I handle the configuration tool launch. As it stands
64 right now, when the user clicks the key-hole button to re-configure the
65 key-grabs, bbkeys will freeze itself until the re-configuration tool
66 (explained below, Mr. Impatient) exits. The problem that this is solved by is
67 that I didn't want to dump all keygrabbings in-between configuration sessions.
68 I either freeze bbkeys until the config-tool exits or I drop all keygrabbings
69 so the configuration tool can re-grab those keys. Subject to change due to
70 user-feedback, of course....
72 As for the tool itself, it's a fairly trivial thing to write a keygrabber, and
73 it's a real cinch when you don't have to worry about users muddling about with
74 YOUR windows, etc. But such is life. So here's the way it works: bbkeys will
75 pick up its style-settings from the same places that the other bbtools does.
76 But its key-grabbings come from $HOME/.bbkeysrc. There are several avenues
77 open to the user to set any key-grabs that the user wishes.
79 -[ First is the qt-tool that is included inside ./bbkeysconf. I'd
80 like to get this thing used more than the other two methods, but I'm
81 also very aware that many users use blackbox because of the fact that
82 they don't like big, bloated things, and as such,
83 they most probably don't have qt on their boxes. Oh, and on this
84 qt-conflaguration tool, it's not built by default, so if you want it
85 (come on, you know you want it =:) ), you'll need to 'cd bbkeysconf'
86 and do a `make` followed again up by a `make install` as root.
88 -[ bbkeys can be launched with the -noqt option and whenever the little
89 reconfigure button (the key-hole) on bbkeys is clicked, bbkeys will
90 launch a very simple interactive rc-file generator (written in C) inside
91 of an xterm. I'm assuming even the anti-big-bloated-things-people
92 have those luxuries on their boxen. If this is an incorrect assumption,
95 -[ Third is manually editting $HOME/.bbkeysrc. The format is very easy,
96 and it consists of lines describing the Key to grab, the modifier to
97 grab the key with (if any, or "None" if none), and the action to
98 perform. My $HOME/.bbkeysrc file is as follows,
101 KeyToGrab(m), WithModifier(Mod1), WithAction(Minimize)
102 KeyToGrab(Up), WithModifier(Mod1), WithAction(Raise)
103 KeyToGrab(Down), WithModifier(Mod1), WithAction(Lower)
104 KeyToGrab(F4), WithModifier(Mod1), WithAction(Close)
105 KeyToGrab(1), WithModifier(Mod1), WithAction(Workspace1)
106 KeyToGrab(2), WithModifier(Mod1), WithAction(Workspace2)
107 KeyToGrab(3), WithModifier(Mod1), WithAction(Workspace3)
108 KeyToGrab(4), WithModifier(Mod1), WithAction(Workspace4)
109 KeyToGrab(Right), WithModifier(Control), WithAction(NextWorkspace)
110 KeyToGrab(Left), WithModifier(Control), WithAction(PrevWorkspace)
111 KeyToGrab(Tab), WithModifier(Mod1), WithAction(NextWindow)
112 KeyToGrab(ISO_Left_Tab), WithModifier(Mod1+Shift), WithAction(PrevWindow)
113 KeyToGrab(F2), WithModifier(Mod1), WithAction(ShadeWindow)
114 KeyToGrab(F10), WithModifier(Mod1), WithAction(MaximizeWindow)
115 KeyToGrab(F1), WithModifier(Mod1), WithAction(ExecCommand), DoThis(xterm -fn sabvga -bg black -fg lightyellow -title 'vanRijn@movingparts_baybee!!')
119 Whichever avenue you choose, bbkeys will check for a change in its .bbkeysrc
120 file every 10 seconds or so, so it'll pick up any changes you've made to it.
122 Is it perfect? Absolutely not.
124 Will it core-dump all over your lap and puke on your shoes? Hopefully not.
126 Are there bugs? Oh, you betcha.
128 Do I want to know about them there bugs? Yah, for sure.
130 Are there things that I'm still planning to do? Ayup (that's what TODO is for).
132 -------------------------------------------------------------------------------
133 Ye olde liste of bbkeys window-commands....
179 ... more to come, I'm sure....
180 -------------------------------------------------------------------------------
182 -- Copyright (c) 1999-2001 by Jason Kasper
183 -- parts Copyright (c) 1998-1999 by John Kennis
184 -- parts Copyright (c) 1997,1998 by Brad Hughes.
186 -- This program is free software; you can redistribute it and/or modify
187 -- it under the terms of the GNU General Public License as published by
188 -- the Free Software Foundation; either version 2 of the License, or
189 -- (at your option) any later version.
191 -- This program is distributed in the hope that it will be useful,
192 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
193 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
194 -- GNU General Public License for more details.
196 -- You should have received a copy of the GNU General Public License
197 -- along with this program; if not, write to the Free Software
198 -- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
200 -- (See the included file COPYING / GPL-2.0)
203 The files Image.cc (.hh) are taken from the Blackbox,
204 only one class-name was changed.
206 The files LinkedListed.cc (.hh) are taken from Blackbox without any change.
210 Brad Hughes <bhughes@tcac.net>
211 For writing the Blackbox Windowmanager (and with this a great deal
212 of the code for this application).
214 John Kennis <j.m.b.m.kennis@ele.tue.nl>
215 For writing the bbtools that I shamelessly snarfed
217 The Windowmaker guys for the great examples of key-code grabbing.