"gnome-shell-extensions" 无法上传完整目录

"gnome-shell-extensions" Not able to upload the complete directory

首先,很抱歉,如果这不是该问的礼仪场所。

最近,我尝试将扩展 https://extensions.gnome.org/extension/2935/control-blur-effect-on-lock-screen/ 上传到 extensions.gnome.org 网站。

这个 link 说要 zip -j https://extensions.gnome.org/upload/ 创建 zip 文件。然后上传。

当我使用 zip -r 制作 zip 文件并尝试上传时.. returns 错误是 metadata.json 文件未加载并且无法上传,尽管此文件存在。

我必须 zip -r 才能兼容使用命令 gnome-extensions install nameOfTheExtension

安装的 shell 扩展

据我所知,从同一网站下载的一些 gnome-shell-扩展程序有这个问题。我的意思是当您使用 zip -r.

创建一个 zip 文件时

我怎样才能做到这一点?

这些文件必须在 Zip 的顶层:

  • metadata.json
  • extension.js
  • prefs.js(可选文件)
  • stylesheet.css(可选文件)

这是唯一的要求。 -r-j 函数由 zip --help:

解释

-j junk (don't record) directory names

-r recurse into directories

如果您所有的扩展文件都在一个顶级目录中,那么 -j 将起作用,否则它可能会破坏您的目录层次结构。您可以使用 unzip -l.

检查 zip 的布局

通常你会用 zip -r extension@domain.zip [path with metadata.json]:

压缩
$ ls
extensions.js  metadata.json

$ zip -r extension@domain.zip .
  adding: metadata.json (deflated 33%)
  adding: extension.js (deflated 55%)

$ unzip -l extension@domain.zip 
Archive:  extension@domain.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
      194  04-25-2020 17:47   metadata.json
      864  04-25-2020 17:47   extension.js
---------                     -------
     1058                     2 files

为了补充 andy.holmes 的建议,打包扩展(其中可能有一个目录)的最简单方法是从扩展目录中压缩它。在我的例子中,目录是 schemas.

目录结构:

└── my-extension@domain.com
    ├── extension.js
    ├── metadata.json
    └── schemas
        ├── gschemas.compiled
        └── org.gnome.shell.extensions.my-extension.gschema.xml

压缩:

cd my-extension@domain.com
zip -r my-extension@domain.com.zip *

用于构建 zip 的简短 bash 脚本:

#!/bin/bash
set -e

TMP_EXTENSION=/tmp/my-extension

# Cleanup previous build
rm -rf $TMP_EXTENSION
rm -f my-extension@domain.com.zip

cp -r my-extension@domain.com $TMP_EXTENSION

# Remove redundant content
rm -rf $TMP_EXTENSION/.git/

cd $TMP_EXTENSION
zip -r my-extension@domain.zip *