gnomeExtensions: bump 2026-07-19 (#543561)
This commit is contained in:
@@ -146,7 +146,7 @@
|
||||
|
||||
machine.succeed(f"${run "gnome-extensions enable {extension}"}")
|
||||
wait_time = 5
|
||||
while getState(extension) == "ACTIVATING" and (wait_time := wait_time - 1) > 0:
|
||||
while "ACTIVATING" in getState(extension) and (wait_time := wait_time - 1) > 0:
|
||||
machine.log(f"Extension {extension} is still activating, waiting {wait_time} more seconds")
|
||||
machine.sleep(1)
|
||||
checkState("ACTIVE", extension)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# cache file with scraped data from https://extensions.gnome.org
|
||||
extension-index-*.json
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
replaceVars,
|
||||
glib,
|
||||
@@ -8,17 +8,18 @@
|
||||
gettext,
|
||||
jq,
|
||||
intltool,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "gnome-shell-extension-EasyScreenCast";
|
||||
version = "1.12.0";
|
||||
version = "1.13.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "EasyScreenCast";
|
||||
repo = "EasyScreenCast";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-+DVuUClLhPEVN2VIBkJJI51V9TTS5Q9y6wflEGyt6AY=";
|
||||
hash = "sha256-VYf5RHZHe6QIzQRW/oZ2tEHIo184xPqqx+hKAcCwOMg=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -36,7 +37,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ];
|
||||
|
||||
passthru.extensionUuid = "EasyScreenCast@iacopodeenosee.gmail.com";
|
||||
passthru = {
|
||||
extensionUuid = "EasyScreenCast@iacopodeenosee.gmail.com";
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Simplifies the use of the video recording function integrated in gnome shell";
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/extension.js b/extension.js
|
||||
index 32a7c7c..a7ed98e 100644
|
||||
index ef82bdc..2cdeab7 100644
|
||||
--- a/extension.js
|
||||
+++ b/extension.js
|
||||
@@ -720,7 +720,7 @@ const EasyScreenCastIndicator = GObject.registerClass({
|
||||
@@ -731,7 +731,7 @@ const EasyScreenCastIndicator = GObject.registerClass({
|
||||
Lib.TalkativeLog('-*-execute post command');
|
||||
|
||||
// launch cmd after registration
|
||||
@@ -12,25 +12,15 @@ index 32a7c7c..a7ed98e 100644
|
||||
const mapObj = {
|
||||
_fpath: pathFile,
|
||||
diff --git a/prefs.js b/prefs.js
|
||||
index b58b160..2298d5a 100644
|
||||
index 7e21b53..730eec3 100644
|
||||
--- a/prefs.js
|
||||
+++ b/prefs.js
|
||||
@@ -709,7 +709,7 @@ const EasyScreenCastSettingsWidget = GObject.registerClass({
|
||||
Lib.TalkativeLog('-^-NOT SET xdg-user video');
|
||||
|
||||
ctx.CtrlExe.Execute(
|
||||
- '/usr/bin/sh -c "echo $HOME"',
|
||||
+ '/bin/sh -c "echo $HOME"',
|
||||
true,
|
||||
(success, out) => {
|
||||
Lib.TalkativeLog(`-^-CALLBACK sync S: ${success} out: ${out}`);
|
||||
@@ -879,7 +879,7 @@ const EasyScreenCastSettingsWidget = GObject.registerClass({
|
||||
);
|
||||
@@ -834,7 +834,7 @@ const EasyScreenCastSettingsWidget = GObject.registerClass({
|
||||
refBufferLog.text = '';
|
||||
|
||||
ctx.CtrlExe.Execute(
|
||||
- 'journalctl /usr/bin/gnome-shell --since "15 min ago" --output=cat --no-pager',
|
||||
+ 'journalctl @gnomeShell@/bin/.gnome-shell-wrapped --since "15 min ago" --output=cat --no-pager',
|
||||
false,
|
||||
success => {
|
||||
Lib.TalkativeLog(`-^-CALLBACK async S= ${success}`);
|
||||
|
||||
(result, stdout) => {
|
||||
Lib.TalkativeLog(`-^-CALLBACK async S= ${result}`);
|
||||
refBufferLog.text = stdout;
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
{
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
stdenv,
|
||||
unstableGitUpdater,
|
||||
stdenvNoCC,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "argos";
|
||||
version = "unstable-2025-09-25";
|
||||
version = "50";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "p-e-w";
|
||||
repo = "argos";
|
||||
rev = "c0dc23880e52a2f78b7a5c35b5b3781d5b1366f7";
|
||||
hash = "sha256-A/ugbKxnUJdoMN724ECtRm0QWwCVopmbltt+fUKBp7E=";
|
||||
tag = "GNOME-50";
|
||||
hash = "sha256-KwW4Hzp+0TqFU1ygPURNbbT+ZzQN7eocn2R4IJFmNZQ=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
@@ -24,7 +23,6 @@ stdenv.mkDerivation {
|
||||
passthru = {
|
||||
extensionUuid = "argos@pew.worldwidemann.com";
|
||||
extensionPortalSlug = "argos";
|
||||
updateScript = unstableGitUpdater { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
gnome-shell,
|
||||
gettext,
|
||||
glib,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-clock-override";
|
||||
version = "12";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://extensions.gnome.org/extension-data/clock-overridegnomeshell.kryogenix.org.v${version}.shell-extension.zip";
|
||||
sha256 = "1cyaszks6bwnbgacqsl1pmr24mbj05mad59d4253la9am8ibb4m6";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "clock-override@gnomeshell.kryogenix.org";
|
||||
extensionPortalSlug = "clock-override";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gettext
|
||||
glib
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
glib-compile-schemas --strict --targetdir=schemas schemas
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out/share/gnome-shell/extensions/clock-override@gnomeshell.kryogenix.org"
|
||||
cp -r {convenience.js,extension.js,format.js,locale,metadata.json,prefs.js,schemas} "$out/share/gnome-shell/extensions/clock-override@gnomeshell.kryogenix.org"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Customize the date and time format displayed in clock in the top bar in GNOME Shell";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ rhoriguchi ];
|
||||
homepage = "https://github.com/stuartlangridge/gnome-shell-clock-override";
|
||||
broken = lib.versionOlder gnome-shell.version "3.18";
|
||||
};
|
||||
}
|
||||
@@ -12,6 +12,18 @@
|
||||
"battery-time@eetumos.github.com",
|
||||
"batterytime@typeof.pw"
|
||||
],
|
||||
"clipboard-history": [
|
||||
"clipboard-history@Diyar1877",
|
||||
"clipboard-history@alexsaveau.dev"
|
||||
],
|
||||
"clipboard-line-cleaner": [
|
||||
"clipboard-line-cleaner@epiphanius.github.io",
|
||||
"clipboard-line-cleaner@example.com"
|
||||
],
|
||||
"fuzzy-clock": [
|
||||
"FuzzyClock@fire-man-x",
|
||||
"FuzzyClock@johngoetz"
|
||||
],
|
||||
"internet-speed-meter": [
|
||||
"InternetSpeedMeter@alshakib.dev",
|
||||
"speed-meter@mojahid.lunecode.com"
|
||||
@@ -36,10 +48,18 @@
|
||||
"night-light-toggle@egoistpizza.github.com",
|
||||
"nightlighttoggle@sam"
|
||||
],
|
||||
"panel-workspace-scroll": [
|
||||
"panel-scroll@taygun86",
|
||||
"panel-workspace-scroll@polymeilex.github.io"
|
||||
],
|
||||
"persian-calendar": [
|
||||
"PersianCalendar@oxygenws.com",
|
||||
"persian-calendar@iamrezamousavi.gmail.com"
|
||||
],
|
||||
"proxy-switcher": [
|
||||
"ProxySwitcher@flannaghan.com",
|
||||
"proxy-switcher@seydef"
|
||||
],
|
||||
"public-ip-address": [
|
||||
"public-ip-address@fire-man-x",
|
||||
"public-ip-address@theophilediot.github.io"
|
||||
@@ -48,10 +68,19 @@
|
||||
"System_Monitor@bghome.gmail.com",
|
||||
"sysmonitor@talhasiddique7",
|
||||
"system-monitor@axet.github.com",
|
||||
"system-monitor@gnome-shell-extensions.gcampax.github.com"
|
||||
"system-monitor@gnome-shell-extensions.gcampax.github.com",
|
||||
"system-monitor@jtourteau"
|
||||
],
|
||||
"systemquest": [
|
||||
"system-rpg@conan513",
|
||||
"system-rpg@gnome-rpg.local"
|
||||
],
|
||||
"tailscale-qs": [
|
||||
"tailscale-gnome-qs@tailscale-qs.github.io",
|
||||
"tailscale@joaophi.github.com"
|
||||
],
|
||||
"workspace-wallpapers": [
|
||||
"workspace-wallpapers@ero",
|
||||
"workspace-wallpapers@jonathan.aljl.eu"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -96,10 +96,20 @@ rec {
|
||||
unite-shell = gnomeExtensions.unite; # added 2021-01-19
|
||||
arc-menu = gnomeExtensions.arcmenu; # added 2021-02-14
|
||||
|
||||
clock-override = throw "'gnomeExtensions.clock-override' has been removed due to lack of upstream maintenance";
|
||||
drop-down-terminal = throw "'gnomeExtensions.drop-down-terminal' has been removed due to lack of upstream maintenance";
|
||||
icon-hider = throw "gnomeExtensions.icon-hider was removed on 2024-03-15. The extension has not received any updates since 2020/3.34.";
|
||||
nohotcorner = throw "gnomeExtensions.nohotcorner removed since 2019-10-09: Since 3.34, it is a part of GNOME Shell configurable through GNOME Tweaks.";
|
||||
mediaplayer = throw "gnomeExtensions.mediaplayer deprecated since 2019-09-23: retired upstream https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/blob/master/README.md";
|
||||
no-title-bar = throw "'gnomeExtensions.no-title-bar' has been removed due to lack of upstream maintenance";
|
||||
nohotcorner = throw "gnomeExtensions.nohotcorner removed since 2019-10-09: Since 3.34, it is a part of GNOME Shell configurable through GNOME Tweaks.";
|
||||
pano = throw "'gnomeExtensions.pano' has been removed due to lack of upstream maintenance";
|
||||
pidgin-im-integration = throw "'gnomeExtensions.pidgin-im-integration' has been removed due to lack of upstream maintenance";
|
||||
remove-dropdown-arrows = throw "gnomeExtensions.remove-dropdown-arrows removed since 2021-05-25: The extensions has not seen an update sine GNOME 3.34. Furthermore, the functionality it provides is obsolete as of GNOME 40.";
|
||||
sound-output-device-chooser = throw "'gnomeExtensions.sound-output-device-chooser' has been removed due to lack of upstream maintenance";
|
||||
taskwhisperer = throw "'gnomeExtensions.taskwhisperer' has been removed due to lack of upstream maintenance";
|
||||
tilingnome = throw "'gnomeExtensions.tilingnome' has been removed due to lack of upstream maintenance";
|
||||
topicons-plus = throw "'gnomeExtensions.topicons-plus' has been removed due to lack of upstream maintenance";
|
||||
window-corner-preview = throw "'gnomeExtensions.window-corner-preview' has been removed due to lack of upstream maintenance";
|
||||
}
|
||||
)
|
||||
# Export buildShellExtension function
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
replaceVars,
|
||||
gjs,
|
||||
vte,
|
||||
gnome,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "gnome-shell-extension-drop-down-terminal";
|
||||
version = "unstable-2020-03-25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zzrough";
|
||||
repo = "gs-extensions-drop-down-terminal";
|
||||
rev = "a59669afdb395b3315619f62c1f740f8b2f0690d";
|
||||
sha256 = "0igfxgrjdqq6z6xg4rsawxn261pk25g5dw2pm3bhwz5sqsy4bq3i";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "drop-down-terminal@gs-extensions.zzrough.org";
|
||||
extensionPortalSlug = "drop-down-terminal";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(replaceVars ./fix_vte_and_gjs.patch {
|
||||
inherit gjs vte;
|
||||
})
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/share/gnome-shell/extensions
|
||||
cp -r "drop-down-terminal@gs-extensions.zzrough.org" $out/share/gnome-shell/extensions/
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Configurable drop down terminal shell";
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = with lib.maintainers; [ ericdallo ];
|
||||
homepage = "https://github.com/zzrough/gs-extensions-drop-down-terminal";
|
||||
};
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
--- a/drop-down-terminal@gs-extensions.zzrough.org/extension.js
|
||||
+++ b/drop-down-terminal@gs-extensions.zzrough.org/extension.js
|
||||
@@ -15,6 +15,8 @@
|
||||
|
||||
// Author: Stéphane Démurget <stephane.demurget@free.fr>
|
||||
|
||||
+imports.gi.GIRepository.Repository.dup_default().prepend_search_path('@vte@/lib/girepository-1.0')
|
||||
+
|
||||
const Lang = imports.lang;
|
||||
const Gettext = imports.gettext.domain("drop-down-terminal");
|
||||
const Mainloop = imports.mainloop;
|
||||
@@ -653,7 +655,7 @@ const DropDownTerminalExtension = new Lang.Class({
|
||||
this._killingChild = false;
|
||||
|
||||
// finds the forking arguments
|
||||
- let args = ["gjs", GLib.build_filenamev([Me.path, "terminal.js"]), Me.path];
|
||||
+ let args = ["@gjs@/bin/gjs", GLib.build_filenamev([Me.path, "terminal.js"]), Me.path];
|
||||
|
||||
// forks the process
|
||||
debug("forking '" + args.join(" ") + "'");
|
||||
--- a/drop-down-terminal@gs-extensions.zzrough.org/terminal.js
|
||||
+++ b/drop-down-terminal@gs-extensions.zzrough.org/terminal.js
|
||||
@@ -14,6 +14,9 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// Author: Stéphane Démurget <stephane.demurget@free.fr>
|
||||
+
|
||||
+imports.gi.GIRepository.Repository.dup_default().prepend_search_path('@vte@/lib/girepository-1.0')
|
||||
+
|
||||
const Lang = imports.lang;
|
||||
|
||||
const Pango = imports.gi.Pango;
|
||||
@@ -32,6 +32,8 @@
|
||||
gtk4,
|
||||
desktop-file-utils,
|
||||
xdg-user-dirs,
|
||||
libglycin,
|
||||
libglycin-gtk4,
|
||||
}:
|
||||
let
|
||||
# Helper method to reduce redundancy
|
||||
@@ -109,7 +111,6 @@ lib.trivial.pipe super [
|
||||
xdg_utils = xdg-utils;
|
||||
gtk3_gsettings_path = glib.getSchemaPath gtk3;
|
||||
nautilus_gsettings_path = glib.getSchemaPath nautilus;
|
||||
typelib_path = "${gtk3}/lib/girepository-1.0";
|
||||
})
|
||||
];
|
||||
}))
|
||||
@@ -222,12 +223,23 @@ lib.trivial.pipe super [
|
||||
(patchExtension "system-monitor-next@paradoxxx.zero.gmail.com" (old: {
|
||||
patches = [
|
||||
(replaceVars ./extensionOverridesPatches/system-monitor-next_at_paradoxxx.zero.gmail.com.patch {
|
||||
gtop_path = "${libgtop}/lib/girepository-1.0";
|
||||
typelibPath = lib.makeSearchPath "/lib/girepository-1.0" [ libgtop ];
|
||||
})
|
||||
];
|
||||
meta.maintainers = with lib.maintainers; [ andersk ];
|
||||
}))
|
||||
|
||||
(patchExtension "user-theme-x@tuberry.github.io" (old: {
|
||||
patches = [
|
||||
(replaceVars ./extensionOverridesPatches/user-theme-x_at_tuberry.github.io.patch {
|
||||
typelibPath = lib.makeSearchPath "/lib/girepository-1.0" [
|
||||
libglycin
|
||||
libglycin-gtk4
|
||||
];
|
||||
})
|
||||
];
|
||||
}))
|
||||
|
||||
(patchExtension "Vitals@CoreCoding.com" (old: {
|
||||
patches = [
|
||||
(replaceVars ./extensionOverridesPatches/vitals_at_corecoding.com.patch {
|
||||
|
||||
+6
-22
@@ -9,23 +9,15 @@ index 56875b5..3216e79 100755
|
||||
/* DING: Desktop Icons New Generation for GNOME Shell
|
||||
*
|
||||
diff --git a/app/ding.js b/app/ding.js
|
||||
index 9a1550a..7bd25fc 100755
|
||||
index 6bf7309..923e0b6 100755
|
||||
--- a/app/ding.js
|
||||
+++ b/app/ding.js
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env gjs
|
||||
+#!@gjs@/bin/gjs
|
||||
|
||||
|
||||
/* DING: Desktop Icons New Generation for GNOME Shell
|
||||
*
|
||||
@@ -18,6 +18,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
'use strict';
|
||||
+imports.gi.GIRepository.Repository.dup_default().prepend_search_path('@typelib_path@');
|
||||
imports.gi.versions.Gtk = '3.0';
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Gio = imports.gi.Gio;
|
||||
diff --git a/app/fileItemMenu.js b/app/fileItemMenu.js
|
||||
index 4fae9ef..5127eff 100644
|
||||
--- a/app/fileItemMenu.js
|
||||
@@ -67,26 +59,18 @@ index 94ec3c7..823dd5c 100644
|
||||
nautilusCompression = null;
|
||||
} else {
|
||||
diff --git a/extension.js b/extension.js
|
||||
index 0f8a317..c768649 100644
|
||||
index d6cb19c..ea9a93a 100644
|
||||
--- a/extension.js
|
||||
+++ b/extension.js
|
||||
@@ -17,6 +17,7 @@
|
||||
*/
|
||||
'use strict';
|
||||
import Clutter from 'gi://Clutter'
|
||||
+import GIRepository from 'gi://GIRepository';
|
||||
import GLib from 'gi://GLib'
|
||||
import Gio from 'gi://Gio'
|
||||
import Meta from 'gi://Meta'
|
||||
@@ -396,9 +397,9 @@ export default class DING extends Extension {
|
||||
@@ -297,9 +297,9 @@ export default class DING extends Extension {
|
||||
contents += String.fromCharCode(readData[i]);
|
||||
}
|
||||
}
|
||||
- let path = `gjs ${GLib.build_filenamev([this.path, 'app', 'ding.js'])}`;
|
||||
+ let path = `@gjs@/bin/gjs ${GLib.build_filenamev([this.path, 'app', 'ding.js'])}`;
|
||||
if (contents.startsWith(path)) {
|
||||
- let proc = new Gio.Subprocess({argv: ['/bin/kill', filename]});
|
||||
+ let proc = new Gio.Subprocess({argv: ['@util_linux@/bin/kill', filename]});
|
||||
- let proc = new Gio.Subprocess({ argv: ['/bin/kill', filename] });
|
||||
+ let proc = new Gio.Subprocess({ argv: ['@util_linux@/bin/kill', filename] });
|
||||
proc.init(null);
|
||||
proc.wait(null);
|
||||
}
|
||||
|
||||
+15
-24
@@ -1,30 +1,21 @@
|
||||
diff --git a/__nix-prepend-search-paths.js b/__nix-prepend-search-paths.js
|
||||
new file mode 100644
|
||||
index 0000000..bd477f1
|
||||
--- /dev/null
|
||||
+++ b/__nix-prepend-search-paths.js
|
||||
@@ -0,0 +1,2 @@
|
||||
+import GIRepository from "gi://GIRepository";
|
||||
+"@typelibPath@".split(':').forEach(path => GIRepository.Repository.dup_default().prepend_search_path(path));
|
||||
diff --git a/extension.js b/extension.js
|
||||
index ee8c3a9..ca72885 100644
|
||||
index dfa8118..f2950b4 100644
|
||||
--- a/extension.js
|
||||
+++ b/extension.js
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
// Author: Florian Mounier aka paradoxxxzero
|
||||
|
||||
+import './__nix-prepend-search-paths.js';
|
||||
+
|
||||
import { Extension, gettext as _ } from "resource:///org/gnome/shell/extensions/extension.js";
|
||||
|
||||
import Clutter from "gi://Clutter";
|
||||
+import GIRepository from "gi://GIRepository";
|
||||
import GLib from "gi://GLib";
|
||||
import GObject from "gi://GObject";
|
||||
|
||||
@@ -28,7 +29,6 @@ import Gio from "gi://Gio";
|
||||
import Shell from "gi://Shell";
|
||||
import St from "gi://St";
|
||||
import UPowerGlib from "gi://UPowerGlib";
|
||||
-import GTop from "gi://GTop";
|
||||
import NM from "gi://NM";
|
||||
|
||||
import * as ModalDialog from "resource:///org/gnome/shell/ui/modalDialog.js";
|
||||
@@ -41,6 +41,9 @@ import * as PopupMenu from "resource:///org/gnome/shell/ui/popupMenu.js";
|
||||
|
||||
import * as Util from "resource:///org/gnome/shell/misc/util.js";
|
||||
|
||||
+GIRepository.Repository.dup_default().prepend_search_path('@gtop_path@');
|
||||
+const GTop = (await import("gi://GTop")).default;
|
||||
+
|
||||
const NetworkManager = NM;
|
||||
const UPower = UPowerGlib;
|
||||
// Copied as of https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/5fa08fe53376f5dca755360bd005a4a51ca78917/js/ui/panel.js#L45
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
diff --git a/__nix-prepend-search-paths.js b/__nix-prepend-search-paths.js
|
||||
new file mode 100644
|
||||
index 0000000..bd477f1
|
||||
--- /dev/null
|
||||
+++ b/__nix-prepend-search-paths.js
|
||||
@@ -0,0 +1,2 @@
|
||||
+import GIRepository from "gi://GIRepository";
|
||||
+"@typelibPath@".split(":").forEach(path => GIRepository.Repository.dup_default().prepend_search_path(path));
|
||||
diff --git a/prefs.js b/prefs.js
|
||||
index 456827c..4849e92 100644
|
||||
--- a/prefs.js
|
||||
+++ b/prefs.js
|
||||
@@ -1,6 +1,8 @@
|
||||
// SPDX-FileCopyrightText: tuberry
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
+import './__nix-prepend-search-paths.js';
|
||||
+
|
||||
import Adw from 'gi://Adw';
|
||||
import Gdk from 'gi://Gdk';
|
||||
import Gio from 'gi://Gio';
|
||||
|
||||
@@ -7,20 +7,24 @@
|
||||
"Applications_Menu@rmy.pobox.com" = "frippery-applications-menu";
|
||||
"apps-menu@gnome-shell-extensions.gcampax.github.com" = "applications-menu";
|
||||
|
||||
"persian-calendar@iamrezamousavi.gmail.com" = "persian-calendar-2";
|
||||
"PersianCalendar@oxygenws.com" = "persian-calendar";
|
||||
|
||||
"system-monitor@gnome-shell-extensions.gcampax.github.com" = "system-monitor";
|
||||
"System_Monitor@bghome.gmail.com" = "system-monitor-2";
|
||||
"system-monitor@axet.github.com" = "system-monitor-3";
|
||||
"sysmonitor@talhasiddique7" = "system-monitor-4";
|
||||
"autoselectheadset@josephlbarnett.github.com" = "auto-select-headset";
|
||||
"autoselectheadset@Anduril97.github.com" = "auto-select-headset-2";
|
||||
|
||||
"battery-time@eetumos.github.com" = "battery-time-3";
|
||||
"batterytime@typeof.pw" = "battery-time-2";
|
||||
"batime@martin.zurowietz.de" = "battery-time";
|
||||
|
||||
"nepali-date@biplab" = "nepali-calendar";
|
||||
"nepali-calendar-gs-extension@subashghimire.info.np" = "nepali-calendar-2";
|
||||
"clipboard-history@alexsaveau.dev" = "clipboard-history";
|
||||
"clipboard-history@Diyar1877" = "clipboard-history-2";
|
||||
|
||||
"clipboard-line-cleaner@example.com" = "clipboard-line-cleaner";
|
||||
"clipboard-line-cleaner@epiphanius.github.io" = "clipboard-line-cleaner-2";
|
||||
|
||||
"FuzzyClock@johngoetz" = "fuzzy-clock";
|
||||
"FuzzyClock@fire-man-x" = "fuzzy-clock-3"; # '-3' preserves backwards compatibility
|
||||
|
||||
"InternetSpeedMeter@alshakib.dev" = "internet-speed-meter";
|
||||
"speed-meter@mojahid.lunecode.com" = "internet-speed-meter-2";
|
||||
|
||||
"lockkeys@febueldo.test" = "lock-keys";
|
||||
"lockkeys@vaina.lt" = "lock-keys-2";
|
||||
@@ -28,24 +32,42 @@
|
||||
"memento-mori@paveloom" = "memento-mori";
|
||||
"memento-mori@vedeshpadal" = "memento-mori-2";
|
||||
|
||||
"nepali-date@biplab" = "nepali-calendar";
|
||||
"nepali-calendar-gs-extension@subashghimire.info.np" = "nepali-calendar-2";
|
||||
|
||||
"netspeed@alynx.one" = "net-speed";
|
||||
"netspeed@shivamksharma.github.io" = "net-speed-2";
|
||||
|
||||
"night-light-toggle@egoistpizza.github.com" = "night-light-toggle";
|
||||
"nightlighttoggle@sam" = "night-light-toggle-2";
|
||||
|
||||
"autoselectheadset@josephlbarnett.github.com" = "auto-select-headset";
|
||||
"autoselectheadset@Anduril97.github.com" = "auto-select-headset-2";
|
||||
"panel-workspace-scroll@polymeilex.github.io" = "panel-workspace-scroll";
|
||||
"panel-scroll@taygun86" = "panel-workspace-scroll-2";
|
||||
|
||||
"InternetSpeedMeter@alshakib.dev" = "internet-speed-meter";
|
||||
"speed-meter@mojahid.lunecode.com" = "internet-speed-meter-2";
|
||||
"persian-calendar@iamrezamousavi.gmail.com" = "persian-calendar-2";
|
||||
"PersianCalendar@oxygenws.com" = "persian-calendar";
|
||||
|
||||
"ProxySwitcher@flannaghan.com" = "proxy-switcher";
|
||||
"proxy-switcher@seydef" = "proxy-switcher-2";
|
||||
|
||||
"public-ip-address@fire-man-x" = "public-ip-address";
|
||||
"public-ip-address@theophilediot.github.io" = "public-ip-address-2";
|
||||
|
||||
"system-monitor@gnome-shell-extensions.gcampax.github.com" = "system-monitor";
|
||||
"System_Monitor@bghome.gmail.com" = "system-monitor-2";
|
||||
"system-monitor@axet.github.com" = "system-monitor-3";
|
||||
"sysmonitor@talhasiddique7" = "system-monitor-4";
|
||||
"system-monitor@jtourteau" = "system-monitor-5";
|
||||
|
||||
"system-rpg@conan513" = "systemquest";
|
||||
"system-rpg@gnome-rpg.local" = "systemquest-2";
|
||||
|
||||
"tailscale-gnome-qs@tailscale-qs.github.io" = "tailscale-qs";
|
||||
"tailscale@joaophi.github.com" = "tailscale-qs-2";
|
||||
|
||||
"workspace-wallpapers@jonathan.aljl.eu" = "workspace-wallpapers";
|
||||
"workspace-wallpapers@ero" = "workspace-wallpapers-2";
|
||||
|
||||
# ############################################################################
|
||||
# These extensions no longer collide. We preserve the old attribute name for backwards compatibility.
|
||||
"floatingDock@sun.wxg@gmail.com" = "floating-dock-2";
|
||||
@@ -54,7 +76,6 @@
|
||||
"openweather-extension@penguin-teal.github.io" = "openweather-refined";
|
||||
"fullscreen-to-empty-workspace2@corgijan.dev" = "fullscreen-to-empty-workspace-2";
|
||||
"power-profile@fthx" = "power-profile-indicator-2";
|
||||
"FuzzyClock@fire-man-x" = "fuzzy-clock-3";
|
||||
"mouse-follows-focus@crisidev.org" = "mouse-follows-focus-2";
|
||||
|
||||
# ############################################################################
|
||||
@@ -64,8 +85,6 @@
|
||||
# The manually packaged ones:
|
||||
"EasyScreenCast@iacopodeenosee.gmail.com" = "easyScreenCast"; # extensionPortalSlug is "easyscreencast"
|
||||
"gnome-fuzzy-app-search@gnome-shell-extensions.Czarlie.gitlab.com" = "fuzzy-app-search"; # extensionPortalSlug is "gnome-fuzzy-app-search"
|
||||
"TopIcons@phocean.net" = "topicons-plus"; # extensionPortalSlug is "topicons"
|
||||
"no-title-bar@jonaspoehler.de" = "no-title-bar"; # extensionPortalSlug is "no-title-bar-forked"
|
||||
# These extensions are automatically packaged at the moment. We preserve the old attribute name
|
||||
# for backwards compatibility.
|
||||
"appindicatorsupport@rgcjonas.gmail.com" = "appindicator"; # extensionPortalSlug is "appindicator-support"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
{
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
lib,
|
||||
fetchFromGitLab,
|
||||
glib,
|
||||
@@ -7,15 +7,15 @@
|
||||
# We package this manually because upstream stopped updating the package to
|
||||
# extensions.gnome.org. See:
|
||||
# https://gitlab.com/ente76/guillotine/-/issues/17
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "gnome-shell-extension-guillotine";
|
||||
version = "26";
|
||||
version = "27-unstable-2026-04-08";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "ente76";
|
||||
repo = "guillotine";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-6RuHargk7sq6oUKj+aGPFp3t0LJCpj6RwLhNzAM5wVA=";
|
||||
rev = "3bccda1d189ed0525daa12f6b12b4ebea4222fc5";
|
||||
hash = "sha256-G8u+g1pnitAgGz4+yldIGSNiasgOj32P/M6CVMMDfJY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ glib ];
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
glib,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "gnome-shell-extension-impatience";
|
||||
version = "0.5.3-unstable-2025-10-06";
|
||||
version = "0.5.3-unstable-2026-03-11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "timbertson";
|
||||
repo = "gnome-shell-impatience";
|
||||
rev = "593f9cd52ffd7875265e7cfa2d03e0309fec55b1"; # shows gnome 49 support
|
||||
hash = "sha256-Slcd47DX1Gdl5H1kkrn19s95eDpftyS2Wn25UpYCjYQ=";
|
||||
rev = "f3f145d33d88a46abcfd77f84665bc64b8c0e01c"; # shows gnome 50 support
|
||||
hash = "sha256-3ejg1UZcFDakwsx4RCHqLhUtZypP/x/8pbkoQDurdlg=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -2,25 +2,16 @@
|
||||
{
|
||||
"arcmenu@arcmenu.com" = callPackage ./arcmenu { };
|
||||
"argos@pew.worldwidemann.com" = callPackage ./argos { };
|
||||
"clock-override@gnomeshell.kryogenix.org" = callPackage ./clock-override { };
|
||||
"drop-down-terminal@gs-extensions.zzrough.org" = callPackage ./drop-down-terminal { };
|
||||
"EasyScreenCast@iacopodeenosee.gmail.com" = callPackage ./EasyScreenCast { };
|
||||
"forge@jmmaranan.com" = callPackage ./forge { };
|
||||
"gsconnect@andyholmes.github.io" = callPackage ./gsconnect { };
|
||||
"guillotine@fopdoodle.net" = callPackage ./guillotine { };
|
||||
"impatience@gfxmonk.net" = callPackage ./impatience { };
|
||||
"no-title-bar@jonaspoehler.de" = callPackage ./no-title-bar { };
|
||||
"pidgin@muffinmad" = callPackage ./pidgin-im-integration { };
|
||||
"pop-shell@system76.com" = callPackage ./pop-shell { };
|
||||
"sound-output-device-chooser@kgshank.net" = callPackage ./sound-output-device-chooser { };
|
||||
# hardpixel extensions won't receive updates on extensions.gnome.org:
|
||||
# - https://github.com/hardpixel/systemd-manager/issues/19
|
||||
# - https://github.com/hardpixel/unite-shell/issues/353
|
||||
"systemd-manager@hardpixel.eu" = callPackage ./systemd-manager { };
|
||||
"taskwhisperer-extension@infinicode.de" = callPackage ./taskwhisperer { };
|
||||
"tilingnome@rliang.github.com" = callPackage ./tilingnome { };
|
||||
"TopIcons@phocean.net" = callPackage ./topicons-plus { };
|
||||
# Can be removed when https://github.com/hardpixel/unite-shell/issues/353 resolved
|
||||
"unite@hardpixel.eu" = callPackage ./unite { };
|
||||
"valent@andyholmes.ca" = callPackage ./valent { };
|
||||
"window-corner-preview@fabiomereu.it" = callPackage ./window-corner-preview { };
|
||||
# Can be removed when https://github.com/oae/gnome-shell-pano/issues/271 resolved
|
||||
"pano@elhan.io" = callPackage ./pano { };
|
||||
}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
replaceVars,
|
||||
glib,
|
||||
gettext,
|
||||
xwininfo,
|
||||
xprop,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-no-title-bar";
|
||||
version = "11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "poehlerj";
|
||||
repo = "no-title-bar";
|
||||
rev = "V_${version}";
|
||||
sha256 = "07ddw47binlsbyvgy4xkdjvd40zyp7nwd17r6k7w54d50vmnwhvb";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
glib
|
||||
gettext
|
||||
];
|
||||
|
||||
patches = [
|
||||
(replaceVars ./fix-paths.patch {
|
||||
xprop = "${xprop}/bin/xprop";
|
||||
xwininfo = "${xwininfo}/bin/xwininfo";
|
||||
})
|
||||
];
|
||||
|
||||
makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ];
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "no-title-bar@jonaspoehler.de";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Integrates maximized windows with the top panel";
|
||||
homepage = "https://github.com/poehlerj/no-title-bar";
|
||||
license = lib.licenses.gpl2;
|
||||
maintainers = with lib.maintainers; [ svsdep ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
diff --git a/decoration.js b/decoration.js
|
||||
index d1ff3dd..ff4193f 100644
|
||||
--- a/decoration.js
|
||||
+++ b/decoration.js
|
||||
@@ -223,7 +223,7 @@ var Decoration = class {
|
||||
|
||||
let winId = this._guessWindowXID(win);
|
||||
|
||||
- let xprops = GLib.spawn_command_line_sync(`xprop -id ${winId}`);
|
||||
+ let xprops = GLib.spawn_command_line_sync(`@xprop@ -id ${winId}`);
|
||||
if (!xprops[0]) {
|
||||
Utils.log_debug(`Unable to determine windows '${win.get_title()}' original state`);
|
||||
return win._noTitleBarOriginalState = WindowState.UNKNOWN;
|
||||
@@ -237,7 +237,7 @@ var Decoration = class {
|
||||
let prop = '_MOTIF_WM_HINTS';
|
||||
let value = '0x2, 0x0, %s, 0x0, 0x0'.format(hide ? '0x2' : '0x1');
|
||||
|
||||
- GLib.spawn_command_line_sync(`xprop -id ${windId} -f ${prop} 32c -set ${prop} "${value}"`);
|
||||
+ GLib.spawn_command_line_sync(`@xprop@ -id ${windId} -f ${prop} 32c -set ${prop} "${value}"`);
|
||||
if (!hide && !win.titlebar_is_onscreen()) {
|
||||
Utils.log_debug(`Shoving titlebar onscreen for window '${win.get_title()}'`);
|
||||
win.shove_titlebar_onscreen();
|
||||
@@ -354,7 +354,7 @@ var Decoration = class {
|
||||
let act = win.get_compositor_private();
|
||||
let xwindow = act && act['x-window'];
|
||||
if (xwindow) {
|
||||
- let xwininfo = GLib.spawn_command_line_sync('xwininfo -children -id 0x%x'.format(xwindow));
|
||||
+ let xwininfo = GLib.spawn_command_line_sync('@xwininfo@ -children -id 0x%x'.format(xwindow));
|
||||
if (xwininfo[0]) {
|
||||
let str = ByteArray.toString(xwininfo[1]);
|
||||
|
||||
@@ -384,7 +384,7 @@ var Decoration = class {
|
||||
// Try enumerating all available windows and match the title. Note that this
|
||||
// may be necessary if the title contains special characters and `x-window`
|
||||
// is not available.
|
||||
- let result = GLib.spawn_command_line_sync('xprop -root _NET_CLIENT_LIST');
|
||||
+ let result = GLib.spawn_command_line_sync('@xprop@ -root _NET_CLIENT_LIST');
|
||||
if (result[0]) {
|
||||
let str = ByteArray.toString(result[1]);
|
||||
|
||||
@@ -395,7 +395,7 @@ var Decoration = class {
|
||||
|
||||
// For each window ID, check if the title matches the desired title.
|
||||
for (var i = 0; i < windowList.length; ++i) {
|
||||
- let cmd = 'xprop -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE';
|
||||
+ let cmd = '@xprop@ -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE';
|
||||
let result = GLib.spawn_command_line_sync(cmd);
|
||||
|
||||
if (result[0]) {
|
||||
@@ -455,4 +455,4 @@ var Decoration = class {
|
||||
let styleContent = this._updateUserStyles();
|
||||
GLib.file_set_contents(this._userStylesPath, styleContent);
|
||||
}
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
@@ -1,55 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
glib,
|
||||
libgda6,
|
||||
gsound,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gnome-shell-extension-pano";
|
||||
version = "23-alpha5";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/oae/gnome-shell-pano/releases/download/v${finalAttrs.version}/pano@elhan.io.zip";
|
||||
hash = "sha256-kTaJOSyFtBa/fl3Mot8Q8qyhwJwhcbBY4FvdztqUP4w=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
glib
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
glib-compile-schemas --strict schemas
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
preInstall = ''
|
||||
substituteInPlace extension.js \
|
||||
--replace-fail "import Gda from 'gi://Gda?version>=5.0'" "imports.gi.GIRepository.Repository.prepend_search_path('${libgda6}/lib/girepository-1.0'); const Gda = (await import('gi://Gda')).default" \
|
||||
--replace-fail "import GSound from 'gi://GSound'" "imports.gi.GIRepository.Repository.prepend_search_path('${gsound}/lib/girepository-1.0'); const GSound = (await import('gi://GSound')).default"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/share/gnome-shell/extensions
|
||||
cp -r -T . $out/share/gnome-shell/extensions/pano@elhan.io
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
extensionPortalSlug = "pano";
|
||||
extensionUuid = "pano@elhan.io";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Next-gen Clipboard Manager for Gnome Shell";
|
||||
homepage = "https://github.com/oae/gnome-shell-pano";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [ honnip ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
@@ -1,45 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
glib,
|
||||
gnome-shell,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-pidgin-im-integration";
|
||||
version = "32";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "muffinmad";
|
||||
repo = "pidgin-im-gnome-shell-extension";
|
||||
rev = "v${version}";
|
||||
sha256 = "1jyg8r0s1v83sgg6y0jbsj2v37mglh8rvd8vi27fxnjq9xmg8kpc";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
share_dir="$prefix/share"
|
||||
extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad"
|
||||
mkdir -p "$extensions_dir"
|
||||
mv *.js metadata.json dbus.xml schemas locale "$extensions_dir"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "pidgin@muffinmad";
|
||||
extensionPortalSlug = "pidgin-im-integration";
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/muffinmad/pidgin-im-gnome-shell-extension";
|
||||
description = "Make Pidgin IM conversations appear in the Gnome Shell message tray";
|
||||
license = lib.licenses.gpl2;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = [ ];
|
||||
broken = lib.versionAtLeast gnome-shell.version "3.32"; # Doesn't support 3.34
|
||||
};
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
replaceVars,
|
||||
fetchFromGitHub,
|
||||
libpulseaudio,
|
||||
python3,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "gnome-shell-extension-sound-output-device-chooser";
|
||||
# For gnome 42 support many commits not tagged yet are needed.
|
||||
version = "unstable-2022-03-29";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kgshank";
|
||||
repo = "gse-sound-output-device-chooser";
|
||||
rev = "76f7f59d23f5ffcd66555c7662f43c9cc1ce4742";
|
||||
sha256 = "sha256-iPc95LmDsYizLg45wpU+vFx/N6MR2hewSHqoRsePC/4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix paths to libpulse and python
|
||||
(replaceVars ./fix-paths.patch {
|
||||
libpulse = "${libpulseaudio}/lib/libpulse.so";
|
||||
python = python3.interpreter;
|
||||
})
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "sound-output-device-chooser@kgshank.net";
|
||||
extensionPortalSlug = "sound-output-device-chooser";
|
||||
};
|
||||
|
||||
makeFlags = [
|
||||
"INSTALL_DIR=${placeholder "out"}/share/gnome-shell/extensions"
|
||||
];
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p ${placeholder "out"}/share/gnome-shell/extensions
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "GNOME Shell extension adding audio device chooser to panel";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = [ ];
|
||||
homepage = "https://github.com/kgshank/gse-sound-output-device-chooser";
|
||||
};
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
diff --git a/sound-output-device-chooser@kgshank.net/convenience.js b/sound-output-device-chooser@kgshank.net/convenience.js
|
||||
index 54ad06f..0860531 100644
|
||||
--- a/sound-output-device-chooser@kgshank.net/convenience.js
|
||||
+++ b/sound-output-device-chooser@kgshank.net/convenience.js
|
||||
@@ -142,7 +142,7 @@ function refreshCards() {
|
||||
if (newProfLogic) {
|
||||
_log("New logic");
|
||||
let pyLocation = Me.dir.get_child("utils/pa_helper.py").get_path();
|
||||
- let pythonExec = ["python", "python3", "python2"].find(cmd => isCmdFound(cmd));
|
||||
+ let pythonExec = '@python@';
|
||||
if (!pythonExec) {
|
||||
_log("ERROR: Python not found. fallback to default mode");
|
||||
_settings.set_boolean(Prefs.NEW_PROFILE_ID, false);
|
||||
diff --git a/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py b/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py
|
||||
index c4d2484..262608d 100644
|
||||
--- a/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py
|
||||
+++ b/sound-output-device-chooser@kgshank.net/utils/libpulse_introspect.py
|
||||
@@ -82,7 +82,7 @@ else:
|
||||
|
||||
_libraries = {}
|
||||
|
||||
-libpulse_library_name = find_library('pulse')
|
||||
+libpulse_library_name = '@libpulse@'
|
||||
if libpulse_library_name is None:
|
||||
raise Exception('No libpulse.so library found!')
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
replaceVars,
|
||||
fetchFromGitHub,
|
||||
taskwarrior2,
|
||||
gettext,
|
||||
runtimeShell,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-taskwhisperer";
|
||||
version = "20";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cinatic";
|
||||
repo = "taskwhisperer";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-UVBLFXsbOPRXC4P5laZ82Rs08yXnNnzJ+pp5fbx6Zqc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gettext
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
taskwarrior2
|
||||
];
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "taskwhisperer-extension@infinicode.de";
|
||||
extensionPortalSlug = "taskwhisperer";
|
||||
};
|
||||
|
||||
makeFlags = [
|
||||
"INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions"
|
||||
];
|
||||
|
||||
patches = [
|
||||
(replaceVars ./fix-paths.patch {
|
||||
task = "${taskwarrior2}/bin/task";
|
||||
})
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "GNOME Shell TaskWarrior GUI";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = [ ];
|
||||
homepage = "https://github.com/cinatic/taskwhisperer";
|
||||
};
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
diff --git a/taskwhisperer-extension@infinicode.de/metadata.json b/taskwhisperer-extension@infinicode.de/metadata.json
|
||||
index 2f1471c..a84bdf4 100644
|
||||
--- a/taskwhisperer-extension@infinicode.de/metadata.json
|
||||
+++ b/taskwhisperer-extension@infinicode.de/metadata.json
|
||||
@@ -6,7 +6,8 @@
|
||||
"3.32",
|
||||
"3.36",
|
||||
"3.38",
|
||||
- "40"
|
||||
+ "40",
|
||||
+ "41"
|
||||
],
|
||||
"url": "https://github.com/cinatic/taskwhisperer",
|
||||
"uuid": "taskwhisperer-extension@infinicode.de",
|
||||
diff --git a/taskwhisperer-extension@infinicode.de/services/taskService.js b/taskwhisperer-extension@infinicode.de/services/taskService.js
|
||||
index df09cdf..df68c60 100644
|
||||
--- a/taskwhisperer-extension@infinicode.de/services/taskService.js
|
||||
+++ b/taskwhisperer-extension@infinicode.de/services/taskService.js
|
||||
@@ -63,7 +63,7 @@ var loadTaskData = async ({ taskStatus, project, taskOrder }) => {
|
||||
|
||||
await syncTasks()
|
||||
|
||||
- const command = ['task', 'rc.json.array=on', statusFilter, projectFilter, 'export'].join(' ')
|
||||
+ const command = ['@task@', 'rc.json.array=on', statusFilter, projectFilter, 'export'].join(' ')
|
||||
|
||||
let { output, error } = await run({ command })
|
||||
|
||||
@@ -110,7 +110,7 @@ var loadProjectsData = async taskStatus => {
|
||||
|
||||
await syncTasks()
|
||||
|
||||
- const command = ['task', 'rc.json.array=on', statusFilter, 'export'].join(' ')
|
||||
+ const command = ['@task@', 'rc.json.array=on', statusFilter, 'export'].join(' ')
|
||||
const { output: allTheTasks } = await run({ command })
|
||||
|
||||
let sortedUniqueProjects = []
|
||||
@@ -129,7 +129,7 @@ var setTaskDone = async taskID => {
|
||||
return
|
||||
}
|
||||
|
||||
- const command = ['task', taskID.toString(), 'done'].join(' ')
|
||||
+ const command = ['@task@', taskID.toString(), 'done'].join(' ')
|
||||
const result = await run({ command, asJson: false })
|
||||
|
||||
if (!result.error) {
|
||||
@@ -146,7 +146,7 @@ var setTaskUndone = async taskUUID => {
|
||||
return
|
||||
}
|
||||
|
||||
- const command = ['task', `uuid:${taskUUID}`, 'modify', 'status:pending'].join(' ')
|
||||
+ const command = ['@task@', `uuid:${taskUUID}`, 'modify', 'status:pending'].join(' ')
|
||||
const result = await run({ command, asJson: false })
|
||||
|
||||
if (!result.error) {
|
||||
@@ -163,7 +163,7 @@ var startTask = async taskID => {
|
||||
return
|
||||
}
|
||||
|
||||
- const command = ['task', taskID.toString(), 'start'].join(' ')
|
||||
+ const command = ['@task@', taskID.toString(), 'start'].join(' ')
|
||||
const result = await run({ command, asJson: false })
|
||||
|
||||
if (!result.error) {
|
||||
@@ -180,7 +180,7 @@ var stopTask = async taskID => {
|
||||
return
|
||||
}
|
||||
|
||||
- const command = ['task', taskID.toString(), 'stop'].join(' ')
|
||||
+ const command = ['@task@', taskID.toString(), 'stop'].join(' ')
|
||||
const result = await run({ command, asJson: false })
|
||||
|
||||
if (!result.error) {
|
||||
@@ -195,7 +195,7 @@ var stopTask = async taskID => {
|
||||
var createTask = async task => {
|
||||
const params = _convertTaskToParams(task)
|
||||
|
||||
- const command = ['task', 'add', ...params].join(' ')
|
||||
+ const command = ['@task@', 'add', ...params].join(' ')
|
||||
const result = await run({ command, asJson: false })
|
||||
|
||||
if (!result.error) {
|
||||
@@ -212,7 +212,7 @@ var modifyTask = async (taskUUID, task) => {
|
||||
|
||||
const params = _convertTaskToParams(task)
|
||||
|
||||
- const command = ['task', `uuid:${taskUUID}`, 'modify', ...params].join(' ')
|
||||
+ const command = ['@task@', `uuid:${taskUUID}`, 'modify', ...params].join(' ')
|
||||
const result = await run({ command, asJson: false })
|
||||
|
||||
if (!result.error) {
|
||||
@@ -227,7 +227,7 @@ var syncTasks = async () => {
|
||||
return
|
||||
}
|
||||
|
||||
- const command = ['task', 'sync'].join(' ')
|
||||
+ const command = ['@task@', 'sync'].join(' ')
|
||||
const result = await run({ command, asJson: false })
|
||||
|
||||
_showProcessErrorNotificationIfError(result, 'Sync Tasks')
|
||||
@@ -1,47 +0,0 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
glib,
|
||||
gnome-shell,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "gnome-shell-extension-tilingnome";
|
||||
version = "unstable-2019-09-19";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rliang";
|
||||
repo = "gnome-shell-extension-tilingnome";
|
||||
rev = "f401c20c9721d85e6b3e30d1e822a200db370407";
|
||||
sha256 = "1hq9g9bxqpzqrdj9zm0irld8r6q4w1m4b00jya7wsny8rzb1s0y2";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ glib ];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
glib-compile-schemas .
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out/share/gnome-shell/extensions/tilingnome@rliang.github.com"
|
||||
cp -r * "$out/share/gnome-shell/extensions/tilingnome@rliang.github.com/"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "tilingnome@rliang.github.com";
|
||||
extensionPortalSlug = "tilingnome";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Tiling window management for GNOME Shell";
|
||||
license = lib.licenses.gpl2;
|
||||
maintainers = with lib.maintainers; [ benley ];
|
||||
homepage = "https://github.com/rliang/gnome-shell-extension-tilingnome";
|
||||
platforms = gnome-shell.meta.platforms;
|
||||
};
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
glib,
|
||||
gettext,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-topicons-plus";
|
||||
version = "27";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "phocean";
|
||||
repo = "TopIcons-plus";
|
||||
rev = version;
|
||||
sha256 = "1p3jlvs4zgnrvy8am7myivv4rnnshjp49kg87rd22qqyvcz51ykr";
|
||||
};
|
||||
|
||||
buildInputs = [ glib ];
|
||||
|
||||
nativeBuildInputs = [ gettext ];
|
||||
|
||||
makeFlags = [ "INSTALL_PATH=$(out)/share/gnome-shell/extensions" ];
|
||||
|
||||
passthru.extensionUuid = "TopIcons@phocean.net";
|
||||
|
||||
meta = {
|
||||
description = "Brings all icons back to the top panel, so that it's easier to keep track of apps running in the backround";
|
||||
license = lib.licenses.gpl2Only;
|
||||
maintainers = with lib.maintainers; [ eperuffo ];
|
||||
homepage = "https://github.com/phocean/TopIcons-plus";
|
||||
};
|
||||
}
|
||||
@@ -1,21 +1,21 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
gnome-shell,
|
||||
fetchFromGitHub,
|
||||
xprop,
|
||||
glib,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "gnome-shell-extension-unite";
|
||||
version = "84";
|
||||
version = "85";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hardpixel";
|
||||
repo = "unite-shell";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-ZaZs+PqnwMHfCejPt4wBZttT4J5gUlFQ8NjhaOPWGqQ=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-SN5DYyyZux3jeGgrOc/fd9QcjPRReb2rVZk987saXmQ=";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
@@ -47,4 +47,4 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/hardpixel/unite-shell";
|
||||
broken = lib.versionOlder gnome-shell.version "3.32";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -15,6 +15,7 @@ import subprocess
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
from contextlib import contextmanager
|
||||
from datetime import datetime
|
||||
from operator import itemgetter
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
@@ -39,6 +40,11 @@ supported_versions = {
|
||||
# shell versions that we want to put into the gnomeExtensions attr set
|
||||
versions_to_merge = ["48", "49", "50"]
|
||||
|
||||
# badly packaged extensions that are known to break `process_extension`
|
||||
ignored_extensions = [
|
||||
"wandathefish@ke.labrie.gmail.com",
|
||||
]
|
||||
|
||||
# Some type alias to increase readability of complex compound types
|
||||
PackageName = str
|
||||
ShellVersion = str
|
||||
@@ -201,6 +207,10 @@ def process_extension(extension: dict[str, Any]) -> dict[str, Any] | None:
|
||||
"""
|
||||
uuid = extension["uuid"]
|
||||
|
||||
# skip known bad extensions
|
||||
if uuid in ignored_extensions:
|
||||
return None
|
||||
|
||||
# Yeah, there are some extensions without any releases
|
||||
if not extension["shell_version_map"]:
|
||||
return None
|
||||
@@ -294,7 +304,19 @@ def scrape_extensions_index() -> list[dict[str, Any]]:
|
||||
|
||||
|
||||
def fetch_extensions() -> list[dict[str, Any]]:
|
||||
raw_extensions = scrape_extensions_index()
|
||||
raw_extensions: list[dict[str, Any]] = []
|
||||
|
||||
# cache the extension index, to avoid re-fetching it when processing an extension fails.
|
||||
cache_path = f"extension-index-{datetime.today().strftime('%Y-%m-%d')}.json"
|
||||
try:
|
||||
with open(cache_path, "r") as f:
|
||||
logging.info(f"Using cached extension index at {cache_path}.")
|
||||
raw_extensions = json.load(f)
|
||||
except FileNotFoundError:
|
||||
logging.info("No existing extension index found, re-scraping data.")
|
||||
raw_extensions = scrape_extensions_index()
|
||||
with open(cache_path, "w") as f:
|
||||
json.dump(raw_extensions, f)
|
||||
|
||||
logging.info(f"Downloaded {len(raw_extensions)} extensions. Processing …")
|
||||
processed_extensions: list[dict[str, Any]] = []
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
gnome-shell,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "gnome-shell-extension-window-corner-preview";
|
||||
version = "unstable-2019-04-03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "medenagan";
|
||||
repo = "window-corner-preview";
|
||||
rev = "a95bb1389d94474efab7509aac592fb58fff6006";
|
||||
sha256 = "03v18j9l0fb64xrg3swf1vcgl0kpgwjlp8ddn068bpvghrsvgfah";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
passthru = {
|
||||
extensionUuid = "window-corner-preview@fabiomereu.it";
|
||||
extensionPortalSlug = "window-corner-preview";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/share/gnome-shell/extensions
|
||||
cp -r "window-corner-preview@fabiomereu.it" $out/share/gnome-shell/extensions
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "GNOME Shell extension showing a video preview on the corner of the screen";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ ];
|
||||
homepage = "https://github.com/medenagan/window-corner-preview";
|
||||
broken = lib.versionAtLeast gnome-shell.version "3.32"; # Doesn't support 3.34
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user