Xfce - Google Summer of Code 2021
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 student developers into open source software development. Students work with an open source organization on a 10 week programming project during their break from school or university.
The Xfce project was accepted as an organization into GSoC 2021 is looking for students to boost the project and possibly recruit new contributors and maintainers.
If you are a developer who would like to get involved with the Xfce project, please see Xfce Development Information for additional resources.
Communication
Students should idle in IRC in order to stay connected with mentors, other GSoC students and xfce developers.
- our IRC channel to discuss Xfce GSoC related topics
- our 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.
In order to coordinate projects, students should add their names to this google spreadsheet and check the sub-projects they are interested in.
Project Ideas
Create Sample/Skeleton plugins in all GOI supported languages
As we already have sample/skeleton panel plugin in C Language and good example of thunar plugin in C Language, we can write the same for other languages which have support for Introspection, in that we create 2 plugins for each language,
- A minimal skeleton which just creates a hello world like plugin.
- Other sample plugin in which we use most of the available APIs.
that make it's easy for everyone to understand the basic working and development of xfce4 panel and thunar plugins.
- [Language: any from the list]
[Difficulty: Medium] [Required Skills: Gtk, Gobject, GLib] [Possible Mentors: Manjeet Singh]
Improve 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, Gtk] [Possible Mentors: Alexander Schwinn]
- Often when searching something in trash, the latest trashed items are of interest.
- The mission here would be, to add another sorting category “delete date”. That category only can be picked for “trash”.
- Most likely it will be required to bundle multiple trash/delete issues into a “improve trash/delete handling” GSoC Project to have work for 175 hours.
-
- [Difficulty: easy] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- Currently setting a default application is a bit hidden in thunar. And if not set, the last used application always will be used as default, which is bad UX (see issue description).
- The idea is, to automatically select an application as default for a specific mime-type on the first open, if no default application was defined so far for that mime type.
- Additionally the “open with” context menu should get an additional entry labeled “set default application”.
- The application chooser should highlight the current default application in some way.
- Note that most likely this issue alone will not be sufficient for a 175 hour Project, you will need to bundle multiple issues.
-
- [Difficulty: easy] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- The location “recent:/” currently is not well supported within thunar. Files inside there have a “locked” symbol and many formats cant be opened properly.
- It would be nice to fix these flaws, and show the “recent” section by default if the system provides it.
- Note that most likely this issue alone will not be sufficient for a 175 hour Project, you will need to bundle multiple issues.
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- Currently zoom levels are the same for each directory. However since thunar 4.16.x, several settings, like view-type and sorting order can be saved per directory. As well for the zoom level that would make a lot of sense.
- The commits for the existing “per-directory-settings” could be used as a base to see how it can be accomplished.
- In addition it could be interesting to select in detail which settings should be shown “per directory” instead of switching just all of them on/off.
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- 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 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, that 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: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- In the past we had alot of bugs related to tree-view (sidepane) letting CPU run at 100%. The reason is, that building the file-tree is a complex procedure which has a lot of corner cases, embedded in an recursive call. Errors during tree buildup occasionally led to infinite tree-walk, blocking a single core.
- It looks like for now we found all problematic corner cases, though in order to make the related code more failsafe for further changes, it still would be nice to have a rate-limiting mechanism, using
g_timeout_add_full
to make sure that even in a malfunction case, a CPU will not be 100% blocked.
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- Currently there is only a single file which stores all the user-specific custom actions
- It would be much more “packager-friendly” if several files could be used for that purpose. So that distributions could easily add additional custom actions, without messing with files in the userspace.
- The user would need to be able to overwrite and disable system-defined UCA's. (See as well here)
- Optionally the project could be extended by changing the format from “.xml” to “.desktop” files.
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- There is a couple of open issues related to file search. According to your skill-level we could make a GSoC project out of multiple of these bugs.
- E.g. the possibility to access a file-search tool, like catfish via toolbar (Possibly by using a DBus call?)
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- Currently on restart only the latest used path is restored.
- Like web browsers, thunar could restore all paths from the last session instead.
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- There are a number of issues filed on the thunar bulk renamer which could be packed as a GSoC project dependent on your skill-level
- E.g. it is needed to properly highlight renaming conflicts, and several smaller enhancements
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- The execute flag currently is used to mark a launcher as “trusted”. That can be easily lured, since as well via unpacking an archive, an executable flag can be imported.
- The idea is to use a “trusted” flag stored as gvfs metadata, like nautilus(files?) already does.
-
- [Difficulty: medium] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- 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: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- Currently in thunar it is possible to specify custom keyboard shortcuts via the accels.xml file. That is not user-friendly.
- Instead, it would be nice to have a dialog which provides an overview on all thunar shortcuts and the possibility to change them.
- That dialog should be implemented in libxfce4ui in a way that allows other Xfce components to reuse it.
-
- [Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- The freedesktop thumbnail spec described how to store and retrieve thumbnails. Thunar impements only part of the spec. The “shared thumbnail folder” part described on freedesktop.org is entirely missing.
- To implement the spec fully, the following things needs to be changed:
- Thunar needs to check .sh_thumbnails and display thumbnails there before requesting new thumbnails to be created by tumbler
- Tumbler needs only to create thumbnails if they are not already in .sh_thumbnails
- For remote drives, thumbnails should also be displayed if they are in .sh_thumbnails, even if thumbnails for remote drives are disabled
-
- [Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- While it would be good to know how many files are inside a folder, that can be very resource-consuming, specially on 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.
- If that is not challenging enough for you, there is an issue for showing recursive file size (as well that issue has a partly functional patch attached).
-
- [Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- 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.
- Move resources which can be shared between thunar and xfdesktop into libxfce4util/libxfce4ui
- [Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- Both components need to do file operations, mounting and provide context menus. The related code currently is duplicated.
- The idea is to move that code and it's dependencies to a shared library in order to reduce duplication, and to ease maintenance work.
- There is no issue yet for that project …feel free to open one
-
- [Difficulty: challenging] [Required Skills: C, Gtk] [Possible Mentors: Alexander Schwinn]
- 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: Andre Miranda, Alexander Schwinn]
- 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.
Wayland Support
The X11 windowing system is currently in maintenance mode, as it is an aging system, and the Linux desktop ecosystem is transitioning to the Wayland display server protocol. In order to speedup the transition of Xfce's components to Wayland, they need to be tested and bugs need to be filed and fixed. Wayland Roadmap
Improve Accessibility
Investigate all Xfce applications to ensure that they are 100% accessible to screen reader and keyboard users, including making the panel navigatable, assign and fix accelerators (example), present info to screen reader in thunar (bug), etc.
Create StatusNotifierItem Skeleton / example
We already provide a way to show StatusNotifierItems in our panel as an alternative to writing traditional plugins, which only target Xfce. In order to be able to port some of our plugins (at least where that makes sense) to the open standard it would be helpful to have a skeleton or example StatusNotifier.
Add Calendar Capabilities to Clock
The Gtk2-based Orage calendar panel plugin was deprecated in Xfce 4.16 and the Clock panel plugin has no Calendar capabilities, so a new Calendar widget would need to be rewritten in modern widgets, as the Gtk3 Calendar widget is a mess. The widget should be made with the intent that it can be used by other projects and should be pluggable with desktop and online calendar apps (bug report).
[Required Skills: C, Gtk, Glib]