[gnome-shell] screenshot-ui: Add screencast done notification
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] screenshot-ui: Add screencast done notification
- Date: Sat, 29 Jan 2022 14:48:37 +0000 (UTC)
commit 6f252657fd4b7f4d773583f4bc434a3da77f87af
Author: Ivan Molodetskikh <yalterz gmail com>
Date: Fri Dec 17 09:40:57 2021 +0300
screenshot-ui: Add screencast done notification
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2103>
js/ui/screenshot.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 48 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
index 840df466bc..45417a3b54 100644
--- a/js/ui/screenshot.js
+++ b/js/ui/screenshot.js
@@ -1894,7 +1894,7 @@ var ScreenshotUI = GObject.registerClass({
/* xgettext:no-c-format */
_('Screencast from %d %t.webm'),
{ 'draw-cursor': new GLib.Variant('b', drawCursor) },
- ([success, _filename], error) => {
+ ([success, path], error) => {
if (error !== null) {
this._setScreencastInProgress(false);
log('Error starting screencast: %s'.format(error.message));
@@ -1904,7 +1904,10 @@ var ScreenshotUI = GObject.registerClass({
if (!success) {
this._setScreencastInProgress(false);
log('Error starting screencast');
+ return;
}
+
+ this._screencastPath = path;
}
);
};
@@ -1947,8 +1950,51 @@ var ScreenshotUI = GObject.registerClass({
return;
}
- if (!success)
+ if (!success) {
log('Error stopping screencast');
+ return;
+ }
+
+ // Show a notification.
+ const file = Gio.file_new_for_path(this._screencastPath);
+
+ const source = new MessageTray.Source(
+ // Translators: notification source name.
+ _('Screenshot'),
+ 'applets-screenshooter'
+ );
+ const notification = new MessageTray.Notification(
+ source,
+ // Translators: notification title.
+ _('Screencast recorded'),
+ // Translators: notification body when a screencast was recorded.
+ _('Click here to view the video.')
+ );
+ // Translators: button on the screencast notification.
+ notification.addAction(_('Show in Files'), () => {
+ const app =
+ Gio.app_info_get_default_for_type('inode/directory', false);
+
+ if (app === null) {
+ // It may be null e.g. in a toolbox without nautilus.
+ log('Error showing in files: no default app set for inode/directory');
+ return;
+ }
+
+ app.launch([file], global.create_app_launch_context(0, -1));
+ });
+ notification.connect('activated', () => {
+ try {
+ Gio.app_info_launch_default_for_uri(
+ file.get_uri(), global.create_app_launch_context(0, -1));
+ } catch (err) {
+ logError(err, 'Error opening screencast');
+ }
+ });
+ notification.setTransient(true);
+
+ Main.messageTray.add(source);
+ source.showNotification(notification);
});
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]