We've been expecting NautilusFilesView to pass a window handle to nautilus_previewer_call_show_file(), requiring it to call async methods from NautilusWindow to get them. There are a few problems with this approach: 1. It's a layer violation for the view to call into the window. Not only is this conceptually wrong, it's keeping us from reusing the view in other windows which are not NautilusWindow instances, like as the upcoming FileChooser window. 2. It's leaking details of the NautilusPreviewer2 D-Bus API into NautilusFilesView and NautilusWindow, namely the expected format of the window handle. 3. Even though this format is a de-facto standard nowadays, we are not using it for anything else, so there is no value in keeping it in NautilusWindow API. 4. Even if we start using it for other purposes, there it nothing specific to NautilusWindow in how to generate a window handle; it's the same process for any toplevel surface. 5. Tying the window handle's validity to the lifetime of the NautilusWindow instance means we keep it exported even if no longer used by the previewer, and in theory we would use the same handle for multiple peers. So, have NautilusFilesView pass a generic GtkRoot pointer instead and handle the exporting and unexporting lifetime of window handles in the previewer glue code instead. The NautilusWindow API, no unused, is also removed. If the need arises in the future to reuse this export/unexport logic, we can always move it into ui-utilities.c or something like that. Part of: https://gitlab.gnome.org/GNOME/nautilus/-/work_items/3402 |
||
---|---|---|
.gitlab | ||
build-aux/flatpak | ||
data | ||
docs | ||
eel | ||
extensions | ||
icons | ||
libnautilus-extension | ||
po | ||
src | ||
test | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gitlab-ci.yml | ||
LICENSE | ||
meson_options.txt | ||
meson.build | ||
nautilus.doap | ||
NEWS | ||
README.md |
nautilus
This is the project of the Files app, a file browser for
GNOME, internally known by its historical name nautilus
.
Supported version
Only the latest version of Files as provided upstream is supported. Try out the Flatpak nightly installation before filling issues to ensure the installation is reproducible and doesn't have downstream changes on it. In case you cannot reproduce in the nightly installation, don't hesitate to file an issue in your distribution. This is to ensure the issue is well triaged and reaches the proper people.
Contributing to nautilus
To build the development version of the Files app and hack on the code see the welcome guide.
Commit messages should follow the expected format detailed here.
Update default branch
The default development branch of nautilus has been renamed to main
. To
update your local checkout, use:
git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
Runtime dependencies
- Bubblewrap installed. Used for security reasons.
- Tracker (including tracker-miners) properly set up and with all features enabled. Used for fast search and metadata extraction, starred files and batch renaming.
Discourse
For more informal discussion we use GNOME Discourse in the Applications category with the nautilus
tag. Feel free to open a topic there.
Extensions
Documentation for the libnautilus-extension API is available here. Also, if you are interested in developing a Nautilus extension in Python you should refer to the nautilus-python documentation.
How to report issues
Report issues to the GNOME issue tracking system.