Greybird 3.20.0 (to be clear: with support for Gtk+3.20) released

Finally – 5 months after the release of Gtk+3.20 – I’m happy to announce the release of the first version of Greybird supporting it.

Why has it taken so long? – you

The Widget Factory - 3.20
The Widget Factory – 3.20

may ask yourselves – and one reason was certainly me being totally busy with other things, but another one was that Ubuntu didn’t ship it in its 16.04 LTS release (which was a totally sane decision, by the way). Because of the latter it took some time before the issue of having a theme that supports Gtk+3.20 became pressing enough for me to take action.

Anyway, now it is done. (At least mostly.)

While porting the theme (in this case really: porting, not just: adding support for) I also decided to rebase it on Adwaita. Over the last releases so much stuff had piled up, so many quick fixes or patching up visual nuisances to support “the next Gtk+ release” that the theme had become an unmaintainable jungle – I frankly couldn’t have told you which line mattered anymore. While rebasing, I also went from CSS to SASS, which was the only right decision, as I’m sure now after having gone through with it. It made the code so much more maintainable and readable (kind of reminding me of the first Gtk+3 releases, when themes were still a lot leaner in terms of LOC).

So yeah, I’m pretty happy with where this has been going. There are still some rough edges (e.g. progressbars are probably not 100% greybirdy) and things I haven’t added support back for (e.g. elementary’s Granite widgets), but I think what is there now warrants an initial release as things still look consistent between Gtk+2 and Gtk+3 applications.

One final note: Greybird has recently switched to a new versioning scheme, which basically mirrors the Gtk+3 release numbers the theme works best with.


Xfce goings on (Gtk+3 port etc.)

So I’ve been busy lately porting Xfce apps and components to Gtk+3 (you can see on the roadmap page for 4.14 that we’ve come some way already – only the really uncomfortable behemoths are missing 🙂 ) and since I’ve been working on apps which I haven’t touched before (and which haven’t really seen much or any development in a while).

I thought I’d do a quick overview of some of my recent activities so everyone knows Xfce is still alive.

gtk-paste  clipman

I have ported clipman to Gtk+3 mostly as an exercise, to get back to coding and to re-acquaint myself with the “fun” that is porting to Gtk+3 (including the obligatory #ifdefs for different Gtk+3 releases).

I didn’t really have the energy to add any new features there (apart from general Gtk+3 stuff like symbolic icons, which is nice for the panel plugin), but it had the intended effect for me plus Eric and Florian helped out, which made it more fun. In the end we even got Steve to sit down and crank out a very nice fix for an extremely widespread issue in Xfce.

notifyconf  notifyd

Basically Ali did all the hard work of porting notifyd to Gtk+3. I was left with the hard work of polishing the edges and making it release-ready (which ended up being much more work than I anticipated and now that I’m mostly familiar with the codebase I’ve also started to add – for now: small – features). So yeah, 0.3.0 is out! Hooray! 🙂

I also managed to write down some basic docs for notifyd (they’ll be linked to in the 0.3.1 release) which also explains the theming aspect a little bit.

For now I’ve planned some features – we’ll see when and if I get to them, but amongst others:

  • “Do not disturb” mode (still have to figure out where and how to display the “missed” stuff or whether to bother with that at all)
  • More themes by default (currently we only have good ‘ol Smoke and evergreen ZOMG PONIES!)
  • More bugfixing
  • Better docs

preferences-desktop  settings

This is actually Sean’s project and he already ported most of the dialogs (only display missing at the time of writing) and this is really exciting as it is one of the core components. Can’t wait to install this beast on a productive machine to see what will happen 🙂

libxfce4ui  libxfce4ui

I didn’t do much here apart from handling the release and fixing the theming of XfceTitledDialog for Gtk3.20 (and below) in accordance with the Gtk+ Devs (still unreleased, will come with libxfce4ui-4.13.1). Generally speaking now that Glade support is fixed and we have working dialogs I guess there’s not much more to do in that lib (I may be wrong though).

terminal  terminal

This is Igor’s playground now, I merely helped with porting the settings dialog and getting rid of some rough edges there. I’m using the Gtk+3 port of the terminal on a daily basis though and am very happy with it – nice work Igor! 🙂

Road to Xfce 4.14

The looong road to xfce 4.14. I hope you still want some news about Xfce !
As usual, the xfce development is slow, has some organisation problems (only few members have access to servers, and are often not present), and lack “core” maintainers/mentors. But hey, we do our best :).

The bigger change for 4.14 is the port / upgrade to GTK+ 3.x.
It will be a like-for-like port. New and “big” features are postponed to 4.16.

You can read the thread on the ML about the decision of only port to gtk3 and not introduce any new features for now.

The roadmap is available on the Wiki : The minimum requiered version has been fixed to be GTK+ 3.14.

Roadmap / Planned Features :

  • All components of -core will be ported to Gtk+ 3.
  • Replace dbus-glib with GDbus.
  • Review icon-names in all components and use consistent naming, following the fd.o spec where possible
  • Use symbolic icons for panel plugins and in apps where suitable
  • Replace deprecated widgets.

Here is a quick (and somewhat incomplete) overview of what is already done !

Core components

Work is on progress for core components, with “users” branches availables on (xfce4-panel, libxfce4ui, xfce4-session, panel etc). Nothing really available for daily use though.

Lots of works on xfwm4’ compositor (in master), with implementation of vsync using OpenGL, libepoxy support, adding of DRI3/Present to the compositor, use of GLX for compositing instead of Xrender…

Libxfce4ui 4.12 already compile with gtk2 and gtk3 support, exo git master have a gtk3 preliminary support, garcon is already ported. xfdesktop have a gtk3 branch

The panel support GTK-3 plugins since 4.12, but it core need to be upgraded to use gtk3.


One of the most active project. Version 1.6 (released last month) is a complete port to gtk3 and gdbus, see


A GTK3 branch exist, you can read the thread on the ML : I use it since few months, and it works pretty well :)


xfce4-appfinder progress to gtk3 :
Can you guess which one use GTK3 ? (hint: the left one ;)) xfce4-appfinder gtk3


Some plugins are still active, and are already ported to GTK-3 (xfce4-indicator-plugin, xfce4-pulseaudio-plugin), as xfce4-panel support both gtk2 and gtk3 plugins.

Last months have seen new versions of xfce4-equake-plugin, xfce4-embed-plugin, xfce4-verve-plugin, xfce4-notes-plugin, xfce4-cpufreq-plugin.

One of the more usefull new plugin is the pulseaudio-plugin, a replacement for xfce4-mixer :, I use it and it works well.

xfce4-notifyd gtk3

Stay tuned !

Goodby Foresight

Little more than a year ago I posted about the bright future of foresight linux.
Well it looks like this won't happen any more.
Yesterday Michael announced our decision to bury (or at least it feels like this) foresight linux.
I've been involved in foresightlinux for ~ 10 years and it's hard when such a long period ends. I will miss foresight and the people that formed it.
Special Thanks to Ken Vandine who started that whole thing 10+ years ago.
Here is the announcement:

The Foresight Linux Council has determined that there has
been insufficient volunteer activity to sustain meaningful new
development of Foresight Linux. Faced with the need either to
update the project's physical infrastructure or cease operations,
we find no compelling reason to update the infrastructure.

Therefore, around the end of May, the following will be shut down:
* Software repositories (Foresight Linux and legacy rBuilder Online
* JIRA and Confluence servers
* Shared development infrastructure
* Mailing lists, including these lists

The domain will remain as an informal "alumni
association" for an indefinite amount of time, along with the
project IRC channels for as long as they are in use.

Volunteers to host read-only copies of the JIRA/Confluence
and/or mailing list archives should respond to
foresight-devel (at) in the next few days,
while the lists are still operational.

Hosting the repositories in read-only mode would be non-trivial;
requiring approximately 2.5TB of storage; simply moving the data
would be a substantial task. Do not assume that the repository
contents will be retained.

The Foresight Linux Council would like to extend our thanks to the
Software Freedom Conservancy, our corporate home, for their support
of Foresight Linux and of software freedom generally. We would also
like to thank SAS Institute for providing physical infrastructure and
hosting for the past two and a half years, as well as for offering
to refresh the infrastructure. This decision to retire Foresight
Linux was entirely the council's.

To those of us who have been a part of this community for up
to ten years, this feels a little like a death. If you wish to
celebrate the life of this project, please discuss soon on the
foresight-devel (at) list or on IRC on the #foresight-devel channel when and how to do so.

On behalf of the Foresight Linux Council,

Michael K Johnson

News from Xfce 4.12, part 3

A bunch of news from the development of Xfce 4.12 !
Since my previous post in november (read it !) , many things have happened.
First, the most awaited news ... wait for it... a date has been decided ! 4.12 will released by the last week end of February 2015 ! (yes, 1 week from now)

Now, I would like to draw your attention to a list of threads on the xfce4-dev mailist :

Core Apps :

xfce4-panel :

  • The intelligent panel hiding feature (see my previous post) has been released in 4.11.2 !

xfwm4 :

Oh wow, many commits, such features ! You can read the 4.11.3 announcement here

  • Add titleless maximization feature.
  • Client Side Decoration (CSD) support ! (Compositor need to be enabled). A screenshot with and without on gedit (an application that need CSD) CSD on xfwm4
  • Windows preview in alt+tab (Compositor need to be enabled too). Windows preview in alttab
  • Nice, right ? :)

xfce4-settings :

  • Release of 4.11.4
  • Add touchpad support with libinput (yes, already !)
  • Better monitor and multi monitor support
  • Add Gtk+ theme palettes in the appearance dialog (see screenshot)
  • Add previews for icon themes in appearance settings (see screenshot) Themes and icons preview

xfce4-session :

  • Bugfixes, bugfixes, bugfixes !
  • The "logind runtime detection to support suspend/hibernate" patch has been merged.
  • Release of 4.11.1

thunar :

  • Add support for the GTK 3 bookmarks file,
  • Bugfixes, support for binary file size units
  • Release of 1.6.4

gtk-xfce-engine :

xfce4-dev-tools :

  • Fixes, dependencies update etc
  • Release of 4.11.1

xfconf :

  • Not many exciting changes for this release, mostly translation updates, small fixes and code tweaks.. 4.11.0

Apps :

xfce4-screenshooter :

  • Support of imgur uploads ! Yes ! imgur upload
  • Release of 1.8.2 . Thank gaston !

xfce4-taskmanager :

  • Big cleanup of UI, with new treeview mode, general UI/graph overhaul and lot of bugfixes) xfce4-taskmanager
  • Release of 1.1.0 with all theses changes. Thanks gaston, ochosi and Cavalier

xfce4-power-manager :

Panel Plugins :

Some love for panel plugins, from Harald Judt and Landry Breuil, mostly build/bugfixes and translations updates :

As you can see, xfce development is more active than ever !
So be prepared to be amazed by 4.12 in a few weeks !

Sources :

News from xfce 4.12, part 2 !

Update 19/02/2015 : A new post is available !

Following my first post about the Xfce development status 4 months ago (you can (re) read it here), let's go for a bunch of reviews of the last commits.

A little clarifications about comments on my 1st post : I'm NOT a core xfce dev, I'm just a small contributor, who try to help as much as I can.

Note: You can see lots of screenshots about all theses news features on the xfce forum, in the What's New in Xfce topic from ToZ.

xfce4-power-manager :

  • A new xfce4-power-manager release (compatible with xfce 4.10), thanks to Eric Koegell and Simon Steinbeiss
  • Provide a better support of systemd and upower
  • Brightness plugin has been merged into the battery indicator plugin so a new plugin is born, "Power Manager plugin"
  • Some design changes, see screenshots
  • The roadmap to 1.5 :

xfdesktop :

  • Add a --next option to force wallpaper changes
  • Add a move to trash menu option
  • Add an --enable-debug option added to xfdesktop-settings
  • Add optional blurring on shadow on text of icons, see Screenshots

xfce4-panel :

  • Implementation of a intelligent auto-hide functionality by Jannis Pohlmann !
  • Whenever the active window changes or whenever the geometry of an already active window changes, the algorithm checks whether the active window and the panel overlap. If this is the case, the panel is hidden. Otherwise, it is made or remains visible.
  • A quick demo (only available in git version for now)

xfce4-session :

  • Add logind runtime detection to support suspend/hibernate
  • Support for upower 0.99
  • Add DragonflyBSD to host check

xfce4-settings :

  • Reapply settings when external keyboard connects
  • New display settings dialog
  • Add support for upower 0.99

Thunar :

  • Default application not respected with glib >= 2.4
  • Check for thumbnails in the location
  • Add appdata file
  • Add pkexec policy. This way if the user of a desktop system wants to use thunar to modify files as root and has the proper credentials they can.

Apps / Plugins :

  • Mousepad and Parole have been ported to gtk3 !
  • Partial rewrite of squeeze (Archive manager)
  • Multiples releases/bugfixes of xfce4-netload-plugin, xfce4-weather-plugin, xfce4-equake-plugin

Development Releases of core components :

Maintenances/New Releases (for xfce 4.10 ) :

Others :

  • A side note about light-locker, a simple session-locker for lightdm, which work really great with xfce :). If you want a nice and modern locker, try it !
  • Debian Jessie will use xfce 4.10 (as 4.12 is not ready on 5th November, the date of Debian Freeze)
  • If you are an ArchLinux user, and want to test the devel version of xfce, you can use my [xfce411] repo. NO WARRANTY, support or whatever ! Use it at your own risks. Read the README ;)
  • Last minute : A reorganisation of the team is running, to list our current force, identify weak spots (where we urgently need new contributors), welcome new members etc. See for more informations !

Sources :

  • Thanks to ToZ on the xfce forum
  • The #xfce-dev IRC chan on Freenode, the best way to be involved in Xfce development
  • Xfce4 dev list

News from Xfce !

Update 19/11/2014 : A new post is available !

Some news from Xfce, my favourite Desktop Environment, that I use since something like 2006.

The development is relatively slow (the last stable version, 4.10 was released in April 2012). There is not so many developers, 1 or 2 "core" devs, and less than 10 contributors (who are generally distributions maintainers, from debian, xubuntu, gentoo, arch, thanks to them !).

There was a roadmap for 4.12, where it was planned to release 4.12 mid-2013. But, hey, it's open source, it will be out when "it will be ready" :-).

Some weeks ago, it was decided to establish a list of "critical bugs" to be eradicated in order to release xfce 4.12.
You can find the list here :
Xfce 4.12 will still use gtk2, with some support of gtk3 for better integration.
Port to gtk3 will maybe be done for the next version.

What will be new in xfce 4.12 ?

All major components are already available in development version (4.11), here are a small list of what to expect :

xfwm4 :


xfce4-settings :

xfdesktop :

xfce4-panel :

And lot of works on other components, like xfce4-power-manager (systemd support), xfburn, xfce4-mixer etc There is still some works/tests to be done on upower or systemd support for example.

Update : You can see lot of screenshots of new features on the Xfce forum, by ToZ :


A new buildbot based on jenkins is available since few days on


It's easier to copy the mail from Simon Steinbeiß to explain this part :

To get to the point: we see bountysource[2] as an easy way to offer
the community with a way to financially support Xfce. There are two
avenues a backer can choose from.
1) Set a bounty on a specific bug (we've pulled in all the reports for
many components already, so you can easily find them on
2) Back the Xfce team

Update: More explanations about bountysource:

So if you are interested yo help Xfce, go to the contribute wiki page !

The bright future of Foresight Linux

Refining Foresight


Foresight is what I use for almost a decade now (and that means almost the whole time since it was created by Ken Vandine).
It was originally based on rPath Linux and Foresight 2.0 still is.
So rpath doesn't exist anymore (it was aquired by SAS a while ago) and our existing base is getting outdated to a point where maintenance is getting a burden.


There were several options to solve this issue.
1) build foresight 3 from scratch
2) rebuild an existing distribution from source and use it as a base
3) base on an existing (vital) distribution

Which one

Actually we discussed all these, but given our manpower we chose to base our new shiny Foresight on Fedora as is, so that we can focus again on providing a stable modern rolling binary distribution.

The Plan and Progress

So what we're doing is importing all! of Fedora20 into our own repositories using a tool called mirrorball
It will create Sourcepackages for conary containing the matching rpms and srpms and build conary packages from them.
I'm not going into the details here. You can look some up on our foresight-devel mailinglist
The initial import and built is already done and we're now in the process of creating conary groups from the information of the comps.xml
when that is done it should be possible already to adopt a fresh install of fedora20 for use with conary packagemanager.
Next step will be doing regular updates and imports of the fedora20 repository.
Then we will build foresight on top of this.
Creating groups like we want them, adding artwork and extras. Import rpmfusion repositories until we have a foresight that matches our needs.
And of course finding a way to easily install foresight and convert existing fedora installations.

Why not...

...just use fedora?
Well first we all got to love foresight as a distribution and a community.
And we love conary. Conary is pretty strict when it comes to dependency resolution. We already found packaging issues of fedora20 just by importing and rebuilding it with conary. foresight is a rolling distribution and we hope that with the adopting of fedora we can make it possible to just roll from fedora20 to fedora21 painlessly. Conary has rollbacks since it's beginning and it's a great packagemanager that helped us maintaining a rolling binary distribution for almost 10 years now.

Remote notifications

This post explains how to get notifications (libnotify) from a remote system. Typically this is useful with an IRC client accessible through SSH.

  • A notification daemon! (dunst, xfce4-notifyd, etc.)
  • socat
  • notify-send
apt-get install socat libnotify-bin

On the client, modify the SSH configuration to introduce two elements:
  • forward a TCP port,
  • execute a local command.

Example entry for ~/.ssh/config:
Host remote-host
RemoteForward 12000 localhost:12000
PermitLocalCommand yes
LocalCommand socat -u tcp4-listen:12000,reuseaddr,fork,bind= exec:$HOME/.local/bin/ 2>/dev/null &
The fowarded TCP port will be used to netcat notification messages to the local system.

socat is used to bind a port on the local system, it will take the notifcation messages, and write them to the executed shell script

The shell script will then simply call notify-send to display a notification with the default notification daemon.

read line
read line
read line

if [ "$line" = "" ] && [ "$summary" != "" ]; then
[ -x "$(which notify-send)" ] && notify-send -u critical -t "$delay" -- "$summary" "$msg"

Now it is possible to connect to the remote host and "write" notifications:
local$ ssh remote-host
remote-host$ echo -e 'Summary\nBody\n\n' | nc 12000

Integrate into irssi

Copy the irssi script available bellow to get notifications from hilights, and private messages.

Once the script is copied, execute /script load inside irssi.


# shamelessly copied from;a=blob;
use strict;
use Irssi;
use HTML::Entities;
use vars qw($VERSION %IRSSI);

$VERSION = "0.01";

%IRSSI = (
authors => 'Luke Macken, Paul W. Frields',
contact => ',',
name => 'rnotify',
description => 'Use libnotify to alert user to hilighted messages',
license => 'GNU General Public License',
url => '',

Irssi::settings_add_str('misc', $IRSSI{'name'} . '_port', '12000');
Irssi::settings_add_bool('misc', $IRSSI{'name'} . '_if_away', 0);

sub is_port_owner {
my ($port, $uid) = @_;
my $wanted = sprintf("0100007F:%04X", $port);

# XXX linux-specific
open HANDLE, "< /proc/net/tcp" || return 0;
# sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
my @splitted = split /\s+/;
my $local = $splitted[2];
my $remote = $splitted[3];
my $uid = $splitted[8];

return 1 if $local eq $wanted and $uid == $<;
close HANDLE;
return 0;

sub notify {
my ($server, $summary, $message) = @_;

$message = HTML::Entities::encode($message);
$summary = HTML::Entities::encode($summary);

# echo \ escaping
$message =~ s/\\/\\\\/g;
$summary =~ s/\\/\\\\/g;

my $port = Irssi::settings_get_str($IRSSI{'name'} . '_port');

return if ! is_port_owner($port, $<);

# check for being away in every server?
return if $server->{usermode_away} &&
(Irssi::settings_get_bool($IRSSI{'name'} . '_if_away') == 0);

# XXX test for other means of doing TCP
#print("echo '$summary\n$message\n\n' | /bin/nc $port");
system("echo '$summary\n$message\n\n' | /bin/nc $port &");

#my $pid = open(FH, "|-");
#if( $pid ){
# print FH "$summary\n$message\n\n";
# close(FH) || warn "exited $?";
# exec("/bin/nc $port") || warn "can't exec $!";

sub print_text_notify {
my ($dest, $text, $stripped) = @_;
my $server = $dest->{server};

return if (!$server || !($dest->{level} & MSGLEVEL_HILIGHT));
my $sender = $stripped;
$sender =~ s/^\<.([^\>]+)\>.+/\1/ ;
$stripped =~ s/^\<.[^\>]+\>.// ;
my $summary = "Message on $dest->{target}";
notify($server, $summary, $stripped);

sub message_private_notify {
my ($server, $msg, $nick, $address) = @_;

return if (!$server);
notify($server, "Private message from ".$nick, $msg);

sub dcc_request_notify {
my ($dcc, $sendaddr) = @_;
my $server = $dcc->{server};

return if (!$dcc);
notify($server, "DCC ".$dcc->{type}." request", $dcc->{nick});

Irssi::signal_add('print text', 'print_text_notify');
Irssi::signal_add('message private', 'message_private_notify');
Irssi::signal_add('dcc request', 'dcc_request_notify');

# vim: et


I finally decided to redo my website, and ditch WordPress in favor of a static site generator (I decided to use Jekyll). I also took the opportunity to simplify the design.

There's a bit more to do, and likely some broken links here and there (not to mention some broken WP-to-markdown conversion), but it's time I finally got this done.

In theory, I'll start blogging again as well, but... we'll see.