私はFirefox 16からFirefox 17.0.1にアップグレードしましたが、Firefoxウィンドウに最大化ボタンはありません。このmaximize-window
コマンドも何もしません。 Firefoxからフルスクリーンモードに切り替えると、メニューとツールバーが消えますが、ウィンドウの装飾はそのままになり、ウィンドウのサイズは変わりません。また、ウィンドウサイズを18x108以外のサイズに変更することはできません。これらの機能はすべてFirefox 16で動作します。
私はDebian squeezeとFirefoxバイナリを実行しています。http://mozilla.org。私のウィンドウマネージャはSawfish 1.3.5です。 Fvwmを使用してXセッションを実行するとFirefoxを最大化できるため、Firefox 17はSawfishが気に入らないタスクを実行します。ところで何をしますか?
答え1
トップサメのバグに出会ったようです:
https://bugs.launchpad.net/ubuntu/+source/sawfish/+bug/1083260
PS:Ubuntuストアでトップサメをテストするのは悪い考えです。ログインすらできません。協会。
答え2
window-maximizable-p
ウィンドウの最大サイズのヒントがディスプレイより小さい場合は false を返します。最大サイズのヒントは、メッセージ応答で返された構造のmax_width
合計値です。max_height
XSizeHints
WM_SIZE_HINTS
Firefox 17では、最大の高さと幅を0x40000000の値として宣言します。 Sawfishでは、このwindow-size-hints
関数はこれらの値を0として報告します。結局のところ、SawfishのLisp実装は、整数値に2つのフラグビットを使用し、32ビットシステムでは30ビット、64ビットシステムでは62ビットを残します。したがって、2 30の値は自動的にゼロに切り捨てられます。
Cコードを見た結果、作成された方法によると、64ビットシステムでもこのような切り捨てが発生します(32ビットXSizeHints
メンバーが最初に移動されてから昇格されるためですlong
)。
〜のようにジョン・シャオ(John Xiao)が発見しました。、これはUbuntuのバグ#1083260これはFirefox 17に関連した後に修正されました。とメーリングリストに関する議論。
.sawfishrc
これで、少なくともFirefox 17が正常に動作するようにブラウザで回避策を見つけることができます。
最大値0は意味がないため、Lispで値をフィルタリングし、0として表示された場合はヒントを削除できます。これは最大サイズのヒントが2 30の倍数である問題のみを解決しますが、ここでは十分です。
警告:コードが非常に悪いです。 sawfishはサブルーチン専用のモジュールパッチを好みません(rep
名前空間がなければ多くのことはできません - を含む(require '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))))))