web-dev-qa-db-ja.com

SawfishでFirefox17のサイズを変更したり最大化したりできないのはなぜですか?

Firefox16からFirefox17.0.1にアップグレードしたところ、Firefoxウィンドウで最大化ボタンが失われました。 maximize-windowコマンドも何もしません。 Firefoxでフルスクリーンモードに切り替えると、メニューとツールバーは表示されなくなりますが、ウィンドウの装飾は残り、ウィンドウのサイズは同じままです。また、ウィンドウのサイズを18x108以外に変更することはできません。これはすべてFirefox16で機能しました。

http://mozilla.org のFirefoxバイナリを使用してDebiansqueezeを実行しています。私のウィンドウマネージャーはSawfish1.3.5です。 FvwmでXセッションを実行すると、Firefoxを最大化できるので、Firefox 17はSawfishが気に入らないことを実行していますが、どうでしょうか。

ウィンドウの最大サイズのヒントが表示よりも小さい場合、window-maximizable-pはfalseを返します。最大サイズのヒントは、max_widthメッセージへの応答として返されるXSizeHints構造体のmax_height値とWM_SIZE_HINTS値です。

Firefox 17は、最大の高さと幅を0x40000000の値で宣言しています。 Sawfishでは、window-size-hints関数はこれらの値を0として報告します。たまたま、SawfishのLISP実装は整数値に2タグビットを使用し、32ビットマシンでは30ビット、64ビットマシンでは62ビットを残します。したがって、2の値30 サイレントに0に切り捨てられています。

Cコードとその記述方法を調べたところ、この切り捨ては64ビットマシンでも発生します(32ビットのXSizeHintsメンバーが最初にシフトされ、次にlongにプロモートされるため)。

John Siuが見つかりました として、これは buntuバグ#108326 でした Firefox 17に関連して気づいた後に修正されましたディスカッションメーリングリスト内


回避策として、少なくともFirefox 17を機能させるために、.sawfishrcを挿入できます。

最大値0が意味をなさない場合、LISPでこの値をフィルタリングし、0のように見えるときにヒントを削除することができます。これは、2の倍数である最大サイズのヒントの問題のみを解決します。30、しかしここではそれで十分です。

警告:コードはかなりひどいです— sawfishはサブルーチンのみのモジュールにパッチを当てるのが好きではありません((require 'rep)を含む名前空間にrepがないと多くのことを行うことはできません)。

(let ((struct (get-structure 'sawfish.wm.windows.subrs)))
  (unless (structure-bound-p struct 'window-size-hints-before-max-truncation-fix)
    (let ((old-window-size-hints (eval 'window-size-hints struct)))
      (structure-define struct 'window-size-hints-before-max-truncation-fix
                        old-window-size-hints)
      (structure-set struct 'window-size-hints
                     (lambda (#!rest args)
                       (let* ((hints (apply old-window-size-hints args))
                              (cell (cons nil hints)))
                         (mapc (lambda (key)
                                 (let ((cell (assq key hints)))
                                   (if (zerop (cdr cell))
                                       (setq hints (delq cell hints)))))
                               '(max-height max-width))
                         hints))))))

あなたはノコギリエイのバグにぶつかったようです:

https://bugs.launchpad.net/ubuntu/+source/sawfish/+bug/108326

PS:そしてubunturepoでノコギリエイをテストするのは悪い考えです。ログインすらできません link

2
John Siu