请注意

请注意

我想通过添加一些 Firefox 插件来改进我的无人值守脚本,但是我找不到方法,

有人可以帮忙找出答案吗?

示例:(想要安装 adblockPlus 插件并设置新的默认网页)

wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
firefox -silent -install-global-extension addon-1865-latest.xpi -setDefaultBrowser www.google.es

提前致谢。

答案1

使用你的方法

gksudo firefox -install-global-extension addon-1865-latest.xpi似乎对你有用。这将为你系统上的所有用户安装扩展。

要仅为您的用户安装扩展,请使用扩展路径作为参数

firefox addon-1865-latest.xpi

Install但您仍然需要单击该按钮!

自动安装

Firefox不需要插件文件名,而是需要插件的标识符作为包名。这意味着,如果您打算在无需用户干预的情况下安装插件,则需要将其提取到以插件标识符字符串而不是插件名称命名的文件夹中。

标识符字符串可以在插件安装清单文件的第一行找到install.rdf,它看起来像这样:<em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>。(包括花括号)内的所有内容{}都是标识符。

要使插件正常工作,您需要提取包,将包含文件的文件夹重命名为插件标识符字符串,然后将其放在全局插件文件夹或用户插件文件夹中。

全局插件安装

如果您想要为系统中的所有用户自动安装扩展,您需要提取它,将包含插件的文件夹重命名为插件的 ID 字符串,然后将其复制到firefox全局扩展文件夹/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/,这样,您在那里使用的任何内容都会在用户打开时自动调用firefox

用户特定安装

如果您想要自动为系统中的一个用户安装扩展,您需要提取它,将包含插件的文件夹重命名为插件的 ID 字符串,然后将其复制到firefox用户扩展文件夹/home/user_name/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/(如果不存在则创建它),您在那里使用的任何东西都会在用户打开时自动调用firefox

如何准备插件以进行自动安装 - 示例

在你的主文件夹中创建一个extensions文件夹并将插件下载到其中

mkdir ~/extensions
cd ~/extensions
wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi

提取并删除原件

unzip ~/extensions/addon-1865-latest.xpi
rm ~/extensions/addon-1865-latest.xpi

读取文件中的第一行install.rdf以获取插件的 id(在本例中它将是 {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d})。并创建一个同名的文件夹

mkdir ~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

将文件夹中的所有文件移动extensions到新创建的文件夹中~/extensions/{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d},然后就可以通过移动文件{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}夹进行安装,如所述,进行本地安装或全局安装。

如何设置默认主页

要在不使用 Firefox 中的首选项的情况下更改主页,您必须编辑~/.mozilla/firefox/*.default/prefs.js(为您的用户创建的*.default文件夹在哪里~/.mozilla/firefox)并将此行添加到其末尾

user_pref("browser.startup.homepage", "http://uptechtalk.com");

或使用此命令

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> ~/.mozilla/firefox/*.default/prefs.js

您需要在关闭后执行此操作firefox,否则程序将在退出时覆盖设置。

如果您的用户尚未使用firefox,而您想为所有新用户设置主页(全局设置主页),请使用此命令

echo "user_pref("browser.startup.homepage", "http://uptechtalk.com");" >> /etc/xul-ext/ubufox.js

关于您的问题的评论

-silent不存在,xpi则系统会提示您安装该扩展,并且您必须单击按钮来安装它;

-setDefaultBrowser不会设置你的主页,它将使firefox你的浏览器成为默认浏览器

答案2

这是有问题的,因为在不同版本的 Firefox 中,不同的功能可以工作,有时甚至无法工作。对于较新的版本,您只需将 .xpi 重命名为<addon id>.xpi并将其放在扩展文件夹中。当您随后启动 Firefox 时,系统会要求您接受您在此处添加的所有插件的安装。

这里有一些可以让您的生活更轻松的 BASH 函数。

EXTENSIONS_SYSTEM='/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/'
EXTENSIONS_USER=`echo ~/.mozilla/firefox/*.default/extensions/`

# -------------------------- xpi tools ---------------------------------

get_addon_id_from_xpi () { #path to .xpi file
    addon_id_line=`unzip -p $1 install.rdf | egrep '<em:id>' -m 1`
    addon_id=`echo $addon_id_line | sed "s/.*>\(.*\)<.*/\1/"`
    echo "$addon_id"
}

get_addon_name_from_xpi () { #path to .xpi file
    addon_name_line=`unzip -p $1 install.rdf | egrep '<em:name>' -m 1`
    addon_name=`echo $addon_name_line | sed "s/.*>\(.*\)<.*/\1/"`
    echo "$addon_name"
}

# Installs .xpi given by relative path
# to the extensions path given
install_addon () {
    xpi="${PWD}/${1}"
    extensions_path=$2
    new_filename=`get_addon_id_from_xpi $xpi`.xpi
    new_filepath="${extensions_path}${new_filename}"
    addon_name=`get_addon_name_from_xpi $xpi`
    if [ -f "$new_filepath" ]; then
        echo "File already exists: $new_filepath"
        echo "Skipping installation for addon $addon_name."
    else
        cp "$xpi" "$new_filepath"
    fi
}

让我们安装 Adblock..

wget https://addons.mozilla.org/firefox/downloads/latest/1865/addon-1865-latest.xpi
install_addon addon-1865-latest.xpi "$EXTENSIONS_USER"

答案3

对于最新版本的 Firefox,该过程已简化很多!

  1. 解压缩extension.xpi
  2. 阅读applications.gecko.idmanifest.json
  3. 重命名extension.xpi<ID>.xpi
  4. 复制到列出的标准安装文件夹之一这里

答案4

请注意

从 Firefox 74 开始,不再可能执行此任务。

不要再花费大量时间来尝试完成这项工作了!

相关内容