Color profile support for Xfce

This year I had the chance of joining the FOSDEM conference again and as always it was great to meet up with other FLOSS enthusiasts.
It was also a good chance to meet with some Xfce folks (Harald, Florian) and sponsors (Volkan) and finally it was a good time to hack on stuff. This year I sat down with Florian in the evenings and invested some time into colord integration.

About colord

colord is – in short – a system service that enables you to manage, install and generate color profiles to accurately color manage input (webcams, scanners) and output devices (displays, printers). colord itself comes only with a commandline tool (colormgr), which is not great in terms of discoverability and usability. Both Gnome and KDE have already integrated colord support into both their settings dialogs and settings daemons, but in Xfce there was no easy way to achieve a color-managed session.

Status of the integration into Xfce
Xfce4 Color Profiles

In order to enable people to set up color management I decided to start with the frontend. In theory you can already get a working setup in Xfce by relying on cupsd (for printers), saned (for scanners) and xiccd (for displays) and handling colord through the colormgr commandline tool.

What we managed at FOSDEM was still pretty rough but I took a few days (read: nights) and polished the dialog so it became more and more user friendly and the final product can be seen in the screenshot above.

The dialog enables you to:

  • Enable/disable color management per device
  • Add or import color profiles per device
  • Enable a profile and set it as default

What it doesn’t do:

  • calibration – you still have to use e.g. displaycal to calibrate your display
  • show detailed profile information (like a horseshoe color diagram), you still have to use e.g. gcm-viewer for that

“So, that’s great – what else is missing?” I hear you ask. That’s quite simple: In short, we need to integrate the backend for colord into xfsettingsd so we don’t have to rely on xiccd anymore. While it seems to run stable here for me it’s yet another daemon, so xfsettingsd integration would definitely be a plus.
The cool thing about the frontend is however that everyone can already use it for printers and scanners, because those are natively supported already.

“When can I have this?” may be your reasonable follow-up question. I’m still ironing out small kinks (not too many hopefully) and I still have quite a bit of code cleanup ahead of me, but my current plan is to get this feature merged before we release Xfce 4.14, so the likelihood of it showing up in the next (or subsequent) development release of xfce4-settings is high. It then still depends on your Linux distribution whether the colord integration is included, because it’s a compile-time option (not every user/distro may want having to pull in colord, as it’s yet another service that’s running all the time).
Finally I’m not sure I’ll have time for the backend part in the very near future, so we’ll have to see about that. Luckily the dialog is useful even as it is.

In the meantime you can support me through friendly words, posting a bug bounty on colord backend integration or you can do some testing and provide me with feedback through checking out my branch, currently hosted on GitHub.

20 thoughts on “Color profile support for Xfce”

  1. Hi!

    Great work! Xfce is improving days after days! Can’t wait to try this because I use ICM profiles everyday with command line.
    Can you help me to test your work? Do you have a good read to help me to compile and replace my existing xfce4-settings in order to bug report it?

    Cheers
    Sim

    1. Hi, here’s an example that would work on Xubuntu 18.10

      sudo apt-get build-dep xfce4-settings
      sudo apt-get install libcolord-dev
      git clone -b https://github.com/ochosi/xfce4-settings/tree/ochosi/colord
      cd xfce4-settings
      ./autogen.sh –disable-debug && make && sudo make install

      This will result in xfce4-settings being installed in /usr/local/share, taking precedent over the system installation which is located in /usr/share. This means both versions (distro and your own) are installed side-by-side, but the colord branch is used. If you want to remove it again, simply “sudo make uninstall” it.

      As the color profiles dialog doesn’t require any update of xfsettingsd you don’t even have to restart your session after installing.

  2. Just the other day I was thinking about how there was no GUI for this in XFCE. I do some commercial printing and other graphical work, so this is a great addition! Fantastic work as always and I’m really happy XFCE is getting so many nice new features and refinements lately!

    1. What Xfce really needs, and what GTK really needs, is a gel button with shading and shadowing, also capable of displaying text in xft for touchscreen apps which animates or at least has a mouseover effect when touched. It would be right at home as a launcher on the Xfce desktop and could be invoked in any GTK app.

  3. Wow..
    This is great!.

    You evaluated how difficult it is to implement an temperature display change -Aka night mode-?

    Thanks!

    1. That would be fairly easy based on this branch and the colord support. You simply have to switch to the “D50” profile which is available for all displays, that’s pretty much the color-tone of night light.

      I have started working on a panel plugin for enabling/disabling night light, but then started working on color profiles instead because I realized that having this as a basis would make things easier.

  4. Gracias por todo su trabajo en Xfce, el entorno de escritorio que utilizo desde hace más de 10 años.

  5. Hi Simon !

    Absolutely love your work and what you´ re doing for xfce.
    I´ m a prosumer/semipro photographer and I do get by with Dispcal, xiccd e.t.c
    But to have this kind of integration to xfce would to things easier for a lot of people and also make xfce more apealing as a DE. I´ ll follow your install instructions from above and try out.
    I´ ll also gladly help out with a bounty !

    Best regards Michael

  6. This will be a very welcome addition to XFCE so thanks for working on it but I’d prefer to see the XFCE display settings become persistent first. As it stands, every time I unplug/re-attach a display or if I reboot then XFCE forgets my display settings as configured with its display config tool.

    I am currently working around this by assigning xrandr commands to keyboard shortcuts but it would be nice if display settings were remembered and persisted when displays get removed/re-added or I reboot.

      1. That’s great news! I finally got round to building the latest XFCE under Arch (via the relevant AUR packages) earlier today but unfortunately I am unable to get the new display settings to work so far:

        https://bugzilla.xfce.org/show_bug.cgi?id=15179

        I’ve just had another go with it now but this time my monitor enabled itself when I plugged it in tonight. Now its no longer disabled in the XFCE display settings but still the controls do not affect my HDMI display. For example changing the res then clicking Apply has no effect, nor can I disable it – it is just a mirror of my laptop display even though I’ve tried to set it to ‘extended’.

        Another issue that I prob should’ve mentioned in that earlier bug report is that the display settings aren’t getting opened when I attach my display despite that feature being enabled.

        1. I have got it working now! My probs were caused by a few missing perl packages in the AUR xfconf-git dependencies, which I have highlighted to the maintainer. This is a big improvement over the XFCE 4.12 display settings tool but I would like to be able to have xfce display profiles auto enabled when attaching new displays without seeing or having to close the display settings window:

          https://bugzilla.xfce.org/show_bug.cgi?id=15183

          Thanks Simon!

Comments are closed.