X11 Multi-Monitor – Filter Displayed Applications Per Screen with Fbpanel

fbpanelmulti-monitoropenboxx11

Based on my earlier question and answer from Arkadiusz Drabczyk, I have set up 3 different instances of fbpanel, separate one for each of my 3 monitors:

This is how I start fbpanel:

fbpanel -x 0 --profile left &
fbpanel -x 1 --profile center &
fbpanel -x 2 --profile right &

The 3 profiles left, center and right are defined in my ~/.config/fbpanel/. The profile center contains definition of the taskbar plugin, ie the active windows currently open are visible on the tab, and can be switched between (alt+tab) or "minimised"

Plugin {
type = taskbar
expand = true
config {
    ShowIconified = true
    ShowMapped = true
    ShowAllDesks = false
    tooltips = true
    IconsOnly = false
    MaxTaskWidth = 150
}

But the taskbar on the center monitor contains all applications (from all 3 monitors). So I have one taskbar for 3 monitors.

I would like to have one taskbar for each of my 3 fbpanels, where only applications currently occupying left monitor would be on the left fbpanel's taskbar, and so on

So basically, if I move application window form center monitor to left monitor, the application currently "docked" on the center fbpanel's taskbar should move to left fbpanel's taskbar.

I have no idea if this is possible.

More details to my setup:

Im using fbpanel in openbox, my OS is Debian Buster. I would be happy to recompile the fbpanel package, if that would solve my problem.

Best Answer

Fbpanel

The Fbpanel's plugin taskbar does not implement such feature (this is confirmed after reviewing the plugin's sources).

The only available option are defined as follow:

XCG(xc, "tooltips", &tb->tooltips, enum, bool_enum);
XCG(xc, "iconsonly", &tb->icons_only, enum, bool_enum);
XCG(xc, "acceptskippager", &tb->accept_skip_pager, enum, bool_enum);
XCG(xc, "showiconified", &tb->show_iconified, enum, bool_enum);
XCG(xc, "showalldesks", &tb->show_all_desks, enum, bool_enum);
XCG(xc, "showmapped", &tb->show_mapped, enum, bool_enum);
XCG(xc, "usemousewheel", &tb->use_mouse_wheel, enum, bool_enum);
XCG(xc, "useurgencyhint", &tb->use_urgency_hint, enum, bool_enum);
XCG(xc, "maxtaskwidth", &tb->task_width_max, int);

The available options are not well documented but here are some descriptions:

ShowIconified = true # Displays icons on the windows.
ShowMapped = true # If false here, only windows that are minimized are shown.
ShowAllDesks = false # Show the windows of all virtual desktops.
tooltips = true # Displays the complete title of the window when hovering it.
IconsOnly = false # Displays only the icons of the windows and nothing else.
MaxTaskWidth = 150 # Specifies the maximum width of a window in the taskbar.

Without patching the source the only possibility is to use different virtual desktop on your different screens (assign a virtual desktop to each of your screen) then set the option showalldesks to false for each of your 3 fbpanels, such solution (virtual desktop per screen) is discussed in details here and here.

Note also that other issues/request are made upstream without a result.

Alternatives:

As a side note, reading your other questions about LXDE here and here i guess that you quit using LXDE for those reasons but those past questions seems to have solutions.

Most lightweight desktop's panel like XFCE/LXDE support the needed feature (only display windows's tasks for the current screen) and can be used alone without their full native environment; along with your current Openbox setup (the same way you use Fbpanel).

Here is a non exhaustive list of panels than can be used independently:

XFCE panel:

## install the panel and its dependency
apt-get install xfce4-panel

## start the panel alone
xfce4-panel

LXDE panel:

## install the panel and its dependency
apt-get install lxpanel

## start the panel alone
lxpanel

LXQT panel:

## install the panel and its dependency
apt-get install lxqt-panel

## start the panel alone
lxqt-panel