Screenshot and screen recorder shell support - #3
Open
wayne-tbl wants to merge 5 commits into
Open
Conversation
wayne-tbl
force-pushed
the
screen-capture
branch
from
August 17, 2026 12:33
3f80583 to
7d93f3c
Compare
The shell already folds the settings drawer on lock, from inside phosh_shell_set_locked(). Lift that into a function of its own so the screenshot manager can do the same: a screenshot requested from the drawer has to get the drawer out of the picture before it shoots. Not exported. It is called from within the shell only. Signed-off-by: wayne <wayne@furilabs.com>
Clicking the notification opens the file in the default image viewer, and the notification carries a thumbnail of what was captured. Signed-off-by: wayne <wayne@furilabs.com>
A screenshot taken from the quick settings would otherwise be a picture of the quick settings. The delay is counted down in a silent, transient notification, which is closed 350ms before the shutter -- the banner is a layer surface like any other, and a shot taken any sooner catches it on its way out. Signed-off-by: wayne <wayne@furilabs.com>
The screenshot quick setting needs two things the shell alone can do: fold the settings drawer away, and run the countdown somewhere that outlives the drawer. Reaching those from a plugin by exporting phosh_shell_fold_top_panel() and the manager's delayed screenshot would put fork-only symbols in libphosh's export list, which upstream is free to break at any ABI bump. D-Bus costs nothing here and does not. The method goes on a new io.furios.Shell.Screenshot rather than onto org.gnome.Shell.Screenshot: that interface is defined upstream and is not ours to add methods to. It is exported on the same bus name and object path, so a caller needs no second lookup to reach it. Signed-off-by: wayne <wayne@furilabs.com>
The screenshot delay, and the recorder's framerate, speed, codec, bitrate, audio source and touch drawing. The quick settings that write them ship separately, in furios-phosh-plugins, but the schema belongs here: io.furios.phosh.shell is phosh's, a second package cannot extend it, and the Settings panel reads these keys whether or not the plugins are installed. Signed-off-by: wayne <wayne@furilabs.com>
wayne-tbl
force-pushed
the
screen-capture
branch
from
August 18, 2026 11:19
7d93f3c to
a6a9500
Compare
Author
|
The first attempt failed against a blanked screen and exposed an upstream defect: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The shell side of the two capture quick settings. Updated again at review request (18 Aug): the exported symbols are gone — the plugin now reaches the shell over D-Bus instead. The quick settings themselves live in FuriLabs/furios-phosh-plugins#2.
src/phosh-exported-symbols.txt.inis byte-identical toforkyagain, so nothing here can be caught out by an upstream ABI change.shell: add a helper to fold the top panel— the shell already folds the drawer on lock, from insidephosh_shell_set_locked(); this lifts it into a function so the screenshot manager can do the same. Not exported; called from within the shell only.screenshot-manager: open the shot from its notification— click to open in the default image viewer, with a thumbnail of what was captured.screenshot-manager: add a delayed screenshot— otherwise a shot taken from the quick settings is a picture of the quick settings. The countdown runs in a silent transient notification, closed 350 ms before the shutter: the banner is a layer surface like any other and a shot taken sooner catches it on its way out.screenshot-manager: add a FuriOS interface for the delayed screenshot— new.io.furios.Shell.Screenshot.ScreenshotDelayed(u delay), which folds the drawer and starts the countdown, returning as soon as the countdown starts.shell: add the screen capture gsettings— the screenshot delay, and the recorder's framerate, speed, codec, bitrate, audio source and touch drawing.Why a new interface rather than a method on
org.gnome.Shell.ScreenshotSame reasoning applied to the layer-shell protocol: that interface is defined upstream and is not ours to add methods to. This one is exported on the same bus name and the same object path (
/org/gnome/Shell/Screenshot), so a caller needs no second lookup — just a different interface name on the same object. phosh already shipsio.furios.Flashlightd.xml, so the namespace is not new here.If you would rather it sat directly on
org.gnome.Shell.Screenshot, it is a one-line move in the XML and the codegen entry.Why the schema stays here
io.furios.phosh.shellis phosh's schema and a second package cannot extend it, so the keys cannot travel with the plugins. They are also read by the Settings panel (FuriLabs/gnome-control-center#5) whether or not the plugin package is installed.Note on the power button
This adds a screenshot path; it does not replace one.
src/power-menu-manager.cis untouched on every branch in this series and the power-button screenshot works exactly as before.Pairs with FuriLabs/phoc#2: the Show Touches option writes phoc's
touch-pointskey and is inert until that lands.Needed by furios-phosh-plugins#2, which cannot build until this is merged and
libphosh-0.45-devrebuilt from it.5 commits, off
forky. Builds clean on an FLX1.