ria*_*ria 9 linux firefox remote user-profiles multiple-instances
我有几个运行着几个不同配置文件的 Firefox 实例。其中包括名称为“软件”和“测试”的配置文件。
我正在尝试从 bash 脚本打开一个 URL,让它在配置文件“test”中打开,如下所示:
firefox -P "test" http://www.example.org/
Run Code Online (Sandbox Code Playgroud)
但是无论如何都会在配置文件“软件”中打开它。有任何想法吗?
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100308 Iceweasel/3.5.8(如 Firefox/3.5.8)
不,这不是权限问题,我所有的配置文件目录都完全在我的权限之下:
root@przehyba:~/.mozilla# ls -ld firefox/
drwx------ 13 miernik miernik 4096 Mar 11 09:15 firefox/
root@przehyba:~/.mozilla# ls -ld firefox/*
drwxr-xr-x 9 miernik miernik 4096 Mar 12 11:29 firefox/info
-rw-r--r-- 1 miernik miernik 560 Mar 11 09:15 firefox/profiles.ini
drwxr-xr-x 10 miernik miernik 4096 Mar 16 11:51 firefox/software
drwxr-xr-x 9 miernik miernik 4096 Mar 11 09:14 firefox/tech
drwxr-xr-x 11 miernik miernik 4096 Mar 15 22:48 firefox/test
root@przehyba:~/.mozilla#
Run Code Online (Sandbox Code Playgroud)
小智 7
抱歉,我迟到了 3 年才回答,我刚刚对这个话题感兴趣并发现了这个问题。
我没有在任何地方找到文档化的解决方案,所以我查看了源代码,这是一个非常相关的部分:http : //dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
不幸的是,行尾的 nullptr 表示 profile 参数没有传递给 SendCommandLine 函数,因此无法选择正确的 firefox 窗口来发送 openurl 消息。
但是,我们看到用户名正在被传递,并且用户名正在从 LOGNAME 环境变量中初始化。基于此,我想出了以下解决方案:
FOX_PROFILE=脸书 导出 LOGNAME=errge.$FOX_PROFILE /opt/firefox/firefox -profile ~/.mozilla_profiles/$FOX_PROFILES "$@"
第一次运行时,它会启动一个新实例,并且 ~/.mozilla_profiles/facebook 目录必须存在,
第二次运行时,如果 facebook 个人资料已经在运行,它会正确连接到它,
它可以将命令正确发送到多个不同的运行配置文件(当然,您必须在不同脚本的第一行中更改 FOX_PROFILE 参数)。
我在 Linux 上使用 Firefox 26 对此进行了测试,并且可以正常工作。
或者,这是您可能想要或不想使用的我的成熟解决方案:
#!/bin/bash 设置 -e FOX=/opt/firefox/firefox 留言=$@ if [ -z "$FOX_PROFILE" ]; 然后 如果 [ -z "${MESSAGE}" ]; 然后 FOX_PROFILE=默认 别的 FOX_PROFILE=$(kdialog --default default --menu "-- ${MESSAGE} --" 默认默认 google google facebook facebook errge errge spam spam) 菲 菲 导出 FOX_PROFILE # 这个hack是需要的,因为firefox远程命令行发送 # 忽略配置文件参数。参见 nsAppRunner.cpp:1505。 导出 LOGNAME=errge.$FOX_PROFILE # 使用后台执行而不是exec,所以行为是 # 配置文件已经在运行时和刚刚运行时保持一致 # 启动。 $FOX -profile ~/.mozilla_profiles/$FOX_PROFILE "$@" # 巨大的成功。 退出 0
如果您在没有任何参数的情况下运行脚本,它会自动选择默认配置文件,但您可以通过在 shell 中手动设置 FOX_PROFILE 来覆盖它。如果在命令行中传递了一个 URL,它总是要求提供一个配置文件来打开它,这是因为我主要从我的聊天和电子邮件程序中点击,在这种情况下我想总是选择一个配置文件(谷歌日历垃圾邮件、生日垃圾邮件的 Facebook 等)。当然你可以改变逻辑以适应你的使用风格,这只是一个例子,重要的知识是 LOGNAME 技巧。
当然,您必须确保此包装脚本是在您的机器上启动浏览器的唯一方法。因为如果您在没有正确设置 LOGNAME 的情况下打开配置文件,那么您将无法再与该配置文件通信。我通过多个符号链接名称将此脚本作为我的路径中的第一个,例如 x-www-browser、firefox、sensible-browser,并将其也放入 BROWSER 环境变量中。如何做到这一点完全取决于您的 GNU/Linux 发行版。
归档时间: |
|
查看次数: |
4394 次 |
最近记录: |