Vanaf het moment dat de eerste regel code werd geschreven, groeide Blackbox rond een enkel premisse: minimalisme. Het is niet bedoeld als de meest oogstrelende, uitgebreide, of versierde NeXT look-alike. Het is slechts bedoeld snel te zijn.
Blackbox biedt configureerbare venster-decoraties, een startmenu om programma's op te starten en een werkbalk die de naam van het huidige werkblad laat zien, de naam van de huidige toepassing en een klok. Er is ook een werkbladmenu om werkbladen toe te voegen of te verwijderen. De `slit' kan worden gebruikt om speciale, kleine applicaties in af te beelden. De meeste bbtools (kleine programma's bedoeld voor gebruik bij Blackbox) kunnen de slit gebruiken.
Blackbox behandelt ikonen op een speciale manier: Als je een venster minimaliseert verschijnt er geen ikoon; in plaats daarvan kun je het programma terug vinden in het `Ikonen' submenu van het Werkblad menu. Je bureaublad zal dus nooit propvol ikonen komen te zitten. Als alternatief voor ikonen kun je dubbelklikken op de titelbalk van een venster, het venster zal nu dichtklappen en alleen de titelbalk blijft zichtbaar.
Blackbox heeft zijn eigen mogelijkheden om de achtergronden van menu's en borders te creëren. Door stijlbestanden te gebruiken kun je in hoge mate bepalen hoe je bureaublad eruit ziet. Momenteel gebruikt Blackbox een eigen protocol om met andere programma's te communiceren, maar ondersteuning van de nieuwe window manager specificatie die Gnome en KDE gebruiken is in voorbereiding.
exec blackbox
als het laatst uitgevoerde commando in dit script. Als Blackbox stopt, zal de X sessie ook stoppen.
Bij het opstarten zoekt Blackbox een standaard menu bestand in /usr/share/blackbox/menu. Je kunt hier een systeem-breed menu opnemen voor alle gebruikers.
Bij herstarten of afsluiten zal Blackbox de gebruikers instellingen opslaan in het bestand ~/.blackboxrc in de homedirectory van de gebruiker. Sommige resources in dit bestand kunnen handmatig worden bewerkt.
Met de linker muisknop (knop 1) op een toepassing in het werkblad (sub)menu spring je naar dat werkblad en krijgt die toepassing de focus; klik je met de knop 2 op een toepassing in het werkblad (sub)menu, dan wordt de toepassing naar het huidige werkblad gehaald.
Met dit menu kun je de naam voor het huidige werkblad aanpassen (druk op Enter om het invoeren van de naam te beëindigen). Ook kun je kiezen waar de werkbalk moet worden geplaatst, of het altijd op de voorgrond moet blijven of zich automatisch moet verbergen als de muis de werkbalk verlaat.
Let wel: In Blackbox versies beneden 0.60.0 roept een muisklik met knop 3 direct de `Naam werkblad wijzigen' modus op.
Als je dubbelklikt op de titelbalk van een venster, klapt het venster dicht en alleen de titelbalk blijft zichtbaar. Nogmaals dubbelklikken beeldt het venster weer af.
session.menuFile: ~/.blackbox/menu
Om Blackbox deze verandering te laten merken moet Blackbox herstart worden. Wees er zeker van dat dit menu werkbaar is, kies dan `Herstarten' van het standaard menu.
[soort item] (label of bestandsnaam) {shell commando of bestandsnaam}
De volgende soorten items zijn er:
[include] (~/blackbox/stylesmenu)
zal /home/bhughes/blackbox/stylesmenu toevoegen in het menu).
Regels in het menubestand die met een `#' beginnen worden beschouwd als commentaar en worden genegeerd door Blackbox. In de label en commando velden kunnen karakters worden `ge-escaped' door er backslashes voor te plaatsen, bijvoorbeeld:
[exec] (\(my cool\) \{XTERM\}) {xterm -T \"cool XTERM\"}
Gebruik `\\' om een letterlijke backslash in te voegen.
# Blackbox menu file [begin] (Blackbox 0.60.3) [exec] (rxvt) {rxvt -ls} [exec] (netscape) {netscape -install} [exec] (The GIMP) {gimp} [exec] (XV) {xv} [submenu] (pine) [exec] (inkomend) {rxvt -name pine -e pine -i} [exec] (nieuw bericht) {rxvt -name pine -e pine ""} [end] [submenu] (Window Manager) [exec] (Menu bewerken) {nedit .blackbox/Menu} [submenu] (Stijl) {Welke stijl?} [stylesdir] (~/.blackbox/styles) [stylesmenu] (Blackbox Stijlen) {/usr/share/blackbox/styles} [end] [config] (Instellingen) [reconfig] (Reconfigure) [restart] (Restart) [end] [exit] (Uitloggen) [end] # end of menu file
De standaard installatie van Blackbox plaatst enkele fraaie stijlbestanden in /usr/share/blackbox/styles. Je kunt deze bekijken of bewerken om erachter te komen hoe het Blackbox stijlmechanisme werkt. Je kunt de [style], [stylesdir] en [stylesmenu] menu commando's in je menu bestand gebruiken om deze stijlen te selecteren terwijl Blackbox draait.
Maar je kunt ook een directory ~/.blackbox/styles in je home directory aanmaken en je eigen stijlen daar opslaan. Natuurlijk kun je je stijlen overal opslaan, maar als je stijlen downloadt van bb.themes.org is de naam styles de beste keuze.
Om te begrijpen hoe het stijlmechanisme van Blackbox precies werkt, moet je een beetje kennis hebben van hoe X resources werken.
X resources bestaan uit een sleutel en een waarde. De sleutel kan bestaan uit verschillende kleinere sleutels (kinderen genaamd), verbonden met punten (`.'). Sleutels mogen ook een asterisk (`*') bevatten, zodat een enkele regel tekst vele verschillende sleutels kan beslaan. Dit is bijvoorbeeld handig voor stijlen die uit slechts een of twee kleuren bestaan.
De drie belangrijkste componenten van Blackbox zijn de werkbalk, de menu's en de venster omramingen. Deze kunnen door middel van de resources in een stijlbestand geconfigureerd worden.
Het kleine venster dat Blackbox toont bij verslepen van vensters heeft dezelfde stijl als de titelbalk van een venster.
Hier zijn wat voorbeelden:
toolbar.clock.color: green
Dit zet de `color' sleutel van de klokl in de werkbalk op `green'. Het resultaat is dat de klok op een groene achtergrond verschijnt. Een ander voorbeeld:
menu*color: rgb:3/4/5
Dit stelt de `color' sleutel van het menu en alle kinderen daarvan in op `rgb:3/4/5'. (Voor een beschrijving van kleurnamen zie X(1).) Dus de waarde `rgb:3/4/5' geldt nu ook voor menu.title.color en menu.frame.color. En met
*font: -b&h-lucida-medium-r-normal-*-*-140-*
kun je het lettertype voor alle componenten van Blackbox in een keer instellen. (Voor informatie over de lettertypen die op je systeem geïnstalleerd zijn kun je een programma als xfontsel(1), gtkfontsel, of xlsfonts(1) gebruiken.)
Welnu, wat Blackbox zo interessant maakt, is de mogelijkheid om grafische texturen on-the-fly te genereren. Textuur omschrijvingen worden direct aan de sleutel toegekend waarvoor zij moeten gelden, bijvoorbeeld:
toolbar.clock: Raised Gradient Diagonal Bevel1 toolbar.clock.color: rgb:8/6/4 toolbar.clock.colorTo: rgb:4/3/2
Schrik niet, we leggen dit meteen uit! Een textuur omschrijving bestaat uit maximaal vijf velden, als volgt:
In plaats van een textuur omschrijving, kun je ook de optie ParentRelative gebruiken, waardoor de component als deel van de onderliggende component (ouder) verschijnt, dus eigenlijk transparant.
Alle texturen met kleurverloop zijn samengesteld uit twee kleuren, de color en colorTo sleutels. Wanneer de Interlaced modus wordt gecombineerd met Solid, dan wordt de colorTo sleutel gebruikt om de alternerende kleur te bepalen.
Okay, hier is de complete componentenlijst, waarin aangegeven wordt welk soort waarde de sleutels kunnen bevatten. Commentaar wordt voorafgegaan door een uitroepteken (`!'), dat ook kan worden gebruikt in de Blackbox stijlbestanden, die in werkelijkheid gewoon X resource bestanden zijn.
! De werkbalk zelf toolbar: Textuur omschrijving toolbar.color: Kleur toolbar.colorTo: Kleur ! De knoppen op de werkbalk toolbar.button: Textuur omschrijving of ParentRelative toolbar.button.color: Kleur toolbar.button.colorTo: Kleur ! Kleur van de pijlen op de werkbalk-knoppen toolbar.button.picColor: Kleur ! Knoppen in ingedrukte toestand toolbar.button.pressed: Textuur omschrijving (bijv. Sunken) of ParentRelative toolbar.button.pressed.color: Kleur toolbar.button.pressed.colorTo: Kleur ! Kleur van de pijlen in ingedrukte toestand toolbar.button.pressed.picColor:Kleur ! Werkbalk, naam toolbar.label: Textuur omschrijving of ParentRelative toolbar.label.color: Kleur toolbar.label.colorTo: Kleur toolbar.label.textColor: Kleur ! Werkbalk, naam van gefocust venster toolbar.windowLabel: Textuur omschrijving of ParentRelative toolbar.windowLabel.color: Kleur toolbar.windowLabel.colorTo: Kleur toolbar.windowLabel.textColor: Kleur ! Werkbalk, klok toolbar.clock: Textuur omschrijving of ParentRelative toolbar.clock.color: Kleur toolbar.clock.colorTo: Kleur toolbar.clock.textColor: Kleur ! Hoe de tekst op de werkbalk moet worden uitgelijnd toolbar.justify: center, left, of right ! Lettertype voor alle werkbalk componenten toolbar.font: Lettertype (bijv. -*-helvetica-medium-r-normal-*-*-100-*) ! Titelbalk van menu's menu.title: Textuur omschrijving menu.title.color: Kleur menu.title.colorTo: Kleur menu.title.textColor: Kleur menu.title.font: Lettertype menu.title.justify: center, left, of right ! Body van menu's menu.frame: Textuur omschrijving menu.frame.color: Kleur menu.frame.colorTo: Kleur menu.frame.textColor: Kleur ! Kleur van uitgeschakelde menu items menu.frame.disableColor: Kleur menu.frame.font: Lettertype menu.frame.justify: center, left, of right ! Kogeltjes voor menu items menu.bullet: empty, triangle, square, of diamond menu.bullet.position: right of left ! Het actieve menu item menu.hilite: Textuur omschrijving (bijv. Raised) menu.hilite.color: Kleur menu.hilite.colorTo: Kleur menu.hilite.textColor: Kleur ! Het actieve venster window.title.focus: Textuur omschrijving window.title.focus.color: Kleur window.title.focus.colorTo: Kleur ! Inactieve vensters window.title.unfocus: Textuur omschrijving window.title.unfocus.color: Kleur window.title.unfocus.colorTo: Kleur ! Label van vensters, actief (focus) of inactief (unfocus) window.label.focus: Textuur omschrijving of ParentRelative window.label.focus.color: Kleur window.label.focus.colorTo: Kleur window.label.focus.textColor: Kleur window.label.unfocus: Textuur omschrijving of ParentRelative window.label.unfocus.color: Kleur window.label.unfocus.colorTo: Kleur window.label.unfocus.textColor: Kleur ! Balk onderaan venster window.handle.focus: Textuur omschrijving window.handle.focus.color: Kleur window.handle.focus.colorTo: Kleur window.handle.unfocus: Textuur omschrijving window.handle.unfocus.color: Kleur window.handle.unfocus.colorTo: Kleur ! Hoeken voor het veranderen van de grootte window.grip.focus: Textuur omschrijving window.grip.focus.color: Kleur window.grip.focus.colorTo: Kleur window.grip.unfocus: Textuur omschrijving window.grip.unfocus.color: Kleur window.grip.unfocus.colorTo: Kleur ! Knoppen op titelbalk window.button.focus: Textuur omschrijving of ParentRelative window.button.focus.color: Kleur window.button.focus.colorTo: Kleur window.button.focus.picKleur: Kleur window.button.unfocus: Textuur omschrijving of ParentRelative window.button.unfocus.color: Kleur window.button.unfocus.colorTo: Kleur window.button.unfocus.picColor: Kleur window.button.pressed: Textuur omschrijving (bijv. Sunken) window.button.pressed.color: Kleur window.button.pressed.colorTo: Kleur ! Frame rond venster window.frame.focusColor: Kleur window.frame.unfocusColor: Kleur ! Lettertype en uitlijning voor de titelbalk van vensters window.font: Lettertype window.justify: center, left, of right ! Andere sleutels ! Een border kan rond alle componenten worden getekend borderWidth: aantal pixels, bijv. 1 borderColor: Kleur bevelWidth: aantal pixels > 0 handleWidth: aantal pixels > 0 ! Breedte van het frame rond een venster (vanaf 0.61) ! Als deze waarde niet wordt aangegeven wordt de waarde van ! bevelWidth gebruikt. frameWidth: aantal pixels >= 0 ! Dit shell commando wordt uitgevoerd als het stijlbestand wordt gelezen ! Meestal wordt het gebruikt om de achtergrond aan te passen. rootCommand: Shell commando, bijv. bsetroot -mod 4 4 -fg rgb:5/6/6 -bg grey20 ! Sommige van de bbtools lezen deze oude 0.51.x sleutels menuFont: Lettertype titleFont: Lettertype
Dit lijkt een erg lange lijst, maar denk eraan, wanneer je je eigen stijl creëert, kun je heel eenvoudig met een paar regels vele instellingen maken, bijvoorbeeld:
*color: slategrey *colorTo: darkslategrey *unfocus.color: darkslategrey *unfocus.colorTo: black *textColor: white *unfocus.textColor: lightgrey *font: lucidasans-10
Hiermee worden al heel veel componenten van goede instellingen voorzien.
De meeste dockable toepassingen bedoeld voor de slit gebruiken de -w commandoregeloptie om in de slit te draaien. Je kunt slit applicaties bijvoorbeeld starten vanuit je ~/.xinitrc:
bbmail -w & bbpager -w & exec blackbox
Uiteraard moet Blackbox gecompileerd zijn met Slit ondersteuning om de slit te kunnen gebruiken.
Als je Blackbox `multihead' gebruikt, kan de screen0 sleutel ook screen1, 2 enz. zijn, voor elk scherm.
De officiële Blackbox website:
http://blackbox.alug.org/
De ontwikkelaars pagina, voor bug-rapportage en nieuwste versies:
http://sf.net/projects/blackboxwm
Heel veel stijlen en andere bijdragen:
http://www.themes.org/themes/blackbox/
Deze handleiding is geschreven en naar het Nederlands vertaald door Wilbert Berendsen (wbsoft@xs4all.nl).