putting ToggleDecor back in properly for blackbox 0.61.2 release
[bbkeys.git] / README
bloba8b787379ce5b0ed32b2b80a9a28b2a4d9bc2acb
1 2001-08-03...
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
53   suprised.
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,
93     do let me know. =:)
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,
99     for example's sake:
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!!')
117     It's that easy.  
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....
135      Minimize
136      Raise
137      Lower
138      Close
139      Workspace1
140      Workspace2
141      Workspace3
142      Workspace4
143      Workspace5
144      Workspace6
145      Workspace7
146      Workspace8
147      Workspace9
148      Workspace10
149      Workspace11
150      Workspace12
151      NextWorkspace
152      PrevWorkspace
153      NextWindow
154      PrevWindow
155      ShadeWindow
156      MaximizeWindow
157      StickWindow
158      ExecCommand
159      MaximizeVertical
160      MaximizeHorizontal
161      NudgeRight
162      NudgeLeft
163      NudgeUp
164      NudgeDown
165      BigNudgeRight
166      BigNudgeLeft
167      BigNudgeUp
168      BigNudgeDown
169      HorizontalIncrement
170      VerticalIncrement
171      HorizontalDecrement
172      VerticalDecrement
173      UpWorkspace
174      DownWorkspace
175      LeftWorkspace
176      RightWorkspace
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.
208 Thanks to:
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.