Imported Upstream version 0.70.1

-- AUTHORS for Blackbox - an X11 Window Manager
Current Authors:
Brad Hughes <bhughes at>
Sean 'Shaleh' Perry <shaleh at>
Interim author for the 0.61.x series:
Jeff Raven <jraven at>
Current Contributors:
Ben 'xOr' Jansens <xor at>
- metric tons of code patches
John Kennis <jkennis at>
- bbpager, ideas, and support
Jason 'vanRijn' Kasper <vR at>
- bbkeys, ideas, support
Chris Mecca <flip at>
- use of his irix machine for testing
Dale P. Smith <dsmith at>
- bsetroot now sets xrootpmap_id atom
Matt Wilson <mwilson at>
- for noticing all of the little things
nls contributors:
Mads Martin Joergensen <mmj at>
- Danish (da_DK)
Jan Schaumann <jschauma at>
- German (de_DE)
Adriano Varoli Piazza <adrianovaroli at>
- Spanish (submitted as es_AR, ES and MX)
Duret Bertrand <bertrand.duret at>
- updated French (fr_FR)
Bodnar Istvan <piggy at>
- Hungarian (hu_HU)
Luca Marrazzo <marra.luca at>
- Italian (it_IT)
SATO Satoru <ssato at>
- Japanese (ja_JP)
Hyun Suk Noh <tzesti at>
- Korean (ko_KR)
Artis Trops <hornet at>
- Latvian (lv_LV)
Wilbert Berendsen <wbsoft at>
- Dutch (nl_NL)
yvind Stegard <oyvind.stegard at>
- Norwegian (no_NO)
Wojciech Krygier <wkrygie at>
- Polish (pl_PL)
Ciprian Popovici <ciprian at>
- Romanian (ro_RO)
Michail A. Rusinov <one at>
Dmitriy N. Rusinov <rusinov at>
- Russian (ru_RU)
Marian Andre <andre at>
- Slovakian (sk_SK)
Ales Kosir <ales.kosir at>
- Slovenian (sl_SI)
Volodymyr M. Lisivka <lvm at>
- Ukrainian (uk_UA)
Wang Tiejun <wtj at>
- Chinese (zh_CN)
Moto Chen <han_yi_chen at>
- Taiwan Chinese (zh_TW)
Past Contributors:
Jeffrey Sean Connell <ankh at>
- debugger class code (ommited from sources)
Frank Belew <frb at>
- dgradient code
Scott Garner <mrfab at>
- suggestions, bug reports and beta testing (*the* beta moron)
David Doan <ddoan at>
- testing of 8bpp code
Mark Seward <illuzion at>
- beta testing, bug reports and 32bpp testing
Keith Bolland <prime at>
- beta testing, bug reports and suggestions
James Spooner <spoons at>
- beta testing, bug reports
Fred Knieper <derf at>
- beta testing, bug reports
Steve Udell <hettar at>
- beta testing, bug reports, questions (very good ones)
Gregory Barlow <barlowg at>
- bug reports and patches/suggestions (original middle click advocate)
Dyon Balding <dyon.balding at>
- patch for Smart(er)Placement window placement
Mike Cole <mike at>
- co-author/hacker of (local LUG buddy)
John Kennis <jkennis at>
- author of bbtools/beta testing/bug reports
Wilbert Berendsen <wbsoft at>
- author of blackbox/bsetroot manpages
(Brad's original message):
I would also like to thank the creators of WindowMaker. Reading the existing
code has helped me immensely, and the BImage class follows the RImage data type
very closely (the 8bpp code and dithering code was based off of WindowMaker's
ICCCM Compliance: Version 2.0
Section 4: Client to Window Manager Communication
4.1.2 Client Properties:
WM_NAME: supported
WM_ICON_NAME: supported
WM_NORMAL_HINTS: supported
WM_HINTS: supported
WM_CLASS: unused
WM_PROTOCOLS: supported
WM_TAKE_FOCUS: supported
4.1.3 Window Manager Properties:
WM_STATE: supported
WM_ICON_SIZE: NOT supported
4.1.4 Changing Window State: supported
4.1.5 Configuring the Window: supported
4.1.6 Changing Window Attributes: supported
4.1.7 Input Focus: supported
4.1.8 Colormaps: NOT finished
Only the top-level window's colormap is installed when the
window is focused. As mentioned above, WM_COLORMAP_WINDOWS is
not (yet) supported, neither is the WM_COLORMAP_NOTIFY
client message.
4.1.9 Icons: PARTIAL
The icon_pixmap field of the WM_HINTS property is ignored.
The icon_window field of the WM_HINTS property is also
ignored, which appears to be in violation of the ICCCM.
4.1.10 Pop-up Windows: supported
4.1.11 Window Groups: supported
4.3 Communication through Selections: NOT supported
Section 5: Session Management
5.2 Window Manager Support: NOT supported
Blackbox does not (yet) support the X11 Session Management
Protocol, and as such does not work in such an environment.
EWMH Compliance: Version 1.3 (draft)
Section 3: Root Window Properties (and Related Messages)
_NET_SUPPORTED: supported
_NET_CLIENT_LIST: supported
_NET_WORKAREA: supported
Section 4: Other Root Window Messages
_NET_CLOSE_WINDOW: supported
Section 5: Application Window Properties
_NET_WM_NAME: supported
_NET_WM_ICON_NAME: supported
_NET_WM_DESKTOP: supported
_NET_WM_WINDOW_TYPE: supported
_NET_WM_STATE: supported
_NET_WM_STATE_MODAL: supported
_NET_WM_STATE_ABOVE: supported
_NET_WM_STATE_BELOW: supported
_NET_WM_ACTION_MOVE: supported
_NET_WM_STRUT: supported
_NET_WM_ICON: NOT supported
_NET_WM_PID: NOT supported
_NET_WM_USER_TIME: NOT supported
Section 6: Window Manager Protocols
_NET_WM_PING: NOT supported
-- ChangeLog for Blackbox 0.70.x
Changes from 0.70.0 to 0.70.1:
- fix compilation on OpenBSD and Mac OS X
- documentation updates to data/
- fix bt::Timer to make sure it still works after daylight-savings
- fix horizontal text alignment by adding a small indent to all text
- fix sunken gradient rendering: the colors are no longer inverted,
and the correct bevel is drawn
- add bt::XDG::BaseDir, which is an implementation of the basedir-spec version 0.6
- make bt::Pen able to recover from cache faults
- silence messages from bt::PixmapCache about the cache maximum
being exceeded
- add bt::Rect::inside(), which ensures that one rectangle is inside
the other
- fix bt::Resource to do nothing if filename arguments are empty
- fix bt::Resource::merge() to stop overriding existing entries (it
should only add new ones)
- add bt::Texture::textureResource() overload that returns a default
texture if the resource cannot be found
- add bt::dirname(), which returns the directory part of a file path
- add bt::mkdirhier(), which is equivalent to
'mkdir -m mode -p path'
- add bt::tolower(), which returns a string with all characters
- add the "Center Placement" window placement policy, which places
all new windows in the center of the screen
- add "Shade Window with Mouse Wheel" and "Toolbar Actions with
Mouse Wheel" configuration options
- add window-to-window snapping support. This feature is off by
default, you need to set session.windowSnapThreshold to a positive
number in your ~/.blackboxrc.
- add support for piped menus. The output of a command can be used
to create the blackbox menu. This is done by prepending the pipe
character, |, to session.menuFile in ~/.blackboxrc or to [include]
- [nop] menu entries are now drawn disabled
- fix "Focus Last Window on Workspace" behavior to stop preferring
windows that occupy all workspaces
- window placement takes windows with Desktop and Dialog types into
consideration and does the appropriate thing (instead of placing
them normally)
- remove 1 pixel gaps between windows when doing smart placement
- allow users to override the style's rootCommand in their
- fix default colors used by blackbox when no style is found
- allow the Toolbar to be raised and lowered with
Alt+LeftMouseButton and Alt+MiddleMouseButton, respectively
- fix maximized+shaded windows from disappearing when restarting
- each window's windowmenu can be accessed now with
- fix fullscreen support to ignore aspect ratios set by applications
(specifically, this should fix movie players that are currently
displaying 16:9 video on a 4:3 screen)
- fix support for _NET_MOVERESIZE_WINDOW, normally sent from pagers
- fix focus problems caused by applications that try to fake
fullscreen by setting focus to an override-redirect window
(e.g. rdekstop)
Changes from 0.65.x to 0.70.0:
This is a major update resulting from a long development cycle... the
list below is a general list and does not cover all changes in detail.
- introduced a utility library (libbt) for aiding in writing
small blackbox oriented applications
- all menus are now proper popup menus, with keyboard navigation
- complete EWMH support
- Xft support has been added to support anti-aliased fonts
- support for texture borders has been added... any texture can now
have a border of arbitrary width and color
- ~/.blackboxrc is no longer written on exit or restart. Instead it
is written whenever a change is made. This means the rc can be
edited while Blackbox is running (finally).
- support for always-on-top and always-on-bottom has been added
- support for fullscreen windows has been added
- support for all EWMH window types has been added (e.g. desktop
windows, dock windows, dialogs, etc.)
- support for window groups has been added
- support for transient windows has been improved
- it is now possible to completely disable the toolbar
- when the toolbar and slit are no longer in use, they are
destroyed... they will be recreated when needed
- the style file format has changed. a new utility, bstyleconvert,
can be used to convert older 0.65.0 styles to the 0.70.0 format
- the format of ~/.blackboxrc has changed. Blackbox will
automatically convert to the new format.
- both the look and feel have been updated, feedback is encouraged
This diff is collapsed.
This diff is collapsed.
ChangeLog for 0.51.x
Changes from 0.50.5 to 0.51.0:
- new default theme, shows off new gradients (see below)
- many themes updated to show off new menu bullet configuration
- added new source file it offers an easy way to connect to
an X display and setup screen info, this was done to make life easier
for John Kennis, the author of the bbtools. and Image.hh have
been modified to use classes from this abstraction, so that drop in
replacements are all that is necessary to update the bbtools image code.
- configurable menu bullet... 2 new resources for in your style file:
menu.bulletStyle: (round|triangle|square|diamond|empty)
menu.bulletPosition: (left|right)
- new style resource for setting the borderWidth on menus, client windows and
the buttons/frame/handle/titlebar... the default theme uses a borderWidth
of zero... it's pretty neat
- udpated Image code... blackbox now supports 8 types of gradients (thanks
to in exchange for helping him get the diagonal gradient
code from blackbox into kde, kde gave me the source to their new gradients)
the 8 gradients are:
diagonal, vertical, horizontal, crossdiagonal, pipecross, elliptic,
pyramid, rectangle
use them just like you would normally (ie. raised elliptic gradient bevel1)
- merged John Kennis' patch for notifying KDE modules of windows that are
- new geometry window that is displayed when a window is moved/resized
- cleaned up code for detecting slit apps
- window stacking code changed to keep menus above windows, and to keep the
slit raised when the toolbar is raised
- fixed compiler error from gcc 2.95 about frame.frame in several places
- fixed some bugs with shaped windows that set decorations via MWM hints,
and also fixed bugs with such windows changing their shape
- more complete ICCCM compliance, default window gravity is now NorthWest
instead of Static...
- focus code revamped... window focusing is alot faster and simpler, i
mimicked the way TWM does it's focusing... proved much faster
- the window menu always has "Kill Client" as an option now
- fixed window stacking for windows that have multiple transients (like
- smartplacement from 0.50.4 has been reinstated... i quickly grew tired of
waiting on windows to be placed with the old version (if you like the way
0.50.5 did it... send me an email and i'll consider making it an option)
- added some new signal handling code (using sigaction, if available on your
- fixed some bugs with KDE support... this makes bbpager behave properly
- workspace editing via the toolbar has been made a little nicer with the
new focus code... right clicking on the workspace label will put you into
edit mode, but no windows can be focused until you leave edit mode...
ALSO... the window that had focus when you entered edit mode will have the
focus returned to it after editing is finished
- added new option to blackbox... -rc <filename> will read <filename> instead
of .blackboxrc for it's base configuration
- the option for opaque window moves has been moved from the stylefile into
.blackboxrc... set the session.opaqueMove: resource to True or False,
depending on what you want
- general namespace cleanups... just stuff to make maintaining the code a
little easier...
- any form of "beta" has been removed from the version number for 0.51.x
i am declaring this series as "stable" so that i can begin a major overhaul
of blackbox, which will be done with John Kennis and Jason Kasper, two
very sharp guys that think the same way i do ;)
This diff is collapsed.
* fixed a bug with the bsetroot code that prevented compound commands from
being executed properly (only applies to 0.61.*).
* various bugfixes.
* bsetbg now uses the bsd license.
* bsetbg is now completely sh compliant, and no longer uses bash.
* removed internal default configuration in favor of:
* added the ability to generate a config file on the fly if one doesn't already exist.
* added support for -display to be passed to bsetroot. bsetbg now fully supports
all of bsetroot's options.
* made the error messages smart.
* if one of the variables in the configuration file contains an error, bsetbg will still
work perfectly unless it is required to use the faulty variable (in which case it
tells you what you did wrong).
* bsetbg will check for the existence of the specified image application in each of its
config variables.
* massive cleanup and optimization.
* rewrote most of the script to handle seperate apps for each config value.
* configuration file is consequently in a different format.
* fixed stupid bugs.
* fixed a bug that caused a crash when bsetbg tried to read a filename containing spaces.
* rewrote info function to make it even smarter.
* the end user hath spoken. bsetbg shall hereafter read configuration values
from one file and one file only, ~/.bsetbgrc.
* more error handling.
* fixed a bug that caused a crash when an image was specified without any arguments.
* bsetbg no longer checks for a configuration file when passing arguments to bsetroot.
* fixed up the -app stuff so that you can specify what the fallback action will be
(-center, -tile, or -full).
* added values for qiv to the sample.config.
* made -info a lot smarter than it used to be.
* no more support for ~/.bsetbgrc. it caused uneeded complication.
* added support for bsetroot.
* added the -app flag.
* fixed up the error checking.
* added -info flag to display current configuration values.
* added external configuration files.
* i don't remember back that far
-- INSTALL for Blackbox - an X11 Window manager
Compilation and Installation:
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory in the
Blackbox source tree.
Finally, it creates a shell script `config.status' that you can run
in the future to recreate the current configuration, a file
`config.cache' that saves the results of its tests to speed up
reconfiguring, and a file `config.log' containing compiler output
(useful mainly for debugging `configure').
If you need to do unusual things to compile Blackbox, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the blackbox mailing list so they can be considered
for the next release. If at some point `config.cache' contains
results you don't want to keep, you may remove or edit it.
The file `' is used to create `configure' by a program
called `autoconf'. You only need `' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Type `make install' to install the programs and any data files and
4. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'.
Compilers and Options:
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like