Xfce

Subdomains
 

Shiny new things in Thunar thanks to GSoC 2021

  • September 11, 2021
  • Alexxcon's Software Development Blog

GSoC 2021 is over now and I am happy to tell you that both students working on thunar did an excellent job. Alot of nice stuff has been added thanks to them !

In order to allow you to discover all these new features, Thunar 4.17.5 was just released. (Note that this is a development release. It still might have some rough edges)

For details about the new features check the summaries provided by Sergios and Yongha:

Sergios GSoC Summary

Yongha’s GSoC Summary

Besides these, here as well some more new features added during GSoC for which I thought they would be worth to mention:

  • Bookmarks got moved into a separate ‘Bookmarks Menu’ and a ‘create bookmark’ option was added (MR !109 and MR !71)

bookmark menu

  • A new menu item “Set Default Application” was added to the “Open with” submenu (MR !79)

Open with - Set Default App

  • A new section ‘Default Application’ was added to the ‘thunar-chooser-dialog’ (MR !81)

Default App Section

On top there are still various open merge requests with partial finished features, most of them from GSoC students for which I did not find time so far. So expect more new stuff to arrive soon !

You as well might want to keep an eye on xfce4-terminal, which received alot of activity recently, since it is now maintained by Sergios Kefalidis.

If you find a bug on any of these new features, please make use of the xfce bugtracker.

Happy testing !

Xfce participation in GSoC 2021

  • June 23, 2021
  • Alexxcon's Software Development Blog

I am a bit late with my blog post .. though I suppose better late than never :D

This year Xfce applied to the Google Summer of Code program and I am happy to tell you that we accomplished to get 3 slots ! (That’s very good, since new organization usually only receive one or two slots)

There was a lot of interest by students. In total 15 proposals were received for Xfce. So sadly we had to refuse several nice proposals. However the number of mentors as well was limited, so that this year Xfce anyhow would not be able to mentor more students.

Now there are 3 very motivated GSoC students supporting Xfce. Allow me to introduce:

Yongha Hwang, who applied for various thunar issues, mostly related to file transmission.

Sergios Anestis Kefalidis, who as well works on thunar, targeting a wide range of features.

Vishal Sharma, who is looking into sample/skeleton panel plugins in different GOI supported languages.

Since I maintain thunar, I am the main mentor of Sergios and Yongha.

These two and as well some other thunar focused GSoC applicants kept me very busy by adding many contributions long before the official coding part started :) Already now I think mentoring for GSoC was a good thing to do. The gain by far outweighs the burden. I don’t have much time left to work on issues myself, though the students overcompensate that by magnitudes.

Here a small taste of the recent activity related to GSoC:

… and that is only thunar. There is as well a lot of activity on exo and libxfce4-util !

Many various smaller tweaks already made it into thunar 4.17.2. Some bigger ones, e.g. issues from the project ideas list are currently in work, or even already landed in the current master.

If you want to take a peek on the upcoming changes and new features already now, you can check the students frequent blog posts:

Yongha Hwang:

Sergios Anestis Kefalidis:

Vishal Sharma:

Hope you will enjoy the upcoming changes!

Thunar, GtkAction and a big mess

  • June 24, 2020
  • Alexxcon's Software Development Blog

Overview

My journey into the GtkAction abysses of Thunar began in the mid of 2019. Be warned, it is no story of success. It is rather a story about finding a way through a maze while walking into almost every dead end.

Actually I just wanted to fix #198 (Merge all file-context-menus into one). But somehow things got weird. More than half a year later and after numerous interactive rebases I finally merged my branch into master \o/

Motivation

The old Thunar used to create the same menu items in different places using different code. In the past that led to inconsistencies. E.g. the location bar only provided a very minimal context menu, no custom actions at all.

location button context menu

From time to time I found myself right-clicking on a location-button, just to find out that there still is no custom action. At some point of maximal annoyance I decided to fix that problem … not sure if I would have done so when I knew how long that road would be.

Looking at thunar-location-buttons.c revealed a lot of duplicated code. thunar-standard-view and thunar-window both used the deprecated GtkActionEntry to define menu item labels and related actions. The location buttons just mirrored parts of that code. On top some other actions were defined in thunar-launcher or had their own classes, inheriting GtkAction.

So yay, lets just copy+paste the missing stuff to the location buttons? Nah, that would be too easy. As a developer who values DRY, it would hurt my belief in clean code to produce more mess.

Let’s Start Hacking

I started to do some coding .. first I created a new widget thunar-menu which internally is a gtk-menu, and moved menu-item creation and the related actions for copy/cut/paste/delete/move_to_trash there to have them at some central place, so they can be reused by different menus. I as well moved the actions from thunar-launcher to thunar-menu (I guess the original intention of the launcher was, to actually launch things, not to manage menu-items) and replaced separate action classes in favour of methods inside thunar-menu.

Meanwhile the location-button-menu and the context-menu, which I used for testing, were populated with some items again.

The old code made massive use of the deprecated GtkAction and GtkActionEntry classes together with GtkUiManager. I did not want to add more G_GNUC_BEGIN_IGNORE_DEPRECATIONS to silence warnings. So I decided to replace the deprecated calls.

Looking into the gtk3 documentation revealed that there now is GAction and GActionEntry which provides some service around accelerator activation, and there is GtkMenu/GMenu for which at that time I had no clear idea why there are two of them.

The documentation of GAction told me that it should not be used for anything related to labels, icons or creation of visual widgets, damn. So at that time I did not see an advantage in using this class. I decided to rather go for GtkMenu together with some custom replacement for GtkActionEntry: XfceGtkActionEntry.

In retrospective ignoring GAction might not have been my smartest move. Meanwhile I understood how GAction can be used with GtkMenu, and I will most likely go for it at some later point.

Regarding GtkUiManager: The definition of menu-items of Thunar was scattered across 7 different *-ui.xml files, making it hard to figure out what belongs together. Because of that I decided to just get rid of the deprecated GtkUiManager and create menu-items in the code instead of predefining their order in xml. IMO the usage of xml files might be nice for static GUI’s, though for dynamic menu-creation it just introduces unnecessary complexity.

So I started to build XfceGtkActionEntry and some support methods.XfceGtkActionEntry is a structure which holds labels, tooltips, icons, types, the accelerator paths and callbacks to the related actions. Like GtkActionEntry it is just a struct and can be filled in a static way.

Next problem: The menus in Thunar so far did not get destroyed, but were updated whenever the selected items got changed, and got shown when needed. That sounded wrong to me. Why should I want to update menu-items, which can be expensive, while no menu is visible at all ? There were bugs about menu flickering and slowness while rubber banding/mass select which seem to be related. Since I anyhow needed to touch that part, I decided to build menus only when they need to be shown.

Things went well, I came to the point where I needed some items from thunar-window, like the zoom-section and the view-specific settings. As well most file-menu items in the thunar-window menu did not work any more since I moved management of them from thunar-launcher to thunar-menu. So next step clearly was: Introduce XfceGtkActionEntry to thunar-window … and than shit hit the fan.

So far the thunar-window menu was always present and took care for any accelerator actions. Since my concept was “create menu on request”, there was no menu instance which could take care for accelerators any more, leading to dysfunctional accelerator keys, rendering my whole concept as faulty .. aargh.

Start all over again

After some time of grieve and doubts I fixed the problem by moving most of the code from thunar-menu back to thunar-launcher, which lifetime is coupled to thunar-window.

From now on thunar-menu was more or less just an convenience wrapper for thunar-launcher … still useful, but sadly it lost its glory. thunar-launcher now builds volatile menu items on request and permanently listens to the related accelerators. Finally accelerators started to work fine, and I was able to continue to fight with the window menu.

I had much more trouble with that menu, too much to tell it here .. however somehow I managed to get it functional, so that it mostly worked like before.

An unpleasant discovery

Later on, while reporting a bug against gtk I learned that the class gtk_accel_map, which I use as a central part will be deprecated soon … aargh again. The gtk devs so far just missed to set a deprecation macro. So it seems like I will need to touch the accelerator part again. This time I plan to make use of the GActionMap interface .. going to be a story for another day.

Testing and open issues

For first testing and code-review I luckily got support of some early adopters. They found many more defects and regressions which kept me busy a long while. Fortunately nothing concept-breaking was found.

While writing this there are still some regressions I introduced, waiting to get fixed by me before a stable release:

And there are related tasks on my agenda, for which I just did not find the time so far:

  • rename thunar-launcher to e.g. thunar-action-manager
  • use thunar-menu in bookmark view
  • use thunar-menu in Tree view
  • many minor things

Conclusion

Finally I ended up with 25 commits and +4717 / -7149 line changes. The occurrence of G_GNUC_BEGIN_IGNORE_DEPRECATIONS got reduced from 250 to 35. The remaining 35 occurrences will further drop when using GtkMenu for bookmark-view/tree-view. That should simplify the move to gtk4 in the future. The location-button context menu shows custom-actions now, and as well some other bugs got fixed with the changes.

So overall, the result does not look too bad I guess.

Well, this blogpost grew by far too long. I hope you nevertheless enjoyed the journey into the Thunar internals!

… enough storytelling for now, I really need to take care of these remaining regressions! :)

Thanks to Reuben, AndreLDM, DarkTrick and others for early testing and bug reporting! Special thanks to AndreLDM, motivating me to write this blogpost at all :D.

Thunar 1.8.0 Release

  • June 6, 2018
  • André Miranda

Good news fellow Xfce users, we proudly present a new Thunar release, our beloved easy-to-use and fast file manager!

The main highlight in this release is that Thunar, as all Xfce components, is saying goodbye to Gtk+ 2 and is now Gtk+ 3 based. Other than that, our team has addressed several critical bugs that compromised Thunar’s stability. Most of those fixes were backported to 1.6.x series and we hope our users do not experience crashes anymore.

By the way, by “our team” I mean Alexander Schwinn and myself, as well as all other developers which contributed to the project, specifically Jonas Kümmerlin, without his work we wouldn’t get here.

We picked up where Jonas left off, his initial port saved us a lot of work, with few adjustments we got Thunar to run under Gtk+ 3. But so we discovered this was no easy job, let’s just say Gtk+ migration path was far from a smooth experience. Besides fixing bugs and regressions, new features were introduced. Not to mention the wonderful work done by translators in promptly updating translations.

What Thunar 1.8.0 has to offer?

  • A completely revised pathbar
    • Buttons next/previous/up/home added
    • Click on the right filler opens path as editable string
    • Here’s a comparison between the old pathbar and the new one Thunar comparison
  • GObject Introspection support for thunarx
    • It paves the way to new language bindings
    • Thunarx-python has already been updated
  • Minor improvements:
    • Show file size as well in bytes
    • Add systemd user unit for D-Bus session services
    • Make it possible to assign accelerators to custom actions
    • Enable Thunar UCA (User Configurable Actions) for remote locations
    • Refreshed tray icons for file transfer
    • Improved various styling details

While moving to Gtk+ 3 it was necessary to replace parts of the Thunar Plugin API (thunarx). It means that to update to Thunar 1.8.0 one should also update all installed thunar-plugins and xfdesktop to their latest versions, see the compability matrix for more details.

A complete list of added features, bug fixes and translation changes can be found in the NEWS file.

That’s it, we hope you enjoy the new Thunar.

Thunar 1.8.0 Release

  • June 6, 2018
  • André Miranda

Good news fellow Xfce users, we proudly present a new Thunar release, our beloved easy-to-use and fast file manager!

The main highlight in this release is that Thunar, as all Xfce components, is saying goodbye to Gtk+ 2 and is now Gtk+ 3 based. Other than that, our team has addressed several critical bugs that compromised Thunar’s stability. Most of those fixes were backported to 1.6.x series and we hope our users do not experience crashes anymore.

By the way, by “our team” I mean Alexander Schwinn and myself, as well as all other developers which contributed to the project, specifically Jonas Kümmerlin, without his work we wouldn’t get here.

We picked up where Jonas left off, his initial port saved us a lot of work, with few adjustments we got Thunar to run under Gtk+ 3. But so we discovered this was no easy job, let’s just say Gtk+ migration path was far from a smooth experience. Besides fixing bugs and regressions, new features were introduced. Not to mention the wonderful work done by translators in promptly updating translations.

What Thunar 1.8.0 has to offer?

  • A completely revised pathbar
    • Buttons next/previous/up/home added
    • Click on the right filler opens path as editable string
    • Here’s a comparison between the old pathbar and the new one Thunar comparison
  • GObject Introspection support for thunarx
    • It paves the way to new language bindings
    • Thunarx-python has already been updated
  • Minor improvements:
    • Show file size as well in bytes
    • Add systemd user unit for D-Bus session services
    • Make it possible to assign accelerators to custom actions
    • Enable Thunar UCA (User Configurable Actions) for remote locations
    • Refreshed tray icons for file transfer
    • Improved various styling details

While moving to Gtk+ 3 it was necessary to replace parts of the Thunar Plugin API (thunarx). It means that to update to Thunar 1.8.0 one should also update all installed thunar-plugins and xfdesktop to their latest versions, see the compability matrix for more details.

A complete list of added features, bug fixes and translation changes can be found in the NEWS file.

That’s it, we hope you enjoy the new Thunar.

Hiding backup files in Thunar

  • September 5, 2011
  • Pasi Lallinaho

There was one feature in the new Thunar with GIO (since Xubuntu 11.04 Natty) that I didn’t like. It was stubbornly showing backup files (*~). I asked the Thunar developer Jannis Pohlmann today if there is a solution/workaround for that, and there definitely is!

Close Thunar, add the line MiscShowBackup=FALSE at the end of your ~/.config/Thunar/thunarrc and launch Thunar again and you’re not seeing the backup files anymore. What a relief. Thanks Jannis!

On a sidenote, I’ve finally started making decent, serious backups of my (Open Source) work. The rsync-based script works better than I could have ever imagined. Thanks go to Marko for that.

Xfce Design Special Interest Group

  • June 4, 2011
  • Jérôme Guelfucci

A special interest group was recently started to improve the usability and visual appearance of the Xfce desktop environment. It is defined on the Xfce wiki as follows:

The Xfce Design SIG aims at improving the usability and visual appearance of the Xfce desktop environment. Our goal is to bring interested users, designers and hackers together to ensure neither of them is working in a vacuum. By establishing a context in which they can collaborate on smaller and larger design-related projects we try to increase the chance of the proposed changes to be merged into the official Xfce repositories.

Everyone is of course welcome to join this group which has already started working on several points and producing very interesting elements! I'll introduce here two of the main projects we are currently working on for Xfce 4.10. But more will follow soon!

I would like to thank Simon Steinbeiß and Pasi Lallinaho from the Shimmer Project who played a crucial role in starting this SIG.

Thunar shortcuts pane rework

You can see what is being proposed on this page. The main goals are to reduce the visual clutter in the shortcuts pane by sorting items in different categories and to integrate nicely remote file systems (Samba, FTP...) which are supported since Thunar 1.2.0. The current demo we have looks like this:

Thunar custom view for the shortcuts pane

I encourage you to have a look at the Wiki page linked above, which contains a very accurate description of what we want to achieve and how we are going to achieve it.

Merge of xfrun and xfce4-appfinder

You can see what is being proposed on this page. The goal is to produce a single interface allowing to quickly launch applications and to perform actions. We plan add an extension system similar to the Thunar Custom Actions to allow the creation of a tailor-made interface.

This is of course still work in progress, but this is how the two main view currently look. Clicking on the arrow on the right hand-side of the entry switches from one view to the other.

appfinder-compact.png

appfinder-expanded.png

I encourage you to have a look at the Wiki page linked above, which contains a very accurate description of what we want to achieve and how we are going to achieve it.

Don't worry!

We already received some mails and comments asking whether it meant that we would move towards a Gnome 3 interface. The goal is not (yet :D) to bring a revolution but rather to streamline what we currently have by improving the numerous rough edges. Of course, we might take some inspiration in other desktop environment but we will not copy what is done in Gnome 3 or KDE4, Xfce has its own philosophy which is serving its users well at the moment.

Useful links

Xfce 4.8 on BSD flavors

  • January 19, 2011
  • Jannis Pohlmann

I should’ve made this more clear in the Xfce 4.8 release announcement but for a moment there I forgot that not everyone knows what we developers are dealing with under the hood.

Many users have been asking what the BSD problems are that I mentioned in the announcement. As some of you may recall is that HAL, the hardware abstraction layer that has for the past few years been used for volume and power management as well as a few other things, has been deprecated and replaced by a variety of frameworks. Today there is udev for device information, udisks for volume management, upower for power management as well as ConsoleKit and PolicyKit for session and permission control.

At least udev is strongly linked to Linux and as far as I know is not available on any of the BSD flavors. Unfortunately it is now the only good way to detect storage devices, cameras, printers, scanners and other devices using a single framework. That’s why we use it in Xfce now in situations where HAL provided us with device capabilities and information to distinguish between the different device types before. The consequence is that thunar-volman no longer works without udev and thus only compiles on Linux. In Thunar itself udev remains optional.

I don’t know what the porting status of the other frameworks is. But I am pretty sure not all of them have been ported to other platforms yet which is why I felt the need to express our disappointment in the announcement. For 2-3 years now all this has been a big mess. New frameworks were invented, dropped again, renamed from *Kit to u* and somewhere on the way it became impossible to keep Xfce as portable as it was before. I know that this is nothing new and that BSD folks faced the same situation as they do now back when HAL was invented but I don’t think it has to be this way.

For the question how we can improve the situation I have no answer yet.

Xfce 4.8 released!

  • January 16, 2011
  • Jannis Pohlmann

Today, after almost two years of work, we have the special pleasure of announcing the much awaited release of Xfce 4.8, the new stable version that supersedes Xfce 4.6.

We hope that everyone will enjoy this release as much as we do. Sadly, this will not be the case as the folks using any of the BSD systems will notice a sudden loss of features. We think that this announcement is a good opportunity to express our disagreement with the recent “Linux-only” developments in the open source ecosystem, especially with regards to the utilities we need in desktop environments.

Xfce 4.8 is our attempt to update the Xfce code base to all the new desktop frameworks that were introduced in the past few years. We hope that our efforts to drop pieces like ThunarVFS and HAL with GIO, udev, ConsoleKit and PolicyKit will help bringing the Xfce desktop to modern distributions.

With Xfce 4.8 our users will be able to browse remote shares using a variety of protocols (SFTP, SMB, FTP and many more). The window clutter has been reduced by merging all file progress dialogs into a single one.

Our panel application has been rewritten, thereby improvingpositioning, transparency, item and launcher management. It also introduces a new menu plugin to view directories. Its plugin framework remains compatible with 4.6 plugins.

We also improved our settings dialogs. The display configuration dialog now supports RandR 1.2, detects screens automatically and allows our users to pick their favorite resolution, refresh rate, rotation. Screens can be configured to either work in clone mode or be placed next to each other. Keyboard selection has become easier and more user-friendly. Also, the manual settings editor has been updated be more functional.

Aside from the features implemented in Xfce, the 4.8 development cycle brought us a bunch of other goodies. For the first time we had a serious release strategy formed after the “Xfce Release and Development Model” developed at the Ubuntu Desktop Summit in May 2009. A new web application made release management a lot easier. We worked hard on improving the situation of Xfce translators which led us to setting up our own Transifex server. Something else you will hopefully notice is that our server and mirroring infrastructure has been improved so that our servers hopefully will not suddenly surrender shortly after this release announcement.

There is a lot more to discover and we hope a lot of you will give Xfce 4.8 a try! There is a brief tour online on

http://xfce.org/ and http://xfce.org/about/tour

A summary of the changes since the 4.8pre3 preview release is available on the following URL (it also includes links to the changes introduced in all preview releases):

http://xfce.org/download/changelogs/4.8.0

The release can be downloaded either as individual releases or as a fat tarball including all these individual versions:

http://archive.xfce.org/xfce/4.8/

2011 has just begun and we are already planning for the future. The 4.10 schedule will be worked on soon and hopefully, we will be able to turn Xfce into a non-profit organization at this year’s FOSDEM, so stay tuned!

But until then we hope you will enjoy today’s release and join us in celebrating. Thanks go out to all our contributors, bug reporters as well as the awesome efforts of our translators and packagers.

Best regards,
The Xfce development team

Xfce 4.8pre2 released!

  • December 5, 2010
  • Jérôme Guelfucci

Xfce 4.8pre2 is now available for download.

It includes the following releases of Xfce core components:

  • exo 0.5.5
  • gtk-xfce-engine 2.6.0
  • libxfce4ui 4.7.5
  • libxfce4util 4.7.4
  • libxfcegui4 4.7.0
  • thunar 1.1.5
  • thunar-vfs 1.1.1
  • xfce-utils 4.7.3
  • xfce4-appfinder 4.7.1
  • xfce4-dev-tools 4.7.3
  • xfce4-panel 4.7.6
  • xfce4-session 4.7.2
  • xfce4-settings 4.7.6
  • xfconf 4.7.4
  • xfdesktop 4.7.4
  • xfwm4 4.7.3

Release tarballs can be retrieved from the following mirrors (please note that it may take a few hours for the mirrors to catch up):

  • http://archive.xfce.org/xfce/4.8pre2/src
  • http://www.tx-us.xfce.org/archive/xfce/4.8pre2/src
  • http://www.p0llux.be/xfce/xfce/4.8pre2/src
  • http://www.ca-us.xfce.org/archive/xfce/4.8pre2/src

A tarball including all individual releases can be downloaded here:

  • http://archive.xfce.org/xfce/4.8pre2/fat_tarballs
  • http://www.tx-us.xfce.org/archive/xfce/4.8pre2/fat_tarballs
  • http://www.p0llux.be/xfce/xfce/4.8pre2/fat_tarballs
  • http://www.ca-us.xfce.org/archive/xfce/4.8pre2/fat_tarballs

Release notes for 4.8pre2

We are pleased to announce the second preview release of Xfce 4.8. This release marks the beginning of the string freeze. From today on until the final release, strings may no longer be changed in the master branch of Xfce core components. This will help translators to prepare their translations for the final release scheduled on January 16th, 2011.

For this release we focused on fixing bugs in all Xfce components. We managed to close a great number of them thanks to all the persons who reported them and tested proposed fixes quickly.

A few minor panel features were added despite feature freeze. We also managed to work on two long time requests: proper support for editing the application menu with menu editors (Alacarte being the one that we tested) and integration with the Compiz viewport. Of course, this release also features a lot of new and improved translations thanks to the amazing work of our translation teams.

A list of all changes is available here.

We hope you will enjoy this release. Please give us feedback by sharing your thoughts, blogging, tweeting, denting or by filing bug reports. With your help, 4.8 will be the best release ever (at least until 4.10)!

Kind regards and thanks to everyone who has contributed to this release,

The Xfce development team