For the past couple of nights I’ve been remaking the fbpanel configurations I used to create the fake Gnome Ubuntu desktop. Here’s another screenshot, in case those have also disappeared off the photo hosting service.
These configuration files are not as comprehensive as the first ones, but those are gone into the infinity, so if you’re after the files (like the one or two e-mails a month that ask for them), these will have to do.
The top bar, generally running at around 1024 pixels across (the system tray should stretch to take up extra space). Note that the Applications menu is the fbpanel “system” menu; if you want something closer to Gnome, you’ll have to build it yourself. I also didn’t include the networking icons, and the newer Gutsy icons. And I also expect you to dig in and further customize these to your liking. Most of the buttons just punch up a terminal.
########################################
## 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
# Keywords are not case-sensitive
# Values are case-sensitive
# 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 global 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 - occupy 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
# setDockType = 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
# # Autohide
# # autoHide = false
# # heightWhenHidden = 2
# }
# '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 padding 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 = top
allign = left
margin = 0
widthType = percent
width = 100
heightType = pixel
height = 26
roundCorners = false
transparent = false
tintColor = #ffffff
alpha = 39
autoHide = false
heightWhenHidden = 2
}
Plugin {
type = space
config {
size = 2
}
}
Plugin {
type = menu
config {
icon = start-here
name = Applications
systemmenu {
}
separator {
}
item {
icon = gnome-settings
name = configure
#image = /usr/share/fbpanel/images/gnome-setting.svg
command = configure
}
item {
icon = gnome-terminal
name = terminal
#image = /usr/share/fbpanel/images/gnome_terminal.svg
action = sakura
}
}
}
Plugin {
type = menu
config {
icon = folder
name = Places
item {
icon = folder_home
name = Home Folder
command = emelfm2
}
separator {
}
item {
icon = computer
name = Computer
command = emelfm2 –one=/
}
separator {
}
item {
icon = network-workgroup
name = Network
command = emelfm2 –one=/
}
}
}
Plugin {
type = space
config {
size = 3
}
}
Plugin {
type = menu
config {
icon = computer
name = System
item {
icon = gnome-settings
name = Settings
command = sakura
}
separator {
}
item {
icon = exit
name = Exit session
command = killall openbox
}
}
}
Plugin {
type = launchbar
config {
button {
icon = internet-web-browser
tooltip = NetSurf web browser
action = netsurf
}
}
}
Plugin {
type = space
config {
size = 8
}
}
Plugin {
type = space
config {
size = 3
}
}
Plugin {
type = tray
expand = true
}
Plugin {
type = launchbar
config {
button {
icon = audio-volume-high
tooltip = Adjust volumes
action = sakura -e alsamixer
}
}
}
Plugin {
type = space
config {
size = 3
}
}
# Digital Clock
Plugin {
type = tclock
config {
ClockFmt = %R
TooltipFmt = %A %x
Action = xmessage Please define some command &
}
}
Plugin {
type = space
config {
size = 3
}
}
Plugin {
type = launchbar
config {
button {
icon = exit
#image = /usr/share/fbpanel/images/file-manager.svg
tooltip = Exit session
action = killall openbox
}
}
}
Plugin {
type = space
config {
size = 3
}
}
The bottom bar, which was much more easy to make, and to mimic. Again, I expect you to further customize this to better reflect your system.
########################################
## 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
# Keywords are not case-sensitive
# Values are case-sensitive
# 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 global 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 - occupy 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
# setDockType = 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
# # Autohide
# # autoHide = false
# # heightWhenHidden = 2
# }
# '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 padding 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
autoHide = false
heightWhenHidden = 2
}
Plugin {
type = space
config {
size = 2
}
}
Plugin {
type = wincmd
config {
icon = gnome-fs-desktop
#image = /usr/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 = taskbar
expand = true
config {
ShowIconified = true
ShowMapped = true
ShowAllDesks = false
tooltips = true
IconsOnly = false
MaxTaskWidth = 150
}
}
Plugin {
type = pager
config {
showwallpaper = true
}
}
Plugin {
type = space
config {
size = 3
}
}
Plugin {
type = launchbar
config {
button {
icon = emptytrash
#image = /usr/share/fbpanel/images/file-manager.svg
tooltip = Trash
action = emelfm2 –one=~/.local/share/Trash/files
}
}
}
Plugin {
type = space
config {
size = 3
}
}
And there you have it. Don’t forget to customize it to the software you have installed; I use emelFM2 and Sakura a lot; you’ll probably want to change to the software you use (of course!
). And if your screen size differs, you’ll probably want to correct that. And if you want different icons, you’ll have to change that. And so forth, and so on. What I’m trying to say is, these aren’t something you can just drop in and run with. You have a little editing ahead of you.
And there still doesn’t seem to be an option to run without a icon. So I couldn’t duplicate the iconless “Place” and “System” menus. Oh well.
The next obvious step is to carve the Openbox right-click menu down to the two or three entries that the Gnome desktop menu has, and add a few desktop icons. iDesk might do the trick for you. Then find acceptable Ubuntu Gnomish wallpaper, maybe a GTK2 theme, cursor theme, and you should be close to done. But all that is up to you.
fbpanel is the only panel utility I know of that can run two at a time — one at the top and one at the bottom. it’s much more flexible that you would guess from looking at these pictures — if you want something very GTK that can do transparency, etc., fbpanel might interest you.
On the other hand, this is old-school Linux: You have to hand-edit almost everything there. And fbpanel isn’t very forgiving if you make a code mistake.
It looks like the author(s) are working on some sort of on-the-fly configuration. That would be a blessing, but it’s worth noting that lxpanel has already built that on to fbpanel. So I wouldn’t suggest waiting for a release of fbpanel if you want easier customization; lxpanel is basically the same thing, and is much easier to handle.
Regardless, lxpanel doesn’t want to run two-at-a-time like fbpanel does, so if it’s the fake-o Gnome desktop you’re after, I believe fbpanel is the only one that can do it.




Missing Gnome, KMandla?
No, no.
This was leftover from almost a year ago, when I was tinkering with some distro and thought about making one up that looked like it … for older machines, of course.
The last thing I want is Gnome.
very nice i’ll have to try this sometime with fluxbox or openbox
i finally got around to this k.mandla and it works perfect, i had to edit a lot and figure the code out but it was simple enough
Very interesting !!!
Nice tuto. Thanks