Release candidate status:
The new xoblite bb5 documentation is still
very much a work in progress, i.e. not yet
finalized but will be updated continuously.
xoblite



Introduction
Downloads

Configuration

Design
   - Styles
   - Themes
   - Wallpapers

Menu
Toolbar
Dock
Console
Desktop
Hotkeys
Workspaces
Plugins
Global

Screenshots
Forums
Chat

Changes
License
GitHub
Contact



Introduction

Welcome to xoblite.

xoblite is an advanced "extended shell" for Microsoft® Windows® 10, part of the Blackbox for Windows family.

Current version: xoblite bb5 RC3+ (0.20.10.4), released October 4th 2020.

Quick start:
(1) Download the latest release from the link above.
(2) Unzip the xoblite .zip file to a folder of your choice (c:\Blackbox is commonly used but not required).
(3) Hide your Explorer desktop icons (i.e. right click on the Explorer desktop -> View -> Deselect "Show desktop icons").
(4) If you so wish, hide your Explorer taskbar (nb. you can always quickly bring it up from hidden when needed by hitting the Win key),
     and maybe also disable "Show taskbar on all displays" (on multi-monitor systems).
(5) Doubleclick on Blackbox.exe in the previously selected folder to start xoblite.
     (note: if a Windows Defender warning pops up on first launch, but you trust this "unknown" author, click "More info" and then "Run anyway" to continue.)
Done!


More information will be added here later. In the meanwhile, feel free to look around! =]

(...and - while very much outdated of course - you can still find the old Blackbox for Windows 0.0.70 documentation here, and the legacy xoblite history page here.)

Oh, by the way folks, let's get this one sorted out as well, capisce? :)
It's xoblite, written using all lowercase letters, and it's pronounced /ksɒblaɪt/ ("ksoblait"), not Ex-Oh-Bee-Light. "bb" in the version obviously stands for "Blackbox".

----------

xoblite bb5
© 2002-2020 Karl Henrik Henriksson [qwilk/@xoblite]
© 2001-2004 The Blackbox for Windows Development Team

Contains a heavily modified version of the BImage rendering engine used in the original "Blackbox" window manager for the X Window System
© 1997-2000 Bradley T Hughes, © 2001-2002 Sean 'Shaleh' Perry

Any trademarks referred to herein are property of their respective owners.

THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


----------

Below: The development screenshot journey working towards bb5... (in reverse chronological order as posted on boxshots.org and/or blackbox4windows.com)

           

           

           

Configuration

Configuration files

xoblite.rc is the sole configuration file for xoblite bb4 and later, replacing the two configuration files blackbox.rc and extensions.rc used by previous versions.
Backwards compatibility is maintained; xoblite will automatically look for a blackbox.rc and extensions.rc if a xoblite.rc is not found, and will also parse both old *box and new xoblite .rc syntaxes automatically.

The xoblite.rc located in the same folder as the .exe takes on a special role, being the configuration file for the default theme, as well as also containing global (i.e. non-theme specific) settings.
The xoblite.rc of other themes only contains theme-specific settings (i.e. even if they were to include universal settings, these would be ignored).

Descriptions of the available xoblite.rc configuration parameters can be found listed in each section of this documentation, but most parameters are configurable via the Menu, i.e. requiring no manual editing.

[documentation work in progress]

Broadcast messages ("bro@ms")

Since the early days of Blackbox for Windows, plugins have had the option to support broadcast messages (we refer to them as "bro@ms") to communicate with other plugins
and the *box shell itself (naturally, the *box shell can also communicate with these plugins). A bro@m command can be sent e.g. by using Hotkeys, or from the Menu, and is
recognized by the first letter of the command: @.

If you're an old dinosaur that tried out LiteStep way back in the past, you may at first find bro@ms similar to LiteStep !bangs. However, although they share some similarities,
the way they are handled is quite different. While !bangs are registered by a LiteStep module at startup and unregistered at exit, bro@ms are just that - broadcast messages.
What this means is that *any* plugin can listen to *any* message sent by *any* source (the *box shell or other plugins/tools). The upside of this is a much simplified handling and
the possibility for two plugins to listen to (ie. "share") the same bro@m. The downside is a very small extra overhead (= a few extra strcmp's for you coders out there),
but everyone agreed this was a small price to pay to get basic (yet powerful) message handling into Blackbox for Windows.

[documentation work in progress]

Command scripting ("@Script")

xoblite provides built-in support for command scripting through a special kind of broadcast message known as @Script.
The script is enclosed in [] square brackets, and each command within - executed sequentially - is separated by a | pipe character, giving the following syntax:

Syntax: @Script [Command1|Command2|...|CommandN]
Example: @Script [@xoblite Global ToggleDesignerMode|@xoblite Random Wallpaper|Pause 3000|explorer.exe /e,c:\]

Like regular bro@m commands, @Script scripted commands can be sent e.g. by using Hotkeys, or from the Menu.
Commands within a script are not limited only to bro@ms however; they can also be any regular command, as well as Pause <milliseconds>, as in the example above.

[documentation work in progress]

Design

Styles

All Blackbox shells use configuration files called "styles" to control the look of their different UI elements. These styles contain information about what textures, colours,
fonts etc should be used for each element. Furthermore, plugins can read these style settings through an API exposed by the shell, making it possible to get the same
look for all Blackbox user interface elements, whether they belong to the core shell or dynamically loaded plugins.

Style resources consist of a key and a value. The key is constructed of several smaller keys (sometimes referred to as children), delimited by a period ('.') character.

For more information, see also the bb4nix 0.70 style syntax documentation at https://github.com/bradleythughes/blackbox/blob/master/data/README.style .

[documentation work in progress]

@xoblite SetStyle <path>xoblite.styleFile: <path>
Applies the specified style.

@xoblite Random Stylexoblite.styleFile: <path>
Applies a random style.

Themes

[documentation work in progress]

@xoblite SetTheme <theme>xoblite.selected.theme: <theme>
Applies the specified theme.

Wallpapers

[documentation work in progress]

@xoblite Random Wallpaper
Applies a random wallpaper (nb. a matching new rootCommand is not saved to the current style automatically; this must be done manually if/when needed).

Toolbar

Description

The toolbar is the second of the classic *box UI elements; originally the only one to be always visible on an otherwise *very* minimalistic desktop... :)

The toolbar can be either horizontally (as in classic *box) or vertically (unique for xoblite) oriented, to support different use cases.

The toolbar has three main functions:
• Leftmost/topmost we have the so called toolbar label, showing the current workspace name/number. The current workspace can be changed using the leftmost pair of <> buttons.
• Center we can select between several display modes, including the classic toolbar windowLabel (which simply shows the currently active window, like in the early days of *box) as well as several taskbar modes. The current display mode can be changed using the rightmost pair of <> buttons.
• Rightmost/bottommost we have the configurable (in xoblite.rc) format toolbar clock.
 

Configuration options (bro@ms → settings)

@xoblite Toolbar <Toggle/Show/Hide>xoblite.toolbar.hidden: <true/false>
This controls toolbar visibility, and is a per-theme setting.

@xoblite Toolbar Placement <...>xoblite.toolbar.placement: <...>
This controls toolbar placement, and is a per-theme setting.
Pre-defined placements are TopLeft/CenterLeft/BottomLeft, TopCenter/BottomCenter and TopRight/CenterRight/BottomRight.
Manual positioning using screen relative coordinates is also supported, e.g. Manual x10 y10, Manual x-10 y-10, and so on. This can also be combined with screen centered x/y positioning by specifying "xC" or "yC" respectively, e.g. Manual xC y-20, and so on.
By using @xoblite Toolbar MoveToMouse, the toolbar can also be temporarily moved (i.e. the position will not be saved to xoblite.rc) to be centered under the mouse, which is really useful for e.g. mouse-button-to-hotkey-to-bro@m binding → super-flexible access to the toolbar/taskbar! :D

@xoblite Toolbar Orientation <Vertical/Horizontal> or @xoblite Toolbar ToggleOrientationxoblite.toolbar.vertical: <true/false>
This controls toolbar orientation, and is a per-theme setting.

@xoblite Toolbar Transparency <0-255>xoblite.toolbar.transparency.alpha: <0-255>
@xoblite Toolbar Transparency <Label/Clock/ActiveTask> <0-255>xoblite.toolbar.label.transparency.alpha: <0-255> / xoblite.toolbar.clock.transparency.alpha: <0-255> / xoblite.taskbar.active.transparency.alpha: <0-255>
These control toolbar alpha transparency, and are per-theme settings.
The first setting controls the transparency of the toolbar itself, cf. regular window level alpha transparency.
The others make it possible to control the transparency of individual toolbar elements using more sophisticated per pixel alpha transparency.

@xoblite Toolbar ToggleRoundedCornersxoblite.toolbar.rounded: <true/false>
This controls whether the toolbar should have rounded corners or not, and is a per-theme setting.
Note that the rounding of corners is by definition largely non-styling-aware, and hence it typically looks best with Flat/Solid style settings (YMMV though, as always ;) ).

@xoblite Toolbar ToggleAlwaysOnTopxoblite.toolbar.onTop: <true/false>
This controls toolbar "always on top" state, and is a per-theme setting.

Deprecated, pending removal or subject to change:
@xoblite Toolbar ToggleSnapToEdges


----------

@xoblite Taskbar Mode <Bars/Icons/Bars+Icons>xoblite.taskbar.mode: <Bars/Icons/Bars+Icons>
This controls the toolbar's taskbar display mode, and is a per-theme setting.

@xoblite Taskbar IconSaturation <0-255> + @xoblite Taskbar IconHue <0-255>xoblite.taskbar.saturation: <0-255> + xoblite.taskbar.hue: <0-255>
These control the icon saturation+hue for the toolbar's taskbar display mode, and are per-theme settings.
@xoblite Taskbar ToggleActiveSatHuexoblite.taskbar.active.SatHue: <true/false>
This controls whether icon saturation+hue as per above should be applied also to the currently active task, and is a per-theme setting.

@xoblite Taskbar ToggleInactiveBackgroundxoblite.taskbar.inactive.background: <true/false>
This controls whether or not a background is drawn for inactive tasks on the the toolbar's taskbar, and is a per-theme setting.

@xoblite Taskbar ToggleCurrentOnlyxoblite.taskbar.currentOnly: <true/false>
This controls whether the toolbar's taskbar shall display tasks only on the current workspace, or all tasks on all workspaces, and is a per-theme setting.

@xoblite Taskbar ToggleFlashingxoblite.taskbar.flashing: <true/false>
This controls whether the toolbar's taskbar allows task flashing or not, and is a per-theme setting.

@xoblite Taskbar ToggleTooltipsxoblite.taskbar.tooltips: <true/false>
This controls whether the toolbar's taskbar should display tooltips or not, and is a per-theme setting.

----------

@xoblite Taskbar QuitCurrentTask
Quits the currently active task.
@xoblite Taskbar ZoomCurrentTask
Zooms (i.e. maximizes/restores) the currently active task.
 

Dock

Description

The dock (nb. formerly known as the "slit" for legacy reasons) is the third of the classic *box UI elements, and is pretty much a flexible "container window" for Plugins.

Configuration options (bro@ms → settings)
 

Console

Description

...work in progress...

Main functions

Configuration options (bro@m → setting)

@xoblite ... <Toggle/Show/Hide>

Desktop

Description

The new lighter-weight desktop introduced in xoblite bb5 is actually "only" an almost fully transparent window hovering at the bottom of the z-order,
above the Windows desktop (nb. hide your Explorer desktop icons first though!), while allowing for *box mouse clicks, file drops, etc anywhere as per usual.

It automatically responds to related screen / work area changes, updating itself dynamically on e.g. screen resolution changes or when the Explorer taskbar placement changes.

Being almost fully (read: non-detectably) transparent, this also allows the regular Windows wallpaper to show through, while making it possible to super-impose things like workspace indicators etc.
xoblite bb5 also integrates the functionality of key legacy wallpaper-related applications, bsetbg.exe and bsetroot.exe to improve overall security,
i.e. all style rootCommand's are now being parsed by the shell itself rather than being [possibly unknowingly] handed off to an [possibly arbitrary] external application.

Drag'n'drop of the following file types to the desktop is also supported:
• Drop a *box plugin .dll file to load it.
• Drop a .png, .jpg/jpeg or .bmp image file to set it as wallpaper (optionally holding down Ctrl to center, Alt to tile, Shift to span, or as default stretch the image).
• Drop a style file to apply it.

----------

Primary desktop mouse click actions in case your mouse has at least 3 buttons :

Left clicking anywhere on the desktop closes all non-pinned menus.
Right clicking anywhere on the desktop brings up the Main menu (i.e. the one defined by menu.rc).
Mid clicking anywhere on the desktop brings up the Styles menu.
X1 clicking anywhere on the desktop brings up the Themes menu.
X2 clicking anywhere on the desktop brings up the Workspaces menu.

Mousewheel down anywhere on the desktop changes to the next Workspace. This change is also reflected by the workspace indicators near the top center of the desktop.
Mousewheel up anywhere on the desktop changes to the previous Workspace. This change is also reflected by the workspace indicators near the top center of the desktop.

Alt+X1 clicking anywhere on the desktop applies a random wallpaper.
Alt+X2 clicking anywhere on the desktop applies a random style.
Shift+X1/X2 clicking anywhere on the desktop provides direct access to the Configuration menu, normally (when using the default menu.rc) a submenu to the Main menu.

----------

Secondary desktop Modifier+Mid mouse click actions in case your mouse has only 3 buttons :

Alt+Mid clicking anywhere on the desktop brings up the Themes menu.
Ctrl+Mid clicking anywhere on the desktop brings up the Workspaces menu.
Shift+Mid clicking anywhere on the desktop provides direct access to the Configuration menu, normally (when using the default menu.rc) a submenu to the Main menu.
Ctrl+Alt+Mid clicking anywhere on the desktop applies a random wallpaper.
Shift+Alt+Mid clicking anywhere on the desktop applies a random style.

----------

Secondary desktop Modifier+Right mouse click actions in case your mouse has only 2 buttons :

Alt+Right clicking anywhere on the desktop brings up the Styles menu.
Ctrl+Right clicking anywhere on the desktop brings up the Themes menu.
Shift+Right clicking anywhere on the desktop brings up the Workspaces menu.
Ctrl+Alt+Right clicking anywhere on the desktop applies a random wallpaper.
Shift+Alt+Right clicking anywhere on the desktop applies a random style.
Ctrl+Alt+Shift+Right clicking anywhere on the desktop provides direct access to the Configuration menu, normally (when using the default menu.rc) a submenu to the Main menu.

----------

Configuration options (bro@ms → settings)

@xoblite Desktop Clock <Regular/Text/Disabled>xoblite.desktop.clock: <Regular/Text/Disabled>
This controls the visibility and style of the [still somewhat experimental] desktop clock, and is a per-theme setting.
 

Hotkeys

Description

...work in progress...

Configuration options (bro@ms → settings)

@xoblite Edit Hotkeys
Opens the hotkeys .rc file for editing.

Workspaces

Description

Workspaces are the *box equivalent of virtual desktops.

Configuration options (bro@ms → settings)

xoblite.workspaces: <1-N>
This controls how many workspaces there shall be in total, and is a global setting. The default is 4.
xoblite.workspaces.names: <name1,name2,name3...nameN>
This specifies individual names for each workspace, and is a global setting. If not defined, workspaces are automatically named "Workspace #N" instead.

@xoblite Workspaces Next
Switches to the next workspace.
@xoblite Workspaces Previous
Switches to the previous workspace.
@xoblite Workspaces ToggleFollowActivexoblite.workspaces.followActive: <true/false>
This controls whether the choice of workspace should follow the active task or not, and is a global setting.
@xoblite Workspaces GatherWindows
Gather all task's windows to the current workspace.

Plugins

Description

...work in progress...

Downloads and documentation for some of my own plugins can be found here.

Configuration options (bro@ms → settings)

@xoblite LoadPlugin <path>
Loads the plugin specified.
@xoblite UnloadPlugin <path>
Unloads the plugin specified.

@xoblite Plugins <Toggle/Show/Hide>xoblite.plugins.hidden: <true/false>
This controls the visibility of (non-docked) plugins, and is a per-theme setting.

Global

Description

Some functions and their associated settings are "global" ones, e.g. they apply to more than one UI element, are targeting the overall shell level, or regardless of the chosen theme. They are listed here.

Configuration options (bro@ms → settings)

@xoblite About
@xoblite CheckForUpdates

Chat

Didn't find the information you were looking for? Maybe someone is alive over at...