是否有可能在 Windows 中更改 Firefox 最大化按钮的位置?

是否有可能在 Windows 中更改 Firefox 最大化按钮的位置?

我想改变 Firefox 的最小化/调整大小/最大化按钮的顺序,但不知道该怎么做。

看来userchrome.css并没有什么帮助。

我可以定制它吗?

答案1

是的,在 DWM 禁用时可以更改三个标题按钮的顺序。但如果 DWM 启用,我们就无法更改顺序。

方法:

1)从 C:\Program Files (x86)\Mozilla Firefox\browser 复制 omni.ja

2)使用 zip 工具解压

3)编辑chrome\browser\content\browser下的browser.xul,改变以下内容的顺序

<hbox id="titlebar-buttonbox-container" align="start">
      <hbox id="titlebar-buttonbox">
        <toolbarbutton class="titlebar-button" id="titlebar-close" command="cmd_closeWindow"/>
        <toolbarbutton class="titlebar-button" id="titlebar-max" oncommand="onTitlebarMaxClick();"/>
        <toolbarbutton class="titlebar-button" id="titlebar-min" oncommand="window.minimize();"/>
      </hbox>

标题栏的顺序变为:close->max->minimized

zip -qr9XD omni.ja *4)在omni目录下使用命令重新打包omni.ja。

5)用新编辑的 omni.ja 替换旧的 omni.ja

6)最终结果: 在此处输入图片描述

解释:

1)Firefox的ui布局是基于xul(一种基于xml的布局描述语言)的,以browser.xul作为主浏览器ui的描述文件。

2)启用 DWM 后,Firefox 使用默认窗口过程(DefWindowProc)绘制非客户区,

case WM_NCPAINT:
    {
      /*
       * Reset the non-client paint region so that it excludes the
       * non-client areas we paint manually. Then call defwndproc
       * to do the actual painting.
       */

      if (!mCustomNonClient)
        break;

      // let the dwm handle nc painting on glass
      if(nsUXThemeData::CheckForCompositor())
        break;

      HRGN paintRgn = ExcludeNonClientFromPaintRegion((HRGN)wParam);
      LRESULT res = CallWindowProcW(GetPrevWindowProc(), mWnd,
                                    msg, (WPARAM)paintRgn, lParam);
      if (paintRgn != (HRGN)wParam)
        DeleteObject(paintRgn);
      *aRetValue = res;
      result = true;
    }
    break;

因此,在启用 dwm 时无法自定义这三个按钮。

相关内容