Papers 46.0 --------------- Papers has been forked from Evince, including the whole history of the evince-next branch to which the authors of the fork contributed extensively. Papers has landed the GTK4 port from Qiu Wenbo, many (breaking) cleanups to both libraries, and a bunch of cleanups, modernizations and improvements to the application itself. For packagers: * The build now requires rust * synctex support has been dropped (possibly temporarily) * DVI backend has been removed As of the changes in general, we can highlight: libraries (libppsdocument, libppsview): * Due to the of modernization of these, all deprecated API has been removed. There have also been some API-breaking changes all around the code, mostly aimed at implementing new patterns. The goal of the authors is to reduce the public surface of the libraries. So please come in contact if you are a user and want to continue using the libraries long-term. We want to learn from your usage to provide a good and long-term maintainable experience. * The libraries no longer provide any icons or use any custom ones. * EvDocumentModel dual-page property has been removed * Transition backends to use a new interface for registration * Mark types as derivable or final as need be * Rename and deprecate EvJobs that do rendering based on cairo * Drop EvJobLoadStream and EvJobLoadGFile. Merge EvJobLoad and EvJobLoadFd * Some work on sanity of PpsJobs API. * GPU based transition of presentation mode with additional effects support. Transitions will no longer work if HW acceleration is not supported * Use GThreadPool for PpsJobScheduler. Many jobs could now run concurrently (even though they don't yet do to locking issues (see #107) ), and we no longer leak the thread memory. * PPS_PROFILE and PPS_PROFILE_JOBS environment variables for profiling are now ignored. Anybody wishing to profile papers can now use sysprof, which provides a far better interface. * Use new GtkFileDialog API. As a future goal it is considered to drop the GTK dependency of libppsdocument * Rename pps_job_is_failed to pps_job_is_succeeded * PpsAnnotation fields are now private and not part of the API. Please use getters and setters to interact with them. shell: * Port to GTK4 thanks to the effort of Qiu Wenbo * Removed spell-checking feature. Hopefully will come back through libspelling * Implemented some new mockups for the first time in years (thanks Chris!) * Lots of small papercuts from the GTK4 migration and other widgets that had not received love in a while. * Many internal cleanups to use standard widgets, instead of showing and hiding internal widgets as different parts of the application change. * Ported many widgets to UI templates * Make the main widget of PpsWindow an AdwViewStack * Start rewriting the UI in Rust, and port several widgets (#21) * Rework a big part of the shell with modern widgetry. * Fix dbus names to fit app id. * Drop the auto-scroll feature for maintainability reasons. * Drop papersd daemon. This was an optional feature that took care that would only be an instance of every document opened. So for example, clicking on an already opened document in Nautilus would move focus to the opened document instead of opening a new one. With this change, new documents will be opened unconditionally. We plan to bring the old feature back by refactoring some of the code, but it requires better isolation of document rendering, so it will probably not be available in the next release * Remove lots of actions on PpsWindow, and start splitting some of them up into a new "doc" action group. Ideally, in the future those will be used for a new PpsDocumentView widget. * Remove user reload action, documents will be reloaded automatically if changes are detected. * Warn users about broken metadata * Remove annotation toolbar, and only allow creating annotations through shortcuts and the context menu. * Show a loading view when the document takes long to load, which greatly improves the UX. * Introduce PpsSearchContext to hold the search, splitting the logic from PpsWindow, and getting another step closer to having the logic ready for a tabbed window. properties: * Can now be used in Nautilus again. Dropped GTK dependency backends: * Dropped support for DVI file format. This is an old and seldomly used document format. The backend has lived unmaintained for many years, and we don't have the bandwidth or interest to maintain it. DVI documents can always be converted to PDF using Evince or other programs. If anybody in the community has a strong interest, they could always maintain an OOT backend, or come to us. * Dropped synctex support. This was planned to work together with gedit, that is no longer a Core App. And modern tex editors all have a PDF previewer built-in. So there's no need to duplicate that work when we cannot maintain a copy of the synctex library internally. * Moved under libdocument Of course, all this does not come without some issues, so we have likely regressed in some aspects. We look forward to testers and gathering feedback. As of the writing, the total diff lays at: git diff -M -B --stat fea2b4a8f HEAD -- . ':(exclude)shell-rs/ev-girs/*.gir' ':(exclude)po' 781 files changed, 73778 insertions(+), 107599 deletions(-)