first commit
This commit is contained in:
commit
e9062a564c
61
gnome-shell-43.0/debian/README.Ubuntu
Normal file
61
gnome-shell-43.0/debian/README.Ubuntu
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# Reporting Shell theme changes to Yaru.
|
||||||
|
|
||||||
|
Our default theme is Yaru, it means that any changes, especially breaking changes (meaning, changes that can't be done
|
||||||
|
without a theme update) needs to be coordinated between the gnome-shell updates and Yaru. Probably with a **Breaks:** stenza
|
||||||
|
in `debian/control`
|
||||||
|
|
||||||
|
## What should be reported?
|
||||||
|
|
||||||
|
The upstream GNOME Shell `data/theme/` directory is used as a basis for our Yaru GNOME Shell theme so any change made upstream needs to be reflected in our derivative version. Most of the sass files are under the `gnome-shell-sass/` subdirectory.
|
||||||
|
|
||||||
|
Note that Yaru has its own `meson.build` file. Changes there shouldn't be in general reported apart if new assets are installed.
|
||||||
|
It should be a simple assessment in general if you need to do anything on the build system side.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
Ensure you cloned the Yaru repository via `git clone https://github.com/ubuntu/yaru`. The shell theme is under `gnome-shell`.
|
||||||
|
It contains two subdirectories:
|
||||||
|
* `upstream/` is the latest upstream sass source we based on. This is the reference.
|
||||||
|
* `src` is the Yaru theme, which is `upstream/` + the yaru modifications.
|
||||||
|
|
||||||
|
Basically diffing `upstream` and `src` provides you the difference between the default GNOME Shell theme and our Yaru Shell theme.
|
||||||
|
|
||||||
|
## Reporting changes
|
||||||
|
|
||||||
|
### Checking what to report
|
||||||
|
|
||||||
|
Note: you should do that either recursively, or directly on each file that was modified for the new GNOME Shell release.
|
||||||
|
Basically, you can run: `diff -r yaru/gnome-shell/upstream new-gnome-shell-version/data/theme | lsdiff` to get the list between
|
||||||
|
latest upstream snapshot in Yaru and current upstream changes.
|
||||||
|
|
||||||
|
The easiest way is a 3-way merge diff and manually reporting what makes sense. I personally used `meld` for this and run:
|
||||||
|
```
|
||||||
|
$ meld yaru/gnome-shell/upstream/<path_to_modified_file_in_new_version> new-gnome-shell-version/data/theme/<path_to_modified_file_in_new_version> yaru/gnome-shell/src/<path_to_modified_file_in_new_version>
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: as diff, meld can infer the filename (only repeat it once) as long as you point to the correct directory.
|
||||||
|
|
||||||
|
You will see a window with 3 columns:
|
||||||
|
* New changes are visible between the first two columns (diff between old upstream and new upstream). You report them,
|
||||||
|
as you may see it fit (clicking meld arrow or manually) on the third column.
|
||||||
|
* Second to third column diff is consequently the new additional delta you are introducing, if needed. It should be most
|
||||||
|
of the time be null (no diff) or minimal once you are done.
|
||||||
|
|
||||||
|
Commit all those changes, don't forget the svg assets.
|
||||||
|
|
||||||
|
### Taking a new upstream snapshot
|
||||||
|
|
||||||
|
Once done, snapshot the new GNOME Shell upstream directory we based our changes on for the next Shell update involving a new 3 way merge:
|
||||||
|
```
|
||||||
|
$ rm -r yaru/gnome-shell/upstream/
|
||||||
|
$ cp -a new-gnome-shell-version/data/theme/ yaru/gnome-shell/upstream/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changing package coordination
|
||||||
|
|
||||||
|
Once again, if the changes are breaking, updates the **Breaks:** or other fields between **gnome-shell** and
|
||||||
|
**yaru-theme-gnome-shell** to ensure people are getting both updates simultaneously.
|
||||||
|
|
||||||
|
### Submitting
|
||||||
|
|
||||||
|
Commit that, and submit a MP against https://github.com/ubuntu/yaru.
|
11
gnome-shell-43.0/debian/changelog
Normal file
11
gnome-shell-43.0/debian/changelog
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
gnome-shell-vrr (43.0-99pika5) kinetic; urgency=medium
|
||||||
|
|
||||||
|
* Fix gschema.
|
||||||
|
|
||||||
|
-- Ward Nakchbandi <hotrod.master@hotmail.com> Fri, 07 Oct 2022 23:26:00 +0300
|
||||||
|
|
||||||
|
gnome-shell-vrr (43.0-99pika4) kinetic; urgency=medium
|
||||||
|
|
||||||
|
* Initial Release.
|
||||||
|
|
||||||
|
-- Ward Nakchbandi <hotrod.master@hotmail.com> Fri, 07 Oct 2022 23:26:00 +0300
|
1
gnome-shell-43.0/debian/clean
Normal file
1
gnome-shell-43.0/debian/clean
Normal file
@ -0,0 +1 @@
|
|||||||
|
debian/home/
|
196
gnome-shell-43.0/debian/control
Normal file
196
gnome-shell-43.0/debian/control
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
# This file is autogenerated. DO NOT EDIT!
|
||||||
|
#
|
||||||
|
# Modifications should be made to debian/control.in instead.
|
||||||
|
# This file is regenerated automatically in the clean target.
|
||||||
|
# This file is autogenerated. DO NOT EDIT!
|
||||||
|
#
|
||||||
|
# Modifications should be made to debian/control.in instead.
|
||||||
|
# This file is regenerated automatically in the clean target.
|
||||||
|
# This file is autogenerated. DO NOT EDIT!
|
||||||
|
#
|
||||||
|
# Modifications should be made to debian/control.in instead.
|
||||||
|
# This file is regenerated automatically in the clean target.
|
||||||
|
Source: gnome-shell-vrr
|
||||||
|
Section: gnome
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||||
|
XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
|
||||||
|
Uploaders: Jeremy Bicha <jbicha@ubuntu.com>
|
||||||
|
Build-Depends: appstream,
|
||||||
|
asciidoc-base,
|
||||||
|
bash-completion,
|
||||||
|
dbus <!nocheck>,
|
||||||
|
debhelper-compat (= 13),
|
||||||
|
dh-sequence-gir,
|
||||||
|
dh-sequence-gnome,
|
||||||
|
gjs,
|
||||||
|
gir1.2-accountsservice-1.0 <!nocheck>,
|
||||||
|
gir1.2-gdm-1.0 (>= 3.18.2) <!nocheck>,
|
||||||
|
gir1.2-geoclue-2.0 <!nocheck>,
|
||||||
|
gir1.2-gnomedesktop-3.0 (>= 3.35.90) <!nocheck>,
|
||||||
|
gir1.2-gweather-4.0 (>= 4.1) <!nocheck>,
|
||||||
|
gir1.2-rsvg-2.0 <!nocheck>,
|
||||||
|
gir1.2-upowerglib-1.0 <!nocheck>,
|
||||||
|
gnome-control-center-dev (>= 1:3.4),
|
||||||
|
gnome-pkg-tools (>= 0.11),
|
||||||
|
gnome-settings-daemon-common (>= 40~) <!nocheck>,
|
||||||
|
gobject-introspection (>= 1.49.1),
|
||||||
|
gsettings-desktop-schemas-dev (>= 42~beta),
|
||||||
|
gtk-doc-tools,
|
||||||
|
libasound2-dev,
|
||||||
|
libatk-bridge2.0-dev,
|
||||||
|
libecal2.0-dev (>= 3.45),
|
||||||
|
libedataserver1.2-dev (>= 3.45),
|
||||||
|
libgcr-3-dev (>= 3.7.5),
|
||||||
|
libgirepository1.0-dev (>= 1.29.15),
|
||||||
|
libgjs-dev (>= 1.73.1),
|
||||||
|
libgl1-mesa-dri <!nocheck>,
|
||||||
|
libglib2.0-dev (>= 2.57.2),
|
||||||
|
libgnome-autoar-0-dev,
|
||||||
|
libgnome-bluetooth-3.0-dev (>= 3.9.0) [linux-any],
|
||||||
|
libgnome-desktop-3-dev (>= 3.35.90),
|
||||||
|
libgnome-menu-3-dev,
|
||||||
|
libgstreamer1.0-dev (>= 0.11.92),
|
||||||
|
libgstreamer-plugins-base1.0-dev,
|
||||||
|
libgtk-3-bin,
|
||||||
|
libgtk-3-dev (>= 3.21.6),
|
||||||
|
libgtk-4-dev,
|
||||||
|
libibus-1.0-dev (>= 1.5.22-2ubuntu2~),
|
||||||
|
libjson-glib-dev,
|
||||||
|
libnm-dev (>= 1.10.4) [linux-any],
|
||||||
|
libpipewire-0.3-dev (>= 0.3.10) [linux-any],
|
||||||
|
libpolkit-agent-1-dev (>= 0.100),
|
||||||
|
libpulse-dev (>= 13),
|
||||||
|
libsecret-1-dev,
|
||||||
|
libstartup-notification0-dev (>= 0.11),
|
||||||
|
libsystemd-dev [linux-any],
|
||||||
|
libx11-dev,
|
||||||
|
libxfixes-dev,
|
||||||
|
libxml2-dev,
|
||||||
|
mesa-common-dev,
|
||||||
|
meson (>= 0.58.0),
|
||||||
|
mutter-vrr,
|
||||||
|
pkg-config (>= 0.22),
|
||||||
|
sassc,
|
||||||
|
systemd [linux-any],
|
||||||
|
xauth <!nocheck>,
|
||||||
|
xvfb <!nocheck>,
|
||||||
|
xwayland <!nocheck>
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
Standards-Version: 4.6.1
|
||||||
|
Homepage: https://wiki.gnome.org/Projects/GnomeShell
|
||||||
|
XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git
|
||||||
|
XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell
|
||||||
|
Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git -b ubuntu/master
|
||||||
|
Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell/tree/ubuntu/master
|
||||||
|
|
||||||
|
Package: gnome-shell-vrr
|
||||||
|
Architecture: linux-any
|
||||||
|
Depends: gir1.2-accountsservice-1.0,
|
||||||
|
gir1.2-adw-1,
|
||||||
|
gir1.2-atk-1.0,
|
||||||
|
gir1.2-atspi-2.0 (>= 2.36),
|
||||||
|
gir1.2-gcr-3 (>= 3.7.5),
|
||||||
|
gir1.2-gdesktopenums-3.0 (>= 3.12),
|
||||||
|
gir1.2-gdkpixbuf-2.0,
|
||||||
|
gir1.2-gdm-1.0 (>= 3.18.2),
|
||||||
|
gir1.2-geoclue-2.0,
|
||||||
|
gir1.2-glib-2.0 (>= 1.56.0),
|
||||||
|
gir1.2-gnomebluetooth-3.0 (>= 3.12.0) [linux-any],
|
||||||
|
gir1.2-gnomedesktop-3.0 (>= 3.35.90),
|
||||||
|
gir1.2-graphene-1.0 (>= 1.10.2),
|
||||||
|
gir1.2-gstreamer-1.0,
|
||||||
|
gir1.2-gtk-3.0 (>= 3.16),
|
||||||
|
gir1.2-gtk-4.0,
|
||||||
|
gir1.2-gweather-4.0 (>= 4.1),
|
||||||
|
gir1.2-freedesktop,
|
||||||
|
gir1.2-ibus-1.0 (>= 1.5.22-2ubuntu2~),
|
||||||
|
gir1.2-nm-1.0 [linux-any],
|
||||||
|
gir1.2-nma-1.0 [linux-any],
|
||||||
|
gir1.2-pango-1.0,
|
||||||
|
gir1.2-polkit-1.0,
|
||||||
|
gir1.2-rsvg-2.0,
|
||||||
|
gir1.2-soup-3.0,
|
||||||
|
gir1.2-upowerglib-1.0 (>= 0.99),
|
||||||
|
gir1.2-webkit2-4.1,
|
||||||
|
mutter-vrr,
|
||||||
|
gnome-settings-daemon (>= 40~),
|
||||||
|
gnome-shell-common-vrr (= ${source:Version}),
|
||||||
|
gsettings-desktop-schemas (>= 42~beta),
|
||||||
|
gstreamer1.0-pipewire (>= 0.3.10) [linux-any],
|
||||||
|
libglib2.0-bin (>= 2.53.0),
|
||||||
|
python3,
|
||||||
|
ubuntu-wallpapers,
|
||||||
|
${gir:Depends},
|
||||||
|
${misc:Depends},
|
||||||
|
${shlibs:Depends}
|
||||||
|
Recommends: bolt (>= 0.3),
|
||||||
|
evolution-data-server (>= 3.45),
|
||||||
|
gdm3 (>= 3.10.0.1-3~),
|
||||||
|
gkbd-capplet,
|
||||||
|
gnome-control-center (>= 1:42),
|
||||||
|
gnome-remote-desktop,
|
||||||
|
gnome-menus,
|
||||||
|
gnome-user-docs,
|
||||||
|
ibus,
|
||||||
|
iio-sensor-proxy,
|
||||||
|
power-profiles-daemon,
|
||||||
|
switcheroo-control,
|
||||||
|
ubuntu-session | gnome-session,
|
||||||
|
xserver-xorg-legacy,
|
||||||
|
unzip
|
||||||
|
Suggests: gir1.2-malcontent-0 (>= 0.6.0) [linux-any],
|
||||||
|
gir1.2-telepathyglib-0.12,
|
||||||
|
gir1.2-telepathylogger-0.2 (>= 0.8.0),
|
||||||
|
gnome-backgrounds (>= 3.13.90),
|
||||||
|
gnome-shell-extension-prefs,
|
||||||
|
chrome-gnome-shell,
|
||||||
|
Breaks: gnome-shell-extension-appindicator (<< 36),
|
||||||
|
gnome-shell-extension-autohidetopbar (<< 20180511-2~),
|
||||||
|
gnome-shell-extension-caffeine (<< 0~git20171229-3~),
|
||||||
|
gnome-shell-extension-dash-to-panel (<< 43),
|
||||||
|
gnome-shell-extension-dashtodock (<< 70),
|
||||||
|
gnome-shell-extension-desktop-icons (<< 21.04),
|
||||||
|
gnome-shell-extension-desktop-icons-ng (<< 0.16.0~),
|
||||||
|
gnome-shell-extension-multi-monitors (<< 0.00~git20171014.1.df5d6e4-1.1~),
|
||||||
|
gnome-shell-extension-pixelsaver (<< 1.10+git20161217-49f47bf-1.1~),
|
||||||
|
gnome-shell-extension-taskbar (<< 57.0-2.1~),
|
||||||
|
gnome-shell-extension-top-icons-plus (<< 27-3~),
|
||||||
|
gnome-shell-extension-workspaces-to-dock (<< 54~),
|
||||||
|
gnome-shell-extensions (<< 40.0~),
|
||||||
|
gnome-shell-pomodoro (<< 0.13.4-2.1~),
|
||||||
|
Provides: notification-daemon,
|
||||||
|
polkit-1-auth-agent
|
||||||
|
Description: graphical shell for the GNOME desktop
|
||||||
|
The GNOME Shell provides core interface functions like switching
|
||||||
|
windows, launching applications or see your notifications. It takes
|
||||||
|
advantage of the capabilities of modern graphics hardware and
|
||||||
|
introduces innovative user interface concepts to provide a
|
||||||
|
delightful and easy to use experience. GNOME Shell is the defining
|
||||||
|
technology of the GNOME 3 user experience.
|
||||||
|
|
||||||
|
Package: gnome-shell-common-vrr
|
||||||
|
Architecture: all
|
||||||
|
Depends: ${misc:Depends}
|
||||||
|
Breaks: gnome-shell-vrr (<< 3.36.1-6~)
|
||||||
|
Replaces: gnome-shell-vrr (<< 3.36.1-6~)
|
||||||
|
Description: common files for the GNOME graphical shell
|
||||||
|
This package contains translations and data files for the GNOME shell.
|
||||||
|
|
||||||
|
Package: gnome-shell-extension-prefs-vrr
|
||||||
|
Architecture: linux-any
|
||||||
|
Depends: gir1.2-adw-1,
|
||||||
|
gir1.2-gtk-4.0,
|
||||||
|
gjs (>= 1.73.1),
|
||||||
|
gnome-shell-vrr (= ${binary:Version}),
|
||||||
|
gnome-shell-common-vrr (= ${source:Version}),
|
||||||
|
${gir:Depends},
|
||||||
|
${misc:Depends},
|
||||||
|
${shlibs:Depends}
|
||||||
|
Provides: gnome-extensions-app
|
||||||
|
Recommends: chrome-gnome-shell
|
||||||
|
Breaks: gnome-shell-vrr (<< 3.36.0-2)
|
||||||
|
Replaces: gnome-shell-vrr (<< 3.36.0-2)
|
||||||
|
Description: tool to enable / disable GNOME Shell extensions
|
||||||
|
This package contains a tool which users who use Shell extensions can use to
|
||||||
|
toggle them on and off, and access their preferences.
|
192
gnome-shell-43.0/debian/control.in
Normal file
192
gnome-shell-43.0/debian/control.in
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
# This file is autogenerated. DO NOT EDIT!
|
||||||
|
#
|
||||||
|
# Modifications should be made to debian/control.in instead.
|
||||||
|
# This file is regenerated automatically in the clean target.
|
||||||
|
# This file is autogenerated. DO NOT EDIT!
|
||||||
|
#
|
||||||
|
# Modifications should be made to debian/control.in instead.
|
||||||
|
# This file is regenerated automatically in the clean target.
|
||||||
|
Source: gnome-shell-vrr
|
||||||
|
Section: gnome
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||||
|
XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
|
||||||
|
Uploaders: Jeremy Bicha <jbicha@ubuntu.com>
|
||||||
|
Build-Depends: appstream,
|
||||||
|
asciidoc-base,
|
||||||
|
bash-completion,
|
||||||
|
dbus <!nocheck>,
|
||||||
|
debhelper-compat (= 13),
|
||||||
|
dh-sequence-gir,
|
||||||
|
dh-sequence-gnome,
|
||||||
|
gjs,
|
||||||
|
gir1.2-accountsservice-1.0 <!nocheck>,
|
||||||
|
gir1.2-gdm-1.0 (>= 3.18.2) <!nocheck>,
|
||||||
|
gir1.2-geoclue-2.0 <!nocheck>,
|
||||||
|
gir1.2-gnomedesktop-3.0 (>= 3.35.90) <!nocheck>,
|
||||||
|
gir1.2-gweather-4.0 (>= 4.1) <!nocheck>,
|
||||||
|
gir1.2-rsvg-2.0 <!nocheck>,
|
||||||
|
gir1.2-upowerglib-1.0 <!nocheck>,
|
||||||
|
gnome-control-center-dev (>= 1:3.4),
|
||||||
|
gnome-pkg-tools (>= 0.11),
|
||||||
|
gnome-settings-daemon-common (>= 40~) <!nocheck>,
|
||||||
|
gobject-introspection (>= 1.49.1),
|
||||||
|
gsettings-desktop-schemas-dev (>= 42~beta),
|
||||||
|
gtk-doc-tools,
|
||||||
|
libasound2-dev,
|
||||||
|
libatk-bridge2.0-dev,
|
||||||
|
libecal2.0-dev (>= 3.45),
|
||||||
|
libedataserver1.2-dev (>= 3.45),
|
||||||
|
libgcr-3-dev (>= 3.7.5),
|
||||||
|
libgirepository1.0-dev (>= 1.29.15),
|
||||||
|
libgjs-dev (>= 1.73.1),
|
||||||
|
libgl1-mesa-dri <!nocheck>,
|
||||||
|
libglib2.0-dev (>= 2.57.2),
|
||||||
|
libgnome-autoar-0-dev,
|
||||||
|
libgnome-bluetooth-3.0-dev (>= 3.9.0) [linux-any],
|
||||||
|
libgnome-desktop-3-dev (>= 3.35.90),
|
||||||
|
libgnome-menu-3-dev,
|
||||||
|
libgstreamer1.0-dev (>= 0.11.92),
|
||||||
|
libgstreamer-plugins-base1.0-dev,
|
||||||
|
libgtk-3-bin,
|
||||||
|
libgtk-3-dev (>= 3.21.6),
|
||||||
|
libgtk-4-dev,
|
||||||
|
libibus-1.0-dev (>= 1.5.22-2ubuntu2~),
|
||||||
|
libjson-glib-dev,
|
||||||
|
libnm-dev (>= 1.10.4) [linux-any],
|
||||||
|
libpipewire-0.3-dev (>= 0.3.10) [linux-any],
|
||||||
|
libpolkit-agent-1-dev (>= 0.100),
|
||||||
|
libpulse-dev (>= 13),
|
||||||
|
libsecret-1-dev,
|
||||||
|
libstartup-notification0-dev (>= 0.11),
|
||||||
|
libsystemd-dev [linux-any],
|
||||||
|
libx11-dev,
|
||||||
|
libxfixes-dev,
|
||||||
|
libxml2-dev,
|
||||||
|
mesa-common-dev,
|
||||||
|
meson (>= 0.58.0),
|
||||||
|
mutter-vrr,
|
||||||
|
pkg-config (>= 0.22),
|
||||||
|
sassc,
|
||||||
|
systemd [linux-any],
|
||||||
|
xauth <!nocheck>,
|
||||||
|
xvfb <!nocheck>,
|
||||||
|
xwayland <!nocheck>
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
Standards-Version: 4.6.1
|
||||||
|
Homepage: https://wiki.gnome.org/Projects/GnomeShell
|
||||||
|
XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git
|
||||||
|
XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell
|
||||||
|
Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git -b ubuntu/master
|
||||||
|
Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell/tree/ubuntu/master
|
||||||
|
|
||||||
|
Package: gnome-shell-vrr
|
||||||
|
Architecture: linux-any
|
||||||
|
Depends: gir1.2-accountsservice-1.0,
|
||||||
|
gir1.2-adw-1,
|
||||||
|
gir1.2-atk-1.0,
|
||||||
|
gir1.2-atspi-2.0 (>= 2.36),
|
||||||
|
gir1.2-gcr-3 (>= 3.7.5),
|
||||||
|
gir1.2-gdesktopenums-3.0 (>= 3.12),
|
||||||
|
gir1.2-gdkpixbuf-2.0,
|
||||||
|
gir1.2-gdm-1.0 (>= 3.18.2),
|
||||||
|
gir1.2-geoclue-2.0,
|
||||||
|
gir1.2-glib-2.0 (>= 1.56.0),
|
||||||
|
gir1.2-gnomebluetooth-3.0 (>= 3.12.0) [linux-any],
|
||||||
|
gir1.2-gnomedesktop-3.0 (>= 3.35.90),
|
||||||
|
gir1.2-graphene-1.0 (>= 1.10.2),
|
||||||
|
gir1.2-gstreamer-1.0,
|
||||||
|
gir1.2-gtk-3.0 (>= 3.16),
|
||||||
|
gir1.2-gtk-4.0,
|
||||||
|
gir1.2-gweather-4.0 (>= 4.1),
|
||||||
|
gir1.2-freedesktop,
|
||||||
|
gir1.2-ibus-1.0 (>= 1.5.22-2ubuntu2~),
|
||||||
|
gir1.2-nm-1.0 [linux-any],
|
||||||
|
gir1.2-nma-1.0 [linux-any],
|
||||||
|
gir1.2-pango-1.0,
|
||||||
|
gir1.2-polkit-1.0,
|
||||||
|
gir1.2-rsvg-2.0,
|
||||||
|
gir1.2-soup-3.0,
|
||||||
|
gir1.2-upowerglib-1.0 (>= 0.99),
|
||||||
|
gir1.2-webkit2-4.1,
|
||||||
|
mutter-vrr,
|
||||||
|
gnome-settings-daemon (>= 40~),
|
||||||
|
gnome-shell-common-vrr (= ${source:Version}),
|
||||||
|
gsettings-desktop-schemas (>= 42~beta),
|
||||||
|
gstreamer1.0-pipewire (>= 0.3.10) [linux-any],
|
||||||
|
libglib2.0-bin (>= 2.53.0),
|
||||||
|
python3,
|
||||||
|
ubuntu-wallpapers,
|
||||||
|
${gir:Depends},
|
||||||
|
${misc:Depends},
|
||||||
|
${shlibs:Depends}
|
||||||
|
Recommends: bolt (>= 0.3),
|
||||||
|
evolution-data-server (>= 3.45),
|
||||||
|
gdm3 (>= 3.10.0.1-3~),
|
||||||
|
gkbd-capplet,
|
||||||
|
gnome-control-center (>= 1:42),
|
||||||
|
gnome-remote-desktop,
|
||||||
|
gnome-menus,
|
||||||
|
gnome-user-docs,
|
||||||
|
ibus,
|
||||||
|
iio-sensor-proxy,
|
||||||
|
power-profiles-daemon,
|
||||||
|
switcheroo-control,
|
||||||
|
ubuntu-session | gnome-session,
|
||||||
|
xserver-xorg-legacy,
|
||||||
|
unzip
|
||||||
|
Suggests: gir1.2-malcontent-0 (>= 0.6.0) [linux-any],
|
||||||
|
gir1.2-telepathyglib-0.12,
|
||||||
|
gir1.2-telepathylogger-0.2 (>= 0.8.0),
|
||||||
|
gnome-backgrounds (>= 3.13.90),
|
||||||
|
gnome-shell-extension-prefs,
|
||||||
|
chrome-gnome-shell,
|
||||||
|
Breaks: gnome-shell-extension-appindicator (<< 36),
|
||||||
|
gnome-shell-extension-autohidetopbar (<< 20180511-2~),
|
||||||
|
gnome-shell-extension-caffeine (<< 0~git20171229-3~),
|
||||||
|
gnome-shell-extension-dash-to-panel (<< 43),
|
||||||
|
gnome-shell-extension-dashtodock (<< 70),
|
||||||
|
gnome-shell-extension-desktop-icons (<< 21.04),
|
||||||
|
gnome-shell-extension-desktop-icons-ng (<< 0.16.0~),
|
||||||
|
gnome-shell-extension-multi-monitors (<< 0.00~git20171014.1.df5d6e4-1.1~),
|
||||||
|
gnome-shell-extension-pixelsaver (<< 1.10+git20161217-49f47bf-1.1~),
|
||||||
|
gnome-shell-extension-taskbar (<< 57.0-2.1~),
|
||||||
|
gnome-shell-extension-top-icons-plus (<< 27-3~),
|
||||||
|
gnome-shell-extension-workspaces-to-dock (<< 54~),
|
||||||
|
gnome-shell-extensions (<< 40.0~),
|
||||||
|
gnome-shell-pomodoro (<< 0.13.4-2.1~),
|
||||||
|
Provides: notification-daemon,
|
||||||
|
polkit-1-auth-agent
|
||||||
|
Description: graphical shell for the GNOME desktop
|
||||||
|
The GNOME Shell provides core interface functions like switching
|
||||||
|
windows, launching applications or see your notifications. It takes
|
||||||
|
advantage of the capabilities of modern graphics hardware and
|
||||||
|
introduces innovative user interface concepts to provide a
|
||||||
|
delightful and easy to use experience. GNOME Shell is the defining
|
||||||
|
technology of the GNOME 3 user experience.
|
||||||
|
|
||||||
|
Package: gnome-shell-common-vrr
|
||||||
|
Architecture: all
|
||||||
|
Depends: ${misc:Depends}
|
||||||
|
Breaks: gnome-shell-vrr (<< 3.36.1-6~)
|
||||||
|
Replaces: gnome-shell-vrr (<< 3.36.1-6~)
|
||||||
|
Description: common files for the GNOME graphical shell
|
||||||
|
This package contains translations and data files for the GNOME shell.
|
||||||
|
|
||||||
|
Package: gnome-shell-extension-prefs-vrr
|
||||||
|
Architecture: linux-any
|
||||||
|
Depends: gir1.2-adw-1,
|
||||||
|
gir1.2-gtk-4.0,
|
||||||
|
gjs (>= 1.73.1),
|
||||||
|
gnome-shell-vrr (= ${binary:Version}),
|
||||||
|
gnome-shell-common-vrr (= ${source:Version}),
|
||||||
|
${gir:Depends},
|
||||||
|
${misc:Depends},
|
||||||
|
${shlibs:Depends}
|
||||||
|
Provides: gnome-extensions-app
|
||||||
|
Recommends: chrome-gnome-shell
|
||||||
|
Breaks: gnome-shell-vrr (<< 3.36.0-2)
|
||||||
|
Replaces: gnome-shell-vrr (<< 3.36.0-2)
|
||||||
|
Description: tool to enable / disable GNOME Shell extensions
|
||||||
|
This package contains a tool which users who use Shell extensions can use to
|
||||||
|
toggle them on and off, and access their preferences.
|
52
gnome-shell-43.0/debian/copyright
Normal file
52
gnome-shell-43.0/debian/copyright
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
This package was debianized by Sebastien Bacher <seb128@ubuntu.com> on
|
||||||
|
Wed, 01 Jul 2009 23:29:31 +0200.
|
||||||
|
|
||||||
|
It was downloaded from https://download.gnome.org/sources/gnome-shell/
|
||||||
|
|
||||||
|
Upstream Authors:
|
||||||
|
|
||||||
|
Colin Walters
|
||||||
|
Dan Winship
|
||||||
|
Marina Zhurakhinskaya
|
||||||
|
Owen Taylor
|
||||||
|
William Jon McCann
|
||||||
|
|
||||||
|
Files: src/*
|
||||||
|
js/*
|
||||||
|
Copyright: © 2000 Helix Code, Inc.
|
||||||
|
© 2000,2001 Eazel, Inc.
|
||||||
|
© 2001 George Lebl
|
||||||
|
© 2002 Sun Microsystems Inc.
|
||||||
|
© 2004-2005 James M. Cape <jcape@ignore-your.tv>
|
||||||
|
© 2006-2008 Red Hat, Inc.
|
||||||
|
© 2007 Ryan Lortie
|
||||||
|
© 2008 Intel Corp.
|
||||||
|
License: GPL-2+ (/usr/share/common-licenses/GPL-2)
|
||||||
|
|
||||||
|
Files: src/gdmuser/*
|
||||||
|
Copyright: © 2007-2008 William Jon McCann <mccann@jhu.edu>
|
||||||
|
© 2004-2005 James M. Cape <jcape@ignore-your.tv>
|
||||||
|
License: LGPL-2+ (/usr/share/common-licenses/LGPL-2)
|
||||||
|
|
||||||
|
Files: src/tray/*
|
||||||
|
Copyright: © 2002 Anders Carlsson <andersca@gnu.org>
|
||||||
|
© 2003-2006 Vincent Untz
|
||||||
|
© 2008 Red Hat, Inc.
|
||||||
|
|
||||||
|
Files: src/big/*
|
||||||
|
Copyright: © 2005-2008 Red Hat, Inc.
|
||||||
|
© 2008-2009 litl, LLC
|
||||||
|
|
||||||
|
Files: src/st/*
|
||||||
|
Copyright: © 2008 OpenedHand
|
||||||
|
© 2009 Intel Corporation.
|
||||||
|
© 2003-2004 Dodji Seketeli
|
||||||
|
License: LGPL-2.1 (/usr/share/common-licenses/LGPL-2.1)
|
||||||
|
|
||||||
|
The Debian packaging is:
|
||||||
|
|
||||||
|
Copyright © 2009 Sebastien Bacher <seb128@ubuntu.com>
|
||||||
|
Copyright © 2009 Collabora Ltd.
|
||||||
|
|
||||||
|
and is licensed under the GPL version 3,
|
||||||
|
see `/usr/share/common-licenses/GPL-3'.
|
1
gnome-shell-43.0/debian/extras/gnome-shell-vrr
Executable file
1
gnome-shell-43.0/debian/extras/gnome-shell-vrr
Executable file
@ -0,0 +1 @@
|
|||||||
|
GSETTINGS_SCHEMA_DIR="/opt/mutter-vrr/share/glib-2.0/schemas:$GSETTINGS_SCHEMA_DIR" LD_LIBRARY_PATH="/opt/mutter-vrr/lib/x86_64-linux-gnu:/opt/mutter-vrr/lib/x86_64-linux-gnu/mutter-11:/opt/mutter-vrr/lib/x86_64-linux-gnu/mutter-11/plugins:$LD_LIBRARY_PATH" PATH="/opt/mutter-vrr/bin:$PATH" /opt/mutter-vrr/bin/gnome-shell $@
|
14
gnome-shell-43.0/debian/extras/gnome-vrr.Shell.desktop
Normal file
14
gnome-shell-43.0/debian/extras/gnome-vrr.Shell.desktop
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=GNOME VRR Shell
|
||||||
|
Comment=Window management and application launching
|
||||||
|
Exec=/usr/bin/gnome-shell-vrr
|
||||||
|
Categories=GNOME;GTK;Core;
|
||||||
|
OnlyShowIn=GNOME;
|
||||||
|
NoDisplay=true
|
||||||
|
X-GNOME-Autostart-Phase=DisplayServer
|
||||||
|
X-GNOME-Provides=panel;windowmanager;
|
||||||
|
X-GNOME-Autostart-Notify=true
|
||||||
|
X-GNOME-AutoRestart=false
|
||||||
|
X-GNOME-HiddenUnderSystemd=true
|
||||||
|
X-Ubuntu-Gettext-Domain=gnome-shell
|
18
gnome-shell-43.0/debian/gbp.conf
Normal file
18
gnome-shell-43.0/debian/gbp.conf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
pristine-tar = True
|
||||||
|
debian-branch=ubuntu/master
|
||||||
|
debian-tag=ubuntu/%(version)s
|
||||||
|
upstream-branch = upstream/latest
|
||||||
|
|
||||||
|
[buildpackage]
|
||||||
|
sign-tags = True
|
||||||
|
|
||||||
|
[dch]
|
||||||
|
multimaint-merge = True
|
||||||
|
|
||||||
|
[import-orig]
|
||||||
|
postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit
|
||||||
|
upstream-vcs-tag = %(version%~%.)s
|
||||||
|
|
||||||
|
[pq]
|
||||||
|
patch-numbers = False
|
7
gnome-shell-43.0/debian/gnome-shell-common-vrr.install
Normal file
7
gnome-shell-43.0/debian/gnome-shell-common-vrr.install
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
opt/mutter-vrr/lib/systemd/user
|
||||||
|
opt/mutter-vrr/share/dbus-1/interfaces
|
||||||
|
opt/mutter-vrr/share/glib-2.0
|
||||||
|
opt/mutter-vrr/share/gnome-control-center
|
||||||
|
opt/mutter-vrr/share/gnome-shell
|
||||||
|
opt/mutter-vrr/share/icons/hicolor/*/apps/*
|
||||||
|
opt/mutter-vrr/share/locale
|
2
gnome-shell-43.0/debian/gnome-shell-common-vrr.postinst
Executable file
2
gnome-shell-43.0/debian/gnome-shell-common-vrr.postinst
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
glib-compile-schemas /opt/mutter-vrr/share/glib-2.0/schemas/
|
||||||
|
|
2
gnome-shell-43.0/debian/gnome-shell-common-vrr.postrm
Executable file
2
gnome-shell-43.0/debian/gnome-shell-common-vrr.postrm
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
glib-compile-schemas /opt/mutter-vrr/share/glib-2.0/schemas/
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
opt/mutter-vrr/bin/gnome-extensions-app
|
||||||
|
opt/mutter-vrr/bin/gnome-shell-extension-prefs
|
||||||
|
opt/mutter-vrr/share/applications/org.gnome.Extensions.desktop
|
||||||
|
opt/mutter-vrr/share/metainfo/org.gnome.Extensions.metainfo.xml
|
2
gnome-shell-43.0/debian/gnome-shell-vrr.bug-control
Normal file
2
gnome-shell-43.0/debian/gnome-shell-vrr.bug-control
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
report-with: gnome-session gnome-settings-daemon libgjs0g libmutter-11-0
|
||||||
|
package-status: libegl-vendor libglx-vendor libgl1-mesa-dri
|
2
gnome-shell-43.0/debian/gnome-shell-vrr.docs
Normal file
2
gnome-shell-43.0/debian/gnome-shell-vrr.docs
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
NEWS
|
||||||
|
README.md
|
@ -0,0 +1,2 @@
|
|||||||
|
[org.gnome.shell]
|
||||||
|
favorite-apps=[ 'firefox-esr.desktop', 'org.gnome.Evolution.desktop', 'rhythmbox.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ]
|
14
gnome-shell-43.0/debian/gnome-shell-vrr.install
Normal file
14
gnome-shell-43.0/debian/gnome-shell-vrr.install
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
opt/mutter-vrr/bin/gnome-extensions
|
||||||
|
opt/mutter-vrr/bin/gnome-shell
|
||||||
|
opt/mutter-vrr/bin/gnome-shell-extension-tool
|
||||||
|
opt/mutter-vrr/bin/gnome-shell-perf-tool
|
||||||
|
opt/mutter-vrr/lib/gnome-shell
|
||||||
|
opt/mutter-vrr/libexec
|
||||||
|
opt/mutter-vrr/share/applications/evolution-calendar.desktop
|
||||||
|
opt/mutter-vrr/share/applications/org.gnome.Shell*.desktop
|
||||||
|
opt/mutter-vrr/share/bash-completion/completions/gnome-extensions
|
||||||
|
opt/mutter-vrr/share/dbus-1/services
|
||||||
|
opt/mutter-vrr/share/man
|
||||||
|
opt/mutter-vrr/share/xdg-desktop-portal
|
||||||
|
debian/extras/gnome-shell-vrr usr/bin/
|
||||||
|
debian/extras/gnome-vrr.Shell.desktop usr/share/applications
|
16
gnome-shell-43.0/debian/gnome-shell-vrr.lintian-overrides
Normal file
16
gnome-shell-43.0/debian/gnome-shell-vrr.lintian-overrides
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# These RUNPATHs are needed to find mutter's private clutter fork
|
||||||
|
gnome-shell: custom-library-search-path opt/mutter-vrr/bin/gnome-shell RUNPATH opt/mutter-vrr/lib/*/mutter-*/
|
||||||
|
gnome-shell: custom-library-search-path opt/mutter-vrr/lib/gnome-shell/*.so RUNPATH opt/mutter-vrr/lib/*/mutter-*/
|
||||||
|
|
||||||
|
# This is just a launcher for a desktop-required component (evolution)
|
||||||
|
gnome-shell: desktop-command-not-in-package opt/mutter-vrr/share/applications/evolution-calendar.desktop evolution
|
||||||
|
|
||||||
|
# gnome-shell ships some desktop files only to provide metadata and icons to some apps
|
||||||
|
gnome-shell: desktop-command-not-in-package opt/mutter-vrr/share/applications/org.gnome.Shell.Extensions.desktop false
|
||||||
|
gnome-shell: desktop-command-not-in-package opt/mutter-vrr/share/applications/org.gnome.Shell.PortalHelper.desktop gapplication
|
||||||
|
|
||||||
|
# This is a NoDisplay=true desktop file, so there's no need for it
|
||||||
|
gnome-shell: desktop-entry-lacks-main-category opt/mutter-vrr/share/applications/org.gnome.Shell.desktop
|
||||||
|
|
||||||
|
# Conceptually a program, only built as a shared library for technical reasons
|
||||||
|
gnome-shell: exit-in-shared-library opt/mutter-vrr/lib/gnome-shell/libgnome-shell.so
|
105
gnome-shell-43.0/debian/patches/Revert-build-Port-to-gcr4.patch
Normal file
105
gnome-shell-43.0/debian/patches/Revert-build-Port-to-gcr4.patch
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
From: Jeremy Bicha <jeremy.bicha@canonical.com>
|
||||||
|
Date: Sun, 21 Aug 2022 10:30:55 -0400
|
||||||
|
Subject: Revert "build: Port to gcr4"
|
||||||
|
|
||||||
|
This reverts commit 5c935af7d3b3a3c9feb4e0d9ea214b6d25a7a2e7.
|
||||||
|
---
|
||||||
|
js/ui/environment.js | 2 +-
|
||||||
|
meson.build | 4 ++--
|
||||||
|
src/meson.build | 2 +-
|
||||||
|
src/shell-keyring-prompt.c | 6 +++---
|
||||||
|
src/shell-secure-text-buffer.c | 2 +-
|
||||||
|
5 files changed, 8 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/environment.js b/js/ui/environment.js
|
||||||
|
index 4853a83..83df7bc 100644
|
||||||
|
--- a/js/ui/environment.js
|
||||||
|
+++ b/js/ui/environment.js
|
||||||
|
@@ -8,7 +8,7 @@ imports.gi.versions.Atk = '1.0';
|
||||||
|
imports.gi.versions.Atspi = '2.0';
|
||||||
|
imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
|
||||||
|
imports.gi.versions.Cogl = Config.LIBMUTTER_API_VERSION;
|
||||||
|
-imports.gi.versions.Gcr = '4';
|
||||||
|
+imports.gi.versions.Gcr = '3';
|
||||||
|
imports.gi.versions.Gdk = '3.0';
|
||||||
|
imports.gi.versions.Gdm = '1.0';
|
||||||
|
imports.gi.versions.Geoclue = '2.0';
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index f071c2c..d7cb0ce 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -20,7 +20,7 @@ libmutter_test_pc = 'libmutter-test-' + mutter_api_version
|
||||||
|
|
||||||
|
ecal_req = '>= 3.33.1'
|
||||||
|
eds_req = '>= 3.33.1'
|
||||||
|
-gcr_req = '>= 3.90.0'
|
||||||
|
+gcr_req = '>= 3.7.5'
|
||||||
|
gio_req = '>= 2.56.0'
|
||||||
|
gi_req = '>= 1.49.1'
|
||||||
|
gjs_req = '>= 1.73.1'
|
||||||
|
@@ -71,7 +71,7 @@ endif
|
||||||
|
atk_bridge_dep = dependency('atk-bridge-2.0')
|
||||||
|
ecal_dep = dependency('libecal-2.0', version: ecal_req)
|
||||||
|
eds_dep = dependency('libedataserver-1.2', version: eds_req)
|
||||||
|
-gcr_dep = dependency('gcr-4', version: gcr_req)
|
||||||
|
+gcr_dep = dependency('gcr-base-3', version: gcr_req)
|
||||||
|
gdk_x11_dep = dependency('gdk-x11-3.0')
|
||||||
|
gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0')
|
||||||
|
gi_dep = dependency('gobject-introspection-1.0', version: gi_req)
|
||||||
|
diff --git a/src/meson.build b/src/meson.build
|
||||||
|
index fc7f8bf..e9ad569 100644
|
||||||
|
--- a/src/meson.build
|
||||||
|
+++ b/src/meson.build
|
||||||
|
@@ -215,7 +215,7 @@ libshell_dep = declare_dependency(link_with: libshell)
|
||||||
|
libshell_gir_includes = [
|
||||||
|
'Clutter-@0@'.format(mutter_api_version),
|
||||||
|
'Meta-@0@'.format(mutter_api_version),
|
||||||
|
- 'Gcr-4',
|
||||||
|
+ 'Gcr-3',
|
||||||
|
'PolkitAgent-1.0'
|
||||||
|
]
|
||||||
|
|
||||||
|
diff --git a/src/shell-keyring-prompt.c b/src/shell-keyring-prompt.c
|
||||||
|
index bb03279..83c6746 100644
|
||||||
|
--- a/src/shell-keyring-prompt.c
|
||||||
|
+++ b/src/shell-keyring-prompt.c
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
#include "shell-secure-text-buffer.h"
|
||||||
|
|
||||||
|
#define GCR_API_SUBJECT_TO_CHANGE
|
||||||
|
-#include <gcr/gcr.h>
|
||||||
|
+#include <gcr/gcr-base.h>
|
||||||
|
|
||||||
|
#include <glib/gi18n.h>
|
||||||
|
|
||||||
|
@@ -91,7 +91,7 @@ enum {
|
||||||
|
|
||||||
|
static GParamSpec *props[N_PROPS] = { NULL, };
|
||||||
|
|
||||||
|
-static void shell_keyring_prompt_iface (GcrPromptInterface *iface);
|
||||||
|
+static void shell_keyring_prompt_iface (GcrPromptIface *iface);
|
||||||
|
|
||||||
|
G_DEFINE_TYPE_WITH_CODE (ShellKeyringPrompt, shell_keyring_prompt, G_TYPE_OBJECT,
|
||||||
|
G_IMPLEMENT_INTERFACE (GCR_TYPE_PROMPT, shell_keyring_prompt_iface);
|
||||||
|
@@ -531,7 +531,7 @@ shell_keyring_prompt_close (GcrPrompt *prompt)
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-shell_keyring_prompt_iface (GcrPromptInterface *iface)
|
||||||
|
+shell_keyring_prompt_iface (GcrPromptIface *iface)
|
||||||
|
{
|
||||||
|
iface->prompt_password_async = shell_keyring_prompt_password_async;
|
||||||
|
iface->prompt_password_finish = shell_keyring_prompt_password_finish;
|
||||||
|
diff --git a/src/shell-secure-text-buffer.c b/src/shell-secure-text-buffer.c
|
||||||
|
index 8271410..03af451 100644
|
||||||
|
--- a/src/shell-secure-text-buffer.c
|
||||||
|
+++ b/src/shell-secure-text-buffer.c
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
#include "shell-secure-text-buffer.h"
|
||||||
|
|
||||||
|
#define GCR_API_SUBJECT_TO_CHANGE
|
||||||
|
-#include <gcr/gcr.h>
|
||||||
|
+#include <gcr/gcr-base.h>
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
@ -0,0 +1,95 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Fri, 1 Apr 2022 02:41:07 +0200
|
||||||
|
Subject: Revert "st: Apply css foreground color to text as a PangoAttribute"
|
||||||
|
|
||||||
|
Using the pango foreground color implies that such part will have a
|
||||||
|
color set at pango level and so that cogl will use this value as a
|
||||||
|
color override (as per cogl_pango_renderer_set_color_for_part()).
|
||||||
|
|
||||||
|
This is fine for most labels, but in case the clutter-text has the
|
||||||
|
selected text color set, it is simply ignored, because the overridden
|
||||||
|
color is always preferred.
|
||||||
|
|
||||||
|
Also the reason for this commit, was not to apply colors on top of
|
||||||
|
colored fonts, but this won't happen anymore now because mutter's commit
|
||||||
|
aa136f45 ensures that no color will be applied to glyphs that are
|
||||||
|
already colored.
|
||||||
|
|
||||||
|
So to me it looks that's just safer to revert it, instead of adding
|
||||||
|
different logic to handle the selected-text-color case.
|
||||||
|
|
||||||
|
This reverts commit 66c4b1a8b607600f193b34e6a9f8c85f76c2ac2c.
|
||||||
|
|
||||||
|
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2260
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1878998
|
||||||
|
---
|
||||||
|
src/st/st-entry.c | 2 ++
|
||||||
|
src/st/st-private.c | 32 ++++++++++++++++++++++++++------
|
||||||
|
2 files changed, 28 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/st/st-entry.c b/src/st/st-entry.c
|
||||||
|
index 64f85fd..d45ce95 100644
|
||||||
|
--- a/src/st/st-entry.c
|
||||||
|
+++ b/src/st/st-entry.c
|
||||||
|
@@ -1095,6 +1095,8 @@ st_entry_init (StEntry *entry)
|
||||||
|
g_signal_connect (priv->entry, "notify::line-alignment",
|
||||||
|
G_CALLBACK (invalidate_shadow_pipeline), entry);
|
||||||
|
|
||||||
|
+ g_signal_connect_swapped (priv->entry, "notify::editable",
|
||||||
|
+ G_CALLBACK (st_widget_style_changed), entry);
|
||||||
|
|
||||||
|
priv->spacing = 6.0f;
|
||||||
|
|
||||||
|
diff --git a/src/st/st-private.c b/src/st/st-private.c
|
||||||
|
index bb98151..1b70c5e 100644
|
||||||
|
--- a/src/st/st-private.c
|
||||||
|
+++ b/src/st/st-private.c
|
||||||
|
@@ -115,22 +115,42 @@ _st_set_text_from_style (ClutterText *text,
|
||||||
|
StTextDecoration decoration;
|
||||||
|
PangoAttrList *attribs = NULL;
|
||||||
|
const PangoFontDescription *font;
|
||||||
|
- PangoAttribute *foreground;
|
||||||
|
StTextAlign align;
|
||||||
|
gdouble spacing;
|
||||||
|
gchar *font_features;
|
||||||
|
+ gboolean foreground_color_set;
|
||||||
|
|
||||||
|
font = st_theme_node_get_font (theme_node);
|
||||||
|
clutter_text_set_font_description (text, (PangoFontDescription *) font);
|
||||||
|
|
||||||
|
attribs = pango_attr_list_new ();
|
||||||
|
|
||||||
|
+ foreground_color_set = FALSE;
|
||||||
|
st_theme_node_get_foreground_color (theme_node, &color);
|
||||||
|
- clutter_text_set_cursor_color (text, &color);
|
||||||
|
- foreground = pango_attr_foreground_new (color.red * 255,
|
||||||
|
- color.green * 255,
|
||||||
|
- color.blue * 255);
|
||||||
|
- pango_attr_list_insert (attribs, foreground);
|
||||||
|
+
|
||||||
|
+ if (clutter_text_get_editable (text))
|
||||||
|
+ {
|
||||||
|
+ ClutterColor selected_color;
|
||||||
|
+
|
||||||
|
+ if (st_theme_node_lookup_color (theme_node, "selected-color",
|
||||||
|
+ TRUE, &selected_color) &&
|
||||||
|
+ !clutter_color_equal (&selected_color, &color))
|
||||||
|
+ {
|
||||||
|
+ clutter_text_set_color (text, &color);
|
||||||
|
+ clutter_text_set_cursor_color (text, &color);
|
||||||
|
+ foreground_color_set = TRUE;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!foreground_color_set)
|
||||||
|
+ {
|
||||||
|
+ PangoAttribute *foreground;
|
||||||
|
+ clutter_text_set_cursor_color (text, &color);
|
||||||
|
+ foreground = pango_attr_foreground_new (color.red * 255,
|
||||||
|
+ color.green * 255,
|
||||||
|
+ color.blue * 255);
|
||||||
|
+ pango_attr_list_insert (attribs, foreground);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (color.alpha != 255)
|
||||||
|
{
|
@ -0,0 +1,62 @@
|
|||||||
|
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;
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
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;
|
@ -0,0 +1,32 @@
|
|||||||
|
From: Simon McVittie <smcv@debian.org>
|
||||||
|
Date: Sun, 12 Sep 2021 10:41:54 +0100
|
||||||
|
Subject: gnome-shell-extension-prefs: Give Debian-specific advice
|
||||||
|
|
||||||
|
We package gnome-extensions-app in the same binary package as
|
||||||
|
gnome-shell-extension-prefs, so there's never a need to download it from
|
||||||
|
Flathub.
|
||||||
|
|
||||||
|
Forwarded: not-needed, Debian-specific
|
||||||
|
Signed-off-by: Simon McVittie <smcv@debian.org>
|
||||||
|
---
|
||||||
|
src/gnome-shell-extension-prefs | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/gnome-shell-extension-prefs b/src/gnome-shell-extension-prefs
|
||||||
|
index 303b196..a59ffed 100755
|
||||||
|
--- a/src/gnome-shell-extension-prefs
|
||||||
|
+++ b/src/gnome-shell-extension-prefs
|
||||||
|
@@ -13,10 +13,10 @@ openPrefs() {
|
||||||
|
}
|
||||||
|
|
||||||
|
cat >&2 <<EOT
|
||||||
|
-gnome-shell-extension-prefs is deprecated
|
||||||
|
+The gnome-shell-extension-prefs program is deprecated.
|
||||||
|
|
||||||
|
-Install https://flathub.org/apps/details/org.gnome.Extensions for extension
|
||||||
|
-management, or use the gnome-extensions command line tool.
|
||||||
|
+Run gnome-extensions-app (from the gnome-shell-extension-prefs package)
|
||||||
|
+for extension management, or use the gnome-extensions command line tool.
|
||||||
|
|
||||||
|
Extensions can use the ExtensionUtils.openPrefs() method.
|
||||||
|
EOT
|
@ -0,0 +1,248 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Tue, 1 Mar 2022 11:57:20 +0100
|
||||||
|
Subject: gmd/util: Only start fingerprint service synchronously when it's
|
||||||
|
default
|
||||||
|
|
||||||
|
On ShellUserVerifier construction we used to start fprintd in a sync
|
||||||
|
fashion all the times, however in case the daemon had startup failures
|
||||||
|
or was hanging for whatever reason (like due to devices probing, given
|
||||||
|
that fprintd synchronously wait for them all to be initialized) we used
|
||||||
|
to just fail, leaving gdm or the lockscreen inusable.
|
||||||
|
|
||||||
|
While this could be prevented with a try/catch statement, there's no
|
||||||
|
much point to wait for fprintd if that's not the default authentication
|
||||||
|
service, and so:
|
||||||
|
- If we use gdm-fingerprint as default auth method, use a sync call to
|
||||||
|
initialize it and in case of failures, just continue with fallback
|
||||||
|
authentication mechanism (password)
|
||||||
|
|
||||||
|
- Otherwise, asynchronously initialize fprintd and continue with the
|
||||||
|
ShellUserVerifier without fingerprint support until we got a reply.
|
||||||
|
In case the service fails to deliver us a result, we don't give up
|
||||||
|
but we will try doing that at each authentication via
|
||||||
|
_checkForFingerprintReader().
|
||||||
|
In case all works properly, as per the previous commit, once the
|
||||||
|
initialization is done, we'll start the fingerprint PAM gdm service.
|
||||||
|
|
||||||
|
Fixes #5168
|
||||||
|
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1962566
|
||||||
|
Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5168
|
||||||
|
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2267
|
||||||
|
---
|
||||||
|
js/gdm/util.js | 128 +++++++++++++++++++++++++++++++++++++++++++++------------
|
||||||
|
1 file changed, 101 insertions(+), 27 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/gdm/util.js b/js/gdm/util.js
|
||||||
|
index 43647e7..7a335c1 100644
|
||||||
|
--- a/js/gdm/util.js
|
||||||
|
+++ b/js/gdm/util.js
|
||||||
|
@@ -44,6 +44,7 @@ var DISABLE_USER_LIST_KEY = 'disable-user-list';
|
||||||
|
|
||||||
|
// Give user 48ms to read each character of a PAM message
|
||||||
|
var USER_READ_TIME = 48;
|
||||||
|
+const FINGERPRINT_SERVICE_PROXY_TIMEOUT = 5000;
|
||||||
|
const FINGERPRINT_ERROR_TIMEOUT_WAIT = 15;
|
||||||
|
|
||||||
|
var MessageType = {
|
||||||
|
@@ -148,16 +149,49 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
this._preemptingService = null;
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
|
||||||
|
- this._settings.connect('changed',
|
||||||
|
- this._updateDefaultService.bind(this));
|
||||||
|
- this._updateDefaultService();
|
||||||
|
+ this._settings.connect('changed', () => this._updateDefaultServiceWithFallback());
|
||||||
|
+
|
||||||
|
+ this._fingerprintReaderType = FingerprintReaderType.NONE;
|
||||||
|
+ if (this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) {
|
||||||
|
+ const fprintManager = new FprintManagerProxy(Gio.DBus.system,
|
||||||
|
+ 'net.reactivated.Fprint',
|
||||||
|
+ '/net/reactivated/Fprint/Manager',
|
||||||
|
+ null,
|
||||||
|
+ null,
|
||||||
|
+ Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES |
|
||||||
|
+ Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION |
|
||||||
|
+ Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS);
|
||||||
|
+
|
||||||
|
+ // Do not wait too much for fprintd to reply, as in case it hangs
|
||||||
|
+ // we should fail early without having the shell to misbehave because
|
||||||
|
+ fprintManager.set_default_timeout(FINGERPRINT_SERVICE_PROXY_TIMEOUT);
|
||||||
|
|
||||||
|
- this._fprintManager = new FprintManagerProxy(Gio.DBus.system,
|
||||||
|
- 'net.reactivated.Fprint',
|
||||||
|
- '/net/reactivated/Fprint/Manager',
|
||||||
|
- null,
|
||||||
|
- null,
|
||||||
|
- Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES);
|
||||||
|
+ this._updateDefaultService();
|
||||||
|
+
|
||||||
|
+ if (!this._defaultService) {
|
||||||
|
+ // Fingerprint is the default one, we must wait for it!
|
||||||
|
+ try {
|
||||||
|
+ const [devicePath] = fprintManager.GetDefaultDeviceSync();
|
||||||
|
+ this._fprintManager = fprintManager;
|
||||||
|
+
|
||||||
|
+ const fprintDeviceProxy = new FprintDeviceProxy(Gio.DBus.system,
|
||||||
|
+ 'net.reactivated.Fprint', devicePath, null, null,
|
||||||
|
+ Gio.DBusProxyFlags.NOT_CONNECT_SIGNALS);
|
||||||
|
+ this._setFingerprintReaderType(fprintDeviceProxy['scan-type']);
|
||||||
|
+ } catch (e) {
|
||||||
|
+ logError(e, 'Failed to initialize fprintd service');
|
||||||
|
+ } finally {
|
||||||
|
+ this._updateDefaultServiceWithFallback();
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ // Ensure fingerprint service starts, but do not wait for it
|
||||||
|
+ this._updateFingerprintReaderType(fprintManager, null).then(
|
||||||
|
+ () => (this._fprintManager = fprintManager)).catch(
|
||||||
|
+ e => logError(e, 'Failed to initialize fprintd service'));
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ this._updateDefaultServiceWithFallback();
|
||||||
|
+ }
|
||||||
|
this._smartcardManager = SmartcardManager.getSmartcardManager();
|
||||||
|
|
||||||
|
// We check for smartcards right away, since an inserted smartcard
|
||||||
|
@@ -176,6 +210,7 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
this.reauthenticating = false;
|
||||||
|
|
||||||
|
this._failCounter = 0;
|
||||||
|
+ this._startedServices = new Set();
|
||||||
|
this._unavailableServices = new Set();
|
||||||
|
|
||||||
|
this._credentialManagers = {};
|
||||||
|
@@ -251,6 +286,7 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
|
||||||
|
this._clearUserVerifier();
|
||||||
|
this._clearMessageQueue();
|
||||||
|
+ this._startedServices.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
destroy() {
|
||||||
|
@@ -374,27 +410,52 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
}
|
||||||
|
|
||||||
|
async _checkForFingerprintReader() {
|
||||||
|
- this._fingerprintReaderType = FingerprintReaderType.NONE;
|
||||||
|
-
|
||||||
|
- if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY) ||
|
||||||
|
- this._fprintManager == null) {
|
||||||
|
- this._updateDefaultService();
|
||||||
|
+ if (!this._fprintManager) {
|
||||||
|
+ this._updateDefaultServiceWithFallback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (this._fingerprintReaderType !== FingerprintReaderType.NONE)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ await this._updateFingerprintReaderType(this._fprintManager, this._cancellable);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ async _updateFingerprintReaderType(fprintManager, cancellable) {
|
||||||
|
try {
|
||||||
|
- const [device] = await this._fprintManager.GetDefaultDeviceAsync(
|
||||||
|
- Gio.DBusCallFlags.NONE, this._cancellable);
|
||||||
|
- const fprintDeviceProxy = new FprintDeviceProxy(Gio.DBus.system,
|
||||||
|
- 'net.reactivated.Fprint',
|
||||||
|
- device);
|
||||||
|
- const fprintDeviceType = fprintDeviceProxy['scan-type'];
|
||||||
|
+ // Wrappers don't support null cancellable, so let's cheat about it
|
||||||
|
+ const [devicePath] = await fprintManager.GetDefaultDeviceAsync(
|
||||||
|
+ cancellable ? cancellable : Gio.DBusCallFlags.NONE);
|
||||||
|
+ const fprintDeviceProxy = await new Promise((resolve, reject) => {
|
||||||
|
+ const proxy = new FprintDeviceProxy(Gio.DBus.system,
|
||||||
|
+ 'net.reactivated.Fprint', devicePath, (_, error) => {
|
||||||
|
+ if (error)
|
||||||
|
+ reject(error);
|
||||||
|
+ else
|
||||||
|
+ resolve(proxy);
|
||||||
|
+ }, cancellable, Gio.DBusProxyFlags.NOT_CONNECT_SIGNALS);
|
||||||
|
+ });
|
||||||
|
+ this._setFingerprintReaderType(fprintDeviceProxy['scan-type']);
|
||||||
|
+ this._updateDefaultServiceWithFallback();
|
||||||
|
+
|
||||||
|
+ if (this._userVerifier &&
|
||||||
|
+ !this._startedServices.has(FINGERPRINT_SERVICE_NAME)) {
|
||||||
|
+ if (!this._hold?.isAcquired())
|
||||||
|
+ this._hold = new Batch.Hold();
|
||||||
|
+ await this._maybeStartFingerprintVerification();
|
||||||
|
+ }
|
||||||
|
+ } catch (e) {
|
||||||
|
+ if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
||||||
|
+ logError(e);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- this._fingerprintReaderType = fprintDeviceType === 'swipe'
|
||||||
|
- ? FingerprintReaderType.SWIPE
|
||||||
|
- : FingerprintReaderType.PRESS;
|
||||||
|
- this._updateDefaultService();
|
||||||
|
- } catch (e) {}
|
||||||
|
+ _setFingerprintReaderType(fprintDeviceType) {
|
||||||
|
+ this._fingerprintReaderType =
|
||||||
|
+ FingerprintReaderType[fprintDeviceType.toUpperCase()];
|
||||||
|
+
|
||||||
|
+ if (this._fingerprintReaderType === undefined)
|
||||||
|
+ throw new Error(`Unexpected fingerprint device type '${fprintDeviceType}'`);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onCredentialManagerAuthenticated(credentialManager, _token) {
|
||||||
|
@@ -495,6 +556,7 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
'problem', this._onProblem.bind(this),
|
||||||
|
'info-query', this._onInfoQuery.bind(this),
|
||||||
|
'secret-info-query', this._onSecretInfoQuery.bind(this),
|
||||||
|
+ 'conversation-started', this._onConversationStarted.bind(this),
|
||||||
|
'conversation-stopped', this._onConversationStopped.bind(this),
|
||||||
|
'service-unavailable', this._onServiceUnavailable.bind(this),
|
||||||
|
'reset', this._onReset.bind(this),
|
||||||
|
@@ -538,6 +600,10 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
this._defaultService = SMARTCARD_SERVICE_NAME;
|
||||||
|
else if (this._fingerprintReaderType !== FingerprintReaderType.NONE)
|
||||||
|
this._defaultService = FINGERPRINT_SERVICE_NAME;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _updateDefaultServiceWithFallback() {
|
||||||
|
+ this._updateDefaultService();
|
||||||
|
|
||||||
|
if (!this._defaultService) {
|
||||||
|
log("no authentication service is enabled, using password authentication");
|
||||||
|
@@ -576,11 +642,14 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
|
||||||
|
_beginVerification() {
|
||||||
|
this._startService(this._getForegroundService());
|
||||||
|
+ this._maybeStartFingerprintVerification();
|
||||||
|
+ }
|
||||||
|
|
||||||
|
+ async _maybeStartFingerprintVerification() {
|
||||||
|
if (this._userName &&
|
||||||
|
this._fingerprintReaderType !== FingerprintReaderType.NONE &&
|
||||||
|
!this.serviceIsForeground(FINGERPRINT_SERVICE_NAME))
|
||||||
|
- this._startService(FINGERPRINT_SERVICE_NAME);
|
||||||
|
+ await this._startService(FINGERPRINT_SERVICE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onChoiceListQuery(client, serviceName, promptMessage, list) {
|
||||||
|
@@ -673,8 +742,9 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
_onReset() {
|
||||||
|
// Clear previous attempts to authenticate
|
||||||
|
this._failCounter = 0;
|
||||||
|
+ this._startedServices.clear();
|
||||||
|
this._unavailableServices.clear();
|
||||||
|
- this._updateDefaultService();
|
||||||
|
+ this._updateDefaultServiceWithFallback();
|
||||||
|
|
||||||
|
this.emit('reset');
|
||||||
|
}
|
||||||
|
@@ -755,6 +825,10 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||||
|
this._queueMessage(serviceName, errorMessage, MessageType.ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _onConversationStarted(client, serviceName) {
|
||||||
|
+ this._startedServices.add(serviceName);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
_onConversationStopped(client, serviceName) {
|
||||||
|
// If the login failed with the preauthenticated oVirt credentials
|
||||||
|
// then discard the credentials and revert to default authentication
|
@ -0,0 +1,237 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Tue, 24 Oct 2017 02:15:13 +0200
|
||||||
|
Subject: global: make possible to set debug-flags dynamically
|
||||||
|
|
||||||
|
Adding {set,get}_debug_flags functions to the shell global object to
|
||||||
|
make possible to set this easily from looking class, making it easier
|
||||||
|
for developers and users to debug without having to restart the shell
|
||||||
|
with environment variables.
|
||||||
|
|
||||||
|
Debug flags in main are updated when the "debug-flags" property is
|
||||||
|
changed. I'm keeping this as a string-list so that it's easier to update.
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
|
||||||
|
Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6
|
||||||
|
---
|
||||||
|
src/main.c | 60 ++++++++++++++++++++++++++++++++++++++++++------------
|
||||||
|
src/shell-global.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
src/shell-global.h | 3 +++
|
||||||
|
3 files changed, 101 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/main.c b/src/main.c
|
||||||
|
index ac20be2..726afe9 100644
|
||||||
|
--- a/src/main.c
|
||||||
|
+++ b/src/main.c
|
||||||
|
@@ -276,14 +276,14 @@ shell_a11y_init (void)
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-shell_init_debug (const char *debug_env)
|
||||||
|
+shell_update_debug (const char *debug_string)
|
||||||
|
{
|
||||||
|
static const GDebugKey keys[] = {
|
||||||
|
{ "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS },
|
||||||
|
{ "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
|
||||||
|
};
|
||||||
|
|
||||||
|
- _shell_debug = g_parse_debug_string (debug_env, keys,
|
||||||
|
+ _shell_debug = g_parse_debug_string (debug_string, keys,
|
||||||
|
G_N_ELEMENTS (keys));
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -385,6 +385,42 @@ dump_gjs_stack_on_signal (int signo)
|
||||||
|
_tracked_signals[signo] = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+reset_signal_handler_to_default (int signo)
|
||||||
|
+{
|
||||||
|
+ signal (signo, SIG_DFL);
|
||||||
|
+ _tracked_signals[signo] = FALSE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+setup_debug_signal_listners (void)
|
||||||
|
+{
|
||||||
|
+ dump_gjs_stack_on_signal (SIGABRT);
|
||||||
|
+ dump_gjs_stack_on_signal (SIGFPE);
|
||||||
|
+ dump_gjs_stack_on_signal (SIGIOT);
|
||||||
|
+ dump_gjs_stack_on_signal (SIGTRAP);
|
||||||
|
+
|
||||||
|
+ if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS))
|
||||||
|
+ {
|
||||||
|
+ dump_gjs_stack_on_signal (SIGBUS);
|
||||||
|
+ dump_gjs_stack_on_signal (SIGSEGV);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ reset_signal_handler_to_default (SIGBUS);
|
||||||
|
+ reset_signal_handler_to_default (SIGSEGV);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+global_notify_debug_flags (GObject *gobject,
|
||||||
|
+ GParamSpec *pspec,
|
||||||
|
+ gpointer data)
|
||||||
|
+{
|
||||||
|
+ shell_update_debug (shell_global_get_debug_flags (shell_global_get ()));
|
||||||
|
+ setup_debug_signal_listners ();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static gboolean
|
||||||
|
list_modes (const char *option_name,
|
||||||
|
const char *value,
|
||||||
|
@@ -506,6 +542,7 @@ main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
g_autoptr (MetaContext) context = NULL;
|
||||||
|
GError *error = NULL;
|
||||||
|
+ const char *debug_flags;
|
||||||
|
int ecode = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
|
||||||
|
@@ -543,7 +580,8 @@ main (int argc, char **argv)
|
||||||
|
g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE);
|
||||||
|
g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE);
|
||||||
|
|
||||||
|
- shell_init_debug (g_getenv ("SHELL_DEBUG"));
|
||||||
|
+ debug_flags = g_getenv ("SHELL_DEBUG");
|
||||||
|
+ shell_update_debug (debug_flags);
|
||||||
|
|
||||||
|
shell_dbus_init (meta_context_is_replacing (context));
|
||||||
|
shell_a11y_init ();
|
||||||
|
@@ -557,18 +595,14 @@ main (int argc, char **argv)
|
||||||
|
if (session_mode == NULL)
|
||||||
|
session_mode = is_gdm_mode ? (char *)"gdm" : (char *)"user";
|
||||||
|
|
||||||
|
- _shell_global_init ("session-mode", session_mode, NULL);
|
||||||
|
+ _shell_global_init ("session-mode", session_mode,
|
||||||
|
+ "debug-flags", debug_flags,
|
||||||
|
+ NULL);
|
||||||
|
|
||||||
|
- dump_gjs_stack_on_signal (SIGABRT);
|
||||||
|
- dump_gjs_stack_on_signal (SIGFPE);
|
||||||
|
- dump_gjs_stack_on_signal (SIGIOT);
|
||||||
|
- dump_gjs_stack_on_signal (SIGTRAP);
|
||||||
|
+ g_signal_connect (shell_global_get (), "notify::debug-flags",
|
||||||
|
+ G_CALLBACK (global_notify_debug_flags), NULL);
|
||||||
|
|
||||||
|
- if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS))
|
||||||
|
- {
|
||||||
|
- dump_gjs_stack_on_signal (SIGBUS);
|
||||||
|
- dump_gjs_stack_on_signal (SIGSEGV);
|
||||||
|
- }
|
||||||
|
+ setup_debug_signal_listners ();
|
||||||
|
|
||||||
|
shell_profiler_init ();
|
||||||
|
|
||||||
|
diff --git a/src/shell-global.c b/src/shell-global.c
|
||||||
|
index 0ccdb10..1676208 100644
|
||||||
|
--- a/src/shell-global.c
|
||||||
|
+++ b/src/shell-global.c
|
||||||
|
@@ -59,6 +59,7 @@ struct _ShellGlobal {
|
||||||
|
Display *xdisplay;
|
||||||
|
|
||||||
|
char *session_mode;
|
||||||
|
+ char *debug_flags;
|
||||||
|
|
||||||
|
XserverRegion input_region;
|
||||||
|
|
||||||
|
@@ -109,6 +110,7 @@ enum {
|
||||||
|
PROP_FRAME_TIMESTAMPS,
|
||||||
|
PROP_FRAME_FINISH_TIMESTAMP,
|
||||||
|
PROP_SWITCHEROO_CONTROL,
|
||||||
|
+ PROP_DEBUG_FLAGS,
|
||||||
|
|
||||||
|
N_PROPS
|
||||||
|
};
|
||||||
|
@@ -234,6 +236,9 @@ shell_global_set_property(GObject *object,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
+ case PROP_DEBUG_FLAGS:
|
||||||
|
+ shell_global_set_debug_flags (global, g_value_get_string (value));
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
break;
|
||||||
|
@@ -316,6 +321,8 @@ shell_global_get_property(GObject *object,
|
||||||
|
break;
|
||||||
|
case PROP_SWITCHEROO_CONTROL:
|
||||||
|
g_value_set_object (value, global->switcheroo_control);
|
||||||
|
+ case PROP_DEBUG_FLAGS:
|
||||||
|
+ g_value_set_string (value, global->debug_flags);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
@@ -641,6 +648,13 @@ shell_global_class_init (ShellGlobalClass *klass)
|
||||||
|
G_TYPE_DBUS_PROXY,
|
||||||
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
+ props[PROP_DEBUG_FLAGS] =
|
||||||
|
+ g_param_spec_string ("debug-flags",
|
||||||
|
+ "Debug Flags",
|
||||||
|
+ "The debugging flags",
|
||||||
|
+ NULL,
|
||||||
|
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
+
|
||||||
|
g_object_class_install_properties (gobject_class, N_PROPS, props);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1858,3 +1872,40 @@ _shell_global_locate_pointer (ShellGlobal *global)
|
||||||
|
{
|
||||||
|
g_signal_emit (global, shell_global_signals[LOCATE_POINTER], 0);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * shell_global_get_debug_flags:
|
||||||
|
+ * @global: a #ShellGlobal
|
||||||
|
+ *
|
||||||
|
+ * Returns: (transfer none): The current debug flags
|
||||||
|
+ */
|
||||||
|
+const gchar *
|
||||||
|
+shell_global_get_debug_flags (ShellGlobal *global)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (SHELL_IS_GLOBAL (global), NULL);
|
||||||
|
+
|
||||||
|
+ return global->debug_flags;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * shell_global_set_debug_flags:
|
||||||
|
+ * @global: a #ShellGlobal
|
||||||
|
+ * @debug_flags: (nullable): A string for debugging flags
|
||||||
|
+ *
|
||||||
|
+ * Updates the debugging flags at runtime as the one set using the SHELL_DEBUG
|
||||||
|
+ * environment variables. Currently we support 'backtrace-warnings' and
|
||||||
|
+ * 'backtrace-segfaults' keys.
|
||||||
|
+ */
|
||||||
|
+void
|
||||||
|
+shell_global_set_debug_flags (ShellGlobal *global,
|
||||||
|
+ const char *debug_flags)
|
||||||
|
+{
|
||||||
|
+ g_return_if_fail (SHELL_IS_GLOBAL (global));
|
||||||
|
+
|
||||||
|
+ if (g_strcmp0 (global->debug_flags, debug_flags) != 0)
|
||||||
|
+ {
|
||||||
|
+ g_free (global->debug_flags);
|
||||||
|
+ global->debug_flags = g_strdup (debug_flags);
|
||||||
|
+ g_object_notify (G_OBJECT (global), "debug-flags");
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/shell-global.h b/src/shell-global.h
|
||||||
|
index 8d8238c..04c59d1 100644
|
||||||
|
--- a/src/shell-global.h
|
||||||
|
+++ b/src/shell-global.h
|
||||||
|
@@ -88,6 +88,9 @@ void shell_global_set_persistent_state (ShellGlobal *global,
|
||||||
|
GVariant * shell_global_get_persistent_state (ShellGlobal *global,
|
||||||
|
const char *property_type,
|
||||||
|
const char *property_name);
|
||||||
|
+const char * shell_global_get_debug_flags (ShellGlobal *global);
|
||||||
|
+void shell_global_set_debug_flags (ShellGlobal *global,
|
||||||
|
+ const char *debug_flags);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
@ -0,0 +1,69 @@
|
|||||||
|
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);
|
||||||
|
}
|
@ -0,0 +1,172 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Wed, 27 Mar 2019 16:14:39 +0100
|
||||||
|
Subject: magnifier: Scale the sprite to match the current monitor scaling
|
||||||
|
|
||||||
|
Compute the sprite texture scale (unfortunately using a workaround, based on
|
||||||
|
mutter cursor size preferences, tying to figure out the closest texture integer
|
||||||
|
scaling), and use this value to compute the scaling that should be applied to
|
||||||
|
the sprite in order to match the current monitor scaling.
|
||||||
|
|
||||||
|
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/475
|
||||||
|
Applied-Upstream: no
|
||||||
|
Forwarded: yes
|
||||||
|
---
|
||||||
|
js/ui/layout.js | 24 ++++++++++++++++++++----
|
||||||
|
js/ui/magnifier.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||||
|
2 files changed, 73 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/layout.js b/js/ui/layout.js
|
||||||
|
index 9393d04..0b11d24 100644
|
||||||
|
--- a/js/ui/layout.js
|
||||||
|
+++ b/js/ui/layout.js
|
||||||
|
@@ -951,22 +951,38 @@ var LayoutManager = GObject.registerClass({
|
||||||
|
return ws.get_work_area_for_monitor(monitorIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _findIndexForRect(x, y, width, height) {
|
||||||
|
+ let rect = new Meta.Rectangle({
|
||||||
|
+ x: Math.floor(x),
|
||||||
|
+ y: Math.floor(y),
|
||||||
|
+ width: Math.ceil(x + width) - Math.floor(x),
|
||||||
|
+ height: Math.ceil(y + height) - Math.floor(y)
|
||||||
|
+ });
|
||||||
|
+ return global.display.get_monitor_index_for_rect(rect);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// This call guarantees that we return some monitor to simplify usage of it
|
||||||
|
// In practice all tracked actors should be visible on some monitor anyway
|
||||||
|
findIndexForActor(actor) {
|
||||||
|
let [x, y] = actor.get_transformed_position();
|
||||||
|
let [w, h] = actor.get_transformed_size();
|
||||||
|
- let rect = new Meta.Rectangle({ x, y, width: w, height: h });
|
||||||
|
- return global.display.get_monitor_index_for_rect(rect);
|
||||||
|
+ return this._findIndexForRect(x, y, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
- findMonitorForActor(actor) {
|
||||||
|
- let index = this.findIndexForActor(actor);
|
||||||
|
+ _findMonitorForIndex(index) {
|
||||||
|
if (index >= 0 && index < this.monitors.length)
|
||||||
|
return this.monitors[index];
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ findMonitorForActor(actor) {
|
||||||
|
+ return this._findMonitorForIndex(this.findIndexForActor(actor));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ findMonitorForPoint(x, y) {
|
||||||
|
+ return this._findMonitorForIndex(this._findIndexForRect(x, y, 1, 1));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
_queueUpdateRegions() {
|
||||||
|
if (!this._updateRegionIdle) {
|
||||||
|
this._updateRegionIdle = Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
|
||||||
|
diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js
|
||||||
|
index f4012de..f8d235f 100644
|
||||||
|
--- a/js/ui/magnifier.js
|
||||||
|
+++ b/js/ui/magnifier.js
|
||||||
|
@@ -46,6 +46,8 @@ var MouseSpriteContent = GObject.registerClass({
|
||||||
|
}, class MouseSpriteContent extends GObject.Object {
|
||||||
|
_init() {
|
||||||
|
super._init();
|
||||||
|
+ this._scale = 1.0;
|
||||||
|
+ this._monitorScale = 1.0;
|
||||||
|
this._texture = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -53,7 +55,10 @@ var MouseSpriteContent = GObject.registerClass({
|
||||||
|
if (!this._texture)
|
||||||
|
return [false, 0, 0];
|
||||||
|
|
||||||
|
- return [true, this._texture.get_width(), this._texture.get_height()];
|
||||||
|
+ let width = this._texture.get_width() / this._scale;
|
||||||
|
+ let height = this._texture.get_height() / this._scale;
|
||||||
|
+
|
||||||
|
+ return [true, width, height];
|
||||||
|
}
|
||||||
|
|
||||||
|
vfunc_paint_content(actor, node, _paintContext) {
|
||||||
|
@@ -70,6 +75,29 @@ var MouseSpriteContent = GObject.registerClass({
|
||||||
|
textureNode.add_rectangle(actor.get_content_box());
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _textureScale() {
|
||||||
|
+ if (!this._texture)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ /* This is a workaround to guess the sprite scale; while it works file
|
||||||
|
+ * in normal scenarios, it's not guaranteed to work in all the cases,
|
||||||
|
+ * and so we should actually add an API to mutter that will allow us
|
||||||
|
+ * to know the real spirte texture scaling in order to adapt it to the
|
||||||
|
+ * wanted one. */
|
||||||
|
+ let avgSize = (this._texture.get_width() + this._texture.get_height()) / 2;
|
||||||
|
+ return Math.max (1, Math.floor (avgSize / Meta.prefs_get_cursor_size() + .1));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _recomputeScale() {
|
||||||
|
+ let scale = this._textureScale() / this._monitorScale;
|
||||||
|
+
|
||||||
|
+ if (this._scale != scale) {
|
||||||
|
+ this._scale = scale;
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
get texture() {
|
||||||
|
return this._texture;
|
||||||
|
}
|
||||||
|
@@ -84,7 +112,19 @@ var MouseSpriteContent = GObject.registerClass({
|
||||||
|
|
||||||
|
if (!oldTexture || !coglTexture ||
|
||||||
|
oldTexture.get_width() != coglTexture.get_width() ||
|
||||||
|
- oldTexture.get_height() != coglTexture.get_height())
|
||||||
|
+ oldTexture.get_height() != coglTexture.get_height()) {
|
||||||
|
+ this._recomputeScale();
|
||||||
|
+ this.invalidate_size();
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ get scale() {
|
||||||
|
+ return this._scale;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ set monitorScale(monitorScale) {
|
||||||
|
+ this._monitorScale = monitorScale;
|
||||||
|
+ if (this._recomputeScale())
|
||||||
|
this.invalidate_size();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@@ -113,6 +153,8 @@ var Magnifier = class Magnifier extends Signals.EventEmitter {
|
||||||
|
this._settingsInit(aZoomRegion);
|
||||||
|
aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse);
|
||||||
|
|
||||||
|
+ this._updateContentScale();
|
||||||
|
+
|
||||||
|
St.Settings.get().connect('notify::magnifier-active', () => {
|
||||||
|
this.setActive(St.Settings.get().magnifier_active);
|
||||||
|
});
|
||||||
|
@@ -120,6 +162,13 @@ var Magnifier = class Magnifier extends Signals.EventEmitter {
|
||||||
|
this.setActive(St.Settings.get().magnifier_active);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _updateContentScale() {
|
||||||
|
+ let monitor = Main.layoutManager.findMonitorForPoint(this.xMouse,
|
||||||
|
+ this.yMouse);
|
||||||
|
+ this._mouseSprite.content.monitorScale = monitor ?
|
||||||
|
+ monitor.geometry_scale : 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* showSystemCursor:
|
||||||
|
* Show the system mouse pointer.
|
||||||
|
@@ -256,6 +305,8 @@ var Magnifier = class Magnifier extends Signals.EventEmitter {
|
||||||
|
this.xMouse = xMouse;
|
||||||
|
this.yMouse = yMouse;
|
||||||
|
|
||||||
|
+ this._updateContentScale();
|
||||||
|
+
|
||||||
|
let sysMouseOverAny = false;
|
||||||
|
this._zoomRegions.forEach(zoomRegion => {
|
||||||
|
if (zoomRegion.scrollToMousePos())
|
@ -0,0 +1,47 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Thu, 2 Aug 2018 16:17:39 +0200
|
||||||
|
Subject: main: add `backtrace-crashes-all` and `backtrace-all`
|
||||||
|
|
||||||
|
These are just convenient aliases to not to have to list all the types,
|
||||||
|
as having more granularity is cool, but it might also cause some annoyance.
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
|
||||||
|
Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6
|
||||||
|
---
|
||||||
|
src/main.c | 7 +++++++
|
||||||
|
src/shell-global.c | 2 ++
|
||||||
|
2 files changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/main.c b/src/main.c
|
||||||
|
index 047ea87..6604fde 100644
|
||||||
|
--- a/src/main.c
|
||||||
|
+++ b/src/main.c
|
||||||
|
@@ -50,6 +50,13 @@ static const GDebugKey SHELL_DEBUG_KEYS[] = {
|
||||||
|
{ "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
|
||||||
|
{ "backtrace-aborts", SHELL_DEBUG_BACKTRACE_ABORTS },
|
||||||
|
{ "backtrace-math-errors", SHELL_DEBUG_BACKTRACE_FPE },
|
||||||
|
+ { "backtrace-crashes-all", SHELL_DEBUG_BACKTRACE_SEGFAULTS |
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_ABORTS |
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_FPE },
|
||||||
|
+ { "backtrace-all", SHELL_DEBUG_BACKTRACE_WARNINGS |
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_SEGFAULTS |
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_ABORTS |
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_FPE },
|
||||||
|
};
|
||||||
|
static int _default_debug_flags = SHELL_DEBUG_BACKTRACE_ABORTS |
|
||||||
|
SHELL_DEBUG_BACKTRACE_FPE;
|
||||||
|
diff --git a/src/shell-global.c b/src/shell-global.c
|
||||||
|
index 60b84e6..1f5ec82 100644
|
||||||
|
--- a/src/shell-global.c
|
||||||
|
+++ b/src/shell-global.c
|
||||||
|
@@ -1898,6 +1898,8 @@ shell_global_get_debug_flags (ShellGlobal *global)
|
||||||
|
* - 'backtrace-segfaults'
|
||||||
|
* - 'backtrace-aborts'
|
||||||
|
* - 'backtrace-math-errors'
|
||||||
|
+ * - 'backtrace-crashes-all'
|
||||||
|
+ * - 'backtrace-all'
|
||||||
|
* - 'all'
|
||||||
|
*/
|
||||||
|
void
|
@ -0,0 +1,169 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Tue, 24 Oct 2017 03:20:34 +0200
|
||||||
|
Subject: main: increase the granularity of backtraces in SHELL_DEBUG
|
||||||
|
|
||||||
|
Add support for multiple debug-keys for getting the backtraces,
|
||||||
|
allowing more control using both SHELL_DEBUG and/or set_debug_flags
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
|
||||||
|
Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6
|
||||||
|
---
|
||||||
|
src/main.c | 76 +++++++++++++++++++++++++++++++++++++++++-------------
|
||||||
|
src/shell-global.c | 10 ++++---
|
||||||
|
2 files changed, 65 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/main.c b/src/main.c
|
||||||
|
index 726afe9..047ea87 100644
|
||||||
|
--- a/src/main.c
|
||||||
|
+++ b/src/main.c
|
||||||
|
@@ -34,16 +34,26 @@ extern GType gnome_shell_plugin_get_type (void);
|
||||||
|
static gboolean is_gdm_mode = FALSE;
|
||||||
|
static char *session_mode = NULL;
|
||||||
|
static int caught_signal = 0;
|
||||||
|
+static gboolean _tracked_signals[NSIG] = { 0 };
|
||||||
|
|
||||||
|
#define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1
|
||||||
|
#define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4
|
||||||
|
|
||||||
|
enum {
|
||||||
|
- SHELL_DEBUG_BACKTRACE_WARNINGS = 1,
|
||||||
|
- SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2,
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_WARNINGS = (1 << 0),
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_SEGFAULTS = (1 << 1),
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_ABORTS = (1 << 2),
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_FPE = (1 << 3),
|
||||||
|
};
|
||||||
|
-static int _shell_debug;
|
||||||
|
-static gboolean _tracked_signals[NSIG] = { 0 };
|
||||||
|
+static const GDebugKey SHELL_DEBUG_KEYS[] = {
|
||||||
|
+ { "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS },
|
||||||
|
+ { "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
|
||||||
|
+ { "backtrace-aborts", SHELL_DEBUG_BACKTRACE_ABORTS },
|
||||||
|
+ { "backtrace-math-errors", SHELL_DEBUG_BACKTRACE_FPE },
|
||||||
|
+};
|
||||||
|
+static int _default_debug_flags = SHELL_DEBUG_BACKTRACE_ABORTS |
|
||||||
|
+ SHELL_DEBUG_BACKTRACE_FPE;
|
||||||
|
+static int _shell_debug = 0;
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_dbus_acquire_name (GDBusProxy *bus,
|
||||||
|
@@ -278,13 +288,23 @@ shell_a11y_init (void)
|
||||||
|
static void
|
||||||
|
shell_update_debug (const char *debug_string)
|
||||||
|
{
|
||||||
|
- static const GDebugKey keys[] = {
|
||||||
|
- { "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS },
|
||||||
|
- { "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
|
||||||
|
- };
|
||||||
|
+ _shell_debug = g_parse_debug_string (debug_string, SHELL_DEBUG_KEYS,
|
||||||
|
+ G_N_ELEMENTS (SHELL_DEBUG_KEYS));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static char *
|
||||||
|
+debug_flags_to_string (void)
|
||||||
|
+{
|
||||||
|
+ gsize i, j;
|
||||||
|
+ const char *enabled_flags[G_N_ELEMENTS (SHELL_DEBUG_KEYS) + 1] = { 0 };
|
||||||
|
+
|
||||||
|
+ for (i = 0, j = 0; i < G_N_ELEMENTS (SHELL_DEBUG_KEYS); ++i)
|
||||||
|
+ {
|
||||||
|
+ if ((_shell_debug & SHELL_DEBUG_KEYS[i].value))
|
||||||
|
+ enabled_flags[j++] = SHELL_DEBUG_KEYS[i].key;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- _shell_debug = g_parse_debug_string (debug_string, keys,
|
||||||
|
- G_N_ELEMENTS (keys));
|
||||||
|
+ return g_strjoinv (":", (char**) enabled_flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GLogWriterOutput
|
||||||
|
@@ -395,10 +415,23 @@ reset_signal_handler_to_default (int signo)
|
||||||
|
static void
|
||||||
|
setup_debug_signal_listners (void)
|
||||||
|
{
|
||||||
|
- dump_gjs_stack_on_signal (SIGABRT);
|
||||||
|
- dump_gjs_stack_on_signal (SIGFPE);
|
||||||
|
- dump_gjs_stack_on_signal (SIGIOT);
|
||||||
|
- dump_gjs_stack_on_signal (SIGTRAP);
|
||||||
|
+ if ((_shell_debug & SHELL_DEBUG_BACKTRACE_ABORTS))
|
||||||
|
+ {
|
||||||
|
+ dump_gjs_stack_on_signal (SIGABRT);
|
||||||
|
+ dump_gjs_stack_on_signal (SIGIOT);
|
||||||
|
+ dump_gjs_stack_on_signal (SIGTRAP);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ reset_signal_handler_to_default (SIGABRT);
|
||||||
|
+ reset_signal_handler_to_default (SIGIOT);
|
||||||
|
+ reset_signal_handler_to_default (SIGTRAP);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ((_shell_debug & SHELL_DEBUG_BACKTRACE_FPE))
|
||||||
|
+ dump_gjs_stack_on_signal (SIGFPE);
|
||||||
|
+ else
|
||||||
|
+ reset_signal_handler_to_default (SIGFPE);
|
||||||
|
|
||||||
|
if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS))
|
||||||
|
{
|
||||||
|
@@ -541,8 +574,9 @@ int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
g_autoptr (MetaContext) context = NULL;
|
||||||
|
+ g_autofree char *debug_flags_string = NULL;
|
||||||
|
GError *error = NULL;
|
||||||
|
- const char *debug_flags;
|
||||||
|
+ const char *shell_debug;
|
||||||
|
int ecode = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
|
||||||
|
@@ -580,8 +614,14 @@ main (int argc, char **argv)
|
||||||
|
g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE);
|
||||||
|
g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE);
|
||||||
|
|
||||||
|
- debug_flags = g_getenv ("SHELL_DEBUG");
|
||||||
|
- shell_update_debug (debug_flags);
|
||||||
|
+ shell_debug = g_getenv ("SHELL_DEBUG");
|
||||||
|
+
|
||||||
|
+ if (shell_debug)
|
||||||
|
+ shell_update_debug (shell_debug);
|
||||||
|
+ else
|
||||||
|
+ _shell_debug = _default_debug_flags;
|
||||||
|
+
|
||||||
|
+ debug_flags_string = debug_flags_to_string ();
|
||||||
|
|
||||||
|
shell_dbus_init (meta_context_is_replacing (context));
|
||||||
|
shell_a11y_init ();
|
||||||
|
@@ -596,7 +636,7 @@ main (int argc, char **argv)
|
||||||
|
session_mode = is_gdm_mode ? (char *)"gdm" : (char *)"user";
|
||||||
|
|
||||||
|
_shell_global_init ("session-mode", session_mode,
|
||||||
|
- "debug-flags", debug_flags,
|
||||||
|
+ "debug-flags", debug_flags_string,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
g_signal_connect (shell_global_get (), "notify::debug-flags",
|
||||||
|
diff --git a/src/shell-global.c b/src/shell-global.c
|
||||||
|
index 1676208..60b84e6 100644
|
||||||
|
--- a/src/shell-global.c
|
||||||
|
+++ b/src/shell-global.c
|
||||||
|
@@ -1890,11 +1890,15 @@ shell_global_get_debug_flags (ShellGlobal *global)
|
||||||
|
/**
|
||||||
|
* shell_global_set_debug_flags:
|
||||||
|
* @global: a #ShellGlobal
|
||||||
|
- * @debug_flags: (nullable): A string for debugging flags
|
||||||
|
+ * @debug_flags: (nullable): A comma-separated string of debugging flags
|
||||||
|
*
|
||||||
|
* Updates the debugging flags at runtime as the one set using the SHELL_DEBUG
|
||||||
|
- * environment variables. Currently we support 'backtrace-warnings' and
|
||||||
|
- * 'backtrace-segfaults' keys.
|
||||||
|
+ * environment variables. Currently we support these keys:
|
||||||
|
+ * - 'backtrace-warnings'
|
||||||
|
+ * - 'backtrace-segfaults'
|
||||||
|
+ * - 'backtrace-aborts'
|
||||||
|
+ * - 'backtrace-math-errors'
|
||||||
|
+ * - 'all'
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
shell_global_set_debug_flags (ShellGlobal *global,
|
@ -0,0 +1,30 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Thu, 2 Aug 2018 15:59:20 +0200
|
||||||
|
Subject: main: show an error message on gnome-shell crash
|
||||||
|
|
||||||
|
When we call the crash signal handler, write on log the reason of the
|
||||||
|
crash, also to make easier to parse the logs later on, and being able
|
||||||
|
to understand if a stacktrace is coming from a crash or a different
|
||||||
|
gjs error.
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
|
||||||
|
Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6
|
||||||
|
---
|
||||||
|
src/main.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/main.c b/src/main.c
|
||||||
|
index 29275cd..ac20be2 100644
|
||||||
|
--- a/src/main.c
|
||||||
|
+++ b/src/main.c
|
||||||
|
@@ -346,6 +346,8 @@ dump_gjs_stack_on_signal_handler (int signo)
|
||||||
|
struct sigaction sa = { .sa_handler = dump_gjs_stack_alarm_sigaction };
|
||||||
|
gsize i;
|
||||||
|
|
||||||
|
+ g_printerr ("GNOME Shell crashed with signal %d\n", signo);
|
||||||
|
+
|
||||||
|
/* Ignore all the signals starting this point, a part the one we'll raise
|
||||||
|
* (which is implicitly ignored here through SA_RESETHAND), this is needed
|
||||||
|
* not to get this handler being called by other signals that we were
|
31
gnome-shell-43.0/debian/patches/series
Normal file
31
gnome-shell-43.0/debian/patches/series
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
gdm-util-Only-start-fingerprint-service-synchronously-whe.patch
|
||||||
|
debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch
|
||||||
|
Revert-build-Port-to-gcr4.patch
|
||||||
|
ubuntu/desktop_detect.patch
|
||||||
|
ubuntu/lightdm-user-switching.patch
|
||||||
|
ubuntu/lock_on_suspend.patch
|
||||||
|
ubuntu/background_login.patch
|
||||||
|
ubuntu/gdm_alternatives.patch
|
||||||
|
main-show-an-error-message-on-gnome-shell-crash.patch
|
||||||
|
global-make-possible-to-set-debug-flags-dynamically.patch
|
||||||
|
main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch
|
||||||
|
main-add-backtrace-crashes-all-and-backtrace-all.patch
|
||||||
|
sessionMode-add-support-for-debugFlags-parameter.patch
|
||||||
|
magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch
|
||||||
|
ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch
|
||||||
|
ubuntu/resolve_alternate_theme_path.patch
|
||||||
|
ubuntu/secure_mode_extension.patch
|
||||||
|
ubuntu/keep-ubuntu-logo-bright-lp1867133-v1.patch
|
||||||
|
ubuntu/configure_login_screen.patch
|
||||||
|
ubuntu/layout-Try-to-allocate-before-getting-size-of-tracke.patch
|
||||||
|
Revert-st-Apply-css-foreground-color-to-text-as-a-PangoAt.patch
|
||||||
|
ubuntu/main-Avoid-meta-finalize.patch
|
||||||
|
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
|
@ -0,0 +1,46 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Thu, 2 Aug 2018 16:05:13 +0200
|
||||||
|
Subject: sessionMode: add support for `debugFlags` parameter
|
||||||
|
|
||||||
|
A session can now define `debugFlags` from a json file, still leaving priority
|
||||||
|
to the environment variable.
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
|
||||||
|
Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377
|
||||||
|
Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6
|
||||||
|
---
|
||||||
|
js/ui/main.js | 7 +++++++
|
||||||
|
js/ui/sessionMode.js | 1 +
|
||||||
|
2 files changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/main.js b/js/ui/main.js
|
||||||
|
index 2d8804a..fc5ae80 100644
|
||||||
|
--- a/js/ui/main.js
|
||||||
|
+++ b/js/ui/main.js
|
||||||
|
@@ -139,6 +139,13 @@ function _sessionUpdated() {
|
||||||
|
_remoteAccessInhibited = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (!GLib.getenv('SHELL_DEBUG')) {
|
||||||
|
+ if (typeof sessionMode.debugFlags === 'string')
|
||||||
|
+ global.set_debug_flags(sessionMode.debugFlags);
|
||||||
|
+ else if (Array.isArray(sessionMode.debugFlags))
|
||||||
|
+ global.set_debug_flags(sessionMode.debugFlags.join(':'))
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
|
||||||
|
index 4284366..053e678 100644
|
||||||
|
--- a/js/ui/sessionMode.js
|
||||||
|
+++ b/js/ui/sessionMode.js
|
||||||
|
@@ -29,6 +29,7 @@ const _modes = {
|
||||||
|
showWelcomeDialog: false,
|
||||||
|
allowSettings: false,
|
||||||
|
allowScreencast: false,
|
||||||
|
+ debugFlags: [],
|
||||||
|
enabledExtensions: [],
|
||||||
|
hasRunDialog: false,
|
||||||
|
hasWorkspaces: false,
|
@ -0,0 +1,34 @@
|
|||||||
|
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));
|
@ -0,0 +1,35 @@
|
|||||||
|
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);
|
@ -0,0 +1,90 @@
|
|||||||
|
From: Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
|
||||||
|
Date: Mon, 11 Apr 2022 21:10:37 +0200
|
||||||
|
Subject: Revert "dash: Use pin instead of favorites"
|
||||||
|
|
||||||
|
This effectively reverts this commit when using the ubuntu session:
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/a67877f5
|
||||||
|
|
||||||
|
We do that as a temporary measure in Ubuntu 22.04 in order to address
|
||||||
|
a translation issue. The issue was reported by Mitsuya Shibata:
|
||||||
|
|
||||||
|
* https://github.com/micheleg/dash-to-dock/issues/1697
|
||||||
|
|
||||||
|
* https://lists.ubuntu.com/archives/ubuntu-translators/2022-April/007829.html
|
||||||
|
|
||||||
|
In short: By using the old labels for those menu items, we can make use
|
||||||
|
of existing gnome-shell translations in Launchpad both for gnome-shell
|
||||||
|
and ubuntu-dock. Thanks Jeremy Bicha for the idea!
|
||||||
|
|
||||||
|
So even if it technically introduces new translatable strings very late,
|
||||||
|
it does not break the UIF spirit.
|
||||||
|
|
||||||
|
Forwarded: not-needed
|
||||||
|
---
|
||||||
|
js/ui/appFavorites.js | 12 ++++++++++--
|
||||||
|
js/ui/appMenu.js | 5 +++--
|
||||||
|
js/ui/dash.js | 3 +--
|
||||||
|
3 files changed, 14 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/appFavorites.js b/js/ui/appFavorites.js
|
||||||
|
index d8a3018..b4460bb 100644
|
||||||
|
--- a/js/ui/appFavorites.js
|
||||||
|
+++ b/js/ui/appFavorites.js
|
||||||
|
@@ -163,7 +163,11 @@ class AppFavorites extends Signals.EventEmitter {
|
||||||
|
|
||||||
|
let app = Shell.AppSystem.get_default().lookup_app(appId);
|
||||||
|
|
||||||
|
- let msg = _('%s has been pinned to the dash.').format(app.get_name());
|
||||||
|
+ let msg;
|
||||||
|
+ if (imports.misc.desktop.is('ubuntu'))
|
||||||
|
+ msg = _('%s has been added to your favorites.').format(app.get_name());
|
||||||
|
+ else
|
||||||
|
+ msg = _('%s has been pinned to the dash.').format(app.get_name());
|
||||||
|
Main.overview.setMessage(msg, {
|
||||||
|
forFeedback: true,
|
||||||
|
undoCallback: () => this._removeFavorite(appId),
|
||||||
|
@@ -196,7 +200,11 @@ class AppFavorites extends Signals.EventEmitter {
|
||||||
|
if (!this._removeFavorite(appId))
|
||||||
|
return;
|
||||||
|
|
||||||
|
- let msg = _('%s has been unpinned from the dash.').format(app.get_name());
|
||||||
|
+ let msg;
|
||||||
|
+ if (imports.misc.desktop.is('ubuntu'))
|
||||||
|
+ msg = _('%s has been removed from your favorites.').format(app.get_name());
|
||||||
|
+ else
|
||||||
|
+ msg = _('%s has been unpinned from the dash.').format(app.get_name());
|
||||||
|
Main.overview.setMessage(msg, {
|
||||||
|
forFeedback: true,
|
||||||
|
undoCallback: () => this._addFavorite(appId, pos),
|
||||||
|
diff --git a/js/ui/appMenu.js b/js/ui/appMenu.js
|
||||||
|
index 010fdb3..e96043b 100644
|
||||||
|
--- a/js/ui/appMenu.js
|
||||||
|
+++ b/js/ui/appMenu.js
|
||||||
|
@@ -153,9 +153,10 @@ var AppMenu = class AppMenu extends PopupMenu.PopupMenu {
|
||||||
|
return;
|
||||||
|
|
||||||
|
const { id } = this._app;
|
||||||
|
+ const isUbuntu = imports.misc.desktop.is('ubuntu');
|
||||||
|
this._toggleFavoriteItem.label.text = this._appFavorites.isFavorite(id)
|
||||||
|
- ? _('Unpin')
|
||||||
|
- : _('Pin to Dash');
|
||||||
|
+ ? (isUbuntu ? _('Remove from Favorites') : _('Unpin'))
|
||||||
|
+ : (isUbuntu ? _('Add to Favorites') : _('Pin to Dash'));
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateGpuItem() {
|
||||||
|
diff --git a/js/ui/dash.js b/js/ui/dash.js
|
||||||
|
index a40377c..3ff2219 100644
|
||||||
|
--- a/js/ui/dash.js
|
||||||
|
+++ b/js/ui/dash.js
|
||||||
|
@@ -244,9 +244,8 @@ class ShowAppsIcon extends DashItemContainer {
|
||||||
|
this.toggleButton.set_hover(canRemove);
|
||||||
|
if (this._iconActor)
|
||||||
|
this._iconActor.set_hover(canRemove);
|
||||||
|
-
|
||||||
|
if (canRemove)
|
||||||
|
- this.setLabelText(_('Unpin'));
|
||||||
|
+ this.setLabelText(imports.misc.desktop.is('ubuntu') ? _('Remove from Favorites') : _('Unpin'));
|
||||||
|
else
|
||||||
|
this.setLabelText(_("Show Applications"));
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Tue, 10 Sep 2019 13:13:14 +0100
|
||||||
|
Subject: js/ui/background.js: Match theme login screen color
|
||||||
|
|
||||||
|
This way the login animation will appear to expand over the login
|
||||||
|
screen (system background) instead of suddenly replacing it.
|
||||||
|
|
||||||
|
Original author: Didier Roche <didrocks@ubuntu.com>
|
||||||
|
Original author: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||||
|
Author: Marco Trevisan <marco.trevisan@canonical.com>
|
||||||
|
|
||||||
|
Last-Update: 2022-08-30
|
||||||
|
Forwarded: not-needed
|
||||||
|
---
|
||||||
|
js/ui/background.js | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/background.js b/js/ui/background.js
|
||||||
|
index 829ffb4..8701941 100644
|
||||||
|
--- a/js/ui/background.js
|
||||||
|
+++ b/js/ui/background.js
|
||||||
|
@@ -530,7 +530,16 @@ var SystemBackground = GObject.registerClass({
|
||||||
|
_init() {
|
||||||
|
if (_systemBackground == null) {
|
||||||
|
_systemBackground = new Meta.Background({ meta_display: global.display });
|
||||||
|
- _systemBackground.set_color(DEFAULT_BACKGROUND_COLOR);
|
||||||
|
+
|
||||||
|
+ let backgroundColor = DEFAULT_BACKGROUND_COLOR;
|
||||||
|
+ if (imports.misc.desktop.is("ubuntu")) {
|
||||||
|
+ const dummyBgActor = new imports.gi.St.Widget({ name: 'lockDialogGroup' });
|
||||||
|
+ Main.uiGroup.add_actor(dummyBgActor);
|
||||||
|
+ backgroundColor = dummyBgActor.get_theme_node().get_background_color();
|
||||||
|
+ dummyBgActor.destroy();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _systemBackground.set_color(backgroundColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
super._init({
|
@ -0,0 +1,199 @@
|
|||||||
|
From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||||
|
Date: Thu, 11 Mar 2021 10:12:06 +0200
|
||||||
|
Subject: Allow configuring login screen background
|
||||||
|
|
||||||
|
Configuring login screen backgound and properties is a recurring request
|
||||||
|
especially on corporate environment.
|
||||||
|
Allows to override the default embedded style in the theme with specific
|
||||||
|
gsettings keys.
|
||||||
|
Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/680
|
||||||
|
Bug: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1918613
|
||||||
|
Origin: ubuntu
|
||||||
|
---
|
||||||
|
data/com.ubuntu.login-screen.gschema.xml.in | 70 +++++++++++++++++++++++++++++
|
||||||
|
data/meson.build | 8 +++-
|
||||||
|
js/ui/background.js | 4 ++
|
||||||
|
js/ui/screenShield.js | 37 +++++++++++++++
|
||||||
|
4 files changed, 118 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 data/com.ubuntu.login-screen.gschema.xml.in
|
||||||
|
|
||||||
|
diff --git a/data/com.ubuntu.login-screen.gschema.xml.in b/data/com.ubuntu.login-screen.gschema.xml.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..ee8b3a2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/data/com.ubuntu.login-screen.gschema.xml.in
|
||||||
|
@@ -0,0 +1,70 @@
|
||||||
|
+<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
+<schemalist gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
|
+ <enum id="com.ubuntu.login-screen.BackgroundRepeat">
|
||||||
|
+ <value value="1" nick="default"/>
|
||||||
|
+ <value value="2" nick="repeat"/>
|
||||||
|
+ <value value="3" nick="repeat-x"/>
|
||||||
|
+ <value value="4" nick="repeat-y"/>
|
||||||
|
+ <value value="5" nick="no-repeat"/>
|
||||||
|
+ <value value="6" nick="space"/>
|
||||||
|
+ <value value="7" nick="round"/>
|
||||||
|
+ </enum>
|
||||||
|
+ <enum id="com.ubuntu.login-screen.BackgroundSize">
|
||||||
|
+ <value value="1" nick="default"/>
|
||||||
|
+ <value value="2" nick="auto"/>
|
||||||
|
+ <value value="3" nick="cover"/>
|
||||||
|
+ <value value="4" nick="contain"/>
|
||||||
|
+ </enum>
|
||||||
|
+ <schema id="com.ubuntu.login-screen" path="/com/ubuntu/login-screen/">
|
||||||
|
+ <key name="background-picture-uri" type="s">
|
||||||
|
+ <default>''</default>
|
||||||
|
+ <summary>
|
||||||
|
+ Sets the background image for the login screen.
|
||||||
|
+ </summary>
|
||||||
|
+ <description>
|
||||||
|
+ URI to use for the background image. Note that the backend only
|
||||||
|
+ supports local (file://) URIs.
|
||||||
|
+ It overrides the value defined in the default style sheet.
|
||||||
|
+ </description>
|
||||||
|
+ </key>
|
||||||
|
+ <key name="background-color" type="s">
|
||||||
|
+ <default>''</default>
|
||||||
|
+ <summary>
|
||||||
|
+ The background-color property sets the background color.
|
||||||
|
+ </summary>
|
||||||
|
+ <description>
|
||||||
|
+ The background-color property sets the background color to use when
|
||||||
|
+ the background picture URI is missing or when it doesn't cover the whole background.
|
||||||
|
+ It overrides the value defined in the default style sheet.
|
||||||
|
+ </description>
|
||||||
|
+ </key>
|
||||||
|
+ <key name="background-repeat" enum="com.ubuntu.login-screen.BackgroundRepeat">
|
||||||
|
+ <default>'default'</default>
|
||||||
|
+ <summary>
|
||||||
|
+ The background-repeat property sets if/how the background image will be repeated.
|
||||||
|
+ </summary>
|
||||||
|
+ <description>
|
||||||
|
+ The background-repeat property sets if/how a background image will be repeated.
|
||||||
|
+ By default, a background-image is repeated both vertically and horizontally.
|
||||||
|
+
|
||||||
|
+ It overrides the value defined in the default style sheet.
|
||||||
|
+ </description>
|
||||||
|
+ </key>
|
||||||
|
+ <key name="background-size" enum="com.ubuntu.login-screen.BackgroundSize">
|
||||||
|
+ <default>'default'</default>
|
||||||
|
+ <summary>
|
||||||
|
+ The background-size property specifies the size of the background image.
|
||||||
|
+ </summary>
|
||||||
|
+ <description>
|
||||||
|
+ The background-size property specifies the size of the background images.
|
||||||
|
+
|
||||||
|
+ There are three keywords you can use with this property:
|
||||||
|
+ auto: The background image is displayed in its original size;
|
||||||
|
+ cover: Resize the background image to cover the entire container, even if it has to stretch the image or cut a little bit off one of the edges;
|
||||||
|
+ contain: Resize the background image to make sure the image is fully visible.
|
||||||
|
+
|
||||||
|
+ It overrides the value defined in the default style sheet.
|
||||||
|
+ </description>
|
||||||
|
+ </key>
|
||||||
|
+ </schema>
|
||||||
|
+</schemalist>
|
||||||
|
diff --git a/data/meson.build b/data/meson.build
|
||||||
|
index 30d4917..22d6665 100644
|
||||||
|
--- a/data/meson.build
|
||||||
|
+++ b/data/meson.build
|
||||||
|
@@ -95,6 +95,12 @@ schema = configure_file(
|
||||||
|
configuration: schemaconf,
|
||||||
|
install_dir: schemadir
|
||||||
|
)
|
||||||
|
+schema_ubuntu_login = configure_file(
|
||||||
|
+ input: 'com.ubuntu.login-screen.gschema.xml.in',
|
||||||
|
+ output: 'com.ubuntu.login-screen.gschema.xml',
|
||||||
|
+ configuration: schemaconf,
|
||||||
|
+ install_dir: schemadir
|
||||||
|
+)
|
||||||
|
install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir)
|
||||||
|
|
||||||
|
overrides_migration_conf = configuration_data()
|
||||||
|
@@ -132,7 +138,7 @@ endif
|
||||||
|
|
||||||
|
# for unit tests - gnome.compile_schemas() only looks in srcdir
|
||||||
|
custom_target('compile-schemas',
|
||||||
|
- input: schema,
|
||||||
|
+ input: [schema, chema_ubuntu_login],
|
||||||
|
output: 'gschemas.compiled',
|
||||||
|
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
|
||||||
|
build_by_default: true)
|
||||||
|
diff --git a/js/ui/background.js b/js/ui/background.js
|
||||||
|
index 8701941..c055fcf 100644
|
||||||
|
--- a/js/ui/background.js
|
||||||
|
+++ b/js/ui/background.js
|
||||||
|
@@ -533,7 +533,11 @@ var SystemBackground = GObject.registerClass({
|
||||||
|
|
||||||
|
let backgroundColor = DEFAULT_BACKGROUND_COLOR;
|
||||||
|
if (imports.misc.desktop.is("ubuntu")) {
|
||||||
|
+ const loginSettings = new Gio.Settings({ schema_id: 'com.ubuntu.login-screen' });
|
||||||
|
+ const bgColor = loginSettings.get_string('background-color');
|
||||||
|
const dummyBgActor = new imports.gi.St.Widget({ name: 'lockDialogGroup' });
|
||||||
|
+ if (bgColor)
|
||||||
|
+ dummyBgActor.set_style(`background-color: ${bgColor};`);
|
||||||
|
Main.uiGroup.add_actor(dummyBgActor);
|
||||||
|
backgroundColor = dummyBgActor.get_theme_node().get_background_color();
|
||||||
|
dummyBgActor.destroy();
|
||||||
|
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
|
||||||
|
index 1cc5cb7..7a6867f 100644
|
||||||
|
--- a/js/ui/screenShield.js
|
||||||
|
+++ b/js/ui/screenShield.js
|
||||||
|
@@ -29,6 +29,12 @@ const DISABLE_LOCK_KEY = 'disable-lock-screen';
|
||||||
|
|
||||||
|
const LOCKED_STATE_STR = 'screenShield.locked';
|
||||||
|
|
||||||
|
+const LOGIN_SCREEN_SCHEMA = 'com.ubuntu.login-screen';
|
||||||
|
+const LOGIN_SCREEN_BACKGROUND_COLOR_KEY = 'background-color';
|
||||||
|
+const LOGIN_SCREEN_BACKGROUND_PICTURE_URI_KEY = 'background-picture-uri';
|
||||||
|
+const LOGIN_SCREEN_BACKGROUND_REPEAT_KEY = 'background-repeat';
|
||||||
|
+const LOGIN_SCREEN_BACKGROUND_SIZE_KEY = 'background-size';
|
||||||
|
+
|
||||||
|
// ScreenShield animation time
|
||||||
|
// - STANDARD_FADE_TIME is used when the session goes idle
|
||||||
|
// - MANUAL_FADE_TIME is used for lowering the shield when asked by the user,
|
||||||
|
@@ -116,6 +122,16 @@ var ScreenShield = class extends Signals.EventEmitter {
|
||||||
|
this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
|
||||||
|
this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this));
|
||||||
|
|
||||||
|
+ this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });
|
||||||
|
+ [
|
||||||
|
+ LOGIN_SCREEN_BACKGROUND_COLOR_KEY,
|
||||||
|
+ LOGIN_SCREEN_BACKGROUND_PICTURE_URI_KEY,
|
||||||
|
+ LOGIN_SCREEN_BACKGROUND_REPEAT_KEY,
|
||||||
|
+ LOGIN_SCREEN_BACKGROUND_SIZE_KEY,
|
||||||
|
+ ].forEach(schema => this._loginScreenSettings.connect(`changed::${schema}`,
|
||||||
|
+ () => this._refreshBackground()));
|
||||||
|
+ this._refreshBackground();
|
||||||
|
+
|
||||||
|
this._isModal = false;
|
||||||
|
this._isGreeter = false;
|
||||||
|
this._isActive = false;
|
||||||
|
@@ -216,6 +232,27 @@ var ScreenShield = class extends Signals.EventEmitter {
|
||||||
|
return this._isModal;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _refreshBackground() {
|
||||||
|
+ const inlineStyle = [];
|
||||||
|
+
|
||||||
|
+ const getSetting = s => this._loginScreenSettings.get_string(s);
|
||||||
|
+ const backgroundColor = getSetting(LOGIN_SCREEN_BACKGROUND_COLOR_KEY);
|
||||||
|
+ const backgroundPictureUri = getSetting(LOGIN_SCREEN_BACKGROUND_PICTURE_URI_KEY);
|
||||||
|
+ const backgroundRepeat = getSetting(LOGIN_SCREEN_BACKGROUND_REPEAT_KEY);
|
||||||
|
+ const backgroundSize = getSetting(LOGIN_SCREEN_BACKGROUND_SIZE_KEY);
|
||||||
|
+
|
||||||
|
+ if (backgroundColor)
|
||||||
|
+ inlineStyle.push(`background-color: ${backgroundColor}`);
|
||||||
|
+ if (backgroundPictureUri)
|
||||||
|
+ inlineStyle.push(`background-image: url("${backgroundPictureUri}")`);
|
||||||
|
+ if (backgroundRepeat !== 'default')
|
||||||
|
+ inlineStyle.push(`background-repeat: ${backgroundRepeat}`);
|
||||||
|
+ if (backgroundSize !== 'default')
|
||||||
|
+ inlineStyle.push(`background-size: ${backgroundSize}`);
|
||||||
|
+
|
||||||
|
+ this._lockDialogGroup.set_style(inlineStyle.join('; '));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
async _syncInhibitor() {
|
||||||
|
const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY) ||
|
||||||
|
this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY);
|
@ -0,0 +1,81 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Wed, 24 Aug 2022 19:15:36 +0200
|
||||||
|
Subject: darkMode: Add support to Yaru theme color variants
|
||||||
|
|
||||||
|
Support switching to dark mode when using the Yaru theme color accents.
|
||||||
|
---
|
||||||
|
js/ui/status/darkMode.js | 43 +++++++++++++++++++++++++++++++++++++++++--
|
||||||
|
1 file changed, 41 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/status/darkMode.js b/js/ui/status/darkMode.js
|
||||||
|
index d1ec2bd..ea0dc6a 100644
|
||||||
|
--- a/js/ui/status/darkMode.js
|
||||||
|
+++ b/js/ui/status/darkMode.js
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
/* exported Indicator */
|
||||||
|
-const {Gio, GObject} = imports.gi;
|
||||||
|
+const {Gio, GObject, St} = imports.gi;
|
||||||
|
|
||||||
|
const Main = imports.ui.main;
|
||||||
|
const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
|
||||||
|
@@ -18,6 +18,9 @@ class DarkModeToggle extends QuickToggle {
|
||||||
|
this._changedId = this._settings.connect('changed::color-scheme',
|
||||||
|
() => this._sync());
|
||||||
|
|
||||||
|
+ St.Settings.get().connect('notify::gtk-theme', () => this._sync());
|
||||||
|
+ St.Settings.get().connect('notify::gtk-theme-variant', () => this._sync());
|
||||||
|
+
|
||||||
|
this.connectObject(
|
||||||
|
'destroy', () => this._settings.run_dispose(),
|
||||||
|
'clicked', () => this._toggleMode(),
|
||||||
|
@@ -27,13 +30,49 @@ class DarkModeToggle extends QuickToggle {
|
||||||
|
|
||||||
|
_toggleMode() {
|
||||||
|
Main.layoutManager.screenTransition.run();
|
||||||
|
+ const preferDark = !this.checked;
|
||||||
|
+ const {gtkTheme, gtkThemeVariant} = St.Settings.get();
|
||||||
|
+ const themeVariant = gtkThemeVariant?.toLowerCase();
|
||||||
|
this._settings.set_string('color-scheme',
|
||||||
|
this.checked ? 'default' : 'prefer-dark');
|
||||||
|
+
|
||||||
|
+ if (gtkTheme === 'Yaru')
|
||||||
|
+ this._setYaruSettings(themeVariant, preferDark);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _setYaruSettings(themeVariant, preferDark) {
|
||||||
|
+ const currentlyDark = themeVariant === 'dark' || themeVariant?.endsWith('-dark');
|
||||||
|
+ if (currentlyDark)
|
||||||
|
+ themeVariant = themeVariant.slice(0, -'-dark'.length);
|
||||||
|
+
|
||||||
|
+ if (currentlyDark !== preferDark) {
|
||||||
|
+ const newTheme = `Yaru${
|
||||||
|
+ themeVariant ? `-${themeVariant}` : ''}${
|
||||||
|
+ preferDark ? '-dark' : ''}`;
|
||||||
|
+
|
||||||
|
+ this._settings.set_string('gtk-theme', newTheme);
|
||||||
|
+ this._settings.set_string('icon-theme', newTheme);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ const schemaSource = Gio.SettingsSchemaSource.get_default();
|
||||||
|
+ const geditSchema = schemaSource.lookup('org.gnome.gedit.preferences.editor', true);
|
||||||
|
+
|
||||||
|
+ if (geditSchema) {
|
||||||
|
+ const geditSettings = Gio.Settings.new_full(geditSchema, null, null);
|
||||||
|
+ const geditScheme = geditSettings.get_user_value('scheme')?.unpack();
|
||||||
|
+
|
||||||
|
+ if (geditScheme?.startsWith('Yaru') &&
|
||||||
|
+ geditScheme.endsWith('-dark') !== preferDark)
|
||||||
|
+ geditSettings.set_string('scheme', `Yaru${preferDark ? '-dark' : ''}`);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
_sync() {
|
||||||
|
const colorScheme = this._settings.get_string('color-scheme');
|
||||||
|
- const checked = colorScheme === 'prefer-dark';
|
||||||
|
+ const {gtkTheme, gtkThemeVariant} = St.Settings.get();
|
||||||
|
+ let checked = colorScheme === 'prefer-dark';
|
||||||
|
+ if (gtkTheme === 'Yaru' && !gtkThemeVariant?.endsWith('dark'))
|
||||||
|
+ checked = false;
|
||||||
|
if (this.checked !== checked)
|
||||||
|
this.set({checked});
|
||||||
|
}
|
66
gnome-shell-43.0/debian/patches/ubuntu/desktop_detect.patch
Normal file
66
gnome-shell-43.0/debian/patches/ubuntu/desktop_detect.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||||
|
Date: Wed, 20 Jun 2018 19:22:06 +0200
|
||||||
|
Subject: Add an helper to detect current desktop
|
||||||
|
|
||||||
|
We will differentiate some behavior depending on current desktop. Add an
|
||||||
|
helper to centralize the current desktop detection.
|
||||||
|
Forwarded: not-needed
|
||||||
|
Origin: ubuntu
|
||||||
|
===================================================================
|
||||||
|
---
|
||||||
|
js/js-resources.gresource.xml | 1 +
|
||||||
|
js/misc/desktop.js | 33 +++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 34 insertions(+)
|
||||||
|
create mode 100644 js/misc/desktop.js
|
||||||
|
|
||||||
|
diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
|
||||||
|
index 76b5f95..5babd0f 100644
|
||||||
|
--- a/js/js-resources.gresource.xml
|
||||||
|
+++ b/js/js-resources.gresource.xml
|
||||||
|
@@ -13,6 +13,7 @@
|
||||||
|
|
||||||
|
<file>misc/config.js</file>
|
||||||
|
<file>misc/extensionUtils.js</file>
|
||||||
|
+ <file>misc/desktop.js</file>
|
||||||
|
<file>misc/fileUtils.js</file>
|
||||||
|
<file>misc/dbusUtils.js</file>
|
||||||
|
<file>misc/gnomeSession.js</file>
|
||||||
|
diff --git a/js/misc/desktop.js b/js/misc/desktop.js
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..8bdca57
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/js/misc/desktop.js
|
||||||
|
@@ -0,0 +1,33 @@
|
||||||
|
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
+
|
||||||
|
+const GLib = imports.gi.GLib;
|
||||||
|
+
|
||||||
|
+// current desktop doesn't change unless we restart the shell or control
|
||||||
|
+// the env variable. It's safe to cache matching result
|
||||||
|
+const _currentDesktopsMatches = new Map();
|
||||||
|
+
|
||||||
|
+// is:
|
||||||
|
+// @name: desktop string you want to assert if it matches the current desktop env
|
||||||
|
+//
|
||||||
|
+// The function examples XDG_CURRENT_DESKTOP and return if the current desktop
|
||||||
|
+// is part of that desktop string.
|
||||||
|
+//
|
||||||
|
+// Return value: if the environment isn't set or doesn't match, return False
|
||||||
|
+// otherwise, return True.
|
||||||
|
+function is(name) {
|
||||||
|
+ if (!_currentDesktopsMatches.size) {
|
||||||
|
+ const desktopsEnv = GLib.getenv('XDG_CURRENT_DESKTOP');
|
||||||
|
+ if (!desktopsEnv) {
|
||||||
|
+ _currentDesktopsMatches.set(name, false);
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ const desktops = desktopsEnv.split(':');
|
||||||
|
+ desktops.forEach(d => _currentDesktopsMatches.set(d, true));
|
||||||
|
+
|
||||||
|
+ if (!_currentDesktopsMatches.size)
|
||||||
|
+ _currentDesktopsMatches.set(name, _currentDesktopsMatches.has(name));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return !!_currentDesktopsMatches.get(name);
|
||||||
|
+}
|
@ -0,0 +1,42 @@
|
|||||||
|
From: Jeremy Soller <jeremy@system76.com>
|
||||||
|
Date: Wed, 20 Jun 2018 19:22:06 +0200
|
||||||
|
Subject: Add support for GDM theme alternatives
|
||||||
|
|
||||||
|
GNOME vanilla and systemd76 derivative ships their own GDM theme.
|
||||||
|
|
||||||
|
This allows to provide alternative gresource file for gdm3 that must contain
|
||||||
|
a `gdm3.css` stylesheet that will be applied.
|
||||||
|
|
||||||
|
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=787454
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1715722
|
||||||
|
Last-Update: 2017-09-08
|
||||||
|
---
|
||||||
|
data/gnome-shell-theme.gresource.xml | 1 +
|
||||||
|
js/ui/sessionMode.js | 2 ++
|
||||||
|
2 files changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
|
||||||
|
index 24b3be8..2632e5d 100644
|
||||||
|
--- a/data/gnome-shell-theme.gresource.xml
|
||||||
|
+++ b/data/gnome-shell-theme.gresource.xml
|
||||||
|
@@ -9,6 +9,7 @@
|
||||||
|
<file>checkbox-off-focused.svg</file>
|
||||||
|
<file>checkbox-off-light.svg</file>
|
||||||
|
<file>checkbox-off.svg</file>
|
||||||
|
+ <file alias="gdm.css">gnome-shell.css</file>
|
||||||
|
<file>gnome-shell.css</file>
|
||||||
|
<file>gnome-shell-high-contrast.css</file>
|
||||||
|
<file>gnome-shell-start.svg</file>
|
||||||
|
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
|
||||||
|
index b38bcdf..4284366 100644
|
||||||
|
--- a/js/ui/sessionMode.js
|
||||||
|
+++ b/js/ui/sessionMode.js
|
||||||
|
@@ -50,6 +50,8 @@ const _modes = {
|
||||||
|
|
||||||
|
'gdm': {
|
||||||
|
hasNotifications: true,
|
||||||
|
+ stylesheetName: 'gdm.css',
|
||||||
|
+ themeResourceName: 'gdm-theme.gresource',
|
||||||
|
isGreeter: true,
|
||||||
|
isPrimary: true,
|
||||||
|
unlockDialog: imports.gdm.loginDialog.LoginDialog,
|
@ -0,0 +1,36 @@
|
|||||||
|
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||||
|
Date: Thu, 2 Apr 2020 17:16:27 +0800
|
||||||
|
Subject: Keep the Ubuntu logo at full brightness during startup animation
|
||||||
|
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1867133
|
||||||
|
Forwarded: not-needed
|
||||||
|
Last-Update: 2020-03-18
|
||||||
|
---
|
||||||
|
js/gdm/loginDialog.js | 7 ++++++-
|
||||||
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
|
||||||
|
index 6071936..196fab5 100644
|
||||||
|
--- a/js/gdm/loginDialog.js
|
||||||
|
+++ b/js/gdm/loginDialog.js
|
||||||
|
@@ -1260,7 +1260,11 @@ var LoginDialog = GObject.registerClass({
|
||||||
|
{ sortGroup: CtrlAltTab.SortGroup.MIDDLE });
|
||||||
|
this.activate();
|
||||||
|
|
||||||
|
- this.opacity = 0;
|
||||||
|
+ // Clutter doesn't yet fully support invisible parents with forced
|
||||||
|
+ // visible children and will make everything invisible (flicker) on
|
||||||
|
+ // the first frame if we start at 0. So we start at 1 instead...
|
||||||
|
+ this.opacity = 1;
|
||||||
|
+ this._logoBin.set_opacity_override(255);
|
||||||
|
|
||||||
|
this._grab = Main.pushModal(global.stage, { actionMode: Shell.ActionMode.LOGIN_SCREEN });
|
||||||
|
|
||||||
|
@@ -1268,6 +1272,7 @@ var LoginDialog = GObject.registerClass({
|
||||||
|
opacity: 255,
|
||||||
|
duration: 1000,
|
||||||
|
mode: Clutter.AnimationMode.EASE_IN_QUAD,
|
||||||
|
+ onComplete: () => { this._logoBin.set_opacity_override(-1); },
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
@ -0,0 +1,34 @@
|
|||||||
|
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||||
|
Date: Wed, 31 Mar 2021 17:59:09 +0800
|
||||||
|
Subject: layout: Try to allocate before getting size of tracked actors
|
||||||
|
|
||||||
|
Because we're about to `get_transformed_{position,size}` of each,
|
||||||
|
which will return NaNs if not yet allocated. Those NaNs were finding
|
||||||
|
their way into the workspace strut definitions on startup and not
|
||||||
|
getting corrected until after the startup animation completed. This
|
||||||
|
meant any extensions depending on the `workareas-changed` signal were
|
||||||
|
getting an incorrect workarea (the whole workspace) and so were
|
||||||
|
rendered out of place during the login animation. Now they're not.
|
||||||
|
|
||||||
|
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||||
|
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1785
|
||||||
|
Bug-Ubuntu: https://launchpad.net/bugs/1917939, https://launchpad.net/bugs/1919979
|
||||||
|
Bug-GNOME: https://gitlab.gnome.org/GNOME/mutter/-/issues/1627
|
||||||
|
Forwarded: yes
|
||||||
|
Last-Update: 2021-04-07
|
||||||
|
---
|
||||||
|
js/ui/layout.js | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/layout.js b/js/ui/layout.js
|
||||||
|
index 0b11d24..42c7a36 100644
|
||||||
|
--- a/js/ui/layout.js
|
||||||
|
+++ b/js/ui/layout.js
|
||||||
|
@@ -1026,6 +1026,7 @@ var LayoutManager = GObject.registerClass({
|
||||||
|
if (!(actorData.affectsInputRegion && wantsInputRegion) && !actorData.affectsStruts)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
+ actorData.actor.get_allocation_box();
|
||||||
|
let [x, y] = actorData.actor.get_transformed_position();
|
||||||
|
let [w, h] = actorData.actor.get_transformed_size();
|
||||||
|
x = Math.round(x);
|
@ -0,0 +1,93 @@
|
|||||||
|
From: Tim Lunn <tim@feathertop.org>
|
||||||
|
Date: Tue, 9 Oct 2012 11:18:28 +0200
|
||||||
|
Subject: [PATCH] userMenu: allow user switching when using lightdm
|
||||||
|
|
||||||
|
When running lightdm and gnome-shell, its currently not possible to
|
||||||
|
switch users via the usermenu. This commit adds a dbus call to
|
||||||
|
switch to the lightdm greeter.
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=685794
|
||||||
|
---
|
||||||
|
js/misc/systemActions.js | 47 ++++++++++++++++++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 40 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js
|
||||||
|
index c57afe5..e4b301f 100644
|
||||||
|
--- a/js/misc/systemActions.js
|
||||||
|
+++ b/js/misc/systemActions.js
|
||||||
|
@@ -224,6 +224,34 @@ const SystemActions = GObject.registerClass({
|
||||||
|
return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _lightdmLoginSession() {
|
||||||
|
+ try {
|
||||||
|
+ let seat = GLib.getenv("XDG_SEAT_PATH");
|
||||||
|
+ let result = Gio.DBus.system.call_sync('org.freedesktop.DisplayManager',
|
||||||
|
+ seat,
|
||||||
|
+ 'org.freedesktop.DisplayManager.Seat',
|
||||||
|
+ 'SwitchToGreeter', null, null,
|
||||||
|
+ Gio.DBusCallFlags.NONE,
|
||||||
|
+ -1, null);
|
||||||
|
+ return result;
|
||||||
|
+ } catch(e) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _sensorProxyAppeared() {
|
||||||
|
+ this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH,
|
||||||
|
+ (proxy, error) => {
|
||||||
|
+ if (error) {
|
||||||
|
+ log(error.message);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ this._sensorProxy.connect('g-properties-changed',
|
||||||
|
+ () => { this._updateOrientationLock(); });
|
||||||
|
+ this._updateOrientationLock();
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
_updateOrientationLock() {
|
||||||
|
const available = this._monitorManager.get_panel_orientation_managed();
|
||||||
|
|
||||||
|
@@ -325,7 +353,7 @@ const SystemActions = GObject.registerClass({
|
||||||
|
_updateLockScreen() {
|
||||||
|
let showLock = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
|
||||||
|
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
||||||
|
- this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen && LoginManager.canLock();
|
||||||
|
+ this._actions.get(LOCK_SCREEN_ACTION_ID).available = showLock && allowLockScreen;
|
||||||
|
this.notify('can-lock-screen');
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -413,20 +441,25 @@ const SystemActions = GObject.registerClass({
|
||||||
|
if (!this._actions.get(LOCK_SCREEN_ACTION_ID).available)
|
||||||
|
throw new Error('The lock-screen action is not available!');
|
||||||
|
|
||||||
|
- Main.screenShield.lock(true);
|
||||||
|
+ if (Main.screenShield)
|
||||||
|
+ Main.screenShield.lock(true);
|
||||||
|
+ else
|
||||||
|
+ this._lightdmLoginSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
activateSwitchUser() {
|
||||||
|
if (!this._actions.get(SWITCH_USER_ACTION_ID).available)
|
||||||
|
throw new Error('The switch-user action is not available!');
|
||||||
|
|
||||||
|
- if (Main.screenShield)
|
||||||
|
+ if (Main.screenShield) {
|
||||||
|
Main.screenShield.lock(false);
|
||||||
|
|
||||||
|
- Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, () => {
|
||||||
|
- Gdm.goto_login_session_sync(null);
|
||||||
|
- return false;
|
||||||
|
- });
|
||||||
|
+ Clutter.threads_add_repaint_func_full(Clutter.RepaintFlags.POST_PAINT, () => {
|
||||||
|
+ Gdm.goto_login_session_sync(null);
|
||||||
|
+ return false;
|
||||||
|
+ });
|
||||||
|
+ } else
|
||||||
|
+ this._lightdmLoginSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
activateLogout() {
|
48
gnome-shell-43.0/debian/patches/ubuntu/lock_on_suspend.patch
Normal file
48
gnome-shell-43.0/debian/patches/ubuntu/lock_on_suspend.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
From: Tim Lunn <tim@feathertop.org>
|
||||||
|
Date: Wed, 20 Jun 2018 19:22:06 +0200
|
||||||
|
Subject: add support for the ubuntu lock on suspend option
|
||||||
|
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1063110
|
||||||
|
---
|
||||||
|
js/ui/screenShield.js | 7 +++++--
|
||||||
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
|
||||||
|
index 325fbff..1cc5cb7 100644
|
||||||
|
--- a/js/ui/screenShield.js
|
||||||
|
+++ b/js/ui/screenShield.js
|
||||||
|
@@ -22,6 +22,7 @@ const { adjustAnimationTime } = imports.ui.environment;
|
||||||
|
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
||||||
|
const LOCK_ENABLED_KEY = 'lock-enabled';
|
||||||
|
const LOCK_DELAY_KEY = 'lock-delay';
|
||||||
|
+const SUSPEND_LOCK_ENABLED_KEY = 'ubuntu-lock-on-suspend';
|
||||||
|
|
||||||
|
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
||||||
|
const DISABLE_LOCK_KEY = 'disable-lock-screen';
|
||||||
|
@@ -110,6 +111,7 @@ var ScreenShield = class extends Signals.EventEmitter {
|
||||||
|
|
||||||
|
this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA });
|
||||||
|
this._settings.connect(`changed::${LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this));
|
||||||
|
+ this._settings.connect(`changed::${SUSPEND_LOCK_ENABLED_KEY}`, this._syncInhibitor.bind(this));
|
||||||
|
|
||||||
|
this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
|
||||||
|
this._lockSettings.connect(`changed::${DISABLE_LOCK_KEY}`, this._syncInhibitor.bind(this));
|
||||||
|
@@ -215,7 +217,8 @@ var ScreenShield = class extends Signals.EventEmitter {
|
||||||
|
}
|
||||||
|
|
||||||
|
async _syncInhibitor() {
|
||||||
|
- const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY);
|
||||||
|
+ const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY) ||
|
||||||
|
+ this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY);
|
||||||
|
const lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY);
|
||||||
|
const inhibit = !!this._loginSession && this._loginSession.Active &&
|
||||||
|
!this._isActive && lockEnabled && !lockLocked &&
|
||||||
|
@@ -246,7 +249,7 @@ var ScreenShield = class extends Signals.EventEmitter {
|
||||||
|
|
||||||
|
_prepareForSleep(loginManager, aboutToSuspend) {
|
||||||
|
if (aboutToSuspend) {
|
||||||
|
- if (this._settings.get_boolean(LOCK_ENABLED_KEY))
|
||||||
|
+ if (this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY))
|
||||||
|
this.lock(true);
|
||||||
|
} else {
|
||||||
|
this._wakeUpScreen();
|
@ -0,0 +1,70 @@
|
|||||||
|
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||||
|
Date: Tue, 5 Oct 2021 04:39:09 +0200
|
||||||
|
Subject: main: Avoid meta and gjs finalization
|
||||||
|
|
||||||
|
This is a workaround to maintain a clean environment for gnome-shell
|
||||||
|
and particularly JavaScript/GJS to shutdown without crashing.
|
||||||
|
|
||||||
|
The main cause of shutdown crashes is _shell_global_destroy_gjs_context
|
||||||
|
needing Clutter/Cogl resources to clean up, when those resources have
|
||||||
|
already been destroyed by meta_finalize in meta_run. So by never calling
|
||||||
|
meta_finalize via meta_run, we can simply avoid all those ordering
|
||||||
|
conflicts that cause so many crashes.
|
||||||
|
|
||||||
|
https://launchpad.net/bugs/1936826 verified fixed
|
||||||
|
https://launchpad.net/bugs/1942031 verified fixed
|
||||||
|
https://launchpad.net/bugs/1942121 verified fixed
|
||||||
|
https://launchpad.net/bugs/1943406 expected fixed
|
||||||
|
https://launchpad.net/bugs/1944054 expected fixed
|
||||||
|
https://launchpad.net/bugs/1945010 expected fixed
|
||||||
|
https://launchpad.net/bugs/1945116 expected fixed
|
||||||
|
https://launchpad.net/bugs/1944388 expected fixed
|
||||||
|
https://launchpad.net/bugs/1964458 expected fixed
|
||||||
|
|
||||||
|
Proper fixes will eventually come upstream when these are finished or
|
||||||
|
replaced by something else:
|
||||||
|
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1759
|
||||||
|
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/648
|
||||||
|
|
||||||
|
Given that, and upstream's usual preference for proper permanent fixes,
|
||||||
|
this will not be forwarded.
|
||||||
|
|
||||||
|
Bug-Ubuntu: https://launchpad.net/bugs/1936826,
|
||||||
|
https://launchpad.net/bugs/1942031,
|
||||||
|
https://launchpad.net/bugs/1942121,
|
||||||
|
https://launchpad.net/bugs/1943406,
|
||||||
|
https://launchpad.net/bugs/1944054,
|
||||||
|
https://launchpad.net/bugs/1945010,
|
||||||
|
https://launchpad.net/bugs/1945116,
|
||||||
|
https://launchpad.net/bugs/1944388,
|
||||||
|
https://launchpad.net/bugs/1964458
|
||||||
|
Forwarded: no
|
||||||
|
Last-Update: 2022-03-25
|
||||||
|
---
|
||||||
|
src/main.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/main.c b/src/main.c
|
||||||
|
index 6604fde..77b035c 100644
|
||||||
|
--- a/src/main.c
|
||||||
|
+++ b/src/main.c
|
||||||
|
@@ -668,11 +668,17 @@ main (int argc, char **argv)
|
||||||
|
ecode = EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- meta_context_destroy (g_steal_pointer (&context));
|
||||||
|
+ // FIXME: We're leaking context here, but that's to prevent LP: #1936826
|
||||||
|
+ g_steal_pointer (&context);
|
||||||
|
|
||||||
|
shell_profiler_shutdown ();
|
||||||
|
|
||||||
|
g_debug ("Doing final cleanup");
|
||||||
|
+
|
||||||
|
+ // Workaround live session crashes by leaking JS contexts (LP: #1964458)
|
||||||
|
+ if (g_strcmp0 (shell_global_get_session_mode (shell_global_get ()), "ubiquity") == 0)
|
||||||
|
+ return ecode;
|
||||||
|
+
|
||||||
|
_shell_global_destroy_gjs_context (shell_global_get ());
|
||||||
|
g_object_unref (shell_global_get ());
|
||||||
|
|
@ -0,0 +1,352 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Fri, 25 Feb 2022 01:07:12 +0100
|
||||||
|
Subject: main: Support loading multiple Yaru theme variants
|
||||||
|
|
||||||
|
Yaru can provide multiple variants, we can support using more theme
|
||||||
|
variants in GNOME shell as it happens on Gtk apps.
|
||||||
|
|
||||||
|
So, make StSettings to compute the main theme and the chosen variant,
|
||||||
|
and we use those to pick the correct .css file.
|
||||||
|
|
||||||
|
We don't make difference between dark/light themes here, as we assume
|
||||||
|
that the shell theme will always be dark or light.
|
||||||
|
|
||||||
|
Forwarded: not-needed
|
||||||
|
---
|
||||||
|
data/meson.build | 8 +-
|
||||||
|
data/org.gnome.shell.ubuntu.gschema.xml.in | 17 +++++
|
||||||
|
js/ui/main.js | 42 +++++++++++
|
||||||
|
src/st/meson.build | 1 +
|
||||||
|
src/st/st-settings.c | 114 +++++++++++++++++++++++++++++
|
||||||
|
5 files changed, 181 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 data/org.gnome.shell.ubuntu.gschema.xml.in
|
||||||
|
|
||||||
|
diff --git a/data/meson.build b/data/meson.build
|
||||||
|
index 22d6665..e16d108 100644
|
||||||
|
--- a/data/meson.build
|
||||||
|
+++ b/data/meson.build
|
||||||
|
@@ -95,6 +95,12 @@ schema = configure_file(
|
||||||
|
configuration: schemaconf,
|
||||||
|
install_dir: schemadir
|
||||||
|
)
|
||||||
|
+schema_ubuntu = configure_file(
|
||||||
|
+ input: 'org.gnome.shell.ubuntu.gschema.xml.in',
|
||||||
|
+ output: 'org.gnome.shell.ubuntu.gschema.xml',
|
||||||
|
+ configuration: schemaconf,
|
||||||
|
+ install_dir: schemadir
|
||||||
|
+)
|
||||||
|
schema_ubuntu_login = configure_file(
|
||||||
|
input: 'com.ubuntu.login-screen.gschema.xml.in',
|
||||||
|
output: 'com.ubuntu.login-screen.gschema.xml',
|
||||||
|
@@ -138,7 +144,7 @@ endif
|
||||||
|
|
||||||
|
# for unit tests - gnome.compile_schemas() only looks in srcdir
|
||||||
|
custom_target('compile-schemas',
|
||||||
|
- input: [schema, chema_ubuntu_login],
|
||||||
|
+ input: [schema, schema_ubuntu, schema_ubuntu_login],
|
||||||
|
output: 'gschemas.compiled',
|
||||||
|
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
|
||||||
|
build_by_default: true)
|
||||||
|
diff --git a/data/org.gnome.shell.ubuntu.gschema.xml.in b/data/org.gnome.shell.ubuntu.gschema.xml.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..6f9cc62
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/data/org.gnome.shell.ubuntu.gschema.xml.in
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
+<schemalist gettext-domain="@GETTEXT_PACKAGE@">
|
||||||
|
+ <enum id="org.gnome.shell.ubuntu.GDesktopColorScheme">
|
||||||
|
+ <value value="1" nick="default"/>
|
||||||
|
+ <value value="2" nick="prefer-dark"/>
|
||||||
|
+ <value value="3" nick="prefer-light"/>
|
||||||
|
+ </enum>
|
||||||
|
+ <schema id="org.gnome.shell.ubuntu" path="/org/gnome/shell/ubuntu/">
|
||||||
|
+ <key name="color-scheme" enum="org.gnome.shell.ubuntu.GDesktopColorScheme">
|
||||||
|
+ <default>'default'</default>
|
||||||
|
+ <summary>Color scheme</summary>
|
||||||
|
+ <description>
|
||||||
|
+ The preferred color scheme for the shell user interface. Valid values are “default”, “prefer-dark”, “prefer-light”.
|
||||||
|
+ </description>
|
||||||
|
+ </key>
|
||||||
|
+ </schema>
|
||||||
|
+</schemalist>
|
||||||
|
diff --git a/js/ui/main.js b/js/ui/main.js
|
||||||
|
index 33f62be..60969fd 100644
|
||||||
|
--- a/js/ui/main.js
|
||||||
|
+++ b/js/ui/main.js
|
||||||
|
@@ -186,6 +186,9 @@ function start() {
|
||||||
|
sessionMode.connect('updated', _sessionUpdated);
|
||||||
|
|
||||||
|
St.Settings.get().connect('notify::high-contrast', _loadDefaultStylesheet);
|
||||||
|
+ St.Settings.get().connect('notify::gtk-theme', _loadDefaultStylesheet);
|
||||||
|
+ St.Settings.get().connect('notify::gtk-theme-variant', _loadDefaultStylesheet);
|
||||||
|
+ St.Settings.get().connect('notify::shell-color-scheme', _loadDefaultStylesheet);
|
||||||
|
|
||||||
|
// Initialize ParentalControlsManager before the UI
|
||||||
|
ParentalControlsManager.getDefault();
|
||||||
|
@@ -423,6 +426,38 @@ function _getStylesheet(name) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
+function _getYaruStyleSheet(themeVariant) {
|
||||||
|
+ const { shellColorScheme: colorScheme } = St.Settings.get();
|
||||||
|
+ const baseThemeName = sessionMode.stylesheetName.split(".css").at(0);
|
||||||
|
+ const isDark = themeVariant === 'dark' || themeVariant?.endsWith('-dark');
|
||||||
|
+ let colorSchemeVariant;
|
||||||
|
+
|
||||||
|
+ if (isDark && colorScheme == 'prefer-light') {
|
||||||
|
+ colorSchemeVariant = themeVariant.split('-').slice(0, -1).join('-');
|
||||||
|
+ } else if (!isDark && colorScheme == 'prefer-dark' ) {
|
||||||
|
+ colorSchemeVariant = themeVariant ? `${themeVariant}-dark` : 'dark';
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (colorSchemeVariant !== undefined) {
|
||||||
|
+ if (colorSchemeVariant.length)
|
||||||
|
+ colorSchemeVariant = `-${colorSchemeVariant}`;
|
||||||
|
+ const stylesheet = _getStylesheet(`${baseThemeName}${colorSchemeVariant}.css`);
|
||||||
|
+ if (stylesheet)
|
||||||
|
+ return stylesheet;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!themeVariant)
|
||||||
|
+ return null;
|
||||||
|
+
|
||||||
|
+ const stylesheet = _getStylesheet(`${baseThemeName}-${themeVariant}.css`);
|
||||||
|
+
|
||||||
|
+ // Try to use the dark theme if a dark variant is selected
|
||||||
|
+ if (!stylesheet && isDark)
|
||||||
|
+ return _getStylesheet(`${baseThemeName}-dark.css`);
|
||||||
|
+
|
||||||
|
+ return stylesheet;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
function _getDefaultStylesheet() {
|
||||||
|
let stylesheet = null;
|
||||||
|
let name = sessionMode.stylesheetName;
|
||||||
|
@@ -431,6 +466,13 @@ function _getDefaultStylesheet() {
|
||||||
|
if (St.Settings.get().high_contrast)
|
||||||
|
stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css'));
|
||||||
|
|
||||||
|
+ if (stylesheet == null) {
|
||||||
|
+ const settings = St.Settings.get();
|
||||||
|
+
|
||||||
|
+ if (settings.gtkTheme === 'Yaru')
|
||||||
|
+ stylesheet = _getYaruStyleSheet(settings.gtkThemeVariant?.toLowerCase());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (stylesheet == null)
|
||||||
|
stylesheet = _getStylesheet(sessionMode.stylesheetName);
|
||||||
|
|
||||||
|
diff --git a/src/st/meson.build b/src/st/meson.build
|
||||||
|
index 717aa05..03a5978 100644
|
||||||
|
--- a/src/st/meson.build
|
||||||
|
+++ b/src/st/meson.build
|
||||||
|
@@ -202,6 +202,7 @@ if get_option('tests')
|
||||||
|
)
|
||||||
|
|
||||||
|
test('CSS styling support', test_theme,
|
||||||
|
+ env: ['GSETTINGS_SCHEMA_DIR=' + meson.project_build_root() / 'data' ],
|
||||||
|
workdir: meson.current_source_dir()
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
diff --git a/src/st/st-settings.c b/src/st/st-settings.c
|
||||||
|
index 04bf68f..a5f584d 100644
|
||||||
|
--- a/src/st/st-settings.c
|
||||||
|
+++ b/src/st/st-settings.c
|
||||||
|
@@ -33,6 +33,7 @@
|
||||||
|
#define KEY_FONT_NAME "font-name"
|
||||||
|
#define KEY_HIGH_CONTRAST "high-contrast"
|
||||||
|
#define KEY_GTK_ICON_THEME "icon-theme"
|
||||||
|
+#define KEY_GTK_THEME "gtk-theme"
|
||||||
|
#define KEY_MAGNIFIER_ACTIVE "screen-magnifier-enabled"
|
||||||
|
#define KEY_DISABLE_SHOW_PASSWORD "disable-show-password"
|
||||||
|
|
||||||
|
@@ -43,7 +44,10 @@ enum {
|
||||||
|
PROP_DRAG_THRESHOLD,
|
||||||
|
PROP_FONT_NAME,
|
||||||
|
PROP_HIGH_CONTRAST,
|
||||||
|
+ PROP_GTK_THEME,
|
||||||
|
+ PROP_GTK_THEME_VARIANT,
|
||||||
|
PROP_GTK_ICON_THEME,
|
||||||
|
+ PROP_SHELL_COLOR_SCHEME,
|
||||||
|
PROP_MAGNIFIER_ACTIVE,
|
||||||
|
PROP_SLOW_DOWN_FACTOR,
|
||||||
|
PROP_DISABLE_SHOW_PASSWORD,
|
||||||
|
@@ -60,10 +64,13 @@ struct _StSettings
|
||||||
|
GSettings *a11y_applications_settings;
|
||||||
|
GSettings *a11y_interface_settings;
|
||||||
|
GSettings *lockdown_settings;
|
||||||
|
+ GSettings *ubuntu_settings;
|
||||||
|
|
||||||
|
gchar *font_name;
|
||||||
|
gboolean high_contrast;
|
||||||
|
gchar *gtk_icon_theme;
|
||||||
|
+ gchar *gtk_theme;
|
||||||
|
+ gchar *gtk_theme_variant;
|
||||||
|
int inhibit_animations_count;
|
||||||
|
gboolean enable_animations;
|
||||||
|
gboolean primary_paste;
|
||||||
|
@@ -133,7 +140,10 @@ st_settings_finalize (GObject *object)
|
||||||
|
g_object_unref (settings->a11y_applications_settings);
|
||||||
|
g_object_unref (settings->a11y_interface_settings);
|
||||||
|
g_object_unref (settings->lockdown_settings);
|
||||||
|
+ g_object_unref (settings->ubuntu_settings);
|
||||||
|
g_free (settings->font_name);
|
||||||
|
+ g_free (settings->gtk_theme);
|
||||||
|
+ g_free (settings->gtk_theme_variant);
|
||||||
|
g_free (settings->gtk_icon_theme);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (st_settings_parent_class)->finalize (object);
|
||||||
|
@@ -185,6 +195,16 @@ st_settings_get_property (GObject *object,
|
||||||
|
case PROP_GTK_ICON_THEME:
|
||||||
|
g_value_set_string (value, settings->gtk_icon_theme);
|
||||||
|
break;
|
||||||
|
+ case PROP_GTK_THEME:
|
||||||
|
+ g_value_set_string (value, settings->gtk_theme);
|
||||||
|
+ break;
|
||||||
|
+ case PROP_GTK_THEME_VARIANT:
|
||||||
|
+ g_value_set_string (value, settings->gtk_theme_variant);
|
||||||
|
+ break;
|
||||||
|
+ case PROP_SHELL_COLOR_SCHEME:
|
||||||
|
+ g_value_take_string (value,
|
||||||
|
+ g_settings_get_string (settings->ubuntu_settings, "color-scheme"));
|
||||||
|
+ break;
|
||||||
|
case PROP_MAGNIFIER_ACTIVE:
|
||||||
|
g_value_set_boolean (value, settings->magnifier_active);
|
||||||
|
break;
|
||||||
|
@@ -275,6 +295,39 @@ st_settings_class_init (StSettingsClass *klass)
|
||||||
|
"",
|
||||||
|
ST_PARAM_READABLE);
|
||||||
|
|
||||||
|
+ /**
|
||||||
|
+ * StSettings:gtk-theme:
|
||||||
|
+ *
|
||||||
|
+ * The current GTK theme
|
||||||
|
+ */
|
||||||
|
+ props[PROP_GTK_THEME] = g_param_spec_string ("gtk-theme",
|
||||||
|
+ "GTK Theme",
|
||||||
|
+ "GTK Theme",
|
||||||
|
+ "",
|
||||||
|
+ ST_PARAM_READABLE);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * StSettings:gtk-theme-variant:
|
||||||
|
+ *
|
||||||
|
+ * The current GTK theme
|
||||||
|
+ */
|
||||||
|
+ props[PROP_GTK_THEME_VARIANT] = g_param_spec_string ("gtk-theme-variant",
|
||||||
|
+ "GTK Theme Variant",
|
||||||
|
+ "GTK Theme Variant",
|
||||||
|
+ "",
|
||||||
|
+ ST_PARAM_READABLE);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * StSettings:shell-color-scheme:
|
||||||
|
+ *
|
||||||
|
+ * The current GTK theme
|
||||||
|
+ */
|
||||||
|
+ props[PROP_SHELL_COLOR_SCHEME] = g_param_spec_string ("shell-color-scheme",
|
||||||
|
+ "Shell Color Scheme",
|
||||||
|
+ "Shell Color Scheme",
|
||||||
|
+ "default",
|
||||||
|
+ ST_PARAM_READABLE);
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* StSettings:magnifier-active:
|
||||||
|
*
|
||||||
|
@@ -311,6 +364,45 @@ st_settings_class_init (StSettingsClass *klass)
|
||||||
|
g_object_class_install_properties (object_class, N_PROPS, props);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+update_theme_settings (StSettings *settings)
|
||||||
|
+{
|
||||||
|
+ g_auto(GStrv) parts = NULL;
|
||||||
|
+ g_autofree char *theme = NULL;
|
||||||
|
+ g_autofree char *variant = NULL;
|
||||||
|
+
|
||||||
|
+ theme = g_settings_get_string (settings->interface_settings, KEY_GTK_THEME);
|
||||||
|
+ parts = g_strsplit (theme, "-", 2);
|
||||||
|
+
|
||||||
|
+ switch (g_strv_length (parts))
|
||||||
|
+ {
|
||||||
|
+ case 2:
|
||||||
|
+ variant = g_strdup (parts[1]);
|
||||||
|
+ /* fallthrough */
|
||||||
|
+ case 1:
|
||||||
|
+ theme = g_strdup (parts[0]);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (g_strcmp0 (settings->gtk_theme, theme) != 0)
|
||||||
|
+ {
|
||||||
|
+ g_free (settings->gtk_theme);
|
||||||
|
+ settings->gtk_theme = g_steal_pointer (&theme);
|
||||||
|
+
|
||||||
|
+ g_object_notify_by_pspec (G_OBJECT (settings),
|
||||||
|
+ props[PROP_GTK_THEME]);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (g_strcmp0 (settings->gtk_theme_variant, variant) != 0)
|
||||||
|
+ {
|
||||||
|
+ g_free (settings->gtk_theme_variant);
|
||||||
|
+ settings->gtk_theme_variant = g_steal_pointer (&variant);
|
||||||
|
+
|
||||||
|
+ g_object_notify_by_pspec (G_OBJECT (settings),
|
||||||
|
+ props[PROP_GTK_THEME_VARIANT]);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
on_interface_settings_changed (GSettings *g_settings,
|
||||||
|
const gchar *key,
|
||||||
|
@@ -332,6 +424,10 @@ on_interface_settings_changed (GSettings *g_settings,
|
||||||
|
settings->font_name = g_settings_get_string (g_settings, key);
|
||||||
|
g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_FONT_NAME]);
|
||||||
|
}
|
||||||
|
+ else if (g_str_equal (key, KEY_GTK_THEME))
|
||||||
|
+ {
|
||||||
|
+ update_theme_settings (settings);
|
||||||
|
+ }
|
||||||
|
else if (g_str_equal (key, KEY_GTK_ICON_THEME))
|
||||||
|
{
|
||||||
|
g_free (settings->gtk_icon_theme);
|
||||||
|
@@ -341,6 +437,18 @@ on_interface_settings_changed (GSettings *g_settings,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+on_ubuntu_settings_changed (GSettings *g_settings,
|
||||||
|
+ const gchar *key,
|
||||||
|
+ StSettings *settings)
|
||||||
|
+{
|
||||||
|
+ if (g_str_equal (key, "color-scheme"))
|
||||||
|
+ {
|
||||||
|
+ g_object_notify_by_pspec (G_OBJECT (settings),
|
||||||
|
+ props[PROP_SHELL_COLOR_SCHEME]);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
on_mouse_settings_changed (GSettings *g_settings,
|
||||||
|
const gchar *key,
|
||||||
|
@@ -398,6 +506,10 @@ st_settings_init (StSettings *settings)
|
||||||
|
g_signal_connect (settings->interface_settings, "changed",
|
||||||
|
G_CALLBACK (on_interface_settings_changed), settings);
|
||||||
|
|
||||||
|
+ settings->ubuntu_settings = g_settings_new ("org.gnome.shell.ubuntu");
|
||||||
|
+ g_signal_connect (settings->ubuntu_settings, "changed",
|
||||||
|
+ G_CALLBACK (on_ubuntu_settings_changed), settings);
|
||||||
|
+
|
||||||
|
settings->mouse_settings = g_settings_new ("org.gnome.desktop.peripherals.mouse");
|
||||||
|
g_signal_connect (settings->mouse_settings, "changed",
|
||||||
|
G_CALLBACK (on_mouse_settings_changed), settings);
|
||||||
|
@@ -414,6 +526,8 @@ st_settings_init (StSettings *settings)
|
||||||
|
g_signal_connect (settings->lockdown_settings, "changed",
|
||||||
|
G_CALLBACK (on_lockdown_settings_changed), settings);
|
||||||
|
|
||||||
|
+ update_theme_settings (settings);
|
||||||
|
+
|
||||||
|
settings->enable_animations = g_settings_get_boolean (settings->interface_settings,
|
||||||
|
KEY_ENABLE_ANIMATIONS);
|
||||||
|
settings->primary_paste = g_settings_get_boolean (settings->interface_settings,
|
@ -0,0 +1,50 @@
|
|||||||
|
From: Didier Roche <didrocks@ubuntu.com>
|
||||||
|
Date: Tue, 22 Oct 2019 11:22:06 +0200
|
||||||
|
Subject: Resolve real path name for theme file
|
||||||
|
|
||||||
|
We are using alternative theme paths. Some of them are symlinks like
|
||||||
|
gdm3.css. It points to a different directory and we need to ensure
|
||||||
|
assets are loaded from the real theme path then (assets path are
|
||||||
|
relative to it).
|
||||||
|
Resolve them symlinks to ensure we use the original file itself when
|
||||||
|
loading the stylesheet.
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1798747
|
||||||
|
Forwarded: Not-needed (upstream doesn't support officially theming)
|
||||||
|
---
|
||||||
|
js/ui/main.js | 12 ++++++++++--
|
||||||
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/main.js b/js/ui/main.js
|
||||||
|
index fc5ae80..3bb9b8f 100644
|
||||||
|
--- a/js/ui/main.js
|
||||||
|
+++ b/js/ui/main.js
|
||||||
|
@@ -393,6 +393,14 @@ async function _handleLockScreenWarning() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+function _realpath(path) {
|
||||||
|
+ try {
|
||||||
|
+ while (GLib.file_test(path, GLib.FileTest.IS_SYMLINK))
|
||||||
|
+ path = GLib.file_read_link(path);
|
||||||
|
+ } catch (e) { }
|
||||||
|
+ return path;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
function _getStylesheet(name) {
|
||||||
|
let stylesheet;
|
||||||
|
|
||||||
|
@@ -403,12 +411,12 @@ function _getStylesheet(name) {
|
||||||
|
let dataDirs = GLib.get_system_data_dirs();
|
||||||
|
for (let i = 0; i < dataDirs.length; i++) {
|
||||||
|
let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'theme', name]);
|
||||||
|
- stylesheet = Gio.file_new_for_path(path);
|
||||||
|
+ stylesheet = Gio.file_new_for_path(_realpath(path));
|
||||||
|
if (stylesheet.query_exists(null))
|
||||||
|
return stylesheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
- stylesheet = Gio.File.new_for_path(`${global.datadir}/theme/${name}`);
|
||||||
|
+ stylesheet = Gio.File.new_for_path(_realpath(`${global.datadir}/theme/${name}`));
|
||||||
|
if (stylesheet.query_exists(null))
|
||||||
|
return stylesheet;
|
||||||
|
|
@ -0,0 +1,163 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Thu, 23 Aug 2018 20:00:57 +0200
|
||||||
|
Subject: search: call XUbuntuCancel method on providers when no data is
|
||||||
|
needed
|
||||||
|
|
||||||
|
Add XUbuntuCancel method to search providers and call it when a search provider
|
||||||
|
is still doing operations.
|
||||||
|
Ignore the result when the method does not exist or is cancelled.
|
||||||
|
|
||||||
|
This will allow to stop operations on providers.
|
||||||
|
|
||||||
|
Fixes LP: #1756826
|
||||||
|
|
||||||
|
Bug-GNOME: https://gitlab.gnome.org/GNOME/gnome-shell/issues/183
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/bionic/+source/gnome-shell/+bug/1756826
|
||||||
|
Forwarded: not-needed
|
||||||
|
---
|
||||||
|
.../org.gnome.ShellSearchProvider.xml | 6 ++++
|
||||||
|
.../org.gnome.ShellSearchProvider2.xml | 6 ++++
|
||||||
|
js/ui/remoteSearch.js | 12 ++++++++
|
||||||
|
js/ui/search.js | 33 ++++++++++++++++++++++
|
||||||
|
4 files changed, 57 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml b/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml
|
||||||
|
index 78ad305..393cb01 100644
|
||||||
|
--- a/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml
|
||||||
|
+++ b/data/dbus-interfaces/org.gnome.ShellSearchProvider.xml
|
||||||
|
@@ -69,5 +69,11 @@
|
||||||
|
<method name="ActivateResult">
|
||||||
|
<arg type="s" name="identifier" direction="in" />
|
||||||
|
</method>
|
||||||
|
+
|
||||||
|
+ <!--
|
||||||
|
+ XUbuntuCancel:
|
||||||
|
+ Cancel the current search operation
|
||||||
|
+ -->
|
||||||
|
+ <method name="XUbuntuCancel" />
|
||||||
|
</interface>
|
||||||
|
</node>
|
||||||
|
diff --git a/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml b/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml
|
||||||
|
index 9502340..8141bc0 100644
|
||||||
|
--- a/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml
|
||||||
|
+++ b/data/dbus-interfaces/org.gnome.ShellSearchProvider2.xml
|
||||||
|
@@ -83,5 +83,11 @@
|
||||||
|
<arg type="as" name="terms" direction="in" />
|
||||||
|
<arg type="u" name="timestamp" direction="in" />
|
||||||
|
</method>
|
||||||
|
+
|
||||||
|
+ <!--
|
||||||
|
+ XUbuntuCancel:
|
||||||
|
+ Cancel the current search operation
|
||||||
|
+ -->
|
||||||
|
+ <method name="XUbuntuCancel" />
|
||||||
|
</interface>
|
||||||
|
</node>
|
||||||
|
diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js
|
||||||
|
index 87ee384..74f9c38 100644
|
||||||
|
--- a/js/ui/remoteSearch.js
|
||||||
|
+++ b/js/ui/remoteSearch.js
|
||||||
|
@@ -26,6 +26,7 @@ const SearchProviderIface = `
|
||||||
|
<method name="ActivateResult">
|
||||||
|
<arg type="s" direction="in" />
|
||||||
|
</method>
|
||||||
|
+<method name="XUbuntuCancel" />
|
||||||
|
</interface>
|
||||||
|
</node>`;
|
||||||
|
|
||||||
|
@@ -54,6 +55,7 @@ const SearchProvider2Iface = `
|
||||||
|
<arg type="as" direction="in" />
|
||||||
|
<arg type="u" direction="in" />
|
||||||
|
</method>
|
||||||
|
+<method name="XUbuntuCancel" />
|
||||||
|
</interface>
|
||||||
|
</node>`;
|
||||||
|
|
||||||
|
@@ -301,6 +303,16 @@ var RemoteSearchProvider = class {
|
||||||
|
return resultMetas;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ async XUbuntuCancel(cancellable) {
|
||||||
|
+ try {
|
||||||
|
+ await this.proxy.XUbuntuCancelAsync(cancellable);
|
||||||
|
+ } catch (error) {
|
||||||
|
+ if (!error.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD) &&
|
||||||
|
+ !error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
||||||
|
+ log(`Received error from D-Bus search provider ${this.id} during XUbuntuCancel: ${error}`);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
activateResult(id) {
|
||||||
|
this.proxy.ActivateResultAsync(id).catch(logError);
|
||||||
|
}
|
||||||
|
diff --git a/js/ui/search.js b/js/ui/search.js
|
||||||
|
index 71870a0..fc668fb 100644
|
||||||
|
--- a/js/ui/search.js
|
||||||
|
+++ b/js/ui/search.js
|
||||||
|
@@ -218,7 +218,9 @@ var SearchResultsBase = GObject.registerClass({
|
||||||
|
this._cancellable.cancel();
|
||||||
|
this._cancellable.reset();
|
||||||
|
|
||||||
|
+ this.provider.resultsMetasInProgress = true;
|
||||||
|
const metas = await this.provider.getResultMetas(metasNeeded, this._cancellable);
|
||||||
|
+ this.provider.resultsMetasInProgress = this._cancellable.is_cancelled();
|
||||||
|
|
||||||
|
if (this._cancellable.is_cancelled()) {
|
||||||
|
if (metas.length > 0)
|
||||||
|
@@ -588,6 +590,10 @@ var SearchResultsView = GObject.registerClass({
|
||||||
|
|
||||||
|
this._searchTimeoutId = 0;
|
||||||
|
this._cancellable = new Gio.Cancellable();
|
||||||
|
+ this._searchCancelCancellable = new Gio.Cancellable();
|
||||||
|
+ const cancellableCancelledId = this._cancellable.connect(() =>
|
||||||
|
+ this._cancelSearchProviderRequest());
|
||||||
|
+ this.connect('destroy', () => this._cancellable.disconnect(cancellableCancelledId));
|
||||||
|
|
||||||
|
this._registerProvider(new AppDisplay.AppSearchProvider());
|
||||||
|
|
||||||
|
@@ -636,11 +642,31 @@ var SearchResultsView = GObject.registerClass({
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ _cancelSearchProviderRequest() {
|
||||||
|
+ if (this._terms.length !== 0 || this._searchCancelTimeoutId)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ this._searchCancelTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
|
||||||
|
+ Promise.all(this._providers.map(async provider => {
|
||||||
|
+ if (provider.isRemoteProvider &&
|
||||||
|
+ (provider.searchInProgress || provider.resultsMetasInProgress)) {
|
||||||
|
+ await provider.XUbuntuCancel(this._searchCancelCancellable);
|
||||||
|
+ provider.searchInProgress = false;
|
||||||
|
+ provider.resultsMetasInProgress = false;
|
||||||
|
+ }
|
||||||
|
+ })).catch(logError);
|
||||||
|
+
|
||||||
|
+ delete this._searchCancelTimeoutId;
|
||||||
|
+ return GLib.SOURCE_REMOVE;
|
||||||
|
+ });
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
_reset() {
|
||||||
|
this._terms = [];
|
||||||
|
this._results = {};
|
||||||
|
this._clearDisplay();
|
||||||
|
this._clearSearchTimeout();
|
||||||
|
+ this._cancelSearchProviderRequest();
|
||||||
|
this._defaultResult = null;
|
||||||
|
this._startingSearch = false;
|
||||||
|
|
||||||
|
@@ -712,6 +738,13 @@ var SearchResultsView = GObject.registerClass({
|
||||||
|
if (this._terms.length > 0)
|
||||||
|
isSubSearch = searchString.indexOf(previousSearchString) == 0;
|
||||||
|
|
||||||
|
+ this._searchCancelCancellable.cancel();
|
||||||
|
+ this._searchCancelCancellable.reset();
|
||||||
|
+ if (this._searchCancelTimeoutId) {
|
||||||
|
+ GLib.source_remove(this._searchCancelTimeoutId);
|
||||||
|
+ delete this._searchCancelTimeoutId;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
this._terms = terms;
|
||||||
|
this._isSubSearch = isSubSearch;
|
||||||
|
this._updateSearchProgress();
|
@ -0,0 +1,89 @@
|
|||||||
|
From: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||||
|
Date: Wed, 20 Jun 2018 19:22:06 +0200
|
||||||
|
Subject: Don't allow ubuntu mode extension to update
|
||||||
|
|
||||||
|
Ensure that no update is proposed or loaded if sideloaded (always
|
||||||
|
prefer system version) on the ubuntu session.
|
||||||
|
We want to ensure that the default code running is going through
|
||||||
|
our QA and security team process than being loaded from a 3rd
|
||||||
|
party website.
|
||||||
|
Also, that will enable us to upload newer versions on GNOME
|
||||||
|
extension website while still letting older ubuntu release versions
|
||||||
|
running expected extension version.
|
||||||
|
Origin: ubuntu
|
||||||
|
Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=789852
|
||||||
|
---
|
||||||
|
js/ui/extensionDownloader.js | 11 +++++++++++
|
||||||
|
js/ui/extensionSystem.js | 9 +++++++++
|
||||||
|
2 files changed, 20 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js
|
||||||
|
index 94ba8fa..54b1105 100644
|
||||||
|
--- a/js/ui/extensionDownloader.js
|
||||||
|
+++ b/js/ui/extensionDownloader.js
|
||||||
|
@@ -4,6 +4,7 @@
|
||||||
|
const { Clutter, Gio, GLib, GObject, Soup } = imports.gi;
|
||||||
|
|
||||||
|
const Config = imports.misc.config;
|
||||||
|
+const Desktop = imports.misc.desktop;
|
||||||
|
const Dialog = imports.ui.dialog;
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const FileUtils = imports.misc.fileUtils;
|
||||||
|
@@ -32,6 +33,13 @@ async function installExtension(uuid, invocation) {
|
||||||
|
shell_version: Config.PACKAGE_VERSION,
|
||||||
|
};
|
||||||
|
|
||||||
|
+ if (Desktop.is('ubuntu') && Main.extensionManager.isModeExtension(uuid)) {
|
||||||
|
+ const msg = _("This is an extension enabled by your current mode, you can't install manually any update in that session.");
|
||||||
|
+ Main.notifyError(_("Can't install “%s”:").format(uuid), msg);
|
||||||
|
+ invocation.return_dbus_error('org.gnome.Shell.ExtensionError', msg);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
const message = Soup.Message.new_from_encoded_form('GET',
|
||||||
|
REPOSITORY_URL_INFO,
|
||||||
|
Soup.form_encode_hash(params));
|
||||||
|
@@ -161,6 +169,9 @@ async function checkForUpdates() {
|
||||||
|
return;
|
||||||
|
if (extension.hasUpdate)
|
||||||
|
return;
|
||||||
|
+ // don't updates out of repository mode extension
|
||||||
|
+ if (Desktop.is("ubuntu") && Main.extensionManager.isModeExtension(uuid))
|
||||||
|
+ return;
|
||||||
|
metadatas[uuid] = {
|
||||||
|
version: extension.metadata.version,
|
||||||
|
};
|
||||||
|
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
|
||||||
|
index c21cc7c..db47088 100644
|
||||||
|
--- a/js/ui/extensionSystem.js
|
||||||
|
+++ b/js/ui/extensionSystem.js
|
||||||
|
@@ -4,6 +4,7 @@
|
||||||
|
const { GLib, Gio, GObject, Shell, St } = imports.gi;
|
||||||
|
const Signals = imports.misc.signals;
|
||||||
|
|
||||||
|
+const Desktop = imports.misc.desktop;
|
||||||
|
const ExtensionDownloader = imports.ui.extensionDownloader;
|
||||||
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
const FileUtils = imports.misc.fileUtils;
|
||||||
|
@@ -434,6 +435,10 @@ var ExtensionManager = class extends Signals.EventEmitter {
|
||||||
|
this.loadExtension(newExtension);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ isModeExtension(uuid) {
|
||||||
|
+ return this._getModeExtensions().indexOf(uuid) !== -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
_callExtensionInit(uuid) {
|
||||||
|
if (!this._extensionSupportsSessionMode(uuid))
|
||||||
|
return false;
|
||||||
|
@@ -624,6 +629,10 @@ var ExtensionManager = class extends Signals.EventEmitter {
|
||||||
|
let type = dir.has_prefix(perUserDir)
|
||||||
|
? ExtensionType.PER_USER
|
||||||
|
: ExtensionType.SYSTEM;
|
||||||
|
+ if (Desktop.is("ubuntu") && this.isModeExtension(uuid) && type === ExtensionType.PER_USER) {
|
||||||
|
+ log(`Found user extension ${uuid}, but not loading from ${dir.get_path()} directory as part of session mode.`);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
try {
|
||||||
|
extension = this.createExtensionObject(uuid, dir, type);
|
||||||
|
} catch (e) {
|
@ -0,0 +1,38 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Thu, 24 Feb 2022 04:22:32 +0100
|
||||||
|
Subject: sessionMode: Add support for configuring an icons resource name
|
||||||
|
|
||||||
|
Similar to what we did (and upstreamed) for the theme, in this case
|
||||||
|
however there's very likely no interest from upstream for this.
|
||||||
|
|
||||||
|
Forwarded: not-needed
|
||||||
|
---
|
||||||
|
js/ui/main.js | 2 +-
|
||||||
|
js/ui/sessionMode.js | 1 +
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/js/ui/main.js b/js/ui/main.js
|
||||||
|
index 3bb9b8f..33f62be 100644
|
||||||
|
--- a/js/ui/main.js
|
||||||
|
+++ b/js/ui/main.js
|
||||||
|
@@ -480,7 +480,7 @@ function reloadThemeResource() {
|
||||||
|
|
||||||
|
/** @private */
|
||||||
|
function _loadIcons() {
|
||||||
|
- _iconResource = Gio.Resource.load(`${global.datadir}/gnome-shell-icons.gresource`);
|
||||||
|
+ _iconResource = Gio.Resource.load(`${global.datadir}/${sessionMode.iconsResourceName}`);
|
||||||
|
_iconResource._register();
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
|
||||||
|
index 053e678..bfcdf26 100644
|
||||||
|
--- a/js/ui/sessionMode.js
|
||||||
|
+++ b/js/ui/sessionMode.js
|
||||||
|
@@ -24,6 +24,7 @@ const _modes = {
|
||||||
|
parentMode: null,
|
||||||
|
stylesheetName: 'gnome-shell.css',
|
||||||
|
themeResourceName: 'gnome-shell-theme.gresource',
|
||||||
|
+ iconsResourceName: 'gnome-shell-icons.gresource',
|
||||||
|
hasOverview: false,
|
||||||
|
showCalendarEvents: false,
|
||||||
|
showWelcomeDialog: false,
|
39
gnome-shell-43.0/debian/rules
Executable file
39
gnome-shell-43.0/debian/rules
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
|
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||||
|
export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs
|
||||||
|
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@ --with bash_completion
|
||||||
|
|
||||||
|
CONFFLAGS =
|
||||||
|
|
||||||
|
ifeq ($(DEB_HOST_ARCH_OS),linux)
|
||||||
|
CONFFLAGS += \
|
||||||
|
-Dnetworkmanager=true \
|
||||||
|
-Dsoup2=false \
|
||||||
|
-Dsystemd=true
|
||||||
|
endif
|
||||||
|
|
||||||
|
CONFFLAGS += -Dtests=false
|
||||||
|
|
||||||
|
override_dh_auto_configure:
|
||||||
|
GSETTINGS_SCHEMA_DIR=/opt/mutter-vrr/share/glib-2.0/schemas/:$(GSETTINGS_SCHEMA_DIR) PKG_CONFIG_PATH=/opt/mutter-vrr/lib/x86_64-linux-gnu/pkgconfig:$(PKG_CONFIG_PATH) LD_LIBRARY_PATH=/opt/mutter-vrr/lib/x86_64-linux-gnu:/opt/mutter-vrr/lib/x86_64-linux-gnu/mutter-11:/opt/mutter-vrr/lib/x86_64-linux-gnu/mutter-11/plugins:$(LD_LIBRARY_PATH) PATH=/opt/mutter-vrr/bin:$(PATH) dh_auto_configure -- \
|
||||||
|
--prefix=/opt/mutter-vrr \
|
||||||
|
--libdir=lib \
|
||||||
|
-Dextensions-tool:bash_completion=enabled \
|
||||||
|
$(CONFFLAGS)
|
||||||
|
|
||||||
|
override_dh_install:
|
||||||
|
dh_install
|
||||||
|
rm -r debian/tmp/etc/xdg/autostart/gnome-shell-overrides-migration.desktop
|
||||||
|
|
||||||
|
override_dh_makeshlibs:
|
||||||
|
echo "dh_makeshlibs disabled!"
|
||||||
|
|
||||||
|
override_dh_shlibdeps:
|
||||||
|
echo "dh_shlibdeps disabled!"
|
||||||
|
|
||||||
|
override_dh_auto_test:
|
||||||
|
echo "dh_auto_test disabled!"
|
1
gnome-shell-43.0/debian/source/format
Normal file
1
gnome-shell-43.0/debian/source/format
Normal file
@ -0,0 +1 @@
|
|||||||
|
3.0 (quilt)
|
0
gnome-shell-43.0/debian/source/lintian-overrides
Normal file
0
gnome-shell-43.0/debian/source/lintian-overrides
Normal file
45
gnome-shell-43.0/debian/source_gnome-shell.py
Normal file
45
gnome-shell-43.0/debian/source_gnome-shell.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
from apport.hookutils import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
def is_process_running(proc):
|
||||||
|
'''
|
||||||
|
Determine if process has a registered process id
|
||||||
|
'''
|
||||||
|
log = command_output(['pidof', proc])
|
||||||
|
if not log or log[:5] == "Error" or len(log)<1:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def add_info(report):
|
||||||
|
attach_related_packages(report, ['mutter-common'])
|
||||||
|
|
||||||
|
attach_gsettings_package(report, 'gnome-shell-common')
|
||||||
|
attach_gsettings_package(report, 'gsettings-desktop-schemas')
|
||||||
|
attach_gsettings_package(report, 'mutter-common')
|
||||||
|
attach_gsettings_schema(report, 'org.gnome.settings-daemon.plugins.color')
|
||||||
|
attach_gsettings_schema(report, 'org.gnome.settings-daemon.peripherals.touchscreen')
|
||||||
|
|
||||||
|
try:
|
||||||
|
monitors = os.path.join(os.environ['XDG_CONFIG_HOME'], 'monitors.xml')
|
||||||
|
except KeyError:
|
||||||
|
monitors = os.path.expanduser('~/.config/monitors.xml')
|
||||||
|
|
||||||
|
attach_file_if_exists(report, monitors, 'monitors.xml')
|
||||||
|
|
||||||
|
result = ''
|
||||||
|
|
||||||
|
dm_list = apport.hookutils.command_output(['sh', '-c',
|
||||||
|
'apt-cache search \"display manager\" | cut -d \' \' -f1 | grep -E \"dm$|^gdm3?\\b\"'])
|
||||||
|
|
||||||
|
for line in dm_list.split('\n'):
|
||||||
|
if (is_process_running(line)):
|
||||||
|
result = line
|
||||||
|
break
|
||||||
|
|
||||||
|
report['DisplayManager'] = result
|
||||||
|
|
||||||
|
if command_available('journalctl') and os.path.exists('/run/systemd/system'):
|
||||||
|
report['ShellJournal'] = command_output(['journalctl',
|
||||||
|
'/usr/bin/gnome-shell',
|
||||||
|
'-b', '-o', 'short-monotonic',
|
||||||
|
'--lines', '3000'])
|
5
gnome-shell-43.0/debian/upstream/metadata
Normal file
5
gnome-shell-43.0/debian/upstream/metadata
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Bug-Database: https://gitlab.gnome.org/GNOME/gnome-shell/issues/
|
||||||
|
Bug-Submit: https://gitlab.gnome.org/GNOME/gnome-shell/issues/new
|
||||||
|
Name: GNOME Shell
|
||||||
|
Repository: https://gitlab.gnome.org/gnome/gnome-shell.git
|
||||||
|
Repository-Browse: https://gitlab.gnome.org/GNOME/gnome-shell/
|
4
gnome-shell-43.0/debian/watch
Normal file
4
gnome-shell-43.0/debian/watch
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
version=4
|
||||||
|
opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \
|
||||||
|
https://download.gnome.org/sources/@PACKAGE@/cache.json \
|
||||||
|
[\d.]+/@PACKAGE@-([\d.]+)@ARCHIVE_EXT@
|
3
orig.source.txt
Normal file
3
orig.source.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# gnome-shell_43.0.orig.tar.xz has been renamed to gnome-shell-vrr_43.0.orig.tar.xz but the contents are the same
|
||||||
|
gnome-shell-vrr_43.0.orig.tar.xz
|
||||||
|
#https://gitlab.gnome.org/GNOME/gnome-shell
|
Loading…
Reference in New Issue
Block a user