Currently, this is a draft work-in-progress page. |
Contents
Introduction
This page describes installing and configuring Compiz Fusion 3D desktop in Mageia Linux.
Compiz can work well with different Desktop Environments. It also works in XFCE and LXDE.
It probably will not work with Gnome or Plasma. Here we look at how it works with MATE.
Benefits
Compiz fusion offers a way to organize your desktop environment making full use of 3D capablities of your graphics card.
For more background on Compiz Fusion please see wikipdia page.
Assumptions
Here we assume you already have MATE desktop environment already installed and configured.
Install Compiz
/bin/sudo urpmi compiz-plugins-main compiz-fusion-icon compiz-decorator-gtk
Example:
[user@localhost ~]$ /bin/sudo urpmi compiz-plugins-main compiz-fusion-icon compiz-decorator-gtk To satisfy dependencies, the following packages are going to be installed: Package Version Release Arch (medium "Core Release (Installer)") lib64protobuf17 3.6.1 1.mga7 x86_64 (medium "Core Release") compiz-ccsm 0.8.16 2.mga7 noarch compiz-fusion-icon 0.2.4 4.mga7 noarch compiz-manager 0.7.0 2.mga7 noarch compiz-plugins-main 0.8.16 1.mga7 x86_64 compizconfig 0.8.16 2.mga7 x86_64 compizconfig-python 0.8.16 3.mga7 x86_64 compositing-wm-common 2018.0 16.mga7 x86_64 lib64appindicator3-gir0.1 12.10.0 21.mga7 x86_64 lib64compizconfig0 0.8.16 2.mga7 x86_64 xvinfo 1.1.4 1.mga7 x86_64 (medium "Core Updates") compiz 0.8.16.1 3.1.mga7 x86_64 compiz-decorator-gtk 0.8.16.1 3.1.mga7 x86_64 lib64decoration0 0.8.16.1 3.1.mga7 x86_64 16MB of additional disk space will be used. 3.1MB of packages will be retrieved. Proceed with the installation of the 14 packages? (Y/n) y distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/compiz-manager-0.7.0-2.mga7.noarch.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/lib64appindicator3-gir0.1-12.10.0-21.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/compiz-ccsm-0.8.16-2.mga7.noarch.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/compizconfig-0.8.16-2.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/lib64compizconfig0-0.8.16-2.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/xvinfo-1.1.4-1.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/compiz-fusion-icon-0.2.4-4.mga7.noarch.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/compositing-wm-common-2018.0-16.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/compiz-plugins-main-0.8.16-1.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/release/compizconfig-python-0.8.16-3.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/updates/compiz-decorator-gtk-0.8.16.1-3.1.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/updates/compiz-0.8.16.1-3.1.mga7.x86_64.rpm distrib-coffee.ipsl.jussieu.fr::mageia/distrib/7/x86_64/media/core/updates/lib64decoration0-0.8.16.1-3.1.mga7.x86_64.rpm installing /var/cache/urpmi/rpms/compiz-0.8.16.1-3.1.mga7.x86_64.rpm /var/cache/urpmi/rpms/compiz-ccsm-0.8.16-2.mga7.noarch.rpm /var/cache/urpmi/rpms/compiz-manager-0.7.0-2.mga7.noarch.rpm /var/cache/urpmi/rpms/compiz-plugins-main-0.8.16-1.mga7.x86_64.rpm /mnt/Mageia-7.1-x86_64/x86_64/media/core/lib64protobuf17-3.6.1-1.mga7.x86_64.rpm /var/cache/urpmi/rpms/lib64decoration0-0.8.16.1-3.1.mga7.x86_64.rpm /var/cache/urpmi/rpms/compiz-fusion-icon-0.2.4-4.mga7.noarch.rpm /var/cache/urpmi/rpms/xvinfo-1.1.4-1.mga7.x86_64.rpm /var/cache/urpmi/rpms/lib64appindicator3-gir0.1-12.10.0-21.mga7.x86_64.rpm /var/cache/urpmi/rpms/compiz-decorator-gtk-0.8.16.1-3.1.mga7.x86_64.rpm /var/cache/urpmi/rpms/compositing-wm-common-2018.0-16.mga7.x86_64.rpm /var/cache/urpmi/rpms/compizconfig-python-0.8.16-3.mga7.x86_64.rpm /var/cache/urpmi/rpms/lib64compizconfig0-0.8.16-2.mga7.x86_64.rpm /var/cache/urpmi/rpms/compizconfig-0.8.16-2.mga7.x86_64.rpm Preparing... ############################################################################################################################################################ 1/14: xvinfo ############################################################################################################################################################ 2/14: lib64decoration0 ############################################################################################################################################################ 3/14: lib64appindicator3-gir0.1 ############################################################################################################################################################ 4/14: lib64protobuf17 ############################################################################################################################################################ 5/14: lib64compizconfig0 ############################################################################################################################################################ 6/14: compizconfig ############################################################################################################################################################ 7/14: compiz-manager ############################################################################################################################################################ 8/14: compositing-wm-common ############################################################################################################################################################ 9/14: compiz-decorator-gtk ############################################################################################################################################################ 10/14: compiz-ccsm ############################################################################################################################################################ 11/14: compiz ############################################################################################################################################################ 12/14: compizconfig-python ############################################################################################################################################################ 13/14: compiz-fusion-icon ############################################################################################################################################################ 14/14: compiz-plugins-main ############################################################################################################################################################
Confirm version installed is 0.8.16.1-3.1 (or higher):
[user@localhost ~]$ rpm -q compiz compiz-decorator-gtk compiz-0.8.16.1-3.1.mga7 compiz-decorator-gtk-0.8.16.1-3.1.mga7
Configure Compiz
Run the Compiz Configuration Settings Manager (ccsm) to define the how we wish the 3D desktop to appear.
In this example, we will set a rotatable cube with a workspace on the side faces of the cube. The background "behind" the cube is referred to as the skydome.
First, run ccsm:
ccsm
or from the GUI: Applications => Tools => CompizConfig Settings Manager
Screenshot:
____________________________________________ ^ click on: 1. MATE Compatibility 2. Desktop Cube 3. Rotate Cube |
Screenshot:
____________________________________________^ click on: Disable Desktop Wall |
NB: At this point, we are not yet running Compiz.
Start Compiz
/usr/bin/compiz ccp --replace
Alternatively, use the example script compiz_position in Appendix-1:_compiz_position_script (below) which will set out some programs on workspaces in the 3D desktop:
workspace | program | Comment |
---|---|---|
1 | mate-terminal | multi-tabbed |
1 | gkrellm | system monitor |
2 | ccsm | compiz configuration setting manager |
3 | Google Chrome | google-chrome-stable Installing_Google_Chrome_in_Mageia |
4 | Mozilla Firefox | (downloaded version not ESR) |
Example:
[user@localhost ~]$ ~/bin/compiz_position stdout and stderr now being written to /home/user/logs/compiz_position_log+ log results in /home/user/logs/compiz_position_log
This is a similar configuration as in the example script: Configuring_autostart_with_MATE_in_Mageia#Appendix-1:_Autostart_script_example_MATE_initrc.
Modify to your needs.
Using Compiz
Change number of workspaces
To increase number of workspaces from default 4:
CCSM => General Options => Desktop size => Horizontal Virtual Size => + (to increase) or - (to decrease)
Compiz keys
Here are some key sequences used with compiz. Most require a setting to be made in ccsm to enable.
If your ccsm does not have a particular effect then you probably need to install additional compiz plugins package.
Here, key <super> refers to what is typically labelled as the "windows" key on most keyboards.
# | action | keys | Comment |
---|---|---|---|
1 | fire drawing | <super> + <shift> + <left_mouse_button> and drag | check "Paint fire on screen" in ccsm.
To disable: uncheck in ccsm. |
2 | snow | toggle snow on/off with: <super> + <f3> | snowing in your desktop
check "Snow" in ccsm "extras" |
3 | stars | toggle stars on/off with <super> + <f5> | desktop travelling through stars.
check "Stars" in ccsm "extras" |
4 | fireflies | toggle stars on/off with <super> + <f7> | multi-coloured fireflies in your desktop
check "Fireflies" in ccsm "extras" |
5 | spin cube left | <ctrl> + <alt> + <left_arrow> | check "cube" and "rotate cube" in ccsm "desktop" |
6 | spin cube right | <ctrl> + <alt> + <right_arrow> | check "cube" and "rotate cube" in ccsm "desktop" |
7 | spin cube to specific workspace | left click mouse on specific workspace in workspace selector (bottom right) | check "cube" and "rotate cube" in ccsm "desktop" |
8 | zoom out | hold <ctrl> + <alt> and tap and release <down_arrow> use <left_arrow> or <right_arrow> to find workspace |
|
9 | rotate cube in any direction | hold <ctrl> + <alt> and hold left mouse button and move mouse | check "cube" and "rotate cube" in ccsm "desktop" |
10 | animate aquarium "inside" cube | no specific keys: view aquarium when rotating cube | check "Cube Atlantis" in ccsm "Effects" |
11 | Earth globe inside cube with starry night sky skydome | no specific keys: view Earth when rotating cube | check "Earth" in ccsm "Effects" |
Appendix-1: compiz_position script
Example script for positioning mate-terminal, gkrellm, chrome and firefox on specific workspaces on the compiz 3D desktop.
Follows on from example MATE_initrc script example in: Configuring_autostart_with_MATE_in_Mageia
#!/usr/bin/bash # Name compiz_position version=13 # Purpose Starts compiz (if not already running) and position software windows on Compiz workspaces # Follow on from: # https://wiki.mageia.org/en/Configuring_autostart_with_MATE_in_Mageia # for when compiz in use. # # Positions of windows started with MATE_initrc via autostart # are lost when compiz is started because compiz uses a single workspace # for 3D shape "workfaces". # So, when compiz is started, windows all appear in first workspace/face. # "compiz_position" puts windows back in pre-defined position for compiz usage. # Author paul[dot]blackburn[at]gmail[dot]com # Written 2020_04_07 # Updated Tue 14 Apr 2020 12:36:09 AM BST # Updates # 2020_04_13 more portable position and resize mate-terminal on 395, added "Tips" # 2020_04_11 bugfix on 314: with doit, need to use: grep \"compiz\ ccp\" # 2020_04_11 tidy up code around starting compiz # 2020_04_11 bugfix on 310: doit grep for s/compiz\ ccp/compiz\\ ccp/ # 2020_04_10 bugfix: s/maxNF/max_NF/ on line 336 # 2020_04_10 add pause after starting compiz so that $(wmctrl -d) will return correct compiz data # 2020_04_10 Fix for loop for rotations after positioning # 2020_04_09 Logs to logfile in ~/logs/ # 2020_04_09 Added ccsm in workspace 2 # Assumptions # o compiz installed # o wmctrl installed # o will move windows to workspace/geos based on MATE_initrc conventions # Tips # o Disable "splash screen" in ccsm: does not work with compiz_position # o Determine a window's geometry and size with: # sleep 3 && xdotool getwindowfocus getwindowgeometry # Acknowledgements # for rotate function: Shang-Feng Yang # https://sfyang-en.blogspot.com/2008/02/rotate-cube-in-compiz-with-wmctrl.html #LOCAL code sections tagged #LOCAL for localizations # functions ------------------------------------------------------------- function rotate() { # rotate the compiz "cube" # The target face number (begins with 0) let TVPN=${1}%${NF} # The X coordinate of the target viewport let TVPX=${TVPN}*${WW} # Change to the target viewport wmctrl -o ${TVPX},0 } usage() { cat <<eeooff ${cmd} starts compiz (if not already running) and re-positions mate-terminal, gkrellm, ccsm, chrome and firefox at pre-defined workspaces (as were in MATE without compiz) Can also be used to restart compiz. Please report bugs/suggestions/comments to: ${default_notify} eeooff } fatal() { echo "${cmd} fatal: ${1}" >&2 exit 1 } error() { echo "${cmd} error: ${1}" >&2 } warning() { echo "${cmd} warning: ${1}" >&2 } tstamp() { echo $(date +%Y_%m_%d_at_%H:%M:%S) ${cmd}: ${1} } doit() { tstamp "${1}" eval ${1} retcode=$? if [ ${retcode} != 0 ]; then error "\$?=${retcode}" fi } elapsed_time () { start=${1} end=${2} # echo debug: elapsed_time ${start} ${end} unset x unset y if [ ${start} = ${end} ]; then echo -n "zero seconds" fi let elapsed_seconds=${end}-${start} let days=${elapsed_seconds}/86400 let days_sec=${days}*86400 let x=${elapsed_seconds}-${days_sec} let hours=${x}/3600 let hours_sec=${hours}*3600 let x=${days_sec}+${hours_sec} let y=${elapsed_seconds}-${x} let mins=${y}/60 let mins_sec=${mins}*60 let x=${days_sec}+${hours_sec}+${mins_sec} let secs=${elapsed_seconds}-${x} if [ ${days} != 0 ]; then if [ ${days} = 1 ]; then echo -n "1 day " else echo -n "${days} days " fi fi if [ ${hours} != 0 ]; then if [ ${hours} = 1 ]; then echo -n "1 hour " else echo -n "${hours} hours " fi fi if [ ${mins} != 0 ]; then if [ ${mins} = 1 ]; then echo -n "1 minute " else echo -n "${mins} minutes " fi fi if [ ${secs} != 0 ]; then if [ ${secs} = 1 ]; then echo -n "1 second " else echo -n "${secs} seconds" fi fi echo } trap_cleanup () { # tidy up on receipt of signal (ctrl-C, etc) tstamp "trap_cleanup commenced" doit "rm ${lockfile}" epoch_now=$(date +%s) tstamp "total duration $(elapsed_time ${start_epoch} ${epoch_now})" tstamp "trap_cleanup completed" exit 1 } # end functions section # set initial values ---------------------------------------------------------------------- cmd=$(basename $0) cmdline="${cmd} $*" logdir=~/logs log=${logdir}/${cmd}_log lockfile=/tmp/${cmd}_lockfile tempfile=/tmp/${cmd}_tempfile_$$ # Configure the following for your needs: #LOCAL default_notify=Your.email@wherever.org # set to email to be notified of errors #LOCAL # main starts here ------------------------------------------------------------------------ start_epoch=$(date +%s) # set interrupt signal trap routine for signal in 1 2 3 15; do trap "echo \"interrupted by signal ${signal}\"; trap_cleanup; exit 1" ${signal} done case "${1}" in -? | -help | -usage | --?| --help | --usage ) usage exit ;; esac mkdir -p ${logdir} 2>/dev/null # make sure we have a $logdir echo "stdout and stderr now being written to ${log}+" exec 4>&2 exec 3>&1 exec 1>${log}+ exec 2>&1 tstamp "commenced $(dirname ${0})/${cmd} version ${version} on $(date '+%a %d %h %y')" doit "zenity --notification --title ${cmd} --text='${cmd} commenced'" # sanity checking starts here ----------------------- tstamp "Check we are running on Linux" os=$(uname) if [ "${os}" != "Linux" ]; then fatal "${os} is not Linux. Bye-bye!" else tstamp "Good news: this is Linux" fi failed="false" essential_command_list="wmctrl compiz" for command in ${essential_command_list}; do tstamp "checking we have essential command: ${command}" which ${command} 2>&1 > /dev/null if [ $? = 0 ]; then tstamp "Good, we have ${command}: $(${command} --version)" else warning "missing essential command: ${command}" warning "Please install ${command} and try again" failed="true" fi done if [ ${failed} = "true" ]; then fatal "Unable to continue. Bye." fi #LOCAL - If you change the programs started in the autostart section then you need to also update "command_list=" below tstamp "Checking if we have the commands we need" command_list="mate-terminal gkrellm /usr/bin/google-chrome-stable ${HOME}/Downloads/firefox/firefox zenity ccsm" for command in ${command_list}; do # tstamp "checking we have ${command} command" which ${command} 2>&1 > /dev/null if [ $? = 0 ]; then tstamp "Good, we have ${command}: $(${command} --version)" else warning "missing command: ${command}" warning "Please install ${command} and try again" failed="true" fi done # end of (most) sanity checking -------------------------------------- # crack command line arguments while [ ! -z "${1}" ]; do case ${1} in -notify ) shift if [ -z "${1}" ]; then fatal "missing notify email address" else notify=${1} fi ;; -notify*) notify=$(echo ${1} | cut -c8-) ;; -help | -? | -usage ) usage exit ;; *) warning "unknown command line argument: ${1}" usage exit 1 ;; esac shift done if [ -z "${notify}" ]; then notify=${default_notify} fi # If we reached here then it is likely we can complete a normal run # but we need to switch the logfile. # Start by renaming an existing previous log by adding a date prefix if [ -s ${log} ]; then old_log=$(dirname ${log})/$(date +%Y_%m_%d_at_%H:%M:%S)_$(basename ${log}) doit "mv -f ${log} ${old_log} # rename previous log to <date>_log " fi doit "mv ${log}+ ${log} # log cycling" # processing --------------------------------------------------------- # Is Compiz running? If not then start it. need_compiz_started="false" compiz_pid="" ps -ef | grep "compiz\ ccp" | grep -v grep if [ $? = 0 ]; then tstamp "compiz is already running" else tstamp "compiz is not running starting compiz" doit "compiz ccp --replace &" doit "ps -ef | grep \"compiz\ ccp\" | grep -v grep" need_compiz_started="true" fi compiz_pid=$(ps -ef | grep "compiz\ ccp" | grep -v grep | awk '{print $2}') tstamp "compiz pid is: ${compiz_pid}" if [ "${need_compiz_started}" = "true" ]; then doit "sleep 3 # pause for compiz start up" fi # initializations ---------------------------------------------------- doit "wmctrl -d # List all desktops managed by the window manager" # information about the desktop INFO=$(wmctrl -d) # width of the desktop DW=$(echo "${INFO}"| awk '{sub(/x[0-9]+/, "", $4); print $4}') tstamp "DW=${DW}" # width of the workarea WW=$(echo "${INFO}"| awk '{sub(/x[0-9]+/, "", $9); print $9}') tstamp "WW=${WW}" # number of faces on the compiz "cube" let NF=${DW}/${WW} tstamp "NF=${NF}" # limit check for NF (number of faces): if wmctrl not returning compiz specific data (above) let max_NF=8 if [ "${NF}" -ge "${max_NF}" ]; then warning "NF=${NF} throttled to NF=${maxNF}" let NF=${maxNF} fi # X coordinate of the viewport CVPX=$(echo "${INFO}" |awk '{sub(/,[0-9]+/, "", $6); print $6}') # Current number of the face in all faces (begins with 0) let CVPN=${CVPX}/${WW} tstamp "processing windows geometries and placement on workspaces" # geometry for Firefox on 4th face (from MATE_initrc) firefox_geo="0,160,30,1752,990" firefox_x=160 #### Compiz has a single super-wide workspace #### So we compute: x=offset+((WorkspaceNumber-1)*WorkspaceWidth) # For Firefox on the 4th workspace, compute "firefox_x": let firefox_x=${firefox_x}+3*${WW} firefox_geo="0,${firefox_x},30,1754,990" doit "wmctrl -i -r $(wmctrl -lp | grep "Mozilla Firefox"| awk '{print $1}') -e ${firefox_geo} # position and resize Mozilla Firefox" #geometry for Google Chrome on workspace-3 (from MATE_initrc) chrome_geo="0,150,30,1766,1020" chrome_x=150 # For Google Chrome on the 3rd workspace, compute "chrome_x": let chrome_x=${chrome_x}+2*${WW} chrome_geo="0,${chrome_x},30,1766,1020" doit "wmctrl -i -r $(wmctrl -lp | grep "Google Chrome" | awk '{print $1}') -e ${chrome_geo} # position and resize Google Chrome" # For ccsm on 2nd workspace, compute "ccsm_geo_x": ccsm_geo="0,280,30,1640,964" ccsm_geo_x=280 let ccsm_geo_x=${ccsm_geo_x}+${WW} ccsm_geo="0,${ccsm_geo_x},30,1640,964" doit "wmctrl -i -r $(wmctrl -lp | grep "CompizConfig Settings Manager" | awk '{print $1}') -e ${ccsm_geo} # position and resize CCSM" #Geometry for mate-terminal on 1st workspace ##mate_terminal_geo="154x42+146+30" ##mate_terminal_geo="0,149,30,1556,981" mate_terminal_geo="0,136,30,1556,960" doit "wmctrl -i -r $(wmctrl -lp | grep "$(echo ${USER}@$(hostname | awk -F\. '{print $1}'):)" | awk '{print $1}') -e ${mate_terminal_geo} # position and resize mate_terminal" #Geometry for gkrellm on 1st workspace #gkrellm_geo="+1714+30" gkrellm_geo="0,1714,30,200,826" doit "wmctrl -i -r $(wmctrl -lp | grep "gkrellm" | awk '{print $1}') -e ${gkrellm_geo} # position and resize gkrellm" doit "zenity --notification --title ${cmd} --text='${cmd} rotating through ${NF} workspaces'" let i=1 while [ ${i} -le ${NF} ]; do # doit "zenity --notification --title ${cmd} --text='${cmd} rotate ${i}'" doit "rotate ${i} && sleep 2" let i=${i}+1 done doit "zenity --notification --title ${cmd} --text='${cmd} completed'" # tidying up and ending ------------------------------------------------------------------ end_epoch=$(date +%s) tstamp "total duration $(elapsed_time ${start_epoch} ${end_epoch})" tstamp "completed" # Switch stdout and stderr back to report results ONLY if something failed # Restore stdout and stderr exec 1>&3 exec 2>&4 # email log if there was a ${failed} if [ "${failed}" = "true" ]; then < ${log} mail -s "${cmd} on $(hostname)" ${notify} fi echo log results in ${log}
Appendix-2: example logfile from compiz_position script
mpb@kali:~$ nl /home/mpb/logs/compiz_position_log 1 2020_04_14_at_00:36:32 compiz_position: commenced bin/compiz_position version 13 on Tue 14 Apr 20 2 2020_04_14_at_00:36:32 compiz_position: zenity --notification --title compiz_position --text='compiz_position commenced' 3 2020_04_14_at_00:36:32 compiz_position: Check we are running on Linux 4 2020_04_14_at_00:36:32 compiz_position: Good news: this is Linux 5 2020_04_14_at_00:36:32 compiz_position: checking we have essential command: wmctrl 6 2020_04_14_at_00:36:32 compiz_position: Good, we have wmctrl: 1.07 7 2020_04_14_at_00:36:32 compiz_position: checking we have essential command: compiz 8 2020_04_14_at_00:36:32 compiz_position: Good, we have compiz: compiz 0.8.18 9 2020_04_14_at_00:36:32 compiz_position: Checking if we have the commands we need 10 2020_04_14_at_00:36:32 compiz_position: Good, we have mate-terminal: MATE Terminal 1.24.0 11 2020_04_14_at_00:36:32 compiz_position: Good, we have gkrellm: gkrellm 2.3.10 12 2020_04_14_at_00:36:32 compiz_position: Good, we have /usr/bin/google-chrome-stable: Google Chrome 81.0.4044.92 13 2020_04_14_at_00:36:32 compiz_position: Good, we have /home/mpb/Downloads/firefox/firefox: Mozilla Firefox 75.0 14 2020_04_14_at_00:36:32 compiz_position: Good, we have zenity: 3.32.0 15 Another CCSM instance is already running... 16 2020_04_14_at_00:36:32 compiz_position: Good, we have ccsm: 17 2020_04_14_at_00:36:32 compiz_position: mv -f /home/mpb/logs/compiz_position_log /home/mpb/logs/2020_04_14_at_00:36:32_compiz_position_log # rename previous log to <date>_log 18 2020_04_14_at_00:36:32 compiz_position: mv /home/mpb/logs/compiz_position_log+ /home/mpb/logs/compiz_position_log # log cycling 19 mpb 4397 1 2 Apr13 pts/4 00:01:08 compiz ccp --replace 20 2020_04_14_at_00:36:32 compiz_position: compiz is already running 21 2020_04_14_at_00:36:32 compiz_position: compiz pid is: 4397 22 2020_04_14_at_00:36:32 compiz_position: wmctrl -d # List all desktops managed by the window manager 23 0 * DG: 11520x1080 VP: 0,0 WA: 0,28 1920x1027 Workspace 1 24 2020_04_14_at_00:36:32 compiz_position: DW=11520 25 2020_04_14_at_00:36:32 compiz_position: WW=1920 26 2020_04_14_at_00:36:32 compiz_position: NF=6 27 2020_04_14_at_00:36:32 compiz_position: processing windows geometries and placement on workspaces 28 2020_04_14_at_00:36:32 compiz_position: wmctrl -i -r 0x04000003 -e 0,5920,30,1754,990 # position and resize Mozilla Firefox 29 2020_04_14_at_00:36:32 compiz_position: wmctrl -i -r 0x02e00001 -e 0,3990,30,1766,1020 # position and resize Google Chrome 30 2020_04_14_at_00:36:32 compiz_position: wmctrl -i -r 0x05000007 -e 0,2200,30,1640,964 # position and resize CCSM 31 2020_04_14_at_00:36:32 compiz_position: wmctrl -i -r 0x0340000b -e 0,136,30,1556,960 # position and resize mate_terminal 32 2020_04_14_at_00:36:32 compiz_position: wmctrl -i -r 0x02200003 -e 0,1714,30,200,826 # position and resize gkrellm 33 2020_04_14_at_00:36:32 compiz_position: zenity --notification --title compiz_position --text='compiz_position rotating through 6 workspaces' 34 2020_04_14_at_00:36:32 compiz_position: rotate 1 && sleep 2 35 2020_04_14_at_00:36:34 compiz_position: rotate 2 && sleep 2 36 2020_04_14_at_00:36:36 compiz_position: rotate 3 && sleep 2 37 2020_04_14_at_00:36:38 compiz_position: rotate 4 && sleep 2 38 2020_04_14_at_00:36:40 compiz_position: rotate 5 && sleep 2 39 2020_04_14_at_00:36:42 compiz_position: rotate 6 && sleep 2 40 2020_04_14_at_00:36:44 compiz_position: zenity --notification --title compiz_position --text='compiz_position completed' 41 2020_04_14_at_00:36:45 compiz_position: total duration 13 seconds 42 2020_04_14_at_00:36:45 compiz_position: completed