The following is what you will need to compile fbpanel
:
GTK+-2.4
headers and libraries (development package)
Once you have the above dependencies installed, you are ready to build fbpanel
.
git clone https://github.com/aanatoly/fbpanel # get fbpanel
cd fbpanel # cd inside the source tree
./configure # prepare for compiling
make # build fbpanel
sudo make install # install
Simple like that ...
fbpanel& # use default profile
fbpanel -p abc& # use profile abc, create it if needed
fbpanel
stores its configurations in ~/.config/fbpanel
directory.
Every profile is represented by a single text file with a same name.
Name of default profile is default
.
Edit relevant file and restart fbpanel
.
You can also tell running fbpanel
to reload its configuration by sending it USR1
signal.
vi ~/.config/fbpanel/default
killall -USR1 fbpanel # tell fbpanel to reload configuration
In addition, there is configuration GUI that covers all panel's options, but not plugins yet.
To get it, click Ctrl-Button2
anywhere in panel or run it with -C
option.
Configuration file consists from one Global
section, that covers panel options,
and one or more Plugin
sections.
The syntax is following:
- Spaces at the beginning and at the end of a line are ignored
- Lines starting with '
#
' or blank lines are ignored. '#
' in any other place is NOT treated as comment - Variable's name is NOT case sensitive
- Variable's value IS case sensitive
- Variable's value is a text from first non-blank char after '
=
' till the last non-blank char. - Section starts by its type (
Global
orPlugin
) and '{
' on a same line, then inner variables and sections, and ends with '}
' on separate line.
It describes global panel parameters like position, size and some NetWM
settings.
If variable has default value, it can be omitted.
The full variable list is:
-
Edge
- screen edge.
Legal values areleft
,right
,top
orbottom
.
Default isbottom
. -
Align
- alignment of a panel.
Legal values areleft
,right
orcenter
.
Default iscenter
. -
WidthType
- units of width.
Legal values arepixel
- width is number of pixels,percent
- width is percent of an edge,request
- follow widgets' size requests, can shrink or grow dynamically. Default ispercent
.
-
Width
- panel width inWidthType
units.
Legal values are numbers.
Default is100
. -
HeightType
- units of height Legal values arepixel
- height is number of pixels. Default is pixel.
-
Height
- panel height inHeightType
units.
Legal values are numbers.
Default is26
. -
Margin
- margin from screen edge for left or right alignment.
Legal values are numbers.
Default is0
. -
SetDockType
- set panel'sNetWM
window type to Dock.
Legal values aretrue
orfalse
.
Default istrue
. -
SetPartialStrut
- askNetWM
compliant window manager to not cover panel by maximized windows.
Legal values aretrue
orfalse
.
Default istrue
. -
Transparent
- enable transparent background.
Legal values aretrue
orfalse
.
Default isfalse
. -
TintColor
- color to composite on root background.
Legal values are colors, e.g.0xRRGGBB
orred
,black
etc.
Default iswhite
. -
Alpha
- transparency of the tint color.
Legal values are numbers from0
to255
.
Default is127
. -
Autohide
- hide panel when mouse is far enough.
Legal values aretrue
orfalse
.
Default isfalse
. -
RoundCorners
- panel has rounded corners.
Legal values aretrue
orfalse
.
Default istrue
. -
RoundCornersRadius
- radius of rounded corners.
Legal values are numbers from0
to25
.
Default is7
. -
Layer
- stacking layer of a panel.
Legal values areabove
orbelow
.
Default isabove
. -
SetLayer
- set or not stacking layer of panel. If not, default WM policy is used.
Legal values aretrue
orfalse
.
Default isfalse
. -
MaxElemHeight
- maximal height of plugins' elements, like icons, messages etc.
If plugin has more space, it can place elements in multiple rows. Legal values are numbers from10
to200
.
Default is200
.
For example:
Global {
Edge = bottom
Align = center
Margin = 0
WidthType = percent
Width = 92
Height = 48
Transparent = true
TintColor = #ffffff
Alpha = 32
SetDockType = true
SetPartialStrut = true
Autohide = false
HeightWhenHidden = 2
RoundCorners = false
RoundCornersRadius = 7
Layer = above
SetLayer = false
MaxElemHeight = 24
}
It describes which plugin to load, how to position it and has plugin specific configuration section. If variable has default value, it can be omitted. The full variable list is:
-
type
- plugin type.
Legal values arebattery
,cpu
,dclock
,deskno
,deskno2
,genmon
,icons
,image
,launchbar
,mem
,menu
,net
,pager
,separator
,space
,systray
,taskbar
,tclock
,volume
,wincmd
.
Mandatory. -
expand
- expand plugin if extra space is available.
Legal values aretrue
orfalse
.
Default isfalse
. -
padding
- padding around plugin in pixels.
Legal values are numbers.
Default is0
. -
config
- a section with plugin specific configuration.
For example:
Plugin {
type = space
expand = false
padding = 0
config {
size = 2
}
}
Plugin {
type = cpu
}
color
- chart color.
Legal values are colors e.g.0xRRGGBB
orred
,black
etc.
Default is green.
For example:
Plugin {
type = cpu
config {
color = green
}
}
-
interface
- interface to watch.
Legal values are network interface names.
Default iseth0
. -
TxColor
- color of Tx traffic.
Legal values are colors.
Default isviolet
. -
RxColor
- color of Rx traffic.
Legal values are colors.
Default isblue
. -
TxLimit
- Tx limit of the connection, in KB/s. Used to scale chart properly.
Legal values are numbers.
Default is12
. -
RxLimit
- Rx limit of the connection, in KB/s. Used to scale chart properly.
Legal values are numbers.
Default is120
.
For example:
Plugin {
type = net
config {
interface = eth0
TxLimit = 20
RxLimit = 190
TxColor = violet
RxColor = blue
}
}
ShowWallpaper
- show desktop wallpaper in pager window or not.
Legal values aretrue
orfalse
.
Default istrue
.
For example:
Plugin {
type = pager
config {
ShowWallpaper = true
}
}
size
- size of space to occupy in pixels.
Legal values are numbers.
Default is1
.
For example:
Plugin {
type = space
config {
size = 15
}
}
ShowSwap
- show swap usage or not.
Legal values aretrue
orfalse
.
Default isfalse
.
For example:
Plugin {
type = mem
config {
ShowSwap = true
}
}
-
ShowSeconds
- show secondsor not.
Legal values aretrue
orfalse
.
Default isfalse
. -
HoursView
- 24h or 12h hours view.
Legal values are12
or24
.
Default is24
. -
TooltipFmt
- tooltip content.
Legal values arestrftime
formats.
Default is"%A %x"
. -
Action
- command to run on mouse click.
Legal values are bash commands.
Default isnone
. -
Color
- digits color.
Legal values are colors, e.g.0xRRGGBB
orred
,black
etc.
Default isblue
.
For example:
Plugin {
type = dclock
config {
ShowSeconds = false
HoursView = 24
Action = xmessage Please define some command
}
}
-
ClockFmt
- Clock format string. May containstrftime
conversion specifications and Pango markup information.
Legal values are strings.
Default is"%R"
. -
TooltipFmt
- Tooltip format string. May containstrftime
conversion specifications and Pango markup information.
Legal values are strings.
Default is"%A %x"
. -
Action
- command to run on mouse click.
Legal values are bash commands.
Default isnone
. -
ShowCalendar
- Show aGTK
calendar widget when the clock is clicked. Only valid ifAction
is unset.
Legal values aretrue
orfalse
.
Default istrue
. -
ShowTooltip
- Show tooltip for clock.
Legal values aretrue
orfalse
.
Default istrue
.
Plugin {
type = tclock
config {
# 2 line view, time in bold above and date below
ClockFmt = <span font="Sans 8"><b>%-l:%M</b> %P&#xA;%a %B %-e</span>
TooltipFmt = %A %x
#Action = xmessage Please define some command
ShowCalendar = false
ShowTooltip = true
}
}
TBD
plugin {
type = taskbar
expand = true
config {
ShowIconified = true
ShowMapped = true
ShowAllDesks = false
tooltips = true
IconsOnly = false
MaxTaskWidth = 150
}
}
TBD
For example:
plugin {
type = launchbar
expand = false
padding = 0
config {
button {
icon = gnome-terminal
tooltip = Terminal
action = xterm
}
button {
image = /opt/google/chrome/product_logo_48.png
tooltip = Google Chrome
action = google-chrome
}
}
}
TBD
For example:
plugin {
type = menu
config {
icon = start-here
systemmenu {
}
separator {
}
menu {
name = Computer
icon = computer
item {
name = Terminal
icon = terminal
action = x-terminal
}
item {
name = Lock Display
icon = gnome-lockscreen
action = xtrlock2
}
separator {
}
item {
name = Reboot
icon = gnome-session-reboot
action = sudo reboot
}
}
}
}
TBD
For example:
plugin {
type = icons
expand = false
padding = 0
config {
DefaultIcon = /usr/share/fbpanel/images/default.xpm
application {
icon = gnome-terminal
ClassName = XTerm
}
application {
icon = gnome-terminal
ClassName = mlterm
}
application {
icon = gnome-terminal
ClassName = URxvt
}
application {
icon = gnome-emacs
ClassName = Emacs
}
application {
icon = mozilla-firefox
ClassName = Firefox-bin
}
application {
icon = mozilla-firefox
ClassName = Firefox
}
application {
image = /usr/share/icons/yasis/scalable/apps/gnome-ppp.svg
AppName = minicom
}
}
}