Accepting request 503995 from home:xiaoguang_wang:branches:GNOME:Factory

SLE sync

- Drop gnome-shell-774381-app-window-overlay-app-list.patch:
  Fixed upstream.
- Add gnome-shell-774381-app-window-overlay-app-list.patch:
  Fix app windows overlay app list in overview screen (bsc#1008539,
  bgo#774381).

- Add SUSE logo on lock screen for GNOME theme (bsc#1007468):
  + gnome-shell-1007468-lock-screen-SUSE-logo-missing.patch
  + sle-background.png

- Drop gnome-shell-sle-theme.patch (bsc#999592): the patch is
  included in gnome-shell-gdm-login-applet.patch.
- Drop source SLE-theme.tar.gz: SLE12SP2 doesn't use this source
  any more.
- Update gnome-shell-gdm-login-applet.patch:
  + Use dbus function to get hostname
- Add aboutMenu.js: Create from gnome-shell-gdm-login-applet.patch

OBS-URL: https://build.opensuse.org/request/show/503995
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-shell?expand=0&rev=305
This commit is contained in:
Bjørn Lie 2017-06-20 16:51:00 +00:00 committed by Git OBS Bridge
parent a6f44fe808
commit b9543d1153
8 changed files with 250 additions and 250 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b72d5af0106de72ea71fe5059f5f8f117924c17a65c7d7ee65713ae83dd54ba4
size 27471

150
aboutMenu.js Normal file
View File

@ -0,0 +1,150 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
const DBus = imports.gi.DBus;
const PanelMenu = imports.ui.panelMenu;
const AboutMenuButton = new Lang.Class({
Name: 'AboutMenuButton',
Extends: PanelMenu.Button,
_init: function() {
this._hostname = null;
this._updateHostnameId = 0;
this._ticket = 1;
let hbox;
let vbox;
let menuAlignment = 0.25;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
menuAlignment = 1.0 - menuAlignment;
this.parent(menuAlignment, 'About Me');
this.about_hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
this.hostname_label = new St.Label({y_align: Clutter.ActorAlign.CENTER});
this.about_hbox.add_child(this.hostname_label);
this.actor.add_child(this.about_hbox);
hbox = new St.BoxLayout({ name: 'aboutArea' });
this.menu.box.add_child(hbox);
vbox = new St.BoxLayout({vertical: true});
hbox.add(vbox);
///// Section: read '/etc/os-release' to get pretty name
//
// Note: previously this is defaulted to 'SUSE Linux Enterprise', now
// let's use a "safer" option.
let sysinfo_text = 'SUSE Linux';
try {
let success, contents, tag;
let _os_release = Gio.File.new_for_path('/etc/os-release');
[success, contents, tag] = _os_release.load_contents(null);
let osReleaseContentStr = contents.toString();
let prettyNameReg = /^PRETTY_NAME="(.+)"/;
let match = null;
for (let line of osReleaseContentStr.split('\n')) {
match = prettyNameReg.exec(line);
if (match) {
sysinfo_text = match[1];
}
}
}
catch (e) {
// NOTE soft fail, 'sysinfo_text' is the default
warn('ERROR: fail to read /etc/os-release');
}
this._sysinfo = new St.Label({ text: sysinfo_text, can_focus: true });
vbox.add(this._sysinfo);
this.actor.hide();
this._updateHostnameId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
this._ticket,
Lang.bind(this, function() {
if (this._ticket < 60*60)
this._ticket *= 2;
this._updateHostnameId = 0;
this._updateHostname();
return false;
}));
return;
},
_updateHostname: function(){
let hostname_text = get_hostname();
if ((this._hostname == null) || (this._hostname != hostname_text)) {
this._ticket = 1;
this._hostname = hostname_text;
this.hostname_label.set_text(this._hostname);
this.actor.show();
}
this._updateHostnameId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,
this._ticket,
Lang.bind(this, function() {
if (this._ticket < 60*60)
this._ticket *= 2;
this._updateHostnameId = 0;
this._updateHostname();
return false;
}));
},
_destroy: function() {
this._ticket = 1;
if (this._updateHostnameId) {
GLib.source_remove (this._updateHostnameId);
this._updateHostnameId = 0;
}
},
});
function get_hostname() {
let hostname;
let interface_name = [GLib.Variant.new_string('org.freedesktop.hostname1'),
GLib.Variant.new_string('Hostname')];
let call = {
bus_name: 'org.freedesktop.hostname1',
object_path: '/org/freedesktop/hostname1',
interface_name: 'org.freedesktop.DBus.Properties',
method_name: 'Get',
parameters: GLib.Variant.new_tuple(interface_name, 2),
reply_type: null,
flags: Gio.DBusCallFlags.NONE,
timeout_msec: -1,
cancellable: null,
};
try {
let dbusConnection = Gio.bus_get_sync(DBus.BusType.SYSTEM, null);
let message = dbusConnection.call_sync(
call.bus_name,
call.object_path,
call.interface_name,
call.method_name,
call.parameters,
call.reply_type,
call.flags,
call.timeout_msec,
call.cancellable
);
hostname = message.get_child_value(0).get_variant().get_string()[0];
} catch(e) {
hostname = 'localhost';
}
return hostname;
}

View File

@ -0,0 +1,37 @@
Index: gnome-shell-3.20.4/data/gnome-shell-theme.gresource.xml
===================================================================
--- gnome-shell-3.20.4.orig/data/gnome-shell-theme.gresource.xml
+++ gnome-shell-3.20.4/data/gnome-shell-theme.gresource.xml
@@ -38,5 +38,6 @@
<file>toggle-on-hc.svg</file>
<file>ws-switch-arrow-up.png</file>
<file>ws-switch-arrow-down.png</file>
+ <file>sle-background.png</file>
</gresource>
</gresources>
Index: gnome-shell-3.20.4/data/theme/gnome-shell.css
===================================================================
--- gnome-shell-3.20.4.orig/data/theme/gnome-shell.css
+++ gnome-shell-3.20.4/data/theme/gnome-shell.css
@@ -1544,6 +1544,9 @@ StScrollBar {
padding-top: 24px;
max-width: 23em; }
+.login-dialog-sle {
+ background: #2e3436 url(sle-background.png); }
+
.login-dialog {
border: none;
background-color: transparent; }
Index: gnome-shell-3.20.4/js/ui/unlockDialog.js
===================================================================
--- gnome-shell-3.20.4.orig/js/ui/unlockDialog.js
+++ gnome-shell-3.20.4/js/ui/unlockDialog.js
@@ -37,6 +37,7 @@ const UnlockDialog = new Lang.Class({
layout_manager: new Clutter.BoxLayout(),
visible: false });
+ this.actor.add_style_class_name('login-dialog-sle');
this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true }));
parentActor.add_child(this.actor);

View File

@ -1,176 +1,21 @@
diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
index a1a4196..fa01cee 100644
--- a/js/js-resources.gresource.xml
+++ b/js/js-resources.gresource.xml
@@ -33,6 +33,7 @@
<file>portalHelper/main.js</file>
Index: gnome-shell-3.20.4/js/js-resources.gresource.xml
===================================================================
--- gnome-shell-3.20.4.orig/js/js-resources.gresource.xml
+++ gnome-shell-3.20.4/js/js-resources.gresource.xml
@@ -25,7 +25,7 @@
<file>misc/params.js</file>
<file>misc/smartcardManager.js</file>
<file>misc/util.js</file>
-
+ <file>ui/aboutMenu.js</file>
<file>ui/accessDialog.js</file>
<file>ui/altTab.js</file>
<file>ui/animation.js</file>
diff --git a/js/ui/aboutMenu.js b/js/ui/aboutMenu.js
new file mode 100644
index 0000000..46c5de1
--- /dev/null
+++ b/js/ui/aboutMenu.js
@@ -0,0 +1,150 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const GLib = imports.gi.GLib;
+const Gio = imports.gi.Gio;
+const Lang = imports.lang;
+const Clutter = imports.gi.Clutter;
+const St = imports.gi.St;
+const DBus = imports.gi.DBus;
+
+const PanelMenu = imports.ui.panelMenu;
+
+const AboutMenuButton = new Lang.Class({
+ Name: 'AboutMenuButton',
+ Extends: PanelMenu.Button,
+ _init: function() {
+ this._hostname = null;
+ this._updateHostnameId = 0;
+ this._ticket = 1;
+
+ let hbox;
+ let vbox;
+ let menuAlignment = 0.25;
+
+ if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
+ menuAlignment = 1.0 - menuAlignment;
+ this.parent(menuAlignment, 'About Me');
+
+ this.about_hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
+ this.hostname_label = new St.Label({y_align: Clutter.ActorAlign.CENTER});
+ this.about_hbox.add_child(this.hostname_label);
+
+ this.actor.add_child(this.about_hbox);
+ hbox = new St.BoxLayout({ name: 'aboutArea' });
+ this.menu.box.add_child(hbox);
+
+ vbox = new St.BoxLayout({vertical: true});
+ hbox.add(vbox);
+
+ ///// Section: read '/etc/os-release' to get pretty name
+ //
+ // Note: previously this is defaulted to 'SUSE Linux Enterprise', now
+ // let's use a "safer" option.
+ let sysinfo_text = 'SUSE Linux';
+ try {
+ let success, contents, tag;
+ let _os_release = Gio.File.new_for_path('/etc/os-release');
+ [success, contents, tag] = _os_release.load_contents(null);
+
+ let osReleaseContentStr = contents.toString();
+ let prettyNameReg = /^PRETTY_NAME="(.+)"/;
+ let match = null;
+ for (let line of osReleaseContentStr.split('\n')) {
+ match = prettyNameReg.exec(line);
+ if (match) {
+ sysinfo_text = match[1];
+ }
+ }
+ }
+ catch (e) {
+ // NOTE soft fail, 'sysinfo_text' is the default
+ warn('ERROR: fail to read /etc/os-release');
+ }
+
+ this._sysinfo = new St.Label({ text: sysinfo_text, can_focus: true });
+ vbox.add(this._sysinfo);
+ this.actor.hide();
+
+ this._updateHostnameId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
+ this._ticket,
+ Lang.bind(this, function() {
+ if (this._ticket < 60*60)
+ this._ticket *= 2;
+ this._updateHostnameId = 0;
+ this._updateHostname();
+ return false;
+ }));
+
+ return;
+ },
+
+ _updateHostname: function(){
+ let hostname_text = get_hostname();
+
+ if ((this._hostname == null) || (this._hostname != hostname_text)) {
+ this._ticket = 1;
+ this._hostname = hostname_text;
+ this.hostname_label.set_text(this._hostname);
+ this.actor.show();
+ }
+ this._updateHostnameId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,
+ this._ticket,
+ Lang.bind(this, function() {
+ if (this._ticket < 60*60)
+ this._ticket *= 2;
+ this._updateHostnameId = 0;
+ this._updateHostname();
+ return false;
+ }));
+ },
+
+ _destroy: function() {
+ this._ticket = 1;
+ if (this._updateHostnameId) {
+ GLib.source_remove (this._updateHostnameId);
+ this._updateHostnameId = 0;
+ }
+ },
+
+});
+
+function get_hostname() {
+ let hostname;
+ let interface_name = [GLib.Variant.new_string('org.freedesktop.hostname1'),
+ GLib.Variant.new_string('Hostname')];
+
+ let call = {
+ bus_name: 'org.freedesktop.hostname1',
+ object_path: '/org/freedesktop/hostname1',
+ interface_name: 'org.freedesktop.DBus.Properties',
+ method_name: 'Get',
+ parameters: GLib.Variant.new_tuple(interface_name, 2),
+ reply_type: null,
+ flags: Gio.DBusCallFlags.NONE,
+ timeout_msec: -1,
+ cancellable: null,
+ };
+
+ try {
+ let dbusConnection = Gio.bus_get_sync(DBus.BusType.SYSTEM, null);
+
+ let message = dbusConnection.call_sync(
+ call.bus_name,
+ call.object_path,
+ call.interface_name,
+ call.method_name,
+ call.parameters,
+ call.reply_type,
+ call.flags,
+ call.timeout_msec,
+ call.cancellable
+ );
+
+ hostname = message.get_child_value(0).get_variant().get_string()[0];
+
+ } catch(e) {
+ hostname = 'localhost';
+ }
+
+ return hostname;
+}
diff --git a/js/ui/panel.js b/js/ui/panel.js
index fe3fc39..8b7c780 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -758,6 +758,7 @@ const AggregateMenu = new Lang.Class({
<file>perf/core.js</file>
<file>perf/hwtest.js</file>
Index: gnome-shell-3.20.4/js/ui/panel.js
===================================================================
--- gnome-shell-3.20.4.orig/js/ui/panel.js
+++ gnome-shell-3.20.4/js/ui/panel.js
@@ -755,6 +755,7 @@ const AggregateMenu = new Lang.Class({
});
const PANEL_ITEM_IMPLEMENTATIONS = {
@ -178,16 +23,16 @@ index fe3fc39..8b7c780 100644
'activities': ActivitiesButton,
'aggregateMenu': AggregateMenu,
'appMenu': AppMenuButton,
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
index ae08d08..99465d4 100644
--- a/js/ui/sessionMode.js
+++ b/js/ui/sessionMode.js
Index: gnome-shell-3.20.4/js/ui/sessionMode.js
===================================================================
--- gnome-shell-3.20.4.orig/js/ui/sessionMode.js
+++ gnome-shell-3.20.4/js/ui/sessionMode.js
@@ -48,7 +48,7 @@ const _modes = {
unlockDialog: imports.gdm.loginDialog.LoginDialog,
components: ['polkitAgent'],
panel: {
- left: [],
+ left: ['aboutMenu']
+ left: ['aboutMenu'],
center: ['dateMenu'],
right: ['a11yGreeter', 'keyboard', 'aggregateMenu'],
},

View File

@ -1,54 +0,0 @@
diff -Npur gnome-shell-3.10.4/js/ui/aboutMenu.js gnome-shell-3.10.4-new/js/ui/aboutMenu.js
--- gnome-shell-3.10.4/js/ui/aboutMenu.js 2014-06-06 05:56:19.040026091 +0800
+++ gnome-shell-3.10.4-new/js/ui/aboutMenu.js 2014-06-06 05:59:43.328025099 +0800
@@ -12,6 +12,17 @@ const AboutMenuButton = new Lang.Class({
Name: 'AboutMenuButton',
Extends: PanelMenu.Button,
_init: function() {
+ let command = 'hostname';
+ let hostname_text;
+ try {
+ let [res, stdout, stderr, status] = GLib.spawn_command_line_sync(command);
+ hostname_text = String.fromCharCode.apply(null, stdout);
+ } catch (e) {
+ /* Donnot display the useless widget */
+ this.parent(null, 'About Me');
+ return;
+ }
+
let hbox;
let vbox;
@@ -21,20 +31,6 @@ const AboutMenuButton = new Lang.Class({
this.parent(menuAlignment, 'About Me');
this.about_hbox = new St.BoxLayout({ style_class: 'panel-status-menu-box' });
- this.about_hbox.add_child(new St.Icon({ style_class: 'system-status-icon',
- icon_name: 'suse',
- icon_size: 24,
- y_align: Clutter.ActorAlign.CENTER
- }));
-
- let command = 'hostname';
- let hostname_text;
- try {
- let [res, stdout, stderr, status] = GLib.spawn_command_line_sync(command);
- hostname_text = String.fromCharCode.apply(null, stdout);
- } catch (e) {
- hostname_text = 'Welcome';
- }
this.about_hbox.add_child(new St.Label({ text: hostname_text,
y_align: Clutter.ActorAlign.CENTER
}));
diff -Npur gnome-shell-3.10.4/js/ui/userWidget.js gnome-shell-3.10.4-new/js/ui/userWidget.js
--- gnome-shell-3.10.4/js/ui/userWidget.js 2014-02-20 02:19:32.000000000 +0800
+++ gnome-shell-3.10.4-new/js/ui/userWidget.js 2014-06-06 05:57:33.740025728 +0800
@@ -50,7 +50,7 @@ const Avatar = new Lang.Class({
this.actor.style = 'background-image: url("%s");'.format(iconFile);
} else {
this.actor.style = null;
- this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
+ this.actor.child = new St.Icon({ icon_name: 'sle-avatar',
icon_size: this._iconSize });
}
}

View File

@ -159,6 +159,8 @@ Fri Feb 17 10:44:29 UTC 2017 - dimstar@opensuse.org
- Drop
gnome-shell-bgo774805-guard-against-animations-that-dont-load.patch:
Fixed upstream.
- Drop gnome-shell-774381-app-window-overlay-app-list.patch:
Fixed upstream.
-------------------------------------------------------------------
Fri Feb 17 10:44:28 UTC 2017 - dimstar@opensuse.org
@ -201,6 +203,13 @@ Wed Jan 4 08:22:53 CST 2017 - federico@suse.com
for bgo#774805 - make the authentication dialog work even if some
animations cannot be loaded.
-------------------------------------------------------------------
Thu Nov 24 01:44:11 UTC 2016 - xwang@suse.com
- Add gnome-shell-774381-app-window-overlay-app-list.patch:
Fix app windows overlay app list in overview screen (bsc#1008539,
bgo#774381).
-------------------------------------------------------------------
Fri Nov 11 09:59:26 UTC 2016 - dimstar@opensuse.org
@ -211,6 +220,13 @@ Fri Nov 11 09:59:26 UTC 2016 - dimstar@opensuse.org
+ Misc. bug fixes: bgo#773875, bgo#740043, bgo#773893.
+ Updated translations.
-------------------------------------------------------------------
Mon Nov 7 01:47:55 UTC 2016 - xwang@suse.com
- Add SUSE logo on lock screen for GNOME theme (bsc#1007468):
+ gnome-shell-1007468-lock-screen-SUSE-logo-missing.patch
+ sle-background.png
-------------------------------------------------------------------
Tue Nov 1 18:03:33 CST 2016 - cxiong@suse.com
@ -238,6 +254,17 @@ Sat Oct 1 14:23:55 UTC 2016 - zaitor@opensuse.org
- Add gnome-shell-network-initialize-connections-on-startup.patch:
Initialize primary and VPN connections on startup (bgo#772249).
-------------------------------------------------------------------
Fri Sep 23 07:46:22 UTC 2016 - xwang@suse.com
- Drop gnome-shell-sle-theme.patch (bsc#999592): the patch is
included in gnome-shell-gdm-login-applet.patch.
- Drop source SLE-theme.tar.gz: SLE12SP2 doesn't use this source
any more.
- Update gnome-shell-gdm-login-applet.patch:
+ Use dbus function to get hostname
- Add aboutMenu.js: Create from gnome-shell-gdm-login-applet.patch
-------------------------------------------------------------------
Thu Sep 22 19:41:29 UTC 2016 - zaitor@opensuse.org

View File

@ -28,8 +28,10 @@ Url: http://live.gnome.org/GnomeShell
Source: http://download.gnome.org/sources/gnome-shell/3.24/%{name}-%{version}.tar.xz
# SOURCE-FEATURE-SLE SLE-Classic specific core extension file, see bnc#862615
Source1: SLEClassicExt.js
# SOURCE-FEATURE-SLE The SLE theme, with icons/background/gnome-shell.css, works with gnome-shell-sle-theme.patch
Source2: SLE-theme.tar.gz
# SOURCE-FEATURE-SLE aboutMenu fate#314545 dliang@suse.com -- Add an applet on login UI to display suse icon, product name, hostname.
Source2: aboutMenu.js
# SOURCE-FEATURE-SLE sle-background bsc#1007468 xwang@suse.com -- Add SUSE logo on lock screen for GNOME theme
Source3: sle-background.png
# PATCH-FIX-UPSTREAM gnome-shell-linking.patch bgo#768781 dimstar@opensuse.org -- Fix linking the various libs in private directories
Patch0: gnome-shell-linking.patch
# PATCH-NEEDS-REBASE gnome-shell-private-connection.patch bnc#751211 bgo#646187 dimstar@opensuse.org -- create private connections if the user is not authorized Was PATCH-FIX-UPSTREAM
@ -54,12 +56,12 @@ Patch9: gnome-shell-lock-bg-on-primary.patch
Patch10: gnome-shell-970480-authprompt-wrapping-message.patch
# PATCH-FIX-SLE gs-fate318433-prevent-same-account-multi-logins.patch fate#318433 cxiong@suse.com -- prevent multiple simultaneous login.
Patch11: gs-fate318433-prevent-same-account-multi-logins.patch
# PATCH-FEATURE-SLE gnome-shell-sle-theme.patch dliang@suse.com -- Use sle theme avatar
Patch12: gnome-shell-sle-theme.patch
# PATCH-FIX-UPSTREAM gnome-shell-login-fix-session-button-can-be-clicked.patch bsc#1034584 bsc#1034827 bgo#781482 xwang@suse.com -- Disable session selection button function when it does not display.
Patch13: gnome-shell-login-fix-session-button-can-be-clicked.patch
# PATCH-FIX-UPSTREAM gnome-shell-portalhelper-fixes.patch bgo#769692 bgo#783286 zaitor@opensuse.org -- Portalhelper fixes from upstream git
Patch14: gnome-shell-portalhelper-fixes.patch
# PATCH-FEATURE-SLE gnome-shell-1007468-lock-screen-SUSE-logo-missing.patch xwang@suse.com -- Add SUSE logo on lock screen for GNOME theme.
Patch15: gnome-shell-1007468-lock-screen-SUSE-logo-missing.patch
## NOTE: Keep SLE Classic pathes at bottom.
## NOTE: Keep SLE Classic pathes at bottom.
# PATCH-FEATURE-SLE gs-sle-classic-ext.patch bnc#862615 cxiong@suse.com -- add SLE Classic support
@ -202,10 +204,7 @@ into GNOME Shell calendar.
%patch9 -p1
%patch10 -p1
%patch11 -p1
### FIXME: The patch currently don't work. Re-enable when it's fixed
%if 0
%patch12 -p1
%endif
%patch15 -p1
%endif
%patch13 -p1
%patch14 -p1
@ -214,6 +213,10 @@ into GNOME Shell calendar.
translation-update-upstream
%endif
cp %{S:1} js/ui/
%if !0%{?is_opensuse}
cp %{S:2} js/ui/
cp %{S:3} data/theme/
%endif
%build
# Needed for patch2
@ -232,13 +235,6 @@ find %{buildroot} -type f -name "*.la" -delete -print
install -d %{buildroot}%{_datadir}/gnome-shell/extensions
# This is the directory where search providers get installed
install -d %{buildroot}%{_datadir}/gnome-shell/search-providers
# Install SLE theme
# WARNING: some of the followings might NOT be effective at all, as core themes
# are packed as GResource.
tar xzvf %{SOURCE2}
install -d %{buildroot}%{_datadir}/gnome-shell/theme
cp -r SLE-theme/icons %{buildroot}%{_datadir}/
cp SLE-theme/theme/* %{buildroot}%{_datadir}/gnome-shell/theme
%find_lang %{name} %{?no_lang_C}
%suse_update_desktop_file org.gnome.Shell
@ -283,7 +279,6 @@ rm -rf %{buildroot}
%{_datadir}/glib-2.0/schemas/org.gnome.shell.gschema.xml
%{_datadir}/gnome-control-center/keybindings/50-gnome-shell-system.xml
%{_datadir}/gnome-shell/
%{_datadir}/icons/*
%doc %{_mandir}/man?/gnome-shell.*
%dir %{_datadir}/xdg-desktop-portal
%dir %{_datadir}/xdg-desktop-portal/portals

3
sle-background.png Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ffb9cbca2f9c45042c2b892be1f7536813005c0485dba438d5b17915126515c8
size 34068