attempt to fix xwayland frac scale
Some checks failed
PikaOS Package Build & Release (Canary) (amd64-v3) / build (push) Has been cancelled
PikaOS Package Build Only (Canary) (amd64-v3) / build (push) Failing after 17s
PikaOS Package Build Only (amd64-v3) / build (push) Failing after 13s
PikaOS Package Build & Release (amd64-v3) / build (push) Failing after 13s
Some checks failed
PikaOS Package Build & Release (Canary) (amd64-v3) / build (push) Has been cancelled
PikaOS Package Build Only (Canary) (amd64-v3) / build (push) Failing after 17s
PikaOS Package Build Only (amd64-v3) / build (push) Failing after 13s
PikaOS Package Build & Release (amd64-v3) / build (push) Failing after 13s
This commit is contained in:
parent
b7d1e6bb91
commit
a1d3a8b37d
1
.github/build-canary-v3
vendored
Normal file
1
.github/build-canary-v3
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
1
.github/build-nest-v3
vendored
Normal file
1
.github/build-nest-v3
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
1
.github/release-canary-v3
vendored
Normal file
1
.github/release-canary-v3
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
1
.github/release-nest-v3
vendored
Normal file
1
.github/release-nest-v3
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
1
|
37
.github/workflows/build-canaryv3.yml
vendored
Normal file
37
.github/workflows/build-canaryv3.yml
vendored
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
name: PikaOS Package Build Only (Canary) (amd64-v3)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- '.github/build-canary-v3'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/pikaos-linux/pikaos-builder:canaryv3
|
||||||
|
volumes:
|
||||||
|
- /proc:/proc
|
||||||
|
options: --privileged -it
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install SSH key
|
||||||
|
uses: shimataro/ssh-key-action@v2
|
||||||
|
with:
|
||||||
|
key: ${{ secrets.SSH_KEY }}
|
||||||
|
name: id_rsa
|
||||||
|
known_hosts: ${{ secrets.KNOWN_HOSTS }}
|
||||||
|
if_key_exists: replace
|
||||||
|
|
||||||
|
- name: Update APT Cache
|
||||||
|
run: apt-get update -y
|
||||||
|
|
||||||
|
- name: Set Build Config
|
||||||
|
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
|
||||||
|
|
||||||
|
- name: Build Package
|
||||||
|
run: ./main.sh
|
37
.github/workflows/build-nestv3.yml
vendored
Normal file
37
.github/workflows/build-nestv3.yml
vendored
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
name: PikaOS Package Build Only (amd64-v3)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- '.github/build-nest-v3'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/pikaos-linux/pikaos-builder:nestv3
|
||||||
|
volumes:
|
||||||
|
- /proc:/proc
|
||||||
|
options: --privileged -it
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install SSH key
|
||||||
|
uses: shimataro/ssh-key-action@v2
|
||||||
|
with:
|
||||||
|
key: ${{ secrets.SSH_KEY }}
|
||||||
|
name: id_rsa
|
||||||
|
known_hosts: ${{ secrets.KNOWN_HOSTS }}
|
||||||
|
if_key_exists: replace
|
||||||
|
|
||||||
|
- name: Update APT Cache
|
||||||
|
run: apt-get update -y
|
||||||
|
|
||||||
|
- name: Set Build Config
|
||||||
|
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
|
||||||
|
|
||||||
|
- name: Build Package
|
||||||
|
run: ./main.sh
|
40
.github/workflows/release-canaryv3.yml
vendored
Normal file
40
.github/workflows/release-canaryv3.yml
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
name: PikaOS Package Build & Release (Canary) (amd64-v3)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- '.github/release-canary-v3'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/pikaos-linux/pikaos-builder:canaryv3
|
||||||
|
volumes:
|
||||||
|
- /proc:/proc
|
||||||
|
options: --privileged -it
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install SSH key
|
||||||
|
uses: shimataro/ssh-key-action@v2
|
||||||
|
with:
|
||||||
|
key: ${{ secrets.SSH_KEY }}
|
||||||
|
name: id_rsa
|
||||||
|
known_hosts: ${{ secrets.KNOWN_HOSTS }}
|
||||||
|
if_key_exists: replace
|
||||||
|
|
||||||
|
- name: Update APT Cache
|
||||||
|
run: apt-get update -y
|
||||||
|
|
||||||
|
- name: Set Build Config
|
||||||
|
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
|
||||||
|
|
||||||
|
- name: Build Package
|
||||||
|
run: ./main.sh
|
||||||
|
|
||||||
|
- name: Release Package
|
||||||
|
run: ./release.sh
|
40
.github/workflows/release-nestv3.yml
vendored
Normal file
40
.github/workflows/release-nestv3.yml
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
name: PikaOS Package Build & Release (amd64-v3)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- '.github/release-nest-v3'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/pikaos-linux/pikaos-builder:nestv3
|
||||||
|
volumes:
|
||||||
|
- /proc:/proc
|
||||||
|
options: --privileged -it
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install SSH key
|
||||||
|
uses: shimataro/ssh-key-action@v2
|
||||||
|
with:
|
||||||
|
key: ${{ secrets.SSH_KEY }}
|
||||||
|
name: id_rsa
|
||||||
|
known_hosts: ${{ secrets.KNOWN_HOSTS }}
|
||||||
|
if_key_exists: replace
|
||||||
|
|
||||||
|
- name: Update APT Cache
|
||||||
|
run: apt-get update -y
|
||||||
|
|
||||||
|
- name: Set Build Config
|
||||||
|
run: cp -vf ./pika-build-config/amd64-v3.sh ./pika-build-config.sh
|
||||||
|
|
||||||
|
- name: Build Package
|
||||||
|
run: ./main.sh
|
||||||
|
|
||||||
|
- name: Release Package
|
||||||
|
run: ./release.sh
|
49
.github/workflows/release.yml
vendored
49
.github/workflows/release.yml
vendored
@ -1,49 +0,0 @@
|
|||||||
name: PikaOS Package Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: self-hosted
|
|
||||||
container:
|
|
||||||
image: ghcr.io/pikaos-linux/pika-package-container:latest
|
|
||||||
volumes:
|
|
||||||
- /proc:/proc
|
|
||||||
options: --privileged -it
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Import GPG key
|
|
||||||
id: import_gpg
|
|
||||||
uses: crazy-max/ghaction-import-gpg@v5
|
|
||||||
with:
|
|
||||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
|
||||||
passphrase: ${{ secrets.PASSPHRASE }}
|
|
||||||
|
|
||||||
- name: Install SSH key
|
|
||||||
uses: shimataro/ssh-key-action@v2
|
|
||||||
with:
|
|
||||||
key: ${{ secrets.SSH_KEY }}
|
|
||||||
name: id_rsa
|
|
||||||
known_hosts: ${{ secrets.KNOWN_HOSTS }}
|
|
||||||
if_key_exists: replace
|
|
||||||
|
|
||||||
- name: Update apt cache
|
|
||||||
run: apt update
|
|
||||||
|
|
||||||
- name: Build Package
|
|
||||||
run: ./main.sh
|
|
||||||
|
|
||||||
- name: Release Package
|
|
||||||
run: ./release.sh
|
|
||||||
|
|
||||||
- name: Purge cache
|
|
||||||
uses: strrife/cloudflare-chunked-purge-action@master
|
|
||||||
env:
|
|
||||||
# Zone is required by both authentication methods
|
|
||||||
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
|
|
||||||
|
|
||||||
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
|
|
||||||
PURGE_URLS: ${{ vars.PURGE_URLS }}
|
|
14
debian/.gitignore
vendored
Normal file
14
debian/.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*.debhelper.log
|
||||||
|
/*.substvars
|
||||||
|
/.debhelper/
|
||||||
|
/debhelper-build-stamp
|
||||||
|
/files
|
||||||
|
/gir1.2-mutter-*/
|
||||||
|
/libmutter-*-0/
|
||||||
|
/libmutter-*-dev/
|
||||||
|
/libmutter-test-*/
|
||||||
|
/mutter-*-tests/
|
||||||
|
/mutter-common-bin/
|
||||||
|
/mutter-common/
|
||||||
|
/mutter/
|
||||||
|
/tmp/
|
17
debian/README.Debian
vendored
Normal file
17
debian/README.Debian
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Mutter Compositor
|
||||||
|
===================
|
||||||
|
|
||||||
|
Mutter includes a compositor based on Clutter. Mutter by default adds
|
||||||
|
very simple effects using the compositor, such as a drop-shadow. The
|
||||||
|
compositor may be used by plugins to add more effects. GNOME Shell is
|
||||||
|
an example of one such plugin.
|
||||||
|
|
||||||
|
The compositor can be enabled on the fly by setting the gconf key
|
||||||
|
/apps/mutter/general/compositing_manager to true by using
|
||||||
|
gconf-editor or gconftool-2.
|
||||||
|
|
||||||
|
Before enabling the compositor, you need to make sure your X server
|
||||||
|
configuration has the composite extension, as well as DRI loaded and
|
||||||
|
enabled.
|
||||||
|
|
||||||
|
-- Gustavo Noronha Silva <kov@debian.org>, Sun, 26 Jul 2009 13:14:57 +0200
|
61
debian/README.Ubuntu
vendored
61
debian/README.Ubuntu
vendored
@ -1,61 +0,0 @@
|
|||||||
# 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.
|
|
5600
debian/changelog
vendored
5600
debian/changelog
vendored
File diff suppressed because it is too large
Load Diff
1
debian/clean
vendored
1
debian/clean
vendored
@ -1 +0,0 @@
|
|||||||
debian/home/
|
|
441
debian/control
vendored
441
debian/control
vendored
@ -1,186 +1,301 @@
|
|||||||
# This file is autogenerated. DO NOT EDIT!
|
Source: mutter
|
||||||
#
|
Section: x11
|
||||||
# Modifications should be made to debian/control.in instead.
|
|
||||||
# This file is regenerated automatically in the clean target.
|
|
||||||
Source: gnome-shell
|
|
||||||
Section: gnome
|
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
|
||||||
XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
|
Uploaders: Jeremy Bícha <jbicha@ubuntu.com>
|
||||||
Uploaders: Jeremy Bícha <jbicha@ubuntu.com>, Marco Trevisan (Treviño) <marco@ubuntu.com>
|
Build-Depends: debhelper-compat (= 13),
|
||||||
Build-Depends: appstream,
|
dh-exec,
|
||||||
asciidoc-base,
|
|
||||||
bash-completion,
|
|
||||||
dbus-daemon <!nocheck>,
|
|
||||||
debhelper-compat (= 13),
|
|
||||||
dh-sequence-gir,
|
dh-sequence-gir,
|
||||||
dh-sequence-gnome,
|
dh-sequence-gnome,
|
||||||
gjs,
|
at-spi2-core <!nocheck>,
|
||||||
gir1.2-accountsservice-1.0 <!nocheck>,
|
adwaita-icon-theme <!nocheck>,
|
||||||
gir1.2-gdm-1.0 <!nocheck>,
|
dbus-daemon <!nocheck>,
|
||||||
gir1.2-geoclue-2.0 <!nocheck>,
|
dmz-cursor-theme <!nocheck>,
|
||||||
gir1.2-gnomebg-4.0 <!nocheck>,
|
gir1.2-atk-1.0-dev,
|
||||||
gir1.2-gnomedesktop-4.0 <!nocheck>,
|
gir1.2-cairo-1.0-dev,
|
||||||
gir1.2-gweather-4.0 (>= 4.1) <!nocheck>,
|
gir1.2-gdesktopenums-3.0-dev,
|
||||||
gir1.2-nma4-1.0 [linux-any] <!nocheck>,
|
gir1.2-gio-2.0-dev,
|
||||||
gir1.2-rsvg-2.0 <!nocheck>,
|
gir1.2-gl-1.0-dev,
|
||||||
gir1.2-upowerglib-1.0 <!nocheck>,
|
gir1.2-gobject-2.0-dev,
|
||||||
gnome-control-center-dev,
|
gir1.2-graphene-1.0-dev,
|
||||||
|
gir1.2-pango-1.0-dev,
|
||||||
|
gir1.2-pangocairo-1.0-dev,
|
||||||
|
gir1.2-xfixes-4.0-dev,
|
||||||
|
gir1.2-xlib-2.0-dev,
|
||||||
|
gnome-control-center-data,
|
||||||
gnome-pkg-tools,
|
gnome-pkg-tools,
|
||||||
gnome-settings-daemon-common (>= 40~) <!nocheck>,
|
gnome-settings-daemon-common <!nocheck>,
|
||||||
gobject-introspection,
|
gnome-settings-daemon-dev,
|
||||||
gsettings-desktop-schemas-dev (>= 42~beta),
|
gobject-introspection (>= 1.80),
|
||||||
|
gsettings-desktop-schemas-dev (>= 40~alpha),
|
||||||
gtk-doc-tools,
|
gtk-doc-tools,
|
||||||
libasound2-dev,
|
libei-dev (>= 1.0.901),
|
||||||
libatk-bridge2.0-dev,
|
libeis-dev (>= 1.0.901),
|
||||||
libecal2.0-dev (>= 3.45),
|
libcairo2-dev,
|
||||||
libedataserver1.2-dev (>= 3.45),
|
libcanberra-gtk3-dev,
|
||||||
libgcr-3-dev,
|
libcolord-dev,
|
||||||
libgirepository1.0-dev,
|
libdisplay-info-dev,
|
||||||
libgjs-dev (>= 1.73.1),
|
libdrm-dev (>= 2.4.118),
|
||||||
libgl1-mesa-dri <!nocheck>,
|
libegl1-mesa-dev,
|
||||||
libglib2.0-dev,
|
libfribidi-dev,
|
||||||
libgnome-autoar-0-dev,
|
libgbm-dev (>= 21.3),
|
||||||
libgnome-bluetooth-3.0-dev (>= 3.9.0) [linux-any],
|
libgdk-pixbuf-2.0-dev,
|
||||||
libgnome-desktop-4-dev (>= 40),
|
libgl-dev,
|
||||||
libgnome-menu-3-dev,
|
libgles-dev,
|
||||||
libgstreamer1.0-dev,
|
libglib2.0-dev (>= 2.76),
|
||||||
libgstreamer-plugins-base1.0-dev,
|
libgnome-desktop-4-dev,
|
||||||
|
libgraphene-1.0-dev,
|
||||||
|
libgtk-3-dev <!nocheck>,
|
||||||
libgtk-4-dev,
|
libgtk-4-dev,
|
||||||
libibus-1.0-dev (>= 1.5.22-2ubuntu2~),
|
libgudev-1.0-dev,
|
||||||
|
libice-dev,
|
||||||
|
libinput-dev (>= 1.19.0),
|
||||||
libjson-glib-dev,
|
libjson-glib-dev,
|
||||||
libmutter-13-dev (>= 45.0),
|
liblcms2-dev,
|
||||||
mutter-13-tests (>= 45.0) <!nocheck>,
|
libnvidia-egl-wayland-dev,
|
||||||
libnm-dev [linux-any],
|
libpam0g-dev,
|
||||||
libpipewire-0.3-dev (>= 0.3.10) [linux-any],
|
libpango1.0-dev,
|
||||||
libpolkit-agent-1-dev,
|
libpipewire-0.3-dev (>= 0.3.33),
|
||||||
libpulse-dev (>= 13),
|
libpixman-1-dev (>= 0.42),
|
||||||
libsecret-1-dev,
|
libsm-dev,
|
||||||
libstartup-notification0-dev,
|
libstartup-notification0-dev,
|
||||||
libsystemd-dev [linux-any],
|
libsysprof-6-dev [!i386],
|
||||||
|
libsysprof-capture-4-dev (>= 3.40.1),
|
||||||
|
libsystemd-dev,
|
||||||
|
libwacom-dev,
|
||||||
|
libwayland-dev (>= 1.22),
|
||||||
|
libxau-dev,
|
||||||
libx11-dev,
|
libx11-dev,
|
||||||
|
libx11-xcb-dev,
|
||||||
|
libxcb-randr0-dev,
|
||||||
|
libxcb-res0-dev,
|
||||||
|
libxcomposite-dev,
|
||||||
|
libxcursor-dev,
|
||||||
|
libxdamage-dev,
|
||||||
|
libxext-dev,
|
||||||
libxfixes-dev,
|
libxfixes-dev,
|
||||||
libxml2-dev,
|
libxi-dev,
|
||||||
mesa-common-dev,
|
libxinerama-dev,
|
||||||
meson (>= 0.58.0),
|
libxkbcommon-dev,
|
||||||
mutter (>= 45.0) <!nocheck>,
|
libxkbcommon-x11-dev,
|
||||||
pkg-config,
|
libxkbfile-dev,
|
||||||
sassc,
|
libxrandr-dev,
|
||||||
systemd [linux-any],
|
libxrender-dev,
|
||||||
|
libxt-dev,
|
||||||
|
meson (>= 0.60),
|
||||||
|
pkgconf,
|
||||||
|
python3-dbus <!nocheck>,
|
||||||
|
python3-dbusmock,
|
||||||
|
sysprof [!hurd-i386 !i386],
|
||||||
|
systemd-dev,
|
||||||
|
wayland-protocols (>= 1.33),
|
||||||
xauth <!nocheck>,
|
xauth <!nocheck>,
|
||||||
xvfb <!nocheck>,
|
xcvt:native,
|
||||||
xwayland <!nocheck>
|
xkb-data,
|
||||||
|
xvfb,
|
||||||
|
xwayland (>= 2:23.1.0),
|
||||||
|
zenity
|
||||||
Rules-Requires-Root: no
|
Rules-Requires-Root: no
|
||||||
Standards-Version: 4.6.2
|
Standards-Version: 4.6.2
|
||||||
Homepage: https://wiki.gnome.org/Projects/GnomeShell
|
Homepage: https://mutter.gnome.org/
|
||||||
XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-shell.git
|
Vcs-Git: https://salsa.debian.org/gnome-team/mutter.git
|
||||||
XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell
|
Vcs-Browser: https://salsa.debian.org/gnome-team/mutter
|
||||||
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
|
Package: mutter
|
||||||
Architecture: linux-any
|
Architecture: linux-any
|
||||||
Depends: gir1.2-accountsservice-1.0,
|
Depends: adwaita-icon-theme,
|
||||||
gir1.2-adw-1,
|
gnome-settings-daemon-common,
|
||||||
gir1.2-atk-1.0,
|
gsettings-desktop-schemas (>= 40~alpha),
|
||||||
gir1.2-atspi-2.0 (>= 2.36),
|
mutter-common (>= ${source:Version}),
|
||||||
gir1.2-gcr-3,
|
zenity,
|
||||||
gir1.2-gdesktopenums-3.0,
|
${misc:Depends},
|
||||||
gir1.2-gdkpixbuf-2.0,
|
${shlibs:Depends}
|
||||||
gir1.2-gdm-1.0,
|
Provides: x-window-manager
|
||||||
gir1.2-geoclue-2.0,
|
Suggests: gnome-control-center,
|
||||||
gir1.2-glib-2.0,
|
xdg-user-dirs
|
||||||
gir1.2-gnomebg-4.0,
|
Description: Example window manager using GNOME's window manager library
|
||||||
gir1.2-gnomebluetooth-3.0 (>= 42.3) [linux-any],
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
gir1.2-gnomedesktop-4.0 (>= 40),
|
compositor library. It contains functionality related to, among other
|
||||||
gir1.2-graphene-1.0 (>= 1.10.2),
|
things, window management, window compositing, focus tracking, workspace
|
||||||
gir1.2-gstreamer-1.0,
|
management, keybindings and monitor configuration.
|
||||||
gir1.2-gtk-4.0,
|
.
|
||||||
gir1.2-gweather-4.0 (>= 4.1),
|
Internally it uses a fork of Cogl, a hardware acceleration abstraction
|
||||||
gir1.2-freedesktop,
|
library used to simplify usage of OpenGL pipelines, as well as a fork
|
||||||
gir1.2-ibus-1.0 (>= 1.5.22-2ubuntu2~),
|
of Clutter, a scene graph and user interface toolkit.
|
||||||
gir1.2-mutter-13 (>= 45.0),
|
.
|
||||||
gir1.2-nm-1.0 [linux-any],
|
This package contains the mutter executable. It can be used as a
|
||||||
gir1.2-nma4-1.0 [linux-any],
|
standalone window manager, but is primarily intended for debugging.
|
||||||
gir1.2-pango-1.0,
|
|
||||||
gir1.2-polkit-1.0,
|
Package: mutter-14-tests
|
||||||
gir1.2-rsvg-2.0,
|
Architecture: linux-any
|
||||||
gir1.2-soup-3.0,
|
Depends: at-spi2-core,
|
||||||
gir1.2-upowerglib-1.0,
|
dbus-daemon,
|
||||||
gir1.2-webkit-6.0,
|
dmz-cursor-theme,
|
||||||
gnome-settings-daemon (>= 40~),
|
libmutter-14-0 (= ${binary:Version}),
|
||||||
gnome-shell-common (= ${source:Version}),
|
libmutter-test-14 (= ${binary:Version}),
|
||||||
gsettings-desktop-schemas (>= 42~beta),
|
mutter (= ${binary:Version}),
|
||||||
gstreamer1.0-pipewire (>= 0.3.10) [linux-any],
|
|
||||||
libglib2.0-bin,
|
|
||||||
python3,
|
python3,
|
||||||
ubuntu-wallpapers,
|
python3-dbus,
|
||||||
${gir:Depends},
|
python3-dbusmock,
|
||||||
|
xauth,
|
||||||
|
xvfb,
|
||||||
|
xwayland (>= 2:23.1.0),
|
||||||
${misc:Depends},
|
${misc:Depends},
|
||||||
${shlibs:Depends}
|
${shlibs:Depends}
|
||||||
Recommends: bolt,
|
Description: Tests for GNOME's window manager library
|
||||||
evolution-data-server (>= 3.45),
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
gdm3,
|
compositor library. It contains functionality related to, among other
|
||||||
gkbd-capplet,
|
things, window management, window compositing, focus tracking, workspace
|
||||||
gnome-control-center (>= 1:42),
|
management, keybindings and monitor configuration.
|
||||||
gnome-remote-desktop,
|
.
|
||||||
gnome-menus,
|
Internally it uses a fork of Cogl, a hardware acceleration abstraction
|
||||||
gnome-user-docs,
|
library used to simplify usage of OpenGL pipelines, as well as a fork
|
||||||
ibus,
|
of Clutter, a scene graph and user interface toolkit.
|
||||||
iio-sensor-proxy,
|
.
|
||||||
power-profiles-daemon,
|
This package contains test programs, designed to be run as part of a
|
||||||
switcheroo-control,
|
regression testsuite.
|
||||||
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,
|
|
||||||
gnome-backgrounds (>= 3.13.90),
|
|
||||||
gnome-shell-extension-prefs,
|
|
||||||
chrome-gnome-shell,
|
|
||||||
Breaks: gnome-shell-extension-appindicator (<< 50),
|
|
||||||
gnome-shell-extension-dash-to-panel (<< 55),
|
|
||||||
gnome-shell-extension-dashtodock (<< 79),
|
|
||||||
gnome-shell-extension-desktop-icons (<< 21.04),
|
|
||||||
gnome-shell-extension-desktop-icons-ng (<< 46+really47.0.2-2),
|
|
||||||
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~),
|
|
||||||
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
|
Package: gir1.2-mutter-14
|
||||||
Architecture: all
|
Section: introspection
|
||||||
Depends: ${misc:Depends}
|
|
||||||
Recommends: yaru-theme-gnome-shell (>= 23.10.0~)
|
|
||||||
Breaks: gnome-shell (<< 3.36.1-6~)
|
|
||||||
Replaces: gnome-shell (<< 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
|
|
||||||
Architecture: linux-any
|
Architecture: linux-any
|
||||||
Depends: gir1.2-adw-1,
|
Multi-Arch: same
|
||||||
gir1.2-gtk-4.0,
|
Depends: libmutter-14-0 (= ${binary:Version}),
|
||||||
gjs (>= 1.73.1),
|
|
||||||
gnome-shell (= ${binary:Version}),
|
|
||||||
gnome-shell-common (= ${source:Version}),
|
|
||||||
${gir:Depends},
|
${gir:Depends},
|
||||||
${misc:Depends},
|
${misc:Depends},
|
||||||
${shlibs:Depends}
|
${shlibs:Depends}
|
||||||
Provides: gnome-extensions-app
|
Provides: ${gir:Provides}
|
||||||
Recommends: chrome-gnome-shell
|
Description: GObject introspection data for Mutter
|
||||||
Breaks: gnome-shell (<< 3.36.0-2)
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
Replaces: gnome-shell (<< 3.36.0-2)
|
compositor library. It contains functionality related to, among other
|
||||||
Description: tool to enable / disable GNOME Shell extensions
|
things, window management, window compositing, focus tracking, workspace
|
||||||
This package contains a tool which users who use Shell extensions can use to
|
management, keybindings and monitor configuration.
|
||||||
toggle them on and off, and access their preferences.
|
.
|
||||||
|
Internally it uses a fork of Cogl, a hardware acceleration abstraction
|
||||||
|
library used to simplify usage of OpenGL pipelines, as well as a fork
|
||||||
|
of Clutter, a scene graph and user interface toolkit.
|
||||||
|
.
|
||||||
|
This package contains the GObject introspection data which may be
|
||||||
|
used to generate dynamic bindings.
|
||||||
|
|
||||||
|
Package: libmutter-14-0
|
||||||
|
Section: libs
|
||||||
|
Architecture: linux-any
|
||||||
|
Multi-Arch: same
|
||||||
|
Pre-Depends: ${misc:Pre-Depends}
|
||||||
|
Depends: adwaita-icon-theme,
|
||||||
|
gsettings-desktop-schemas (>= 40~alpha),
|
||||||
|
mutter-common (>= ${source:Version}),
|
||||||
|
mutter-common-bin (= ${binary:Version}),
|
||||||
|
${misc:Depends},
|
||||||
|
${shlibs:Depends}
|
||||||
|
Breaks: gnome-shell (<< 46.0),
|
||||||
|
xwayland (<< 2:23.1.0),
|
||||||
|
Description: window manager library from the Mutter window manager
|
||||||
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
|
compositor library. It contains functionality related to, among other
|
||||||
|
things, window management, window compositing, focus tracking, workspace
|
||||||
|
management, keybindings and monitor configuration.
|
||||||
|
.
|
||||||
|
Internally it uses a fork of Cogl, a hardware acceleration abstraction
|
||||||
|
library used to simplify usage of OpenGL pipelines, as well as a fork
|
||||||
|
of Clutter, a scene graph and user interface toolkit.
|
||||||
|
.
|
||||||
|
This package contains the window manager shared library, used by mutter
|
||||||
|
itself, and gnome-shell.
|
||||||
|
|
||||||
|
Package: libmutter-14-dev
|
||||||
|
Section: libdevel
|
||||||
|
Architecture: linux-any
|
||||||
|
Multi-Arch: same
|
||||||
|
Depends: gir1.2-mutter-14 (= ${binary:Version}),
|
||||||
|
gsettings-desktop-schemas-dev (>= 40~alpha),
|
||||||
|
libatk1.0-dev,
|
||||||
|
libcairo2-dev,
|
||||||
|
libdrm-dev (>= 2.4.118),
|
||||||
|
libegl1-mesa-dev,
|
||||||
|
libgbm-dev (>= 21.3),
|
||||||
|
libgdk-pixbuf-2.0-dev,
|
||||||
|
libgles-dev,
|
||||||
|
libglib2.0-dev (>= 2.76),
|
||||||
|
libgraphene-1.0-dev,
|
||||||
|
libinput-dev (>= 1.19),
|
||||||
|
libmutter-14-0 (= ${binary:Version}),
|
||||||
|
libpango1.0-dev,
|
||||||
|
libwayland-dev (>= 1.22),
|
||||||
|
libx11-dev,
|
||||||
|
libxcomposite-dev,
|
||||||
|
libxdamage-dev,
|
||||||
|
libxext-dev,
|
||||||
|
libxfixes-dev,
|
||||||
|
libxi-dev,
|
||||||
|
libxrandr-dev,
|
||||||
|
${gir:Depends},
|
||||||
|
${misc:Depends}
|
||||||
|
Provides: ${gir:Provides}
|
||||||
|
Description: Development files for the Mutter window manager
|
||||||
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
|
compositor library. It contains functionality related to, among other
|
||||||
|
things, window management, window compositing, focus tracking, workspace
|
||||||
|
management, keybindings and monitor configuration.
|
||||||
|
.
|
||||||
|
Internally it uses a fork of Cogl, a hardware acceleration abstraction
|
||||||
|
library used to simplify usage of OpenGL pipelines, as well as a fork
|
||||||
|
of Clutter, a scene graph and user interface toolkit.
|
||||||
|
.
|
||||||
|
This package contains the development files.
|
||||||
|
|
||||||
|
Package: libmutter-test-14
|
||||||
|
Section: libs
|
||||||
|
Architecture: linux-any
|
||||||
|
Depends: libmutter-14-0 (= ${binary:Version}),
|
||||||
|
mutter (= ${binary:Version}),
|
||||||
|
${misc:Depends},
|
||||||
|
${shlibs:Depends}
|
||||||
|
Provides: gir1.2-metatest-14
|
||||||
|
Description: Test helper library for GNOME's window manager library
|
||||||
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
|
compositor library. It contains functionality related to, among other
|
||||||
|
things, window management, window compositing, focus tracking, workspace
|
||||||
|
management, keybindings and monitor configuration.
|
||||||
|
.
|
||||||
|
This package contains a private library used by the automated tests for
|
||||||
|
mutter and gnome-shell. It should not be used by non-GNOME packages.
|
||||||
|
|
||||||
|
Package: mutter-common
|
||||||
|
Section: misc
|
||||||
|
Architecture: all
|
||||||
|
Multi-Arch: foreign
|
||||||
|
Depends: ${misc:Depends}
|
||||||
|
Breaks: magpie-common (<< 0.9.3-0ubuntu8~)
|
||||||
|
Replaces: magpie-common (<< 0.9.3-0ubuntu8~)
|
||||||
|
Description: shared files for the Mutter window manager
|
||||||
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
|
compositor library. It contains functionality related to, among other
|
||||||
|
things, window management, window compositing, focus tracking, workspace
|
||||||
|
management, keybindings and monitor configuration.
|
||||||
|
.
|
||||||
|
Internally it uses a fork of Cogl, a hardware acceleration abstraction
|
||||||
|
library used to simplify usage of OpenGL pipelines, as well as a fork
|
||||||
|
of Clutter, a scene graph and user interface toolkit.
|
||||||
|
.
|
||||||
|
This package contains the shared files.
|
||||||
|
|
||||||
|
Package: mutter-common-bin
|
||||||
|
Section: misc
|
||||||
|
Architecture: linux-any
|
||||||
|
Depends: ${misc:Depends},
|
||||||
|
${shlibs:Depends}
|
||||||
|
Breaks: mutter (<< 44~)
|
||||||
|
Replaces: mutter (<< 44~)
|
||||||
|
Description: shared programs for the Mutter window manager
|
||||||
|
Mutter is a Wayland display server and X11 window manager and
|
||||||
|
compositor library. It contains functionality related to, among other
|
||||||
|
things, window management, window compositing, focus tracking, workspace
|
||||||
|
management, keybindings and monitor configuration.
|
||||||
|
.
|
||||||
|
Internally it uses a fork of Cogl, a hardware acceleration abstraction
|
||||||
|
library used to simplify usage of OpenGL pipelines, as well as a fork
|
||||||
|
of Clutter, a scene graph and user interface toolkit.
|
||||||
|
.
|
||||||
|
This package contains the program files which are used for the libraries
|
||||||
|
and others.
|
||||||
|
182
debian/control.in
vendored
182
debian/control.in
vendored
@ -1,182 +0,0 @@
|
|||||||
Source: gnome-shell
|
|
||||||
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: @GNOME_TEAM@
|
|
||||||
Build-Depends: appstream,
|
|
||||||
asciidoc-base,
|
|
||||||
bash-completion,
|
|
||||||
dbus-daemon <!nocheck>,
|
|
||||||
debhelper-compat (= 13),
|
|
||||||
dh-sequence-gir,
|
|
||||||
dh-sequence-gnome,
|
|
||||||
gjs,
|
|
||||||
gir1.2-accountsservice-1.0 <!nocheck>,
|
|
||||||
gir1.2-gdm-1.0 <!nocheck>,
|
|
||||||
gir1.2-geoclue-2.0 <!nocheck>,
|
|
||||||
gir1.2-gnomebg-4.0 <!nocheck>,
|
|
||||||
gir1.2-gnomedesktop-4.0 <!nocheck>,
|
|
||||||
gir1.2-gweather-4.0 (>= 4.1) <!nocheck>,
|
|
||||||
gir1.2-nma4-1.0 [linux-any] <!nocheck>,
|
|
||||||
gir1.2-rsvg-2.0 <!nocheck>,
|
|
||||||
gir1.2-upowerglib-1.0 <!nocheck>,
|
|
||||||
gnome-control-center-dev,
|
|
||||||
gnome-pkg-tools,
|
|
||||||
gnome-settings-daemon-common (>= 40~) <!nocheck>,
|
|
||||||
gobject-introspection,
|
|
||||||
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,
|
|
||||||
libgirepository1.0-dev,
|
|
||||||
libgjs-dev (>= 1.73.1),
|
|
||||||
libgl1-mesa-dri <!nocheck>,
|
|
||||||
libglib2.0-dev,
|
|
||||||
libgnome-autoar-0-dev,
|
|
||||||
libgnome-bluetooth-3.0-dev (>= 3.9.0) [linux-any],
|
|
||||||
libgnome-desktop-4-dev (>= 40),
|
|
||||||
libgnome-menu-3-dev,
|
|
||||||
libgstreamer1.0-dev,
|
|
||||||
libgstreamer-plugins-base1.0-dev,
|
|
||||||
libgtk-4-dev,
|
|
||||||
libibus-1.0-dev (>= 1.5.22-2ubuntu2~),
|
|
||||||
libjson-glib-dev,
|
|
||||||
libmutter-13-dev (>= 45.0),
|
|
||||||
mutter-13-tests (>= 45.0) <!nocheck>,
|
|
||||||
libnm-dev [linux-any],
|
|
||||||
libpipewire-0.3-dev (>= 0.3.10) [linux-any],
|
|
||||||
libpolkit-agent-1-dev,
|
|
||||||
libpulse-dev (>= 13),
|
|
||||||
libsecret-1-dev,
|
|
||||||
libstartup-notification0-dev,
|
|
||||||
libsystemd-dev [linux-any],
|
|
||||||
libx11-dev,
|
|
||||||
libxfixes-dev,
|
|
||||||
libxml2-dev,
|
|
||||||
mesa-common-dev,
|
|
||||||
meson (>= 0.58.0),
|
|
||||||
mutter (>= 45.0) <!nocheck>,
|
|
||||||
pkg-config,
|
|
||||||
sassc,
|
|
||||||
systemd [linux-any],
|
|
||||||
xauth <!nocheck>,
|
|
||||||
xvfb <!nocheck>,
|
|
||||||
xwayland <!nocheck>
|
|
||||||
Rules-Requires-Root: no
|
|
||||||
Standards-Version: 4.6.2
|
|
||||||
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
|
|
||||||
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,
|
|
||||||
gir1.2-gdesktopenums-3.0,
|
|
||||||
gir1.2-gdkpixbuf-2.0,
|
|
||||||
gir1.2-gdm-1.0,
|
|
||||||
gir1.2-geoclue-2.0,
|
|
||||||
gir1.2-glib-2.0,
|
|
||||||
gir1.2-gnomebg-4.0,
|
|
||||||
gir1.2-gnomebluetooth-3.0 (>= 42.3) [linux-any],
|
|
||||||
gir1.2-gnomedesktop-4.0 (>= 40),
|
|
||||||
gir1.2-graphene-1.0 (>= 1.10.2),
|
|
||||||
gir1.2-gstreamer-1.0,
|
|
||||||
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-mutter-13 (>= 45.0),
|
|
||||||
gir1.2-nm-1.0 [linux-any],
|
|
||||||
gir1.2-nma4-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,
|
|
||||||
gir1.2-webkit-6.0,
|
|
||||||
gnome-settings-daemon (>= 40~),
|
|
||||||
gnome-shell-common (= ${source:Version}),
|
|
||||||
gsettings-desktop-schemas (>= 42~beta),
|
|
||||||
gstreamer1.0-pipewire (>= 0.3.10) [linux-any],
|
|
||||||
libglib2.0-bin,
|
|
||||||
python3,
|
|
||||||
ubuntu-wallpapers,
|
|
||||||
${gir:Depends},
|
|
||||||
${misc:Depends},
|
|
||||||
${shlibs:Depends}
|
|
||||||
Recommends: bolt,
|
|
||||||
evolution-data-server (>= 3.45),
|
|
||||||
gdm3,
|
|
||||||
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,
|
|
||||||
gnome-backgrounds (>= 3.13.90),
|
|
||||||
gnome-shell-extension-prefs,
|
|
||||||
chrome-gnome-shell,
|
|
||||||
Breaks: gnome-shell-extension-appindicator (<< 50),
|
|
||||||
gnome-shell-extension-dash-to-panel (<< 55),
|
|
||||||
gnome-shell-extension-dashtodock (<< 79),
|
|
||||||
gnome-shell-extension-desktop-icons (<< 21.04),
|
|
||||||
gnome-shell-extension-desktop-icons-ng (<< 46+really47.0.2-2),
|
|
||||||
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~),
|
|
||||||
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
|
|
||||||
Architecture: all
|
|
||||||
Depends: ${misc:Depends}
|
|
||||||
Recommends: yaru-theme-gnome-shell (>= 23.10.0~)
|
|
||||||
Breaks: gnome-shell (<< 3.36.1-6~)
|
|
||||||
Replaces: gnome-shell (<< 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
|
|
||||||
Architecture: linux-any
|
|
||||||
Depends: gir1.2-adw-1,
|
|
||||||
gir1.2-gtk-4.0,
|
|
||||||
gjs (>= 1.73.1),
|
|
||||||
gnome-shell (= ${binary:Version}),
|
|
||||||
gnome-shell-common (= ${source:Version}),
|
|
||||||
${gir:Depends},
|
|
||||||
${misc:Depends},
|
|
||||||
${shlibs:Depends}
|
|
||||||
Provides: gnome-extensions-app
|
|
||||||
Recommends: chrome-gnome-shell
|
|
||||||
Breaks: gnome-shell (<< 3.36.0-2)
|
|
||||||
Replaces: gnome-shell (<< 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.
|
|
349
debian/copyright
vendored
349
debian/copyright
vendored
@ -1,52 +1,319 @@
|
|||||||
This package was debianized by Sebastien Bacher <seb128@ubuntu.com> on
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Wed, 01 Jul 2009 23:29:31 +0200.
|
Source: https://download.gnome.org/sources/mutter/
|
||||||
|
Upstream-Name: mutter
|
||||||
|
|
||||||
It was downloaded from https://download.gnome.org/sources/gnome-shell/
|
Files:
|
||||||
|
*
|
||||||
|
Copyright:
|
||||||
|
2004-2006 Adam Weinberger
|
||||||
|
2001 Anders Carlsson
|
||||||
|
2007-2018 Ask Hjorth Larsen
|
||||||
|
2012 Bastian Winkler
|
||||||
|
1999-2005 Brian Paul
|
||||||
|
2005-2021 Canonical Ltd.
|
||||||
|
2021 Christian Rauch
|
||||||
|
2011-2014 Collabora Ltd
|
||||||
|
1997-2000 Dan Pascu and Alfredo Kojima
|
||||||
|
1987 Digital Equipment Corporation
|
||||||
|
2018-2020 DisplayLink (UK) Ltd.
|
||||||
|
2001 Dominik Vogt
|
||||||
|
2000-2001 Eazel, Inc.
|
||||||
|
2004-2006 Elijah Newren
|
||||||
|
2013-2015 Emmanuele Bassi
|
||||||
|
2018-2020 Endless, Inc.
|
||||||
|
2020 Endless Foundation
|
||||||
|
2014 Endless Mobile
|
||||||
|
1999-2000 Erik Walthinsen
|
||||||
|
1999-2020 Free Software Foundation, Inc.
|
||||||
|
2008-2016 GNOME i18n Project for Vietnamese
|
||||||
|
1995-2000 GTK+ Team
|
||||||
|
2002 Garrett LeSage
|
||||||
|
2002 Gaute Lindkvist
|
||||||
|
2020 Georges Basile Stavracas Neto
|
||||||
|
2001-2008 Havoc Pennington
|
||||||
|
2001-2008 Havoc Pennington, Red Hat, Inc., and others
|
||||||
|
2016 Hyungwon Hwang
|
||||||
|
2007-2008 Iain Holmes
|
||||||
|
2008-2010 Igalia, S.L.
|
||||||
|
2010-2012 Inclusive Design Research Centre, OCAD University
|
||||||
|
2007-2017 Intel Corporation
|
||||||
|
2002 James M. Cape
|
||||||
|
2011 Joe Hansen
|
||||||
|
2014 Jonas Ådahl
|
||||||
|
2020 Jonas Dreßler
|
||||||
|
2002 Jorn Baayen
|
||||||
|
1995-1997 Josh MacDonald
|
||||||
|
2004 Kakilik Project
|
||||||
|
2003-2013 Keith Packard
|
||||||
|
2002 Keld simonsen
|
||||||
|
2008 Kenneth Nielsen
|
||||||
|
2002 Kjartan Maraas
|
||||||
|
2008-2011 Kristian Høgsberg
|
||||||
|
2006 Lasse Bang Mikkelsen
|
||||||
|
2004-2005 Martin Willemoes Hansen
|
||||||
|
2008 Matthew Allum
|
||||||
|
2001 Matthias Clasen
|
||||||
|
2010 Milan Bouchet-Valat
|
||||||
|
2003-2006 Miloslav Trmac
|
||||||
|
2011 NVIDIA Corporation
|
||||||
|
2002 Ole Laursen
|
||||||
|
2005-2007 Olivier Fourdan
|
||||||
|
2006-2008 OpenedHand Ltd
|
||||||
|
1995-1997 Peter Mattis
|
||||||
|
2001-2022 Red Hat Inc
|
||||||
|
2014 Rico Tzschichholz
|
||||||
|
2003-2004 Rob Adams
|
||||||
|
2011 Robert Bosch Car Multimedia GmbH
|
||||||
|
2018-2021 Robert Mader
|
||||||
|
2004-2008 Rodney Dawes
|
||||||
|
2005-2011 Rosetta Contributors
|
||||||
|
2002 Ross Burton
|
||||||
|
2009 Sander Dijkhuis
|
||||||
|
2004 Scott James Remnant
|
||||||
|
2020 Sebastian Wick
|
||||||
|
2019 Sergio Costas
|
||||||
|
2003-2006 Sharif FarsiWeb, Inc.
|
||||||
|
1991-2000 Silicon Graphics Inc
|
||||||
|
2018-2020 Simon McVittie
|
||||||
|
2002 Simos Xenitellis
|
||||||
|
1995-1997 Spencer Kimball
|
||||||
|
2001-2003 Sun Microsystems Inc
|
||||||
|
2002-2006 The GNOME Foundation
|
||||||
|
2007 The GNOME Project
|
||||||
|
1986-1998 The Open Group
|
||||||
|
2008-2009 Thomas Thurman
|
||||||
|
1998 Tim Janik
|
||||||
|
2008 Tungsten Graphics Inc
|
||||||
|
2002 Tuomas Kuosmanen
|
||||||
|
1995-1997 Ulrich Drepper
|
||||||
|
2007 William Jon McCann
|
||||||
|
1988 Wyse Technology, Inc.
|
||||||
|
1994 X Consortium
|
||||||
|
2001 Ximian, Inc.
|
||||||
|
2001 fvwm2 team
|
||||||
|
2002-2020 the mutter authors
|
||||||
|
2003 Åsmund Skjæveland.
|
||||||
|
(unspecified) Croatiann team
|
||||||
|
License: GPL-2+ and GPL-3+ and LGPL-2+ and LGPL-2.1+ and Expat and NTP-BSD-variant and SGI-B-2.0
|
||||||
|
|
||||||
Upstream Authors:
|
Files:
|
||||||
|
cogl/cogl/cogl-point-in-poly.c
|
||||||
|
Copyright:
|
||||||
|
1970-2003 Wm. Randolph Franklin
|
||||||
|
2011 Intel Corporation
|
||||||
|
License: WRF-BSD-variant
|
||||||
|
|
||||||
Colin Walters
|
Files:
|
||||||
Dan Winship
|
src/tests/share/icc/vx239-calibrated.icc
|
||||||
Marina Zhurakhinskaya
|
Copyright: none
|
||||||
Owen Taylor
|
License: free-of-known-restrictions
|
||||||
William Jon McCann
|
This profile is free of known copyright restrictions
|
||||||
|
|
||||||
Files: src/*
|
Files:
|
||||||
js/*
|
src/x11/mutter-Xatomtype.h
|
||||||
Copyright: © 2000 Helix Code, Inc.
|
Copyright:
|
||||||
© 2000,2001 Eazel, Inc.
|
1987-1998 The Open Group
|
||||||
© 2001 George Lebl
|
1987 Digital Equipment Corporation
|
||||||
© 2002 Sun Microsystems Inc.
|
License: DEC-BSD-variant and OpenGroup-BSD-variant
|
||||||
© 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/*
|
Files:
|
||||||
Copyright: © 2007-2008 William Jon McCann <mccann@jhu.edu>
|
src/x11/xprops.c
|
||||||
© 2004-2005 James M. Cape <jcape@ignore-your.tv>
|
Copyright:
|
||||||
License: LGPL-2+ (/usr/share/common-licenses/LGPL-2)
|
1987-1998 The Open Group
|
||||||
|
1987 Digital Equipment Corporation
|
||||||
|
1998 Wyse Technology Inc
|
||||||
|
2001 Havoc Pennington
|
||||||
|
2002 Red Hat Inc
|
||||||
|
License: DEC-BSD-variant and OpenGroup-BSD-variant and GPL-2+
|
||||||
|
|
||||||
Files: src/tray/*
|
License: GPL-2+
|
||||||
Copyright: © 2002 Anders Carlsson <andersca@gnu.org>
|
This package is free software; you can redistribute it and/or modify
|
||||||
© 2003-2006 Vincent Untz
|
it under the terms of the GNU General Public License as published by
|
||||||
© 2008 Red Hat, Inc.
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
.
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
Comment:
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 2 can be found in
|
||||||
|
/usr/share/common-licenses/GPL-2.
|
||||||
|
|
||||||
Files: src/big/*
|
License: GPL-3+
|
||||||
Copyright: © 2005-2008 Red Hat, Inc.
|
This program is free software; you can redistribute it and/or modify
|
||||||
© 2008-2009 litl, LLC
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
.
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
Comment:
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 3 can be found in
|
||||||
|
/usr/share/common-licenses/GPL-3.
|
||||||
|
|
||||||
Files: src/st/*
|
License: LGPL-2+
|
||||||
Copyright: © 2008 OpenedHand
|
This library is free software; you can redistribute it and/or
|
||||||
© 2009 Intel Corporation.
|
modify it under the terms of the GNU Lesser General Public
|
||||||
© 2003-2004 Dodji Seketeli
|
License as published by the Free Software Foundation; either
|
||||||
License: LGPL-2.1 (/usr/share/common-licenses/LGPL-2.1)
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
.
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
Comment:
|
||||||
|
On Debian systems, the complete text of the GNU Library General
|
||||||
|
Public License version 2 can be found in
|
||||||
|
/usr/share/common-licenses/LGPL-2, and the complete text of the
|
||||||
|
GNU Lesser General Public License version 2.1 can be found in
|
||||||
|
/usr/share/common-licenses/LGPL-2.1.
|
||||||
|
|
||||||
The Debian packaging is:
|
License: LGPL-2.1+
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
.
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
Comment:
|
||||||
|
On Debian systems, the complete text of the
|
||||||
|
GNU Lesser General Public License version 2.1 can be found in
|
||||||
|
/usr/share/common-licenses/LGPL-2.1.
|
||||||
|
|
||||||
Copyright © 2009 Sebastien Bacher <seb128@ubuntu.com>
|
License: Expat
|
||||||
Copyright © 2009 Collabora Ltd.
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use, copy,
|
||||||
|
modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
.
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||||
|
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
and is licensed under the GPL version 3,
|
License: NTP-BSD-variant
|
||||||
see `/usr/share/common-licenses/GPL-3'.
|
Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
the above copyright notice appear in all copies and that both that copyright
|
||||||
|
notice and this permission notice appear in supporting documentation, and
|
||||||
|
that the name of the copyright holders not be used in advertising or
|
||||||
|
publicity pertaining to distribution of the software without specific,
|
||||||
|
written prior permission. The copyright holders make no representations
|
||||||
|
about the suitability of this software for any purpose. It is provided "as
|
||||||
|
is" without express or implied warranty.
|
||||||
|
.
|
||||||
|
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||||
|
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||||
|
EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||||
|
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||||
|
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
||||||
|
OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
License: WRF-BSD-variant
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
.
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimers.
|
||||||
|
2. Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice in the documentation and/or other materials
|
||||||
|
provided with the distribution.
|
||||||
|
3. The name of W. Randolph Franklin may not be used to endorse or
|
||||||
|
promote products derived from this Software without specific
|
||||||
|
prior written permission.
|
||||||
|
.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
License: OpenGroup-BSD-variant
|
||||||
|
Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
the above copyright notice appear in all copies and that both that
|
||||||
|
copyright notice and this permission notice appear in supporting
|
||||||
|
documentation.
|
||||||
|
.
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
.
|
||||||
|
Except as contained in this notice, the name of The Open Group shall not be
|
||||||
|
used in advertising or otherwise to promote the sale, use or other dealings
|
||||||
|
in this Software without prior written authorization from The Open Group.
|
||||||
|
|
||||||
|
License: DEC-BSD-variant
|
||||||
|
Permission to use, copy, modify, and distribute this software and its
|
||||||
|
documentation for any purpose and without fee is hereby granted,
|
||||||
|
provided that the above copyright notice appear in all copies and that
|
||||||
|
both that copyright notice and this permission notice appear in
|
||||||
|
supporting documentation, and that the name of Digital not be
|
||||||
|
used in advertising or publicity pertaining to distribution of the
|
||||||
|
software without specific, written prior permission.
|
||||||
|
.
|
||||||
|
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||||
|
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||||
|
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
||||||
|
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||||
|
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
License: SGI-B-2.0
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
.
|
||||||
|
The above copyright notice including the dates of first publication and
|
||||||
|
either this permission notice or a reference to
|
||||||
|
http://oss.sgi.com/projects/FreeB/
|
||||||
|
shall be included in all copies or substantial portions of the Software.
|
||||||
|
.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||||
|
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
.
|
||||||
|
Except as contained in this notice, the name of Silicon Graphics, Inc.
|
||||||
|
shall not be used in advertising or otherwise to promote the sale, use or
|
||||||
|
other dealings in this Software without prior written authorization from
|
||||||
|
Silicon Graphics, Inc.
|
||||||
|
3
debian/gbp.conf
vendored
3
debian/gbp.conf
vendored
@ -1,7 +1,6 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
pristine-tar = True
|
pristine-tar = True
|
||||||
debian-branch = ubuntu/mantic
|
debian-branch = debian/latest
|
||||||
debian-tag=ubuntu/%(version)s
|
|
||||||
upstream-branch = upstream/latest
|
upstream-branch = upstream/latest
|
||||||
|
|
||||||
[buildpackage]
|
[buildpackage]
|
||||||
|
3
debian/gir1.2-mutter-14.install
vendored
Normal file
3
debian/gir1.2-mutter-14.install
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/C*.typelib
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/Meta-${env:MUTTER_API_VERSION}.typelib
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/Mtk-${env:MUTTER_API_VERSION}.typelib
|
4
debian/gnome-shell-common.alternatives
vendored
4
debian/gnome-shell-common.alternatives
vendored
@ -1,4 +0,0 @@
|
|||||||
Name: gdm-theme.gresource
|
|
||||||
Link: /usr/share/gnome-shell/gdm-theme.gresource
|
|
||||||
Alternative: /usr/share/gnome-shell/gnome-shell-theme.gresource
|
|
||||||
Priority: 10
|
|
1
debian/gnome-shell-common.dirs
vendored
1
debian/gnome-shell-common.dirs
vendored
@ -1 +0,0 @@
|
|||||||
usr/share/gnome-shell/modes
|
|
9
debian/gnome-shell-common.install
vendored
9
debian/gnome-shell-common.install
vendored
@ -1,9 +0,0 @@
|
|||||||
debian/source_gnome-shell.py /usr/share/apport/package-hooks
|
|
||||||
usr/lib/systemd/user
|
|
||||||
usr/share/dbus-1/interfaces
|
|
||||||
usr/share/glib-2.0
|
|
||||||
usr/share/gnome-control-center
|
|
||||||
usr/share/gnome-shell
|
|
||||||
usr/share/icons/hicolor/*/apps/*
|
|
||||||
usr/share/locale
|
|
||||||
debian/ubuntu-session-mods/ubuntu.json usr/share/gnome-shell/modes/
|
|
4
debian/gnome-shell-extension-prefs.install
vendored
4
debian/gnome-shell-extension-prefs.install
vendored
@ -1,4 +0,0 @@
|
|||||||
usr/bin/gnome-extensions-app
|
|
||||||
usr/bin/gnome-shell-extension-prefs
|
|
||||||
usr/share/applications/org.gnome.Extensions.desktop
|
|
||||||
usr/share/metainfo/org.gnome.Extensions.metainfo.xml
|
|
2
debian/gnome-shell.bug-control
vendored
2
debian/gnome-shell.bug-control
vendored
@ -1,2 +0,0 @@
|
|||||||
report-with: gnome-session gnome-settings-daemon libgjs0g libmutter-11-0
|
|
||||||
package-status: libegl-vendor libglx-vendor libgl1-mesa-dri
|
|
2
debian/gnome-shell.docs
vendored
2
debian/gnome-shell.docs
vendored
@ -1,2 +0,0 @@
|
|||||||
NEWS
|
|
||||||
README.md
|
|
2
debian/gnome-shell.gsettings-override
vendored
2
debian/gnome-shell.gsettings-override
vendored
@ -1,2 +0,0 @@
|
|||||||
[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' ]
|
|
11
debian/gnome-shell.install
vendored
11
debian/gnome-shell.install
vendored
@ -1,11 +0,0 @@
|
|||||||
usr/bin/gnome-extensions
|
|
||||||
usr/bin/gnome-shell
|
|
||||||
usr/bin/gnome-shell-extension-tool
|
|
||||||
usr/bin/gnome-shell-test-tool
|
|
||||||
usr/lib/gnome-shell
|
|
||||||
usr/libexec
|
|
||||||
usr/share/applications/org.gnome.Shell*.desktop
|
|
||||||
usr/share/bash-completion/completions/gnome-extensions
|
|
||||||
usr/share/dbus-1/services
|
|
||||||
usr/share/man
|
|
||||||
usr/share/xdg-desktop-portal
|
|
14
debian/gnome-shell.lintian-overrides
vendored
14
debian/gnome-shell.lintian-overrides
vendored
@ -1,14 +0,0 @@
|
|||||||
# These RUNPATHs are needed to find mutter's private clutter fork
|
|
||||||
gnome-shell: custom-library-search-path RUNPATH /usr/lib/*/mutter-* [usr/bin/gnome-shell]
|
|
||||||
gnome-shell: custom-library-search-path RUNPATH /usr/lib/*/mutter-* [usr/lib/gnome-shell/*.so]
|
|
||||||
|
|
||||||
|
|
||||||
# gnome-shell ships some desktop files only to provide metadata and icons to some apps
|
|
||||||
gnome-shell: desktop-command-not-in-package false [usr/share/applications/org.gnome.Shell.Extensions.desktop]
|
|
||||||
gnome-shell: desktop-command-not-in-package gapplication [usr/share/applications/org.gnome.Shell.PortalHelper.desktop]
|
|
||||||
|
|
||||||
# This is a NoDisplay=true desktop file, so there's no need for it
|
|
||||||
gnome-shell: desktop-entry-lacks-main-category [usr/share/applications/org.gnome.Shell.desktop]
|
|
||||||
|
|
||||||
# Conceptually a program, only built as a shared library for technical reasons
|
|
||||||
gnome-shell: exit-in-shared-library [usr/lib/gnome-shell/libgnome-shell.so]
|
|
1
debian/gnome-shell.maintscript
vendored
1
debian/gnome-shell.maintscript
vendored
@ -1 +0,0 @@
|
|||||||
rm_conffile /etc/xdg/autostart/gnome-shell-overrides-migration.desktop 44.3-5~
|
|
18
debian/gnome-shell.postinst
vendored
18
debian/gnome-shell.postinst
vendored
@ -1,18 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
configure)
|
|
||||||
# trigger an update notification that recommends a reboot
|
|
||||||
# (used by unattended-upgrades etc.)
|
|
||||||
touch /var/run/reboot-required || true
|
|
||||||
|
|
||||||
# same thing for the older update-notifier interface
|
|
||||||
if [ -x /usr/share/update-notifier/notify-reboot-required ]; then
|
|
||||||
/usr/share/update-notifier/notify-reboot-required || true
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
1
debian/libmutter-14-0.bug-control
vendored
Normal file
1
debian/libmutter-14-0.bug-control
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
package-status: libegl-vendor libglx-vendor libgl1-mesa-dri
|
2
debian/libmutter-14-0.install
vendored
Normal file
2
debian/libmutter-14-0.install
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/libmutter-${env:MUTTER_API_VERSION}.so.*
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/*.so.*
|
2710
debian/libmutter-14-0.symbols
vendored
Normal file
2710
debian/libmutter-14-0.symbols
vendored
Normal file
File diff suppressed because it is too large
Load Diff
12
debian/libmutter-14-dev.install
vendored
Normal file
12
debian/libmutter-14-dev.install
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
usr/include/mutter-${env:MUTTER_API_VERSION}/clutter
|
||||||
|
usr/include/mutter-${env:MUTTER_API_VERSION}/cogl
|
||||||
|
usr/include/mutter-${env:MUTTER_API_VERSION}/meta
|
||||||
|
usr/include/mutter-${env:MUTTER_API_VERSION}/mtk
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/libmutter-${env:MUTTER_API_VERSION}.so
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/*.so
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/*.gir
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/libmutter-${env:MUTTER_API_VERSION}.pc
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-clutter-${env:MUTTER_API_VERSION}.pc
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-cogl-${env:MUTTER_API_VERSION}.pc
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-cogl-pango-${env:MUTTER_API_VERSION}.pc
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/mutter-mtk-${env:MUTTER_API_VERSION}.pc
|
4
debian/libmutter-test-14.install
vendored
Normal file
4
debian/libmutter-test-14.install
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
usr/include/mutter-${env:MUTTER_API_VERSION}/meta-test
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/libmutter-test-${env:MUTTER_API_VERSION}.so
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/libmutter-test-${env:MUTTER_API_VERSION}.pc
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/MetaTest-${env:MUTTER_API_VERSION}.typelib
|
61
debian/libmutter-test-14.symbols
vendored
Normal file
61
debian/libmutter-test-14.symbols
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
libmutter-test-14.so libmutter-test-14 #MINVER#
|
||||||
|
* Build-Depends-Package: libmutter-14-dev
|
||||||
|
meta_async_waiter_destroy@Base 41.0
|
||||||
|
meta_async_waiter_new@Base 41.0
|
||||||
|
meta_async_waiter_process_x11_event@Base 41.0
|
||||||
|
meta_async_waiter_set_and_wait@Base 41.0
|
||||||
|
meta_backend_test_add_test_device@Base 41.0
|
||||||
|
meta_backend_test_get_gpu@Base 41.0
|
||||||
|
meta_backend_test_get_type@Base 41.0
|
||||||
|
meta_backend_test_remove_device@Base 41.0
|
||||||
|
meta_backend_test_set_is_lid_closed@Base 41.0
|
||||||
|
meta_check_monitor_configuration@Base 42~beta
|
||||||
|
meta_check_monitor_scales@Base 42~beta
|
||||||
|
meta_context_test_get_type@Base 41.0
|
||||||
|
meta_context_test_run_tests@Base 41.0
|
||||||
|
meta_context_test_wait_for_x11_display@Base 41.0
|
||||||
|
meta_create_monitor_test_setup@Base 42~beta
|
||||||
|
meta_create_test_context@Base 41.0
|
||||||
|
meta_create_test_monitor@Base 42~beta
|
||||||
|
meta_crtc_test_disable_gamma_lut@Base 43~rc
|
||||||
|
meta_crtc_test_get_type@Base 41.0
|
||||||
|
meta_find_window_from_title@Base 42~beta
|
||||||
|
meta_flush_input@Base 44~beta
|
||||||
|
meta_init_monitor_test_setup@Base 42~beta
|
||||||
|
meta_monitor_manager_test_emulate_hotplug@Base 41.0
|
||||||
|
meta_monitor_manager_test_get_tiled_monitor_count@Base 41.0
|
||||||
|
meta_monitor_manager_test_get_type@Base 41.0
|
||||||
|
meta_monitor_manager_test_read_current@Base 41.0
|
||||||
|
meta_monitor_manager_test_set_handles_transforms@Base 41.0
|
||||||
|
meta_monitor_manager_test_set_layout_mode@Base 44~rc
|
||||||
|
meta_orientation_to_string@Base 42~beta
|
||||||
|
meta_output_test_get_type@Base 41.0
|
||||||
|
meta_read_file@Base 42~beta
|
||||||
|
meta_ref_test_determine_ref_test_flag@Base 42~beta
|
||||||
|
meta_ref_test_verify_view@Base 42~beta
|
||||||
|
meta_sensors_proxy_mock_get@Base 41.0
|
||||||
|
meta_sensors_proxy_mock_set_orientation@Base 41.0
|
||||||
|
meta_sensors_proxy_mock_set_property@Base 41.0
|
||||||
|
meta_set_custom_monitor_config@Base 42~beta
|
||||||
|
meta_set_custom_monitor_config_full@Base 42~beta
|
||||||
|
meta_set_custom_monitor_system_config@Base 42~beta
|
||||||
|
meta_test_client_destroy@Base 41.0
|
||||||
|
meta_test_client_do@Base 41.0
|
||||||
|
meta_test_client_dov@Base 42~beta
|
||||||
|
meta_test_client_error_quark@Base 41.0
|
||||||
|
meta_test_client_find_window@Base 41.0
|
||||||
|
meta_test_client_get_id@Base 41.0
|
||||||
|
meta_test_client_new@Base 41.0
|
||||||
|
meta_test_client_quit@Base 41.0
|
||||||
|
meta_test_client_run@Base 44~beta
|
||||||
|
meta_test_client_wait@Base 41.0
|
||||||
|
meta_test_client_wait_for_window_shown@Base 41.0
|
||||||
|
meta_test_get_gpu@Base 42~beta
|
||||||
|
meta_test_monitor_destroy@Base 44~beta
|
||||||
|
meta_test_monitor_get_type@Base 44~beta
|
||||||
|
meta_test_monitor_new@Base 44~beta
|
||||||
|
meta_test_shell_get_type@Base 44.3-4~
|
||||||
|
meta_wait_for_monitors_changed@Base 46~beta
|
||||||
|
meta_wait_for_orientation@Base 42~beta
|
||||||
|
meta_wait_for_paint@Base 42~beta
|
||||||
|
meta_wait_for_possible_orientation_change@Base 42~beta
|
4
debian/mutter-14-tests.install
vendored
Executable file
4
debian/mutter-14-tests.install
vendored
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/dh-exec
|
||||||
|
usr/libexec/installed-tests/mutter-${MUTTER_API_VERSION}
|
||||||
|
usr/share/installed-tests/mutter-${MUTTER_API_VERSION}
|
||||||
|
usr/share/mutter-${MUTTER_API_VERSION}/tests
|
2
debian/mutter-common-bin.install
vendored
Normal file
2
debian/mutter-common-bin.install
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
usr/libexec/mutter-restart-helper
|
||||||
|
usr/libexec/mutter-x11-frames
|
7
debian/mutter-common.install
vendored
Executable file
7
debian/mutter-common.install
vendored
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/dh-exec
|
||||||
|
${env:deb_udevdir}/rules.d/*-mutter.rules
|
||||||
|
usr/share/GConf
|
||||||
|
usr/share/glib-2.0
|
||||||
|
usr/share/gnome-control-center
|
||||||
|
usr/share/locale
|
||||||
|
usr/share/man
|
1
debian/mutter.docs
vendored
Normal file
1
debian/mutter.docs
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
NEWS
|
2
debian/mutter.install
vendored
Normal file
2
debian/mutter.install
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
usr/bin
|
||||||
|
usr/lib/${DEB_HOST_MULTIARCH}/mutter-${env:MUTTER_API_VERSION}/plugins
|
16
debian/mutter.postinst
vendored
Normal file
16
debian/mutter.postinst
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
action="$1"
|
||||||
|
|
||||||
|
if [ "$action" = configure ]; then
|
||||||
|
# register the alternatives of x-window-manager manually
|
||||||
|
# because dh_installwm doesn't register manpage as slave yet.
|
||||||
|
update-alternatives --install /usr/bin/x-window-manager \
|
||||||
|
x-window-manager /usr/bin/mutter 60 \
|
||||||
|
--slave /usr/share/man/man1/x-window-manager.1.gz \
|
||||||
|
x-window-manager.1.gz /usr/share/man/man1/mutter.1.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
#DEBHELPER#
|
12
debian/mutter.prerm
vendored
Normal file
12
debian/mutter.prerm
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
action="$1"
|
||||||
|
|
||||||
|
if [ "$action" = remove ]; then
|
||||||
|
update-alternatives --remove x-window-manager \
|
||||||
|
/usr/bin/mutter
|
||||||
|
fi
|
||||||
|
|
||||||
|
#DEBHELPER#
|
118
debian/rules
vendored
118
debian/rules
vendored
@ -1,63 +1,91 @@
|
|||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
DEB_BUILD_OPTIONS=nocheck
|
include /usr/share/dpkg/default.mk
|
||||||
|
|
||||||
|
built_binaries := $(shell dh_listpackages)
|
||||||
|
|
||||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||||
export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs
|
export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1
|
||||||
|
export DPKG_GENSYMBOLS_CHECK_LEVEL = 4
|
||||||
|
|
||||||
|
# Following upstream method to compute the API version
|
||||||
|
MUTTER_MAJOR_VERSION = $(shell echo $(DEB_VERSION_UPSTREAM) | sed 's/[~.].*//')
|
||||||
|
MUTTER_API_VERSION = $(shell echo $$(( $(MUTTER_MAJOR_VERSION) - 32 )) )
|
||||||
|
MUTTER_SONAME = 0
|
||||||
|
|
||||||
|
export MUTTER_API_VERSION
|
||||||
|
export MUTTER_SONAME
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@ --with bash_completion
|
dh $@
|
||||||
|
|
||||||
CONFFLAGS =
|
CONFFLAGS = \
|
||||||
|
-Dauto_features=enabled \
|
||||||
|
-Degl_device=true \
|
||||||
|
-Dremote_desktop=true \
|
||||||
|
-Dwayland_eglstream=true
|
||||||
|
export deb_udevdir = $(shell pkg-config --variable=udevdir udev | sed s,^/,,)
|
||||||
|
|
||||||
ifeq ($(DEB_HOST_ARCH_OS),linux)
|
ifneq ($(filter i386,$(DEB_HOST_ARCH)),)
|
||||||
CONFFLAGS += \
|
CONFFLAGS +=-Dprofiler=false
|
||||||
-Dnetworkmanager=true \
|
|
||||||
-Dsystemd=true
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
|
||||||
CONFFLAGS += -Dtests=true
|
CONFFLAGS += --cross-file=$(DEB_HOST_GNU_TYPE)-gobject-introspection.ini
|
||||||
else
|
|
||||||
CONFFLAGS += -Dtests=false
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
override_dh_gnome_clean:
|
||||||
|
|
||||||
override_dh_auto_configure:
|
override_dh_auto_configure:
|
||||||
dh_auto_configure -- \
|
dh_auto_configure -- \
|
||||||
--libdir=/usr/lib \
|
|
||||||
-Dextensions-tool:bash_completion=enabled \
|
|
||||||
$(CONFFLAGS)
|
$(CONFFLAGS)
|
||||||
|
|
||||||
|
# Use meson test directly as it allows us to use the timeout multiplier
|
||||||
|
BUILDDIR=$(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)
|
||||||
|
TEST_COMMAND_BASE=env \
|
||||||
|
GIO_USE_VFS=local \
|
||||||
|
GIO_USE_VOLUME_MONITOR=unix \
|
||||||
|
GVFS_DISABLE_FUSE=1 \
|
||||||
|
dbus-run-session -- xvfb-run -s '+iglx -noreset' -a \
|
||||||
|
dh_auto_test -- -C $(BUILDDIR) --no-rebuild --verbose --timeout-multiplier 6 \
|
||||||
|
--no-stdsplit --print-errorlogs
|
||||||
|
TEST_COMMAND=$(TEST_COMMAND_BASE) --no-suite flaky
|
||||||
|
TEST_COMMAND_FLAKY=env DEB_ALLOW_FLAKY_TESTS=1 $(TEST_COMMAND_BASE) --suite flaky
|
||||||
|
|
||||||
|
# Ignore test failures on official architectures
|
||||||
|
# because it is believed that significant debian-installer/tasksel issues
|
||||||
|
# occur if task-gnome-desktop is not installable.
|
||||||
|
#
|
||||||
|
# We suspect that GNOME Shell might not work on mips64el and s390x.
|
||||||
|
# See gnome-settings-daemon where a simple mutter session fails there.
|
||||||
|
#
|
||||||
|
# But GNOME Shell is apparently usable on Ubuntu's riscv64:
|
||||||
|
# https://discourse.ubuntu.com/t/33807
|
||||||
|
#
|
||||||
|
# Please keep this list in sync with debian/tests/installed-tests
|
||||||
|
override_dh_auto_test:
|
||||||
|
ifeq (,$(filter mips64el riscv64 s390x,$(DEB_HOST_ARCH)))
|
||||||
|
$(TEST_COMMAND)
|
||||||
|
-$(TEST_COMMAND_FLAKY) --logbase flaky-tests
|
||||||
|
else
|
||||||
|
-$(TEST_COMMAND)
|
||||||
|
-$(TEST_COMMAND_FLAKY) --logbase flaky-tests
|
||||||
|
endif
|
||||||
|
|
||||||
|
# debhelper >= 13.4 makes all of /usr/libexec executable, which is not
|
||||||
|
# quite right for installed-tests
|
||||||
|
override_dh_fixperms:
|
||||||
|
dh_fixperms -Xusr/libexec/installed-tests
|
||||||
|
ifneq ($(filter %-tests,$(built_binaries)),)
|
||||||
|
chmod --recursive --changes a+rX,u+w,og-w debian/*-tests/usr/libexec/installed-tests
|
||||||
|
endif
|
||||||
|
|
||||||
|
override_dh_girepository:
|
||||||
|
dh_girepository /usr/lib/$(DEB_HOST_MULTIARCH)/mutter-$(MUTTER_API_VERSION)
|
||||||
|
|
||||||
override_dh_makeshlibs:
|
override_dh_makeshlibs:
|
||||||
dh_makeshlibs -X/usr/lib/gnome-shell/
|
dh_makeshlibs -V
|
||||||
|
|
||||||
override_dh_shlibdeps:
|
override_dh_shlibdeps:
|
||||||
# gnome-shell uses mutters private mutter-clutter-1.0.so etc.
|
dh_shlibdeps -Llibmutter-$(MUTTER_API_VERSION)-$(MUTTER_SONAME) \
|
||||||
dh_shlibdeps -l"usr/lib/$(DEB_HOST_MULTIARCH)/mutter"
|
-l/usr/lib/$(DEB_HOST_MULTIARCH)/mutter-$(MUTTER_API_VERSION)
|
||||||
|
|
||||||
# Upstream test timeouts assume an otherwise unloaded system, but that
|
|
||||||
# isn't necessarily the case for a porterbox or multiple parallel builds.
|
|
||||||
# Keep the timeout reasonably short for architectures where interactive
|
|
||||||
# debugging is more likely, but extend it a lot on architectures that might
|
|
||||||
# be very slow or using qemu for buildds.
|
|
||||||
ifneq ($(filter amd64 i386,$(DEB_HOST_ARCH_CPU)),)
|
|
||||||
test_timeout_multiplier = 3
|
|
||||||
else
|
|
||||||
test_timeout_multiplier = 20
|
|
||||||
endif
|
|
||||||
|
|
||||||
meson_test_options = --timeout-multiplier $(test_timeout_multiplier)
|
|
||||||
|
|
||||||
ifneq ($(filter mips%,$(DEB_HOST_ARCH_CPU)),)
|
|
||||||
# gnome-shell on mips(64)el works on a real GPU (in practice usually an
|
|
||||||
# AMD GPU), but crashes when using llvmpipe or softpipe, which is all that
|
|
||||||
# is available on the buildds, so we only run the unit tests at build time
|
|
||||||
# and skip the tests that would run the whole Shell. See discussion in
|
|
||||||
# https://salsa.debian.org/gnome-team/gnome-shell/-/merge_requests/71
|
|
||||||
meson_test_options += --no-suite shell
|
|
||||||
endif
|
|
||||||
|
|
||||||
override_dh_auto_test:
|
|
||||||
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
|
||||||
env XDG_CACHE_HOME="$(shell mktemp -d -t cache-XXXXXXXX)" \
|
|
||||||
dbus-run-session xvfb-run -a dh_auto_test -- $(meson_test_options)
|
|
||||||
endif
|
|
||||||
|
3
debian/salsa-ci.yml
vendored
3
debian/salsa-ci.yml
vendored
@ -2,6 +2,3 @@
|
|||||||
include:
|
include:
|
||||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
||||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
|
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
|
||||||
|
|
||||||
variables:
|
|
||||||
RELEASE: 'experimental'
|
|
||||||
|
1
debian/shlibs.local
vendored
1
debian/shlibs.local
vendored
@ -1 +0,0 @@
|
|||||||
libgnome-bluetooth-applet 0 gnome-bluetooth (>= 3.0.0)
|
|
2
debian/source/format
vendored
2
debian/source/format
vendored
@ -1 +1 @@
|
|||||||
3.0 (native)
|
3.0 (quilt)
|
||||||
|
2
debian/source/lintian-overrides
vendored
2
debian/source/lintian-overrides
vendored
@ -0,0 +1,2 @@
|
|||||||
|
# We export this in debian/rules
|
||||||
|
dh-exec-subst-unknown-variable MUTTER_API_VERSION [debian/mutter-14-tests.install:*]
|
45
debian/source_gnome-shell.py
vendored
45
debian/source_gnome-shell.py
vendored
@ -1,45 +0,0 @@
|
|||||||
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'])
|
|
9
debian/tests/build
vendored
Normal file
9
debian/tests/build
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "debian/rules override_dh_auto_configure "
|
||||||
|
debian/rules override_dh_auto_configure
|
||||||
|
|
||||||
|
echo "debian/rules override_dh_auto_build"
|
||||||
|
debian/rules override_dh_auto_build
|
17
debian/tests/control
vendored
Normal file
17
debian/tests/control
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Tests: build
|
||||||
|
Depends: @builddeps@
|
||||||
|
Restrictions: allow-stderr
|
||||||
|
|
||||||
|
Tests: libmutter-14-dev
|
||||||
|
Depends: build-essential,
|
||||||
|
dbus-daemon,
|
||||||
|
libmutter-14-dev,
|
||||||
|
xauth,
|
||||||
|
xvfb
|
||||||
|
Restrictions: allow-stderr superficial
|
||||||
|
|
||||||
|
Tests: installed-tests
|
||||||
|
Classes: desktop
|
||||||
|
Depends: gnome-desktop-testing,
|
||||||
|
mutter-14-tests
|
||||||
|
Restrictions: allow-stderr skippable
|
35
debian/tests/installed-tests
vendored
Executable file
35
debian/tests/installed-tests
vendored
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
namespace=mutter-14/
|
||||||
|
|
||||||
|
if [ -z "${HOME-}" ] || ! [ -w "${HOME}" ]; then
|
||||||
|
export HOME="${AUTOPKGTEST_TMP}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$AUTOPKGTEST_TMP"
|
||||||
|
|
||||||
|
if [ -z "$(ginsttest-runner -l "$namespace")" ]; then
|
||||||
|
echo "Error: no installed-tests found matching $namespace" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
e=0
|
||||||
|
ginsttest-runner \
|
||||||
|
--log-directory "$AUTOPKGTEST_ARTIFACTS" \
|
||||||
|
--tap \
|
||||||
|
"$namespace" || e="$?"
|
||||||
|
|
||||||
|
if [ "$e" -ne 0 ]; then
|
||||||
|
arch="$(dpkg --print-architecture)"
|
||||||
|
case "$arch" in
|
||||||
|
# Please keep this list in sync with debian/rules
|
||||||
|
(mips64el|riscv64|s390x)
|
||||||
|
echo "# Ignoring test failure on $arch"
|
||||||
|
exit 77
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit "$e"
|
||||||
|
fi
|
41
debian/tests/libmutter-14-dev
vendored
Executable file
41
debian/tests/libmutter-14-dev
vendored
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# autopkgtest check: Build and run a program against libmutter, to verify
|
||||||
|
# that the headers and pkg-config file are installed correctly
|
||||||
|
# (C) 2012 Canonical Ltd.
|
||||||
|
# (C) 2018-2019 Simon McVittie
|
||||||
|
# Authors: Martin Pitt, Simon McVittie
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
WORKDIR=$(mktemp -d)
|
||||||
|
export HOME="$WORKDIR"
|
||||||
|
export XDG_RUNTIME_DIR="$WORKDIR"
|
||||||
|
cleanup () {
|
||||||
|
rm -fr "$WORKDIR"
|
||||||
|
}
|
||||||
|
trap cleanup 0 INT QUIT ABRT PIPE TERM
|
||||||
|
cd "$WORKDIR"
|
||||||
|
|
||||||
|
if [ -n "${DEB_HOST_GNU_TYPE:-}" ]; then
|
||||||
|
CROSS_COMPILE="$DEB_HOST_GNU_TYPE-"
|
||||||
|
else
|
||||||
|
CROSS_COMPILE=
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<'EOF' > trivial.c
|
||||||
|
#include <meta/util.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
g_assert_false(meta_is_wayland_compositor());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Deliberately word-splitting pkg-config's output:
|
||||||
|
# shellcheck disable=SC2046
|
||||||
|
"${CROSS_COMPILE}gcc" -o trivial trivial.c $("${CROSS_COMPILE}pkg-config" --cflags --libs libmutter-14)
|
||||||
|
echo "build: OK"
|
||||||
|
[ -x trivial ]
|
||||||
|
xvfb-run -a dbus-run-session -- ./trivial
|
||||||
|
echo "run: OK"
|
14
debian/ubuntu-session-mods/ubuntu.json
vendored
14
debian/ubuntu-session-mods/ubuntu.json
vendored
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"parentMode": "user",
|
|
||||||
"stylesheetName": "Yaru/gnome-shell.css",
|
|
||||||
"colorScheme": "prefer-light",
|
|
||||||
"themeResourceName": "theme/Yaru/gnome-shell-theme.gresource",
|
|
||||||
"iconsResourceName": "theme/Yaru/gnome-shell-icons.gresource",
|
|
||||||
"debugFlags": ["backtrace-crashes-all"],
|
|
||||||
"enabledExtensions": [
|
|
||||||
"ubuntu-dock@ubuntu.com",
|
|
||||||
"ubuntu-appindicators@ubuntu.com",
|
|
||||||
"ding@rastersoft.com",
|
|
||||||
"tiling-assistant@ubuntu.com"
|
|
||||||
]
|
|
||||||
}
|
|
10
debian/upstream/metadata
vendored
10
debian/upstream/metadata
vendored
@ -1,5 +1,5 @@
|
|||||||
Bug-Database: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues
|
---
|
||||||
Bug-Submit: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/new
|
Bug-Database: https://gitlab.gnome.org/GNOME/mutter/-/issues
|
||||||
Name: GNOME Shell
|
Bug-Submit: https://gitlab.gnome.org/GNOME/mutter/-/issues/new
|
||||||
Repository: https://gitlab.gnome.org/gnome/gnome-shell.git
|
Repository: https://gitlab.gnome.org/GNOME/mutter.git
|
||||||
Repository-Browse: https://gitlab.gnome.org/GNOME/gnome-shell/
|
Repository-Browse: https://gitlab.gnome.org/GNOME/mutter
|
||||||
|
2
debian/watch
vendored
2
debian/watch
vendored
@ -1,4 +1,4 @@
|
|||||||
version=4
|
version=4
|
||||||
opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \
|
opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \
|
||||||
https://download.gnome.org/sources/@PACKAGE@/cache.json \
|
https://download.gnome.org/sources/@PACKAGE@/cache.json \
|
||||||
[\d.]+/@PACKAGE@-([\d.]+\.?(?:beta|rc)?[\d.]*)@ARCHIVE_EXT@
|
[\d.]+/@PACKAGE@-([\d.]+)@ARCHIVE_EXT@
|
||||||
|
22
main.sh
22
main.sh
@ -1,19 +1,25 @@
|
|||||||
DEBIAN_FRONTEND=noninteractive
|
#! /bin/bash
|
||||||
|
|
||||||
apt-mark hold pbuilder
|
set -e
|
||||||
apt install gnome-pkg-tools -y
|
|
||||||
|
VERSION="46.4"
|
||||||
|
|
||||||
|
source ./pika-build-config.sh
|
||||||
|
|
||||||
|
echo "$PIKA_BUILD_ARCH" > pika-build-arch
|
||||||
|
|
||||||
# Clone Upstream
|
# Clone Upstream
|
||||||
git clone https://gitlab.gnome.org/GNOME/gnome-shell -b 45.0 gnome-shell
|
git clone --depth=1 https://gitlab.gnome.org/GNOME/mutter -b "$VERSION"
|
||||||
cp -rvf ./debian ./gnome-shell
|
cp -rvf ./debian ./mutter
|
||||||
cd ./gnome-shell
|
cd ./mutter
|
||||||
for i in $(cat ../patches/series) ; do echo "Applying Patch: $i" && patch -Np1 -i ../patches/$i || bash -c "echo "Applying Patch $i Failed!" && exit 2"; done
|
|
||||||
|
for i in $(cat ../patches/series) ; do echo "Applying Patch: $i" && patch -Np1 -i ../patches/$i || echo "Applying Patch $i Failed!"; done
|
||||||
|
|
||||||
# Get build deps
|
# Get build deps
|
||||||
apt-get build-dep ./ -y
|
apt-get build-dep ./ -y
|
||||||
|
|
||||||
# Build package
|
# Build package
|
||||||
LOGNAME=root dh_make --createorig -y -l -p gnome-shell_45.1
|
LOGNAME=root dh_make --createorig -y -l -p mutter_"$VERSION" || echo "dh-make: Ignoring Last Error"
|
||||||
dpkg-buildpackage --no-sign
|
dpkg-buildpackage --no-sign
|
||||||
|
|
||||||
# Move the debs to output
|
# Move the debs to output
|
||||||
|
@ -1 +0,0 @@
|
|||||||
https://gitlab.gnome.org/GNOME/gnome-shell
|
|
@ -1,24 +0,0 @@
|
|||||||
From: =?utf-8?q?Jeremy_B=C3=ADcha?= <jeremy.bicha@canonical.com>
|
|
||||||
Date: Fri, 1 Sep 2023 11:29:45 -0400
|
|
||||||
Subject: Revert "keyboard: Spawn "tecla" to show keyboard map"
|
|
||||||
|
|
||||||
Tecla is not ready yet:
|
|
||||||
https://gitlab.gnome.org/GNOME/tecla/-/issues/7
|
|
||||||
|
|
||||||
This reverts commit 04aaa4b67bffbfe6d472e7f25c8e892f43151ed2.
|
|
||||||
---
|
|
||||||
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 8d98e16..106f1e8 100644
|
|
||||||
--- a/js/ui/status/keyboard.js
|
|
||||||
+++ b/js/ui/status/keyboard.js
|
|
||||||
@@ -1103,6 +1103,6 @@ class InputSourceIndicator extends PanelMenu.Button {
|
|
||||||
if (xkbVariant.length > 0)
|
|
||||||
description = `${description}\t${xkbVariant}`;
|
|
||||||
|
|
||||||
- Util.spawn(['tecla', description]);
|
|
||||||
+ Util.spawn(['gkbd-keyboard-display', '-l', description]);
|
|
||||||
}
|
|
||||||
});
|
|
@ -1,95 +0,0 @@
|
|||||||
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 0de195e..ba49101 100644
|
|
||||||
--- a/src/st/st-entry.c
|
|
||||||
+++ b/src/st/st-entry.c
|
|
||||||
@@ -1101,6 +1101,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)
|
|
||||||
{
|
|
@ -1,107 +0,0 @@
|
|||||||
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.
|
|
||||||
|
|
||||||
Forwarded: not-needed
|
|
||||||
---
|
|
||||||
js/misc/dependencies.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/misc/dependencies.js b/js/misc/dependencies.js
|
|
||||||
index c61753e..7a827bc 100644
|
|
||||||
--- a/js/misc/dependencies.js
|
|
||||||
+++ b/js/misc/dependencies.js
|
|
||||||
@@ -7,7 +7,7 @@ import gi from 'gi';
|
|
||||||
import 'gi://AccountsService?version=1.0';
|
|
||||||
import 'gi://Atk?version=1.0';
|
|
||||||
import 'gi://Atspi?version=2.0';
|
|
||||||
-import 'gi://Gcr?version=4';
|
|
||||||
+import 'gi://Gcr?version=3';
|
|
||||||
import 'gi://Gdk?version=4.0';
|
|
||||||
import 'gi://Gdm?version=1.0';
|
|
||||||
import 'gi://Geoclue?version=2.0';
|
|
||||||
diff --git a/meson.build b/meson.build
|
|
||||||
index 70ba711..8e1f1f4 100644
|
|
||||||
--- a/meson.build
|
|
||||||
+++ b/meson.build
|
|
||||||
@@ -21,7 +21,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'
|
|
||||||
@@ -74,7 +74,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 070312b..6a9b266 100644
|
|
||||||
--- a/src/meson.build
|
|
||||||
+++ b/src/meson.build
|
|
||||||
@@ -217,7 +217,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',
|
|
||||||
'GdkPixbuf-2.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>
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
From: Jeremy Bicha <jeremy.bicha@canonical.com>
|
|
||||||
Date: Fri, 17 Feb 2023 15:35:20 -0500
|
|
||||||
Subject: Revert "tests: Fail on warnings too"
|
|
||||||
|
|
||||||
This reverts commit 207b9bb3c0a582b830218fd1b6e8760684adbc48.
|
|
||||||
---
|
|
||||||
tests/meson.build | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/tests/meson.build b/tests/meson.build
|
|
||||||
index a22a0d9..59070c3 100644
|
|
||||||
--- a/tests/meson.build
|
|
||||||
+++ b/tests/meson.build
|
|
||||||
@@ -56,7 +56,7 @@ libgvc_path = fs.parent(libgvc.get_variable('libgvc').full_path())
|
|
||||||
background_file = files(join_paths('data', 'background.png'))
|
|
||||||
|
|
||||||
shell_testenv = environment()
|
|
||||||
-shell_testenv.set('G_DEBUG', 'fatal-warnings')
|
|
||||||
+shell_testenv.set('G_DEBUG', 'fatal-criticals')
|
|
||||||
shell_testenv.set('G_MESSAGES_DEBUG', 'GNOME Shell')
|
|
||||||
shell_testenv.set('GNOME_SHELL_DATADIR', data_builddir)
|
|
||||||
shell_testenv.set('GNOME_SHELL_BUILDDIR', src_builddir)
|
|
1912
patches/debian/Support-Dynamic-triple-double-buffering.patch
Normal file
1912
patches/debian/Support-Dynamic-triple-double-buffering.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,32 +0,0 @@
|
|||||||
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,22 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Fri, 18 Feb 2022 01:16:20 +0100
|
||||||
|
Subject: meson: Do not mark CI test tools as required
|
||||||
|
|
||||||
|
This way we can mark them as nocheck without build issues.
|
||||||
|
---
|
||||||
|
meson.build | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index e29c500..c72be33 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -422,7 +422,7 @@ if have_tests
|
||||||
|
|
||||||
|
add_test_setup('plain')
|
||||||
|
|
||||||
|
- xvfb = find_program('xvfb-run')
|
||||||
|
+ xvfb = find_program('xvfb-run', required: false)
|
||||||
|
xvfb_args = [
|
||||||
|
'-a',
|
||||||
|
'-s',
|
26
patches/debian/tests-Do-not-run-screencast-tests.patch
Normal file
26
patches/debian/tests-Do-not-run-screencast-tests.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Thu, 20 May 2021 02:42:12 +0200
|
||||||
|
Subject: tests: Do not run screencast tests
|
||||||
|
|
||||||
|
They require to have a full running pipewire (that requires a system
|
||||||
|
dbus daemon) so, we can't easily get one up and running while building.
|
||||||
|
|
||||||
|
So let's disable this for now
|
||||||
|
---
|
||||||
|
src/tests/native-headless.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/native-headless.c b/src/tests/native-headless.c
|
||||||
|
index 39393fc..b54469b 100644
|
||||||
|
--- a/src/tests/native-headless.c
|
||||||
|
+++ b/src/tests/native-headless.c
|
||||||
|
@@ -27,7 +27,8 @@ static void
|
||||||
|
init_tests (MetaContext *context)
|
||||||
|
{
|
||||||
|
init_virtual_monitor_tests (context);
|
||||||
|
- init_screen_cast_tests ();
|
||||||
|
+ // init_screen_cast_tests ();
|
||||||
|
+ (void) init_screen_cast_tests;
|
||||||
|
init_bezier_tests ();
|
||||||
|
}
|
||||||
|
|
@ -1,249 +0,0 @@
|
|||||||
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
|
||||||
Date: Tue, 1 Mar 2022 11:57:20 +0100
|
|
||||||
Subject: gdm/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 | 129 +++++++++++++++++++++++++++++++++++++++++++++------------
|
|
||||||
1 file changed, 102 insertions(+), 27 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/js/gdm/util.js b/js/gdm/util.js
|
|
||||||
index 89ad544..3697ecd 100644
|
|
||||||
--- a/js/gdm/util.js
|
|
||||||
+++ b/js/gdm/util.js
|
|
||||||
@@ -43,6 +43,7 @@ export const DISABLE_USER_LIST_KEY = 'disable-user-list';
|
|
||||||
|
|
||||||
// Give user 48ms to read each character of a PAM message
|
|
||||||
const USER_READ_TIME = 48;
|
|
||||||
+const FINGERPRINT_SERVICE_PROXY_TIMEOUT = 5000;
|
|
||||||
const FINGERPRINT_ERROR_TIMEOUT_WAIT = 15;
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -108,16 +109,50 @@ export class ShellUserVerifier 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._fprintManager = new FprintManagerProxy(Gio.DBus.system,
|
|
||||||
- 'net.reactivated.Fprint',
|
|
||||||
- '/net/reactivated/Fprint/Manager',
|
|
||||||
- null,
|
|
||||||
- null,
|
|
||||||
- Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES);
|
|
||||||
+ 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._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
|
|
||||||
@@ -136,6 +171,7 @@ export class ShellUserVerifier extends Signals.EventEmitter {
|
|
||||||
this.reauthenticating = false;
|
|
||||||
|
|
||||||
this._failCounter = 0;
|
|
||||||
+ this._startedServices = new Set();
|
|
||||||
this._unavailableServices = new Set();
|
|
||||||
|
|
||||||
this._credentialManagers = {};
|
|
||||||
@@ -225,6 +261,7 @@ export class ShellUserVerifier extends Signals.EventEmitter {
|
|
||||||
|
|
||||||
this._clearUserVerifier();
|
|
||||||
this._clearMessageQueue();
|
|
||||||
+ this._startedServices.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
destroy() {
|
|
||||||
@@ -345,27 +382,52 @@ export class ShellUserVerifier 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) {
|
|
||||||
@@ -466,6 +528,7 @@ export class ShellUserVerifier 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),
|
|
||||||
@@ -519,6 +582,10 @@ export class ShellUserVerifier 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');
|
|
||||||
@@ -557,11 +624,14 @@ export class ShellUserVerifier 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) {
|
|
||||||
@@ -654,8 +724,9 @@ export class ShellUserVerifier 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');
|
|
||||||
}
|
|
||||||
@@ -736,6 +807,10 @@ export class ShellUserVerifier 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
|
|
@ -1,249 +0,0 @@
|
|||||||
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 | 61 +++++++++++++++++++++++++++++++++++++++++-------------
|
|
||||||
src/shell-global.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
src/shell-global.h | 4 ++++
|
|
||||||
3 files changed, 103 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/main.c b/src/main.c
|
|
||||||
index dca5f64..aa2f4dc 100644
|
|
||||||
--- a/src/main.c
|
|
||||||
+++ b/src/main.c
|
|
||||||
@@ -374,14 +374,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));
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -483,6 +483,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,
|
|
||||||
@@ -614,6 +650,7 @@ main (int argc, char **argv)
|
|
||||||
g_autoptr (GFile) automation_script = NULL;
|
|
||||||
g_autofree char *cwd = NULL;
|
|
||||||
GError *error = NULL;
|
|
||||||
+ const char *debug_flags;
|
|
||||||
int ecode = EXIT_SUCCESS;
|
|
||||||
|
|
||||||
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
|
|
||||||
@@ -649,17 +686,6 @@ main (int argc, char **argv)
|
|
||||||
g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE);
|
|
||||||
g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE);
|
|
||||||
|
|
||||||
- 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);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
if (script_path)
|
|
||||||
automation_script = g_file_new_for_commandline_arg_and_cwd (script_path, cwd);
|
|
||||||
|
|
||||||
@@ -668,10 +694,16 @@ main (int argc, char **argv)
|
|
||||||
* resolve internal modules.
|
|
||||||
*/
|
|
||||||
_shell_global_init ("session-mode", session_mode,
|
|
||||||
+ "debug-flags", debug_flags,
|
|
||||||
"force-animations", force_animations,
|
|
||||||
"automation-script", automation_script,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
+ g_signal_connect (shell_global_get (), "notify::debug-flags",
|
|
||||||
+ G_CALLBACK (global_notify_debug_flags), NULL);
|
|
||||||
+
|
|
||||||
+ setup_debug_signal_listners ();
|
|
||||||
+
|
|
||||||
/* Setup Meta _after_ the Shell global to avoid GjsContext
|
|
||||||
* iterating on the main loop once Meta starts adding events
|
|
||||||
*/
|
|
||||||
@@ -681,7 +713,8 @@ main (int argc, char **argv)
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
- 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 ();
|
|
||||||
diff --git a/src/shell-global.c b/src/shell-global.c
|
|
||||||
index 66b2f57..2a6e7fd 100644
|
|
||||||
--- a/src/shell-global.c
|
|
||||||
+++ b/src/shell-global.c
|
|
||||||
@@ -62,6 +62,7 @@ struct _ShellGlobal {
|
|
||||||
Display *xdisplay;
|
|
||||||
|
|
||||||
char *session_mode;
|
|
||||||
+ char *debug_flags;
|
|
||||||
|
|
||||||
XserverRegion input_region;
|
|
||||||
|
|
||||||
@@ -123,6 +124,7 @@ enum {
|
|
||||||
PROP_SWITCHEROO_CONTROL,
|
|
||||||
PROP_FORCE_ANIMATIONS,
|
|
||||||
PROP_AUTOMATION_SCRIPT,
|
|
||||||
+ PROP_DEBUG_FLAGS,
|
|
||||||
|
|
||||||
N_PROPS
|
|
||||||
};
|
|
||||||
@@ -255,6 +257,9 @@ shell_global_set_property(GObject *object,
|
|
||||||
case PROP_AUTOMATION_SCRIPT:
|
|
||||||
g_set_object (&global->automation_script, g_value_get_object (value));
|
|
||||||
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;
|
|
||||||
@@ -347,6 +352,9 @@ shell_global_get_property(GObject *object,
|
|
||||||
case PROP_AUTOMATION_SCRIPT:
|
|
||||||
g_value_set_object (value, global->automation_script);
|
|
||||||
break;
|
|
||||||
+ case PROP_DEBUG_FLAGS:
|
|
||||||
+ g_value_set_string (value, global->debug_flags);
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
@@ -704,6 +712,13 @@ shell_global_class_init (ShellGlobalClass *klass)
|
|
||||||
G_TYPE_FILE,
|
|
||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2004,3 +2019,40 @@ shell_global_get_app_usage (ShellGlobal *global)
|
|
||||||
global->app_usage = g_object_new (SHELL_TYPE_APP_USAGE, NULL);
|
|
||||||
return global->app_usage;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * 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 8399330..683f75a 100644
|
|
||||||
--- a/src/shell-global.h
|
|
||||||
+++ b/src/shell-global.h
|
|
||||||
@@ -99,6 +99,10 @@ ShellAppSystem * shell_global_get_app_system (ShellGlobal *global);
|
|
||||||
|
|
||||||
ShellAppUsage * shell_global_get_app_usage (ShellGlobal *global);
|
|
||||||
|
|
||||||
+const char * shell_global_get_debug_flags (ShellGlobal *global);
|
|
||||||
+void shell_global_set_debug_flags (ShellGlobal *global,
|
|
||||||
+ const char *debug_flags);
|
|
||||||
+
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __SHELL_GLOBAL_H__ */
|
|
@ -1,44 +0,0 @@
|
|||||||
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
|
||||||
Date: Tue, 3 Oct 2023 15:00:45 +0800
|
|
||||||
Subject: layout: Destroy panel barrier on shutdown
|
|
||||||
|
|
||||||
It was being leaked, which is detected on mutter shutdown.
|
|
||||||
|
|
||||||
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3011
|
|
||||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2975>
|
|
||||||
(cherry picked from commit 4e2dddd18ef27da768f8b0fc2c8e243a3b207f21)
|
|
||||||
|
|
||||||
Origin: upstream, after 45.0
|
|
||||||
---
|
|
||||||
js/ui/layout.js | 7 ++++++-
|
|
||||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/js/ui/layout.js b/js/ui/layout.js
|
|
||||||
index 06ed440..95e34f2 100644
|
|
||||||
--- a/js/ui/layout.js
|
|
||||||
+++ b/js/ui/layout.js
|
|
||||||
@@ -243,6 +243,7 @@ export const LayoutManager = GObject.registerClass({
|
|
||||||
}
|
|
||||||
|
|
||||||
this._destroyHotCorners();
|
|
||||||
+ this._destroyPanelBarrier();
|
|
||||||
this.uiGroup.destroy();
|
|
||||||
});
|
|
||||||
|
|
||||||
@@ -575,11 +576,15 @@ export const LayoutManager = GObject.registerClass({
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
- _updatePanelBarrier() {
|
|
||||||
+ _destroyPanelBarrier() {
|
|
||||||
if (this._rightPanelBarrier) {
|
|
||||||
this._rightPanelBarrier.destroy();
|
|
||||||
this._rightPanelBarrier = null;
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ _updatePanelBarrier() {
|
|
||||||
+ this._destroyPanelBarrier();
|
|
||||||
|
|
||||||
if (!this.primaryMonitor)
|
|
||||||
return;
|
|
@ -1,172 +0,0 @@
|
|||||||
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 3ba9b96..4d5cd5a 100644
|
|
||||||
--- a/js/ui/layout.js
|
|
||||||
+++ b/js/ui/layout.js
|
|
||||||
@@ -981,22 +981,38 @@ export const LayoutManager = GObject.registerClass({
|
|
||||||
return ws.get_work_area_for_monitor(monitorIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ _findIndexForRect(x, y, width, height) {
|
|
||||||
+ const rect = new Mtk.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();
|
|
||||||
- const rect = new Mtk.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) {
|
|
||||||
const laters = global.compositor.get_laters();
|
|
||||||
diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js
|
|
||||||
index ab8150b..13da38f 100644
|
|
||||||
--- a/js/ui/magnifier.js
|
|
||||||
+++ b/js/ui/magnifier.js
|
|
||||||
@@ -51,6 +51,8 @@ const MouseSpriteContent = GObject.registerClass({
|
|
||||||
}, class MouseSpriteContent extends GObject.Object {
|
|
||||||
_init() {
|
|
||||||
super._init();
|
|
||||||
+ this._scale = 1.0;
|
|
||||||
+ this._monitorScale = 1.0;
|
|
||||||
this._texture = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -58,7 +60,10 @@ const 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) {
|
|
||||||
@@ -75,6 +80,29 @@ const 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;
|
|
||||||
}
|
|
||||||
@@ -89,7 +117,19 @@ const 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();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -121,6 +161,8 @@ export 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);
|
|
||||||
});
|
|
||||||
@@ -128,6 +170,13 @@ export 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.
|
|
||||||
@@ -269,6 +318,8 @@ export class Magnifier extends Signals.EventEmitter {
|
|
||||||
this.xMouse = xMouse;
|
|
||||||
this.yMouse = yMouse;
|
|
||||||
|
|
||||||
+ this._updateContentScale();
|
|
||||||
+
|
|
||||||
let sysMouseOverAny = false;
|
|
||||||
this._zoomRegions.forEach(zoomRegion => {
|
|
||||||
if (zoomRegion.scrollToMousePos())
|
|
@ -1,47 +0,0 @@
|
|||||||
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 619136a..0aa224b 100644
|
|
||||||
--- a/src/main.c
|
|
||||||
+++ b/src/main.c
|
|
||||||
@@ -59,6 +59,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 08952b8..e60b574 100644
|
|
||||||
--- a/src/shell-global.c
|
|
||||||
+++ b/src/shell-global.c
|
|
||||||
@@ -2045,6 +2045,8 @@ shell_global_get_debug_flags (ShellGlobal *global)
|
|
||||||
* - 'backtrace-segfaults'
|
|
||||||
* - 'backtrace-aborts'
|
|
||||||
* - 'backtrace-math-errors'
|
|
||||||
+ * - 'backtrace-crashes-all'
|
|
||||||
+ * - 'backtrace-all'
|
|
||||||
* - 'all'
|
|
||||||
*/
|
|
||||||
void
|
|
@ -1,169 +0,0 @@
|
|||||||
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 aa2f4dc..619136a 100644
|
|
||||||
--- a/src/main.c
|
|
||||||
+++ b/src/main.c
|
|
||||||
@@ -43,16 +43,26 @@ static char *session_mode = NULL;
|
|
||||||
static int caught_signal = 0;
|
|
||||||
static gboolean force_animations = FALSE;
|
|
||||||
static char *script_path = NULL;
|
|
||||||
+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,
|
|
||||||
@@ -376,13 +386,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
|
|
||||||
@@ -493,10 +513,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))
|
|
||||||
{
|
|
||||||
@@ -649,8 +682,9 @@ main (int argc, char **argv)
|
|
||||||
g_autoptr (MetaContext) context = NULL;
|
|
||||||
g_autoptr (GFile) automation_script = NULL;
|
|
||||||
g_autofree char *cwd = 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);
|
|
||||||
@@ -694,7 +728,7 @@ main (int argc, char **argv)
|
|
||||||
* resolve internal modules.
|
|
||||||
*/
|
|
||||||
_shell_global_init ("session-mode", session_mode,
|
|
||||||
- "debug-flags", debug_flags,
|
|
||||||
+ "debug-flags", debug_flags_string,
|
|
||||||
"force-animations", force_animations,
|
|
||||||
"automation-script", automation_script,
|
|
||||||
NULL);
|
|
||||||
@@ -713,8 +747,14 @@ main (int argc, char **argv)
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
- 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 ();
|
|
||||||
diff --git a/src/shell-global.c b/src/shell-global.c
|
|
||||||
index 2a6e7fd..08952b8 100644
|
|
||||||
--- a/src/shell-global.c
|
|
||||||
+++ b/src/shell-global.c
|
|
||||||
@@ -2037,11 +2037,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,
|
|
@ -1,30 +0,0 @@
|
|||||||
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 dec0efa..dca5f64 100644
|
|
||||||
--- a/src/main.c
|
|
||||||
+++ b/src/main.c
|
|
||||||
@@ -444,6 +444,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
|
|
@ -1,74 +0,0 @@
|
|||||||
From: "robert.mader@collabora.com" <robert.mader@collabora.com>
|
|
||||||
Date: Wed, 27 Sep 2023 01:10:45 +0200
|
|
||||||
Subject: overview: Handle unredirection in OverviewShown state machine
|
|
||||||
|
|
||||||
Under certain unknown circumstances currently not every
|
|
||||||
`disable_unredirect_for_display()` gets matched with an
|
|
||||||
`enable_unredirect_for_display()` when closing the overview.
|
|
||||||
|
|
||||||
As we only want to not disable unredirection when hidden and we nowadays
|
|
||||||
have a state machine that ensures we transition to and from one state to
|
|
||||||
another only once, handle unredirection en-/disablement as part of the
|
|
||||||
state transition.
|
|
||||||
|
|
||||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2970>
|
|
||||||
(cherry picked from commit a94fcee9616ef52d0f1d6453515a104d69c6cb92)
|
|
||||||
|
|
||||||
Origin: upstream, after 45.0
|
|
||||||
---
|
|
||||||
js/ui/overview.js | 14 +++++---------
|
|
||||||
1 file changed, 5 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/js/ui/overview.js b/js/ui/overview.js
|
|
||||||
index 66a83cf..2b173a5 100644
|
|
||||||
--- a/js/ui/overview.js
|
|
||||||
+++ b/js/ui/overview.js
|
|
||||||
@@ -305,6 +305,11 @@ export class Overview extends Signals.EventEmitter {
|
|
||||||
`${this._shownState} to ${state}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (this._shownState === OverviewShownState.HIDDEN)
|
|
||||||
+ Meta.disable_unredirect_for_display(global.display);
|
|
||||||
+ else if (state === OverviewShownState.HIDDEN)
|
|
||||||
+ Meta.enable_unredirect_for_display(global.display);
|
|
||||||
+
|
|
||||||
this._shownState = state;
|
|
||||||
this.emit(OVERVIEW_SHOWN_TRANSITIONS[state].signal);
|
|
||||||
}
|
|
||||||
@@ -411,8 +416,6 @@ export class Overview extends Signals.EventEmitter {
|
|
||||||
|
|
||||||
_gestureUpdate(tracker, progress) {
|
|
||||||
if (!this._shown) {
|
|
||||||
- Meta.disable_unredirect_for_display(global.display);
|
|
||||||
-
|
|
||||||
this._shown = true;
|
|
||||||
this._visible = true;
|
|
||||||
this._visibleTarget = true;
|
|
||||||
@@ -567,8 +570,6 @@ export class Overview extends Signals.EventEmitter {
|
|
||||||
this._visibleTarget = true;
|
|
||||||
this._activationTime = GLib.get_monotonic_time() / GLib.USEC_PER_SEC;
|
|
||||||
|
|
||||||
- Meta.disable_unredirect_for_display(global.display);
|
|
||||||
-
|
|
||||||
Main.layoutManager.overviewGroup.set_child_above_sibling(
|
|
||||||
this._coverPane, null);
|
|
||||||
this._coverPane.show();
|
|
||||||
@@ -636,9 +637,6 @@ export class Overview extends Signals.EventEmitter {
|
|
||||||
}
|
|
||||||
|
|
||||||
_hideDone() {
|
|
||||||
- // Re-enable unredirection
|
|
||||||
- Meta.enable_unredirect_for_display(global.display);
|
|
||||||
-
|
|
||||||
this._coverPane.hide();
|
|
||||||
|
|
||||||
this._visible = false;
|
|
||||||
@@ -688,8 +686,6 @@ export class Overview extends Signals.EventEmitter {
|
|
||||||
// the animation because of a race in the xserver where the grab
|
|
||||||
// fails when requested very early during startup.
|
|
||||||
|
|
||||||
- Meta.disable_unredirect_for_display(global.display);
|
|
||||||
-
|
|
||||||
this._changeShownState(OverviewShownState.SHOWING);
|
|
||||||
|
|
||||||
this._overview.runStartupAnimation(() => {
|
|
2125
patches/pika/xwayland-scaling-support.patch
Executable file
2125
patches/pika/xwayland-scaling-support.patch
Executable file
File diff suppressed because it is too large
Load Diff
@ -1,26 +0,0 @@
|
|||||||
--- gnome-shell-45.0.orig/js/ui/panel.js
|
|
||||||
+++ gnome-shell-45.0/js/ui/panel.js
|
|
||||||
@@ -551,7 +551,6 @@ class QuickSettings extends PanelMenu.Bu
|
|
||||||
this._powerProfiles = new PowerProfileStatus.Indicator();
|
|
||||||
this._rfkill = new RFKillStatus.Indicator();
|
|
||||||
this._autoRotate = new AutoRotateStatus.Indicator();
|
|
||||||
- this._unsafeMode = new UnsafeModeIndicator();
|
|
||||||
this._backgroundApps = new BackgroundAppsStatus.Indicator();
|
|
||||||
|
|
||||||
// add privacy-related indicators before any external indicators
|
|
||||||
@@ -575,7 +574,6 @@ class QuickSettings extends PanelMenu.Bu
|
|
||||||
this._indicators.add_child(this._rfkill);
|
|
||||||
this._indicators.add_child(this._autoRotate);
|
|
||||||
this._indicators.add_child(this._volumeOutput);
|
|
||||||
- this._indicators.add_child(this._unsafeMode);
|
|
||||||
this._indicators.add_child(this._system);
|
|
||||||
|
|
||||||
// add our quick settings items before any external ones
|
|
||||||
@@ -603,7 +601,6 @@ class QuickSettings extends PanelMenu.Bu
|
|
||||||
this._addItemsBefore(this._backlight.quickSettingsItems, sibling);
|
|
||||||
this._addItemsBefore(this._rfkill.quickSettingsItems, sibling);
|
|
||||||
this._addItemsBefore(this._autoRotate.quickSettingsItems, sibling);
|
|
||||||
- this._addItemsBefore(this._unsafeMode.quickSettingsItems, sibling);
|
|
||||||
|
|
||||||
// append background apps
|
|
||||||
this._backgroundApps.quickSettingsItems.forEach(
|
|
@ -1,30 +1,11 @@
|
|||||||
debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch
|
workarounds/tests-Mark-view-verification-tests-as-incomplete-in-big-e.patch
|
||||||
debian/Revert-build-Port-to-gcr4.patch
|
debian/meson-Do-not-mark-CI-test-tools-as-required.patch
|
||||||
debian/Revert-tests-Fail-on-warnings-too.patch
|
debian/tests-Do-not-run-screencast-tests.patch
|
||||||
Revert-keyboard-Spawn-tecla-to-show-keyboard-map.patch
|
debian/Support-Dynamic-triple-double-buffering.patch
|
||||||
gdm-util-Only-start-fingerprint-service-synchronously-whe.patch
|
workarounds/tests-skip-monitor-width-size-check-as-it-may-lead-to-une.patch
|
||||||
ubuntu/desktop_detect.patch
|
workarounds/tests-Skip-thread-priority-test.patch
|
||||||
ubuntu/lightdm-user-switching.patch
|
workarounds/Mark-several-additional-tests-as-flaky.patch
|
||||||
ubuntu/lock_on_suspend.patch
|
workarounds/kms-crtc-Increase-default-deadline-evasion-to-1000-micros.patch
|
||||||
ubuntu/background_login.patch
|
workarounds/place-Always-center-initial-setup.patch
|
||||||
ubuntu/gdm_alternatives.patch
|
workarounds/cogl-tests-Avoid-converting-16bpc-float-16bpc.patch
|
||||||
main-show-an-error-message-on-gnome-shell-crash.patch
|
pika/xwayland-scaling-support.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/sessionMode-Add-support-for-configuring-an-icons-resource.patch
|
|
||||||
ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch
|
|
||||||
ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch
|
|
||||||
ubuntu/shell-global-util-Do-not-move-snap-apps-to-gnome-apps-sco.patch
|
|
||||||
overview-Handle-unredirection-in-OverviewShown-state-mach.patch
|
|
||||||
layout-Destroy-panel-barrier-on-shutdown.patch
|
|
||||||
remove-dbus-restrictions-with-pika-gnome-session.patch
|
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
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 6240b12..b3fff22 100644
|
|
||||||
--- a/js/ui/main.js
|
|
||||||
+++ b/js/ui/main.js
|
|
||||||
@@ -136,6 +136,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(':'))
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @returns {void} */
|
|
||||||
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
|
|
||||||
index e27f4fa..45320ea 100644
|
|
||||||
--- a/js/ui/sessionMode.js
|
|
||||||
+++ b/js/ui/sessionMode.js
|
|
||||||
@@ -32,6 +32,7 @@ const _modes = {
|
|
||||||
showWelcomeDialog: false,
|
|
||||||
allowSettings: false,
|
|
||||||
allowScreencast: false,
|
|
||||||
+ debugFlags: [],
|
|
||||||
enabledExtensions: [],
|
|
||||||
hasRunDialog: false,
|
|
||||||
hasWorkspaces: false,
|
|
@ -1,50 +0,0 @@
|
|||||||
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 | 13 ++++++++++++-
|
|
||||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/js/ui/background.js b/js/ui/background.js
|
|
||||||
index 8301330..cef7c87 100644
|
|
||||||
--- a/js/ui/background.js
|
|
||||||
+++ b/js/ui/background.js
|
|
||||||
@@ -101,8 +101,10 @@ import GObject from 'gi://GObject';
|
|
||||||
import GnomeBG from 'gi://GnomeBG';
|
|
||||||
import GnomeDesktop from 'gi://GnomeDesktop';
|
|
||||||
import Meta from 'gi://Meta';
|
|
||||||
+import St from 'gi://St';
|
|
||||||
import * as Signals from '../misc/signals.js';
|
|
||||||
|
|
||||||
+import * as Desktop from '../misc/desktop.js';
|
|
||||||
import * as LoginManager from '../misc/loginManager.js';
|
|
||||||
import * as Main from './main.js';
|
|
||||||
import * as Params from '../misc/params.js';
|
|
||||||
@@ -538,7 +540,16 @@ export const 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 (Desktop.is('ubuntu')) {
|
|
||||||
+ const dummyBgActor = new 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({
|
|
@ -1,211 +0,0 @@
|
|||||||
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 | 42 +++++++++++++++++
|
|
||||||
4 files changed, 123 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 a31efcc..07d6d4a 100644
|
|
||||||
--- a/data/meson.build
|
|
||||||
+++ b/data/meson.build
|
|
||||||
@@ -97,6 +97,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)
|
|
||||||
|
|
||||||
if have_systemd
|
|
||||||
@@ -125,7 +131,7 @@ endif
|
|
||||||
|
|
||||||
# for unit tests - gnome.compile_schemas() only looks in srcdir
|
|
||||||
custom_target('compile-schemas',
|
|
||||||
- input: schema,
|
|
||||||
+ input: [schema, schema_ubuntu_login],
|
|
||||||
output: 'gschemas.compiled',
|
|
||||||
command: [find_program('glib-compile-schemas'), data_builddir],
|
|
||||||
build_by_default: true)
|
|
||||||
diff --git a/js/ui/background.js b/js/ui/background.js
|
|
||||||
index cef7c87..0da99da 100644
|
|
||||||
--- a/js/ui/background.js
|
|
||||||
+++ b/js/ui/background.js
|
|
||||||
@@ -543,7 +543,11 @@ export const SystemBackground = GObject.registerClass({
|
|
||||||
|
|
||||||
let backgroundColor = DEFAULT_BACKGROUND_COLOR;
|
|
||||||
if (Desktop.is('ubuntu')) {
|
|
||||||
+ const loginSettings = new Gio.Settings({schema_id: 'com.ubuntu.login-screen'});
|
|
||||||
+ const bgColor = loginSettings.get_string('background-color');
|
|
||||||
const dummyBgActor = new 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 993e436..c27f44b 100644
|
|
||||||
--- a/js/ui/screenShield.js
|
|
||||||
+++ b/js/ui/screenShield.js
|
|
||||||
@@ -33,6 +33,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 @@ export class ScreenShield 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,31 @@ export class ScreenShield 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 && !backgroundColor.includes('rgba'))
|
|
||||||
+ 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}`);
|
|
||||||
+
|
|
||||||
+ const lockDialogGroupStyle = inlineStyle.join('; ') || null;
|
|
||||||
+ this._lockDialogGroup.set_style(lockDialogGroupStyle);
|
|
||||||
+ this._dialog?.set_style(lockDialogGroupStyle ? `
|
|
||||||
+ background-image: none;
|
|
||||||
+ background-color: transparent;` : null);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
async _syncInhibitor() {
|
|
||||||
const lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY) ||
|
|
||||||
this._settings.get_boolean(SUSPEND_LOCK_ENABLED_KEY);
|
|
||||||
@@ -433,6 +474,7 @@ export class ScreenShield extends Signals.EventEmitter {
|
|
||||||
}
|
|
||||||
|
|
||||||
this._dialog = new constructor(this._lockDialogGroup);
|
|
||||||
+ this._refreshBackground();
|
|
||||||
|
|
||||||
let time = global.get_current_time();
|
|
||||||
if (!this._dialog.open(time)) {
|
|
@ -1,81 +0,0 @@
|
|||||||
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 | 42 +++++++++++++++++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 41 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/js/ui/status/darkMode.js b/js/ui/status/darkMode.js
|
|
||||||
index 4e68a74..321a88b 100644
|
|
||||||
--- a/js/ui/status/darkMode.js
|
|
||||||
+++ b/js/ui/status/darkMode.js
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
import Gio from 'gi://Gio';
|
|
||||||
import GObject from 'gi://GObject';
|
|
||||||
+import St from 'gi://St';
|
|
||||||
|
|
||||||
import * as Main from '../main.js';
|
|
||||||
|
|
||||||
@@ -19,6 +20,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(),
|
|
||||||
@@ -28,13 +32,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});
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
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 ee4b763..a69c004 100644
|
|
||||||
--- a/js/js-resources.gresource.xml
|
|
||||||
+++ b/js/js-resources.gresource.xml
|
|
||||||
@@ -17,6 +17,7 @@
|
|
||||||
<file>misc/animationUtils.js</file>
|
|
||||||
<file>misc/config.js</file>
|
|
||||||
<file>misc/extensionUtils.js</file>
|
|
||||||
+ <file>misc/desktop.js</file>
|
|
||||||
<file>misc/fileUtils.js</file>
|
|
||||||
<file>misc/dateUtils.js</file>
|
|
||||||
<file>misc/dbusUtils.js</file>
|
|
||||||
diff --git a/js/misc/desktop.js b/js/misc/desktop.js
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..05044c1
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/js/misc/desktop.js
|
|
||||||
@@ -0,0 +1,33 @@
|
|
||||||
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
|
||||||
+
|
|
||||||
+import GLib from '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.
|
|
||||||
+export 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);
|
|
||||||
+}
|
|
@ -1,42 +0,0 @@
|
|||||||
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 8a4948e..5fbb672 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-dark.css</file>
|
|
||||||
<file>gnome-shell-dark.css</file>
|
|
||||||
<file>gnome-shell-light.css</file>
|
|
||||||
<file>gnome-shell-high-contrast.css</file>
|
|
||||||
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
|
|
||||||
index 8e30a66..e27f4fa 100644
|
|
||||||
--- a/js/ui/sessionMode.js
|
|
||||||
+++ b/js/ui/sessionMode.js
|
|
||||||
@@ -53,6 +53,8 @@ const _modes = {
|
|
||||||
|
|
||||||
'gdm': {
|
|
||||||
hasNotifications: true,
|
|
||||||
+ stylesheetName: 'gdm.css',
|
|
||||||
+ themeResourceName: 'gdm-theme.gresource',
|
|
||||||
isGreeter: true,
|
|
||||||
isPrimary: true,
|
|
||||||
unlockDialog: LoginDialog,
|
|
@ -1,36 +0,0 @@
|
|||||||
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 a3e4372..104fb93 100644
|
|
||||||
--- a/js/gdm/loginDialog.js
|
|
||||||
+++ b/js/gdm/loginDialog.js
|
|
||||||
@@ -1272,7 +1272,11 @@ export const 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});
|
|
||||||
|
|
||||||
@@ -1280,6 +1284,7 @@ export const LoginDialog = GObject.registerClass({
|
|
||||||
opacity: 255,
|
|
||||||
duration: 1000,
|
|
||||||
mode: Clutter.AnimationMode.EASE_IN_QUAD,
|
|
||||||
+ onComplete: () => { this._logoBin.set_opacity_override(-1); },
|
|
||||||
});
|
|
||||||
|
|
||||||
return true;
|
|
@ -1,34 +0,0 @@
|
|||||||
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 4d5cd5a..06ed440 100644
|
|
||||||
--- a/js/ui/layout.js
|
|
||||||
+++ b/js/ui/layout.js
|
|
||||||
@@ -1058,6 +1058,7 @@ export const 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);
|
|
@ -1,93 +0,0 @@
|
|||||||
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 efb875b..75a7016 100644
|
|
||||||
--- a/js/misc/systemActions.js
|
|
||||||
+++ b/js/misc/systemActions.js
|
|
||||||
@@ -231,6 +231,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();
|
|
||||||
|
|
||||||
@@ -332,7 +360,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');
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -420,20 +448,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() {
|
|
@ -1,48 +0,0 @@
|
|||||||
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 f8c59fa..993e436 100644
|
|
||||||
--- a/js/ui/screenShield.js
|
|
||||||
+++ b/js/ui/screenShield.js
|
|
||||||
@@ -26,6 +26,7 @@ import {adjustAnimationTime} from '../misc/animationUtils.js';
|
|
||||||
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 @@ export class ScreenShield 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 @@ export class ScreenShield 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 @@ export class ScreenShield 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();
|
|
@ -1,345 +0,0 @@
|
|||||||
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/st-settings.c | 120 +++++++++++++++++++++++++++++
|
|
||||||
4 files changed, 186 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 07d6d4a..3274af2 100644
|
|
||||||
--- a/data/meson.build
|
|
||||||
+++ b/data/meson.build
|
|
||||||
@@ -97,6 +97,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',
|
|
||||||
@@ -131,7 +137,7 @@ endif
|
|
||||||
|
|
||||||
# for unit tests - gnome.compile_schemas() only looks in srcdir
|
|
||||||
custom_target('compile-schemas',
|
|
||||||
- input: [schema, schema_ubuntu_login],
|
|
||||||
+ input: [schema, schema_ubuntu, schema_ubuntu_login],
|
|
||||||
output: 'gschemas.compiled',
|
|
||||||
command: [find_program('glib-compile-schemas'), data_builddir],
|
|
||||||
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 e5921eb..2c6c580 100644
|
|
||||||
--- a/js/ui/main.js
|
|
||||||
+++ b/js/ui/main.js
|
|
||||||
@@ -163,6 +163,9 @@ export async function start() {
|
|
||||||
|
|
||||||
St.Settings.get().connect('notify::high-contrast', _loadDefaultStylesheet);
|
|
||||||
St.Settings.get().connect('notify::color-scheme', _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();
|
|
||||||
@@ -434,6 +437,38 @@ export function getStyleVariant() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+function _getYaruStyleSheet(themeVariant) {
|
|
||||||
+ const styleVariant = getStyleVariant() || 'light';
|
|
||||||
+ const baseThemeName = sessionMode.stylesheetName.split(".css").at(0);
|
|
||||||
+ const isDark = themeVariant === 'dark' || themeVariant?.endsWith('-dark');
|
|
||||||
+ let colorSchemeVariant;
|
|
||||||
+
|
|
||||||
+ if (isDark && styleVariant === 'light') {
|
|
||||||
+ colorSchemeVariant = themeVariant.split('-').slice(0, -1).join('-');
|
|
||||||
+ } else if (!isDark && styleVariant == '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;
|
|
||||||
@@ -442,6 +477,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(name.replace('.css', `-${getStyleVariant()}.css`));
|
|
||||||
|
|
||||||
diff --git a/src/st/st-settings.c b/src/st/st-settings.c
|
|
||||||
index 790ec64..de6db1b 100644
|
|
||||||
--- a/src/st/st-settings.c
|
|
||||||
+++ b/src/st/st-settings.c
|
|
||||||
@@ -35,6 +35,8 @@
|
|
||||||
#define KEY_COLOR_SCHEME "color-scheme"
|
|
||||||
#define KEY_HIGH_CONTRAST "high-contrast"
|
|
||||||
#define KEY_GTK_ICON_THEME "icon-theme"
|
|
||||||
+#define KEY_GTK_THEME "gtk-theme"
|
|
||||||
+#define KEY_COLOR_SCHEME "color-scheme"
|
|
||||||
#define KEY_MAGNIFIER_ACTIVE "screen-magnifier-enabled"
|
|
||||||
#define KEY_DISABLE_SHOW_PASSWORD "disable-show-password"
|
|
||||||
|
|
||||||
@@ -46,7 +48,10 @@ enum {
|
|
||||||
PROP_FONT_NAME,
|
|
||||||
PROP_COLOR_SCHEME,
|
|
||||||
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,
|
|
||||||
@@ -63,10 +68,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;
|
|
||||||
@@ -137,7 +145,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);
|
|
||||||
@@ -189,6 +200,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, KEY_COLOR_SCHEME));
|
|
||||||
+ break;
|
|
||||||
case PROP_COLOR_SCHEME:
|
|
||||||
g_value_set_enum (value, settings->color_scheme);
|
|
||||||
break;
|
|
||||||
@@ -294,6 +315,39 @@ st_settings_class_init (StSettingsClass *klass)
|
|
||||||
ST_SYSTEM_COLOR_SCHEME_DEFAULT,
|
|
||||||
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:
|
|
||||||
*
|
|
||||||
@@ -330,6 +384,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,
|
|
||||||
@@ -351,6 +444,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);
|
|
||||||
@@ -364,6 +461,23 @@ on_interface_settings_changed (GSettings *g_settings,
|
|
||||||
g_object_notify_by_pspec (G_OBJECT (settings),
|
|
||||||
props[PROP_COLOR_SCHEME]);
|
|
||||||
}
|
|
||||||
+ else if (g_str_equal (key, KEY_COLOR_SCHEME))
|
|
||||||
+ {
|
|
||||||
+ g_object_notify_by_pspec (G_OBJECT (settings),
|
|
||||||
+ props[PROP_SHELL_COLOR_SCHEME]);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+on_ubuntu_settings_changed (GSettings *g_settings,
|
|
||||||
+ const gchar *key,
|
|
||||||
+ StSettings *settings)
|
|
||||||
+{
|
|
||||||
+ if (g_str_equal (key, KEY_COLOR_SCHEME))
|
|
||||||
+ {
|
|
||||||
+ g_object_notify_by_pspec (G_OBJECT (settings),
|
|
||||||
+ props[PROP_SHELL_COLOR_SCHEME]);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
@@ -423,6 +537,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);
|
|
||||||
@@ -439,6 +557,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,
|
|
@ -1,50 +0,0 @@
|
|||||||
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 b3fff22..8c0664a 100644
|
|
||||||
--- a/js/ui/main.js
|
|
||||||
+++ b/js/ui/main.js
|
|
||||||
@@ -385,6 +385,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;
|
|
||||||
|
|
||||||
@@ -395,12 +403,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;
|
|
||||||
|
|
@ -1,163 +0,0 @@
|
|||||||
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 6bd282b..4804bdd 100644
|
|
||||||
--- a/js/ui/remoteSearch.js
|
|
||||||
+++ b/js/ui/remoteSearch.js
|
|
||||||
@@ -29,6 +29,7 @@ const SearchProviderIface = `
|
|
||||||
<method name="ActivateResult">
|
|
||||||
<arg type="s" direction="in" />
|
|
||||||
</method>
|
|
||||||
+<method name="XUbuntuCancel" />
|
|
||||||
</interface>
|
|
||||||
</node>`;
|
|
||||||
|
|
||||||
@@ -57,6 +58,7 @@ const SearchProvider2Iface = `
|
|
||||||
<arg type="as" direction="in" />
|
|
||||||
<arg type="u" direction="in" />
|
|
||||||
</method>
|
|
||||||
+<method name="XUbuntuCancel" />
|
|
||||||
</interface>
|
|
||||||
</node>`;
|
|
||||||
|
|
||||||
@@ -307,6 +309,16 @@ class RemoteSearchProvider {
|
|
||||||
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 b938b03..4e68bd7 100644
|
|
||||||
--- a/js/ui/search.js
|
|
||||||
+++ b/js/ui/search.js
|
|
||||||
@@ -224,7 +224,9 @@ const 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)
|
|
||||||
@@ -602,6 +604,10 @@ export const 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());
|
|
||||||
|
|
||||||
@@ -650,11 +656,31 @@ export const 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;
|
|
||||||
|
|
||||||
@@ -726,6 +752,13 @@ export const 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();
|
|
@ -1,89 +0,0 @@
|
|||||||
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 eb17579..eb2d12d 100644
|
|
||||||
--- a/js/ui/extensionDownloader.js
|
|
||||||
+++ b/js/ui/extensionDownloader.js
|
|
||||||
@@ -7,6 +7,7 @@ import GObject from 'gi://GObject';
|
|
||||||
import Soup from 'gi://Soup';
|
|
||||||
|
|
||||||
import * as Config from '../misc/config.js';
|
|
||||||
+import * as Desktop from '../misc/desktop.js';
|
|
||||||
import * as Dialog from './dialog.js';
|
|
||||||
import * as ExtensionUtils from '../misc/extensionUtils.js';
|
|
||||||
import * as FileUtils from '../misc/fileUtils.js';
|
|
||||||
@@ -35,6 +36,13 @@ export 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));
|
|
||||||
@@ -194,6 +202,9 @@ export 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 21b3b19..25260ec 100644
|
|
||||||
--- a/js/ui/extensionSystem.js
|
|
||||||
+++ b/js/ui/extensionSystem.js
|
|
||||||
@@ -8,6 +8,7 @@ import Shell from 'gi://Shell';
|
|
||||||
import * as Signals from '../misc/signals.js';
|
|
||||||
|
|
||||||
import * as Config from '../misc/config.js';
|
|
||||||
+import * as Desktop from '../misc/desktop.js';
|
|
||||||
import * as ExtensionDownloader from './extensionDownloader.js';
|
|
||||||
import {ExtensionState, ExtensionType} from '../misc/extensionUtils.js';
|
|
||||||
import * as FileUtils from '../misc/fileUtils.js';
|
|
||||||
@@ -502,6 +503,10 @@ export class ExtensionManager extends Signals.EventEmitter {
|
|
||||||
await this.loadExtension(newExtension);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ isModeExtension(uuid) {
|
|
||||||
+ return this._getModeExtensions().indexOf(uuid) !== -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
async _callExtensionInit(uuid) {
|
|
||||||
if (!this._extensionSupportsSessionMode(uuid))
|
|
||||||
return false;
|
|
||||||
@@ -709,6 +714,10 @@ export class ExtensionManager 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 (error) {
|
|
@ -1,38 +0,0 @@
|
|||||||
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 8c0664a..e5921eb 100644
|
|
||||||
--- a/js/ui/main.js
|
|
||||||
+++ b/js/ui/main.js
|
|
||||||
@@ -547,7 +547,7 @@ export 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 45320ea..a34cf90 100644
|
|
||||||
--- a/js/ui/sessionMode.js
|
|
||||||
+++ b/js/ui/sessionMode.js
|
|
||||||
@@ -27,6 +27,7 @@ const _modes = {
|
|
||||||
stylesheetName: 'gnome-shell.css',
|
|
||||||
colorScheme: 'prefer-dark',
|
|
||||||
themeResourceName: 'gnome-shell-theme.gresource',
|
|
||||||
+ iconsResourceName: 'gnome-shell-icons.gresource',
|
|
||||||
hasOverview: false,
|
|
||||||
showCalendarEvents: false,
|
|
||||||
showWelcomeDialog: false,
|
|
@ -1,75 +0,0 @@
|
|||||||
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
|
||||||
Date: Mon, 27 Mar 2023 21:02:02 +0200
|
|
||||||
Subject: shell-global, util: Do not move snap apps to gnome-apps scope
|
|
||||||
|
|
||||||
Snap applications already have their own scope so we must not move them.
|
|
||||||
|
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/2011806
|
|
||||||
---
|
|
||||||
js/misc/util.js | 20 ++++++++++++++++++--
|
|
||||||
src/shell-global.c | 7 +++++++
|
|
||||||
2 files changed, 25 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/js/misc/util.js b/js/misc/util.js
|
|
||||||
index 0201fd1..22d9a5a 100644
|
|
||||||
--- a/js/misc/util.js
|
|
||||||
+++ b/js/misc/util.js
|
|
||||||
@@ -119,6 +119,20 @@ export function spawnApp(argv) {
|
|
||||||
*/
|
|
||||||
export function trySpawn(argv) {
|
|
||||||
let success_, pid;
|
|
||||||
+ let path = argv[0];
|
|
||||||
+
|
|
||||||
+ if (!path?.includes('/')) {
|
|
||||||
+ path = GLib.find_program_in_path(argv[0]);
|
|
||||||
+ if (!path) {
|
|
||||||
+ throw new GLib.SpawnError({
|
|
||||||
+ code: GLib.SpawnError.NOENT,
|
|
||||||
+ message: _('Command not found'),
|
|
||||||
+ });
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ argv = [path, ...argv.slice(1)];
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
try {
|
|
||||||
[success_, pid] = GLib.spawn_async(
|
|
||||||
null, argv, null,
|
|
||||||
@@ -150,8 +164,10 @@ export function trySpawn(argv) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- // Async call, we don't need the reply though
|
|
||||||
- GnomeDesktop.start_systemd_scope(argv[0], pid, null, null, null, () => {});
|
|
||||||
+ if (!path?.includes('/snap/bin') && !argv?.join(' ').includes('snap run')) {
|
|
||||||
+ // Async call, we don't need the reply though
|
|
||||||
+ GnomeDesktop.start_systemd_scope(argv[0], pid, null, null, null, () => {});
|
|
||||||
+ }
|
|
||||||
|
|
||||||
// Dummy child watch; we don't want to double-fork internally
|
|
||||||
// because then we lose the parent-child relationship, which
|
|
||||||
diff --git a/src/shell-global.c b/src/shell-global.c
|
|
||||||
index e60b574..a0c3d5c 100644
|
|
||||||
--- a/src/shell-global.c
|
|
||||||
+++ b/src/shell-global.c
|
|
||||||
@@ -1501,6 +1501,7 @@ shell_global_app_launched_cb (GAppLaunchContext *context,
|
|
||||||
{
|
|
||||||
gint32 pid;
|
|
||||||
const gchar *app_name;
|
|
||||||
+ const gchar *command_line;
|
|
||||||
|
|
||||||
if (!g_variant_lookup (platform_data, "pid", "i", &pid))
|
|
||||||
return;
|
|
||||||
@@ -1514,6 +1515,12 @@ shell_global_app_launched_cb (GAppLaunchContext *context,
|
|
||||||
if (app_name == NULL)
|
|
||||||
app_name = g_app_info_get_executable (info);
|
|
||||||
|
|
||||||
+ command_line = g_app_info_get_commandline (info);
|
|
||||||
+ if (command_line &&
|
|
||||||
+ (strstr (command_line, "/snap/bin") ||
|
|
||||||
+ strstr (command_line, "snap run")))
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
/* Start async request; we don't care about the result */
|
|
||||||
gnome_start_systemd_scope (app_name,
|
|
||||||
pid,
|
|
155
patches/workarounds/Mark-several-additional-tests-as-flaky.patch
Normal file
155
patches/workarounds/Mark-several-additional-tests-as-flaky.patch
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
From: Simon McVittie <smcv@debian.org>
|
||||||
|
Date: Wed, 13 Dec 2023 10:34:02 +0000
|
||||||
|
Subject: Mark several additional tests as flaky
|
||||||
|
|
||||||
|
Most of these have never been reliable on Debian buildds, especially
|
||||||
|
on ARM, so having them fail is not a regression. They usually succeed
|
||||||
|
after a few retries, but that's time-consuming and unsuitable to be a
|
||||||
|
QA gate.
|
||||||
|
|
||||||
|
Signed-off-by: Simon McVittie <smcv@debian.org>
|
||||||
|
Forwarded: no
|
||||||
|
---
|
||||||
|
src/tests/clutter/conform/gesture.c | 24 ++++++++++++++++++++++++
|
||||||
|
src/tests/clutter/conform/grab.c | 6 ++++++
|
||||||
|
src/tests/meson.build | 31 ++++++++++++++++++++++++++++---
|
||||||
|
3 files changed, 58 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/clutter/conform/gesture.c b/src/tests/clutter/conform/gesture.c
|
||||||
|
index 7d259f6..e732c1d 100644
|
||||||
|
--- a/src/tests/clutter/conform/gesture.c
|
||||||
|
+++ b/src/tests/clutter/conform/gesture.c
|
||||||
|
@@ -135,6 +135,12 @@ gesture_state_machine_move_to_waiting (void)
|
||||||
|
ClutterGesture *gesture = CLUTTER_GESTURE (g_object_new (TEST_TYPE_GESTURE, NULL));
|
||||||
|
gboolean was_updated;
|
||||||
|
|
||||||
|
+ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL)
|
||||||
|
+ {
|
||||||
|
+ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE);
|
||||||
|
now_us = g_get_monotonic_time ();
|
||||||
|
|
||||||
|
@@ -196,6 +202,12 @@ gesture_state_machine_move_to_cancelled_while_possible (void)
|
||||||
|
gboolean was_updated;
|
||||||
|
ClutterGestureState gesture_state_change;
|
||||||
|
|
||||||
|
+ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL)
|
||||||
|
+ {
|
||||||
|
+ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE);
|
||||||
|
now_us = g_get_monotonic_time ();
|
||||||
|
|
||||||
|
@@ -244,6 +256,12 @@ gesture_state_machine_move_to_cancelled_on_sequence_cancel (void)
|
||||||
|
gboolean was_updated;
|
||||||
|
ClutterGestureState gesture_state_change;
|
||||||
|
|
||||||
|
+ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL)
|
||||||
|
+ {
|
||||||
|
+ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE);
|
||||||
|
now_us = g_get_monotonic_time ();
|
||||||
|
|
||||||
|
@@ -302,6 +320,12 @@ gesture_multiple_mouse_buttons (void)
|
||||||
|
ClutterGesture *gesture = CLUTTER_GESTURE (g_object_new (TEST_TYPE_GESTURE, NULL));
|
||||||
|
gboolean was_updated;
|
||||||
|
|
||||||
|
+ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL)
|
||||||
|
+ {
|
||||||
|
+ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3521");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
virtual_pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE);
|
||||||
|
now_us = g_get_monotonic_time ();
|
||||||
|
|
||||||
|
diff --git a/src/tests/clutter/conform/grab.c b/src/tests/clutter/conform/grab.c
|
||||||
|
index c62eea6..4ba11f4 100644
|
||||||
|
--- a/src/tests/clutter/conform/grab.c
|
||||||
|
+++ b/src/tests/clutter/conform/grab.c
|
||||||
|
@@ -620,6 +620,12 @@ grab_input_only (void)
|
||||||
|
ClutterSeat *seat;
|
||||||
|
g_autoptr (ClutterVirtualInputDevice) pointer = NULL;
|
||||||
|
|
||||||
|
+ if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL)
|
||||||
|
+ {
|
||||||
|
+ g_test_skip ("https://gitlab.gnome.org/GNOME/mutter/-/issues/3205");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
|
||||||
|
pointer = clutter_seat_create_virtual_device (seat, CLUTTER_POINTER_DEVICE);
|
||||||
|
|
||||||
|
diff --git a/src/tests/meson.build b/src/tests/meson.build
|
||||||
|
index b98cfd4..a972096 100644
|
||||||
|
--- a/src/tests/meson.build
|
||||||
|
+++ b/src/tests/meson.build
|
||||||
|
@@ -389,6 +389,7 @@ if have_native_tests
|
||||||
|
'name': 'input-capture',
|
||||||
|
'suite': 'backends/native',
|
||||||
|
'sources': [ 'input-capture-tests.c' ],
|
||||||
|
+ 'flaky': true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': 'thread',
|
||||||
|
@@ -680,8 +681,14 @@ if have_native_tests
|
||||||
|
|
||||||
|
test_depends = [ default_plugin ] + test_case.get('depends', [])
|
||||||
|
|
||||||
|
+ extra_suites = []
|
||||||
|
+
|
||||||
|
+ if test_case.get('flaky', false)
|
||||||
|
+ extra_suites += 'flaky'
|
||||||
|
+ endif
|
||||||
|
+
|
||||||
|
test(test_case['name'], test_executable,
|
||||||
|
- suite: ['core', 'mutter/' + test_case['suite']],
|
||||||
|
+ suite: ['core', 'mutter/' + test_case['suite']] + extra_suites,
|
||||||
|
env: test_env,
|
||||||
|
depends: test_depends,
|
||||||
|
is_parallel: false,
|
||||||
|
@@ -735,8 +742,26 @@ stacking_tests = [
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach stacking_test: stacking_tests
|
||||||
|
+ extra_suites = []
|
||||||
|
+ flaky = false
|
||||||
|
+
|
||||||
|
+ if {
|
||||||
|
+ 'closed-transient-only-take-focus-parents': true,
|
||||||
|
+ # https://gitlab.gnome.org/GNOME/mutter/-/issues/3050
|
||||||
|
+ 'fullscreen-maximize': true,
|
||||||
|
+ 'minimized': true,
|
||||||
|
+ # https://gitlab.gnome.org/GNOME/mutter/-/issues/2509, https://bugs.debian.org/1050022
|
||||||
|
+ 'restore-size': true,
|
||||||
|
+ # https://gitlab.gnome.org/GNOME/mutter/-/issues/3051
|
||||||
|
+ 'unfullscreen-strut-change': true,
|
||||||
|
+ 'unmaximize-new-size': true,
|
||||||
|
+ }.get(stacking_test, false)
|
||||||
|
+ extra_suites += 'flaky'
|
||||||
|
+ flaky = true
|
||||||
|
+ endif
|
||||||
|
+
|
||||||
|
test(stacking_test, test_runner,
|
||||||
|
- suite: ['core', 'mutter/stacking'],
|
||||||
|
+ suite: ['core', 'mutter/stacking'] + extra_suites,
|
||||||
|
env: test_env,
|
||||||
|
args: [
|
||||||
|
files('stacking' / stacking_test + '.metatest'),
|
||||||
|
@@ -745,7 +770,7 @@ foreach stacking_test: stacking_tests
|
||||||
|
timeout: 60,
|
||||||
|
)
|
||||||
|
|
||||||
|
- if have_installed_tests
|
||||||
|
+ if have_installed_tests and not flaky
|
||||||
|
installed_tests_cdata = configuration_data()
|
||||||
|
installed_tests_cdata.set('apiversion', libmutter_api_version)
|
||||||
|
installed_tests_cdata.set('libexecdir', libexecdir)
|
@ -0,0 +1,73 @@
|
|||||||
|
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||||
|
Date: Thu, 25 Jul 2024 18:17:13 +0800
|
||||||
|
Subject: cogl/tests: Avoid converting 16bpc -> float -> 16bpc
|
||||||
|
|
||||||
|
Instead just assign 16bpc -> 16bpc
|
||||||
|
|
||||||
|
This avoids variations in CPU and GL driver behaviour when using
|
||||||
|
floats as intermediate values.
|
||||||
|
|
||||||
|
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3582
|
||||||
|
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3903>
|
||||||
|
(cherry picked from commit 5360c58fe50080f4532efee46149c016acf558b2)
|
||||||
|
---
|
||||||
|
.../cogl/conform/test-offscreen-texture-formats.c | 33 +++++++++++-----------
|
||||||
|
1 file changed, 17 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/cogl/conform/test-offscreen-texture-formats.c b/src/tests/cogl/conform/test-offscreen-texture-formats.c
|
||||||
|
index 8706ec3..170f447 100644
|
||||||
|
--- a/src/tests/cogl/conform/test-offscreen-texture-formats.c
|
||||||
|
+++ b/src/tests/cogl/conform/test-offscreen-texture-formats.c
|
||||||
|
@@ -61,35 +61,36 @@ test_offscreen_texture_formats_store_rgba16161616 (void)
|
||||||
|
const uint16_t rgba16_green = 61133;
|
||||||
|
const uint16_t rgba16_blue = 2;
|
||||||
|
const uint16_t rgba16_alpha = 1111;
|
||||||
|
- float red;
|
||||||
|
- float green;
|
||||||
|
- float blue;
|
||||||
|
- float alpha;
|
||||||
|
int i;
|
||||||
|
-
|
||||||
|
- red = (rgba16_red / (float) ((1 << 16) - 1));
|
||||||
|
- green = (rgba16_green / (float) ((1 << 16) - 1));
|
||||||
|
- blue = (rgba16_blue / (float) ((1 << 16) - 1));
|
||||||
|
- alpha = (rgba16_alpha / (float) ((1 << 16) - 1));
|
||||||
|
+ uint16_t tex_data[16];
|
||||||
|
|
||||||
|
g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_red)), !=, rgba16_red);
|
||||||
|
g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_green)), !=, rgba16_green);
|
||||||
|
g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_blue)), !=, rgba16_blue);
|
||||||
|
g_assert_cmpint (rgb8_to_rgb16 (rgb16_to_rgb8 (rgba16_alpha)), !=, rgba16_alpha);
|
||||||
|
|
||||||
|
+ for (i = 0; i < 4; i++)
|
||||||
|
+ {
|
||||||
|
+ uint16_t *pixel_data = (uint16_t *) &tex_data [i * 4];
|
||||||
|
+
|
||||||
|
+ pixel_data[0] = rgba16_red;
|
||||||
|
+ pixel_data[1] = rgba16_green;
|
||||||
|
+ pixel_data[2] = rgba16_blue;
|
||||||
|
+ pixel_data[3] = rgba16_alpha;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Allocate 2x2 to ensure we avoid any fast paths. */
|
||||||
|
- tex = cogl_texture_2d_new_with_format (test_ctx,
|
||||||
|
- 2, 2,
|
||||||
|
- COGL_PIXEL_FORMAT_RGBA_16161616_PRE);
|
||||||
|
+ tex = cogl_texture_2d_new_from_data (test_ctx,
|
||||||
|
+ 2, 2,
|
||||||
|
+ COGL_PIXEL_FORMAT_RGBA_16161616_PRE,
|
||||||
|
+ 16,
|
||||||
|
+ (const uint8_t *) tex_data,
|
||||||
|
+ NULL);
|
||||||
|
|
||||||
|
offscreen = cogl_offscreen_new_with_texture (tex);
|
||||||
|
cogl_framebuffer_allocate (COGL_FRAMEBUFFER (offscreen), &error);
|
||||||
|
g_assert_no_error (error);
|
||||||
|
|
||||||
|
- cogl_framebuffer_clear4f (COGL_FRAMEBUFFER (offscreen),
|
||||||
|
- COGL_BUFFER_BIT_COLOR,
|
||||||
|
- red, green, blue, alpha);
|
||||||
|
-
|
||||||
|
cogl_framebuffer_read_pixels (COGL_FRAMEBUFFER (offscreen), 0, 0, 2, 2,
|
||||||
|
COGL_PIXEL_FORMAT_RG_1616,
|
||||||
|
(uint8_t *) &readback);
|
@ -0,0 +1,29 @@
|
|||||||
|
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
|
||||||
|
Date: Tue, 7 Nov 2023 16:30:01 +0200
|
||||||
|
Subject: kms/crtc: Increase default deadline evasion to 1000 microseconds
|
||||||
|
|
||||||
|
This seems to be enough to fix cursor stutter on X1 Carbon 10 (OLED)
|
||||||
|
where the display is 90Hz and the touchpad ~145Hz.
|
||||||
|
|
||||||
|
Origin: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3373
|
||||||
|
Bug: https://gitlab.gnome.org/GNOME/mutter/-/issues/3146
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/2040977
|
||||||
|
Forwarded: yes
|
||||||
|
Last-Update: 2024-03-10
|
||||||
|
---
|
||||||
|
src/backends/native/meta-kms-crtc.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/backends/native/meta-kms-crtc.c b/src/backends/native/meta-kms-crtc.c
|
||||||
|
index a087208..8fcb2d9 100644
|
||||||
|
--- a/src/backends/native/meta-kms-crtc.c
|
||||||
|
+++ b/src/backends/native/meta-kms-crtc.c
|
||||||
|
@@ -28,7 +28,7 @@
|
||||||
|
#include "backends/native/meta-kms-update-private.h"
|
||||||
|
#include "backends/native/meta-kms-utils.h"
|
||||||
|
|
||||||
|
-#define DEADLINE_EVASION_US 800
|
||||||
|
+#define DEADLINE_EVASION_US 1000
|
||||||
|
#define DEADLINE_EVASION_WITH_KMS_TOPIC_US 1000
|
||||||
|
|
||||||
|
#define MINIMUM_REFRESH_RATE 30.f
|
26
patches/workarounds/place-Always-center-initial-setup.patch
Normal file
26
patches/workarounds/place-Always-center-initial-setup.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Fri, 2 Dec 2022 22:49:41 +0100
|
||||||
|
Subject: place: Always center initial-setup
|
||||||
|
|
||||||
|
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell-extension-tiling-assistant/+bug/2011611
|
||||||
|
Origin: https://src.fedoraproject.org/rpms/mutter/blob/main/f/0001-place-Always-center-initial-setup-fedora-welcome.patch
|
||||||
|
Forwarded: not-needed
|
||||||
|
---
|
||||||
|
src/core/place.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/core/place.c b/src/core/place.c
|
||||||
|
index 23eb68e..ffe93b6 100644
|
||||||
|
--- a/src/core/place.c
|
||||||
|
+++ b/src/core/place.c
|
||||||
|
@@ -381,6 +381,10 @@ window_place_centered (MetaWindow *window)
|
||||||
|
|
||||||
|
type = window->type;
|
||||||
|
|
||||||
|
+ if (G_UNLIKELY (g_strcmp0 (meta_window_get_wm_class (window),
|
||||||
|
+ "org.gnome.InitialSetup") == 0))
|
||||||
|
+ return TRUE;
|
||||||
|
+
|
||||||
|
return (type == META_WINDOW_DIALOG ||
|
||||||
|
type == META_WINDOW_MODAL_DIALOG ||
|
||||||
|
type == META_WINDOW_SPLASHSCREEN ||
|
@ -0,0 +1,48 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Tue, 15 Jun 2021 20:38:01 +0200
|
||||||
|
Subject: tests: Mark view-verification tests as incomplete in big-endian
|
||||||
|
archs
|
||||||
|
|
||||||
|
Saved pixmaps are invalid in big-endian architectures, so let's disable
|
||||||
|
the tests for now, checking only the basic metadata but not comparing
|
||||||
|
the contents.
|
||||||
|
|
||||||
|
Bug: https://gitlab.gnome.org/GNOME/mutter/-/issues/1850
|
||||||
|
Applied-upstream: no, this is a workaround
|
||||||
|
---
|
||||||
|
src/tests/meta-ref-test.c | 5 +++++
|
||||||
|
src/tests/ref-test-sanity.c | 5 +++++
|
||||||
|
2 files changed, 10 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/tests/meta-ref-test.c b/src/tests/meta-ref-test.c
|
||||||
|
index a074a46..e385594 100644
|
||||||
|
--- a/src/tests/meta-ref-test.c
|
||||||
|
+++ b/src/tests/meta-ref-test.c
|
||||||
|
@@ -522,6 +522,11 @@ meta_ref_test_verify_view (ClutterStageView *view,
|
||||||
|
g_assert_cmpint (ref_status, ==, CAIRO_STATUS_SUCCESS);
|
||||||
|
ensure_expected_format (&ref_image);
|
||||||
|
|
||||||
|
+#if G_BYTE_ORDER == G_BIG_ENDIAN
|
||||||
|
+ g_test_incomplete ("View comparison is not supported by this architecture");
|
||||||
|
+ return;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
if (!compare_images (ref_image, view_image, &gl_fuzz,
|
||||||
|
&diff_stat))
|
||||||
|
{
|
||||||
|
diff --git a/src/tests/ref-test-sanity.c b/src/tests/ref-test-sanity.c
|
||||||
|
index 12a07bb..eb69967 100644
|
||||||
|
--- a/src/tests/ref-test-sanity.c
|
||||||
|
+++ b/src/tests/ref-test-sanity.c
|
||||||
|
@@ -108,6 +108,11 @@ meta_test_ref_test_sanity (void)
|
||||||
|
clutter_actor_set_background_color (actor2, &CLUTTER_COLOR_INIT (52, 101, 164, 255));
|
||||||
|
clutter_actor_add_child (stage, actor2);
|
||||||
|
|
||||||
|
+#if G_BYTE_ORDER == G_BIG_ENDIAN
|
||||||
|
+ g_test_incomplete ("View comparison is not supported by this architecture");
|
||||||
|
+ return;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
g_test_expect_message ("libmutter-test",
|
||||||
|
G_LOG_LEVEL_CRITICAL,
|
||||||
|
"Pixel difference exceeds limits*");
|
35
patches/workarounds/tests-Skip-thread-priority-test.patch
Normal file
35
patches/workarounds/tests-Skip-thread-priority-test.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
From: =?utf-8?q?Jeremy_B=C3=ADcha?= <jeremy.bicha@canonical.com>
|
||||||
|
Date: Mon, 21 Aug 2023 11:45:48 -0400
|
||||||
|
Subject: tests: Skip thread priority test
|
||||||
|
|
||||||
|
This test added to 45 fails on Ubuntu's armhf builders
|
||||||
|
|
||||||
|
https://launchpad.net/ubuntu/+source/mutter/45~beta.1-0ubuntu1/+latestbuild/armhf
|
||||||
|
|
||||||
|
and on Debian's i386
|
||||||
|
|
||||||
|
https://buildd.debian.org/status/logs.php?pkg=mutter&arch=i386
|
||||||
|
|
||||||
|
Architecture defines are at
|
||||||
|
https://wiki.debian.org/ArchitectureSpecificsMemo
|
||||||
|
---
|
||||||
|
src/tests/native-thread.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/tests/native-thread.c b/src/tests/native-thread.c
|
||||||
|
index abe944b..178379f 100644
|
||||||
|
--- a/src/tests/native-thread.c
|
||||||
|
+++ b/src/tests/native-thread.c
|
||||||
|
@@ -1156,6 +1156,12 @@ assert_realtime (MetaThreadImpl *thread_impl,
|
||||||
|
g_variant_new ("(t)", gettid ()));
|
||||||
|
|
||||||
|
g_variant_get (ret, "(u)", &priority);
|
||||||
|
+
|
||||||
|
+#if defined __arm__ || defined __i386__
|
||||||
|
+ g_test_incomplete ("Modifying thread priority is not supported by this architecture");
|
||||||
|
+ return NULL;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
g_assert_cmpint (priority, ==, 20);
|
||||||
|
|
||||||
|
return NULL;
|
@ -0,0 +1,29 @@
|
|||||||
|
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||||
|
Date: Mon, 14 Mar 2022 02:14:06 +0100
|
||||||
|
Subject: tests: skip monitor width size check as it may lead to unexpected
|
||||||
|
failure
|
||||||
|
|
||||||
|
This seems to be broken only on autopkg-tests.
|
||||||
|
|
||||||
|
Forwarded: not-needed
|
||||||
|
Applied-upstream: no, see also https://bugs.debian.org/1050023
|
||||||
|
---
|
||||||
|
src/tests/stacking/unmaximize-new-size.metatest | 2 --
|
||||||
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/tests/stacking/unmaximize-new-size.metatest b/src/tests/stacking/unmaximize-new-size.metatest
|
||||||
|
index b25922a..07ea1d6 100644
|
||||||
|
--- a/src/tests/stacking/unmaximize-new-size.metatest
|
||||||
|
+++ b/src/tests/stacking/unmaximize-new-size.metatest
|
||||||
|
@@ -11,11 +11,9 @@ assert_size w/1 500 400
|
||||||
|
|
||||||
|
maximize w/1
|
||||||
|
wait_reconfigure
|
||||||
|
-assert_size w/1 MONITOR_WIDTH MONITOR_HEIGHT
|
||||||
|
|
||||||
|
resize w/1 300 500
|
||||||
|
wait_reconfigure
|
||||||
|
-assert_size w/1 MONITOR_WIDTH MONITOR_HEIGHT
|
||||||
|
|
||||||
|
unmaximize w/1
|
||||||
|
wait_reconfigure
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user