Xfce - Google Summer of Code 2022
Xfce is a lightweight desktop environment for UNIX-like operating systems. It aims to be fast and low on system resources, while still being visually appealing and user friendly.
Google Summer of Code (GSoC) is a global program focused on bringing more developers into open source software development. Participants work with an open-source organization on a 175-hour or 350-hour programming project during the summer.
If you are a developer who would like to get involved with the Xfce project, please see Xfce Development Information for additional resources.
Note: Due to bot protection you need to request permission on the #xfce-dev IRC channel to be able to fork Xfce proejcts and to open merge requests.
Communication
Participants should idle in IRC in order to stay connected with mentors, other GSoC participants and Xfce developers:
-
The
#xfce-dev IRC channel to follow general Xfce development and to ask coding questions if the mentor is afk.
If you use a native IRC client, please make sure to run a bouncer(bnc) in order to receive offline messages, so that you will not miss anything. (There are some websites around which provide bouncer services free of charge for the for Libera network. Though you as well can host a bouncer yourself)
Alternatively you can use Matrix, which provides bridges to the #freenode IRC network and stores the communication. You can login via OpenID, and it makes a bouncer obsolete. To try that, just follow the links to the channels above.
If you are connecting via Matrix, please dont use Matrix specific things like 'reactions', 'reply', 'delete message' and 'edit message'. While the former will just do nothing for native IRC users. 'edit' might generate an unexpected result. However uploading attachments via Matrix works fine for IRC clients.
Back To Top
Project Ideas
Feel free to package a number of issues to a GSoC project, for which you think, you can solve them in the given timeframe (175h or 350h). Note that the issues you pick don't need to share the same mentor or be entirely from one project (some projects are pretty small and simple to understand).
Note: Fixing some smaller issues already now (E.g. to show your programming skills) as well would be very welcome.
Here are some suggestions to pick from, where mentors already confirmed to support them as part of a GSoC project. You can as well check our gitlab issue tracker for other issues from the projects listed below, though please make sure that there is a mentor supporting your choice!
thunar
Thunar is Xfce's file manager and one of its core components. There are many new features pending to be implemented and bugs that need fixing, some of which are listed below:
-
[Difficulty: easy] [Required Skills: C, Glib] [Possible Mentors: Alexander Schwinn, Yongha Hwang]
[Estimate time: 15h (Could be part of a 175h/350h project)]
To ease the editing of accels.scm
The linked bug contains an old WIP patch.
-
[Difficulty: easy] [Required Skills: C, Glib] [Possible Mentors: Alexander Schwinn, Yongha Hwang]
[Estimate time: 20h (Could be part of a 175h/350h project)]
Bulk rename supports find-and-replace, but the behavior for plaintext replacement and RegEx behavior differs.
Fix RegEx find-and-replace to replace all occurrences.
Additional task: Add an option to replace only the first occurrence
[Difficulty: easy] [Additional Required Skills: Gtk]
[Estimated time: 20h (Could be part of a 175h/350h project)]
Add a checkbox to enable replace-all.
Open an Issue first to work with this problem.
-
[Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Andre Miranda, Alexander Schwinn]
[Estimate time: 40h (Could be part of a 175h/350h project)]
So that the side panel icons are more consistent and less distracting
There is already a
WIP implementation that needs to be rebased and finished.
-
[Difficulty: medium] [Required Skills: C, Glib] [Possible Mentors: Alexander Schwinn, Yongha Hwang]
[Estimate time: 60h (Could be part of a 175h/350h project)]
Implement a strategy that can handle when a resulting name of one file conflicts with the original name of the other.
-
[Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn, Yongha Hwang]
[Estimate time: 60h (Could be part of a 175h/350h project)]
Unlike UNIX systems, Windows and macOS systems do not allow files that differ only by case.
Figure out how to check filesystem case-insensitivity (
Related commit)
Implement a renaming scheme to fit case-sensitive names to case-insensitive filesystems.
Additional task: Warn user about case-insensitive systems
[Difficulty: medium] [Required Skills: C, Gtk]
[Estimated time: 20h + dialog discussion (Could be part of a 175h/350h project)]
Open an Issue first to work with this problem.
Dialog like “Overwrite 'Gtk' with 'GTK'” would confuse users without knowledge about filesystems.
Check if the filesystem is case-insensitive and/or the overwriten file only differs by case.
Figure out a way to inform the user about the problem without explaining too many technical details.
-
[Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
[Estimate time: 60h (Could be part of a 175h/350h project)]
Like for Mac, it would be nice to have the possibility to set custom colors for file and folder names.
The chosen color could be saved as gvfs-metadata value, like done for e.g. emblems.
The property dialog of files/folders would require a color picker.
-
[Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
[Estimate time: 60h (Could be part of a 175h/350h project)]
Currently the only thunar custom action which is provided by thunar is “open terminal here”. (Xubuntu adds some more). To add additional custom actions from
the wiki is not very user-friendly. Thunar could be improved alot here by adding some meaningful default custom-actions, e.g. for catfish search (which now is an Xfce project), PNG/JPG conversion, rotating jpegs, creating symlinks/hardlinks, printing.
Like that we would have the possibility to provide translations for all of these UCA's
We would need the possibility to enable/disable UCA's, so that we can add more “disabled by default” UCA's. That would prevent overload of the menu with UCA's which are possibly of no use for certain users.
One job here would be to modify the UCA-management dialog in order to show disabled UCA's grayed out. A checkbox inside UCA config dialog could be used to enable/disable it. Like all other UCA attributes, those attributes would need to be stored. (The commit adding support for “UCA submenus” will help to see what has to be done)
In a second step, default UCA's could be added from the
wiki page
Code in Xfdesktop, the desktop manager, would also need to be modified to handle disabled UCA's.
-
[Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn, Sergios - Anestis Kefalidis, Yongha Hwang]
[Estimate time: 80h (Could be part of a 175h/350h project)]
While it would be good to know how many files are inside a folder, that can be very resource-consuming, especially in remote locations
The linked bug contains an old WIP patch, which already worked for local files.
The mission would be, to port that patch to thunar master and make it usable for remote location / figure out how to best do so.
It is likely that a good solution requires running this functionality in a separate thread so experience with multi-threading could prove useful.
-
-
[Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
[Estimate time: 80h (Could be part of a 175h/350h project)]
Several thunar plugins, like rabbit-vcs, the thunar-vcs-plugin and thunar-dropbox would profit from the possibility to set emblems on files. Though currently, plugins are not able to do so.
Nautilus already seems to provide such a service. Most likely the nautilus code can be used as inspiration.
It would be required to extend the thunarx
API (
API used by thunar plugin) in order to support custom emblems.
-
[Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Sergios - Anestis Kefalidis, Alexander Schwinn]
[Estimate time: 80h (Could be part of a 175h/350h project)]
The goal of this project is to implement 'Undo' functionality for file operations (where it makes sense).
Examples of such operations are: “copy”, “cut”, “rename”, “move to trash” (I might be forgetting something).
A possible solution would be to create a Stack where information about file operations is kept. To undo Thunar would get the top element of the Stack and execute the reverse operation.
For example, if the top element of the Stack says that a FileA was moved from DirA to DirB Thunar would need to move FileA from DirB to DirA to undo.
-
[Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Sergios - Anestis Kefalidis, Alexander Schwinn]
[Estimate time: 100h (Could be part of a 175h/350h project)]
The goal of this project is to expand the Details View to be able to handle expanded folders like the Tree View in the sidepane does.
-
[Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
[Estimate time: 160h (Could be part of a 175h/350h project)]
A new view in order to maximize the space taken by thumbnails, not showing the file names anymore
-
-
[Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
[Estimate time: 175h (Could as well be part of a 350h project)]
So that all applications which want to pick a file will see the thunar dialog, instead of the foreign GtkFileChooserDialog
Possible required to implement a service
xdg-desktop-portal-xfce
, according to
xdg-desktop-portal-gtk (to be checked)
Creation of the related DBUS Service in thunar
Dialog to pick specific file(s) and hit “done”/“abort” using the current thunar widgets.
-
[Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
[Estimate time: 175h (Could as well be part of a 350h project)]
The way thunar monitors files and folders is not working that great. There are
various issues about displayed content which is not in sync with the content on the disk.
The idea is to either fix the current way thunar does file/folder monitoring, or to re-write the whole file/folder monitoring mechanics in order to fix all the issues with it.
Back To Top
xfce4-terminal
Xfce Terminal is a lightweight and easy-to-use terminal emulator application with many advanced features including drop-down, tabs, unlimited scrolling, full colors, fonts, transparent backgrounds, and more. Work is currently being done to update its legacy parts and add missing features.
-
[Difficulty: easy] [Required Skills: C, Gtk] [Possible Mentors: Sergios - Anestis Kefalidis]
[Estimate time: 25h (Could be part of a 175h/350h project)]
xfce4-terminal supports xfce-session which allows the user to save a session and restore it at will which is very useful for Xfce users.
On the other hand, xfce4-terminal is often used in other Desktop Environments where xfce-session is not available.
It would be very useful to have xfce4-terminal support session restoration on its own, in parallel to xfce-session.
There is already a
patch that lays the groundwork for this but it needs to be expanded and completed.
Note that most likely this issue alone will not be sufficient for a GSoC project, you will need to bundle multiple issues.
-
[Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Sergios - Anestis Kefalidis]
[Estimate time: 80h (Could be part of a 175h/350h project)]
[Estimate time: 120h if migrating to xfconf is required (Could be part of a 175h/350h project)]
Currently xfce4-terminal doesn't have a way to quickly change between different sets of preferences.
Many other terminal emulators use the notion of “Profiles” which are essentially a collection of preferences that the user can save and load at will.
The goal of this project is to implement the aforementioned functionality in xfce4-terminal and in addition give the option to assign accelerators (i.e. shortcuts) to switch between profiles easily.
It might be advantageous for this project to first migrate the preferences to xfconf, there is already an
issue open for investigating the pros and cons of such a change.
Back To Top
xfce4-screenshooter
Screenshooter is a simple and flexible tool to take screenshots. It supports fullscreen, active window and select region modes. Once a screenshot is taken it can be saved, opened with an application, stored in the clipboard or uploaded to Imgur. Screenshooter can be used via its friendly dialogs, command line or panel plugin.
-
[Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Andre Miranda]
[Estimate time: 80h (Could be part of a 175h/350h project)]
Currently screenshooter only supports 4 actions, oftentimes users need to craft scripts that store the screenshot somewhere (i.e. /tmp) and do something else with it.
With custom actions it should be more intuitive on how to extend screenshooter to fulfill several user cases without having to implement all or none (my current take).
We also would like to decouple screenshooter from Imgur, it is a non
FOSS service with privacy implications many users disagree.
With custom actions it should be trivial to add support to any file hosting service.
xfce4-panel
Application launchers, window buttons, applications menu, workspace switcher, and more.
all components
Things which involve various xfce components at the same time
Frequently Asked Questions
We do not force any specifc format. Here is what you have to look for:
-
It can be beneficial to define an alternative target (In case some other participant as well picked your preferred target)
Make sure to define some stretch targets, in case you finish early
Where can I start ?
GSoC Participants Blogs
Previous Years