This is a quick HowTo that shows how to setup a Ubuntu MATE 19.04 development setup in which Ubuntu System Indicators [1] get replaced by Ayatana System Indicators [1].
The current development strategy is to use nightly DEB packages provided by the Arctica Project and Ayatana Indicators upstream on top of Ubuntu MATE 19.04 and see what details still require work.
Preparing Ubuntu MATE 19.04 development setup
First step is to download a Ubuntu MATE 18.10 (aka cosmic) ISO image and install Ubuntu MATE 18.10 into a test environment (e.g. a virtual machine).
Then edit /etc/apt/sources.list
and replace all occurrences of cosmic
by disco
.
Then update all lists of available packages and upgrade the system to the current development state of Ubuntu MATE 19.04:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
It may be required that you run several upgrade and dist-upgrade iterations, because it may occur that not all packages upgrade cleanly (this is normal during development cycles).
Adding Nightly Builds of the Arctica Project's DEB Package Archive
Add a new file /etc/apt/sources.list.d/ayatana-indicators.list
and put this content into it:
deb http://packages.arctica-project.org/ubuntu-nighty disco main
deb http://packages.arctica-project.org/ubuntu-extras disco main
The Release files of the Ubuntu Nightly Builds Archive has been signed by GnuPG Key 0xA8680F5598DE3101
:
pub rsa4096 2015-09-14 [SC] [expires: 2019-08-25]
7A49 CD37 EBAE 2501 B9B4 F7EA A868 0F55 98DE 3101
uid [ unknown] ArcticaProject PkgMaster <pkgmaster@arctica-project.org>
sub rsa4096 2015-09-14 [E] [expires: 2019-08-25]
You can import this key into your APT keyring by this command line:
$ sudo wget -qO - http://packages.arctica-project.org/archive.key | sudo apt-key add -
Important: As we always want to prefer packages from packages.arctica-project.org
even if a newer version of that package is in Ubuntu, we need to pin packages from that APT repository:
Package: *
Pin: release o=ArcticaProject
Pin-Priority: 1001
Place the above config snippet into /etc/apt/preferences.d/arctica
.
When done, update your package lists once more:
$ sudo apt update
Replacing Slick Greeter by Arctica Greeter
You can simply exchange Slick Greeter as used in Ubuntu MATE 18.10 by Arctica Greeter:
$ sudo apt install arctica-greeter
$ sudo apt remove --purge slick-greeter
From a text console (TTY 1-6), restart LightDM to make the switch-over complete:
$ sudo invoke-rc.d lightdm restart
Todos for Arctica Greeter:
- Add an Arctica Greeter theme for Ubuntu
- Work on date & time system indicator
- Work on sound indicator
- Work on keyboard indicator or replace by fcitx
- Better understand when Arctica Greeter kicks in as lock screen
- Beautify Arctica Greeter's default theme
- Improve remote logon support (e.g. session type chooser)
Switching over to Ayatana-Indicator-aware MATE Indicator Applet
At first, install mate-indicator-applet
from Arctica Project's Ubuntu Extras archive area.
$ sudo apt install mate-indicator-applet
Then remove all Ubuntu Indicators packages from the system:
$ sudo dpkg --purge `dpkg -l "indicator-*" | grep indicator | awk '{print $2}'`
Installing Ayatana System Indicators
Then install system indicators from Ayatana Indicators project by executing:
$ sudo apt install ayatana-indicator-<name>
Known to work well
- ayatana-indicator-application
- ayatana-indicator-session
- ayatana-indicator-power
- ayatana-indicator-notifications
Known to work sort of
- ayatana-indicator-printers (needs more testing)
- ayatana-indicator-systemtray (needs quite some coding)
- ayatana-indicator-datetime (calendar widget not shown)
Still FTBFS'ing
- ayatana-indicator-sound (packaging problem, needs some work)
- ayatana-indicator-keyboard (not yet fully ported)
- ayatana-indicator-display (undecided, if we should ship this)
Installing AppIndicator based Applications
The ayatana-indicator-application
system indicator acts as a SNI (StatusNotifier DBus Interface) provider and applications supporting the AppIndicator based SNI DBus API can send their systray icon and menu to it.
This means, that you can run all sorts of variants of SNI capable applications on top of the application indicator. They can be linked against the new libayatana-appindicator, the older libappindicator or any other library or module providing SNI API support.
Some AppIndicator based applications that are nice to test:
- Package: variety
- Package: gtk-redshift
- Package: nm-applet
To avoid a clash of SNI DBus providers, make sure that you have the package indicator-application
removed from the system.