https://fbpanel.sourceforge.net/
I've used it with Blackbox, xfwm, Openbox, etc. It's wonderful. It's also the only KDE-compatible tray which I've seen.
Fantastic.
- Using fbpanel with two monitors
- mailing list
-
Configuration:
- GUI:
fbpanel -C
- Or edit
~/.fbpanel/default
- GUI:
- Fbpanel genmon.c is obsolete.
-
fbpanel menu importing is obsolete.
--
- 2020-03-01 -- I've been using LXPanel for some time.
-
2018-12-20 - 7.0 on Devuan_ascii_2.0.0-rc_i386_dvd-1
- It's volume plugin is working again. Replaces volumeicon.
-
2018-04-15 - 6.1 on Devuan-1.0.0-jessie-i386-DVD
- After some general fiddling with my system, fbpanel's volume plugin stopped working, so I'm happily using volumeicon.
- 2017-11-05 - 6.1 on Devuan-1.0.0-jessie-i386-DVD
- 2017-07-07 - (version not recorded) on Devuan-1.0.0-jessie-i386-DVD
- 2016-12-01 - 6.1 on Devuan 1.0.0 beta
-
2009-03-25 - 4.12 on (distribution not recorded)
- Also displays KDE tray icons. Sweet!
- 2007-03-05 - 4.10 on PCLinuxOS (version not recorded)
- (see fbpanel reviews for other notes)
- I used to use LXPanel.
-
I can't remember what I used before fbpanel.
Notes ∞
Clock strftime ∞
(strftime)
ClockFmt = <span font="Sans 8"><b>%-l:%M</b> %P
%a %Y-%m-%d</span>
2007-07-02 - Only supports the fredesktop.org tray spec ∞
[potentially obsolete]
Notes from the author:
fbpanel supports fredesktop.org tray spec only. imho, kde apps use different protocol (at least old one).
So they should not show up - they are not supported.
But to be sure that it is not fbpanel's bug try gnome-panel or xfce4-panel - they both use fredesktop spec only.
2007-03-05 - 4.10 ∞
1) Since It can display only time, no letters, ClockFmt
is limited to one of 2 choices:
"%R"
-
"%I:%M"
2) Color can be configured, so new option Color
was added
Plugin { type = dclock config { ClockFmt = %R TooltipFmt = %A %x Action = xmessage Please define some command & #color can be value (like #ffffff) or name (like white) Color = blue } }
I modified my config to include the menu
plugin, which uses the freedesktop menu standard.
Global { edge = bottom allign = left margin = 0 widthtype = percent width = 100 heighttype = pixel height = 26 roundcorners = false } Plugin { type = space config { size = 2 } } Plugin { type = menu expand = false padding = 0 config { icon = star systemmenu { } separator { } item { icon = gnome-settings name = configure command = configure } } } Plugin { type = space config { size = 2 } } Plugin { type = taskbar expand = true config { ShowIconified = true ShowMapped = true ShowAllDesks = false tooltips = true IconsOnly = false MaxTaskWidth = 150 } } Plugin { type = tray } # Generic Monitor -- display the output of a program/script # into the panel # Options: # Command = program/script to provide the text to display on the # panel # PollingTime = in seconds, default is 1 second # TextSize = xx-small, x-small, small, medium, large, x-large or # xx-large # TextColor = an RGB color specification such as #00FF00 or a color # name such as black, blue or red Plugin { type = genmon config { Command = echo $(date +%a\ %b\ %d,\ %l\:%M\ %p) PollingTime = 1 TextSize = medium TextColor = black } }
(see Fbpanel genmon.c)
######################################## ## fbpanel configuration file ## ######################################## # DESCRIPTION # Configuration file consists of mandatory 'Global' block that MUST come first, # and optionally one or more 'Plugin' block. # Lines having '#' as first non-blank char or blank lines are ignored # Value of variable is a text from first non-blank char after '=' # till the last non-blank char. '#' is NOT treated as coment in this context # 'Global' block describes gloabal parameters like position, size and # some NETWM settings # GLobal { # # screen edge # # legal values are: left, right, top, bottom # edge = bottom # # allignment of a panel # # legal values are: left, right, center # allign = left # # length of margin (in pixels) # # legal values are numbers # margin = 0 # # widthtype specifies how panel width is calculated # # legal values are: request, pixel, percent # # request - follow widgets' size requests. can shrink or grow dynamically # # pixel - ocupy fixed number of pixels, then 'width' variable holds a number # # percent - be 'width' precent of an edge. # widthtype = percent # # numerical value of width (not applicable for 'request' widthtype) # # legal values are numbers # width = 80 # # heighttype specifies how panel height is calculated # # legal values are: pixel # # pixel - ocupy fixed number of pixels, then 'height' variable holds a number # heighttype = pixel # # numerical value of height (if applicable) # # legal values are numbers # height = 28 # # Identify panel window type as dock # # legal values are boolean # SetDockTpe = true # # Reserve panel's space so that it will not be covered by maximazied windows # # legal values are boolean # # SetPartialStrut = true # # Transparency stuff: # # TintColor is a color to composite on root background given as #RRGGBB or as name # # Alpha is transparency of the tint color. # # Transparent = true # # TintColor = #FFFFFF # or # # TintColor = white # # Alpha = 127 # } # 'Plugin' block specifies a plugin to load. It has same syntax for both # builtin and external plugins. # First parameter is 'type'. It's mandatory and must come first # Legal values are plugin names. Names of builtin plugins are: # separator - visual separator # wincmd - 'show desktop' button # taskbar - lists all opened windows (tasks) # launchbar - bar with launch button # image - just shows an image # dclock - digital clock # space - just seize space # pager - thumbnailed view of the desktop # tray - tray for XEMBED icons (aka docklets) # expand - specifies if plugin can accomodate extra space or not [optional] # padding - extra paddin around plugin [optional] # config {} - block of plugin's private configuration. # This part is plugin dependant # # Plugin { # type = wincmd # config { # image = ~/.fbpanel/images/Desktop2.png # tooltip = Left click to iconify all windows. Middle click to shade them. # } # } Global { edge = bottom allign = left margin = 0 widthtype = percent width = 100 heighttype = pixel height = 26 roundcorners = false transparent = false tintcolor = #ffffff alpha = 39 } Plugin { type = space config { size = 2 } } Plugin { type = menu config { image = PREFIX/share/fbpanel/images/star.png systemmenu { } separator { } item { icon = gnome-settings name = configure #image = PREFIX/share/fbpanel/images/gnome-setting.svg command = configure } item { icon = gnome-terminal name = terminal #image = PREFIX/share/fbpanel/images/gnome_terminal.svg action = xterm } item { icon = gnome-emacs name = emacs action = emacs } } } Plugin { type = space config { size = 5 } } Plugin { type = launchbar config { button { icon = gnome-fs-home #image = PREFIX/share/fbpanel/images/file-manager.svg tooltip = ROX file manager action = rox } button { icon = gnome-terminal tooltip = Terminal action = xterm } button { icon = mozilla-firefox tooltip = Firefox web browser action =firefox } button { icon = gnome-emacs tooltip = Emacs action = emacs } } } Plugin { type = space config { size = 8 } } Plugin { type = wincmd config { icon = gnome-fs-desktop #image = PREFIX/share/fbpanel/images/gnome-fs-desktop.svg tooltip = Left click to iconify all windows. Middle click to shade them. } } Plugin { type = space config { size = 7 } } Plugin { type = pager config { showwallpaper = true } } # 'icons' plugin lets you customize window icons. # these changes applay to entire desktop Plugin { type = icons config { DefaultIcon = PREFIX/share/fbpanel/images/default.xpm application { icon = gnome-terminal #Image = PREFIX/share/fbpanel/images/gnome_terminal.svg ClassName = XTerm } application { icon = gnome-terminal #Image = PREFIX/share/fbpanel/images/gnome_terminal.svg ClassName = mlterm } application { icon = gnome-terminal #Image = PREFIX/share/fbpanel/images/gnome_terminal.svg ClassName = URxvt } application { icon = gnome-emacs #Image = PREFIX/share/fbpanel/images/emacs.svg ClassName = Emacs } application { icon = mozilla-firefox ClassName = Firefox-bin } application { icon = mozilla-firefox ClassName = Firefox } } } Plugin { type = space config { size = 5 } } Plugin { type = taskbar expand = true config { ShowIconified = true ShowMapped = true ShowAllDesks = false tooltips = true IconsOnly = false MaxTaskWidth = 150 } } Plugin { type = tray } # Digital Clock Plugin { type = dclock config { ClockFmt = %R TooltipFmt = %A %x Action = xmessage Please define some command & } }
tricks and tips ∞
Changing the theme ∞
props to BlackboxFAQ/AddOns
fbpanel is a GNOME/GTK+ application. If you change the GNOME/GTK theme, fbpanel will use it. You may need to stop and restart it before the changes are visible.
hide/unhide buttons ∞
Daniel Greenberg <daneli at msu dot edu>
posted on the fbpanel mailing list:
It occurred to me that sometimes it is also helpful to have panel hiding
triggered by a mouse click. (The panel in KDE allows either autohiding
or clicking on the sides of the panel to trigger hiding, for example.) I
don't want to seem ungrateful for the work that went into fbpanel's
autohide! So rather than just asking for hide-on-click to be added to
fbpanel, I thought it would be proper to offer a workaround that can be
used in the meantime to accomplish the same goal.Here's a simple way to accomplish this with fbpanel:
This is based on wmctrl, "a UNIX/Linux command line tool to interact
with an EWMH/NetWM compatible X Window Manager."was https://web.archive.org/*/https://www.sweb.cz/utils/wmctrl/ [ 1 ]
wmctrl can resize a window from the command line or from within a
script. On my system, for example, the following command slides fbpanel
almost completely off the screen to the left, leaving only a small
region visible on the left of the screen:
wmctrl -r panel -e 0,-1,-1,26,-1
(The
-r panel
identifies the fbpanel window by the
title assigned to it by the window manager, while the-e 0,-1,-1,26-1
indicates the new dimensions when the window is mostly hidden.)Similarly, the following command slides the fbpanel window back across
the screen, making it fully visible:
wmctrl -r panel -e 0,-1,-1,1305,26
I place each of these commands in their own files,
labeled fbpanel_hide and fbpanel_show respectively. Of course these
exact dimension may not work for you, depending on screen resolution,
etc. You will have to experiment with thewmctrl -e
parameters to find
what works. (man wmctrl
is helpful.)The next step is to add two launchbar plugins to the
~/.fbpanel/default
file. I place one launchbar plugin early in my default config file, so
that the image associated with this plugin will appear on the leftmost
portion of my panel. (So in my case I place my launchbar before the menu
plugin.) Here's what it looks likePlugin { type = launchbar config { button { image = ~/image_files/left_arrow.png tooltip = hide action = ~/fbpanel_hide } } }The second launchbar plugin needs to be near the end of the file, so
that the image associated with it will be placed on the rightmost part
of the panel:Plugin { type = launchbar config { button { image = ~/image-files/right_arrow.png tooltip = show action = ~/fbpanel_show } } }When you click on the left arrow ("hide"), wmctrl slides the panel all
the way to the left, leaving only the right arrow visible. (The right
arrow appears in the left corner of the screen.) Click the right arrow
("show") and the panel is restored again. A nice touch is to make sure
that when you restore the panel, the right arrow moves all the way off
the right edge of the screen. This ensures that the "show" button will
only appear when the panel is hidden.All this works pretty well, but there is a complication that should be
mentioned: On startup, fbpanel assigns the title "panel" to its window.
When wmctrl resizes a window it does so by looking for the first window
with a title that includes the string "panel." If some window other than
fbpanel's has a title that includes "panel" then it may get resized when
you press the hide or show buttons. I found this out when I was editing
my~/fbpanel/default
file. I pressed the "hide" arrow on my panel and my
xterm window disappeared! Why? Because I had the name of my current
directory included in the window title for each of my xterms. Since my
xterm window title -~/fbpanel
- includes the string "panel" it got
resized instead of fbpanel's window.There are a couple ways to deal with this problem.
1) wmctrl lets you change the name of a window to something unique that
is unlikely to be included in any other window title. E.g.,
wmctrl -r panel -T use_a_unique_string_here
will allow you to direct the wmctrl
window resize commands to a window calleduse_a_unique_string_here
. If
you changepanel
to something unique right after fbpanel starts, then
you can ensure that your window show and window hide commands always go
to this unique window.2) A simpler and more direct approach is to modify the two lines in
fbpanel'spanel.c
code that sets the window title topanel
.line 389: gtk_window_set_wmclass(GTK_WINDOW(p->topgwin), "panel", "fbpanel"); line 390: gtk_window_set_title(GTK_WINDOW(p->topgwin), "panel");Replace
panel
with your unique string, recompile fbpanel, and then you
can direct your wmctrl resize commands to this unique window title
without having to use wmctrl to rename the window.
notes ∞
- see X to learn the properties of a window. Doing this would let you make a toggle script, instead of two separate scripts for hide and unhide.
-
Use the absolute title with wmctrl
-F
Last updated 2022-12-20 at 18:55:21
yum install gtk2 gtk2-devel
The volume plugin stopped working, so I'm using volumeicon for that.
got the volume icon working again