Compare commits

...

10 Commits

Author SHA1 Message Date
Florian Müllner aa8c38a1d1 Bump version to 47.6
Update NEWS.
2025-06-29 13:00:50 +02:00
Florian Müllner f6f867a8c9 cleanup: Remove unused eslint-disable directives
The 'camelcase' rule only applies to variables and properties,
not to function names are getter/setter.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/413>
(cherry picked from commit 9e11ec9940)
2025-06-29 01:57:25 +02:00
Florian Müllner 57dde50df3 cleanup: Remove unused catch bindings
Optional catch bindings have been supported for quite a while now,
so we can treat unused error bindings in catch statements like
any other unused variable.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/413>
(cherry picked from commit 3a76b9eec4)
2025-06-29 01:57:21 +02:00
Florian Müllner 62dfc2c415 workspace-indicator: Remove left-over variable
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/405>
(cherry picked from commit 53ba3ce620)
2025-06-29 01:57:17 +02:00
Florian Müllner 4be569660b lint: Require dangling comma in multi-line imports
This keeps the config in line with gjs, which added the option
in gjs@f7d3b5d4c8.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/411>
(cherry picked from commit 301017904b)
2025-06-29 01:57:13 +02:00
Florian Müllner bc136c600d window-list: Only remove fullscreen tracking in overview
Since commit 981e8e42e2, we untrack chrome in the overview to avoid
fullscreen tracking interfering with hiding the window list in the
overview.

However this also means that we no longer contribute to the struts
while in the overview, which can lead to unwanted window resizes
around the transition.

So instead of fully untracking the actor, retrack without fullscreen
tracking.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/409>
(cherry picked from commit 0ad959de1e)
2025-06-29 01:57:09 +02:00
Florian Müllner c501931155 Revert "window-list: Fix initial visibility"
Since we no longer track fullscreen state in the overview,
the workaround is no longer necessary.

This reverts commit 6ee4205f1e.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/409>
(cherry picked from commit a3ff3c79b2)
2025-06-29 01:57:05 +02:00
Florian Müllner f53c8fd4bc Bump version to 47.5
Update NEWS.
2025-05-24 19:13:46 +02:00
Neal Gompa d7db924424 build: Do not install anything in xsessions when X11 is disabled
Fixes: b05eb4eb6d ("build: Allow disabling the X11 session")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/400>
(cherry picked from commit 2552c92fe1)
2025-05-23 19:14:44 +02:00
Neal Gompa 71e78265d5 build: Allow disabling the X11 session
This is consistent with gnome-session and the rest of the GNOME
session stack.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/396>
(cherry picked from commit b05eb4eb6d)
2025-05-23 19:14:44 +02:00
9 changed files with 58 additions and 21 deletions
+14
View File
@@ -1,3 +1,17 @@
47.6
====
* Misc. bug fixes and cleanups [Florian; !409, !411, !405, !413]
Contributors:
Florian Müllner
47.5
====
* Allow disabling the X11 session [Neal; !396, !400]
Contributors:
Neal Gompa
47.4 47.4
==== ====
* window-list: Fix regression in chrome tracking [Florian; !379] * window-list: Fix regression in chrome tracking [Florian; !379]
+7 -2
View File
@@ -2,14 +2,19 @@
# #
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
have_x11 = get_option('x11')
session_desktop_base = 'gnome-classic' session_desktop_base = 'gnome-classic'
session_desktops = [ session_desktops = [
session_desktop_base, session_desktop_base,
session_desktop_base + '-xorg',
session_desktop_base + '-wayland', session_desktop_base + '-wayland',
] ]
if have_x11
session_desktops += [session_desktop_base + '-xorg']
endif
foreach name : session_desktops foreach name : session_desktops
session_desktop = name + '.desktop' session_desktop = name + '.desktop'
if name.endswith('-xorg') if name.endswith('-xorg')
@@ -21,7 +26,7 @@ foreach name : session_desktops
# There is a workaround in meson/session-post-install.py until proper # There is a workaround in meson/session-post-install.py until proper
# solution arises: # solution arises:
# https://github.com/mesonbuild/meson/issues/2416 # https://github.com/mesonbuild/meson/issues/2416
session_instdir = xsessiondir session_instdir = wlsessiondir
#session_instdir = [ xesssiondir, wlsessiondir ] #session_instdir = [ xesssiondir, wlsessiondir ]
endif endif
i18n.merge_file( i18n.merge_file(
+1 -1
View File
@@ -495,7 +495,7 @@ class ApplicationsButton extends PanelMenu.Button {
let id; let id;
try { try {
id = entry.get_desktop_file_id(); // catch non-UTF8 filenames id = entry.get_desktop_file_id(); // catch non-UTF8 filenames
} catch (e) { } catch {
continue; continue;
} }
let app = appSys.lookup_app(id); let app = appSys.lookup_app(id);
+18 -9
View File
@@ -226,12 +226,10 @@ class BaseButton extends DashItemContainer {
return this._button.has_style_class_name('focused'); return this._button.has_style_class_name('focused');
} }
// eslint-disable-next-line camelcase
get ignore_workspace() { get ignore_workspace() {
return this._ignoreWorkspace; return this._ignoreWorkspace;
} }
// eslint-disable-next-line camelcase
set ignore_workspace(ignore) { set ignore_workspace(ignore) {
if (this._ignoreWorkspace === ignore) if (this._ignoreWorkspace === ignore)
return; return;
@@ -772,11 +770,20 @@ class WindowList extends St.Widget {
() => this._onWorkspaceMenuSet(), this); () => this._onWorkspaceMenuSet(), this);
this._onWorkspaceMenuSet(); this._onWorkspaceMenuSet();
const chromeOptions = { const inOverview = Main.overview.visible ||
(Main.layoutManager._startingUp && Main.sessionMode.hasOverview);
const overviewChromeOptions = {
affectsStruts: true, affectsStruts: true,
};
const chromeOptions = {
...overviewChromeOptions,
trackFullscreen: true, trackFullscreen: true,
}; };
Main.layoutManager.addChrome(this, chromeOptions); Main.layoutManager.addChrome(this, inOverview
? overviewChromeOptions
: chromeOptions);
Main.uiGroup.set_child_above_sibling(this, Main.layoutManager.panelBox); Main.uiGroup.set_child_above_sibling(this, Main.layoutManager.panelBox);
Main.ctrlAltTabManager.addGroup(this, _('Window List'), 'start-here-symbolic'); Main.ctrlAltTabManager.addGroup(this, _('Window List'), 'start-here-symbolic');
@@ -813,20 +820,17 @@ class WindowList extends St.Widget {
Main.overview.connectObject( Main.overview.connectObject(
'showing', () => { 'showing', () => {
Main.layoutManager.untrackChrome(this); this._retrackChrome(overviewChromeOptions);
this.hide(); this.hide();
this._updateKeyboardAnchor(); this._updateKeyboardAnchor();
}, },
'hidden', () => { 'hidden', () => {
Main.layoutManager.trackChrome(this, chromeOptions); this._retrackChrome(chromeOptions);
this.visible = !this._monitor.inFullscreen; this.visible = !this._monitor.inFullscreen;
this._updateKeyboardAnchor(); this._updateKeyboardAnchor();
}, this); }, this);
global.display.connectObject('in-fullscreen-changed', () => { global.display.connectObject('in-fullscreen-changed', () => {
// Work-around for initial change from unknown to !fullscreen
if (Main.overview.visible)
this.hide();
this._updateKeyboardAnchor(); this._updateKeyboardAnchor();
}, this); }, this);
@@ -881,6 +885,11 @@ class WindowList extends St.Widget {
this._monitor.y + this._monitor.height - this.height); this._monitor.y + this._monitor.height - this.height);
} }
_retrackChrome(options) {
Main.layoutManager.untrackChrome(this);
Main.layoutManager.trackChrome(this, options);
}
_updateWorkspaceIndicatorVisibility() { _updateWorkspaceIndicatorVisibility() {
let workspaceManager = global.workspace_manager; let workspaceManager = global.workspace_manager;
let hasWorkspaces = this._mutterSettings.get_boolean('dynamic-workspaces') || let hasWorkspaces = this._mutterSettings.get_boolean('dynamic-workspaces') ||
@@ -459,8 +459,6 @@ export class WorkspaceIndicator extends PanelMenu.Button {
this._thumbnails = new WorkspacePreviews(); this._thumbnails = new WorkspacePreviews();
container.add_child(this._thumbnails); container.add_child(this._thumbnails);
this._workspacesItems = [];
workspaceManager.connectObject( workspaceManager.connectObject(
'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER, 'workspace-switched', this._onWorkspaceSwitched.bind(this), GObject.ConnectFlags.AFTER,
this); this);
+1
View File
@@ -30,6 +30,7 @@ rules:
- error - error
- arrays: always-multiline - arrays: always-multiline
objects: always-multiline objects: always-multiline
imports: always-multiline
functions: never functions: never
comma-spacing: comma-spacing:
- error - error
+9 -5
View File
@@ -4,7 +4,7 @@
project( project(
'gnome-shell-extensions', 'gnome-shell-extensions',
version: '47.4', version: '47.6',
meson_version: '>= 1.1.0', meson_version: '>= 1.1.0',
license: 'GPL-2.0-or-later', license: 'GPL-2.0-or-later',
) )
@@ -31,6 +31,8 @@ shell_version = ver_arr[0]
uuid_suffix = '@gnome-shell-extensions.gcampax.github.com' uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
have_x11 = get_option('x11')
classic_extensions = [ classic_extensions = [
'apps-menu', 'apps-menu',
'places-menu', 'places-menu',
@@ -86,10 +88,12 @@ endforeach
if classic_mode_enabled if classic_mode_enabled
subdir('data') subdir('data')
meson.add_install_script( if have_x11
'meson/session-post-install.py', meson.add_install_script(
join_paths(get_option('prefix'), datadir), 'meson/session-post-install.py',
) join_paths(get_option('prefix'), datadir),
)
endif
endif endif
subdir('extensions') subdir('extensions')
+6
View File
@@ -20,3 +20,9 @@ option('classic_mode',
value: false, value: false,
description: 'Enable installing data files for classic mode.' description: 'Enable installing data files for classic mode.'
) )
option('x11',
type: 'boolean',
value: true,
description: 'Enable X11 session support.'
)
+2 -2
View File
@@ -15,10 +15,10 @@ else:
# FIXME: Meson is unable to copy a generated target file: # FIXME: Meson is unable to copy a generated target file:
# https://groups.google.com/forum/#!topic/mesonbuild/3iIoYPrN4P0 # https://groups.google.com/forum/#!topic/mesonbuild/3iIoYPrN4P0
dst_dir = os.path.join(install_root, 'wayland-sessions') dst_dir = os.path.join(install_root, 'xsessions')
if not os.path.exists(dst_dir): if not os.path.exists(dst_dir):
os.makedirs(dst_dir) os.makedirs(dst_dir)
src = os.path.join(install_root, 'xsessions', 'gnome-classic.desktop') src = os.path.join(install_root, 'wayland-sessions', 'gnome-classic.desktop')
dst = os.path.join(dst_dir, 'gnome-classic.desktop') dst = os.path.join(dst_dir, 'gnome-classic.desktop')
shutil.copyfile(src, dst) shutil.copyfile(src, dst)