Things to know before installing
Works for 19.10!
May cause isssues on 20.04. :
Information for Focal Fossa
prerequisites
needs editing to be compatible. This is explained further down this guide. There are issues with this, beware as this may not work on all machines.
Information for Eoan Ermine
Using the latest Ubuntu as of this edit? Excellent. Skip right to installation since Compiz isn't a thing that ships with Ubuntu MATE anymore. (Sadly, off goes Compton too, but hey, priorities.)
If you upgraded to Eoan, you will still have residual 19.04 assets like Compiz 0.9 installed, so the above only really applies to people starting fresh with 19.10. If this is you, treat it like 19.04.
If you're uncomfortable making wide-sweeping changes to your operating system's pre-installed content, then don't do this. It's as simple as that.
For most people, desktop effects like what Compiz Reloaded provide are not worth the long-term hassle of needing to reinstall every Ubuntu update, and it sort of condemns you to doing this all over again per major update just so your desktop does not break . More information about how to prevent issues between system upgrades are presented in the section When upgrading Ubuntu.
If you're trying to reinstall this and for some reason you get errors, try to install dependent packages and autocompleting with <Tab>
in terminal until you find the package that is unavailable. This may happen on occasion, especially if the build routines for the copy of Compiz 0.8 being compiled uses packages older than what is available as of present, which can be had from package archives for either your main distribution or root distribution.
Introduction
If you're really interested, expand this.
Compiz Reloaded is certainly a passion project. Combining together the previous development of Compiz 0.8 with the present combined efforts of the MATE team and Compiz community, with esoteric compiz scripts you previously had to scour the web for, entirely maintained by enthusiasts who believe their community-maintained backport still functions better, the "Compositor that refuses to die" presents itself as the one downgrade you must perform to get the most out of it because Compiz 0.9 was published by Canonical expressly for Unity, and whatever else you could do with it was gravy but the old plugins that hardcore users come to expect way back pre-Unity hadn't been updated to use the new Compiz for various technical reasons.
Before, you had to figure out how to compile it all together yourself. But lots of people aren't that smart to compile it all themselves, which left the fancy stuff to the geeks who really knew what they were doing with time to burn. Sounds like a lot of people, doesn't it?[/s] Jokes aside, while previously backporting was out of reach for most people, it's now been super-simplified since you don't need to go about searching for plugins to make the experience worthwhile.
It also helps that with Ubuntu MATE, there's no Unity to be had, so you don't need to worry about uninstalling that before you do this, as replacing Compiz 0.9 with this backport will most certainly break Unity. When you are finished, you'll have the following suite of software;
Compiz 0.8.x (compiz
)
CompizConfig Settings Manager for Compiz 0.8.x (ccsm
)
Emerald window decorator (emerald
)
Emerald Theme Manager (emerald-theme-manager
)
Preparing for downgrade
This is rather destructive. When finished, you'll have gutted your present install of Compiz 0.9, which may also remove ubuntu-mate-desktop
. ubuntu-mate-desktop
is only a metapackage, and it is not required for your system to function, but you must not install that package, or any packages associated with Compiz 0.9 and its dependencies thereafter.
That use to be the case in older versions. In newer versions Compiz is either entirely separate or excluded completely, which means the above will not remove the metapackage. Any further discussion about this being an issue should be ignored for newer Ubuntu versions.
Before you do this, you really should open mate-tweak
and under the Windows section, change your window manager to Marco if you're using Compiz 0.9 presently.
Perform the following to remove Compiz completely:
In
x-terminal-emulator
:sudo apt-get --purge autoremove emerald #In case you have it sudo apt-get --purge autoremove 'compiz*' libdecoration0
Installation / Downgrading
You'll need to fetch the scripts from git which allow you to install this :
In
x-terminal-emulator
:sudo apt-get install git #You really should have this already mkdir -p ~/git/compiz && cd ~/git/compiz #Modify to preference for organization git clone git://northfield.ws/compiz/scripts && cd scripts git checkout master #Just in case, though probably entirely unnecessary ./go
There are still issues with 20.04. While this information is preserved for integrity and explanation, this advice should not be followed until all 20.04 issues are resolved. When resolved, this warning will be removed with updated information. Thank you for understanding.
scripts/prerequisites
requires modification in 20.04 to be useful. To install Compiz 0.8 in 20.04, the following changes must be made inprerequisites
:With text eidtor of preference, in
prerequisites
@ line 37:
Replace:dependencies+="python-dev "
With :
dependencies+="python-dev-is-python2 "
Beware,
python-dev-is-python3
breaks everything. I will let Scott know about this and see what he's going to do about it.Once modified and saved, you can execute
./go
without encountering any issues.
When scripts/go
is executed, you'll see an absolute freightload of text. If you want to see all of it, you'll have to write it somewhere on your system; Instead of ./go
on its own, you might want to do this;
In
x-terminal-emulator
:./go > ~/compiz-install.log #Modify filepath and intended filename to preference.
When it is done compiling and you have control of your terminal back, here's all you need to do for testing, in list order;
- If you feel you must, check version;
compiz --version
(Should be 0.8.*) - Check if compizconfig-settings-manager from the Compiz Reloaded git works;
ccsm
- Check if Compiz works;
compiz --replace &
- Return to Marco;
marco --replace &
- Enable at login in one of two ways;
- Open
mate-tweak
and specify to use Compiz;compiz
is version 0.8 at this point - Make a new launcher in
mate-session-properties
, executingcompiz --replace
so Marco remains active as fallback
- Open
Pick either method for running Compiz at login, and that's all there is to it. If you choose to use mate-tweak
and look again afterward, you may notice this message;
"You are currently using an unknown and unsupported window manager.
Thus we cannot guarantee that changes mare here will be effective."
...Alright, fine and dandy, Compiz still executes when you type in compiz
so that's no problem.
Post-install failure
If it so happens everything failed to install correctly the first time and ccsm
happens to either segfault or show no icons for most plugins (like what happened to me one time), then you can do the following as a "Nuke it from orbit" redo;
This assumes you're in /scripts already, where you executed ./go.
In
x-terminal-emulator
:./uninstall #Remove it... sudo rm -rf /usr/lib/compiz /usr/include/compiz /usr/share/compiz /usr/share/man/man1/compiz.1.gz /usr/lib/emerald/ /usr/include/emerald /usr/share/emerald /usr/share/ccsm #And its associated files since uninstall doesn't clean up after itself that well. sudo apt-get install compiz sudo apt-get --purge autoremove 'compiz*' libdecoration0
Then you can give it another ./go
to see if the above helps install Compiz Reloaded correctly.
Caveats
I found that backporting Compiz might interfere with the dock applet pre-supplied in 16.04. If you rely on it for your workflow, do not attempt this quite yet. I am still investigating the issue as best I can.
Post-install configuration
There is a lot of stuff here. Expand this, and your mind.
ccsm
, or the compizconfig-settings-manager for short allows for modifying how Compiz functions through a GUI. Since there may still be some people new to compiz, here are some plugins that may be of interest;
Extra WM Actions
Because Emerald now supports a "Super maximize" toggle which removes window decoration, you need to enable this plugin and set the shortcut for toggling fullscreen to disable "Super maximize" mode.
Window Decoration + Place WIndows + Window Rules
Specify either of the following in Window Decoration as commands;
emerald
Requiresemerald-theme-manager
to modify the titlebar
Can be used with Marco, if one desires, though it may require addingemerald --replace
inmate-session-properties
Previously exclusive to the Beryl window manager until Beryl merged with Compiz to make Compiz Fusion; Themes from Beryl-oriented websites during its one year of independence should still function with it.gtk-window-decorator
Allows formate-appearance-properties
to modify the titlebar
Most often associated with the Metacity window manager, back when vanilla Ubuntu still used GTK2, but will also work for Marco.
For some windows where decoration makes no sense, yet there is no option to remove said decoration, you can also add exceptions for which windows are decorated.
Place Windows allows users to define how a window is positioned when opened on the present workspace and can also define which windows have specific positioning, and which workspace (in numerical order; Requires experimentation) some windows appear at.
Window Rules are additional options for windows. If you wanted to use a screensaver as a desktop background, for instance, you could set rules to fullscreen a window that cannot be moved or resized, and remove decoration of that window via Window Decoration.
Wobbly Windows
You can specify a shortcut for Snap Windows so you can have attraction to other windows and screen edges without the Snapping Windows plugin enabled, which will demand to supersede Wobbly Windows. You can even invert this behaviour so the shortcut disables snapping, rather than enabling it.
Unfortunately, it appears the snapping behaviour disappears if you don't allow for moved windows to wobble, but that may be a failure to configure it properly. This will be updated if I can figure it out.
Expo + Desktop Wall
These two plugins compliment each other, as Desktop Wall provides a visual indication for when you move to a new workspace, and acts as a short-term mini-map larger than your workspace switcher in taskbar, without the need to always zoom out to see all of your workspaces at once.
Desktop Cube + Rotate Cube + Cube Reflection and Deformation + 3D Windows
These four plugins compliment each other, as while Desktop Cube is enabled to render all of your desktops in 3D space, Rotate Cube allows you to rotate the cube freely. Cube Reflection and Deformation allows you to manipulate the contours of the cube, so much as to make your 3D workspace a sphere if you really wanted, and 3D Windows gives stacked windows depth, by elevating stacked windows to a specified height away from one another.
Static Windows
This now works with Expo!
This addon works with both Desktop Cube and Expo. Static windows are rendered as a texture that is above other active elements, and whatever windows defined will not be affected by manipulating the cube or (should not but does affect windows within) Expo.
By default, all docks (such as mate-panel
, docky
, dockbar
etc) will not be rendered in the cube, instead appearing as if rendered on a top layer. If you find everything in your desktop rotating being a distraction, or if there is an important sticky window you don't want affected by manipulation of your 3D / Extended 2D workspace, then this is the plugin you want.
Magnifier + Zoom Desktop + Enhanced Zoom Desktop
All of these functions are enhancers that will enlarge either a portion of the desktop, or the entire desktop depending on how you want to magnify it. All three of these functions are similar to Windows 8's default magnifier program.
Any of the five window switchers in Window Management
There vary in effect and functionality. Try them out, as they range from basic and plain to ornate and fancy. In order from what I believe is most basic to most advanced;
- Application switcher
Basic, ordinary, does the job. - Static application switcher
A more personalized and capable version of the basic Application Switcher. - Ring switcher
A switcher that arranges your open windows into a ring menu. - Stack Window Switcher
A switcher that acts as a flat version of the 3D Windows plugin expressly for switching between applications. - Shift Window Switcher
A switcher that acts like OS X's Cover Flow, Windows Vista's Aero Switcher, or anything in between.
You have plenty of options, so take your time with this. You could (in theory) use multiple switchers, but since they all do the same thing, you might be better off sticking to one.
All the other things
There is too much stuff to cover here, but a lot of it might be useful to you. Some plugins will also influence how windows appear when certain actions are taking place, some plugins affect the appearance of the desktop or of individual windows, some are dependent of other plugins, and must be enabled to show extra options in the plugins they depend on. Due to all of this complexity, something is bound to break, and when it does, hopefully you can find yourself back to the Marco compositor so you can resolve issues via ccsm
, or you may have to trash directory ~/.config/compiz
to get your desktop back.
When upgrading Ubuntu
Compiz no longer ships with 19.10, so if you're starting with that then none of this matters and you can upgrade in the future while retaining your Compiz 0.8 installation. From 19.10 onward, there is no reason to follow any of the below advice, which makes this way easier.
Don't forget, to prevent any and all issues with upgrading Ubuntu, before you commit, change your window manager back to Marco. This will ensure you still have a desktop when all is said and done, and then you'll need to re-execute all of the above before switching back to Compiz, at least until an underlying library breaks this, which in all likelihood probably won't happen, but you never know with Canonical.
Information sources
http://blog.northfield.ws/compiz-release-announcement-0-8-12/
All the time I spent with soreau in #compiz-reloaded when I was trying to figure this crap out.