Workspaces applet compatible with Compiz?

Hello,
On my top panel, I usually put the workspace applet on two lines, so i have a tiny zone with four virtual desktops displayed as a grid (2 × 2).

While testing Compiz today, I noticed that the applet behaves in a weird way, likely related to the specific way Compiz handles the virtual desktops:

  • it always display the four desktops on the same row (so adding more rows just displays blank ones below), while still adapting the width of the zone;
  • it doesn’t take the number of desktops set in the applet into account (it displays four but handles them as one: adding or removing some doesn’t work);
  • moving through the desktops with the mouse wheel doesn’t work;
  • moving windows from one desktop to another with drag and drop in the applet doesn’t work.

Is there a workspaces applet compatible with Compiz available somewhere? Or a fixed version planned to work with Compiz?

I think part of the issue may be that the workspace switcher preference menu is no good in compiz, you have to go into general compiz settings and adjust number and layout of desktops, I’ve noticed that before whenever I tried out compiz

@Bernie is right. Compiz handles workspace settings on it's own. You'll have to install the compiz settings manager...

sudo apt install compizconfig-settings-manager

... which you can then launch from inside MATE Tweak. Now you'll be able to change the desktop configuration in the last tab under "General Options".

Just leave the workspace switcher applet as one row and it'll use the settings from compiz.

Thanks. I remembered that Compiz had its own settings but I didn’t remember where to find them in CCSM. The applet does indeed display fine when setting the workspaces that way.

There’s still the issue of drag & drop and mouse wheel not working, though. I assume it’s because, from the applet point of view, there’s only one workspace?

I cannot answer that part of the question as I do not actively use compiz, I just remember figuring the other part out when experimenting with compiz, marco for me especially in 18.04 :grinning:

It seems that in Compiz, you also loose tasklist workspace isolation.

Realise this was an old post, but if anyone finds it in the future and needs a similar answer on using mouse wheel with Compiz Workspace Switcher, see here

i just wrote an test app in gambas that can set multiple rows/colums and number of workspaces when using compiz.
See topic on gambasone
(Very rubbish WIP tester app, made as a tester for adding virtualroot handling in gambas)
download WIP gambas application

The code to set workspaces is simple.
it just sets _NET_DESKTOP_GEOMETRY to [Screen.Width * Columns, Screen.Height * Rows]

the number of desktops is automatically set by the geometry size, so if geometry is twice the screen width and twice the height then the count will automatically be 4

the panel workspace manager "could" easily be updated to do the same simple function. (Where's the developers?)

Also in compiz you need to disable "Desktop cube" and enable "Desktop Wall" to use multiple rows.

You could also use xprop

if screen width is 1920 and height 1080 then to get a 3 column 2 row spread use this command..

xprop -root -notype -f _NET_DESKTOP_GEOMETRY 32c -set _NET_DESKTOP_GEOMETRY "5760, 2160"

or use a script, something like this will work for setting rows and if required columns...

#!/usr/bin/env bash

# set workspace rows when using compiz
# Note: disable compiz "desktop cube" and enable "desktop wall" or multiple rows will not work
# save file as "setrows" or something, make it executable then use..
# setrows 2
# setrows 3

# Columns can also be set with an additional number
# so for 2 rows with 4 columns use
# setrows 2 4

ROWS=$1
if [ $ROWS -lt 1 ]; then
 echo "bad row count"
 exit
fi
COLS=$2

# get current screen size
SCREEN=$(xrandr | grep "*"| awk {'print $1'})
X=${SCREEN%x*}
Y=${SCREEN#*x}

# multiply height by rows
Y=$[Y*$ROWS]

# check if columns arg was given
if [ "$COLS" != "" ]; then
  if [ $COLS -lt 1 ]; then
   echo "bad column count"
   exit
  fi
# multiply given columns by screen width
  X=$[X*$COLS]

else
# no column arg was given so get total current geometry width
  GEO=$(xprop -root -notype _NET_DESKTOP_GEOMETRY|tr -d " "|tr , " ")
  GEO=${GEO##*=}
  X=${GEO% *}
fi

# set new geometry
xprop -root -notype -f _NET_DESKTOP_GEOMETRY 32c -set _NET_DESKTOP_GEOMETRY "$X, $Y"

After setting the geometry the workspace switcher applet works fine for moving to the workspaces, it's just rubbish at configuring it with compiz,