first commit

This commit is contained in:
Ward Nakchbandi 2023-03-09 20:20:19 +03:00
parent e9062a564c
commit f8fb05fbbb
62 changed files with 211 additions and 232 deletions

40
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,40 @@
name: PikaOS Package Release
on:
workflow_dispatch
jobs:
build:
runs-on: self-hosted
container:
image: ubuntu:22.10
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Install needed packages
run: apt update && apt install software-properties-common sudo git bc gpg gpg-agent bison build-essential ccache cpio fakeroot flex git kmod libelf-dev libncurses5-dev libssl-dev lz4 qtbase5-dev rsync schedtool wget zstd tar reprepro dpkg-sig devscripts dh-make -y
- name: Import GPG key
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v5
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Build Package
run: ./main.sh
- name: Release Package
run: ./release.sh

View File

@ -1,3 +1,9 @@
gnome-shell-vrr (43.1-99pika5) kinetic; urgency=medium
* Sync with ubuntu
-- Ward Nakchbandi <hotrod.master@hotmail.com> Fri, 07 Oct 2022 23:26:00 +0300
gnome-shell-vrr (43.0-99pika5) kinetic; urgency=medium
* Fix gschema.

View File

@ -0,0 +1,48 @@
From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
Date: Sun, 6 Nov 2022 11:56:41 +0100
Subject: dbusService/screencast: Hold during gstreamer checks
Some gstreamer plugins require a connection to the display server,
so they block until the server is up and running. That's why we
moved the check into the D-Bus service, so that the blocking would
not lock up the compositor itself.
However the block can still delay the service initialization so
much that auto-shutdown hits immediately when returning from the
constructor. If that happens, the proxy on the shell side is no
longer backed by a remote object when the init callback runs, and
all properties therefore resolve as `null`.
As a result, gnome-shell thinks that screencasts aren't supported
and hides the screencast button.
Fix this by holding the service during the gstreamer checks, so
that the auto-shutdown timeout only starts after the service is
ready.
Bug: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6051
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533
Applied-upstream: 43.2, commit:f9ac8890d0a714c7cb44005def66fb5d0d15f6e4
---
js/dbusServices/screencast/screencastService.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/js/dbusServices/screencast/screencastService.js b/js/dbusServices/screencast/screencastService.js
index f7f36da..a2bb23c 100644
--- a/js/dbusServices/screencast/screencastService.js
+++ b/js/dbusServices/screencast/screencastService.js
@@ -271,11 +271,14 @@ var ScreencastService = class extends ServiceImplementation {
constructor() {
super(ScreencastIface, '/org/gnome/Shell/Screencast');
+ this.hold(); // gstreamer initializing can take a bit
this._canScreencast = ScreencastService.canScreencast();
Gst.init(null);
Gtk.init();
+ this.release();
+
this._recorders = new Map();
this._senders = new Map();

View File

@ -0,0 +1,30 @@
From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 18 Nov 2022 22:40:31 +0100
Subject: 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>
(cherry picked from commit b0befbbfbbe4a335f6c184049743202e91fcdfe8)
(cherry picked from commit a2cd818c8c4d6a81d565099b01920b8815dea355)
---
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 b6f1330..7c3d159 100644
--- a/js/ui/inhibitShortcutsDialog.js
+++ b/js/ui/inhibitShortcutsDialog.js
@@ -143,7 +143,7 @@ var InhibitShortcutsDialog = GObject.registerClass({
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);

View File

@ -0,0 +1,47 @@
From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
Date: Sun, 6 Nov 2022 13:06:44 +0100
Subject: screenshot: Cache ScreencastSupported property
The screencast service shuts down when not in use, so it is almost
certainly not running when handling the screencast shortcut.
Instead of making sure the service is restarted, just cache the
property when initializing the proxy.
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533
Applied-upstream: 43.2, commit:b23de7f5309dcff34b2245d3797bb39381dff60c
---
js/ui/screenshot.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
index a01fbe3..b2ea6fa 100644
--- a/js/ui/screenshot.js
+++ b/js/ui/screenshot.js
@@ -1017,6 +1017,7 @@ var ScreenshotUI = GObject.registerClass({
});
this._screencastInProgress = false;
+ this._screencastSupported = false;
this._screencastProxy = new ScreencastProxy(
Gio.DBus.session,
@@ -1028,7 +1029,8 @@ var ScreenshotUI = GObject.registerClass({
return;
}
- this._castButton.visible = this._screencastProxy.ScreencastSupported;
+ this._screencastSupported = this._screencastProxy.ScreencastSupported;
+ this._castButton.visible = this._screencastSupported;
});
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
@@ -1450,7 +1452,7 @@ var ScreenshotUI = GObject.registerClass({
if (this._screencastInProgress)
return;
- if (mode === UIMode.SCREENCAST && !this._screencastProxy.ScreencastSupported)
+ if (mode === UIMode.SCREENCAST && !this._screencastSupported)
return;
this._castButton.checked = mode === UIMode.SCREENCAST;

View File

@ -1,4 +1,6 @@
gdm-util-Only-start-fingerprint-service-synchronously-whe.patch
dbusService-screencast-Hold-during-gstreamer-checks.patch
screenshot-Cache-ScreencastSupported-property.patch
debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch
Revert-build-Port-to-gcr4.patch
ubuntu/desktop_detect.patch
@ -24,8 +26,4 @@ ubuntu/sessionMode-Add-support-for-configuring-an-icons-resource.patch
ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch
ubuntu/Revert-dash-Use-pin-instead-of-favorites.patch
ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch
config-Assume-screen-recording-is-always-available.patch
status-Use-fixed-sorting-of-input-sources-on-empty-MRU.patch
bluetooth-Show-the-Bluetooth-switch-in-more-cases.patch
status-volume-Include-origin-in-device-names.patch
inhibitShortcutsDialog-Don-t-override-resource.patch
inhibitShorcutsDialog-Fix-permission-check.patch

View File

@ -1,62 +0,0 @@
From: Bastien Nocera <hadess@hadess.net>
Date: Thu, 15 Sep 2022 18:03:22 +0200
Subject: bluetooth: Show the Bluetooth switch in more cases
In older versions of GNOME, when a menu was used for Bluetooth devices,
we tried to avoid showing the Bluetooth menu to folks who didn't use
Bluetooth.
This kept causing problems as the menu would disappear if no
devices were setup and the platform "airplane mode" removed the
Bluetooth device from the USB bus, making it impossible to detect
whether a Bluetooth device existed, compared to a user unplugging a
removable Bluetooth device.
Closes: #5749
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2488>
(cherry picked from commit 57aa91e2b3f129ff12c6f87146096708e9ac2867)
---
js/ui/status/bluetooth.js | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
index d4de597..f5ed177 100644
--- a/js/ui/status/bluetooth.js
+++ b/js/ui/status/bluetooth.js
@@ -64,7 +64,10 @@ const BtClient = GObject.registerClass({
g_interface_info: rfkillManagerInfo,
});
this._proxy.connect('g-properties-changed', (p, properties) => {
- if ('BluetoothHardwareAirplaneMode' in properties.unpack())
+ const changedProperties = properties.unpack();
+ if ('BluetoothHardwareAirplaneMode' in changedProperties)
+ this.notify('available');
+ else if ('BluetoothHasAirplaneMode' in changedProperties)
this.notify('available');
});
this._proxy.init_async(GLib.PRIORITY_DEFAULT, null)
@@ -79,21 +82,19 @@ const BtClient = GObject.registerClass({
this._connectDeviceNotify(deviceStore.get_item(i));
this._client.connect('device-removed', (c, path) => {
- this._syncHadSetupDevices();
this._deviceNotifyConnected.delete(path);
this.emit('devices-changed');
});
this._client.connect('device-added', (c, device) => {
- this._syncHadSetupDevices();
this._connectDeviceNotify(device);
this.emit('devices-changed');
});
}
get available() {
- // If there were set up devices, assume there is an adapter
- // that can be powered on as long as we're not hard blocked
- return this._hadSetupDevices
+ // If we have an rfkill switch, make sure it's not a hardware
+ // one as we can't get out of it in software
+ return this._proxy.BluetoothHasAirplaneMode
? !this._proxy.BluetoothHardwareAirplaneMode
: this.active;
}

View File

@ -1,27 +0,0 @@
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Wed, 12 Oct 2022 14:47:19 +0800
Subject: config: Assume screen recording is always available
Which is safer than calling gst_init_check() as it may deadlock when it
spawns client `gst-plugin-scanner` which then tries to connect back to
us (for some plugins like gstvaapi).
Fixes: https://launchpad.net/bugs/1988488
---
js/misc/config.js.in | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/js/misc/config.js.in b/js/misc/config.js.in
index 7fc0e63..5092c1e 100644
--- a/js/misc/config.js.in
+++ b/js/misc/config.js.in
@@ -21,8 +21,4 @@ var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'
var HAVE_BLUETOOTH = pkg.checkSymbol('GnomeBluetooth', '3.0',
'Client.default_adapter_state')
-var HAVE_RECORDER =
- pkg.checkSymbol('Gst', '1.0') &&
- imports.gi.Gst.init_check(null) &&
- imports.gi.Gst.ElementFactory.find('pipewiresrc') &&
- imports.gi.Gst.ElementFactory.find('filesrc');
+var HAVE_RECORDER = true;

View File

@ -1,69 +0,0 @@
From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 6 Oct 2022 14:30:20 +0200
Subject: 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>
(cherry picked from commit 8590e3350145b3c652d3977d72fe0da7f1d8885c)
---
.../org.freedesktop.impl.portal.PermissionStore.xml | 7 +++++++
js/ui/inhibitShortcutsDialog.js | 12 ++++--------
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml b/data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml
index 75fbc46..55d3fc3 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 f37c1f6..b6f1330 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,16 +57,12 @@ 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', {});
-
try {
- await this._permStore.SetAsync(APP_PERMISSIONS_TABLE,
+ await this._permStore.SetPermissionAsync(APP_PERMISSIONS_TABLE,
true,
APP_PERMISSIONS_ID,
- permissions,
- data);
+ this._app.get_id(),
+ [grant]);
} catch (error) {
log(error.message);
}

View File

@ -1,34 +0,0 @@
From: Carlos Garnacho <carlosg@gnome.org>
Date: Wed, 14 Sep 2022 20:20:14 +0200
Subject: status: Use fixed sorting of input sources on empty MRU
When updating the MRU sources if there was no prior MRU, we want
to go with the unmodified list of sources in visibility order.
However iterating over object properties happens in an undetermined
order, so the initial MRU list ends up picking a value at random.
In order to prefer the sources list in the same order than they
appear in the menu if there was no prior MRU, order the keys
when accessing it and building the initial list of sources.
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5873
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2487>
(cherry picked from commit 13c9fd2a668e137b9e2569dcdedb0a25b95ae9aa)
---
js/ui/status/keyboard.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index 76a42f6..65b3962 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -492,7 +492,7 @@ var InputSourceManager = class extends Signals.EventEmitter {
_updateMruSources() {
let sourcesList = [];
- for (let i in this._inputSources)
+ for (let i of Object.keys(this._inputSources).sort((a, b) => a - b))
sourcesList.push(this._inputSources[i]);
this._keyboardManager.setUserLayouts(sourcesList.map(x => x.xkbId));

View File

@ -1,35 +0,0 @@
From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
Date: Mon, 3 Oct 2022 18:30:13 +0200
Subject: status/volume: Include origin in device names
The description alone may not be descriptive enough, so include
the origin (if available) to disambiguate the name.
This is consistent with the Sound Settings panel.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5829
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2502>
(cherry picked from commit 0ce2bc343b024142dddfe6e6bb57b51bfa407df9)
---
js/ui/status/volume.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js
index 71a91cb..bd49cc3 100644
--- a/js/ui/status/volume.js
+++ b/js/ui/status/volume.js
@@ -113,8 +113,11 @@ const StreamSlider = GObject.registerClass({
if (!device)
return;
- const item = new PopupMenu.PopupImageMenuItem(
- device.get_description(), device.get_gicon());
+ const {description, origin} = device;
+ const name = origin
+ ? `${description} ${origin}`
+ : description;
+ const item = new PopupMenu.PopupImageMenuItem(name, device.get_gicon());
item.connect('activate', () => this._activateDevice(device));
this._deviceSection.addMenuItem(item);

26
main.sh Executable file
View File

@ -0,0 +1,26 @@
DEBIAN_FRONTEND=noninteractive
# Add dependent repositories
wget -q -O - https://ppa.pika-os.com/key.gpg | sudo apt-key add -
add-apt-repository https://ppa.pika-os.com
add-apt-repository ppa:pikaos/pika
add-apt-repository ppa:kubuntu-ppa/backports
# Clone Upstream
git clone https://gitlab.gnome.org/GNOME/gnome-shell -b 43.1
mv ./gnome-shell ./gnome-shell-vrr
cp -rvf ./debian ./gnome-shell-vrr
cd ./gnome-shell-vrr
# Get build deps
ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
apt-get build-dep ./ -y
# Build package
LOGNAME=root dh_make --createorig -y -l -p gnome-shell-vrr_43.1
dpkg-buildpackage
# Move the debs to output
cd ../
mkdir -p ./output
mv ./*.deb ./output/

11
release.sh Executable file
View File

@ -0,0 +1,11 @@
# Sign the packages
dpkg-sig --sign builder ./output/*.deb
# Pull down existing ppa repo db files etc
rsync -azP --exclude '*.deb' ferreo@direct.pika-os.com:/srv/www/pikappa/ ./output/repo
# Add the new package to the repo
reprepro -V --basedir ./output/repo/ includedeb kinetic ./output/*.deb
# Push the updated ppa repo to the server
rsync -azP ./output/repo/ ferreo@direct.pika-os.com:/srv/www/pikappa/