Xfce

Subdomains
 

A couple of big features for Thunar

  • September 16, 2021
  • Sergios - Anestis Kefalidis

A couple of big features for Thunar

  Welcome to my first post-GSoC blogpost. Google Summer of Code might have ended but I'm continuing my daily work on Thunar and Xfce Terminal (more on that later). This blog-post is accompanied by a video that showcases what is written here.

Recursive Search

  I'm happy to inform you that my work on implementing a performant recursive-search in Thunar has been met with success. Users will be able to recursively search their filesystem (including remote folders and other special locations like Recent and Trash) and sort the results like they would in any folder. Presently, searching is depth limited but in the final version you will be able to select a custom depth or no depth at all, to make sure that this is useful even for older machines and at the same time makes use of the resources of faster systems. As this is a work in progress there are some bugs and crashes but it looks like the big issues have been solved at last. You can see for yourself at: link.

Shared Thumbnail Repositories

  Additionally, I wanted to give users the option to create shared thumbnail repositories from within Thunar. That's why I've been working on creating a script to create Shared Thumbnail Repositories using any thumbnailer that implements the D-Bus thumbnailing spec (tumbler being an example of such a thumbnailer). You will be able to use this script from Thunar through a custom action.

Xfce Terminal

  Lastly, I wanted to let you know that I've become the maintainer of xfce4-terminal. I've been working on resolving old issues, fixing bugs and merging MRs that have been sitting stagnant for months. I've got a lot of exciting things to show you on that front, so stay tuned.


Previous post

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 !

GSOC contribution summary

  • August 17, 2021
  • Yongha Hwang

Secure .desktop handling (Thunar !117, !121, Exo !44, Libxfce4util !16)

.desktop file is a special kind of script that is optimized for launching application. It can use custom icon and name to represent application. However, this feature can be abused as it can disguise it as any type of file. To prevent this security breach, I introduced a “trused” flag to mark whether this .desktop file is safe to execute. By utilizing GVFS-metadata, there is no way that the flag of any downloaded file. A user will be warned about the safety hazard until the user sets “trusted” flag up.

File copy improvements

Implement queued transfer management (Thunar !116)

Sequential transfer, which is introduced in 4.16, caused freuqent freeze and/or crash. Now sequential transfer is handled by a queue, and now this feature works without a problem.

Keep modified time for the file copied from foreign location (Thunar !127)

When copying from remote locations, all the metadata gets lost. The original plan was to use g_file_build_attribute_list_for_copy() to overwrite metadata of the copied file, but for now, it only copies modified time of the original file.

Use “copy name” when copying from gvfs-google backend (Thunar !121)

When copying a file from gvfs-google (google-drive:// protocol), the filename was replaced with unreadable number-alphabet combination. Now the filename is maintained without a problem.

Use intermediate file to copy files (!130)

When a file transfer gets interrupted for any reason, the file that is not fully transferred is left on the destination. Since that the single file on the destination is guaranteed to be corrupted, a user cannot just retry copying the same file on the destination and skip duplicate files. To solve this problem, Thunar will try to delete the incomplete file if it can. In case the destination is not accessible at the time, there is a safer option that first copies a file with a different name than the original and then change the name of the copied file to its original.

Fix invalid filenames when copying to FAT-like filesystem (!137, !138)

FAT and NTFS have a stricter naming rule than EXT filesystem. Also, Windows has a reserved word for filename. For this reason, when copying a file to FAT-like system, Thunar will automatically rename to avoid illegal names before copy.

Check if a target directory is a subdirectory of the moved folder (!139)

Now Thunar will check if a target directory is a subdirectory of the moved folder before trying to copy files.

Implement “safe copy” (!144)

New option “safe copy” will compare checksum of the original and the copy if enabled. This will largely increase copy time, but it would be useful if the source location or the destination is unreliable.

Miscellaneous

For directories, leave size column blank (Thunar !83)

For some reason, Thunar has shown a block size of the filesystem as the “file size” of the directory. This value might be confusing to a user, so now the file size is only shown for regular files.

On “Select by Pattern” add option for case sensitivity (Thunar !89, !98)

“Select by Pattern” feature was not case sensitive, so now case insensitive select is introduced and set as a default.

Improve computer:// panel (Thunar !92)

Detail view for computer:// was incomplete since it cannot be handled like a normal directory. Now “size” column shows disk usage info, and “type” column shows a device type.

Deprecate ExoBinding (Exo !42, ThunarMediaTagsPlugin !4, Xfce4PlacesPlugin !7, Thunar !113, ThunarVolman !8)

Since ExoBinding in Exo can be replaced with GBinding in GLib, ExoBinding is deprecated and the usage within XFCE project is replaced with GBinding.

Preserve metadata when editing desktop item (Exo !43)

When editing a desktop item with exo-desktop-item-edit, all the metadata got lost since the modified file was actually a new file that replaces older one. This problem is fixed and the file modified maintains its info.

A journey comes to an end

  • August 16, 2021
  • Sergios - Anestis Kefalidis
A journey comes to an end

  As this year's Google Summer of Code comes to a close, so does this series of blogposts. Since this is my last post related to GSoC I have decided to summarize my contributions to Xfce and give you a glimpse of what I'll be working on in the foreseeable future. If you have read my previous posts, you can skip right to the end since you have already read most of the stuff that I'm going to write.

What has been done

  My project's goal was to improve various aspects of Thunar, dealing with several important deficiencies that existed. In the roughly two and a half months that my work lasted I made the following contributions:

  • Add zoom-level as a per-directory setting MR, giving users the ability to have the zoom-levels of their directories restored upon opening them.
  • Support for GTK-Recent MR, adding support for the `recent:///` location, and all that this entails.
  • GTK-Recent
  • Provide additional menu item for trashed files: "restore and open folder" MR, giving users the option to immediately open the location of files restored from the Trash folder.
  • Add a preference to restore tabs on startup MR, or as it is known in other programs a preference to 'restore the last session'.
  • Preference
  • Support shared thumbnail repositories MR, making Thunar one of the relatively few programs that support the #SHARED part of the freedesktop.org thumbnail spec. For more info about what this I've uploaded a video in a previous blogpost.
  • Search improvements for Thunar MR, which completely reworks Thunar's search functionality and makes Catfish easily accessible from Thunar.
  • Some bugfixes and minor additions.

 Additionally since I've started working on Thunar, in the beginning of this year's GSoC I've worked on improving the `Trash` location by adding a new `Date Deleted` column and making the `Empty` and `Restore` actions more accessible.
Trash

  I've also made minor improvements to the `Renamer` as well as dealing with various small bugs or missing features of Thunar.

The future

  Google Summer of Code might be ending, but my job isn't done. I will continue working on adding a decent recursive-search. A lot of progress has been made on that front, but the performance isn't quite there yet. Besides that, I want to give Thunar users an option to easily create Shared Thumbnail Repositories which is something that I will probably do through a new plugin.

Acknowledgements

 All in all, I've had a great deal of fun and I'm very much looking forward to continue working with the Xfce community on improving the Xfce Desktop Environment. I want to thank my mentor Alexander Schwinn (@alexxcons) for his continuous support and exceptional mentoring, as well as his calm and motivational attitude. I also want to thank Yousuf Philips (@philipz) for promoting all of our work, posts and videos and being a really friendly and kind person to talk to (which was especially great when I first came in contact with the Xfce community).


Link to all my Thunar Merge Requests: link
Previous post

Search improvements

  • August 2, 2021
  • Sergios - Anestis Kefalidis
Search improvements

 Welcome back. This is my last (or second to last) blog post for this year's Google Summer of Code with Xfce and Thunar. Unlike previous weeks this time I have only one new thing to talk to you about. Searching in Thunar.

 Most of you might have noticed that Thunar has had a significnt deficiency for a while. Thunar has been missing a decent solution for searching for files in the filesystem. Users could search for files in the selected directory, but even that was a pretty mediocre experience, because results weren't being filtered while searching. Fortunately there is another program under the Xfce umbrella that makes searching for files a breeze. That program is, of course, Catfish. Unfortunately this status quo requires users to juggle between Thunar and Catfish even when searching for simple things.

 In the past two weeks I've been working on two things. First, making Catfish easier to use through Thunar. Second improving Thunar's built-in search features to make routine and/or simple searches possible without leaving Thunar. The first improvement is pretty straightforward. A new button has been added that allows the user to open catfish with the specified search query from inside Thunar. As far as the improving the built-in search features goes, I've implemented a basic depth-limited recursive search in Thunar that is accessed from the location bar, which can now be used as both a location bar and a search bar. As the user types his/her search query the view is updated with the results. For convenience in addition to the current directory and its subdirectories, Thunar searches the GTK-Recent database for eligible entries.

 Instead of describing how all this works I would like to demonstrate state of things to you. Some small things are missing (like options for selecting whether the GTK-Recent database should be searched and a new `location` column that will be introduced), but the core functionality has been implemented and is close to being merged.


Link to all my Merge Requests: link
Previous post

Supporting shared thumbnail repositories and video update

  • July 11, 2021
  • Sergios - Anestis Kefalidis
Supporting shared thumbnail repositories and video update

 Greetings! After 84 yea.... 17 days I'm back with another blog-post. This time a shorter one, since most of my work has been on finishing the features that I talked about last week and implementing support for shared thumbnail repositories (as specified in freedesktop.org).

 Support for Shared thumbnail repositories: For 15 years the #SHARED part of the freedesktop.org thumbnail specification has been ignored by the vast majority of Linux file managers. At last, the time has come for Thunar to be one of the first, if not the first, file managers that support shared thumbnail repositories. 'What are shared thumbnail repositories' I hear you ask. Let me explain. Imagine that you have a large external hard drive that contains family photos (something that most, if not all of us have). Connecting it in a new PC or as a different user would normally lead to thumbnailing for all the files that are visible in your file manager. That process is both slow and wasting space. That is the problem that shared thumbnail repositories solve. Instead of creating and storing thumbnail in the default location of the PC filesystem, thumbnails are stored locally in the USB/HDD/CD. It is a niche but potentially extremely useful feature.

 I've linked a video that showcases the stuff that I've talked about in these blogposts, with the exception of shared thumbnail repositories. Even though the code is complete and it works as it should there has been a problem with Tumbler while refactoring. Specifically, it looks like Tumbler doesn't use libxfce4util, where I placed some shared code to avoid duplication. Hopefully next time I'll be able to show them to you.


Link to all my Merge Requests: link
Previous post

Weekly update

  • July 4, 2021
  • Yongha Hwang

Safety flag

Related: Thunar !121

Coding safety flag interface is done, but since it requires new version of libxfce4util, it is waiting for docker image to be updated.

Keep metadata when copying from remote location

Related: Thunar !127

Thunar loses some metadata on copy when file source is from remote location like ftp://. Right now, I am working on what metadata should be copied in that case.

Use proper name to copy files

Related: Thunar !128

gvfs-gdrive extension provides a neat way to use Google Drive as a network drive, but copied files got an unintelligible name for some reason. So I am patching up the logic to move the files into a readable name.

Safe copy

Related: Thunar !130

This MR will add a feature to separate copy-in-progrss files and already copied files in case something aborts the copy, so “skip all existing files” on the second try can guarantee that every file is copied properly. Without this feature, the user has to copy every file again or somehow find which one is a corrupted file (which is like finding a needle in haystack).

It also will provide optional feature to check every file copied that it is not corrupted - probably used for network drives.

Right now only the first part is done - every files copied will be first named as *.partial~ (which is hidden) and be renamed after copy.

Weekly update

  • June 25, 2021
  • Yongha Hwang

Another update!

Safety flag - almost done!

Related : Thunar !121

Interface for safety flag is almost done. A bit more polishing and it would be good to go.

Exo-Desktop-Item-Edit

Keep metadata on edit

Related : xfdesktop #68->Exo #64, Exo !43

exo-desktop-item-edit, which is used to edit .desktop files, removed metadata while writing changes. This caused permission bits to be reset without execution bit. It is now patched to preserve metadata (including safety flag and execution bit).

Support for safety flag

Related : Exo !44

While fixing previous issue, I added an optional feature to support safety flag on exo-desktop-item-edit. Now if libxfce4util supports safety flag, .desktop file will be created with safety flag on.

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!

(A bit late) weekly update

  • June 21, 2021
  • Yongha Hwang

Well, it’s a bit late for a weekly update that it should be rather called decadly update. But well, better than nothing!

WIP: Safety flag

Related:

I’m still working on safety-flag, which is mentioned in my introduction post and 2nd saturday post. Not much have changed, but now an interface for safety flag is going to be merged into libxfce4util. Also, this flag will now only be used for .desktop files, rather than every executables.

Also, the UI part of this project also got its MR page (Thunar !121). Several discussion later (startig from here), we decided to put checkbox for safety flag on Property->Launcher. Because flicking trusted flag on should also trigger executable flag on, it would be preferrable to show it visually. Thus toggle button for executable flag would also be on Launcher tab. So this would be how it will look like:

image_for_new_UI

Additional update

Related: libxfce4ui !42 (42 is a nice number!)

While I was working on safety flag, I got distracted by the boilerplates used on several XFCE projects, which was a direct copy of thunar_gtk_label_set_a11y_relation(). To use this function across XFCE projects, I ported this to libxfce4ui as xfce_gtk_label_set_a11y_relation(). Doesn’t it feel good when duplicate codes are replaced with a proper function?