分享Firefox扩展中keyconfig配置Firefox快捷键常用代码

本文分享了Firefox浏览器中通过keyconfig扩展配置的各种实用快捷键代码,包括关闭、切换、复制标签页等多种操作,帮助用户提高浏览效率。

分享Firefox扩展中keyconfig配置Firefox快捷键常用代码

1、关闭左边标签页:

代码:

var tab = gBrowser.mCurrentTab.boxObject.previousSibling;
if(tab) gBrowser.removeTab(tab);

2、关闭右边标签页:

代码

var tab = gBrowser.mCurrentTab.boxObject.nextSibling;
if(tab) gBrowser.removeTab(tab);

3、复制当前标签页:

代码

var oldHistory = gBrowser.webNavigation.sessionHistory;
gBrowser.selectedTab = gBrowser.addTab("about:blank");
var newHistory = gBrowser.webNavigation.sessionHistory;
newHistory.QueryInterface(Components.interfaces.nsISHistoryInternal);

for (var i = 0; i < oldHistory.count; i++) { newHistory.addEntry(oldHistory.getEntryAtIndex(i, false), true); }

if(oldHistory.count) gBrowser.webNavigation.gotoIndex(oldHistory.index);

4、下一个标签页(与ctrl+pagedown同):

代码

gBrowser.mTabContainer.advanceSelectedTab(1,true);

5、上一个标签页(与ctrl+pageup同):

代码

gBrowser.mTabContainer.advanceSelectedTab(-1,true);

6、重新载入其它标签页:

代码

var browsers = gBrowser.browsers;
var i = 0;
var l = browsers.length;
var x = gBrowser.mCurrentTab._tPos;

for(; i < l; i++)
if(i != x) try { browsers[i].reload(); } catch(err){};

7、重新载入所有标签页:

代码

gBrowser.reloadAllTabs();

8、重新载入左边所有标签页:

代码

var browsers = gBrowser.browsers;
var i = gBrowser.mCurrentTab._tPos - 1;
var l = -1;

for(; i > l; i--)
try { browsers[i].reload(); } catch(err){};

9、重新载入右边所有标签页:

代码

var browsers = gBrowser.browsers;
var i = gBrowser.mCurrentTab._tPos + 1;
var l = browsers.length;

for(; i < l; i++)
try { browsers[i].reload(); } catch(err){};

10、定位到最左边标签页:

代码

gBrowser.selectedTab = gBrowser.mTabContainer.firstChild;

11、定位到最右边标签页:

代码

gBrowser.selectedTab =
gBrowser.tabContainer.childNodes[gBrowser.tabContainer.childNodes.length-1];

12、关闭其他标签页:

代码

gBrowser.removeAllTabsBut(gBrowser.mCurrentTab);

13、关闭所有标签页:

代码

gBrowser.removeAllTabsBut(gBrowser.mCurrentTab);
gBrowser.removeCurrentTab();

14、定位到左邻标签页(不能循环):

代码

gBrowser.mTabContainer.advanceSelectedTab(-1);

15、定位到右邻标签页(不能循环):

代码

gBrowser.mTabContainer.advanceSelectedTab(1);

16、在当前标签页右边新建标签页:

代码

var x = gBrowser.mCurrentTab._tPos + 1;
gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addTab("about:blank"), x);

17、高亮关键词后,新建标签页后台搜索(以当前搜索栏搜索引擎,下同):

代码

BrowserSearch.loadSearch(getBrowserSelection(), true);

18、新建标签页前台搜索:

代码

gBrowser.mPrefs.setBoolPref("browser.tabs.loadInBackground",false);
BrowserSearch.loadSearch(getBrowserSelection(), true);
gBrowser.mPrefs.setBoolPref("browser.tabs.loadInBackground",true);

19、在当前标签页搜索:

代码

BrowserSearch.loadSearch(getBrowserSelection(), false);

20、在新窗口打开about:config:

代码

toOpenWindowByType('pref:pref', 'About:config');

21、书签管理器对话框:

代码

toOpenWindowByType('bookmarks:manager',
'chrome://browser/content/bookmarks/bookmarksManager.xul');

22、工具—选项对话框:

代码

openPreferences();

23、附加软件对话框:

代码

toOpenWindowByType('Add-ons:manager',
'chrome://mozapps/content/extensions/extensions.xul');

24、scrapbook扩展“获取前进行编辑”命令:

代码

if(sbPageEditor.TOOLBAR.hidden ||
document.getElementById("ScrapBookToolbox").hidden) {
sbPageEditor.init();
} else {
sbPageEditor.exit(true);
}


25、显示/隐藏书签工具栏:

代码

const bmToolbar = document.getElementById("PersonalToolbar");
bmToolbar.collapsed = !bmToolbar.collapsed;

26、显示/隐藏菜单栏:

代码

var mb = document.getElementById("toolbar-menubar");
mb.collapsed = !mb.collapsed;

27、页面向右滚动:

代码

goDoCommand('cmd_scrollRight');

28、页面向左滚动:

代码

goDoCommand('cmd_scrollLeft');

29、页面向上滚动:

代码

goDoCommand('cmd_scrollLineUp');

30、页面向下滚动:

代码

goDoCommand('cmd_scrollLinedown');

31、向下翻页(与space同):

代码

goDoCommand('cmd_scrollPageDown');

32、向上翻页(与shift+space同):

代码

goDoCommand('cmd_scrollPageup');

33、回到页首(与home同):

代码

goDoCommand('cmd_scrollTop');

34、回到页尾(与end同):

代码

goDoCommand('cmd_scrollBottom');

35、关闭所有正在运行的Firefox程序:

代码

goQuitApplication();

36、拷贝当前标签页标题:

代码

Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper)
.copyString(content.document.title);

37、在当前标签打开网页:

代码

gBrowser.loadURI('http://www.google.com/');

38、在新标签打开网页:(原来还可以用来打开about:config。Great!)

代码

var myUrl = "http://www.baidu.com";
var ff= document.getElementById("content");
var tab = ff.addTab(myUrl);
ff.selectedTab = tab;

39、以定义的书签关键词在当前标签打开书签(对运行bookmarklets非常有用):

代码

if(window.loadURI) loadURI(getShortcutOrURI('填入你定义的关键词',{}));

40、类似paste and go,节省一次enter键:

代码

var url = readFromClipboard(); if (url) content.location = url;

41、跟踪下一链接(论坛的Sprill朋友提供,谢谢。下同。):

代码

var document = window._content.document;
var links = document.links;
for(i = 0; i < links.length; i++) {
if ((links[i].text == '下一頁') ||(links[i].text == '下一页') ||(links[i].text == '下一页>')||(links[i].text == '下一页 »') ||(links[i].text == '下一页>>') || (links[i].text == '[下一页]') || (links[i].text == '【下一页】') ||(links[i].text == 'Next') || (links[i].text == 'next') || (links[i].text == '››') || (links[i].text == '>')) document.location = links[i].href;
}


42、跟踪上一链接:

代码

var document = window._content.document;
var links = document.links;
for(i = 0; i < links.length; i++) {
if ((links[i].text == '上一頁') ||(links[i].text == '上一页') ||(links[i].text == '<上一页')||(links[i].text == '« 上一页') ||(links[i].text == '<<上一页') || (links[i].text == '[上一页]') || (links[i].text == '【上一页】') ||(links[i].text == 'Previous') || (links[i].text == 'Prev') ||(links[i].text == 'previous') || (links[i].text == 'prev') || (links[i].text == '‹‹') || (links[i].text == '<')) document.location = links[i].href;
}

PS:补充

关闭当前标签并定位到左边的标签:

代码

var tab = gBrowser.mCurrentTab; if(tab.previousSibling)
gBrowser.mTabContainer.selectedIndex--;
gBrowser.removeTab(tab);

关闭当前标签并定位到右边的标签:

代码

var tab = gBrowser.mCurrentTab; if(tab.nextSibling)
gBrowser.mTabContainer.selectedIndex++;
gBrowser.removeTab(tab);

还有一个,类似paste and go,在新标签页后台打开剪贴板中的url地址。很是喜欢,原代码已经失效了,试着修改了一下,可以工作了。

代码

var url = readFromClipboard(); if (url) content.location= gBrowser.addTab(url);

高亮关键词使用Google后台搜索

代码

var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
var submission = ss.defaultEngine.getSubmission(getBrowserSelection(), null);
gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, true, false);

高亮关键词Google前台搜索:

代码

var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
var submission = ss.defaultEngine.getSubmission(getBrowserSelection(), null);
gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, false, false);

新标签页前台打开:

代码

var paste = readFromClipboard();
if(!paste) return;
gBrowser.selectedTab = gBrowser.addTab(paste);

撤销关闭标签页:
CODE
gBrowser.undoRemoveTab();

快退

代码

if (gBrowser.sessionHistory.index > 0)
gBrowser.gotoIndex(0);


快进

代码

var nav = gBrowser.webNavigation;
var hist = nav.sessionHistory;
nav.gotoIndex(hist.count - 1);

跟踪下一链接的脚本
nextpage:

代码

var document = window._content.document;
var links = document.links;
for(i = 0; i < links.length; i++) {
if(/^([^\d^\w.]*(下一页|下一頁|next)[^\d^\w]*|\s*(»|>+|›+)\s*)$/i.test(links[i].text))
document.location = links[i].href;
}


prevpage:

代码

var document = window._content.document;
var links = document.links;
for(i = 0; i < links.length; i++) {
if(/^([^\d^\w.]*(上一頁|上一页|previous|prev)[^\d^\w]*|\s*(«|<+|‹+)\s*)$/i.test(links[i].text))
document.location = links[i].href;
}

复制当前页URL:
代码
var gClipboardHelper=Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
gClipboardHelper.copyString(window._content.location.href);

开/关查找栏

代码

gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();

通过热键能重启ff3, 并且恢复重启前tabs

代码

const nsIAppStartup = Components.interfaces.nsIAppStartup;

// Notify all windows that an application quit has been requested.
var os = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
.createInstance(Components.interfaces.nsISupportsPRBool);
os.notifyObservers(cancelQuit, "quit-application-requested", null);

// Something aborted the quit process.
if (cancelQuit.data)
return;

// Notify all windows that an application quit has been granted.
os.notifyObservers(null, "quit-application-granted", null);

// Enumerate all windows and call shutdown handlers
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var windows = wm.getEnumerator(null);
while (windows.hasMoreElements()) {
var win = windows.getNext();
if (("tryToClose" in win) && !win.tryToClose())
return;
}
Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup)
.quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);

打开配置文件夹

代码

Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsILocalFile).launch();

复制标签页的URL地址

代码

var gClipboardHelper=Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
gClipboardHelper.copyString(window._content.location.href);

复制标签页的标题

代码

Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper)
.copyString(content.document.title);

同时复制标签页标题和url(格式“标题” - "URL")

代码

Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper)
.copyString(content.document.title + " - " + content.location);

开/关菜单栏

代码

var toolbar = document.getElementById("toolbar-menubar");
toolbar.collapsed = !toolbar.collapsed;
document.persist(toolbar.id, "collapsed");

开/关导航栏

代码

var toolbar = document.getElementById("nav-bar");
toolbar.collapsed = !toolbar.collapsed;
document.persist(toolbar.id, "collapsed");

开/关书签工具栏

代码

var toolbar = document.getElementById("PersonalToolbar");
toolbar.collapsed = !toolbar.collapsed;
document.persist(toolbar.id, "collapsed");

或者

goToggleToolbar('PersonalToolbar','');

开/关标签栏

代码

function tbtoggle (thisBTN)
{thisBTN.checked = !thisBTN.checked;
if ( thisBTN.checked )
{gBrowser.setStripVisibilityTo(false);
gBrowser.mPrefs.setBoolPref("browser.tabs.forceHide", true);}
else
{gBrowser.setStripVisibilityTo(true);
gBrowser.mPrefs.setBoolPref("browser.tabs.forceHide", false);}}
tbtoggle(this);

开/关Google Toolbar

代码

goToggleToolbar('gtbToolbar','toggle_taskbar');

开/关状态栏

代码

goToggleToolbar('status-bar','toggle_taskbar');

当鼠标放在链接上时,复制链接地址

代码

if(XULBrowserWindow.overLink)
Components.classes["@mozilla.org/widget/clipboardhelper;1"].
getService(Components.interfaces.nsIClipboardHelper).copyString(XULBrowserWindow.

overLink);

复制链接文字 - 链接地址

代码

if(XULBrowserWindow.overLink)
for (var i = 0, links = content.document.links, l = links.length ; i < l; i++)
if(links[i].href == XULBrowserWindow.overLink) {
Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper)
.copyString(links[i].text + " - " + links[i].href);

break;
}  

在侧边栏开/关在线版的google talk

代码

var sidebar_box = document.getElementById('sidebar-box');
if(sidebar_box.hidden) {openWebPanel("Google Talk","http://talkgadget.google.com/talkgadget/popout");}
else {toggleSidebar();}

<think>嗯,用户现在问的是如何在Weston中为应用程序配置快捷键。我需要先回想一下Weston的相关知识。Weston是Wayland的参考合成器,通常用于嵌入式系统或者作为测试环境。用户之前的问题是关于工具栏消失的解决方法,现在转向了快捷键配置,可能他们在开发或定制自己的桌面环境。 首先,Weston本身是否支持配置快捷键?我记得Weston的配置主要是通过weston.ini文件进行的。在官方文档中,应该有关于键盘绑定和启动器(launchers)的部分。用户可能希望定义一些快捷键来启动应用程序,比如Ctrl+Alt+T打开终端,或者切换工作区之类的操作。 接下来,我需要确认Weston的配置方式。例如,在weston.ini中,可以定义[keybind]部分来设置快捷键。比如绑定Modifier+键来执行某个命令。同时,Weston的shell可能有不同的实现,比如desktop-shell或其他自定义shell,不同的shell可能支持不同的快捷键配置。 用户可能遇到的问题包括:如何正确编写配置文件,如何确定可用的快捷键组合,如何处理环境变量或路径问题,以及如何调试无效的快捷键。需要给出具体的配置示例,比如绑定一个启动终端或浏览器的命令,并说明每个参数的作用。 另外,可能需要提到使用第三方工具,比如sxhkd,但这可能超出了Weston本身的配置范围。用户可能希望仅通过Weston的配置来实现,而不依赖额外工具。不过,作为替代方案,也可以提一下,但重点应放在Weston原生的方法上。 还需要注意Weston的版本差异,不同版本的配置方式可能有变化。例如,某些选项可能在旧版本中可用,而在新版本中被弃用。因此,建议用户查阅对应版本的文档。 可能还需要提醒用户关于权限的问题,比如是否以正确的用户权限运行Weston,或者环境变量是否正确设置,尤其是当快捷键涉及启动图形应用程序时,可能需要设置DISPLAY或WAYLAND_DISPLAY变量。 总结回答的结构:首先介绍通过weston.ini配置快捷键的方法,给出示例,比如启动终端、浏览器等。然后讲解更高级的配置,比如工作区切换、调整音量等。接着可能提到使用环境变量和注意事项,比如调试快捷键的问题。最后,可以提到替代方案,如使用第三方工具,但强调Weston的原生支持方法。</think>在 Weston 中为应用程序配置快捷键,可以通过修改 Weston 的配置文件 `weston.ini` 实现,主要依赖 `keybind` 模块和 `launcher` 功能。以下是具体方法和示例: --- ### **1. 基础配置:通过 `weston.ini` 定义快捷键** Weston 支持通过 `[keybind]` 模块绑定快捷键,语法为: `<Modifiers>+<Key> = command` #### **示例 1:启动终端** ```ini [keybind] # 绑定 Ctrl+Alt+T 启动 weston-terminal Control+Mod1+t = exec weston-terminal ``` #### **示例 2:启动浏览器** ```ini [keybind] # 绑定 Super+W 启动 Firefox(需已安装) Mod4+w = exec firefox ``` #### **示例 3:关闭当前窗口** ```ini [keybind] # 绑定 Alt+F4 关闭聚焦的窗口 Mod1+F4 = close ``` --- ### **2. 高级配置:自定义脚本与复杂操作** #### **启动带参数的应用程序** ```ini [keybind] # 绑定 Super+E 启动文件管理器并打开特定目录 Mod4+e = exec nautilus --browser ~/Documents ``` #### **切换工作区(需支持多工作区)** ```ini [keybind] # 绑定 Ctrl+Alt+Right 切换到下一个工作区 Control+Mod1+Right = workspace next # 绑定 Ctrl+Alt+Left 切换到上一个工作区 Control+Mod1+Left = workspace back ``` #### **调整音量(依赖系统工具)** ```ini [keybind] # 绑定音量增减(需 pactl 或 amixer) XF86AudioRaiseVolume = exec pactl set-sink-volume @DEFAULT_SINK@ +5% XF86AudioLowerVolume = exec pactl set-sink-volume @DEFAULT_SINK@ -5% XF86AudioMute = exec pactl set-sink-mute @DEFAULT_SINK@ toggle ``` --- ### **3. 使用 `launcher` 配置快速启动栏(Dock)** 通过 `[launcher]` 模块在工具栏添加图标,并支持点击或快捷键触发。 #### **示例:添加 Firefox 启动器** ```ini [launcher] icon=/usr/share/icons/hicolor/48x48/apps/firefox.png path=/usr/bin/firefox # 绑定快捷键 Super+F key=Mod4+f ``` --- ### **4. 环境变量与路径注意事项** - **应用程序路径**:确保命令路径正确(可通过 `which <应用名>` 检查)。 - **Wayland/XWayland 兼容性**:若应用基于 X11(如 Chrome),需通过 `XWAYLAND` 环境变量启动: ```ini [keybind] Mod4+g = exec env XWAYLAND=1 google-chrome ``` - **权限问题**:Weston 需以有权限的用户运行(避免使用 `sudo`)。 --- ### **5. 调试快捷键** #### **检查 Weston 日志** 启动 Weston 时启用调试日志: ```bash weston --log=/tmp/weston.log # 触发快捷键后检查日志 grep "keybind" /tmp/weston.log ``` #### **验证键位名称** 使用 `weston-keyboard` 工具获取键名: ```bash weston-keyboard # 按目标键位,记录输出的键名(如 `t`, `F4`) ``` --- ### **6. 替代方案:第三方工具** 若 Weston 原生配置不满足需求,可结合以下工具: - **sxhkd**:独立的热键守护进程(需在 Weston 中启动): ```ini [keybind] Mod4+q = exec sxhkd -c ~/.config/sxhkd/sxhkdrc ``` - **自定义脚本**:通过快捷键调用 Bash/Python 脚本实现复杂逻辑。 --- ### **完整配置示例** ```ini [core] shell=desktop-shell.so [keybind] # 基础应用 Control+Mod1+t = exec weston-terminal Mod4+e = exec nautilus --browser ~/Documents Mod4+w = exec firefox # 系统控制 XF86AudioRaiseVolume = exec pactl set-sink-volume @DEFAULT_SINK@ +5% XF86AudioLowerVolume = exec pactl set-sink-volume @DEFAULT_SINK@ -5% Mod4+F1 = exec systemctl suspend # 工作区 Control+Mod1+Right = workspace next Control+Mod1+Left = workspace back [launcher] icon=/usr/share/icons/hicolor/48x48/apps/firefox.png path=/usr/bin/firefox key=Mod4+f ``` --- ### **常见问题** 1. **快捷键无效**: - 检查键名拼写(如 `Mod1`=Alt,`Mod4`=Super/Windows 键)。 - 确保命令路径正确(使用绝对路径更可靠)。 2. **冲突**:避免与其他应用或 Weston 默认快捷键冲突(默认绑定见[文档](https://gitlab.freedesktop.org/wayland/weston/-/blob/master/data/weston.ini.in))。 3. **Wayland 限制**:部分 X11 工具(如 `xdotool`)在 Wayland 中不可用,需改用 `ydotool` 或 `wtype`。 通过以上配置,可灵活实现 Weston 环境下的快捷键定制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值