parent
284528cb97
commit
221d74f481
@ -0,0 +1,46 @@
|
||||
From 1cad6c8d47fb9f0b17a2c47f93e5f923d1cb32c3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Thu, 7 Mar 2024 18:22:32 +0100
|
||||
Subject: [PATCH] windowPreview: Override with window icon if available
|
||||
|
||||
---
|
||||
js/ui/windowPreview.js | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/js/ui/windowPreview.js b/js/ui/windowPreview.js
|
||||
index e67ec9ec0f..db325258b4 100644
|
||||
--- a/js/ui/windowPreview.js
|
||||
+++ b/js/ui/windowPreview.js
|
||||
@@ -123,6 +123,12 @@ var WindowPreview = GObject.registerClass({
|
||||
const tracker = Shell.WindowTracker.get_default();
|
||||
const app = tracker.get_window_app(this.metaWindow);
|
||||
this._icon = app.create_icon_texture(ICON_SIZE);
|
||||
+ // Override with window icon if available
|
||||
+ if (this._hasWindowIcon()) {
|
||||
+ const textureCache = St.TextureCache.get_default();
|
||||
+ this._icon.gicon = textureCache.bind_cairo_surface_property(
|
||||
+ this.metaWindow, 'icon');
|
||||
+ }
|
||||
this._icon.add_style_class_name('icon-dropshadow');
|
||||
this._icon.set({
|
||||
reactive: true,
|
||||
@@ -226,6 +232,16 @@ var WindowPreview = GObject.registerClass({
|
||||
});
|
||||
}
|
||||
|
||||
+ _hasWindowIcon() {
|
||||
+ // HACK: GI cannot handle CairoSurface, so this
|
||||
+ // will throw if the icon property is non-null
|
||||
+ try {
|
||||
+ return this.metaWindow.icon !== null;
|
||||
+ } catch (e) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
_updateIconScale() {
|
||||
const { ControlsState } = OverviewControls;
|
||||
const { currentState, initialState, finalState } =
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,107 @@
|
||||
From 3a89e8597f6f3e7fa468bae93768f8253a3141e7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Thu, 6 Oct 2022 14:30:20 +0200
|
||||
Subject: [PATCH 1/2] inhibitShortcutsDialog: Don't override resource
|
||||
|
||||
PermissionStore's Set() method takes a complete permission
|
||||
table, so when setting an app's permission, we are implicitly
|
||||
removing all previously set entries for other apps.
|
||||
|
||||
Switch to the SetPermission() method which sets the permission
|
||||
for a single app.
|
||||
|
||||
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5937
|
||||
|
||||
Part-of:
|
||||
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2504>
|
||||
---
|
||||
...g.freedesktop.impl.portal.PermissionStore.xml | 7 +++++++
|
||||
js/ui/inhibitShortcutsDialog.js | 16 ++++++----------
|
||||
2 files changed, 13 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml b/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml
|
||||
index 75fbc468a8..55d3fc30cb 100644
|
||||
--- a/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml
|
||||
+++ b/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml
|
||||
@@ -13,6 +13,13 @@
|
||||
<arg name="app_permissions" type="a{sas}" direction="in"/>
|
||||
<arg name="data" type="v" direction="in"/>
|
||||
</method>
|
||||
+ <method name="SetPermission">
|
||||
+ <arg name='table' type='s' direction='in'/>
|
||||
+ <arg name='create' type='b' direction='in'/>
|
||||
+ <arg name='id' type='s' direction='in'/>
|
||||
+ <arg name='app' type='s' direction='in'/>
|
||||
+ <arg name='permissions' type='as' direction='in'/>
|
||||
+ </method>
|
||||
<signal name="Changed">
|
||||
<arg name="table" type="s" direction="out"/>
|
||||
<arg name="id" type="s" direction="out"/>
|
||||
diff --git a/js/ui/inhibitShortcutsDialog.js b/js/ui/inhibitShortcutsDialog.js
|
||||
index c59544eaf9..8ef5861261 100644
|
||||
--- a/js/ui/inhibitShortcutsDialog.js
|
||||
+++ b/js/ui/inhibitShortcutsDialog.js
|
||||
@@ -1,5 +1,5 @@
|
||||
/* exported InhibitShortcutsDialog */
|
||||
-const { Clutter, Gio, GLib, GObject, Gtk, Meta, Pango, Shell, St } = imports.gi;
|
||||
+const {Clutter, Gio, GObject, Gtk, Meta, Pango, Shell, St} = imports.gi;
|
||||
|
||||
const Dialog = imports.ui.dialog;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
@@ -57,15 +57,11 @@ var InhibitShortcutsDialog = GObject.registerClass({
|
||||
if (!this._shouldUsePermStore() || this._permStore == null)
|
||||
return;
|
||||
|
||||
- let permissions = {};
|
||||
- permissions[this._app.get_id()] = [grant];
|
||||
- let data = GLib.Variant.new('av', {});
|
||||
-
|
||||
- this._permStore.SetRemote(APP_PERMISSIONS_TABLE,
|
||||
- true,
|
||||
- APP_PERMISSIONS_ID,
|
||||
- permissions,
|
||||
- data,
|
||||
+ this._permStore.SetPermissionRemote(APP_PERMISSIONS_TABLE,
|
||||
+ true,
|
||||
+ APP_PERMISSIONS_ID,
|
||||
+ this._app.get_id(),
|
||||
+ [grant],
|
||||
(result, error) => {
|
||||
if (error != null)
|
||||
log(error.message);
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
||||
From 1391efb2356d1b1eac631df2f5fbd61a7a72bf52 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Fri, 18 Nov 2022 22:40:31 +0100
|
||||
Subject: [PATCH 2/2] inhibitShorcutsDialog: Fix permission check
|
||||
|
||||
Each permission entry is an array of strings, so checking that against
|
||||
the expected string itself will always fail.
|
||||
|
||||
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6107
|
||||
|
||||
Part-of:
|
||||
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2548>
|
||||
---
|
||||
js/ui/inhibitShortcutsDialog.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/js/ui/inhibitShortcutsDialog.js b/js/ui/inhibitShortcutsDialog.js
|
||||
index 8ef5861261..4cd2793c3d 100644
|
||||
--- a/js/ui/inhibitShortcutsDialog.js
|
||||
+++ b/js/ui/inhibitShortcutsDialog.js
|
||||
@@ -145,7 +145,7 @@ var InhibitShortcutsDialog = GObject.registerClass({
|
||||
let [permissions] = res;
|
||||
if (permissions[appId] === undefined) // Not found
|
||||
this._dialog.open();
|
||||
- else if (permissions[appId] == GRANTED)
|
||||
+ else if (permissions[appId][0] === GRANTED)
|
||||
this._emitResponse(DialogResponse.ALLOW);
|
||||
else
|
||||
this._emitResponse(DialogResponse.DENY);
|
||||
--
|
||||
2.43.0
|
||||
|
@ -1,51 +0,0 @@
|
||||
diff --git a/js/portalHelper/main.js b/js/portalHelper/main.js
|
||||
index 25f866281..a221c3b88 100644
|
||||
--- a/js/portalHelper/main.js
|
||||
+++ b/js/portalHelper/main.js
|
||||
@@ -4,10 +4,17 @@ imports.gi.versions.Soup = '2.4';
|
||||
|
||||
const Format = imports.format;
|
||||
const Gettext = imports.gettext;
|
||||
-const { Gio, GLib, GObject, Gtk, Pango, Soup, WebKit2: WebKit } = imports.gi;
|
||||
+const { Gio, GLib, GObject, Gtk, Pango, Soup } = imports.gi;
|
||||
|
||||
const _ = Gettext.gettext;
|
||||
|
||||
+let WebKit;
|
||||
+try {
|
||||
+ WebKit = imports.gi.WebKit2;
|
||||
+} catch {
|
||||
+ WebKit = null;
|
||||
+}
|
||||
+
|
||||
const Config = imports.misc.config;
|
||||
const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||
|
||||
@@ -346,6 +353,11 @@ function initEnvironment() {
|
||||
function main(argv) {
|
||||
initEnvironment();
|
||||
|
||||
+ if (!WebKit) {
|
||||
+ log('WebKit2 typelib is not installed, captive portal helper will be disabled');
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
if (!WebKit.WebContext.new_ephemeral) {
|
||||
log('WebKitGTK 2.16 is required for the portal-helper, see https://bugzilla.gnome.org/show_bug.cgi?id=780453');
|
||||
return 1;
|
||||
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
|
||||
index 01c83c86b..8c5bd8dcb 100644
|
||||
--- a/js/ui/status/network.js
|
||||
+++ b/js/ui/status/network.js
|
||||
@@ -2070,7 +2070,9 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
new PortalHelperProxy(Gio.DBus.session, 'org.gnome.Shell.PortalHelper',
|
||||
'/org/gnome/Shell/PortalHelper', (proxy, error) => {
|
||||
if (error) {
|
||||
- log('Error launching the portal helper: %s'.format(error));
|
||||
+ // Timeout is expected if WebKit is unavailable
|
||||
+ if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.TIMED_OUT))
|
||||
+ log('Error launching the portal helper: ' + error);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,34 @@
|
||||
From b8ae8f713a15b00ec447a23294948fc463220130 Mon Sep 17 00:00:00 2001
|
||||
From: Simon McVittie <smcv@debian.org>
|
||||
Date: Mon, 6 May 2024 21:58:09 +0100
|
||||
Subject: [PATCH] screencast: Correct expected bus name for streams
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Previously, this only worked because GDBusConnection was not filtering
|
||||
signals by their sender correctly (GNOME/glib#3268).
|
||||
|
||||
Thanks: Alicia Boya García
|
||||
Signed-off-by: Simon McVittie <smcv@debian.org>
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3303>
|
||||
---
|
||||
js/dbusServices/screencast/screencastService.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/js/dbusServices/screencast/screencastService.js b/js/dbusServices/screencast/screencastService.js
|
||||
index 708a15c84..0321b4d69 100644
|
||||
--- a/js/dbusServices/screencast/screencastService.js
|
||||
+++ b/js/dbusServices/screencast/screencastService.js
|
||||
@@ -161,7 +161,7 @@ var Recorder = class {
|
||||
});
|
||||
|
||||
this._streamProxy = new ScreenCastStreamProxy(Gio.DBus.session,
|
||||
- 'org.gnome.ScreenCast.Stream',
|
||||
+ 'org.gnome.Mutter.ScreenCast',
|
||||
streamPath);
|
||||
|
||||
this._streamProxy.connectSignal('PipeWireStreamAdded',
|
||||
--
|
||||
2.45.0
|
||||
|
Loading…
Reference in new issue