what is it? where do I get it? changelog? huh?

blackbox links
bb home
bb configurator
bb themes
bb tools

gnu/linux links
debian gnu/linux
debian packages
garrett's sources.list
linux kernel howto


version 0.8.5 --

  - fix bug in main.cc (| rather than ||).  Thanks to Roman Neuhauser!

  - fix bug in bbkeys.hh--increasing MaxInstructions to 100 for cthulhain

  - fix in bbkeys.cc -- XUngrabKey changed to use same call to find what
    screen we're on as the XGrabKey call 

  - fix in bbkeys.cc -- doing "xterm -e sh -c $command" rather than "xterm -e
    $command".  Thanks to Magnus Solvang for the bug report.  Also, changing
    hideous char* and snprintf() to ostrstream, YAY!!

version 0.8.4 --

  - add a sanity check to the removeWindow function. Basically, blackbox tells
    bbkeys when a window disappears, or is removed. If the window being
    removed was the last window blackbox specified as having the input focus,
    bbkeys now resets what it thinks has the input focus. This prevents the
    bug reproducable by iconifying the last window on a workspace, and then
    trying to maximize "nothing". [xOr]

  - cleaning up build again.  Rather than having 200 -DDEFINE_ statements
    in our compile lines, we use config.h (like normal people).  =:)  This
    very well may break stuff, but it looks good thus far.... [vanRijn]

  - adding AM_MAINTAINER_MODE to stop the ever-annoying "here, let me run
    aclocal for you again!!" idiocy of automake and friends [vanRijn]

  - fixing things for multi-head displays--replacing
    "getScreenInfo(0)->getRootWindow()," with
    "getCurrentScreenInfo()->getRootWindow(),"  So yes, bbkeys now has
    multi-head support.  Sort of.  You need to have a separate instance of
    bbkeys running against each head ("bbkeys -display :1"), etc.  cat
    complaints >> /dev/null.... [vanRijn]

  - removing kludgy C command-line configurator with much-improved perl script
    from Damien Tougas (thanks!!!) [vanRijn]

  - changing bbkeys.cc to look for bbkeysconf.pl rather than bbkeysConfigC

  - removing showAllWorkspaces from bbkeys.{bb,nobb} config file and making it
    an additional keybinding.  This allows two different ways of showing all
    open windows and navigating through them--one keybinding for the regular
    "NextWindow" variety (as in previous versions of bbkeys, and another
    keybinding, "NextWindowAllWorkspaces", that pops up the window list for
    navigation for windows open on all workspaces.  [vanRijn]

  - bugfix....  previously, bbkeys would ignore windows that had no name.  We
    now follow blackbox's lead (and follow blackbox's code) and create a name
    for it, "Unnamed".  Thanks to Damien Terrier for this bug report.

  - patch for allowing an alternate keybinding config file (thanks to Scott
    Moynes!) [vanRijn]

  - sync with blackbox for 0.61.2--attributes element Atom has changed to now
    include decoration state so that ToggleDecor() works. [vanRijn]

  - including patch from Sergey Vlasov for allowing use of Meta and Hyper
    modifiers, also try to get the correct Num_Lock and Scroll_Lock modifier
    mask from the X server rather than hard-coded.  I've not had tons of time
    to play with this, though I have made sure that it works on my laptop.
    =:) [vanRijn]

  - fix for RPM-building process... install gzipped man pages by default on
    RPM-based systems.  Thanks to Darryll for the bug report!!  =:) [vanRijn]

  - removing bbkeysconf and bbkeysConfigGtk *shudder* apps from
    chain-launching mode.  These babies are dead and let's just move on
    folks....  By keeping them in there, I'm afraid people will think it's
    okay to use them.  It's not.  They're WAY out of date.  Also, thanks to a
    smarter way of handling key grabbing configuration in bbconf, we don't
    have to hang bbkeys while keygrabs are being configured. [vanRijn]

  - adding logic to bbkeys to pass configurators correct command-line
    arguments so we load the rc-file that our user is running bbkeys with.

  - long-overdue documentation finessing, thanks to Roman Neuhauser for the
    patches and suggestions!  =:)  Also, adding CVS version id's to all source
    and documentation files, woot!  =:) [vanRijn]

  - cross-compilation patch from Bo Thorsen--moves -lX11 to LIBS [vanRijn]

version 0.8.3 --

  - changing external app launch order--we go bbconf, bbkeysconf,
    bbkeysConfigGtk, rxvt, xterm... *phew*

  - fix in stackmenu.cc (hopefully we got it this time?) to fix segfaults
    on some platforms due to screwy X stuff. *shudder*

version 0.8.2 --

  - patched for matrix-style workspace navigation, updating the 0.3.5 patch written
    by Markus Ottenbacher (m.ottenbacher@gmx.de) found at
    http://homepages.compuserve.de/meottenbacher/.  Include UpWorkspace,
    DownWorkspace, LeftWorkspace and RightWorkspace as WithAction() in your
    ~/.bbkeysrc, and enable the arrangement in rows and columns in your
    bbkeys.bb as well as in bbpager.bb (usually placed under
    /usr/local/share/bbtools/) to use this functionality.  Bill Beal 

  - fixed a bug due to an improper test for next and prev (test for key
    release).  next and prev might just be 0, so we can't do if (next)
    because the correct index of the grabSet.KeyMap might be 0 for either
    prevwindow or nextwindow keybinding and it would fail the test and not
    release the keyboard and not lower the window menu.

  - fixed a bug for the window list popup menu--sticky window bug where
    sticky windows would show up twice on their originating windows but not
    at all on the workspace that you switched from immediately prior to
    switching to the window where the sticky window is "homed"...  =:)

  - xOr's new "showAllWorkspaces" option lets you see every window that you
    have on any workspace with an indicator as to what workspace that
    window is living on....  Very sweet code.

  - fix for popup window menu...  Added "always on top" code so that it
    stays at top of window stack and won't let blackbox hide it with any
    other window (as occurs when auto-raise is enabled in blackbox).

version 0.8.1 --
  - bug fixin's--fixed annoying "un-iconify" feature when bbkeys did window
    cycling, thanks to halt, all else for pointing that one out....  Also,
    removed REPORT struct from resource.hh which only had auto_raise in it
    (not sure why it's been there, un-used all this time anyway)....

  - changed all "friend .*$" to "friend class .*$" to comply with more
    strict gcc versions....  Thanks to Jan Schaumann for this!

  - okay. stacked window cycling tweaks.  As a visual clue for the
    stacked-Cycling folks, we now set focus on cycled-through windows as we
    go, raising the window selected at the end of the cycle.  This sounds
    more confusing than it is.   This makes it possible to separate the new
    and improved cycling method from the popup menu. Oh, and hitting Escape 
    in the middle of cycling will return focus to the window that you 
    started from....

  - I've made it possible to turn off the visual menu for the new-and-improved
    stacked cycling method.  To do this, just put 
    "bbkeys.menu.showCycleMenu: False" (without the quotes, duh) into your
    ~/.bbtools/bbkeys.bb or ~/.bbtools/bbkeys.nobb file.  This will let
    bbkeys still use the new method, will set focus as you cycle through the
    stack, but won't actually raise the window you want until you tell it
    to by releasing your keys or hitting , and won't show the popup
    window list and cycle through the entries as you go.  Again, harder to
    explain than it is to use....

  - including README, ChangeLog, and AUTHORS in installed files list

  - including first man page files (W00T!!)  =:).  Thanks to Jan Schaumann,
    bbkeys now has man pages, baybee.  Installing now and including files
    in bbkeys.spec

version 0.8.0 --
  - BIG changes!!!  w00T!!!  There's some very significant improvements in
    this version, and as such, I'm calling this version 0.8.0 for various
      1) I feel like it
      2) I'm thinking we're about "there", and 0.8.0 sounds like more of a
      non-beta product than 0.3.8
      3) I feel like it   =:)

  - xOr (see below) has done some majorly good coding with bbkeys.  He's
    implemented a different window-cycling scheme that's more
    "Windows"-like (think  popup window with list of things you're
    cycling through)...  Verrrry slick.  Umm. Did I say Verrrrry?  
    Why, yes I did.  You are just going to have to see it to believe it.  Blackbox
    has just again become my favorite window manager for X, with the help
    xOr has given to me.  The window cycling methodology has changed, and
    believe me, this is a change for the better.  There's now two methods
    of window cycling--both use the same keybindings, so don't get yer
    panties tied in knots.  xOr has implemented a newer, better "old-style"
    window cycling, called linear cycling.  It's basically what
    blackbox/bbkeys has done up until this point, but with a few
    significant improvements.  But the really exciting new feature in this
    release of bbkeys is the other way--a "stacked" cycling method.  It
    makes much more sense than the old way.  And it's purtier, because you
    can see what you're window-changing to before you actually go there.
    And when you hit  (example keybinding--you can have it be
    whatever you want it to be), it goes back to the window you were on
    right before this one.

    It's way cool, uber-neato, and excellently implemented.  I'll expand on
    this more in README, so look there for more details.

  - xOr has also fixed a bug in LinkedList.cc (as posted to the blackbox
    mailing list) that affected how the windows were put into the cycling

  - I'm considering xOr a co-developer now (as long as he has the time and
    desire, of course), but we've a project available on sourceforge.net at
    http://sourceforge.net/cvs/?group_id=32563 .  Of course, this means
    that all the usual sourceforge advantages are there, like CVS access,
    etc.  The project is bbconf.sourceforge.net for the time being, so
    CVS access looks like this:

    cvs -d:pserver:anonymous@cvs.bbconf.sourceforge.net:/cvsroot/bbconf login
    cvs -z3 -d:pserver:anonymous@cvs.bbconf.sourceforge.net:/cvsroot/bbconf co bbkeys

    I've imported the bbkeys tree (0.8.0 will be pulled directly from it),
    and I've also imported a bbconf module.  bbconf will be the new
    all-in-one blackbox configuration utility (if I get some help).  =:)
    To get read-only access to it, do this...

    cvs -d:pserver:anonymous@cvs.bbconf.sourceforge.net:/cvsroot/bbconf login
    cvs -z3 -d:pserver:anonymous@cvs.bbconf.sourceforge.net:/cvsroot/bbconf co bbconf

  - adding ToggleDecor as an option to toggle ummmm, window decor.... (duh). 
    *** BIG HONKING NOTE ***
    This doesn't currently work.  =:\  The code is in bbkeys, but can't
    actually do anything until blackbox is changed to tell us what the
    decorated state of the window is.  Hopefully this will be included in
    blackbox soon....

  - changing order of configurator launch again, thanks to a bug report
    from David Lawrence Ramsey (I had " black" instead of "black")--so we
    now try rxvt before xterm, and rxvt should actually work now....

  - hopefully fixing strcasecmp issue for AIX boxen--it's in strings.h
    instead of string.h.  Adding check for strings.h....  PLEASE let me
    know if this doesn't actually fix anything.  I'd like to put this guy
    to bed....

  - Applying patches from Ben Jansens .  His comments
    are below....

      I've removed all the functionality from the wminterface class that bbkeys
      does not use, and reorganised the header files for wminterface and bbkeys,
      adding comments for all of the class members.  With this patch, bbkeys not 
      longer calls the blackbox cycling routines, but maintains its own list of 
      windows, and cycles them itself. One thing to note is that the cycling does 
      not occur in the same order as the buttons on the toolbar cycle. I personally 
      dont think this will be a big issue, and i think the new way is nicer. When a
      new window opens, its added to the list right *after* the focused window,
      so that hitting PrevWindow would take you back to the window that was
      previously focused.  


    * VERY nice work, Ben.  Thanks for your work! *

  - Bug squashing and fixing galore...  Thanks again to Ben for pointing
    these out.  The issue was that we were doing stuff to windows without
    making sure the window wasn't our root window.  Doh!  So now we make
    sure 1) we have a focus_window and 2) that focus_window isn't
    PointerRoot.  Hopefully that will do the trick....


version 0.3.6 --
  - Fixed slight bug in font-loading for label.font and frame.font.  As
		things were, we only looked for TitleFont (a bbtools-specific directive
		which most probably isn't in most style files), a bbkeys-specific font
		directive (which was less likely to be found).  I added to the search
		criteria toolbar.font, which for sure will be in every
		toolbox/bbconf-generated style file and is most probably in every other
		style file as well.  Long story short, fonts should now load according
		to the individual style used, rather than relying so heavily on
	- applied patch submitted from MrFab (Scott Garner for the irc-challenged)
		to manipulate window placement via keypress!!!  VERY clean and nice
		work, MrFab!!  And useful, to boot!  =:)
	- reworked and applied patch from Alex (dicerandom @ earthlink dot net)
		for keystroke-resizing of focused windows.  Very nice work, Alex!
		Thanks!!  =:)
	- reworked fork() section for configurator launch--based on Kyle
		Donaldson's idea....  We now try bbkeysconf, bbkeysConfigGtk, xterm,
		rxvt--in that order...  Thanks Kyle!
	- new and improved bbkeysConfigC--better functioning, disclaimer added
		since we trounce on whatever was in ~/.bbkeysrc, added printout of all
		available keygrabs now....

version 0.3.5 -- 
  - Doh!!  In the midst of the glorious bug-squashing that 0.3.4 offered, I
		introduced a new bug (just to see if anybody actually uses my code,
		erm, or something).  =:)  I was getting rid of all the strdups that I
		could and in the process forgot to replace it with a working solution
		for the ExecCommand part of bbkeys's functionality.  

version 0.3.4 --
  - updated Image.cc, Image.hh, BaseDisplay.hh to newest (0.61.0) blackbox
	  files to correct bug that reared its ugly little head when running on 
		SPARC boxen Ultra 5 (Bus Error).  Thanks to Tibor Simko for reporting
		this one....
	- many bug fixes and killing of leaks =:)  thanks to memprof and X
		man-page reading (shudder).  I found quite a few memory leaks (some
		that bbkeys inherited from the XEmacs code) and discovered some
		undocumented features that may not qualify as leaks, but the net result
		was that bbkeys could chew up RAM far more than he should.  So, the end
		result is that bbkeys now has far fewer memory problems.  I'm pretty
		sure that there are more buglets to be found, but that's for when I get
		bored again, I guess.  =:)  Thanks to Sean 'Shaleh' Perry for this
		buglet report (and others too).  =:)
	- updated bbkeysconf--couple of fixes for compiling on solaris....
	  - added -lX11 to the link line (should be there anyway)
		- changed a QString.left to a QString.at function call 
		- thanks to Bo Thorsen for these buglet-reports!  =:)

version 0.3.3 --
  - changes and updates (thanks to nyz for the help!!!) to change the 
	  communication Atoms between blackbox-0.60.1 and bbkeys (READ: YOU MUST

version 0.3.2 --
  - Weehee!!  Get along, little doggie!!  Or something....  Thanks to the 
    man, the myth, the legend, the zzzeek-meister, one of those irritating 
    little problems that I've never had enough interest in fixing has been
    fixed!!  You know the one--where you're going merrily along through your
    day, using bbkeys happily, when all of a sudden, things appear to have
    just stopped working altogether.  And then you start cursing that 
    darned bbkeys author, and in general, have a horrid day thereafter.  Well
    fear no more, little pilgrim--that "feature" has been hunted down and 
    wrestled to the ground, thanks to zzzeek (classic@io.com).  The 'feature'
    was one that I was never worried about--since it followed blackbox's 
    'feature' that did exactly the same thing.  What thing is that?  Why, 	
    I'm so glad you asked.  If you hadn't noticed before, if you have your 
    CapsLock, NumLock, or ShiftLock pressed (or any other funky modifier 
    key pressed), bbkeys stopped performing your key-grabs.  

    Well, anywho, I've rambled enough.  I'm going to have bbkeys by default
    work with any modifiers now.  If you want bbkeys to work the way it does
    now and stop grabbing keys when you have Caps/Num/ShiftLock pressed, 
    you'll have to change this line to True in your bbkeys config file 
    ($HOME/bbtools/bbkeys.bb, not ~/.bbkeysrc):

    bbkeys.honorModifiers:        False

version 0.3.1 --
  - *sigh* My next release is going to not even have a UI.  =:)  Okay, for 
    those in this world who run blackbox on a 12" monitor (*cough* talmage
    *cough*), or refuse to upgrade because -miniMe is toooooo big (*cough*
    luqin *cough), =:)  bbkeys now has a new run-time switch "-tinyMe" which
    will cause bbkeys to draw itself at the old 0.2.7 size.  

version 0.3.0 --
  - buglet fix in MakeWindow so we don't XMapWindow every time (thanks nyz!)
  - alrighty then, the -miniMe controversy continues.  kns mentioned an idea
    for a new miniMe look and I like it.  _I_ may even use -miniMe now.
    =:)  Here's the thing, I really don't care at all about -miniMe, since
    I use him at full-size.  If somebody wants to code for this to be a 
    configurable option (bbkeys.keyhole.size or bbkeys.keyhole.width, etc.),
    I'll be more than happy to look at it. 

version 0.2.8 --
  - included new Image classes from the latest blackbox source so luqin's 
    and r00tv's styles work.  =:)  Oh, it'll help other people too, but 
    they pested me first.
  - added Workspace9, 10, 11, and 12 to keygrabs and configurator

version 0.2.7 --

  - added MaximizeVertical and MaximizeHorizontal key-grabbability.  Don't 
    know why it didn't occur to me earlier.  =:)  nyz did all the hard work
    4 releases ago.

  - As of this release of bbkeys, I'm no longer going to support the gtk
    configurator (unless I get a WHOLE lot of of input to the contrary). 
    I've re-written the gui configurator in qt (thanks to luqin for the 
    beginnings of this) and let me tell you, it is a WHOLE lot easier to 
    work with qt2 than gtk.  Much, much cleaner.  You doubt?  

          (gideon@judea)[bbkeysConfigGtk/src]-% wc -l *.{c,h}   
              538 bbkeysConfig.c
              689 bbkeysConfigSig.c
              158 support.c
                7 bbkeysConfig.h
              139 bbkeysConfigSig.h
               57 support.h
             1588 total

          (gideon@judea)[bbkeys-0.2.7/bbkeysconf-1.1]-% wc -l *.{cc,hh}
              593 gui.cc
               24 main.cc
               27 myapplication.cc
               67 gui.hh
               23 myapplication.hh
              734 total

    734 lines of code versus 1588 makes me a happy, happy SE.  =:)

  - So, I'm pulling out the bbkeysConfigGtk directory from the bbkeys source
    tarball and in its place is bbkeysconf.  I'll also be regulaly 
    posting rpms of both bbkeys and bbkeysconf as new releases rear their
    ugly little heads, as well as one last RPM of bbkeysConfigGtk as well
    as the tarball for bbkeysConfigGtk if anybody just HAS to have the gtk
    version.  =:)

  - As a result of this, the -no[gtk] for bbkeys will change to -no[qt].
  - Slight buglet fix for bbkeys when he's in iconic mode to properly set 
    WM_ICON_NAME (Thanks to Mats Jonson for the bug-report.  =:) ) so bbkeys
    shows up as bbkeys and not "Unnamed" in blackbox's Icon list.  

version 0.2.6 --
  - Weehee!!!  Much bug-squashing release!!!
  - added ability for bbkeys to minimize itself (right-click on bbkeys's
    "close" button).  This should satisfy those of us who would like to not
    see the beautiful little application I wrote and just use it.  *sniff*  =:)
  - added "-iconic" switch, so bbkeys can be launched in minimized mode.
    Again, *sniff*  Nobody likes my pretty window.  =:)
  - fixed a few undocumented features...
    -- bbkeys queued up all keystroke combos while external gooey configurator 
       was running and then did then all at once, really quick-like when you
       came back from the configurator.  This tended to annoy my users.  =:)
    -- bbkeys wasn't releasing grabbed keys before it launched the
       configurator, so the configurator wasn't receiving any of the previously
       grabbed keys. XSync(False) does wonders.  =:)
  - updated bbkeysConfigGtk to allow configuration of ExecCommand directives.

version 0.2.5 --
  - erm.  forgot to write in this for a while. =:)
  - took out timer implementation for ~/.bbkeysrc changing -- this should fix
    the abnormally high CPU/MEM usage that bbkeys has shown -- and replaced it
    with a virtual function call to CheckConfig out of BaseDisplay.cc.
  - thought about changing the configurators, then changed my mind.  =:\

version 0.2.3 --
  - fix for bbkeys not pickup up anything for its frame color/texture
    (thanks to luqin for the patch. =:) )

version 0.2.2 --
  - added ExecCommand feature so users can define programs to execute with
    a given keystroke. Syntax is as follows: 

    KeyToGrab(F1), WithModifier(Mod1), WithAction(ExecCommand), DoThis(PROGRAM)
    where PROGRAM is whatever you want to launch.  PROGRAM must be in your PATH
    if it is not given with a path. (duh) =:)

  - improved the logic (hopefully) surrounding resource loading.  Took 
    loadKeygrabs out of reconfigure() (which gets hit on every Expose event)
    which should improve bbkeys's performance.  Also, apparently I've never 
    put in the code that I thought I did which checks ~/.bbkeysrc for changes.
    That should work correctly now.

version 0.2.1 -- 
  - fixed several style issues.  

  - fixed the bug with having two "-n" switches. =:)  now, "-no[gtk]" is the
    way to tell bbkeys to launch the xterm-based conflagurator

  - re-coded bbkeys' internals (made them much more intuitive and easy to read).
    bbkeys uses 3 basic objects: Window's, GEOM(etry objects), and Pixmap 
    objects. The Windows are physical units of space that X communicates with.
    The GEOM objects are pretty self-explanatory, x, y, height, width.  And
    the Pixmap objects contain the image that is mapped onto the window itself.
    It goes like this:
    Windows:      GEOMs:         Pixmaps:           resource->objects and what  
                                                resources bbkeys uses for them
    win_title     geom_title     pix_title             label.texture
    win_back      geom_back      pix_back              frame.texture
    win_closeBtn  geom_closeBtn  pix_closeBtn          button.texture
    win_configBtn geom_configBtn pix_configBtn         button.texture 
                                 pix_pressedBtn        button.texture_pressed
  - fixed style files in data/ (silly me, I forgot to change them over from 
    bbpager's style files. )  Extra-special thanks to sourceo for pointing 
    this little bit to me and reminding me to put it in the ChangeLog =:)

version 0.2.0 -- 
  - got rid of all the old bbws code base from bbkeys and ported the whole 
    darned thing to kns's bbpager-0.2.5-alpha code base.

version 0.1.4 --

  - added "-mini-Me" switch =:) for those people *cough* sissies *cough* who
    complain about bbkeys' size.  So size DOES matter.... erm, anyway, if 
    launched with the "-mini-Me" option, bbkeys will draw a cute little window
    10x10 in size (or whatever I feel like, dangit) containing just the button
    to launch the configurator, instead of the regular, full-blown window.  No 
    exit button for YOU!  =:)  Let me know if this doesn't suit you....

  - improved documentation of sorts.  Ugly habit, this documentation stuff. If
    you look in README, you'll now see all of the commands that bbkeys will
    think about obeying. If it feels like it.  And if you ask really, really



Memorable Quotes
the previous version of bbkeys which tunneled kinetic energy through the ps2 port into the fingertips of the user was obviously FAR SUPERIOR to this BLOATED and KLUDGED UP version which you seem so ready and willing to propogate. I know not your ULTERIOR MOTIVES behind this, but I'm pretty sure they have something to do with COMMUNISM and LONG HAIR. In situations such as this, I can only say one thing... time to Fork the Code(tm).


this site based heavily on (ripped off from) a design by Greg Sanders (ElCoronel)

bbkeys, a subsidiary of the mythical movingparts.net companies