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 。