用于安装 GNOME Shell 扩展的命令行工具

anl*_*lar 11 command-line ubuntu gnome utilities gnome-shell

是否可以在不使用GNOME Shell 集成浏览器插件的情况下从https://extensions.gnome.org/安装扩展?

我正在寻找一个能够从上述网站搜索和安装扩展的工具,例如:

$ gnome-extensions search <keyword>
$ gnome-extensions install <extension-id>
Run Code Online (Sandbox Code Playgroud)

blu*_*ray 9

解决方案一:

如果您有扩展程序网址,请使用以下内容。在这里,我将扩展放入一个数组中。将要安装的扩展程序的 URL 放入此数组中。

#!/bin/bash

array=( https://extensions.gnome.org/extension/1328/disable-workspace-switch-animation/
https://extensions.gnome.org/extension/1532/lock-keys/
https://extensions.gnome.org/extension/104/netspeed/
https://extensions.gnome.org/extension/2182/noannoyance/
https://extensions.gnome.org/extension/1460/vitals/ )

for i in "${array[@]}"
do
    EXTENSION_ID=$(curl -s $i | grep -oP 'data-uuid="\K[^"]+')
    VERSION_TAG=$(curl -Lfs "https://extensions.gnome.org/extension-query/?search=$EXTENSION_ID" | jq '.extensions[0] | .shell_version_map | map(.pk) | max')
    wget -O ${EXTENSION_ID}.zip "https://extensions.gnome.org/download-extension/${EXTENSION_ID}.shell-extension.zip?version_tag=$VERSION_TAG"
    gnome-extensions install --force ${EXTENSION_ID}.zip
    if ! gnome-extensions list | grep --quiet ${EXTENSION_ID}; then
        busctl --user call org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions InstallRemoteExtension s ${EXTENSION_ID}
    fi
    gnome-extensions enable ${EXTENSION_ID}
    rm ${EXTENSION_ID}.zip
done
Run Code Online (Sandbox Code Playgroud)

解决方案2:

如果您有扩展程序的 UUID,请使用以下内容。在这里,我将 UUID 放入一个数组中。将要安装的扩展的 UUID 放入此数组中。

#!/bin/bash

array=( disableworkspaceanim@owilliams.mixxx.org lockkeys@fawtytoo netspeed@hedayaty.gmail.com noannoyance@daase.net Vitals@CoreCoding.com )

for i in "${array[@]}"
do
    VERSION_TAG=$(curl -Lfs "https://extensions.gnome.org/extension-query/?search=${i}" | jq '.extensions[0] | .shell_version_map | map(.pk) | max')
    wget -O ${i}.zip "https://extensions.gnome.org/download-extension/${i}.shell-extension.zip?version_tag=$VERSION_TAG"
    gnome-extensions install --force ${EXTENSION_ID}.zip
    if ! gnome-extensions list | grep --quiet ${i}; then
        busctl --user call org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions InstallRemoteExtension s ${i}
    fi
    gnome-extensions enable ${i}
    rm ${EXTENSION_ID}.zip
done
Run Code Online (Sandbox Code Playgroud)

奖金(肉桂):

如果您有机会使用 Linux Mint (Cinnamon),那么您可以使用以下脚本。它下载扩展并将它们放在正确的目录中。

#!/bin/bash

array=( https://cinnamon-spices.linuxmint.com/applets/view/83
    https://cinnamon-spices.linuxmint.com/applets/view/106
    https://cinnamon-spices.linuxmint.com/applets/view/222
    https://cinnamon-spices.linuxmint.com/applets/view/238
    https://cinnamon-spices.linuxmint.com/applets/view/284
    https://cinnamon-spices.linuxmint.com/applets/view/303 )

for i in "${array[@]}"
do
    DOWNLOAD_URL=$(curl -Lfs ${i} | grep -m1 -Po '(?<=href=")[^"]*zip')
    FILE_NAME=$(echo $DOWNLOAD_URL | grep -Eo "([^\/]+$)")
    wget $DOWNLOAD_URL
    unzip -o "$FILE_NAME" -d "$HOME/.local/share/cinnamon/applets"
    rm "${FILE_NAME}"     
done
Run Code Online (Sandbox Code Playgroud)

您可能已经注意到扩展尚未启用。这是因为您需要在 后添加类似以下行的内容done

gsettings set org.cinnamon enabled-applets "['panel1:left:0:menu@cinnamon.org:0', 'panel1:left:1:show-desktop@cinnamon.org:1', 'panel1:left:2:grouped-window-list@cinnamon.org:2', 'panel1:right:4:systray@cinnamon.org:3', 'panel1:right:6:xapp-status@cinnamon.org:4', 'panel1:right:7:notifications@cinnamon.org:5', 'panel1:right:8:printers@cinnamon.org:6', 'panel1:right:9:removable-drives@cinnamon.org:7', 'panel1:right:10:keyboard@cinnamon.org:8', 'panel1:right:11:favorites@cinnamon.org:9', 'panel1:right:12:network@cinnamon.org:10', 'panel1:right:13:sound@cinnamon.org:11', 'panel1:right:14:power@cinnamon.org:12', 'panel1:right:15:calendar@cinnamon.org:13', 'panel1:right:16:azan@fahri.nurul.id:14', 'panel1:right:3:temperature@fevimu:15', 'panel1:right:2:download-and-upload-speed@cardsurf:16', 'panel1:right:17:betterlock:17', 'panel1:right:5:turn-off-monitor@zablotski:18']"
Run Code Online (Sandbox Code Playgroud)

的值enabled-applets因用户而异。它用于启用小程序。

现在我将向您展示如何创建这个字符串。放置扩展后$HOME/.local/share/cinnamon/applets(使用奖励脚本),转到系统设置>首选项>小程序并将它们添加到面板。如果您想使用 重新排列面板中的小程序Panel edit mode,请继续执行。现在运行:

gsettings get org.cinnamon enabled-applets
Run Code Online (Sandbox Code Playgroud)

从现在开始,您可以在 中使用该字符串gsettings set org.cinnamon enabled-applets。但是,请注意,每次在面板中添加或删除小程序,或者移动小程序在面板中的位置时,字符串都会发生更改


小智 7

GNOME Shell 扩展安装程序就是您正在寻找的: https ://github.com/brunelli/gnome-shell-extension-installer

截屏