Fluxbox is fast and sexy

Sin­ce bbLean has been my favou­rite shell for Win­dows for many years it it no sur­pri­se that I like *box-vari­ants on Linux as well.

I pre­fer them not only becau­se they are lean and fast and high­ly con­fi­gura­ble, but most­ly becau­se they sup­port my work­flow and har­dy ever get in the way. And as vir­tual­ly ever­ything can be done by key­board-short­cuts they boost my pro­duc­ti­vi­ty – if I can remem­ber the short­cut when nee­ded, that is ;).
Cur­r­ent­ly I am on flux­box (the blee­ding edge git-ver­si­on), which IMHO has some advan­ta­ges over open­box, the nati­ve hand­ling of (pseudo-)transparency for examp­le.

Final­ly it is all about usea­bi­li­ty and resour­ces. I am not a Gno­me- or KDE-hater – far from – and yet I pre­fer if not 20 % of my pre­cious RAM are allo­ca­ted by the desktop/windowmanager. I need it for working. And I like some eye-can­dy, whe­re it makes sen­se.

The basic tools you’ll need are, bes­i­de flux­box of cour­se, flu­x­conf, flux­me­nu, flux­keys and flux­style. I recom­mend to get mint-fm2 as well, as it will gene­ra­te a for­mi­da­ble menu from all you instal­led apps (see screen­shot).

If you want you can have a look at my con­figs, copy them, use them, modi­fy them to your liking.

~/.fluxbox/menu

[begin] (Arch Linux) </usr/share/icons/nuvola/128x128/places/start-here-kde.png>
[exec] (mic) {xdg-open /home/mic} </home/mic/.icons/gk4ico/16x16/actions/gtk-home.png>
[exec] (Web Brow­ser) {xdg-open https://} </usr/share/icons/nuoveXT2/128x128/categories/applications-internet.png>
[exec] (Ter­mi­nal Emu­la­tor) {xterm} </usr/share/icons/hicolor/16x16/status/terminal-bell.png>
[exec] (Run) {gmrun} </usr/share/icons/hicolor/128x128/apps/kgoldrunner.png>
[inclu­de] (/home/mic/.fluxbox/customMenuEntries)
[sepa­ra­tor] (——–)
[inclu­de] (/home/mic/.mint-fm2/submenus/Categories)
[sepa­ra­tor] (——–)
[exec] (Quit) {ciao} </home/mic/.icons/gk4ico/16x16/actions/gtk-quit.png>
[end]

~/.fluxbox/startup

#!/bin/sh
# flux­box start­up-script:
# Lines star­ting with a ›#‹ are igno­red.

# Chan­ge key­map – ger­man in this case
setxkbmap ‑model evdev ‑lay­out de node­ad­keys

# num­lock anma­chen / enab­le num­lock (on,off,toggle)
num­lo­ckx on

# App­li­ca­ti­ons you want to run with flux­box.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN «&« AT THE END.
#
# unclut­ter ‑idle 2 &
# wmnd &
# wms­mi­xer ‑w &
# idesk &

# Hin­ter­grund set­zen / set back­ground with nitro­gen
(sleep 2s && nitro­gen –res­to­re) &

# start con­ky – sys­tem-moni­tor (I have several con­figs, usual­ly you won’t need the ›-c‹-switch)
con­ky ‑c ~/.conkyrc.flux &

# klapp-ter­mi­nal star­ten / start drop­down-ter­mi­nal
til­da &

# And last but not least we start flux­box.
# Becau­se it is the last app you have to run it with «exec« befo­re it.
exec flux­box
# or if you want to keep a log:
# exec flux­box ‑log »/home/mic/.fluxbox/log«

~/.fluxbox/init

session.screen0.window.focus.alpha: 255
session.screen0.window.unfocus.alpha: 255
session.screen0.clientMenu.usePixmap: true
session.screen0.slit.alpha: 255
session.screen0.slit.layer: Dock
session.screen0.slit.direction: Hori­zon­tal
session.screen0.slit.acceptKdeDockapps: true
session.screen0.slit.maxOver: fal­se
session.screen0.slit.autoHide: fal­se
session.screen0.slit.placement: Right­Bot­tom
session.screen0.slit.onhead: 0
session.screen0.titlebar.left: Stick
session.screen0.titlebar.right: Mini­mi­ze Maxi­mi­ze Clo­se
session.screen0.menu.alpha: 140
session.screen0.iconbar.iconWidth: 128
session.screen0.iconbar.mode: {sta­tic groups} (minimized=yes)
session.screen0.iconbar.usePixmap: true
session.screen0.iconbar.iconTextPadding: 10l
session.screen0.iconbar.alignment: Rela­ti­ve
session.screen0.toolbar.widthPercent: 80
session.screen0.toolbar.tools: prev­works­pace, works­pa­ce­na­me, next­works­pace, icon­bar, sys­tem­tray, clock
session.screen0.toolbar.alpha: 140
session.screen0.toolbar.placement: Top­Cen­ter
session.screen0.toolbar.visible: true
session.screen0.toolbar.layer: Dock
session.screen0.toolbar.height: 0
session.screen0.toolbar.autoHide: fal­se
session.screen0.toolbar.maxOver: fal­se
session.screen0.toolbar.onhead: 1
session.screen0.tabs.usePixmap: true
session.screen0.tabs.maxOver: fal­se
session.screen0.tabs.intitlebar: true
session.screen0.tab.placement: Top­Left
session.screen0.tab.width: 30
session.screen0.tabFocusModel: Click­ToT­ab­Fo­cus
session.screen0.autoRaise: true
session.screen0.showwindowposition: fal­se
session.screen0.antialias: true
session.screen0.workspacewarping: true
session.screen0.noFocusWhileTypingDelay: 0l
session.screen0.strftimeFormat: %k:%M
session.screen0.focusModel: Click­Fo­cus
session.screen0.clickRaises: true
session.screen0.workspaceNames: #1,#2,#3,#4,#5,#6,#7,#8,
session.screen0.allowRemoteActions: fal­se
session.screen0.workspaces: 8
session.screen0.maxIgnoreIncrement: fal­se
session.screen0.menuDelay: 200
session.screen0.rowPlacementDirection: Left­To­Right
session.screen0.demandsAttentionTimeout: 500
session.screen0.windowPlacement: Row­Mi­nO­ver­lapP­la­ce­ment
session.screen0.tooltipDelay: 500
session.screen0.maxDisableMove: fal­se
session.screen0.focusNewWindows: true
session.screen0.fullMaximization: fal­se
session.screen0.opaqueMove: fal­se
session.screen0.windowMenu: /home/mic/.fluxbox/windowmenu
session.screen0.defaultDeco: NORMAL
session.screen0.colPlacementDirection: Top­To­Bot­tom
session.screen0.edgeSnapThreshold: 10
session.screen0.maxDisableResize: fal­se
session.tabPadding: 0
session.slitlistFile: ~/.fluxbox/slitlist
session.styleFile: /home/mic/.fluxbox/styles/ColorFlux_Dust_mic
session.configVersion: 13
session.autoRaiseDelay: 250
session.ignoreBorder: fal­se
session.keyFile: ~/.fluxbox/keys
session.appsFile: ~/.fluxbox/apps
session.doubleClickInterval: 250
session.tabsAttachArea: Win­dow
session.colorsPerChannel: 4
session.cacheLife: 5l
session.menuFile: ~/.fluxbox/menu
session.styleOverlay: ~/.fluxbox/overlay
session.cacheMax: 200l
session.forcePseudoTransparency: true

~/.fluxbox/apps

I added this so you can see how flux­box hand­les the auto­ma­gi­cal posi­tio­ning of apps/windows. You don’t have to edit it (though you can of cour­se), as all set­tings are usual­ly done from the tool­bar of the app.

[app] (name=fbrun)
[Posi­ti­on] (CENTER) {0 0}
[Lay­er] {2}
[end]
[app] (name=xawtv) (class=Xawtv)
[Works­pace] {0}
[Dimen­si­ons] {479 372}
[Posi­ti­on] (UPPERLEFT) {1413 674}
[Sti­cky] {no}
[Lay­er] {6}
[end]
[app] (name=Navigator) (class=Firefox) (role=browser)
[Works­pace] {0}
[Dimen­si­ons] {785 872}
[Posi­ti­on] (UPPERLEFT) {436 128}
[Clo­se] {yes}
[end]
[app] (name=Mail) (class=Thunderbird) (role=3pane)
[Works­pace] {1}
[Dimen­si­ons] {1546 1092}
[Posi­ti­on] (UPPERLEFT) {100 22}
[Clo­se] {yes}
[end]
[app] (name=gimp‑2.7) (class=Gimp‑2.7) (role=gimp-image-window)
[Works­pace] {3}
[Dimen­si­ons] {1776 912}
[Posi­ti­on] (UPPERLEFT) {71 19}
[Clo­se] {yes}
[end]
[app] (name=digikam) (class=Digikam) (role=Digikam)
[Works­pace] {6}
[Dimen­si­ons] {1798 1106}
[Posi­ti­on] (UPPERLEFT) {28 17}
[end]

~/.fluxbox/keys

This one is important, as it holds all the power 🙂
Noti­ce the lines 56, as they allow you to shade/unshade win­dows by using the mou­se-wheel (like in open­box e.g.).

! flux­box-update_­con­figs added ›(workspace=[current])‹ to (Next|Prev)(Window|Group)
! check lines mar­ked by ›FBCV13‹ if they are cor­rect­ly updated
!mou­se actions added by flux­box-update_­con­figs
OnTi­t­le­bar Mouse1 :Macro­Cmd {Focus} {Rai­se} {Acti­va­t­eTab}
OnTi­t­le­bar Mouse4 :Shade
OnTi­t­le­bar Mouse5 :Shade
!mou­se actions added by flux­box-update_­con­figs
OnTi­t­le­bar Move1 :Start­Mo­ving
OnLeft­Grip Move1 :StartRe­si­zing bot­tom­left
OnRight­Grip Move1 :StartRe­si­zing bot­tom­right
OnWin­dow­Bor­der Move1 :Start­Mo­ving

# click on the desk­top to get menus
OnDesk­top Mouse1 :Hide­Me­nus
OnDesk­top Mouse2 :Works­pa­ce­Me­nu
OnDesk­top Mouse3 :Root­Me­nu

# scroll on the desk­top to chan­ge works­paces
OnDesk­top Mouse4 :Prev­Works­pace
OnDesk­top Mouse5 :Next­Works­pace

# scroll on the tool­bar to chan­ge cur­rent win­dow
OnTool­bar Mouse4 :Prev­Win­dow {sta­tic groups} (workspace=[current]) (iconhidden=no) !! FBCV13 !!
OnTool­bar Mouse5 :Next­Win­dow {sta­tic groups} (workspace=[current]) (iconhidden=no) !! FBCV13 !!

# alt + left/right click to move/resize a win­dow
OnWin­dow Mod1 Mouse1 :Macro­Cmd {Rai­se} {Focus} {Start­Mo­ving}
OnWin­dow­Bor­der Move1 :Start­Mo­ving

OnWin­dow Mod1 Mouse3 :Macro­Cmd {Rai­se} {Focus} {StartRe­si­zing Nea­rest­Corner}
OnLeft­Grip Move1 :StartRe­si­zing bot­tom­left
OnRight­Grip Move1 :StartRe­si­zing bot­tom­right

# alt + midd­le click to lower the win­dow
OnWin­dow Mod1 Mouse2 :Lower

# con­trol-click a window’s tit­le­bar and drag to attach win­dows
OnTi­t­le­bar Con­trol Mouse1 :Start­Tab­bing

# dou­ble click on the tit­le­bar to shade
OnTi­t­le­bar Dou­ble Mouse1 :Shade

# left click on the tit­le­bar to move the win­dow
OnTi­t­le­bar Mouse1 :Macro­Cmd {Rai­se} {Focus} {Acti­va­t­eTab}
OnTi­t­le­bar Move1 :Start­Mo­ving

# midd­le click on the tit­le­bar to lower
OnTi­t­le­bar Mouse2 :Lower

# right click on the tit­le­bar for a menu of opti­ons
OnTi­t­le­bar Mouse3 :Win­dow­Me­nu

# alt-tab
Mod1 Tab :Next­Win­dow {groups} (workspace=[current]) (workspace=[current]) !! FBCV13 !!
Mod1 Shift Tab :Prev­Win­dow {groups} (workspace=[current]) (workspace=[current]) !! FBCV13 !!

# cycle through tabs in the cur­rent win­dow
Mod4 Tab :NextT­ab
Mod4 Shift Tab :PrevTab

# go to a spe­ci­fic tab in the cur­rent win­dow
Mod4 1 :Tab 1
Mod4 2 :Tab 2
Mod4 3 :Tab 3
Mod4 4 :Tab 4
Mod4 5 :Tab 5
Mod4 6 :Tab 6
Mod4 7 :Tab 7
Mod4 8 :Tab 8
Mod4 9 :Tab 9

# open a ter­mi­nal
Mod1 F1 :Exec xterm

# open a dia­log to run pro­grams
Mod1 F2 :Exec gmrun

# volu­me set­tings, using com­mon key­codes
# if the­se don’t work, use xev to find out your real key­codes
176 :Exec ami­xer sset Master,0 1+
174 :Exec ami­xer sset Master,0 1-
160 :Exec ami­xer sset Master,0 togg­le

# cur­rent win­dow com­man­ds
Mod1 F4 :Clo­se
Mod1 F5 :Kill
Mod1 F9 :Mini­mi­ze
Mod1 F10 :Maxi­mi­ze
Mod1 F11 :Full­screen

# open the win­dow menu
Mod1 space :Win­dow­Me­nu

# exit flux­box
Con­trol Mod1 Dele­te :Exit

# chan­ge to previous/next works­pace
Con­trol Mod1 Left :Prev­Works­pace
Con­trol Mod1 Right :Next­Works­pace

# send the cur­rent win­dow to previous/next works­pace
Mod4 Left :Send­ToPrev­Works­pace
Mod4 Right :Send­ToN­ext­Works­pace

# send the cur­rent win­dow and fol­low it to previous/next works­pace
Con­trol Mod4 Left :Take­To­Prev­Works­pace
Con­trol Mod4 Right :Take­ToN­ext­Works­pace

# chan­ge to a spe­ci­fic works­pace
Con­trol F1 :Works­pace 1
Con­trol F2 :Works­pace 2
Con­trol F3 :Works­pace 3
Con­trol F4 :Works­pace 4
Con­trol F5 :Works­pace 5
Con­trol F6 :Works­pace 6
Con­trol F7 :Works­pace 7
Con­trol F8 :Works­pace 8
Con­trol F9 :Works­pace 9
Con­trol F10 :Works­pace 10
Con­trol F11 :Works­pace 11
Con­trol F12 :Works­pace 12

# send the cur­rent win­dow to a spe­ci­fic works­pace
Mod4 F1 :Send­ToWorks­pace 1
Mod4 F2 :Send­ToWorks­pace 2
Mod4 F3 :Send­ToWorks­pace 3
Mod4 F4 :Send­ToWorks­pace 4
Mod4 F5 :Send­ToWorks­pace 5
Mod4 F6 :Send­ToWorks­pace 6
Mod4 F7 :Send­ToWorks­pace 7
Mod4 F8 :Send­ToWorks­pace 8
Mod4 F9 :Send­ToWorks­pace 9
Mod4 F10 :Send­ToWorks­pace 10
Mod4 F11 :Send­ToWorks­pace 11
Mod4 F12 :Send­ToWorks­pace 12

# send the cur­rent win­dow and chan­ge to a spe­ci­fic works­pace
Con­trol Mod4 F1 :Take­To­Works­pace 1
Con­trol Mod4 F2 :Take­To­Works­pace 2
Con­trol Mod4 F3 :Take­To­Works­pace 3
Con­trol Mod4 F4 :Take­To­Works­pace 4
Con­trol Mod4 F5 :Take­To­Works­pace 5
Con­trol Mod4 F6 :Take­To­Works­pace 6
Con­trol Mod4 F7 :Take­To­Works­pace 7
Con­trol Mod4 F8 :Take­To­Works­pace 8
Con­trol Mod4 F9 :Take­To­Works­pace 9
Con­trol Mod4 F10 :Take­To­Works­pace 10
Con­trol Mod4 F11 :Take­To­Works­pace 11
Con­trol Mod4 F12 :Take­To­Works­pace 12

Have fun! And if you have ques­ti­ons, feel free to ask. I’m not an expert, but I’ll try to help.

Schreibe einen Kommentar