├── .eslintrc.yml ├── .gitignore ├── .gitlab-ci.yml ├── .gitlab-ci ├── check-potfiles.js ├── check-potfiles.sh ├── checkout-mutter.sh ├── commit-rules.yml ├── download-coverity-tarball.sh ├── install-meson-project.sh └── run-eslint ├── .gitlab └── issue_templates │ ├── Bug.md │ └── Feature.md ├── .jscheckignore ├── .settings └── .jsdtscope ├── COPYING ├── HACKING.md ├── NEWS ├── README.md ├── TESTING.md ├── config.h.meson ├── data ├── 00_org.gnome.shell.gschema.override ├── 50-gnome-shell-launchers.xml ├── 50-gnome-shell-screenshots.xml ├── 50-gnome-shell-system.xml ├── README.osk-layouts ├── cldr2json │ ├── README.md │ ├── cldr2json.py │ └── test │ │ ├── __init__.py │ │ ├── data │ │ ├── fr-t-k0-android.xml │ │ └── fr.json │ │ └── test_cldr2json.py ├── dbus-interfaces │ ├── meson.build │ ├── net.hadess.PowerProfiles.xml │ ├── net.hadess.SensorProxy.xml │ ├── net.hadess.SwitcherooControl.xml │ ├── net.reactivated.Fprint.Device.xml │ ├── net.reactivated.Fprint.Manager.xml │ ├── org.Gtk.MountOperationHandler.xml │ ├── org.freedesktop.Application.xml │ ├── org.freedesktop.DBus.xml │ ├── org.freedesktop.GeoClue2.Agent.xml │ ├── org.freedesktop.GeoClue2.Manager.xml │ ├── org.freedesktop.ModemManager.Modem.Cdma.xml │ ├── org.freedesktop.ModemManager.Modem.Gsm.Network.xml │ ├── org.freedesktop.ModemManager1.Modem.Modem3gpp.xml │ ├── org.freedesktop.ModemManager1.Modem.ModemCdma.xml │ ├── org.freedesktop.ModemManager1.Modem.xml │ ├── org.freedesktop.Notifications.xml │ ├── org.freedesktop.PackageKit.Offline.xml │ ├── org.freedesktop.UPower.Device.xml │ ├── org.freedesktop.UPower.xml │ ├── org.freedesktop.bolt1.Device.xml │ ├── org.freedesktop.bolt1.Manager.xml │ ├── org.freedesktop.impl.portal.Access.xml │ ├── org.freedesktop.impl.portal.PermissionStore.xml │ ├── org.freedesktop.impl.portal.Request.xml │ ├── org.freedesktop.login1.Manager.xml │ ├── org.freedesktop.login1.Session.xml │ ├── org.freedesktop.login1.User.xml │ ├── org.freedesktop.realmd.Provider.xml │ ├── org.freedesktop.realmd.Realm.xml │ ├── org.freedesktop.realmd.Service.xml │ ├── org.gnome.Mutter.ScreenCast.xml │ ├── org.gnome.ScreenSaver.xml │ ├── org.gnome.SessionManager.EndSessionDialog.xml │ ├── org.gnome.SessionManager.Inhibitor.xml │ ├── org.gnome.SessionManager.Presence.xml │ ├── org.gnome.SessionManager.xml │ ├── org.gnome.SettingsDaemon.Color.xml │ ├── org.gnome.SettingsDaemon.Power.Screen.xml │ ├── org.gnome.SettingsDaemon.Rfkill.xml │ ├── org.gnome.SettingsDaemon.Wacom.xml │ ├── org.gnome.Shell.AudioDeviceSelection.xml │ ├── org.gnome.Shell.CalendarServer.xml │ ├── org.gnome.Shell.ClocksIntegration.xml │ ├── org.gnome.Shell.Extensions.xml │ ├── org.gnome.Shell.HotplugSniffer.xml │ ├── org.gnome.Shell.Introspect.xml │ ├── org.gnome.Shell.PadOsd.xml │ ├── org.gnome.Shell.PerfHelper.xml │ ├── org.gnome.Shell.PortalHelper.xml │ ├── org.gnome.Shell.Screencast.xml │ ├── org.gnome.Shell.Screenshot.xml │ ├── org.gnome.Shell.Wacom.PadOsd.xml │ ├── org.gnome.Shell.WeatherIntegration.xml │ ├── org.gnome.Shell.xml │ ├── org.gnome.ShellSearchProvider.xml │ ├── org.gnome.ShellSearchProvider2.xml │ ├── org.gtk.Notifications.xml │ ├── org.mpris.MediaPlayer2.Player.xml │ └── org.mpris.MediaPlayer2.xml ├── emoji.json ├── gnome-shell-dbus-interfaces.gresource.xml ├── gnome-shell-icons.gresource.xml ├── gnome-shell-osk-layouts.gresource.xml ├── gnome-shell-overrides-migration.desktop.in ├── gnome-shell-theme.gresource.xml ├── gnome-shell.portal ├── icons │ ├── hicolor │ │ ├── scalable │ │ │ └── apps │ │ │ │ └── org.gnome.Shell.Extensions.svg │ │ └── symbolic │ │ │ └── apps │ │ │ └── org.gnome.Shell.Extensions-symbolic.svg │ ├── meson.build │ └── scalable │ │ ├── actions │ │ ├── carousel-arrow-next-symbolic.svg │ │ ├── carousel-arrow-previous-symbolic.svg │ │ ├── color-pick.svg │ │ ├── pointer-double-click-symbolic.svg │ │ ├── pointer-drag-symbolic.svg │ │ ├── pointer-primary-click-symbolic.svg │ │ ├── pointer-secondary-click-symbolic.svg │ │ ├── preview-close-symbolic.svg │ │ ├── record-screen-symbolic.svg │ │ ├── screencast-recorded-symbolic.svg │ │ ├── screenshot-recorded-symbolic.svg │ │ ├── screenshot-ui-area-symbolic.svg │ │ ├── screenshot-ui-display-symbolic.svg │ │ ├── screenshot-ui-show-pointer-symbolic.svg │ │ └── screenshot-ui-window-symbolic.svg │ │ └── status │ │ ├── keyboard-caps-lock-symbolic.svg │ │ ├── keyboard-enter-symbolic.svg │ │ ├── keyboard-hide-symbolic.svg │ │ ├── keyboard-layout-symbolic.svg │ │ ├── keyboard-shift-symbolic.svg │ │ ├── message-indicator-symbolic.svg │ │ ├── no-events-symbolic.svg │ │ ├── no-notifications-symbolic.svg │ │ ├── screen-privacy-disabled-symbolic.svg │ │ ├── screen-privacy-symbolic.svg │ │ └── stop-symbolic.svg ├── meson.build ├── org.gnome.Shell-disable-extensions.service ├── org.gnome.Shell-symbolic.Source.svg ├── org.gnome.Shell.Extensions.desktop.in.in ├── org.gnome.Shell.PortalHelper.desktop.in.in ├── org.gnome.Shell.PortalHelper.service.in ├── org.gnome.Shell.desktop.in.in ├── org.gnome.Shell.target ├── org.gnome.Shell@wayland.service.in ├── org.gnome.Shell@x11.service.in ├── org.gnome.shell.gschema.xml.in ├── osk-layouts │ ├── am.json │ ├── ara.json │ ├── at.json │ ├── be.json │ ├── bg.json │ ├── by.json │ ├── ca.json │ ├── ch+fr.json │ ├── ch.json │ ├── cz.json │ ├── de.json │ ├── dk.json │ ├── ee.json │ ├── epo.json │ ├── es+cat.json │ ├── es.json │ ├── fi.json │ ├── fr.json │ ├── ge.json │ ├── gr.json │ ├── hr.json │ ├── hu.json │ ├── id.json │ ├── il.json │ ├── in+bolnagri.json │ ├── in+mal.json │ ├── ir.json │ ├── is.json │ ├── it.json │ ├── ke.json │ ├── kg.json │ ├── kh.json │ ├── la.json │ ├── latam.json │ ├── lt.json │ ├── lv.json │ ├── mk.json │ ├── mn.json │ ├── my.json │ ├── nl.json │ ├── no.json │ ├── ph.json │ ├── pl.json │ ├── pt.json │ ├── ro.json │ ├── rs.json │ ├── ru.json │ ├── se.json │ ├── si.json │ ├── sk.json │ ├── th.json │ ├── tr.json │ ├── ua.json │ ├── uk.json │ ├── us.json │ ├── vn.json │ └── za.json ├── perf-background.xml.in ├── theme │ ├── README.md │ ├── calendar-today-light.svg │ ├── calendar-today.svg │ ├── checkbox-focused.svg │ ├── checkbox-off-focused-light.svg │ ├── checkbox-off-focused.svg │ ├── checkbox-off-light.svg │ ├── checkbox-off.svg │ ├── checkbox.svg │ ├── dash-placeholder.svg │ ├── gnome-shell-high-contrast.css │ ├── gnome-shell-high-contrast.scss │ ├── gnome-shell-sass │ │ ├── COPYING │ │ ├── NEWS │ │ ├── README.md │ │ ├── _colors.scss │ │ ├── _common.scss │ │ ├── _drawing.scss │ │ ├── _high-contrast-colors.scss │ │ ├── _palette.scss │ │ ├── _widgets.scss │ │ ├── gnome-shell-sass.doap │ │ └── widgets │ │ │ ├── _a11y.scss │ │ │ ├── _app-grid.scss │ │ │ ├── _base.scss │ │ │ ├── _buttons.scss │ │ │ ├── _calendar.scss │ │ │ ├── _check-box.scss │ │ │ ├── _corner-ripple.scss │ │ │ ├── _dash.scss │ │ │ ├── _dialogs.scss │ │ │ ├── _entries.scss │ │ │ ├── _hotplug.scss │ │ │ ├── _ibus-popup.scss │ │ │ ├── _keyboard.scss │ │ │ ├── _login-dialog.scss │ │ │ ├── _looking-glass.scss │ │ │ ├── _message-list.scss │ │ │ ├── _misc.scss │ │ │ ├── _network-dialog.scss │ │ │ ├── _notifications.scss │ │ │ ├── _osd.scss │ │ │ ├── _overview.scss │ │ │ ├── _panel.scss │ │ │ ├── _popovers.scss │ │ │ ├── _screen-shield.scss │ │ │ ├── _screenshot.scss │ │ │ ├── _scrollbars.scss │ │ │ ├── _search-entry.scss │ │ │ ├── _search-results.scss │ │ │ ├── _slider.scss │ │ │ ├── _switcher-popup.scss │ │ │ ├── _switches.scss │ │ │ ├── _window-picker.scss │ │ │ ├── _workspace-switcher.scss │ │ │ └── _workspace-thumbnails.scss │ ├── gnome-shell-start.svg │ ├── gnome-shell.css │ ├── gnome-shell.scss │ ├── meson.build │ ├── pad-osd.css │ ├── process-working.svg │ ├── running-indicator.svg │ ├── toggle-off-hc.svg │ ├── toggle-off-light.svg │ ├── toggle-off.svg │ ├── toggle-on-hc.svg │ ├── toggle-on-light.svg │ ├── toggle-on.svg │ └── workspace-placeholder.svg └── update-osk-layouts.sh ├── debian ├── README.Ubuntu ├── changelog ├── clean ├── control ├── control.in ├── copyright ├── gbp.conf ├── gnome-shell-common.alternatives ├── gnome-shell-common.dirs ├── gnome-shell-common.install ├── gnome-shell-common.postinst ├── gnome-shell-common.preinst ├── gnome-shell-common.prerm ├── gnome-shell-extension-prefs.install ├── gnome-shell.bug-control ├── gnome-shell.docs ├── gnome-shell.gsettings-override ├── gnome-shell.install ├── gnome-shell.lintian-overrides ├── gnome-shell.postinst ├── patches │ ├── CVE-2024-36472.patch │ ├── Revert-dateMenu-Port-to-GWeather-4.0.patch │ ├── Revert-st-Apply-css-foreground-color-to-text-as-a-PangoAt.patch │ ├── Revert-ui-Rename-gnome-control-center-to-org.gnome.Settin.patch │ ├── calendar-Emit-selected-date-changed-before-rebuilding-the.patch │ ├── correct_expected_bus_name.patch │ ├── debian │ │ └── gnome-shell-extension-prefs-Give-Debian-specific-advice.patch │ ├── global-make-possible-to-set-debug-flags-dynamically.patch │ ├── gmd-util-Only-start-fingerprint-service-synchronously-whe.patch │ ├── greeter-exception.patch │ ├── ignore-nvidia-only.patch │ ├── js-Support-legacy-GNOME-Control-Center-now-Settings-dbus-.patch │ ├── magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch │ ├── main-add-backtrace-crashes-all-and-backtrace-all.patch │ ├── main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch │ ├── main-show-an-error-message-on-gnome-shell-crash.patch │ ├── pop-cosmic-keyboard-shortcuts.patch │ ├── pop-dark-theme.patch │ ├── remove-assumptions-about-monitor-availability.patch │ ├── sched-rr.patch │ ├── series │ ├── sessionMode-add-support-for-debugFlags-parameter.patch │ ├── ubuntu │ │ ├── Revert-dash-Use-pin-instead-of-favorites.patch │ │ ├── background_login.patch │ │ ├── chromium-snap-pwa.patch │ │ ├── configure_login_screen.patch │ │ ├── desktop_detect.patch │ │ ├── gdm_alternatives.patch │ │ ├── keep-ubuntu-logo-bright-lp1867133-v1.patch │ │ ├── layout-Try-to-allocate-before-getting-size-of-tracke.patch │ │ ├── lightdm-user-switching.patch │ │ ├── lock_on_suspend.patch │ │ ├── main-Avoid-meta-finalize.patch │ │ ├── main-Support-loading-multiple-Yaru-theme-variants.patch │ │ ├── resolve_alternate_theme_path.patch │ │ ├── search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch │ │ ├── secure_mode_extension.patch │ │ └── sessionMode-Add-support-for-configuring-an-icons-resource.patch │ └── undefined-record.patch ├── rules ├── shlibs.local ├── source │ ├── format │ └── lintian-overrides ├── source_gnome-shell.py ├── ubuntu-session-mods │ └── ubuntu.json ├── upstream │ └── metadata └── watch ├── docs └── reference │ ├── meson.build │ ├── shell │ ├── meson.build │ ├── shell-docs.sgml │ └── version.xml.in │ └── st │ ├── meson.build │ ├── st-docs.sgml │ └── version.xml.in ├── gnome-shell.doap ├── js ├── dbusServices │ ├── dbus-service.in │ ├── dbus-service.service.in │ ├── dbusService.js │ ├── extensions │ │ ├── css │ │ │ └── application.css │ │ ├── extensionPrefsDialog.js │ │ ├── extensionsService.js │ │ ├── main.js │ │ └── ui │ │ │ └── extension-error-page.ui │ ├── meson.build │ ├── notifications │ │ ├── main.js │ │ └── notificationDaemon.js │ ├── org.gnome.ScreenSaver.src.gresource.xml │ ├── org.gnome.Shell.Extensions.src.gresource.xml │ ├── org.gnome.Shell.Notifications.src.gresource.xml │ ├── org.gnome.Shell.Screencast.src.gresource.xml │ ├── screencast │ │ ├── main.js │ │ └── screencastService.js │ └── screensaver │ │ ├── main.js │ │ └── screenSaverService.js ├── gdm │ ├── authList.js │ ├── authPrompt.js │ ├── batch.js │ ├── credentialManager.js │ ├── loginDialog.js │ ├── oVirt.js │ ├── realmd.js │ ├── util.js │ └── vmware.js ├── js-resources.gresource.xml ├── meson.build ├── misc │ ├── config.js.in │ ├── extensionUtils.js │ ├── fileUtils.js │ ├── gnomeSession.js │ ├── history.js │ ├── ibusManager.js │ ├── inputMethod.js │ ├── introspect.js │ ├── jsParse.js │ ├── keyboardManager.js │ ├── loginManager.js │ ├── meson.build │ ├── modemManager.js │ ├── objectManager.js │ ├── params.js │ ├── parentalControlsManager.js │ ├── permissionStore.js │ ├── signalTracker.js │ ├── smartcardManager.js │ ├── systemActions.js │ ├── util.js │ └── weather.js ├── perf │ ├── basic.js │ ├── core.js │ └── hwtest.js ├── portal-resources.gresource.xml ├── portalHelper │ └── main.js └── ui │ ├── accessDialog.js │ ├── altTab.js │ ├── animation.js │ ├── appDisplay.js │ ├── appFavorites.js │ ├── appMenu.js │ ├── audioDeviceSelection.js │ ├── background.js │ ├── backgroundMenu.js │ ├── barLevel.js │ ├── boxpointer.js │ ├── calendar.js │ ├── checkBox.js │ ├── closeDialog.js │ ├── components │ ├── __init__.js │ ├── automountManager.js │ ├── autorunManager.js │ ├── keyring.js │ ├── networkAgent.js │ ├── polkitAgent.js │ └── telepathyClient.js │ ├── ctrlAltTab.js │ ├── dash.js │ ├── dateMenu.js │ ├── dialog.js │ ├── dnd.js │ ├── edgeDragAction.js │ ├── endSessionDialog.js │ ├── environment.js │ ├── extensionDownloader.js │ ├── extensionSystem.js │ ├── focusCaretTracker.js │ ├── grabHelper.js │ ├── ibusCandidatePopup.js │ ├── iconGrid.js │ ├── inhibitShortcutsDialog.js │ ├── init.js │ ├── kbdA11yDialog.js │ ├── keyboard.js │ ├── layout.js │ ├── lightbox.js │ ├── locatePointer.js │ ├── lookingGlass.js │ ├── magnifier.js │ ├── main.js │ ├── messageList.js │ ├── messageTray.js │ ├── modalDialog.js │ ├── mpris.js │ ├── notificationDaemon.js │ ├── osdMonitorLabeler.js │ ├── osdWindow.js │ ├── overview.js │ ├── overviewControls.js │ ├── padOsd.js │ ├── pageIndicators.js │ ├── panel.js │ ├── panelMenu.js │ ├── pointerA11yTimeout.js │ ├── pointerWatcher.js │ ├── popupMenu.js │ ├── remoteSearch.js │ ├── ripples.js │ ├── runDialog.js │ ├── screenShield.js │ ├── screenshot.js │ ├── scripting.js │ ├── search.js │ ├── searchController.js │ ├── sessionMode.js │ ├── shellDBus.js │ ├── shellEntry.js │ ├── shellMountOperation.js │ ├── slider.js │ ├── status │ ├── accessibility.js │ ├── bluetooth.js │ ├── brightness.js │ ├── dwellClick.js │ ├── keyboard.js │ ├── location.js │ ├── network.js │ ├── nightLight.js │ ├── power.js │ ├── powerProfiles.js │ ├── remoteAccess.js │ ├── rfkill.js │ ├── system.js │ ├── thunderbolt.js │ └── volume.js │ ├── swipeTracker.js │ ├── switchMonitor.js │ ├── switcherPopup.js │ ├── unlockDialog.js │ ├── userWidget.js │ ├── welcomeDialog.js │ ├── windowAttentionHandler.js │ ├── windowManager.js │ ├── windowMenu.js │ ├── windowPreview.js │ ├── workspace.js │ ├── workspaceAnimation.js │ ├── workspaceSwitcherPopup.js │ ├── workspaceThumbnail.js │ ├── workspacesView.js │ └── xdndHandler.js ├── lint ├── eslintrc-gjs.yml ├── eslintrc-legacy.yml └── eslintrc-shell.yml ├── man ├── gnome-shell.1 ├── gnome-shell.txt ├── meson.build └── stylesheet.xsl ├── meson.build ├── meson ├── check-version.py ├── generate-manpages.py └── generate-stylesheets.py ├── meson_options.txt ├── po ├── LINGUAS ├── POTFILES.in ├── POTFILES.skip ├── ab.po ├── af.po ├── an.po ├── ar.po ├── as.po ├── ast.po ├── be.po ├── bg.po ├── bn.po ├── bn_IN.po ├── bs.po ├── ca.po ├── ca@valencia.po ├── ckb.po ├── cs.po ├── da.po ├── de.po ├── el.po ├── en_GB.po ├── eo.po ├── es.po ├── et.po ├── eu.po ├── fa.po ├── fi.po ├── fr.po ├── fur.po ├── fy.po ├── ga.po ├── gd.po ├── gl.po ├── gu.po ├── he.po ├── hi.po ├── hr.po ├── hu.po ├── ia.po ├── id.po ├── is.po ├── it.po ├── ja.po ├── ka.po ├── kab.po ├── kk.po ├── km.po ├── kn.po ├── ko.po ├── ku.po ├── ky.po ├── lt.po ├── lv.po ├── meson.build ├── mjw.po ├── mk.po ├── ml.po ├── mr.po ├── ms.po ├── nb.po ├── ne.po ├── nl.po ├── nn.po ├── oc.po ├── or.po ├── os.po ├── pa.po ├── pl.po ├── pt.po ├── pt_BR.po ├── ro.po ├── ru.po ├── si.po ├── sk.po ├── sl.po ├── sr.po ├── sr@latin.po ├── sv.po ├── ta.po ├── te.po ├── tg.po ├── th.po ├── tr.po ├── ug.po ├── uk.po ├── uz@cyrillic.po ├── vi.po ├── zh_CN.po ├── zh_HK.po └── zh_TW.po ├── src ├── calendar-server │ ├── README │ ├── calendar-debug.h │ ├── calendar-sources.c │ ├── calendar-sources.h │ ├── evolution-calendar.desktop.in │ ├── gnome-shell-calendar-server.c │ ├── meson.build │ └── org.gnome.Shell.CalendarServer.service.in ├── data-to-c.pl ├── gnome-shell-extension-prefs ├── gnome-shell-extension-tool.in ├── gnome-shell-perf-tool.in ├── gnome-shell-plugin.c ├── gnome-shell-portal-helper.c ├── gtkactionmuxer.c ├── gtkactionmuxer.h ├── gtkactionobservable.c ├── gtkactionobservable.h ├── gtkactionobserver.c ├── gtkactionobserver.h ├── hotplug-sniffer │ ├── hotplug-mimetypes.h │ ├── hotplug-sniffer.c │ ├── meson.build │ ├── org.gnome.Shell.HotplugSniffer.service.in │ ├── shell-mime-sniffer.c │ └── shell-mime-sniffer.h ├── main.c ├── meson.build ├── org.gtk.Application.xml ├── run-js-test.c ├── shell-action-modes.h ├── shell-app-cache-private.h ├── shell-app-cache.c ├── shell-app-private.h ├── shell-app-system-private.h ├── shell-app-system.c ├── shell-app-system.h ├── shell-app-usage.c ├── shell-app-usage.h ├── shell-app.c ├── shell-app.h ├── shell-blur-effect.c ├── shell-blur-effect.h ├── shell-embedded-window-private.h ├── shell-embedded-window.c ├── shell-embedded-window.h ├── shell-global-private.h ├── shell-global.c ├── shell-global.h ├── shell-glsl-effect.c ├── shell-glsl-effect.h ├── shell-gtk-embed.c ├── shell-gtk-embed.h ├── shell-invert-lightness-effect.c ├── shell-invert-lightness-effect.h ├── shell-keyring-prompt.c ├── shell-keyring-prompt.h ├── shell-mount-operation.c ├── shell-mount-operation.h ├── shell-network-agent.c ├── shell-network-agent.h ├── shell-perf-helper.c ├── shell-perf-log.c ├── shell-perf-log.h ├── shell-polkit-authentication-agent.c ├── shell-polkit-authentication-agent.h ├── shell-screenshot.c ├── shell-screenshot.h ├── shell-secure-text-buffer.c ├── shell-secure-text-buffer.h ├── shell-square-bin.c ├── shell-square-bin.h ├── shell-stack.c ├── shell-stack.h ├── shell-tray-icon.c ├── shell-tray-icon.h ├── shell-tray-manager.c ├── shell-tray-manager.h ├── shell-util.c ├── shell-util.h ├── shell-window-preview-layout.c ├── shell-window-preview-layout.h ├── shell-window-preview.c ├── shell-window-preview.h ├── shell-window-tracker-private.h ├── shell-window-tracker.c ├── shell-window-tracker.h ├── shell-wm-private.h ├── shell-wm.c ├── shell-wm.h ├── st │ ├── croco │ │ ├── cr-additional-sel.c │ │ ├── cr-additional-sel.h │ │ ├── cr-attr-sel.c │ │ ├── cr-attr-sel.h │ │ ├── cr-cascade.c │ │ ├── cr-cascade.h │ │ ├── cr-declaration.c │ │ ├── cr-declaration.h │ │ ├── cr-doc-handler.c │ │ ├── cr-doc-handler.h │ │ ├── cr-enc-handler.c │ │ ├── cr-enc-handler.h │ │ ├── cr-fonts.c │ │ ├── cr-fonts.h │ │ ├── cr-input.c │ │ ├── cr-input.h │ │ ├── cr-num.c │ │ ├── cr-num.h │ │ ├── cr-om-parser.c │ │ ├── cr-om-parser.h │ │ ├── cr-parser.c │ │ ├── cr-parser.h │ │ ├── cr-parsing-location.c │ │ ├── cr-parsing-location.h │ │ ├── cr-prop-list.c │ │ ├── cr-prop-list.h │ │ ├── cr-pseudo.c │ │ ├── cr-pseudo.h │ │ ├── cr-rgb.c │ │ ├── cr-rgb.h │ │ ├── cr-selector.c │ │ ├── cr-selector.h │ │ ├── cr-simple-sel.c │ │ ├── cr-simple-sel.h │ │ ├── cr-statement.c │ │ ├── cr-statement.h │ │ ├── cr-string.c │ │ ├── cr-string.h │ │ ├── cr-stylesheet.c │ │ ├── cr-stylesheet.h │ │ ├── cr-term.c │ │ ├── cr-term.h │ │ ├── cr-tknzr.c │ │ ├── cr-tknzr.h │ │ ├── cr-token.c │ │ ├── cr-token.h │ │ ├── cr-utils.c │ │ ├── cr-utils.h │ │ ├── libcroco-config.h │ │ └── libcroco.h │ ├── meson.build │ ├── st-adjustment.c │ ├── st-adjustment.h │ ├── st-bin.c │ ├── st-bin.h │ ├── st-border-image.c │ ├── st-border-image.h │ ├── st-box-layout.c │ ├── st-box-layout.h │ ├── st-button.c │ ├── st-button.h │ ├── st-clipboard.c │ ├── st-clipboard.h │ ├── st-drawing-area.c │ ├── st-drawing-area.h │ ├── st-entry.c │ ├── st-entry.h │ ├── st-focus-manager.c │ ├── st-focus-manager.h │ ├── st-generic-accessible.c │ ├── st-generic-accessible.h │ ├── st-icon-colors.c │ ├── st-icon-colors.h │ ├── st-icon.c │ ├── st-icon.h │ ├── st-image-content.c │ ├── st-image-content.h │ ├── st-label.c │ ├── st-label.h │ ├── st-password-entry.c │ ├── st-password-entry.h │ ├── st-private.c │ ├── st-private.h │ ├── st-scroll-bar.c │ ├── st-scroll-bar.h │ ├── st-scroll-view-fade.c │ ├── st-scroll-view-fade.glsl │ ├── st-scroll-view-fade.h │ ├── st-scroll-view.c │ ├── st-scroll-view.h │ ├── st-scrollable.c │ ├── st-scrollable.h │ ├── st-settings.c │ ├── st-settings.h │ ├── st-shadow.c │ ├── st-shadow.h │ ├── st-texture-cache.c │ ├── st-texture-cache.h │ ├── st-theme-context.c │ ├── st-theme-context.h │ ├── st-theme-node-drawing.c │ ├── st-theme-node-private.h │ ├── st-theme-node-transition.c │ ├── st-theme-node-transition.h │ ├── st-theme-node.c │ ├── st-theme-node.h │ ├── st-theme-private.h │ ├── st-theme.c │ ├── st-theme.h │ ├── st-types.h │ ├── st-viewport.c │ ├── st-viewport.h │ ├── st-widget-accessible.h │ ├── st-widget.c │ ├── st-widget.h │ ├── st.h.in │ ├── test-theme.c │ └── test-theme.css └── tray │ ├── meson.build │ ├── na-tray-child.c │ ├── na-tray-child.h │ ├── na-tray-manager.c │ └── na-tray-manager.h ├── subprojects ├── extensions-app │ ├── COPYING │ ├── README.md │ ├── build-aux │ │ ├── flatpak │ │ │ └── org.gnome.Extensions.json │ │ └── meson │ │ │ └── check-version.py │ ├── data │ │ ├── css │ │ │ └── style.css │ │ ├── dbus-interfaces │ │ │ └── org.gnome.Shell.Extensions.xml │ │ ├── icons │ │ │ ├── hicolor │ │ │ │ ├── scalable │ │ │ │ │ └── apps │ │ │ │ │ │ ├── org.gnome.Extensions.Devel.svg │ │ │ │ │ │ └── org.gnome.Extensions.svg │ │ │ │ └── symbolic │ │ │ │ │ └── apps │ │ │ │ │ └── org.gnome.Extensions-symbolic.svg │ │ │ └── meson.build │ │ ├── meson.build │ │ ├── metainfo │ │ │ ├── extensions-main.png │ │ │ ├── extensions-remove.png │ │ │ ├── extensions-update.png │ │ │ ├── meson.build │ │ │ └── org.gnome.Extensions.metainfo.xml.in │ │ ├── org.gnome.Extensions.data.gresource.xml.in │ │ ├── org.gnome.Extensions.desktop.in.in │ │ ├── org.gnome.Extensions.service.in │ │ └── ui │ │ │ ├── extension-row.ui │ │ │ └── extensions-window.ui │ ├── generate-translations.sh │ ├── js │ │ ├── gnome-extensions-app.in │ │ ├── main.js │ │ ├── meson.build │ │ ├── misc │ │ │ └── config.js │ │ ├── org.gnome.Extensions.in │ │ └── org.gnome.Extensions.src.gresource.xml.in │ ├── logo.png │ ├── meson.build │ ├── meson_options.txt │ ├── po │ │ ├── .gitignore │ │ ├── LINGUAS │ │ └── meson.build │ └── subprojects │ │ └── shew ├── extensions-tool │ ├── COPYING │ ├── README.md │ ├── completion │ │ └── bash │ │ │ └── gnome-extensions │ ├── generate-translations.sh │ ├── man │ │ ├── gnome-extensions.1 │ │ ├── gnome-extensions.txt │ │ ├── meson.build │ │ └── stylesheet.xsl │ ├── meson.build │ ├── meson_options.txt │ ├── po │ │ ├── .gitignore │ │ ├── LINGUAS │ │ └── meson.build │ └── src │ │ ├── command-create.c │ │ ├── command-disable.c │ │ ├── command-enable.c │ │ ├── command-info.c │ │ ├── command-install.c │ │ ├── command-list.c │ │ ├── command-pack.c │ │ ├── command-prefs.c │ │ ├── command-reset.c │ │ ├── command-uninstall.c │ │ ├── commands.h │ │ ├── common.h │ │ ├── gnome-extensions-tool.gresource.xml │ │ ├── main.c │ │ ├── meson.build │ │ └── templates │ │ ├── 00-plain.desktop.in │ │ ├── indicator.desktop.in │ │ ├── indicator │ │ ├── extension.js │ │ └── stylesheet.css │ │ ├── meson.build │ │ └── plain │ │ ├── extension.js │ │ └── stylesheet.css ├── gvc │ ├── .gitlab-ci.yml │ ├── .gitlab-ci │ │ ├── meson.build │ │ └── subprojects │ │ │ └── gvc │ ├── README.md │ ├── gvc-channel-map-private.h │ ├── gvc-channel-map.c │ ├── gvc-channel-map.h │ ├── gvc-mixer-card-private.h │ ├── gvc-mixer-card.c │ ├── gvc-mixer-card.h │ ├── gvc-mixer-control-private.h │ ├── gvc-mixer-control.c │ ├── gvc-mixer-control.h │ ├── gvc-mixer-event-role.c │ ├── gvc-mixer-event-role.h │ ├── gvc-mixer-sink-input.c │ ├── gvc-mixer-sink-input.h │ ├── gvc-mixer-sink.c │ ├── gvc-mixer-sink.h │ ├── gvc-mixer-source-output.c │ ├── gvc-mixer-source-output.h │ ├── gvc-mixer-source.c │ ├── gvc-mixer-source.h │ ├── gvc-mixer-stream-private.h │ ├── gvc-mixer-stream.c │ ├── gvc-mixer-stream.h │ ├── gvc-mixer-ui-device.c │ ├── gvc-mixer-ui-device.h │ ├── gvc-pulseaudio-fake.h │ ├── libgnome-volume-control.doap │ ├── meson.build │ ├── meson_options.txt │ └── test-audio-device-selection.c └── shew │ ├── COPYING │ ├── README.md │ ├── meson.build │ ├── meson_options.txt │ └── src │ ├── meson.build │ ├── shew-external-window-wayland.c │ ├── shew-external-window-wayland.h │ ├── shew-external-window-x11.c │ ├── shew-external-window-x11.h │ ├── shew-external-window.c │ ├── shew-external-window.h │ ├── shew-window-exporter.c │ └── shew-window-exporter.h ├── tests ├── interactive │ ├── background-repeat.js │ ├── background-size.js │ ├── border-radius.js │ ├── border-width.js │ ├── borders.js │ ├── box-layout.js │ ├── box-shadow-animated.js │ ├── box-shadows.js │ ├── calendar.js │ ├── css-fonts.js │ ├── entry.js │ ├── gapplication.js │ ├── icons.js │ ├── inline-style.js │ ├── scroll-view-sizing.js │ ├── scrolling.js │ ├── test-title.js │ └── transitions.js ├── meson.build ├── run-test.sh.in ├── testcommon │ ├── 100-200.svg │ ├── 200-100.svg │ ├── 200-200.svg │ ├── border-image.png │ ├── face-plain.png │ ├── test.css │ └── ui.js └── unit │ ├── highlighter.js │ ├── insertSorted.js │ ├── jsParse.js │ ├── markup.js │ ├── params.js │ ├── signalTracker.js │ ├── url.js │ └── versionCompare.js └── tools ├── build ├── gnome-shell-build-setup.sh ├── jhbuildrc-custom-example └── jhbuildrc-gnome-shell ├── gnome-shell-overrides-migration.sh └── meson.build /.eslintrc.yml: -------------------------------------------------------------------------------- 1 | extends: 2 | - ./lint/eslintrc-gjs.yml 3 | - ./lint/eslintrc-shell.yml 4 | overrides: 5 | - files: 6 | - js/ui/init.js 7 | parserOptions: 8 | sourceType: module -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.pc/ 2 | -------------------------------------------------------------------------------- /.gitlab-ci/check-potfiles.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | srcdirs="src subprojects/extensions-tool" 4 | uidirs="js subprojects/extensions-app" 5 | 6 | # find source files that contain gettext keywords 7 | files=$(grep -lR --include='*.c' '\(gettext\|[^I_)]_\)(' $srcdirs) 8 | 9 | # find ui files that contain translatable string 10 | files="$files "$(grep -lRi --include='*.ui' 'translatable="[ty1]' $uidirs) 11 | 12 | # filter out excluded files 13 | if [ -f po/POTFILES.skip ]; then 14 | files=$(for f in $files; do ! grep -q ^$f po/POTFILES.skip && echo $f; done) 15 | fi 16 | 17 | # find those that aren't listed in POTFILES.in 18 | missing=$(for f in $files; do ! grep -q ^$f po/POTFILES.in && echo $f; done) 19 | 20 | if [ ${#missing} -eq 0 ]; then 21 | exit 0 22 | fi 23 | 24 | cat >&2 <&2 31 | done 32 | echo >&2 33 | 34 | exit 1 35 | -------------------------------------------------------------------------------- /.gitlab-ci/commit-rules.yml: -------------------------------------------------------------------------------- 1 | patterns: 2 | deny: 3 | - regex: '^$CI_MERGE_REQUEST_PROJECT_URL/(-/)?merge_requests/$CI_MERGE_REQUEST_IID$' 4 | message: Commit message must not contain a link to its own merge request 5 | - regex: '^(st-|St)' 6 | message: Commit message subject should not be prefixed with 'st-' or 'St', use 'st/' instead 7 | where: subject 8 | - regex: '^[^:]+: [a-z]' 9 | message: "Commit message subject should be properly Capitalized. E.g. 'window: Marginalize extradicity'" 10 | where: subject 11 | - regex: '^\S*\.(js|c|h):' 12 | message: Commit message subject prefix should not include .c, .h etc. 13 | where: subject 14 | - regex: '([^.]\.|[:,;])\s*$' 15 | message: Commit message subject should not end with punctuation 16 | where: subject 17 | -------------------------------------------------------------------------------- /.gitlab-ci/download-coverity-tarball.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # We need a coverity token to fetch the tarball 4 | if [ -x $COVERITY_TOKEN ] 5 | then 6 | echo "No coverity token. Run this job from a protected branch." 7 | exit -1 8 | fi 9 | 10 | mkdir -p coverity 11 | 12 | # Download and check MD5 first 13 | curl https://scan.coverity.com/download/linux64 \ 14 | --data "token=$COVERITY_TOKEN&project=GNOME+Shell&md5=1" \ 15 | --output /tmp/coverity_tool.md5 16 | 17 | diff /tmp/coverity_tool.md5 coverity/coverity_tool.md5 >/dev/null 2>&1 18 | 19 | if [ $? -eq 0 -a -d coverity/cov-analysis* ] 20 | then 21 | echo "Coverity tarball is up-to-date" 22 | exit 0 23 | fi 24 | 25 | # Download and extract coverity tarball 26 | curl https://scan.coverity.com/download/linux64 \ 27 | --data "token=$COVERITY_TOKEN&project=GNOME+Shell" \ 28 | --output /tmp/coverity_tool.tgz 29 | 30 | rm -rf ./coverity/cov-analysis* 31 | 32 | tar zxf /tmp/coverity_tool.tgz -C coverity/ 33 | if [ $? -eq 0 ] 34 | then 35 | mv /tmp/coverity_tool.md5 coverity/ 36 | fi 37 | 38 | rm /tmp/coverity_tool.tgz 39 | -------------------------------------------------------------------------------- /.gitlab-ci/install-meson-project.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | if [[ $# -lt 4 ]]; then 6 | echo Usage: $0 [options] [repo-url] [commit] [subdir] 7 | echo Options: 8 | echo -Dkey=val 9 | exit 1 10 | fi 11 | 12 | MESON_OPTIONS=() 13 | 14 | while [[ $1 =~ ^-D ]]; do 15 | MESON_OPTIONS+=( "$1" ) 16 | shift 17 | done 18 | 19 | REPO_URL="$1" 20 | COMMIT="$2" 21 | SUBDIR="$3" 22 | PREPARE="$4" 23 | 24 | REPO_DIR="$(basename ${REPO_URL%.git})" 25 | 26 | git clone --depth 1 "$REPO_URL" -b "$COMMIT" 27 | pushd "$REPO_DIR" 28 | pushd "$SUBDIR" 29 | sh -c "$PREPARE" 30 | meson --prefix=/usr _build "${MESON_OPTIONS[@]}" 31 | meson install -C _build 32 | popd 33 | popd 34 | rm -rf "$REPO_DIR" 35 | -------------------------------------------------------------------------------- /.gitlab/issue_templates/Feature.md: -------------------------------------------------------------------------------- 1 | 5 | 6 | ### Feature summary 7 | 8 | 12 | 13 | ### How would you like it to work 14 | 15 | 19 | 20 | ### Relevant links, screenshots, screencasts etc. 21 | 22 | 27 | 28 | 29 | 30 | /label ~"1. Feature" 31 | -------------------------------------------------------------------------------- /.jscheckignore: -------------------------------------------------------------------------------- 1 | js/ui/init.js -------------------------------------------------------------------------------- /.settings/.jsdtscope: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /config.h.meson: -------------------------------------------------------------------------------- 1 | /* The prefix for our gettext translation domains. */ 2 | #mesondefine GETTEXT_PACKAGE 3 | 4 | /* Version number of package */ 5 | #mesondefine VERSION 6 | 7 | /* Version number of package */ 8 | #mesondefine PACKAGE_VERSION 9 | 10 | /* Define to 1 if you have the `fdwalk' function. */ 11 | #mesondefine HAVE_FDWALK 12 | 13 | /* Define to 1 if you have the `mallinfo' function. */ 14 | #mesondefine HAVE_MALLINFO 15 | 16 | /* Define to 1 if you have the `mallinfo2' function. */ 17 | #mesondefine HAVE_MALLINFO2 18 | 19 | /* Define to 1 fi you have the header file. */ 20 | #mesondefine HAVE_SYS_RESOURCE_H 21 | 22 | /* Define if we have NetworkManager */ 23 | #mesondefine HAVE_NETWORKMANAGER 24 | 25 | /* Define if we have systemd */ 26 | #mesondefine HAVE_SYSTEMD 27 | 28 | /* Define if _NL_TIME_FIRST_WEEKDATE is available */ 29 | #mesondefine HAVE__NL_TIME_FIRST_WEEKDAY 30 | 31 | /* Define if you have the `g_desktop_app_info_launch_uris_as_manager_with_fds` function */ 32 | #mesondefine HAVE_GIO_DESKTOP_LAUNCH_URIS_WITH_FDS 33 | 34 | /* Define if fdwalk is available in libc */ 35 | #mesondefine HAVE_FDWALK 36 | 37 | /* Define if polkit defines autocleanup functions */ 38 | #mesondefine HAVE_POLKIT_AUTOCLEANUP 39 | -------------------------------------------------------------------------------- /data/00_org.gnome.shell.gschema.override: -------------------------------------------------------------------------------- 1 | [org.gnome.mutter:GNOME] 2 | attach-modal-dialogs=true 3 | edge-tiling=true 4 | dynamic-workspaces=true 5 | workspaces-only-on-primary=true 6 | focus-change-on-pointer-rest=true 7 | -------------------------------------------------------------------------------- /data/50-gnome-shell-screenshots.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 11 | 13 | 14 | 16 | 17 | 19 | 20 | -------------------------------------------------------------------------------- /data/50-gnome-shell-system.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 11 | 13 | 14 | 16 | 17 | 19 | 20 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /data/README.osk-layouts: -------------------------------------------------------------------------------- 1 | Gnome-shell OSK layouts are extracted from CLDR layout definitions: 2 | https://www.unicode.org/cldr/charts/latest/keyboards/layouts/index.html 3 | 4 | Updating these involves several steps: 5 | 6 | 1) Downloading and unzipping the tarball found at: 7 | http://www.unicode.org/Public/cldr/latest/keyboards.zip 8 | 9 | This file contains XML files describing the keyboard layouts. 10 | 11 | 2) Cloning the cldr2json script at: 12 | git://repo.or.cz/cldr2json.git 13 | 14 | It will be used to convert the XML files into JSON that can be 15 | directly consumed by gnome-shell. 16 | 17 | 3) Running the script to produce the files: 18 | ./cldr2json 19 | 20 | We shall usually use the "android" folder, since that's most 21 | complete, and similar to our UI and target sizes. And the target 22 | directory must be data/osk-layouts in this repository. 23 | 24 | 4) Modify gnome-shell-osk-layouts.gresource.xml to include the files 25 | 26 | 5) Do git add on the updated/new files, and git commit. 27 | 28 | 29 | Or alternatively: 30 | 31 | 1) Run update-osk-layouts.sh 32 | 33 | 2) Do git add and git commit 34 | -------------------------------------------------------------------------------- /data/cldr2json/README.md: -------------------------------------------------------------------------------- 1 | cldr2json 2 | ========= 3 | 4 | This script converts Unicode CLDR android keyboard layouts to JSON usable by 5 | GNOME Shell. 6 | 7 | CLDR keyboard layouts can be found at 8 | 9 | 10 | 11 | Usage 12 | ===== 13 | 14 | ./cldr2json 15 | 16 | example: 17 | 18 | ./cldr2json cldr/keyboards/android/ json_layouts/ 19 | 20 | 21 | Keyboard layout mapping 22 | ======================= 23 | 24 | Unicode CLDR layout identifiers are language codes, while XKB layout 25 | identifiers are... something else. The mapping between the two currently uses 26 | heuristic based on the layout descriptions, in this order: 27 | 28 | - if the CLDR layout description matches an XKB layout description, chose its 29 | XKB identifier 30 | - if one word of the CLDR layout description matches an XKB layout 31 | description, chose its XKB identifier 32 | - if the CLDR layout description matches one word of an XKB layout description, 33 | chose its XKB identifier 34 | 35 | That doesn't always work. For instance it fails for "en" language, that should 36 | match "us" XKB identifier. For such cases, there is a mapping in 37 | LOCALE_TO_XKB_OVERRIDES at the top of the script. If you discover a weird 38 | mapping of if you get a "failed to find XKB mapping for " warning then 39 | please consider adding an override there. 40 | 41 | -------------------------------------------------------------------------------- /data/cldr2json/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/data/cldr2json/test/__init__.py -------------------------------------------------------------------------------- /data/dbus-interfaces/meson.build: -------------------------------------------------------------------------------- 1 | dbus_interfaces = [ 2 | 'org.gnome.Shell.Extensions.xml', 3 | 'org.gnome.Shell.Introspect.xml', 4 | 'org.gnome.Shell.PadOsd.xml', 5 | 'org.gnome.Shell.Screencast.xml', 6 | 'org.gnome.Shell.Screenshot.xml', 7 | 'org.gnome.ShellSearchProvider.xml', 8 | 'org.gnome.ShellSearchProvider2.xml' 9 | ] 10 | install_data(dbus_interfaces, install_dir: ifacedir) 11 | -------------------------------------------------------------------------------- /data/dbus-interfaces/net.hadess.SensorProxy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/dbus-interfaces/net.reactivated.Fprint.Manager.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.Application.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.DBus.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.GeoClue2.Agent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.GeoClue2.Manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Cdma.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.ModemManager.Modem.Gsm.Network.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.ModemCdma.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.ModemManager1.Modem.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.Notifications.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.PackageKit.Offline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.UPower.Device.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.UPower.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.bolt1.Device.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.bolt1.Manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.impl.portal.Access.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.impl.portal.PermissionStore.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.impl.portal.Request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.login1.Manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.login1.Session.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.login1.User.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.realmd.Provider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.realmd.Realm.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.freedesktop.realmd.Service.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.ScreenSaver.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SessionManager.EndSessionDialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SessionManager.Inhibitor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SessionManager.Presence.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SessionManager.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SettingsDaemon.Color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SettingsDaemon.Power.Screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SettingsDaemon.Rfkill.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.SettingsDaemon.Wacom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.AudioDeviceSelection.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.CalendarServer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.ClocksIntegration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.HotplugSniffer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.PadOsd.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.PerfHelper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.PortalHelper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.Wacom.PadOsd.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gnome.Shell.WeatherIntegration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.gtk.Notifications.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.mpris.MediaPlayer2.Player.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /data/dbus-interfaces/org.mpris.MediaPlayer2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /data/gnome-shell-overrides-migration.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=GNOME settings overrides migration 4 | NoDisplay=true 5 | Exec=@libexecdir@/gnome-shell-overrides-migration.sh 6 | -------------------------------------------------------------------------------- /data/gnome-shell-theme.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | calendar-today.svg 5 | calendar-today-light.svg 6 | checkbox.svg 7 | checkbox-focused.svg 8 | checkbox-off-focused-light.svg 9 | checkbox-off-focused.svg 10 | checkbox-off-light.svg 11 | checkbox-off.svg 12 | gnome-shell.css 13 | gnome-shell-high-contrast.css 14 | gnome-shell-start.svg 15 | pad-osd.css 16 | process-working.svg 17 | toggle-off.svg 18 | toggle-off-hc.svg 19 | toggle-off-light.svg 20 | toggle-on.svg 21 | toggle-on-hc.svg 22 | toggle-on-light.svg 23 | workspace-placeholder.svg 24 | 25 | 26 | -------------------------------------------------------------------------------- /data/gnome-shell.portal: -------------------------------------------------------------------------------- 1 | [portal] 2 | DBusName=org.gnome.Shell.Portal 3 | Interfaces=org.freedesktop.impl.portal.Access 4 | UseIn=gnome 5 | -------------------------------------------------------------------------------- /data/icons/meson.build: -------------------------------------------------------------------------------- 1 | install_subdir('hicolor', install_dir: icondir) 2 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/carousel-arrow-next-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/carousel-arrow-previous-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/pointer-double-click-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/pointer-primary-click-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/pointer-secondary-click-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/preview-close-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/screenshot-recorded-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/screenshot-ui-display-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/screenshot-ui-show-pointer-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/screenshot-ui-window-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/keyboard-caps-lock-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/keyboard-enter-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/keyboard-hide-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/keyboard-layout-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/keyboard-shift-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/message-indicator-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/no-events-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /data/icons/scalable/status/no-notifications-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/screen-privacy-disabled-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/screen-privacy-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/status/stop-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/org.gnome.Shell-disable-extensions.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Disable GNOME Shell extensions after failure 3 | # Note that this unit must not conflict with anything, and must 4 | # be able to run in parallel with the gnome-session-shutdown.target. 5 | DefaultDependencies=no 6 | 7 | # We want to disable extensions only if gnome-shell has flagged the extensions 8 | # to be a likely cause of trouble. 9 | ConditionPathExists=%t/gnome-shell-disable-extensions 10 | 11 | [Service] 12 | Type=simple 13 | # Disable extensions 14 | ExecStart=gsettings set org.gnome.shell disable-user-extensions true 15 | Restart=no 16 | -------------------------------------------------------------------------------- /data/org.gnome.Shell.Extensions.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | # Keep in sync with subprojects/extensions-app 4 | Name=Extensions 5 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 6 | Icon=org.gnome.Shell.Extensions 7 | # Never launch this, just provide name+icon to portal dialog 8 | Exec=false 9 | OnlyShowIn=GNOME; 10 | NoDisplay=true 11 | -------------------------------------------------------------------------------- /data/org.gnome.Shell.PortalHelper.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Network Login 3 | Type=Application 4 | Exec=gapplication launch org.gnome.Shell.PortalHelper 5 | DBusActivatable=true 6 | NoDisplay=true 7 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 8 | Icon=network-workgroup 9 | StartupNotify=true 10 | OnlyShowIn=GNOME; 11 | -------------------------------------------------------------------------------- /data/org.gnome.Shell.PortalHelper.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=org.gnome.Shell.PortalHelper 3 | Exec=@libexecdir@/gnome-shell-portal-helper 4 | -------------------------------------------------------------------------------- /data/org.gnome.Shell.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=GNOME Shell 4 | Comment=Window management and application launching 5 | Exec=@bindir@/gnome-shell 6 | Categories=GNOME;GTK;Core; 7 | OnlyShowIn=GNOME; 8 | NoDisplay=true 9 | X-GNOME-Autostart-Phase=DisplayServer 10 | X-GNOME-Provides=panel;windowmanager; 11 | X-GNOME-Autostart-Notify=true 12 | X-GNOME-AutoRestart=false 13 | X-GNOME-HiddenUnderSystemd=@systemd_hidden@ 14 | -------------------------------------------------------------------------------- /data/org.gnome.Shell.target: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=GNOME Shell 3 | DefaultDependencies=no 4 | 5 | Requisite=gnome-session-initialized.target 6 | PartOf=gnome-session-initialized.target 7 | Before=gnome-session-initialized.target 8 | 9 | Wants=org.gnome.Shell@wayland.service 10 | Wants=org.gnome.Shell@x11.service 11 | -------------------------------------------------------------------------------- /data/perf-background.xml.in: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 1990 11 | 1 12 | 1 13 | 0 14 | 00 15 | 00 16 | 17 | 18 | 19 | 20 | 1261440000.0 21 | @datadir@/backgrounds/gnome/adwaita-morning.jpg 22 | @datadir@/backgrounds/gnome/adwaita-day.jpg 23 | 24 | 25 | 26 | 27 | 60 28 | /usr/share/backgrounds/gnome/Sandstone.jpg 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /data/theme/calendar-today-light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/calendar-today.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/checkbox-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/checkbox.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-high-contrast.scss: -------------------------------------------------------------------------------- 1 | $variant: 'dark'; 2 | 3 | @import "gnome-shell-sass/_high-contrast-colors"; //use gtk colors 4 | @import "gnome-shell-sass/_drawing"; 5 | @import "gnome-shell-sass/_common"; 6 | @import "gnome-shell-sass/_widgets"; 7 | 8 | //force symbolic icons 9 | stage { 10 | -st-icon-style: symbolic; 11 | } 12 | 13 | .toggle-switch { width: 48px; } 14 | .toggle-switch { 15 | background-image: url("resource:///org/gnome/shell/theme/toggle-off-hc.svg"); 16 | &:checked { background-image: url("resource:///org/gnome/shell/theme/toggle-on-hc.svg"); } 17 | } 18 | 19 | //force opaque panel 20 | #panel { 21 | &.login-screen, 22 | &.unlock-screen, 23 | &:overview { 24 | background-color: #000; 25 | } 26 | 27 | .panel-button { 28 | color: #fff !important; 29 | } 30 | } 31 | 32 | //thumbnail app icons no dropshadow and forced color 33 | .window-picker .icon-dropshadow { 34 | icon-shadow: none; 35 | background-color: $osd_bg_color; 36 | padding: $base_padding * 2; 37 | border-radius: $modal_radius; 38 | } 39 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/NEWS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/data/theme/gnome-shell-sass/NEWS -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/README.md: -------------------------------------------------------------------------------- 1 | # GNOME Shell Sass 2 | GNOME Shell Sass is a project intended to allow the sharing of the 3 | theme sources in sass between gnome-shell and other projects like 4 | gnome-shell-extensions. 5 | 6 | Any changes should be done in the [GNOME Shell subtree][shell-subtree] 7 | and not the stand-alone [gnome-shell-sass repository][sass-repo]. They 8 | will then be synchronized periodically before releases. 9 | 10 | ## License 11 | GNOME Shell Sass is distributed under the terms of the GNU General Public 12 | License, version 2 or later. See the [COPYING][license] file for details. 13 | 14 | [shell-subtree]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/HEAD/data/theme/gnome-shell-sass 15 | [sass-repo]: https://gitlab.gnome.org/GNOME/gnome-shell-sass 16 | [license]: COPYING 17 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/_palette.scss: -------------------------------------------------------------------------------- 1 | //GNOME Color Palette 2 | $blue_1: #99c1f1; 3 | $blue_2: #62a0ea; 4 | $blue_3: #3584e4; 5 | $blue_4: #1c71d8; 6 | $blue_5: #1a5fb4; 7 | $green_1: #8ff0a4; 8 | $green_2: #57e389; 9 | $green_3: #33d17a; 10 | $green_4: #2ec27e; 11 | $green_5: #26a269; 12 | $yellow_1: #f9f06b; 13 | $yellow_2: #f8e45c; 14 | $yellow_3: #f6d32d; 15 | $yellow_4: #f5c211; 16 | $yellow_5: #e5a50a; 17 | $orange_1: #ffbe6f; 18 | $orange_2: #ffa348; 19 | $orange_3: #ff7800; 20 | $orange_4: #e66100; 21 | $orange_5: #c64600; 22 | $red_1: #f66151; 23 | $red_2: #ed333b; 24 | $red_3: #e01b24; 25 | $red_4: #c01c28; 26 | $red_5: #a51d2d; 27 | $purple_1: #dc8add; 28 | $purple_2: #c061cb; 29 | $purple_3: #9141ac; 30 | $purple_4: #813d9c; 31 | $purple_5: #613583; 32 | $brown_1: #cdab8f; 33 | $brown_2: #b5835a; 34 | $brown_3: #986a44; 35 | $brown_4: #865e3c; 36 | $brown_5: #63452c; 37 | $light_1: #ffffff; 38 | $light_2: #f6f5f4; 39 | $light_3: #deddda; 40 | $light_4: #c0bfbc; 41 | $light_5: #9a9996; 42 | $dark_1: #77767b; 43 | $dark_2: #5e5c64; 44 | $dark_3: #3d3846; 45 | $dark_4: #241f31; 46 | $dark_5: #000000; -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_a11y.scss: -------------------------------------------------------------------------------- 1 | // Pointer location 2 | .ripple-pointer-location { 3 | width: $ripple_size; 4 | height: $ripple_size; 5 | border-radius: $ripple_size * 0.5; // radius equals the size of the box to give us the curve 6 | background-color: lighten(transparentize($selected_bg_color, 0.7), 30%); 7 | box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%); 8 | } 9 | 10 | // Pointer accessibility notifications 11 | .pie-timer { 12 | width: 60px; 13 | height: 60px; 14 | -pie-border-width: 3px; 15 | -pie-border-color: $selected_bg_color; 16 | -pie-background-color: lighten(transparentize($selected_bg_color, 0.7), 40%); 17 | } 18 | 19 | // Screen zoom/Magnifier 20 | .magnifier-zoom-region { 21 | border: 2px solid $selected_bg_color; 22 | 23 | &.full-screen { border-width: 0; } 24 | } 25 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_base.scss: -------------------------------------------------------------------------------- 1 | // Links 2 | .shell-link { 3 | color: $link_color; 4 | 5 | &:hover { 6 | color: lighten($link_color, 10%); 7 | } 8 | } 9 | 10 | // Outline for low res icons 11 | .lowres-icon { 12 | icon-shadow: 0 1px 2px rgba(black, 0.3); 13 | } 14 | 15 | // Dropshadow for large icons 16 | .icon-dropshadow { 17 | icon-shadow: 0 1px 5px rgba(black, 0.8); 18 | } 19 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_buttons.scss: -------------------------------------------------------------------------------- 1 | /* Buttons */ 2 | 3 | .button { 4 | @extend %button; // that's it 5 | min-height: 22px; 6 | } 7 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_check-box.scss: -------------------------------------------------------------------------------- 1 | /* Check Boxes */ 2 | 3 | // these are equal to the size of the SVG assets 4 | $check_height: 24px; 5 | $check_width: 24px; 6 | 7 | 8 | .check-box { 9 | StBoxLayout { spacing: .8em; } 10 | StBin { 11 | width: $check_width; 12 | height: $check_height; 13 | background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/checkbox-off-light.svg"), url("resource:///org/gnome/shell/theme/checkbox-off.svg")); 14 | } 15 | &:focus StBin { background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/checkbox-off-focused-light.svg"), url("resource:///org/gnome/shell/theme/checkbox-off-focused.svg"));; } 16 | &:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox.svg"); } 17 | &:focus:checked StBin { background-image: url("resource:///org/gnome/shell/theme/checkbox-focused.svg"); } 18 | } 19 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_corner-ripple.scss: -------------------------------------------------------------------------------- 1 | /* Activities Ripple */ 2 | 3 | $ripple_size: 50px; 4 | 5 | .ripple-box { 6 | background-color: lighten(transparentize($selected_bg_color, 0.7), 40%); 7 | box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%); 8 | // plus + 2px for the border (box-shadow) 9 | width: $ripple_size + 2px; 10 | height: $ripple_size + 2px; 11 | border-radius: 0 0 $ripple_size + 2px 0; // radius equals the size of the box to give us the curve 12 | 13 | // just a simple change to the border radius position 14 | &:rtl { border-radius: 0 0 0 $ripple_size + 2px; } 15 | } 16 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_entries.scss: -------------------------------------------------------------------------------- 1 | /* Entries */ 2 | 3 | StEntry { 4 | border-radius: $base_border_radius; 5 | padding: 8px; 6 | color: $fg_color; 7 | 8 | @include entry(normal); 9 | &:hover { @include entry(hover);} 10 | &:focus { @include entry(focus);} 11 | &:insensitive { @include entry(insensitive);} 12 | 13 | selection-background-color: $selected_bg_color; 14 | selected-color: $selected_fg_color; 15 | 16 | StIcon.capslock-warning { 17 | icon-size: 16px; 18 | warning-color: $warning_color; 19 | padding: 0 4px; 20 | } 21 | 22 | StIcon.peek-password { 23 | icon-size: $base_icon_size; 24 | padding: 0 4px; 25 | } 26 | 27 | StLabel.hint-text { 28 | margin-left: 2px; 29 | color: transparentize($fg_color, 0.3); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_hotplug.scss: -------------------------------------------------------------------------------- 1 | // hotplug 2 | 3 | .hotplug-notification-item { 4 | @extend %bubble_button; 5 | } 6 | 7 | .hotplug-notification-item-icon { 8 | icon-size: 24px; 9 | padding: 0 4px; 10 | } 11 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_ibus-popup.scss: -------------------------------------------------------------------------------- 1 | // IBus Candidate Popup 2 | 3 | .candidate-popup-boxpointer { 4 | @extend .popup-menu-boxpointer; 5 | } 6 | 7 | .candidate-popup-content { 8 | padding: $base_padding; 9 | spacing: $base_padding; 10 | @extend .popup-menu-content; 11 | } 12 | 13 | .candidate-index { 14 | padding: 0; 15 | padding-right: $base_padding; 16 | color: $insensitive_fg_color; 17 | } 18 | 19 | .candidate-box { 20 | padding: $base_padding $base_padding*2 $base_padding $base_padding*2; 21 | border-radius: $base_border_radius; 22 | &:selected { background-color: $selected_bg_color; color: $selected_fg_color; } 23 | &:hover { background-color: $hover_bg_color; color: $hover_fg_color; } 24 | } 25 | 26 | .candidate-page-button-box { 27 | height: 2em; 28 | .vertical & { padding-top: $base_padding*2; } 29 | .horizontal & { padding-left: $base_padding*2; } 30 | } 31 | 32 | .candidate-page-button { padding: $base_padding;} 33 | 34 | .candidate-page-button-previous { border-radius: $base_border_radius 0px 0px $base_border_radius; border-right-width: 0;box-shadow: none;} 35 | .candidate-page-button-next { border-radius: 0px $base_border_radius $base_border_radius 0px;box-shadow: none;} 36 | .candidate-page-button-icon { icon-size: $base_icon_size; } 37 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_network-dialog.scss: -------------------------------------------------------------------------------- 1 | /* Select Network dialogs */ 2 | .nm-dialog { 3 | max-height: 34em; 4 | min-height: 31em; 5 | min-width: 32em; 6 | } 7 | 8 | .nm-dialog-content { 9 | spacing: 20px; 10 | padding: 24px; 11 | } 12 | 13 | .nm-dialog-header { @extend %heading; } 14 | .nm-dialog-subheader { color: $insensitive_fg_color;} 15 | .nm-dialog-header-icon { icon-size: $large_icon_size;} 16 | .nm-dialog-header-hbox { spacing: 10px; } 17 | 18 | .nm-dialog-network-selected { 19 | margin: 0 $base_margin*2; 20 | } 21 | 22 | .nm-dialog-scroll-view { 23 | padding:$base_padding; 24 | border-radius: $base_border_radius; 25 | background-color: $base_color; 26 | } 27 | 28 | .nm-dialog-item { 29 | padding: $base_padding * 2; 30 | 31 | &:selected { 32 | background-color: $selected_bg_color; 33 | border-radius: $base_border_radius - 3px; 34 | color: $selected_fg_color; 35 | } 36 | &:hover { background-color:$hover_bg_color;} 37 | } 38 | 39 | .nm-dialog-icon { icon-size: $base_icon_size; } 40 | .nm-dialog-icons { spacing: $base_padding * 2; } 41 | 42 | // no networks 43 | .no-networks-box { spacing: $base_padding; } 44 | .no-networks-label { color: $insensitive_fg_color; } 45 | 46 | // airplane mode 47 | .nm-dialog-airplane-box { 48 | text-align: center; 49 | spacing: 12px; 50 | } 51 | .nm-dialog-airplane-headline { @extend %title_3;} 52 | .nm-dialog-airplane-text { color: $insensitive_fg_color;} 53 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_overview.scss: -------------------------------------------------------------------------------- 1 | /* OVERVIEW */ 2 | 3 | .controls-manager, .secondary-monitor-workspaces { 4 | spacing: $base_padding * 2; 5 | } 6 | 7 | #overviewGroup { 8 | background-color: $system_bg_color; 9 | } 10 | 11 | .overview-controls { 12 | padding-bottom: 32px; 13 | } 14 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_scrollbars.scss: -------------------------------------------------------------------------------- 1 | /* Scrollbars */ 2 | 3 | StScrollView { 4 | &.vfade { -st-vfade-offset: 68px; } 5 | &.hfade { -st-hfade-offset: 68px; } 6 | } 7 | 8 | StScrollBar { 9 | padding: 0; 10 | 11 | StScrollView & { 12 | min-width: 8px; 13 | min-height: 8px; 14 | } 15 | 16 | StBin#trough { 17 | border-radius: 0; 18 | background-color: transparent; 19 | } 20 | 21 | StButton#vhandle, StButton#hhandle { 22 | border-radius: 8px; 23 | background-color: mix($fg_color, $bg_color, 30%); 24 | border: 3px solid transparent; //would be nice to margin or at least to transparent 25 | transition: 500ms all ease; 26 | &:hover {background-color: mix($fg_color, $bg_color, 50%);} 27 | &:active {background-color: mix($fg_color, $bg_color, 40%);} 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_search-entry.scss: -------------------------------------------------------------------------------- 1 | // Search entry 2 | 3 | $search_entry_width: 320px; 4 | $search_entry_height: 36px; 5 | 6 | %search_entry, 7 | .search-entry { 8 | border-radius: $search_entry_height * 0.5; // half the height 9 | 10 | margin-top: $base_padding * 2; 11 | margin-bottom: $base_padding; 12 | padding: $base_padding+1 $base_padding+3; 13 | width: $search_entry_width; 14 | 15 | @include entry(normal); 16 | &:hover { @include entry(hover);} 17 | &:focus { @include entry(focus);} 18 | &:insensitive { @include entry(insensitive);} 19 | 20 | .search-entry-icon { 21 | color: inherit; 22 | icon-size: $base_icon_size; 23 | margin-top: 2px; // center vertically 24 | padding: 0 4px; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_slider.scss: -------------------------------------------------------------------------------- 1 | /* Slider */ 2 | 3 | $slider_size: 16px; 4 | 5 | .slider { 6 | // slider trough 7 | -barlevel-height: 4px; 8 | -barlevel-background-color: if($variant == 'light', transparentize($fg_color, 0.6), transparentize($fg_color, 0.8)); //background of the trough 9 | -barlevel-border-width: 2px; 10 | -barlevel-border-color: transparent; // trough border color 11 | // fill style 12 | -barlevel-active-background-color: $selected_bg_color; 13 | -barlevel-active-border-color: transparent; 14 | // overfill style (red in this case) 15 | -barlevel-overdrive-color: $destructive_color; 16 | -barlevel-overdrive-border-color: transparent; //trough border when red; 17 | -barlevel-overdrive-separator-width:1px; 18 | // slider handler 19 | -slider-handle-radius: $slider_size * 0.5; // half the size of the size 20 | -slider-handle-border-width: 0; 21 | -slider-handle-border-color: transparent; // because 0 width 22 | } 23 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_switches.scss: -------------------------------------------------------------------------------- 1 | /* Switches */ 2 | 3 | // these are equal to the size of the SVG assets 4 | $switch_height: 26px; 5 | $switch_width: 48px; 6 | 7 | .toggle-switch { 8 | color: $fg_color; 9 | height: $switch_height; 10 | width: $switch_width; 11 | background-size: contain; 12 | background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-off-light.svg"),url("resource:///org/gnome/shell/theme/toggle-off.svg")); 13 | &:checked { 14 | background-image: if($variant == 'light', url("resource:///org/gnome/shell/theme/toggle-on-light.svg"),url("resource:///org/gnome/shell/theme/toggle-on.svg")); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_workspace-switcher.scss: -------------------------------------------------------------------------------- 1 | /* Workspace Switcher */ 2 | 3 | $ws_indicator_height: $large_icon_size; 4 | $ws_dot_active: $ws_indicator_height / 3; 5 | $ws_dot_inactive: $ws_indicator_height / 6; 6 | 7 | .workspace-switcher { 8 | @extend %osd_panel; 9 | margin-bottom: 4em; 10 | spacing: $base_padding * 2; 11 | padding: $base_padding * 2 $base_padding * 3; 12 | } 13 | 14 | .ws-switcher-indicator { 15 | background-color: transparentize($osd_fg_color,0.5); 16 | padding: $ws_dot_inactive / 2; 17 | margin: ($ws_indicator_height - $ws_dot_inactive) / 2; 18 | border-radius: $ws_indicator_height; 19 | 20 | &:active { 21 | background-color: $osd_fg_color; 22 | padding: $ws_dot_active / 2; 23 | margin: ($ws_indicator_height - $ws_dot_active) / 2; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /data/theme/gnome-shell-sass/widgets/_workspace-thumbnails.scss: -------------------------------------------------------------------------------- 1 | /* Workspace pager */ 2 | 3 | // thumbnails in overview 4 | .workspace-thumbnails { 5 | visible-width: 32px; //amount visible before hover 6 | spacing: $base_padding; 7 | padding: $base_padding; 8 | 9 | .workspace-thumbnail { 10 | @extend %overview_panel; 11 | border-radius: 3px; 12 | } 13 | 14 | // drag and drop indicator 15 | .placeholder { 16 | background-image: url("resource:///org/gnome/shell/theme/workspace-placeholder.svg"); 17 | background-size: contain; 18 | width: 18px; 19 | } 20 | } 21 | 22 | // selected indicator 23 | .workspace-thumbnail-indicator { 24 | border: 3px solid $selected_bg_color; 25 | border-radius: 3px; 26 | padding: 0px; 27 | // background-color: transparentize($selected_bg_color, 0.9); 28 | } 29 | -------------------------------------------------------------------------------- /data/theme/gnome-shell.scss: -------------------------------------------------------------------------------- 1 | $variant: 'dark'; 2 | 3 | @import "gnome-shell-sass/_colors"; //use gtk colors 4 | @import "gnome-shell-sass/_drawing"; 5 | @import "gnome-shell-sass/_common"; 6 | @import "gnome-shell-sass/_widgets"; 7 | -------------------------------------------------------------------------------- /data/theme/pad-osd.css: -------------------------------------------------------------------------------- 1 | .Leader { 2 | stroke-width: .5 !important; 3 | stroke: #535353; 4 | fill: none !important; 5 | } 6 | 7 | .Button { 8 | stroke-width: .25; 9 | stroke: #ededed; 10 | fill: #ededed; 11 | } 12 | 13 | .Ring { 14 | stroke-width: .5 !important; 15 | stroke: #535353 !important; 16 | fill: none !important; 17 | } 18 | 19 | .Label { 20 | stroke: none !important; 21 | stroke-width: .1 !important; 22 | fill: transparent !important; 23 | } 24 | 25 | .TouchStrip, .TouchRing { 26 | stroke-width: .1 !important; 27 | stroke: #ededed !important; 28 | fill: #535353 !important; 29 | } 30 | -------------------------------------------------------------------------------- /data/theme/toggle-off-hc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/toggle-off-light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/toggle-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/toggle-on-hc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/toggle-on-light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/theme/toggle-on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/update-osk-layouts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | 3 | CLDR_LAYOUTS_TARBALL="http://www.unicode.org/Public/cldr/latest/keyboards.zip" 4 | 5 | WORKDIR=".osk-layout-workbench" 6 | CLDR2JSON="cldr2json/cldr2json.py" 7 | SRCDIR="$WORKDIR/keyboards/android" 8 | DESTDIR="osk-layouts" 9 | GRESOURCE_FILE="gnome-shell-osk-layouts.gresource.xml" 10 | TMP_GRESOURCE_FILE=".$GRESOURCE_FILE.tmp" 11 | 12 | cd `dirname $0` 13 | 14 | # Ensure work/dest dirs 15 | rm -rf $WORKDIR 16 | mkdir -p $WORKDIR 17 | mkdir -p "osk-layouts" 18 | 19 | # Download stuff on the work dir 20 | pushd $WORKDIR 21 | gio copy $CLDR_LAYOUTS_TARBALL . 22 | unzip keyboards.zip 23 | popd 24 | 25 | # Transform to JSON files 26 | $CLDR2JSON $SRCDIR $DESTDIR 27 | 28 | # Generate new gresources xml file 29 | cat >$TMP_GRESOURCE_FILE < 31 | 32 | 33 | EOF 34 | 35 | for f in $DESTDIR/*.json 36 | do 37 | echo " $(basename $f)" >>$TMP_GRESOURCE_FILE 38 | done 39 | 40 | cat >>$TMP_GRESOURCE_FILE <emoji.json 42 | 43 | 44 | EOF 45 | 46 | # Rewrite old gresources xml 47 | mv $TMP_GRESOURCE_FILE $GRESOURCE_FILE 48 | -------------------------------------------------------------------------------- /debian/clean: -------------------------------------------------------------------------------- 1 | debian/home/ 2 | -------------------------------------------------------------------------------- /debian/gbp.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | pristine-tar = True 3 | debian-branch=ubuntu/jammy 4 | debian-tag=ubuntu/%(version)s 5 | upstream-branch = upstream/42.x 6 | 7 | [buildpackage] 8 | sign-tags = True 9 | 10 | [dch] 11 | multimaint-merge = True 12 | 13 | [import-orig] 14 | postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit 15 | upstream-vcs-tag = %(version%~%.)s 16 | 17 | [pq] 18 | patch-numbers = False 19 | -------------------------------------------------------------------------------- /debian/gnome-shell-common.alternatives: -------------------------------------------------------------------------------- 1 | Name: gdm-theme.gresource 2 | Link: /usr/share/gnome-shell/gdm-theme.gresource 3 | Alternative: /usr/share/gnome-shell/gnome-shell-theme.gresource 4 | Priority: 10 5 | -------------------------------------------------------------------------------- /debian/gnome-shell-common.dirs: -------------------------------------------------------------------------------- 1 | usr/share/gnome-shell/modes 2 | -------------------------------------------------------------------------------- /debian/gnome-shell-common.install: -------------------------------------------------------------------------------- 1 | debian/source_gnome-shell.py /usr/share/apport/package-hooks 2 | usr/lib/systemd/user 3 | usr/share/dbus-1/interfaces 4 | usr/share/glib-2.0 5 | usr/share/gnome-control-center 6 | usr/share/gnome-shell 7 | usr/share/icons/hicolor/*/apps/* 8 | usr/share/locale 9 | debian/ubuntu-session-mods/ubuntu.json usr/share/gnome-shell/modes/ 10 | -------------------------------------------------------------------------------- /debian/gnome-shell-common.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | #DEBHELPER# 6 | -------------------------------------------------------------------------------- /debian/gnome-shell-common.prerm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | #DEBHELPER# 6 | -------------------------------------------------------------------------------- /debian/gnome-shell-extension-prefs.install: -------------------------------------------------------------------------------- 1 | usr/bin/gnome-extensions-app 2 | usr/bin/gnome-shell-extension-prefs 3 | usr/share/applications/org.gnome.Extensions.desktop 4 | usr/share/metainfo/org.gnome.Extensions.metainfo.xml 5 | -------------------------------------------------------------------------------- /debian/gnome-shell.bug-control: -------------------------------------------------------------------------------- 1 | report-with: gnome-session gnome-settings-daemon libgjs0g libmutter-4-0 2 | package-status: libegl-vendor libglx-vendor libgl1-mesa-dri 3 | -------------------------------------------------------------------------------- /debian/gnome-shell.docs: -------------------------------------------------------------------------------- 1 | NEWS 2 | README.md 3 | -------------------------------------------------------------------------------- /debian/gnome-shell.gsettings-override: -------------------------------------------------------------------------------- 1 | [org.gnome.shell] 2 | favorite-apps=[ 'firefox-esr.desktop', 'org.gnome.Evolution.desktop', 'rhythmbox.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ] 3 | -------------------------------------------------------------------------------- /debian/gnome-shell.install: -------------------------------------------------------------------------------- 1 | etc/xdg/autostart/gnome-shell-overrides-migration.desktop 2 | usr/bin/gnome-extensions 3 | usr/bin/gnome-shell 4 | usr/bin/gnome-shell-extension-tool 5 | usr/bin/gnome-shell-perf-tool 6 | usr/lib/gnome-shell 7 | usr/libexec 8 | usr/share/applications/evolution-calendar.desktop 9 | usr/share/applications/org.gnome.Shell*.desktop 10 | usr/share/bash-completion/completions/gnome-extensions 11 | usr/share/dbus-1/services 12 | usr/share/man 13 | usr/share/xdg-desktop-portal 14 | -------------------------------------------------------------------------------- /debian/gnome-shell.lintian-overrides: -------------------------------------------------------------------------------- 1 | # These RUNPATHs are needed to find mutter's private clutter fork 2 | gnome-shell: custom-library-search-path usr/bin/gnome-shell RUNPATH usr/lib/*/mutter-*/ 3 | gnome-shell: custom-library-search-path usr/lib/gnome-shell/*.so RUNPATH usr/lib/*/mutter-*/ 4 | 5 | # This is just a launcher for a desktop-required component (evolution) 6 | gnome-shell: desktop-command-not-in-package usr/share/applications/evolution-calendar.desktop evolution 7 | 8 | # gnome-shell ships some desktop files only to provide metadata and icons to some apps 9 | gnome-shell: desktop-command-not-in-package usr/share/applications/org.gnome.Shell.Extensions.desktop false 10 | gnome-shell: desktop-command-not-in-package usr/share/applications/org.gnome.Shell.PortalHelper.desktop gapplication 11 | 12 | # This is a NoDisplay=true desktop file, so there's no need for it 13 | gnome-shell: desktop-entry-lacks-main-category usr/share/applications/org.gnome.Shell.desktop 14 | 15 | # Conceptually a program, only built as a shared library for technical reasons 16 | gnome-shell: exit-in-shared-library usr/lib/gnome-shell/libgnome-shell.so 17 | -------------------------------------------------------------------------------- /debian/gnome-shell.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | case "$1" in 6 | configure) 7 | # trigger an update notification that recommends a reboot 8 | # (used by unattended-upgrades etc.) 9 | touch /var/run/reboot-required || true 10 | 11 | # same thing for the older update-notifier interface 12 | if [ -x /usr/share/update-notifier/notify-reboot-required ]; then 13 | /usr/share/update-notifier/notify-reboot-required || true 14 | fi 15 | ;; 16 | esac 17 | 18 | #DEBHELPER# 19 | -------------------------------------------------------------------------------- /debian/patches/debian/gnome-shell-extension-prefs-Give-Debian-specific-advice.patch: -------------------------------------------------------------------------------- 1 | From: Simon McVittie 2 | Date: Sun, 12 Sep 2021 10:41:54 +0100 3 | Subject: gnome-shell-extension-prefs: Give Debian-specific advice 4 | 5 | We package gnome-extensions-app in the same binary package as 6 | gnome-shell-extension-prefs, so there's never a need to download it from 7 | Flathub. 8 | 9 | Forwarded: not-needed, Debian-specific 10 | Signed-off-by: Simon McVittie 11 | --- 12 | src/gnome-shell-extension-prefs | 6 +++--- 13 | 1 file changed, 3 insertions(+), 3 deletions(-) 14 | 15 | diff --git a/src/gnome-shell-extension-prefs b/src/gnome-shell-extension-prefs 16 | index 303b196..a59ffed 100755 17 | --- a/src/gnome-shell-extension-prefs 18 | +++ b/src/gnome-shell-extension-prefs 19 | @@ -13,10 +13,10 @@ openPrefs() { 20 | } 21 | 22 | cat >&2 < 2 | Date: Thu, 2 Aug 2018 15:59:20 +0200 3 | Subject: main: show an error message on gnome-shell crash 4 | 5 | When we call the crash signal handler, write on log the reason of the 6 | crash, also to make easier to parse the logs later on, and being able 7 | to understand if a stacktrace is coming from a crash or a different 8 | gjs error. 9 | 10 | https://bugzilla.gnome.org/show_bug.cgi?id=789377 11 | 12 | Bug-GNOME: https://bugzilla.gnome.org/show_bug.cgi?id=789377 13 | Forwarded: https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/6 14 | --- 15 | src/main.c | 2 ++ 16 | 1 file changed, 2 insertions(+) 17 | 18 | diff --git a/src/main.c b/src/main.c 19 | index 03708fc..549dcd8 100644 20 | --- a/src/main.c 21 | +++ b/src/main.c 22 | @@ -330,6 +330,8 @@ dump_gjs_stack_on_signal_handler (int signo) 23 | struct sigaction sa = { .sa_handler = dump_gjs_stack_alarm_sigaction }; 24 | gsize i; 25 | 26 | + g_printerr ("GNOME Shell crashed with signal %d\n", signo); 27 | + 28 | /* Ignore all the signals starting this point, a part the one we'll raise 29 | * (which is implicitly ignored here through SA_RESETHAND), this is needed 30 | * not to get this handler being called by other signals that we were 31 | -------------------------------------------------------------------------------- /debian/patches/pop-cosmic-keyboard-shortcuts.patch: -------------------------------------------------------------------------------- 1 | Index: gnome-shell/data/50-gnome-shell-system.xml 2 | =================================================================== 3 | --- gnome-shell.orig/data/50-gnome-shell-system.xml 4 | +++ gnome-shell/data/50-gnome-shell-system.xml 5 | @@ -12,7 +12,7 @@ 6 | description="Focus the active notification"/> 7 | 8 | 10 | + description="Show workspaces"/> 11 | 12 | 14 | Index: gnome-shell/po/en_GB.po 15 | =================================================================== 16 | --- gnome-shell.orig/po/en_GB.po 17 | +++ gnome-shell/po/en_GB.po 18 | @@ -89,8 +89,8 @@ msgid "Focus the active notification" 19 | msgstr "Focus the active notification" 20 | 21 | #: data/50-gnome-shell-system.xml:15 22 | -msgid "Show the overview" 23 | -msgstr "Show the overview" 24 | +msgid "Show workspaces" 25 | +msgstr "Show workspaces" 26 | 27 | #: data/50-gnome-shell-system.xml:18 28 | msgid "Show all applications" 29 | -------------------------------------------------------------------------------- /debian/patches/pop-dark-theme.patch: -------------------------------------------------------------------------------- 1 | Index: gnome-shell/js/ui/main.js 2 | =================================================================== 3 | --- gnome-shell.orig/js/ui/main.js 4 | +++ gnome-shell/js/ui/main.js 5 | @@ -418,6 +418,10 @@ function _getDefaultStylesheet() { 6 | if (St.Settings.get().high_contrast) 7 | stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css')); 8 | 9 | + // Look for -dark theme if GTK theme variant is dark 10 | + if (St.Settings.get().gtk_theme_variant == 'dark') 11 | + stylesheet = _getStylesheet(name.replace('.css', '-dark.css')); 12 | + 13 | if (stylesheet == null) { 14 | const settings = St.Settings.get(); 15 | 16 | -------------------------------------------------------------------------------- /debian/patches/remove-assumptions-about-monitor-availability.patch: -------------------------------------------------------------------------------- 1 | Index: gnome-shell/js/ui/layout.js 2 | =================================================================== 3 | --- gnome-shell.orig/js/ui/layout.js 4 | +++ gnome-shell/js/ui/layout.js 5 | @@ -380,8 +380,7 @@ var LayoutManager = GObject.registerClas 6 | this.bottomMonitor = this.monitors[this.bottomIndex]; 7 | 8 | if (this._pendingLoadBackground) { 9 | - this._loadBackground(); 10 | - this._pendingLoadBackground = false; 11 | + this._pendingLoadBackground = this._loadBackground() ? true : false; 12 | } 13 | } else { 14 | this.primaryMonitor = null; 15 | -------------------------------------------------------------------------------- /debian/patches/sched-rr.patch: -------------------------------------------------------------------------------- 1 | Index: gnome-shell/src/main.c 2 | =================================================================== 3 | --- gnome-shell.orig/src/main.c 4 | +++ gnome-shell/src/main.c 5 | @@ -5,9 +5,14 @@ 6 | #if defined (HAVE_MALLINFO) || defined (HAVE_MALLINFO2) 7 | #include 8 | #endif 9 | +#include 10 | #include 11 | #include 12 | 13 | +#ifndef SCHED_RESET_ON_FORK 14 | +#define SCHED_RESET_ON_FORK 0x40000000 15 | +#endif 16 | + 17 | #include 18 | #include 19 | #include 20 | @@ -570,6 +575,16 @@ main (int argc, char **argv) 21 | const char *shell_debug; 22 | char *debug_flags_string; 23 | 24 | + int retval; 25 | + struct sched_param sp = { 26 | + .sched_priority = sched_get_priority_min (SCHED_RR) 27 | + }; 28 | + 29 | + retval = sched_setscheduler (0, SCHED_RR | SCHED_RESET_ON_FORK, &sp); 30 | + 31 | + if (retval != 0) 32 | + g_warning ("Failed to set RT scheduler: %m"); 33 | + 34 | bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); 35 | bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 36 | textdomain (GETTEXT_PACKAGE); 37 | -------------------------------------------------------------------------------- /debian/patches/undefined-record.patch: -------------------------------------------------------------------------------- 1 | Index: gnome-shell/js/ui/workspaceAnimation.js 2 | =================================================================== 3 | --- gnome-shell.orig/js/ui/workspaceAnimation.js 4 | +++ gnome-shell/js/ui/workspaceAnimation.js 5 | @@ -78,6 +78,9 @@ class WorkspaceGroup extends Clutter.Act 6 | for (const windowActor of windowActors) { 7 | const record = this._windowRecords.find(r => r.windowActor === windowActor); 8 | 9 | + /// The window my not have a record. 10 | + if (!record) continue 11 | + 12 | this.set_child_above_sibling(record.clone, 13 | lastRecord ? lastRecord.clone : bottomActor); 14 | lastRecord = record; 15 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | export CCACHE_DISABLE=1 4 | 5 | export DEB_BUILD_MAINT_OPTIONS = hardening=+all 6 | export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs 7 | 8 | %: 9 | dh $@ --with bash_completion 10 | 11 | CONFFLAGS = 12 | 13 | ifeq ($(DEB_HOST_ARCH_OS),linux) 14 | CONFFLAGS += \ 15 | -Dnetworkmanager=true \ 16 | -Dsoup2=true \ 17 | -Dsystemd=true 18 | endif 19 | 20 | ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) 21 | CONFFLAGS += -Dtests=true 22 | else 23 | CONFFLAGS += -Dtests=false 24 | endif 25 | 26 | override_dh_auto_configure: 27 | dh_auto_configure -- \ 28 | --libdir=/usr/lib \ 29 | -Dextensions-tool:bash_completion=enabled \ 30 | $(CONFFLAGS) 31 | 32 | override_dh_makeshlibs: 33 | dh_makeshlibs -X/usr/lib/gnome-shell/ 34 | 35 | override_dh_shlibdeps: 36 | # gnome-shell uses mutters private mutter-clutter-1.0.so etc. 37 | dh_shlibdeps -l"usr/lib/$(DEB_HOST_MULTIARCH)/mutter" 38 | 39 | override_dh_auto_test: 40 | ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) 41 | dbus-run-session xvfb-run -a dh_auto_test 42 | endif 43 | -------------------------------------------------------------------------------- /debian/shlibs.local: -------------------------------------------------------------------------------- 1 | libgnome-bluetooth-applet 0 gnome-bluetooth (>= 3.0.0) 2 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /debian/source/lintian-overrides: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/debian/source/lintian-overrides -------------------------------------------------------------------------------- /debian/ubuntu-session-mods/ubuntu.json: -------------------------------------------------------------------------------- 1 | { 2 | "parentMode": "user", 3 | "stylesheetName": "Yaru/gnome-shell.css", 4 | "themeResourceName": "theme/Yaru/gnome-shell-theme.gresource", 5 | "iconsResourceName": "theme/Yaru/gnome-shell-icons.gresource", 6 | "debugFlags": ["backtrace-crashes-all"], 7 | "enabledExtensions": [ 8 | "ubuntu-dock@ubuntu.com", 9 | "ubuntu-appindicators@ubuntu.com", 10 | "ding@rastersoft.com" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /debian/upstream/metadata: -------------------------------------------------------------------------------- 1 | Bug-Database: https://gitlab.gnome.org/GNOME/gnome-shell/issues/ 2 | Bug-Submit: https://gitlab.gnome.org/GNOME/gnome-shell/issues/new 3 | Name: GNOME Shell 4 | Repository: https://gitlab.gnome.org/gnome/gnome-shell.git 5 | Repository-Browse: https://gitlab.gnome.org/GNOME/gnome-shell/ 6 | -------------------------------------------------------------------------------- /debian/watch: -------------------------------------------------------------------------------- 1 | version=4 2 | opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \ 3 | https://download.gnome.org/sources/@PACKAGE@/cache.json \ 4 | 42/@PACKAGE@-([\d.]+)@ARCHIVE_EXT@ 5 | -------------------------------------------------------------------------------- /docs/reference/meson.build: -------------------------------------------------------------------------------- 1 | version_conf = configuration_data() 2 | version_conf.set('VERSION', meson.project_version()) 3 | 4 | subdir('shell') 5 | subdir('st') 6 | -------------------------------------------------------------------------------- /docs/reference/shell/version.xml.in: -------------------------------------------------------------------------------- 1 | @VERSION@ 2 | -------------------------------------------------------------------------------- /docs/reference/st/meson.build: -------------------------------------------------------------------------------- 1 | private_headers = [ 2 | 'st-private.h', 3 | 'st-theme-node-private.h' 4 | ] 5 | 6 | configure_file( 7 | input: 'version.xml.in', 8 | output: 'version.xml', 9 | configuration: version_conf 10 | ) 11 | 12 | gnome.gtkdoc('st', 13 | main_sgml: 'st-docs.sgml', 14 | src_dir: [ 15 | join_paths(meson.project_source_root(), 'src', 'st'), 16 | join_paths(meson.project_build_root(), 'src', 'st') 17 | ], 18 | scan_args: [ 19 | '--ignore-headers=' + ' '.join(private_headers), 20 | '--rebuild-sections' 21 | ], 22 | install: true 23 | ) 24 | -------------------------------------------------------------------------------- /docs/reference/st/version.xml.in: -------------------------------------------------------------------------------- 1 | @VERSION@ 2 | -------------------------------------------------------------------------------- /js/dbusServices/dbus-service.in: -------------------------------------------------------------------------------- 1 | imports.package.start({ 2 | name: '@PACKAGE_NAME@', 3 | prefix: '@prefix@', 4 | libdir: '@libdir@', 5 | }); 6 | -------------------------------------------------------------------------------- /js/dbusServices/dbus-service.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=@service@ 3 | Exec=@gjs@ @pkgdatadir@/@service@ 4 | -------------------------------------------------------------------------------- /js/dbusServices/extensions/css/application.css: -------------------------------------------------------------------------------- 1 | .error-page preferencespage { margin: 30px; } 2 | 3 | .expander { padding: 12px; } 4 | .expander.expanded { border: 0 solid @borders; border-bottom-width: 1px; } 5 | .expander-toolbar { 6 | border: 0 solid @borders; 7 | border-top-width: 1px; 8 | padding: 3px; 9 | } 10 | -------------------------------------------------------------------------------- /js/dbusServices/extensions/main.js: -------------------------------------------------------------------------------- 1 | /* exported main */ 2 | 3 | imports.gi.versions.Adw = '1'; 4 | imports.gi.versions.Gdk = '4.0'; 5 | imports.gi.versions.Gtk = '4.0'; 6 | 7 | const { Adw, GObject } = imports.gi; 8 | const pkg = imports.package; 9 | 10 | const { DBusService } = imports.dbusService; 11 | const { ExtensionsService } = imports.extensionsService; 12 | 13 | function main() { 14 | Adw.init(); 15 | pkg.initFormat(); 16 | 17 | GObject.gtypeNameBasedOnJSPath = true; 18 | 19 | const service = new DBusService( 20 | 'org.gnome.Shell.Extensions', 21 | new ExtensionsService()); 22 | service.run(); 23 | } 24 | -------------------------------------------------------------------------------- /js/dbusServices/notifications/main.js: -------------------------------------------------------------------------------- 1 | /* exported main */ 2 | 3 | const { DBusService } = imports.dbusService; 4 | const { NotificationDaemon } = imports.notificationDaemon; 5 | 6 | function main() { 7 | const service = new DBusService( 8 | 'org.gnome.Shell.Notifications', 9 | new NotificationDaemon()); 10 | service.run(); 11 | } 12 | -------------------------------------------------------------------------------- /js/dbusServices/org.gnome.ScreenSaver.src.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | main.js 5 | screenSaverService.js 6 | dbusService.js 7 | 8 | misc/config.js 9 | misc/fileUtils.js 10 | 11 | 12 | -------------------------------------------------------------------------------- /js/dbusServices/org.gnome.Shell.Extensions.src.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | main.js 5 | extensionsService.js 6 | extensionPrefsDialog.js 7 | dbusService.js 8 | 9 | misc/config.js 10 | misc/extensionUtils.js 11 | misc/fileUtils.js 12 | misc/params.js 13 | 14 | 15 | 16 | css/application.css 17 | ui/extension-error-page.ui 18 | 19 | 20 | -------------------------------------------------------------------------------- /js/dbusServices/org.gnome.Shell.Notifications.src.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | main.js 5 | notificationDaemon.js 6 | dbusService.js 7 | 8 | misc/config.js 9 | misc/fileUtils.js 10 | 11 | 12 | -------------------------------------------------------------------------------- /js/dbusServices/org.gnome.Shell.Screencast.src.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | main.js 5 | screencastService.js 6 | dbusService.js 7 | 8 | misc/config.js 9 | misc/fileUtils.js 10 | 11 | 12 | -------------------------------------------------------------------------------- /js/dbusServices/screencast/main.js: -------------------------------------------------------------------------------- 1 | /* exported main */ 2 | 3 | const { DBusService } = imports.dbusService; 4 | const { ScreencastService } = imports.screencastService; 5 | 6 | function main() { 7 | const service = new DBusService( 8 | 'org.gnome.Shell.Screencast', 9 | new ScreencastService()); 10 | service.run(); 11 | } 12 | -------------------------------------------------------------------------------- /js/dbusServices/screensaver/main.js: -------------------------------------------------------------------------------- 1 | /* exported main */ 2 | 3 | const { DBusService } = imports.dbusService; 4 | const { ScreenSaverService } = imports.screenSaverService; 5 | 6 | function main() { 7 | const service = new DBusService( 8 | 'org.gnome.ScreenSaver', 9 | new ScreenSaverService()); 10 | service.run(); 11 | } 12 | -------------------------------------------------------------------------------- /js/gdm/credentialManager.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | /* exported CredentialManager */ 3 | 4 | var CredentialManager = class CredentialManager { 5 | constructor(service) { 6 | this._token = null; 7 | this._service = service; 8 | } 9 | 10 | get token() { 11 | return this._token; 12 | } 13 | 14 | set token(t) { 15 | this._token = t; 16 | if (this._token) 17 | this.emit('user-authenticated', this._token); 18 | } 19 | 20 | get service() { 21 | return this._service; 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /js/meson.build: -------------------------------------------------------------------------------- 1 | subdir('misc') 2 | subdir('dbusServices') 3 | 4 | js_resources = gnome.compile_resources( 5 | 'js-resources', 'js-resources.gresource.xml', 6 | source_dir: ['.', meson.current_build_dir()], 7 | c_name: 'shell_js_resources', 8 | dependencies: [config_js] 9 | ) 10 | 11 | portal_resources = gnome.compile_resources( 12 | 'portal-resources', 'portal-resources.gresource.xml', 13 | source_dir: ['.', meson.current_build_dir()], 14 | c_name: 'portal_js_resources', 15 | dependencies: [config_js] 16 | ) 17 | -------------------------------------------------------------------------------- /js/misc/config.js.in: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | /* The name of this package (not localized) */ 4 | var PACKAGE_NAME = '@PACKAGE_NAME@'; 5 | /* The version of this package */ 6 | var PACKAGE_VERSION = '@PACKAGE_VERSION@'; 7 | /* 1 if gnome-bluetooth is available, 0 otherwise */ 8 | var HAVE_BLUETOOTH = @HAVE_BLUETOOTH@; 9 | /* 1 if networkmanager is available, 0 otherwise */ 10 | var HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@; 11 | /* 1 if soup2 should be used instead of soup3, 0 otherwise */ 12 | var HAVE_SOUP2 = @HAVE_SOUP2@; 13 | /* 1 if recorder is enabled, 0 otherwise */ 14 | var HAVE_RECORDER = @HAVE_RECORDER@; 15 | /* gettext package */ 16 | var GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@'; 17 | /* locale dir */ 18 | var LOCALEDIR = '@datadir@/locale'; 19 | /* other standard directories */ 20 | var LIBEXECDIR = '@libexecdir@'; 21 | var PKGDATADIR = '@datadir@/@PACKAGE_NAME@'; 22 | /* g-i package versions */ 23 | var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@' 24 | -------------------------------------------------------------------------------- /js/misc/meson.build: -------------------------------------------------------------------------------- 1 | jsconf = configuration_data() 2 | jsconf.set('PACKAGE_NAME', meson.project_name()) 3 | jsconf.set('PACKAGE_VERSION', meson.project_version()) 4 | jsconf.set('GETTEXT_PACKAGE', meson.project_name()) 5 | jsconf.set('LIBMUTTER_API_VERSION', mutter_api_version) 6 | jsconf.set10('HAVE_BLUETOOTH', bt_dep.found()) 7 | jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager) 8 | jsconf.set10('HAVE_SOUP2', have_soup2) 9 | jsconf.set10('HAVE_RECORDER', enable_recorder) 10 | jsconf.set('datadir', datadir) 11 | jsconf.set('libexecdir', libexecdir) 12 | 13 | config_js = configure_file( 14 | input: 'config.js.in', 15 | output: 'config.js', 16 | configuration: jsconf 17 | ) 18 | -------------------------------------------------------------------------------- /js/misc/params.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | /* exported parse */ 3 | 4 | // parse: 5 | // @params: caller-provided parameter object, or %null 6 | // @defaults-provided defaults object 7 | // @allowExtras: whether or not to allow properties not in @default 8 | // 9 | // Examines @params and fills in default values from @defaults for 10 | // any properties in @defaults that don't appear in @params. If 11 | // @allowExtras is not %true, it will throw an error if @params 12 | // contains any properties that aren't in @defaults. 13 | // 14 | // If @params is %null, this returns the values from @defaults. 15 | // 16 | // Return value: a new object, containing the merged parameters from 17 | // @params and @defaults 18 | function parse(params = {}, defaults, allowExtras) { 19 | if (!allowExtras) { 20 | for (let prop in params) { 21 | if (!(prop in defaults)) 22 | throw new Error(`Unrecognized parameter "${prop}"`); 23 | } 24 | } 25 | 26 | let defaultsCopy = Object.assign({}, defaults); 27 | return Object.assign(defaultsCopy, params); 28 | } 29 | -------------------------------------------------------------------------------- /js/misc/permissionStore.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | /* exported PermissionStore */ 3 | 4 | const Gio = imports.gi.Gio; 5 | 6 | const { loadInterfaceXML } = imports.misc.fileUtils; 7 | 8 | const PermissionStoreIface = loadInterfaceXML('org.freedesktop.impl.portal.PermissionStore'); 9 | const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface); 10 | 11 | function PermissionStore(initCallback, cancellable) { 12 | return new PermissionStoreProxy(Gio.DBus.session, 13 | 'org.freedesktop.impl.portal.PermissionStore', 14 | '/org/freedesktop/impl/portal/PermissionStore', 15 | initCallback, cancellable); 16 | } 17 | -------------------------------------------------------------------------------- /js/portal-resources.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | portalHelper/main.js 5 | 6 | misc/config.js 7 | misc/fileUtils.js 8 | 9 | 10 | -------------------------------------------------------------------------------- /js/ui/checkBox.js: -------------------------------------------------------------------------------- 1 | /* exported CheckBox */ 2 | const { Atk, Clutter, GObject, Pango, St } = imports.gi; 3 | 4 | var CheckBox = GObject.registerClass( 5 | class CheckBox extends St.Button { 6 | _init(label) { 7 | let container = new St.BoxLayout({ 8 | x_expand: true, 9 | y_expand: true, 10 | }); 11 | super._init({ 12 | style_class: 'check-box', 13 | child: container, 14 | button_mask: St.ButtonMask.ONE, 15 | toggle_mode: true, 16 | can_focus: true, 17 | }); 18 | this.set_accessible_role(Atk.Role.CHECK_BOX); 19 | 20 | this._box = new St.Bin({ y_align: Clutter.ActorAlign.START }); 21 | container.add_actor(this._box); 22 | 23 | this._label = new St.Label({ y_align: Clutter.ActorAlign.CENTER }); 24 | this._label.clutter_text.set_line_wrap(true); 25 | this._label.clutter_text.set_ellipsize(Pango.EllipsizeMode.NONE); 26 | this.set_label_actor(this._label); 27 | container.add_actor(this._label); 28 | 29 | if (label) 30 | this.setLabel(label); 31 | } 32 | 33 | setLabel(label) { 34 | this._label.set_text(label); 35 | } 36 | 37 | getLabelActor() { 38 | return this._label; 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /js/ui/init.js: -------------------------------------------------------------------------------- 1 | import { setConsoleLogDomain } from 'console'; 2 | 3 | setConsoleLogDomain('GNOME Shell'); 4 | 5 | imports.ui.environment.init(); 6 | imports.ui.main.start(); 7 | -------------------------------------------------------------------------------- /js/ui/locatePointer.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | /* exported LocatePointer */ 3 | 4 | const { Gio } = imports.gi; 5 | const Ripples = imports.ui.ripples; 6 | const Main = imports.ui.main; 7 | 8 | const LOCATE_POINTER_KEY = "locate-pointer"; 9 | const LOCATE_POINTER_SCHEMA = "org.gnome.desktop.interface"; 10 | 11 | var LocatePointer = class { 12 | constructor() { 13 | this._settings = new Gio.Settings({ schema_id: LOCATE_POINTER_SCHEMA }); 14 | this._settings.connect(`changed::${LOCATE_POINTER_KEY}`, () => this._syncEnabled()); 15 | this._syncEnabled(); 16 | } 17 | 18 | _syncEnabled() { 19 | let enabled = this._settings.get_boolean(LOCATE_POINTER_KEY); 20 | if (enabled == !!this._ripples) 21 | return; 22 | 23 | if (enabled) { 24 | this._ripples = new Ripples.Ripples(0.5, 0.5, 'ripple-pointer-location'); 25 | this._ripples.addTo(Main.uiGroup); 26 | } else { 27 | this._ripples.destroy(); 28 | this._ripples = null; 29 | } 30 | } 31 | 32 | show() { 33 | if (!this._ripples) 34 | return; 35 | 36 | let [x, y] = global.get_pointer(); 37 | this._ripples.playAnimation(x, y); 38 | } 39 | }; 40 | -------------------------------------------------------------------------------- /lint/eslintrc-legacy.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | eqeqeq: off 3 | indent: 4 | - error 5 | - 4 6 | - ignoredNodes: 7 | - 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child' 8 | CallExpression: 9 | arguments: first 10 | jsdoc/check-alignment: off 11 | jsdoc/check-param-names: off 12 | jsdoc/check-tag-names: off 13 | jsdoc/check-types: off 14 | jsdoc/implements-on-classes: off 15 | jsdoc/newline-after-description: off 16 | jsdoc/require-jsdoc: off 17 | jsdoc/require-param: off 18 | jsdoc/require-param-description: off 19 | jsdoc/require-param-name: off 20 | jsdoc/require-param-type: off 21 | object-curly-spacing: 22 | - error 23 | - always 24 | quotes: off 25 | -------------------------------------------------------------------------------- /lint/eslintrc-shell.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | camelcase: 3 | - error 4 | - properties: never 5 | allow: [^vfunc_, ^on_] 6 | consistent-return: error 7 | key-spacing: 8 | - error 9 | - mode: minimum 10 | beforeColon: false 11 | afterColon: true 12 | prefer-arrow-callback: error 13 | 14 | overrides: 15 | - files: js/** 16 | excludedFiles: 17 | - js/portalHelper/* 18 | - js/misc/extensionUtils.js 19 | globals: 20 | global: readonly 21 | _: readonly 22 | C_: readonly 23 | N_: readonly 24 | ngettext: readonly 25 | - files: subprojects/extensions-app/js/** 26 | globals: 27 | _: readonly 28 | C_: readonly 29 | N_: readonly 30 | -------------------------------------------------------------------------------- /man/meson.build: -------------------------------------------------------------------------------- 1 | custom_target('man page', 2 | input: ['gnome-shell.txt', 'stylesheet.xsl'], 3 | output: 'gnome-shell.1', 4 | command: [a2x, '-D', '@OUTDIR@', '--xsl-file', '@INPUT1@', '-f' ,'manpage', '@INPUT0@'], 5 | install_dir: mandir + '/man1', 6 | install: true 7 | ) 8 | -------------------------------------------------------------------------------- /man/stylesheet.xsl: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | .PP 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | .RS 4 18 | 19 | .\" 20 | 21 | 22 | 23 | .RE 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /meson/check-version.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os, sys 4 | from pathlib import Path 5 | import argparse, subprocess 6 | 7 | def check_version(version, file, type='news'): 8 | if type == 'news': 9 | line = file.open().readline() 10 | ok = line.startswith(version) 11 | print("{}: {}".format(file, "OK" if ok else "FAILED")) 12 | if not ok: 13 | raise Exception("{} does not start with {}".format(file, version)) 14 | elif type == 'metainfo': 15 | subprocess.run(['appstream-util', 'validate-version', file, version], 16 | check=True) 17 | else: 18 | raise Exception('Not implemented') 19 | 20 | parser = argparse.ArgumentParser(description='Check release version information.') 21 | parser.add_argument('--type', choices=['metainfo','news'], default='news') 22 | parser.add_argument('version', help='the version to check for') 23 | parser.add_argument('files', nargs='+', help='files to check') 24 | args = parser.parse_args() 25 | 26 | distroot = os.environ.get('MESON_DIST_ROOT', './') 27 | 28 | try: 29 | for file in args.files: 30 | check_version(args.version, Path(distroot, file), args.type) 31 | except: 32 | sys.exit(1) 33 | -------------------------------------------------------------------------------- /meson/generate-manpages.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os 4 | from pathlib import PurePath 5 | import subprocess 6 | 7 | man_pages = [ 8 | 'man/gnome-shell.1', 9 | 'subprojects/extensions-tool/man/gnome-extensions.1', 10 | ] 11 | 12 | sourceroot = os.environ.get('MESON_SOURCE_ROOT') 13 | distroot = os.environ.get('MESON_DIST_ROOT') 14 | 15 | for man_page in man_pages: 16 | page_path = PurePath(man_page) 17 | src = PurePath(sourceroot, page_path.with_suffix('.txt')) 18 | dst = PurePath(distroot, page_path) 19 | stylesheet = src.with_name('stylesheet.xsl') 20 | 21 | subprocess.call(['a2x', '--xsl-file', os.fspath(stylesheet), 22 | '--format', 'manpage', '--destination-dir', os.fspath(dst.parent), 23 | os.fspath(src)]) 24 | -------------------------------------------------------------------------------- /meson/generate-stylesheets.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os 4 | from pathlib import PurePath 5 | import subprocess 6 | 7 | stylesheets = [ 8 | 'data/theme/gnome-shell-high-contrast.css', 9 | 'data/theme/gnome-shell.css' 10 | ] 11 | 12 | sourceroot = os.environ.get('MESON_SOURCE_ROOT') 13 | distroot = os.environ.get('MESON_DIST_ROOT') 14 | 15 | for stylesheet in stylesheets: 16 | stylesheet_path = PurePath(stylesheet) 17 | src = PurePath(sourceroot, stylesheet_path.with_suffix('.scss')) 18 | dst = PurePath(distroot, stylesheet_path) 19 | subprocess.run(['sassc', '-a', src, dst], check=True) 20 | -------------------------------------------------------------------------------- /meson_options.txt: -------------------------------------------------------------------------------- 1 | option('extensions_tool', 2 | type: 'boolean', 3 | value: true, 4 | description: 'Build gnome-extensions CLI tool' 5 | ) 6 | 7 | option('extensions_app', 8 | type: 'boolean', 9 | value: true, 10 | description: 'Build gnome-extensions GUI application' 11 | ) 12 | 13 | option('gtk_doc', 14 | type: 'boolean', 15 | value: false, 16 | description: 'Build API reference' 17 | ) 18 | 19 | option('man', 20 | type: 'boolean', 21 | value: true, 22 | description: 'Generate man pages' 23 | ) 24 | 25 | option('tests', 26 | type: 'boolean', 27 | value: true, 28 | description: 'Enable tests' 29 | ) 30 | 31 | option('networkmanager', 32 | type: 'boolean', 33 | value: true, 34 | description: 'Enable NetworkManager support' 35 | ) 36 | 37 | option('systemd', 38 | type: 'boolean', 39 | value: true, 40 | description: 'Enable systemd integration' 41 | ) 42 | 43 | option('soup2', 44 | type: 'boolean', 45 | value: true, 46 | description: 'Use Soup 2.4 instead of Soup 3. Must be in sync with libgweather' 47 | ) 48 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | ab 2 | af 3 | an 4 | ar 5 | as 6 | ast 7 | be 8 | bg 9 | bn 10 | bn_IN 11 | bs 12 | ca 13 | ca@valencia 14 | ckb 15 | cs 16 | da 17 | de 18 | el 19 | en_GB 20 | eo 21 | es 22 | et 23 | eu 24 | fa 25 | fi 26 | fr 27 | fur 28 | fy 29 | ga 30 | gd 31 | gl 32 | gu 33 | he 34 | hi 35 | hr 36 | hu 37 | ia 38 | id 39 | is 40 | it 41 | ja 42 | ka 43 | kab 44 | kk 45 | km 46 | kn 47 | ko 48 | ku 49 | ky 50 | lt 51 | lv 52 | mjw 53 | mk 54 | ml 55 | mr 56 | ms 57 | nb 58 | ne 59 | nl 60 | nn 61 | oc 62 | or 63 | os 64 | pa 65 | pl 66 | pt 67 | pt_BR 68 | ro 69 | ru 70 | si 71 | sk 72 | sl 73 | sr 74 | sr@latin 75 | sv 76 | ta 77 | te 78 | tg 79 | th 80 | tr 81 | ug 82 | uk 83 | uz@cyrillic 84 | vi 85 | zh_CN 86 | zh_HK 87 | zh_TW 88 | -------------------------------------------------------------------------------- /po/POTFILES.skip: -------------------------------------------------------------------------------- 1 | data/org.gnome.Shell@wayland.service.in 2 | data/org.gnome.Shell@x11.service.in 3 | js/ui/init.js 4 | subprojects/extensions-tool/src/templates/indicator/extension.js 5 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | i18n.gettext(meson.project_name(), preset: 'glib') 2 | -------------------------------------------------------------------------------- /src/calendar-server/README: -------------------------------------------------------------------------------- 1 | Please keep in sync with gnome-panel. 2 | -------------------------------------------------------------------------------- /src/calendar-server/evolution-calendar.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Evolution Calendar 3 | Exec=evolution -c calendar 4 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 5 | Icon=evolution 6 | NoDisplay=true 7 | Type=Application 8 | StartupNotify=true 9 | -------------------------------------------------------------------------------- /src/calendar-server/meson.build: -------------------------------------------------------------------------------- 1 | calendar_sources = [ 2 | 'gnome-shell-calendar-server.c', 3 | 'calendar-debug.h', 4 | 'calendar-sources.c', 5 | 'calendar-sources.h' 6 | ] 7 | 8 | calendar_server = executable('gnome-shell-calendar-server', calendar_sources, 9 | dependencies: [ecal_dep, eds_dep, gio_dep], 10 | include_directories: include_directories('..', '../..'), 11 | c_args: [ 12 | '-DPREFIX="@0@"'.format(prefix), 13 | '-DLIBDIR="@0@"'.format(libdir), 14 | '-DDATADIR="@0@"'.format(datadir), 15 | '-DG_LOG_DOMAIN="ShellCalendarServer"' 16 | ], 17 | install_dir: libexecdir, 18 | install: true 19 | ) 20 | 21 | service_file = 'org.gnome.Shell.CalendarServer.service' 22 | 23 | configure_file( 24 | input: service_file + '.in', 25 | output: service_file, 26 | configuration: service_data, 27 | install_dir: servicedir 28 | ) 29 | 30 | i18n.merge_file( 31 | input: 'evolution-calendar.desktop.in', 32 | output: 'evolution-calendar.desktop', 33 | po_dir: po_dir, 34 | install: true, 35 | install_dir: desktopdir, 36 | type: 'desktop' 37 | ) 38 | -------------------------------------------------------------------------------- /src/calendar-server/org.gnome.Shell.CalendarServer.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=org.gnome.Shell.CalendarServer 3 | Exec=@libexecdir@/gnome-shell-calendar-server 4 | -------------------------------------------------------------------------------- /src/data-to-c.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | 3 | # Copyright © 2011 Red Hat, Inc 4 | # 5 | # This library is free software; you can redistribute it and/or 6 | # modify it under the terms of the GNU Lesser General Public 7 | # License as published by the Free Software Foundation; either 8 | # version 2 of the licence, or (at your option) any later version. 9 | # 10 | # This library is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | # Lesser General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU Lesser General Public 16 | # License along with this library; if not, see . 17 | # 18 | # Author: Kalev Lember 19 | 20 | 21 | if (@ARGV != 2) { 22 | die "Usage: data-to-c.pl \n"; 23 | } 24 | 25 | $file = $ARGV[0]; 26 | 27 | open (FILE, $file) || die "Cannot open $file: $!\n"; 28 | 29 | printf ("const char %s[] = \"", $ARGV[1]); 30 | while (my $line = ) { 31 | foreach my $c (split //, $line) { 32 | printf ("\\x%02x", ord ($c)); 33 | } 34 | } 35 | print "\";\n"; 36 | 37 | close (FILE); 38 | -------------------------------------------------------------------------------- /src/gnome-shell-extension-prefs: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | openPrefs() { 4 | if [ "$(which gnome-extensions)" ] 5 | then 6 | gnome-extensions prefs $1 7 | else 8 | gdbus call --session \ 9 | --dest=org.gnome.Shell.Extensions \ 10 | --object-path=/org/gnome/Shell/Extensions \ 11 | --method=org.gnome.Shell.Extensions.OpenExtensionPrefs $1 '' '{}' 12 | fi 13 | } 14 | 15 | cat >&2 < 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/shell-app-cache-private.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_APP_CACHE_PRIVATE_H__ 3 | #define __SHELL_APP_CACHE_PRIVATE_H__ 4 | 5 | #include 6 | #include 7 | 8 | #define SHELL_TYPE_APP_CACHE (shell_app_cache_get_type()) 9 | 10 | G_DECLARE_FINAL_TYPE (ShellAppCache, shell_app_cache, SHELL, APP_CACHE, GObject) 11 | 12 | ShellAppCache *shell_app_cache_get_default (void); 13 | GList *shell_app_cache_get_all (ShellAppCache *cache); 14 | GDesktopAppInfo *shell_app_cache_get_info (ShellAppCache *cache, 15 | const char *id); 16 | char *shell_app_cache_translate_folder (ShellAppCache *cache, 17 | const char *name); 18 | 19 | #endif /* __SHELL_APP_CACHE_PRIVATE_H__ */ 20 | -------------------------------------------------------------------------------- /src/shell-app-private.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_APP_PRIVATE_H__ 3 | #define __SHELL_APP_PRIVATE_H__ 4 | 5 | #include "shell-app.h" 6 | #include "shell-app-system.h" 7 | 8 | G_BEGIN_DECLS 9 | 10 | ShellApp* _shell_app_new_for_window (MetaWindow *window); 11 | 12 | ShellApp* _shell_app_new (GDesktopAppInfo *info); 13 | 14 | void _shell_app_set_app_info (ShellApp *app, GDesktopAppInfo *info); 15 | 16 | void _shell_app_handle_startup_sequence (ShellApp *app, MetaStartupSequence *sequence); 17 | 18 | void _shell_app_add_window (ShellApp *app, MetaWindow *window); 19 | 20 | void _shell_app_remove_window (ShellApp *app, MetaWindow *window); 21 | 22 | G_END_DECLS 23 | 24 | #endif /* __SHELL_APP_PRIVATE_H__ */ 25 | -------------------------------------------------------------------------------- /src/shell-app-system-private.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_APP_SYSTEM_PRIVATE_H__ 3 | #define __SHELL_APP_SYSTEM_PRIVATE_H__ 4 | 5 | #include "shell-app-system.h" 6 | 7 | void _shell_app_system_notify_app_state_changed (ShellAppSystem *self, ShellApp *app); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /src/shell-app-usage.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_APP_USAGE_H__ 3 | #define __SHELL_APP_USAGE_H__ 4 | 5 | #include "shell-app.h" 6 | #include "shell-window-tracker.h" 7 | 8 | G_BEGIN_DECLS 9 | 10 | #define SHELL_TYPE_APP_USAGE (shell_app_usage_get_type ()) 11 | G_DECLARE_FINAL_TYPE (ShellAppUsage, shell_app_usage, 12 | SHELL, APP_USAGE, GObject) 13 | 14 | ShellAppUsage* shell_app_usage_get_default(void); 15 | 16 | GSList *shell_app_usage_get_most_used (ShellAppUsage *usage); 17 | int shell_app_usage_compare (ShellAppUsage *self, 18 | const char *id_a, 19 | const char *id_b); 20 | 21 | G_END_DECLS 22 | 23 | #endif /* __SHELL_APP_USAGE_H__ */ 24 | -------------------------------------------------------------------------------- /src/shell-embedded-window-private.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_EMBEDDED_WINDOW_PRIVATE_H__ 3 | #define __SHELL_EMBEDDED_WINDOW_PRIVATE_H__ 4 | 5 | #include "shell-embedded-window.h" 6 | #include "shell-gtk-embed.h" 7 | 8 | void _shell_embedded_window_set_actor (ShellEmbeddedWindow *window, 9 | ShellGtkEmbed *embed); 10 | 11 | void _shell_embedded_window_allocate (ShellEmbeddedWindow *window, 12 | int x, 13 | int y, 14 | int width, 15 | int height); 16 | 17 | void _shell_embedded_window_map (ShellEmbeddedWindow *window); 18 | void _shell_embedded_window_unmap (ShellEmbeddedWindow *window); 19 | 20 | #endif /* __SHELL_EMBEDDED_WINDOW_PRIVATE_H__ */ 21 | -------------------------------------------------------------------------------- /src/shell-embedded-window.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_EMBEDDED_WINDOW_H__ 3 | #define __SHELL_EMBEDDED_WINDOW_H__ 4 | 5 | #include 6 | #include 7 | 8 | #define SHELL_TYPE_EMBEDDED_WINDOW (shell_embedded_window_get_type ()) 9 | G_DECLARE_DERIVABLE_TYPE (ShellEmbeddedWindow, shell_embedded_window, 10 | SHELL, EMBEDDED_WINDOW, GtkWindow) 11 | 12 | struct _ShellEmbeddedWindowClass 13 | { 14 | GtkWindowClass parent_class; 15 | }; 16 | 17 | GtkWidget *shell_embedded_window_new (void); 18 | 19 | #endif /* __SHELL_EMBEDDED_WINDOW_H__ */ 20 | -------------------------------------------------------------------------------- /src/shell-global-private.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_GLOBAL_PRIVATE_H__ 3 | #define __SHELL_GLOBAL_PRIVATE_H__ 4 | 5 | #include "shell-global.h" 6 | 7 | #include 8 | 9 | void _shell_global_init (const char *first_property_name, 10 | ...); 11 | void _shell_global_set_plugin (ShellGlobal *global, 12 | MetaPlugin *plugin); 13 | 14 | void _shell_global_destroy_gjs_context (ShellGlobal *global); 15 | 16 | GjsContext *_shell_global_get_gjs_context (ShellGlobal *global); 17 | 18 | gboolean _shell_global_check_xdnd_event (ShellGlobal *global, 19 | XEvent *xev); 20 | 21 | void _shell_global_locate_pointer (ShellGlobal *global); 22 | 23 | #endif /* __SHELL_GLOBAL_PRIVATE_H__ */ 24 | -------------------------------------------------------------------------------- /src/shell-gtk-embed.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_GTK_EMBED_H__ 3 | #define __SHELL_GTK_EMBED_H__ 4 | 5 | #include 6 | 7 | #include "shell-embedded-window.h" 8 | 9 | #define SHELL_TYPE_GTK_EMBED (shell_gtk_embed_get_type ()) 10 | G_DECLARE_DERIVABLE_TYPE (ShellGtkEmbed, shell_gtk_embed, 11 | SHELL, GTK_EMBED, ClutterClone) 12 | 13 | struct _ShellGtkEmbedClass 14 | { 15 | ClutterCloneClass parent_class; 16 | }; 17 | 18 | ClutterActor *shell_gtk_embed_new (ShellEmbeddedWindow *window); 19 | 20 | #endif /* __SHELL_GTK_EMBED_H__ */ 21 | -------------------------------------------------------------------------------- /src/shell-square-bin.c: -------------------------------------------------------------------------------- 1 | #include "config.h" 2 | 3 | #include "shell-square-bin.h" 4 | 5 | struct _ShellSquareBin 6 | { 7 | /*< private >*/ 8 | StBin parent_instance; 9 | }; 10 | 11 | G_DEFINE_TYPE (ShellSquareBin, shell_square_bin, ST_TYPE_BIN); 12 | 13 | static void 14 | shell_square_bin_get_preferred_width (ClutterActor *actor, 15 | float for_height, 16 | float *min_width_p, 17 | float *natural_width_p) 18 | { 19 | float min_width, nat_width; 20 | 21 | /* Return the actual height to keep the squared aspect */ 22 | clutter_actor_get_preferred_height (actor, -1, 23 | &min_width, &nat_width); 24 | 25 | if (min_width_p) 26 | *min_width_p = min_width; 27 | 28 | if (natural_width_p) 29 | *natural_width_p = nat_width; 30 | } 31 | 32 | static void 33 | shell_square_bin_init (ShellSquareBin *self) 34 | { 35 | } 36 | 37 | static void 38 | shell_square_bin_class_init (ShellSquareBinClass *klass) 39 | { 40 | ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass); 41 | 42 | actor_class->get_preferred_width = shell_square_bin_get_preferred_width; 43 | } 44 | -------------------------------------------------------------------------------- /src/shell-square-bin.h: -------------------------------------------------------------------------------- 1 | #ifndef __SHELL_SQUARE_BIN_H__ 2 | #define __SHELL_SQUARE_BIN_H__ 3 | 4 | #include 5 | 6 | G_BEGIN_DECLS 7 | 8 | #define SHELL_TYPE_SQUARE_BIN (shell_square_bin_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ShellSquareBin, shell_square_bin, SHELL, SquareBin, StBin) 10 | 11 | G_END_DECLS 12 | 13 | #endif /* __SHELL_SQUARE_BIN_H__ */ 14 | -------------------------------------------------------------------------------- /src/shell-stack.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_STACK_H__ 3 | #define __SHELL_STACK_H__ 4 | 5 | #include "st.h" 6 | #include 7 | 8 | #define SHELL_TYPE_STACK (shell_stack_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ShellStack, shell_stack, SHELL, STACK, StWidget) 10 | 11 | #endif /* __SHELL_STACK_H__ */ 12 | -------------------------------------------------------------------------------- /src/shell-tray-icon.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_TRAY_ICON_H__ 3 | #define __SHELL_TRAY_ICON_H__ 4 | 5 | #include "shell-gtk-embed.h" 6 | 7 | #define SHELL_TYPE_TRAY_ICON (shell_tray_icon_get_type ()) 8 | G_DECLARE_FINAL_TYPE (ShellTrayIcon, shell_tray_icon, 9 | SHELL, TRAY_ICON, ShellGtkEmbed) 10 | 11 | ClutterActor *shell_tray_icon_new (ShellEmbeddedWindow *window); 12 | 13 | void shell_tray_icon_click (ShellTrayIcon *icon, 14 | ClutterEvent *event); 15 | 16 | #endif /* __SHELL_TRAY_ICON_H__ */ 17 | -------------------------------------------------------------------------------- /src/shell-tray-manager.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | 3 | #ifndef __SHELL_TRAY_MANAGER_H__ 4 | #define __SHELL_TRAY_MANAGER_H__ 5 | 6 | #include 7 | #include "st.h" 8 | 9 | G_BEGIN_DECLS 10 | 11 | #define SHELL_TYPE_TRAY_MANAGER (shell_tray_manager_get_type ()) 12 | G_DECLARE_FINAL_TYPE (ShellTrayManager, shell_tray_manager, 13 | SHELL, TRAY_MANAGER, GObject) 14 | 15 | ShellTrayManager *shell_tray_manager_new (void); 16 | void shell_tray_manager_manage_screen (ShellTrayManager *manager, 17 | StWidget *theme_widget); 18 | void shell_tray_manager_unmanage_screen (ShellTrayManager *manager); 19 | 20 | G_END_DECLS 21 | 22 | #endif /* __SHELL_TRAY_MANAGER_H__ */ 23 | -------------------------------------------------------------------------------- /src/shell-window-preview-layout.h: -------------------------------------------------------------------------------- 1 | #ifndef __SHELL_WINDOW_PREVIEW_LAYOUT_H__ 2 | #define __SHELL_WINDOW_PREVIEW_LAYOUT_H__ 3 | 4 | G_BEGIN_DECLS 5 | 6 | #include 7 | 8 | #define SHELL_TYPE_WINDOW_PREVIEW_LAYOUT (shell_window_preview_layout_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ShellWindowPreviewLayout, shell_window_preview_layout, 10 | SHELL, WINDOW_PREVIEW_LAYOUT, ClutterLayoutManager) 11 | 12 | typedef struct _ShellWindowPreviewLayout ShellWindowPreviewLayout; 13 | typedef struct _ShellWindowPreviewLayoutPrivate ShellWindowPreviewLayoutPrivate; 14 | 15 | struct _ShellWindowPreviewLayout 16 | { 17 | /*< private >*/ 18 | ClutterLayoutManager parent; 19 | 20 | ShellWindowPreviewLayoutPrivate *priv; 21 | }; 22 | 23 | ClutterActor * shell_window_preview_layout_add_window (ShellWindowPreviewLayout *self, 24 | MetaWindow *window); 25 | 26 | void shell_window_preview_layout_remove_window (ShellWindowPreviewLayout *self, 27 | MetaWindow *window); 28 | 29 | GList * shell_window_preview_layout_get_windows (ShellWindowPreviewLayout *self); 30 | 31 | G_END_DECLS 32 | 33 | #endif /* __SHELL_WINDOW_PREVIEW_LAYOUT_H__ */ 34 | -------------------------------------------------------------------------------- /src/shell-window-preview.h: -------------------------------------------------------------------------------- 1 | #ifndef __SHELL_WINDOW_PREVIEW_H__ 2 | #define __SHELL_WINDOW_PREVIEW_H__ 3 | 4 | #include 5 | 6 | G_BEGIN_DECLS 7 | 8 | #define SHELL_TYPE_WINDOW_PREVIEW (shell_window_preview_get_type ()) 9 | G_DECLARE_FINAL_TYPE (ShellWindowPreview, shell_window_preview, 10 | SHELL, WINDOW_PREVIEW, StWidget) 11 | 12 | G_END_DECLS 13 | 14 | #endif /* __SHELL_WINDOW_PREVIEW_H__ */ 15 | -------------------------------------------------------------------------------- /src/shell-window-tracker-private.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_WINDOW_TRACKER_PRIVATE_H__ 3 | #define __SHELL_WINDOW_TRACKER_PRIVATE_H__ 4 | 5 | #include "shell-window-tracker.h" 6 | 7 | void _shell_window_tracker_add_child_process_app (ShellWindowTracker *tracker, 8 | GPid pid, 9 | ShellApp *app); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /src/shell-window-tracker.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_WINDOW_TRACKER_H__ 3 | #define __SHELL_WINDOW_TRACKER_H__ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "shell-app.h" 11 | #include "shell-app-system.h" 12 | 13 | G_BEGIN_DECLS 14 | 15 | #define SHELL_TYPE_WINDOW_TRACKER (shell_window_tracker_get_type ()) 16 | G_DECLARE_FINAL_TYPE (ShellWindowTracker, shell_window_tracker, 17 | SHELL, WINDOW_TRACKER, GObject) 18 | 19 | ShellWindowTracker* shell_window_tracker_get_default(void); 20 | 21 | ShellApp *shell_window_tracker_get_window_app (ShellWindowTracker *tracker, MetaWindow *metawin); 22 | 23 | ShellApp *shell_window_tracker_get_app_from_pid (ShellWindowTracker *tracker, int pid); 24 | 25 | GSList *shell_window_tracker_get_startup_sequences (ShellWindowTracker *tracker); 26 | 27 | G_END_DECLS 28 | 29 | #endif /* __SHELL_WINDOW_TRACKER_H__ */ 30 | -------------------------------------------------------------------------------- /src/shell-wm.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __SHELL_WM_H__ 3 | #define __SHELL_WM_H__ 4 | 5 | #include 6 | #include 7 | 8 | G_BEGIN_DECLS 9 | 10 | #define SHELL_TYPE_WM (shell_wm_get_type ()) 11 | G_DECLARE_FINAL_TYPE (ShellWM, shell_wm, SHELL, WM, GObject) 12 | 13 | ShellWM *shell_wm_new (MetaPlugin *plugin); 14 | 15 | void shell_wm_completed_minimize (ShellWM *wm, 16 | MetaWindowActor *actor); 17 | void shell_wm_completed_unminimize (ShellWM *wm, 18 | MetaWindowActor *actor); 19 | void shell_wm_completed_size_change (ShellWM *wm, 20 | MetaWindowActor *actor); 21 | void shell_wm_completed_map (ShellWM *wm, 22 | MetaWindowActor *actor); 23 | void shell_wm_completed_destroy (ShellWM *wm, 24 | MetaWindowActor *actor); 25 | void shell_wm_completed_switch_workspace (ShellWM *wm); 26 | 27 | void shell_wm_complete_display_change (ShellWM *wm, 28 | gboolean ok); 29 | 30 | G_END_DECLS 31 | 32 | #endif /* __SHELL_WM_H__ */ 33 | -------------------------------------------------------------------------------- /src/st/croco/libcroco-config.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBCROCO_VERSION_NUMBER 2 | #define LIBCROCO_VERSION_NUMBER 612 3 | #endif 4 | 5 | #ifndef LIBCROCO_VERSION 6 | #define LIBCROCO_VERSION "0.6.12" 7 | #endif 8 | 9 | #ifndef G_DISABLE_CHECKS 10 | #if 0 11 | #define G_DISABLE_CHECKS 0 12 | #endif 13 | #endif 14 | -------------------------------------------------------------------------------- /src/st/st-icon-colors.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | #ifndef __ST_ICON_COLORS__ 3 | #define __ST_ICON_COLORS__ 4 | 5 | #include 6 | 7 | G_BEGIN_DECLS 8 | 9 | #define ST_TYPE_ICON_COLORS (st_icon_colors_get_type ()) 10 | 11 | typedef struct _StIconColors StIconColors; 12 | 13 | /** 14 | * StIconColors: 15 | * @foreground: foreground color 16 | * @warning: color indicating a warning state 17 | * @error: color indicating an error state 18 | * @success: color indicating a successful operation 19 | * 20 | * The #StIconColors structure encapsulates colors for colorizing a symbolic 21 | * icon. 22 | */ 23 | struct _StIconColors { 24 | volatile guint ref_count; 25 | 26 | ClutterColor foreground; 27 | ClutterColor warning; 28 | ClutterColor error; 29 | ClutterColor success; 30 | }; 31 | 32 | GType st_icon_colors_get_type (void) G_GNUC_CONST; 33 | 34 | StIconColors *st_icon_colors_new (void); 35 | StIconColors *st_icon_colors_ref (StIconColors *colors); 36 | void st_icon_colors_unref (StIconColors *colors); 37 | StIconColors *st_icon_colors_copy (StIconColors *colors); 38 | gboolean st_icon_colors_equal (StIconColors *colors, 39 | StIconColors *other); 40 | 41 | G_END_DECLS 42 | 43 | #endif /* __ST_ICON_COLORS__ */ 44 | -------------------------------------------------------------------------------- /src/st/st-image-content.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | /* 3 | * st-image-content.h: A content image with scaling support 4 | * 5 | * Copyright 2019 Canonical, Ltd 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation, either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope it will be useful, but WITHOUT ANY 13 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 14 | * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 15 | * more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public License 18 | * along with this program. If not, see . 19 | */ 20 | 21 | #ifndef __ST_IMAGE_CONTENT_H__ 22 | #define __ST_IMAGE_CONTENT_H__ 23 | 24 | #include 25 | 26 | #define ST_TYPE_IMAGE_CONTENT (st_image_content_get_type ()) 27 | G_DECLARE_FINAL_TYPE (StImageContent, st_image_content, 28 | ST, IMAGE_CONTENT, ClutterImage) 29 | 30 | ClutterContent *st_image_content_new_with_preferred_size (int width, 31 | int height); 32 | 33 | #endif /* __ST_IMAGE_CONTENT_H__ */ 34 | -------------------------------------------------------------------------------- /src/st/st-scroll-view-fade.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | /* 3 | * st-scroll-view-fade.h: Edge fade effect for StScrollView 4 | * 5 | * Copyright 2010 Intel Corporation. 6 | * Copyright 2011 Adel Gadllah 7 | * 8 | * This program is free software; you can redistribute it and/or modify it 9 | * under the terms and conditions of the GNU Lesser General Public License, 10 | * version 2.1, as published by the Free Software Foundation. 11 | * 12 | * This program is distributed in the hope it will be useful, but WITHOUT ANY 13 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 14 | * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 15 | * more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public License 18 | * along with this program. If not, see . 19 | */ 20 | 21 | #ifndef __ST_SCROLL_VIEW_FADE_H__ 22 | #define __ST_SCROLL_VIEW_FADE_H__ 23 | 24 | #include 25 | 26 | G_BEGIN_DECLS 27 | 28 | #define ST_TYPE_SCROLL_VIEW_FADE (st_scroll_view_fade_get_type ()) 29 | G_DECLARE_FINAL_TYPE (StScrollViewFade, st_scroll_view_fade, 30 | ST, SCROLL_VIEW_FADE, ClutterShaderEffect) 31 | 32 | ClutterEffect *st_scroll_view_fade_new (void); 33 | 34 | G_END_DECLS 35 | 36 | #endif /* __ST_SCROLL_VIEW_FADE_H__ */ 37 | -------------------------------------------------------------------------------- /src/st/st-viewport.h: -------------------------------------------------------------------------------- 1 | /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 | /* 3 | * st-viewport.h: viewport actor 4 | * 5 | * Copyright 2009 Intel Corporation. 6 | * Copyright 2009, 2010 Red Hat, Inc. 7 | * Copyright 2019 Endless, Inc. 8 | * 9 | * This program is free software; you can redistribute it and/or modify it 10 | * under the terms and conditions of the GNU Lesser General Public License, 11 | * version 2.1, as published by the Free Software Foundation. 12 | * 13 | * This program is distributed in the hope it will be useful, but WITHOUT ANY 14 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 15 | * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 16 | * more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | #if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION) 23 | #error "Only can be included directly.h" 24 | #endif 25 | 26 | #pragma once 27 | 28 | #include 29 | 30 | G_BEGIN_DECLS 31 | 32 | #define ST_TYPE_VIEWPORT (st_viewport_get_type()) 33 | G_DECLARE_DERIVABLE_TYPE (StViewport, st_viewport, ST, VIEWPORT, StWidget) 34 | 35 | struct _StViewportClass 36 | { 37 | StWidgetClass parent_class; 38 | }; 39 | 40 | G_END_DECLS 41 | -------------------------------------------------------------------------------- /src/st/st.h.in: -------------------------------------------------------------------------------- 1 | #define ST_H_INSIDE 1 2 | @includes@ 3 | #undef ST_H_INSIDE 4 | -------------------------------------------------------------------------------- /src/tray/meson.build: -------------------------------------------------------------------------------- 1 | tray_sources = [ 2 | 'na-tray-child.c', 3 | 'na-tray-child.h', 4 | 'na-tray-manager.c', 5 | 'na-tray-manager.h' 6 | ] 7 | 8 | libtray = static_library('tray', tray_sources, 9 | c_args: ['-DG_LOG_DOMAIN="notification_area"'], 10 | dependencies: [clutter_dep, gtk_dep], 11 | include_directories: conf_inc 12 | ) 13 | -------------------------------------------------------------------------------- /subprojects/extensions-app/README.md: -------------------------------------------------------------------------------- 1 | # ![logo] GNOME Extensions 2 | GNOME Extensions is a small application for managing GNOME Shell 3 | extensions. It is usually built as part of gnome-shell, but can be 4 | used as a stand-alone project as well. 5 | 6 | Bugs should be reported to the GNOME [bug tracking system][bug-tracker]. 7 | 8 | ## Installation 9 | If Extensions is not already installed on your GNOME system, we 10 | recommend getting it from [flathub]. 11 | 12 | 13 | Download on Flathub 14 | 15 | 16 | ## Building 17 | Before the project can be built stand-alone, the po directory has 18 | to be populated with translations (from gnome-shell). 19 | 20 | To do that, simply run the included script: 21 | ```sh 22 | $ ./generate-translations.sh 23 | ``` 24 | 25 | ## License 26 | gnome-extensions-app is distributed under the terms of the GNU General Public 27 | License, version 2 or later. See the [COPYING][license] file for details. 28 | 29 | [logo]: logo.png 30 | [bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues 31 | [flathub]: https://flathub.org 32 | [license]: COPYING 33 | -------------------------------------------------------------------------------- /subprojects/extensions-app/build-aux/flatpak/org.gnome.Extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "app-id": "org.gnome.Extensions.Devel", 3 | "runtime": "org.gnome.Platform", 4 | "runtime-version": "master", 5 | "sdk": "org.gnome.Sdk", 6 | "command": "gnome-extensions-app", 7 | "tags": ["nightly"], 8 | "finish-args": [ 9 | "--share=ipc", "--socket=fallback-x11", 10 | "--socket=wayland", 11 | "--device=dri", 12 | "--talk-name=org.gnome.SessionManager", 13 | "--talk-name=org.gnome.Shell.Extensions" 14 | ], 15 | "build-options": { 16 | "cflags": "-O2 -g" 17 | }, 18 | "modules": [ 19 | { 20 | "name": "gnome-extensions-app", 21 | "buildsystem": "meson", 22 | "builddir": true, 23 | "subdir": "subprojects/extensions-app", 24 | "config-opts": ["-Dprofile=development"], 25 | "sources": [ 26 | { 27 | "type": "git", 28 | "url": "https://gitlab.gnome.org/GNOME/gnome-shell.git" 29 | }, 30 | { 31 | "type": "shell", 32 | "commands": [ 33 | "subprojects/extensions-app/generate-translations.sh" 34 | ] 35 | } 36 | ] 37 | } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /subprojects/extensions-app/build-aux/meson/check-version.py: -------------------------------------------------------------------------------- 1 | ../../../../meson/check-version.py -------------------------------------------------------------------------------- /subprojects/extensions-app/data/css/style.css: -------------------------------------------------------------------------------- 1 | row.extension>box { 2 | margin: 12px; 3 | } 4 | 5 | row.extension>box, 6 | row.extension box.header { 7 | border-spacing: 12px; 8 | } 9 | 10 | row.extension box.actions, 11 | row.extension box.actions>box { 12 | border-spacing: 6px; 13 | } 14 | 15 | row.extension box.information, 16 | row.extension box.status { 17 | border-spacing: 3px; 18 | } 19 | 20 | image.error { color: @error_color; } 21 | image.warning { color: @warning_color; } 22 | -------------------------------------------------------------------------------- /subprojects/extensions-app/data/dbus-interfaces/org.gnome.Shell.Extensions.xml: -------------------------------------------------------------------------------- 1 | ../../../../data/dbus-interfaces/org.gnome.Shell.Extensions.xml -------------------------------------------------------------------------------- /subprojects/extensions-app/data/icons/meson.build: -------------------------------------------------------------------------------- 1 | install_subdir('hicolor', install_dir: icondir) 2 | -------------------------------------------------------------------------------- /subprojects/extensions-app/data/meson.build: -------------------------------------------------------------------------------- 1 | gnome.compile_resources( 2 | app_id + '.data', 3 | configure_file( 4 | input: base_id + '.data.gresource.xml.in', 5 | output: app_id + '.data.gresource.xml', 6 | configuration: {'profile': '/'.join(profile.split('.')) }, 7 | ), 8 | gresource_bundle: true, 9 | install: true, 10 | install_dir: pkgdatadir 11 | ) 12 | 13 | desktop_file = app_id + '.desktop' 14 | desktopconf = configuration_data() 15 | # We substitute in bindir so it works as an autostart 16 | # file when built in a non-system prefix 17 | desktopconf.set('bindir', bindir) 18 | desktopconf.set('app_id', app_id) 19 | desktopconf.set('prgname', prgname) 20 | 21 | i18n.merge_file( 22 | input: configure_file( 23 | input: base_id + '.desktop.in.in', 24 | output: desktop_file + '.in', 25 | configuration: desktopconf 26 | ), 27 | output: desktop_file, 28 | po_dir: po_dir, 29 | install: true, 30 | install_dir: desktopdir, 31 | type: 'desktop' 32 | ) 33 | 34 | if (desktop_file_validate.found()) 35 | test('Validating ' + desktop_file, 36 | desktop_file_validate, 37 | args: [desktop_file], 38 | workdir: meson.current_build_dir() 39 | ) 40 | endif 41 | 42 | configure_file( 43 | input: base_id + '.service.in', 44 | output: app_id + '.service', 45 | configuration: desktopconf, 46 | install_dir: servicedir, 47 | ) 48 | 49 | subdir('icons') 50 | subdir('metainfo') 51 | -------------------------------------------------------------------------------- /subprojects/extensions-app/data/metainfo/extensions-main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/subprojects/extensions-app/data/metainfo/extensions-main.png -------------------------------------------------------------------------------- /subprojects/extensions-app/data/metainfo/extensions-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/subprojects/extensions-app/data/metainfo/extensions-remove.png -------------------------------------------------------------------------------- /subprojects/extensions-app/data/metainfo/extensions-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/subprojects/extensions-app/data/metainfo/extensions-update.png -------------------------------------------------------------------------------- /subprojects/extensions-app/data/metainfo/meson.build: -------------------------------------------------------------------------------- 1 | metainfo = app_id + '.metainfo.xml' 2 | i18n.merge_file( 3 | input: base_id + '.metainfo.xml.in', 4 | output: metainfo, 5 | po_dir: po_dir, 6 | install: true, 7 | install_dir: metainfodir 8 | ) 9 | 10 | if (appstream_util.found()) 11 | test('Validating ' + metainfo, 12 | appstream_util, 13 | args: ['validate', '--nonet', metainfo], 14 | workdir: meson.current_build_dir() 15 | ) 16 | endif 17 | -------------------------------------------------------------------------------- /subprojects/extensions-app/data/org.gnome.Extensions.data.gresource.xml.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | css/style.css 5 | 6 | 7 | 8 | dbus-interfaces/org.gnome.Shell.Extensions.xml 9 | 10 | ui/extension-row.ui 11 | ui/extensions-window.ui 12 | 13 | 14 | -------------------------------------------------------------------------------- /subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Extensions 4 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 5 | Icon=@app_id@ 6 | Comment=Configure GNOME Shell Extensions 7 | Exec=@bindir@/@prgname@ --gapplication-service 8 | DBusActivatable=true 9 | Categories=GNOME;GTK;Utility; 10 | OnlyShowIn=GNOME; 11 | -------------------------------------------------------------------------------- /subprojects/extensions-app/data/org.gnome.Extensions.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=@app_id@ 3 | Exec=@bindir@/@prgname@ 4 | -------------------------------------------------------------------------------- /subprojects/extensions-app/generate-translations.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | sed -e '/subprojects\/extensions-app/!d' \ 6 | -e 's:subprojects/extensions-app/::' ../../po/POTFILES.in > po/POTFILES.in 7 | 8 | for l in $( 2 | 3 | 4 | main.js 5 | 6 | misc/config.js 7 | misc/extensionUtils.js 8 | 9 | 10 | -------------------------------------------------------------------------------- /subprojects/extensions-app/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/subprojects/extensions-app/logo.png -------------------------------------------------------------------------------- /subprojects/extensions-app/meson_options.txt: -------------------------------------------------------------------------------- 1 | option('package_name', 2 | type: 'string', 3 | description: 'The gettext domain name', 4 | ) 5 | option('profile', 6 | type: 'combo', 7 | choices: [ 8 | 'default', 9 | 'development' 10 | ], 11 | value: 'default' 12 | ) 13 | -------------------------------------------------------------------------------- /subprojects/extensions-app/po/.gitignore: -------------------------------------------------------------------------------- 1 | *.po 2 | *.pot 3 | POTFILES.in 4 | -------------------------------------------------------------------------------- /subprojects/extensions-app/po/LINGUAS: -------------------------------------------------------------------------------- 1 | ../../../po/LINGUAS -------------------------------------------------------------------------------- /subprojects/extensions-app/po/meson.build: -------------------------------------------------------------------------------- 1 | i18n.gettext(package_name, preset: 'glib') 2 | -------------------------------------------------------------------------------- /subprojects/extensions-app/subprojects/shew: -------------------------------------------------------------------------------- 1 | ../../shew/ -------------------------------------------------------------------------------- /subprojects/extensions-tool/README.md: -------------------------------------------------------------------------------- 1 | # gnome-extensions-tool 2 | gnome-extensions-tool is a command line utility for managing 3 | GNOME Shell extensions. It is usually built as part of gnome-shell, 4 | but can be used as a stand-alone project as well (for example to 5 | create an extension bundle as part of continuous integration). 6 | 7 | Bugs should be reported to the GNOME [bug tracking system][bug-tracker]. 8 | 9 | ## Building 10 | Before the project can be built stand-alone, the po directory has 11 | to be populated with translations (from gnome-shell). 12 | 13 | To do that, simply run the included script: 14 | ```sh 15 | $ ./generate-translations.sh 16 | ``` 17 | 18 | ## License 19 | gnome-extensions-tool is distributed under the terms of the GNU General Public 20 | License, version 3 or later. See the [COPYING][license] file for details. 21 | 22 | [bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues 23 | [license]: COPYING 24 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/generate-translations.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | sed -e '/subprojects\/extensions-tool/!d' \ 6 | -e 's:subprojects/extensions-tool/::' ../../po/POTFILES.in > po/POTFILES.in 7 | 8 | for l in $( 2 | 4 | 5 | 6 | 7 | .PP 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | .RS 4 18 | 19 | .\" 20 | 21 | 22 | 23 | .RE 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/meson_options.txt: -------------------------------------------------------------------------------- 1 | option('man', 2 | type: 'boolean', 3 | value: true, 4 | description: 'Generate man pages', 5 | yield: true, 6 | ) 7 | 8 | option('bash_completion', 9 | type: 'feature', 10 | value: 'auto', 11 | description: 'Install bash completion support', 12 | ) 13 | 14 | option('package_name', 15 | type: 'string', 16 | description: 'The gettext domain name when used as a subproject' 17 | ) 18 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/po/.gitignore: -------------------------------------------------------------------------------- 1 | *.po 2 | *.pot 3 | POTFILES.in 4 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/po/LINGUAS: -------------------------------------------------------------------------------- 1 | ../../../po/LINGUAS -------------------------------------------------------------------------------- /subprojects/extensions-tool/po/meson.build: -------------------------------------------------------------------------------- 1 | i18n.gettext(package_name, preset: 'glib') 2 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/gnome-extensions-tool.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | templates/00-plain.desktop 5 | templates/indicator.desktop 6 | templates/indicator/extension.js 7 | templates/indicator/stylesheet.css 8 | templates/plain/extension.js 9 | templates/plain/stylesheet.css 10 | 11 | 12 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/meson.build: -------------------------------------------------------------------------------- 1 | config_h = configuration_data() 2 | config_h.set_quoted('GETTEXT_PACKAGE', package_name) 3 | config_h.set_quoted('VERSION', meson.project_version()) 4 | config_h.set_quoted('LOCALEDIR', localedir) 5 | config_h.set('HAVE_BIND_TEXTDOMAIN_CODESET', cc.has_function('bind_textdomain_codeset')) 6 | configure_file( 7 | output: 'config.h', 8 | configuration: config_h, 9 | ) 10 | 11 | sources = [ 12 | 'command-create.c', 13 | 'command-disable.c', 14 | 'command-enable.c', 15 | 'command-info.c', 16 | 'command-install.c', 17 | 'command-list.c', 18 | 'command-pack.c', 19 | 'command-prefs.c', 20 | 'command-reset.c', 21 | 'command-uninstall.c', 22 | 'main.c' 23 | ] 24 | 25 | subdir('templates') 26 | 27 | resources = gnome.compile_resources('resources', 28 | 'gnome-extensions-tool.gresource.xml', 29 | source_dir: ['.', meson.current_build_dir()], 30 | dependencies: template_deps, 31 | ) 32 | 33 | executable('gnome-extensions', 34 | sources, resources, 35 | dependencies: [gio_dep, gio_unix_dep, autoar_dep, json_dep], 36 | install: true 37 | ) 38 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/templates/00-plain.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Plain 4 | Comment=An empty extension 5 | Path=plain 6 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/templates/indicator.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Indicator 4 | Comment=Add an icon to the top bar 5 | Path=indicator 6 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/templates/indicator/stylesheet.css: -------------------------------------------------------------------------------- 1 | /* Add your custom extension styling here */ 2 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/templates/meson.build: -------------------------------------------------------------------------------- 1 | template_metas = [ 2 | '00-plain.desktop', 3 | 'indicator.desktop', 4 | ] 5 | template_deps = [] 6 | foreach template : template_metas 7 | template_deps += i18n.merge_file( 8 | input: template + '.in', 9 | output: template, 10 | po_dir: po_dir, 11 | type: 'desktop', 12 | ) 13 | endforeach 14 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/templates/plain/extension.js: -------------------------------------------------------------------------------- 1 | /* extension.js 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | * 16 | * SPDX-License-Identifier: GPL-2.0-or-later 17 | */ 18 | 19 | /* exported init */ 20 | 21 | class Extension { 22 | constructor() { 23 | } 24 | 25 | enable() { 26 | } 27 | 28 | disable() { 29 | } 30 | } 31 | 32 | function init() { 33 | return new Extension(); 34 | } 35 | -------------------------------------------------------------------------------- /subprojects/extensions-tool/src/templates/plain/stylesheet.css: -------------------------------------------------------------------------------- 1 | /* Add your custom extension styling here */ 2 | -------------------------------------------------------------------------------- /subprojects/gvc/.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - test 3 | 4 | build-fedora: 5 | image: fedora:latest 6 | stage: test 7 | before_script: 8 | - dnf install -y redhat-rpm-config gcc meson pulseaudio-libs-devel alsa-lib-devel gtk3-devel 9 | script: 10 | - cd .gitlab-ci 11 | - meson _build 12 | - ninja -C _build 13 | 14 | -------------------------------------------------------------------------------- /subprojects/gvc/.gitlab-ci/meson.build: -------------------------------------------------------------------------------- 1 | project('gnome-volume-control-ci', 'c', 2 | version: '1.0.0', 3 | meson_version: '>= 0.47.0', 4 | license: 'GPLv2+' 5 | ) 6 | 7 | prefix = get_option('prefix') 8 | 9 | datadir = join_paths(prefix, get_option('datadir')) 10 | libdir = join_paths(prefix, get_option('libdir')) 11 | 12 | pkgdatadir = join_paths(datadir, meson.project_name()) 13 | pkglibdir = join_paths(libdir, meson.project_name()) 14 | 15 | libgvc = subproject('gvc', 16 | default_options: [ 17 | 'package_name=' + meson.project_name(), 18 | 'package_version=' + meson.project_version(), 19 | 'pkgdatadir=' + pkgdatadir, 20 | 'pkglibdir=' + pkglibdir, 21 | 'alsa=true' 22 | ] 23 | ) 24 | -------------------------------------------------------------------------------- /subprojects/gvc/.gitlab-ci/subprojects/gvc: -------------------------------------------------------------------------------- 1 | ../../ -------------------------------------------------------------------------------- /subprojects/gvc/README.md: -------------------------------------------------------------------------------- 1 | # libgnome-volume-control 2 | 3 | libgnome-volume-control is a copy library that's supposed to be used as 4 | a git sub-module. If your project uses some of libgnome-volume-control's 5 | strings in a user-facing manner, don't forget to add those files to your 6 | POTFILES.in for translation. 7 | 8 | ## Projects using libgnome-volume-control 9 | 10 | - [gnome-shell](https://gitlab.gnome.org/GNOME/gnome-shell) 11 | - [gnome-settings-daemon](https://gitlab.gnome.org/GNOME/gnome-settings-daemon) 12 | - [gnome-control-center](https://gitlab.gnome.org/GNOME/gnome-control-center) 13 | -------------------------------------------------------------------------------- /subprojects/gvc/gvc-mixer-card-private.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2008-2009 Red Hat, Inc. 4 | * 5 | * This program is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | * 19 | */ 20 | 21 | #ifndef __GVC_MIXER_CARD_PRIVATE_H 22 | #define __GVC_MIXER_CARD_PRIVATE_H 23 | 24 | #include 25 | #include "gvc-mixer-card.h" 26 | 27 | G_BEGIN_DECLS 28 | 29 | GvcMixerCard * gvc_mixer_card_new (pa_context *context, 30 | guint index); 31 | pa_context * gvc_mixer_card_get_pa_context (GvcMixerCard *card); 32 | 33 | G_END_DECLS 34 | 35 | #endif /* __GVC_MIXER_CARD_PRIVATE_H */ 36 | -------------------------------------------------------------------------------- /subprojects/gvc/gvc-mixer-control-private.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2008 Red Hat, Inc. 4 | * 5 | * This program is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | * 19 | */ 20 | 21 | #ifndef __GVC_MIXER_CONTROL_PRIVATE_H 22 | #define __GVC_MIXER_CONTROL_PRIVATE_H 23 | 24 | #include 25 | #include 26 | #include "gvc-mixer-stream.h" 27 | #include "gvc-mixer-card.h" 28 | 29 | G_BEGIN_DECLS 30 | 31 | pa_context * gvc_mixer_control_get_pa_context (GvcMixerControl *control); 32 | 33 | G_END_DECLS 34 | 35 | #endif /* __GVC_MIXER_CONTROL_PRIVATE_H */ 36 | -------------------------------------------------------------------------------- /subprojects/gvc/gvc-mixer-stream-private.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2008 Red Hat, Inc. 4 | * 5 | * This program is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | * 19 | */ 20 | 21 | #ifndef __GVC_MIXER_STREAM_PRIVATE_H 22 | #define __GVC_MIXER_STREAM_PRIVATE_H 23 | 24 | #include 25 | 26 | #include "gvc-channel-map.h" 27 | 28 | G_BEGIN_DECLS 29 | 30 | pa_context * gvc_mixer_stream_get_pa_context (GvcMixerStream *stream); 31 | 32 | G_END_DECLS 33 | 34 | #endif /* __GVC_MIXER_STREAM_PRIVATE_H */ 35 | -------------------------------------------------------------------------------- /subprojects/gvc/gvc-pulseaudio-fake.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2008 Red Hat, Inc. 4 | * 5 | * This program is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | * 19 | */ 20 | 21 | #ifndef __GVC_PULSEAUDIO_FAKE_H 22 | #define __GVC_PULSEAUDIO_FAKE_H 23 | 24 | #ifndef PA_API_VERSION 25 | #define pa_channel_position_t int 26 | #define pa_volume_t guint32 27 | #define pa_context gpointer 28 | #endif /* PA_API_VERSION */ 29 | 30 | #endif /* __GVC_PULSEAUDIO_FAKE_H */ 31 | -------------------------------------------------------------------------------- /subprojects/gvc/libgnome-volume-control.doap: -------------------------------------------------------------------------------- 1 | 6 | 7 | libgnome-volume-control 8 | GObject layer for PulseAudio 9 | 10 | This library contains code to access PulseAudio using a GObject 11 | based library, shared between gnome-control-center, gnome-settings-daemon 12 | and gnome-shell. It is not API stable, and it is meant to be used 13 | as a submodule. 14 | 15 | 16 | 17 | 18 | 19 | 20 | Giovanni Campagna 21 | 22 | gcampagna 23 | 24 | 25 | 26 | 27 | Bastien Nocera 28 | 29 | hadess 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /subprojects/gvc/meson_options.txt: -------------------------------------------------------------------------------- 1 | option('package_name', 2 | type: 'string', 3 | value: '', 4 | description: 'The value for the GETTEXT_PACKAGE define.' 5 | ) 6 | 7 | option('package_version', 8 | type: 'string', 9 | value: '', 10 | description: 'The value for the PACKAGE_VERSION define.' 11 | ) 12 | 13 | option('pkglibdir', 14 | type: 'string', 15 | value: '', 16 | description: 'The private directory the shared library/typelib will be installed into.' 17 | ) 18 | 19 | option('pkgdatadir', 20 | type: 'string', 21 | value: '', 22 | description: 'The private directory the gir file will be installed into.' 23 | ) 24 | 25 | option('alsa', 26 | type: 'boolean', 27 | value: true, 28 | description: 'Build ALSA support.' 29 | ) 30 | 31 | option('static', 32 | type: 'boolean', 33 | value: false, 34 | description: 'Build as a static library.' 35 | ) 36 | 37 | option('introspection', 38 | type: 'boolean', 39 | value: false, 40 | description: 'Build gobject-introspection support' 41 | ) 42 | -------------------------------------------------------------------------------- /subprojects/shew/README.md: -------------------------------------------------------------------------------- 1 | # Shell External Windows 2 | 3 | Shew is a small support library for dealing with external windows. 4 | 5 | The code for creating external windows from a handle that are suitable for 6 | setting a transient parent was copied from [xdg-desktop-portal-gtk]. 7 | 8 | The code for exporting a handle for a GtkWindow is losely based on code 9 | from GTK/[libportal]. 10 | 11 | ## Stability 12 | This is an unstable library with no API or ABI guarantees, and no 13 | soname versioning. 14 | 15 | It is not recommended to use it outside the gnome-shell project, and 16 | may only be used as a subproject. 17 | 18 | ## License 19 | shew is distributed under the terms of the GNU Lesser General Public License 20 | version 2.1 or later. See the [COPYING][license] file for details. 21 | 22 | [xdg-desktop-portal-gtk]: https://github.com/flatpak/xdg-desktop-portal-gtk 23 | [libportal]: https://github.com/flatpak/libportal 24 | [license]: COPYING 25 | -------------------------------------------------------------------------------- /subprojects/shew/meson.build: -------------------------------------------------------------------------------- 1 | project('shew', 'c', 2 | version: '42.9', 3 | meson_version: '>= 0.58.0', 4 | license: 'LGPLv2+', 5 | ) 6 | 7 | assert(meson.is_subproject(), 'This project is only intended to be used as a subproject!') 8 | 9 | gnome = import('gnome') 10 | pkg = import('pkgconfig') 11 | 12 | api_version = '0' 13 | full_name = '@0@-@1@'.format(meson.project_name(), api_version) 14 | 15 | package_version = meson.project_version() 16 | package_name = get_option('package_name') 17 | assert(package_name != '', 'package_name must be specified') 18 | 19 | pkgdatadir = join_paths(get_option('datadir'), package_name) 20 | pkglibdir = join_paths(get_option('libdir'), package_name) 21 | 22 | girdir = join_paths(pkgdatadir, 'gir-1.0') 23 | typelibdir = join_paths(pkglibdir, 'girepository-1.0') 24 | 25 | gtk_dep = dependency('gtk4') 26 | x11_dep = dependency('x11', required: false) 27 | 28 | subdir('src') 29 | -------------------------------------------------------------------------------- /subprojects/shew/meson_options.txt: -------------------------------------------------------------------------------- 1 | option('package_name', 2 | type: 'string', 3 | description: 'Parent package the library is built into' 4 | ) 5 | -------------------------------------------------------------------------------- /subprojects/shew/src/meson.build: -------------------------------------------------------------------------------- 1 | shew_public_headers = files( 2 | 'shew-external-window.h', 3 | 'shew-window-exporter.h', 4 | ) 5 | 6 | shew_sources = [ 7 | 'shew-external-window-wayland.c', 8 | 'shew-external-window-x11.c', 9 | 'shew-external-window.c', 10 | 'shew-window-exporter.c', 11 | ] 12 | 13 | libshew = library(full_name, 14 | sources: shew_sources, 15 | dependencies: [gtk_dep, x11_dep], 16 | install_dir: pkglibdir, 17 | install: true, 18 | ) 19 | 20 | libshew_gir = gnome.generate_gir(libshew, 21 | sources: shew_sources + shew_public_headers, 22 | nsversion: api_version, 23 | namespace: 'Shew', 24 | includes: ['Gdk-4.0', 'Gtk-4.0'], 25 | extra_args: ['--quiet'], 26 | install_dir_gir: girdir, 27 | install_dir_typelib: typelibdir, 28 | install: true, 29 | ) 30 | -------------------------------------------------------------------------------- /subprojects/shew/src/shew-external-window-wayland.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2016 Red Hat, Inc 3 | * 4 | * This program is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2 of the License, or (at your option) any later version. 8 | * 9 | * This library is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with this library. If not, see . 16 | * 17 | * Authors: 18 | * Jonas Ådahl 19 | */ 20 | 21 | #pragma once 22 | 23 | #include 24 | 25 | #include "shew-external-window.h" 26 | 27 | #define SHEW_TYPE_EXTERNAL_WINDOW_WAYLAND (shew_external_window_wayland_get_type ()) 28 | G_DECLARE_FINAL_TYPE (ShewExternalWindowWayland, shew_external_window_wayland, SHEW, EXTERNAL_WINDOW_WAYLAND, ShewExternalWindow) 29 | 30 | ShewExternalWindowWayland *shew_external_window_wayland_new (const char *handle_str); 31 | -------------------------------------------------------------------------------- /subprojects/shew/src/shew-external-window-x11.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2016 Red Hat, Inc 3 | * 4 | * This program is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2 of the License, or (at your option) any later version. 8 | * 9 | * This library is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with this library. If not, see . 16 | * 17 | * Authors: 18 | * Jonas Ådahl 19 | */ 20 | 21 | #pragma once 22 | 23 | #include 24 | 25 | #include "shew-external-window.h" 26 | 27 | #define SHEW_TYPE_EXTERNAL_WINDOW_X11 (shew_external_window_x11_get_type ()) 28 | G_DECLARE_FINAL_TYPE (ShewExternalWindowX11, shew_external_window_x11, SHEW, EXTERNAL_WINDOW_X11, ShewExternalWindow) 29 | 30 | ShewExternalWindowX11 *shew_external_window_x11_new (const char *handle_str); 31 | -------------------------------------------------------------------------------- /tests/interactive/background-repeat.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | const UI = imports.testcommon.ui; 4 | 5 | const { Clutter, St } = imports.gi; 6 | 7 | function test() { 8 | let stage = new Clutter.Stage({ width: 640, height: 480 }); 9 | UI.init(stage); 10 | 11 | let vbox = new St.BoxLayout({ width: stage.width, 12 | height: stage.height, 13 | style: 'background: #ffee88;' }); 14 | stage.add_actor(vbox); 15 | 16 | let scroll = new St.ScrollView(); 17 | vbox.add(scroll, { expand: true }); 18 | 19 | let box = new St.BoxLayout({ vertical: true }); 20 | scroll.add_actor(box); 21 | 22 | let contents = new St.Widget({ width: 1000, height: 1000, 23 | style_class: 'background-image background-repeat' }); 24 | box.add_actor(contents); 25 | 26 | UI.main(stage); 27 | } 28 | test(); 29 | -------------------------------------------------------------------------------- /tests/interactive/calendar.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | const UI = imports.testcommon.ui; 4 | 5 | const { Clutter, St } = imports.gi; 6 | 7 | function test() { 8 | let stage = new Clutter.Stage({ width: 400, height: 400 }); 9 | UI.init(stage); 10 | 11 | let vbox = new St.BoxLayout({ vertical: true, 12 | width: stage.width, 13 | height: stage.height, 14 | style: 'padding: 10px; spacing: 10px; font: 15px sans-serif;' }); 15 | stage.add_actor(vbox); 16 | 17 | // Calendar can only be imported after Environment.init() 18 | const Calendar = imports.ui.calendar; 19 | let calendar = new Calendar.Calendar(); 20 | vbox.add(calendar, 21 | { expand: true, 22 | x_fill: false, x_align: St.Align.MIDDLE, 23 | y_fill: false, y_align: St.Align.START }); 24 | calendar.setEventSource(new Calendar.EmptyEventSource()); 25 | 26 | UI.main(stage); 27 | } 28 | test(); 29 | -------------------------------------------------------------------------------- /tests/interactive/css-fonts.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | const UI = imports.testcommon.ui; 4 | 5 | const { Clutter, St } = imports.gi; 6 | 7 | function test() { 8 | let stage = new Clutter.Stage(); 9 | UI.init(stage); 10 | 11 | let b = new St.BoxLayout({ vertical: true, 12 | width: stage.width, 13 | height: stage.height }); 14 | stage.add_actor(b); 15 | 16 | let t; 17 | 18 | t = new St.Label({ "text": "Bold", style_class: "bold" }); 19 | b.add(t); 20 | t = new St.Label({ "text": "Monospace", style_class: "monospace" }); 21 | b.add(t); 22 | t = new St.Label({ "text": "Italic", style_class: "italic" }); 23 | b.add(t); 24 | t = new St.Label({ "text": "Bold Italic", style_class: "bold italic" }); 25 | b.add(t); 26 | t = new St.Label({ "text": "Big Italic", style_class: "big italic" }); 27 | b.add(t); 28 | t = new St.Label({ "text": "Big Bold", style_class: "big bold" }); 29 | b.add(t); 30 | 31 | let b2 = new St.BoxLayout({ vertical: true, style_class: "monospace" }); 32 | b.add(b2); 33 | t = new St.Label({ "text": "Big Monospace", style_class: "big" }); 34 | b2.add(t); 35 | t = new St.Label({ "text": "Italic Monospace", style_class: "italic" }); 36 | b2.add(t); 37 | 38 | UI.main(stage); 39 | } 40 | test(); 41 | -------------------------------------------------------------------------------- /tests/interactive/inline-style.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | const UI = imports.testcommon.ui; 4 | 5 | const { Clutter, St } = imports.gi; 6 | 7 | function test() { 8 | let stage = new Clutter.Stage(); 9 | UI.init(stage); 10 | 11 | let vbox = new St.BoxLayout({ vertical: true, 12 | width: stage.width, 13 | height: stage.height }); 14 | stage.add_actor(vbox); 15 | 16 | let hbox = new St.BoxLayout({ style: 'spacing: 12px;' }); 17 | vbox.add(hbox); 18 | 19 | let text = new St.Label({ text: "Styled Text" }); 20 | vbox.add (text); 21 | 22 | let size = 24; 23 | function update_size() { 24 | text.style = 'font-size: ' + size + 'pt'; 25 | } 26 | update_size(); 27 | 28 | let button; 29 | 30 | button = new St.Button ({ label: 'Smaller', style_class: 'push-button' }); 31 | hbox.add (button); 32 | button.connect('clicked', () => { 33 | size /= 1.2; 34 | update_size (); 35 | }); 36 | 37 | button = new St.Button ({ label: 'Bigger', style_class: 'push-button' }); 38 | hbox.add (button); 39 | button.connect('clicked', () => { 40 | size *= 1.2; 41 | update_size (); 42 | }); 43 | 44 | UI.main(stage); 45 | } 46 | test(); 47 | -------------------------------------------------------------------------------- /tests/interactive/test-title.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env gjs 2 | 3 | imports.gi.versions.Gtk = '3.0'; 4 | 5 | const { GLib, Gtk } = imports.gi; 6 | 7 | function nextTitle() { 8 | let length = Math.random() * 20; 9 | let str = ''; 10 | 11 | for (let i = 0; i < length; i++) { 12 | // 97 == 'a' 13 | str += String.fromCharCode(97 + Math.random() * 26); 14 | } 15 | 16 | return str; 17 | } 18 | 19 | function main() { 20 | Gtk.init(null); 21 | 22 | let win = new Gtk.Window({ title: nextTitle() }); 23 | win.connect('destroy', () => { 24 | Gtk.main_quit(); 25 | }); 26 | win.present(); 27 | 28 | GLib.timeout_add(GLib.PRIORITY_DEFAULT, 5000, function() { 29 | win.title = nextTitle(); 30 | return true; 31 | }); 32 | 33 | Gtk.main(); 34 | } 35 | 36 | main(); 37 | 38 | -------------------------------------------------------------------------------- /tests/interactive/transitions.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | const UI = imports.testcommon.ui; 4 | 5 | const { Clutter, St } = imports.gi; 6 | 7 | function test() { 8 | let stage = new Clutter.Stage(); 9 | UI.init(stage); 10 | 11 | let hbox = new St.BoxLayout({ name: 'transition-container', 12 | reactive: true, 13 | track_hover: true, 14 | width: stage.width, 15 | height: stage.height, 16 | style: 'padding: 10px;' 17 | + 'spacing: 10px;' }); 18 | stage.add_actor(hbox); 19 | 20 | for (let i = 0; i < 5; i ++) { 21 | let label = new St.Label({ text: (i+1).toString(), 22 | name: "label" + i, 23 | style_class: 'transition-label', 24 | reactive: true, 25 | track_hover: true }); 26 | 27 | hbox.add(label, { x_fill: false, 28 | y_fill: false }); 29 | } 30 | 31 | //////////////////////////////////////////////////////////////////////////////// 32 | 33 | UI.main(stage); 34 | } 35 | test(); 36 | -------------------------------------------------------------------------------- /tests/meson.build: -------------------------------------------------------------------------------- 1 | testconf = configuration_data() 2 | testconf.set('MUTTER_TYPELIB_DIR', mutter_typelibdir) 3 | testconf.set('srcdir', meson.current_source_dir()) 4 | run_test = configure_file( 5 | input: 'run-test.sh.in', 6 | output: 'run-test.sh', 7 | configuration: testconf 8 | ) 9 | 10 | testenv = environment() 11 | testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.project_build_root(), 'data')) 12 | 13 | tests = [ 14 | 'highlighter', 15 | 'insertSorted', 16 | 'jsParse', 17 | 'markup', 18 | 'params', 19 | 'signalTracker', 20 | 'url', 21 | 'versionCompare', 22 | ] 23 | 24 | foreach test : tests 25 | test(test, run_test, 26 | args: 'unit/@0@.js'.format(test), 27 | env: testenv, 28 | workdir: meson.current_source_dir()) 29 | endforeach 30 | -------------------------------------------------------------------------------- /tests/run-test.sh.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | usage() { 4 | echo >&2 "Usage run-test.sh [-v|--verbose] ..." 5 | exit 1 6 | } 7 | 8 | tests= 9 | verbose=false 10 | debug= 11 | for arg in $@ ; do 12 | case $arg in 13 | -g|--debug) 14 | debug="libtool --mode=execute gdb --args" 15 | ;; 16 | -v|--verbose) 17 | verbose=true 18 | ;; 19 | -*) 20 | usage 21 | ;; 22 | *) 23 | tests="$tests $arg" 24 | ;; 25 | esac 26 | done 27 | 28 | builddir=`dirname $0` 29 | builddir=`cd $builddir && pwd` 30 | srcdir=@srcdir@ 31 | srcdir=`cd $srcdir && pwd` 32 | 33 | GI_TYPELIB_PATH="$GI_TYPELIB_PATH${GI_TYPELIB_PATH:+:}@MUTTER_TYPELIB_DIR@:$builddir/../src:$builddir/../src/st:$builddir/../subprojects/gvc" 34 | GJS_PATH="$srcdir:$srcdir/../js:$builddir/../js" 35 | GJS_DEBUG_OUTPUT=stderr 36 | $verbose || GJS_DEBUG_TOPICS="JS ERROR;JS LOG" 37 | GNOME_SHELL_TESTSDIR="$srcdir/" 38 | GNOME_SHELL_JS="$srcdir/../js" 39 | GNOME_SHELL_DATADIR="$builddir/../data" 40 | 41 | export GI_TYPELIB_PATH GJS_PATH GJS_DEBUG_OUTPUT GJS_DEBUG_TOPICS GNOME_SHELL_TESTSDIR GNOME_SHELL_JS GNOME_SHELL_DATADIR LD_PRELOAD 42 | 43 | for test in $tests ; do 44 | $debug $builddir/../src/run-js-test $test || exit $? 45 | done 46 | -------------------------------------------------------------------------------- /tests/testcommon/100-200.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 15 | 21 | 22 | -------------------------------------------------------------------------------- /tests/testcommon/200-100.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 15 | 21 | 22 | -------------------------------------------------------------------------------- /tests/testcommon/200-200.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 15 | 21 | 22 | -------------------------------------------------------------------------------- /tests/testcommon/border-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/tests/testcommon/border-image.png -------------------------------------------------------------------------------- /tests/testcommon/face-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/gnome-shell/af56e4e12de89f3e0dc59248c521a2ae2a9718b3/tests/testcommon/face-plain.png -------------------------------------------------------------------------------- /tests/testcommon/ui.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | const Config = imports.misc.config; 4 | 5 | imports.gi.versions = { Clutter: Config.LIBMUTTER_API_VERSION, Gtk: '3.0' }; 6 | 7 | const { Clutter, Gio, GLib, St } = imports.gi; 8 | 9 | const Environment = imports.ui.environment; 10 | 11 | function init(stage) { 12 | Environment.init(); 13 | let themeResource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource'); 14 | themeResource._register(); 15 | 16 | let context = St.ThemeContext.get_for_stage(stage); 17 | let stylesheetPath = GLib.getenv("GNOME_SHELL_TESTSDIR") + "/testcommon/test.css"; 18 | let theme = new St.Theme({ application_stylesheet: Gio.File.new_for_path(stylesheetPath) }); 19 | context.set_theme(theme); 20 | } 21 | 22 | function main(stage) { 23 | stage.show(); 24 | stage.connect('destroy', () => { 25 | Clutter.main_quit(); 26 | }); 27 | Clutter.main(); 28 | } 29 | -------------------------------------------------------------------------------- /tests/unit/params.js: -------------------------------------------------------------------------------- 1 | const JsUnit = imports.jsUnit; 2 | const Params = imports.misc.params; 3 | 4 | function assertParamsEqual(params, expected) { 5 | for (let p in params) { 6 | JsUnit.assertTrue(p in expected); 7 | JsUnit.assertEquals(params[p], expected[p]); 8 | } 9 | } 10 | 11 | let defaults = { 12 | foo: 'This is a test', 13 | bar: null, 14 | baz: 42 15 | }; 16 | 17 | assertParamsEqual( 18 | Params.parse(null, defaults), 19 | defaults); 20 | 21 | assertParamsEqual( 22 | Params.parse({ bar: 23 }, defaults), 23 | { foo: 'This is a test', bar: 23, baz: 42 }); 24 | 25 | JsUnit.assertRaises( 26 | () => { 27 | Params.parse({ extraArg: 'quz' }, defaults); 28 | }); 29 | 30 | assertParamsEqual( 31 | Params.parse({ extraArg: 'quz' }, defaults, true), 32 | { foo: 'This is a test', bar: null, baz: 42, extraArg: 'quz' }); 33 | -------------------------------------------------------------------------------- /tests/unit/versionCompare.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | // Test cases for version comparison 4 | 5 | const JsUnit = imports.jsUnit; 6 | 7 | const Environment = imports.ui.environment; 8 | Environment.init(); 9 | 10 | const Util = imports.misc.util; 11 | 12 | const tests = [ 13 | { v1: '40', 14 | v2: '40', 15 | res: 0 }, 16 | { v1: '40', 17 | v2: '42', 18 | res: -1 }, 19 | { v1: '42', 20 | v2: '40', 21 | res: 1 }, 22 | { v1: '3.38.0', 23 | v2: '40', 24 | res: -1 }, 25 | { v1: '40', 26 | v2: '3.38.0', 27 | res: 1 }, 28 | { v1: '40', 29 | v2: '3.38.0', 30 | res: 1 }, 31 | { v1: '40.alpha.1.1', 32 | v2: '40', 33 | res: -1 }, 34 | { v1: '40', 35 | v2: '40.alpha.1.1', 36 | res: 1 }, 37 | { v1: '40.beta', 38 | v2: '40', 39 | res: -1 }, 40 | { v1: '40.1', 41 | v2: '40', 42 | res: 1 }, 43 | { v1: '', 44 | v2: '40.alpha', 45 | res: -1 }, 46 | ]; 47 | 48 | for (let i = 0; i < tests.length; i++) { 49 | name = 'Test #' + i + ' v1: ' + tests[i].v1 + ', v2: ' + tests[i].v2; 50 | print(name); 51 | JsUnit.assertEquals(name, Util.GNOMEversionCompare (tests[i].v1, tests[i].v2), tests[i].res); 52 | } 53 | -------------------------------------------------------------------------------- /tools/build/jhbuildrc-custom-example: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | # The username for repositories can be overridden. 4 | # 5 | #repos["git.gnome.org"] = "ssh://myusername@git.gnome.org/git/" 6 | 7 | # Directory where to check sources out 8 | # 9 | #checkoutroot = '/opt/gnome-shell/source' 10 | 11 | # Directory where to install 12 | # 13 | #prefix = '/opt/gnome-shell/install' 14 | 15 | # Work around http://bugzilla.gnome.org/show_bug.cgi?id=571240 if 16 | # your 'install' program is somewhere other than /usr/bin/install 17 | # (affects: Arch Linux) 18 | #installprog = 'bin/install' 19 | -------------------------------------------------------------------------------- /tools/gnome-shell-overrides-migration.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PKG_DATA_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/gnome-shell 4 | 5 | MIGRATION_GUARD=$PKG_DATA_DIR/gnome-overrides-migrated 6 | OVERRIDE_SCHEMA= 7 | 8 | if [ -f $MIGRATION_GUARD ]; then 9 | exit # already migrated 10 | fi 11 | 12 | # Find the right session 13 | if echo $XDG_CURRENT_DESKTOP | grep -q -v GNOME; then 14 | exit # not a GNOME session 15 | fi 16 | 17 | if echo $XDG_CURRENT_DESKTOP | grep -q Classic; then 18 | OVERRIDE_SCHEMA=org.gnome.shell.extensions.classic-overrides 19 | else 20 | OVERRIDE_SCHEMA=org.gnome.shell.overrides 21 | fi 22 | 23 | mkdir -p $PKG_DATA_DIR 24 | 25 | for k in `gsettings list-keys $OVERRIDE_SCHEMA` 26 | do 27 | if [ $k = button-layout ]; then 28 | orig_schema=org.gnome.desktop.wm.preferences 29 | else 30 | orig_schema=org.gnome.mutter 31 | fi 32 | 33 | oldValue=`gsettings get $OVERRIDE_SCHEMA $k` 34 | curValue=`gsettings get $orig_schema $k` 35 | if [ $oldValue != $curValue ]; then 36 | gsettings set $orig_schema $k $oldValue 37 | fi 38 | done && touch $MIGRATION_GUARD 39 | -------------------------------------------------------------------------------- /tools/meson.build: -------------------------------------------------------------------------------- 1 | install_data('gnome-shell-overrides-migration.sh', 2 | install_dir: libexecdir, 3 | install_mode: 'rwxr-xr-x' 4 | ) 5 | --------------------------------------------------------------------------------