44

これは私を夢中にさせます: Emacs を起動時の画面解像度に合わせて最大化したいだけです。理想的には、あらゆる画面解像度で動作するクロスプラットフォーム (Windows & Linux) ソリューションが好きですが、ハードコードされたサイズでも Window XP だけでは動作しません。

ここに私が試したものがあります:

  1. 適切な高さ/幅で initial-frame-alist を設定する
  2. default-frame-alist の設定
  3. (Windows 固有のもの) emacs ウィンドウにメッセージを送信して、最大化するように指示します。(w32-send-sys-command 61488)
  4. どこかで見つけたこの機能を試しました:

    (defun toggle-fullscreen ()
      "toggles whether the currently selected frame consumes the entire display
    or is decorated with a window border"
      (interactive)
      (let ((f (selected-frame)))
        (modify-frame-parameters 
         f
         `((fullscreen . ,(if (eq nil (frame-parameter f 'fullscreen)) 
                              'fullboth
                            nil))))))
    
  5. init ファイルの最初と最後で上記の方法を試し、他の init からの干渉を排除しようとしました。

残念ながら、上記のどれも機能しません!! 上記のいくつかについては、私の emacs ウィンドウのサイズが一瞬だけ正しく変更されてから、小さいデフォルト サイズに戻ることがわかります。初期化後に上記の方法を実行すると、emacs ウィンドウは正しくサイズ変更されます。ここで何が起こっているのですか?

[psこれには他にもSOの質問がありますが、どれもうまくいきません]


アップデート:

答えを見ると、init ファイル内の他の何かが問題を引き起こしていると思います。そして確かにそうです!試行錯誤の末、犯人を見つけました。次の行をコメントアウトすると、すべてが完全に機能します。

(tool-bar-mode -1)

ツールバーは、ウィンドウの最大化と一体何の関係があるのでしょうか?

問題は次のとおりです。ツールバーを無効にするにはどうすればよいですか (結局のところ、emacs のツールバーは見苦しく、貴重な画面領域を占有します)、両方の init ファイルでウィンドウを最大化するにはどうすればよいでしょうか? ツールバーがウィンドウのサイズに干渉するのはおそらくバグですか?

明確化: (tool-bar-mode -1) はツールバーをオフにしますが、この行は Emacs ウィンドウの最大化を妨げます。したがって、ウィンドウを最大化してツールバーをオフにする関数を配置しようとすると、最大化部分が失敗します。ツールバー部分がコメントアウトされている場合、最大化部分は正常に機能します。私がどのソリューションを使用するかは問題ではありません (私がリストした 4 つの中で)。


解決策:(または少なくとも今私にとって何がうまくいくか)

これはおそらく Emacs のバグです。回避策は、.emacs ではなく、レジストリからツールバーを無効にすることです。以下を .reg ファイルとして保存し、そのファイルを Windows エクスプローラーで実行します。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\GNU\Emacs]
"Emacs.Toolbar"="-1"

(このソリューションは、OtherMichael が提案したものの実用的なバージョンです)。

4

15 に答える 15

25

1年ほど前に、正しいことを行うにはレジストリを操作する必要があることを説明する回答を見つけました。

Emacs を最大化して起動するには、次の行を ~/.emacs ファイルの最後に追加します。

(w32-send-sys-command 61488)

Emacs ツールバーが必要ない場合は、行(tool-bar-mode -1) [NOTE: value is 0 on original page] を ~/.emacs ファイルに追加できますが、Emacs はこれで完全に最大化されません。ケース - ツールバーが占める領域が失われます。ツールバーを元に戻すには、レジストリでツールバーを無効にする必要があります。

[HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\Emacs.Toolbar]
@="0"

EmacsWiki のW32SendSys command-codesを見ると、現在のフレームを最大化する61488ことがわかります

于 2009-05-04T15:56:21.457 に答える
13

これは私のために働いた最も簡単な修正です:

(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
于 2011-01-02T07:42:34.920 に答える
12

おい、何が悪いんだ

emacs -mm?

これにより、Emacs が完全に最大化されて起動します。ショートカットに入れてください。実際には、使用するウィンドウマネージャーに依存します。私自身は.*shrcでエイリアスを付けているだけです。

別の、しかし無関係ではないメモとして、私は実際にEmacsを開始し、すでに開始されている場合は、選択したファイルが既存のEmacsセッションで新しいバッファとして開かれるようにします:

if [ "$(pidof emacs)" ] ; then
    emacsclient "$@"
else
    emacs -mm "$@"
fi

これを ~/bin/e に入れ、"e" で Emacs を起動します。ファイルマネージャーでテキストファイルを右クリックし、「別のプログラムで開く」を選択して「e」と入力すると、ファイルをダブルクリックするだけで、同じセッションですべてがきれいに開きます。

そして、すべてが桃色でぎこちないです:)

于 2012-02-23T18:24:08.407 に答える
10

X.org では、システム コールは次のとおりです (最初にクロスプラットフォーム ソリューションを求めたため)。

(defun x11-maximize-frame ()
  "Maximize the current frame (to full screen)"
  (interactive)
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)))
于 2009-06-22T19:44:33.697 に答える
3

まず、(tool-bar-mode -1); のバグに関するヒントをありがとうございます。大変助かりました!すべてを .emacs ファイル内に保持したいので (レジストリの変更はありません)、最大化する前にツールバーをオンにしてから再度オフにすると、うまく最大化できます。

(defun maximize-current-frame () "Resizes the current frame to fill the screen"
    (interactive)
    ;; There is a bug in tool-bar-mode that prevents it from being
    ;; maximized, so turn it on before maximizing.
    ;; See http://stackoverflow.com/questions/815239/how-to-maximize-emacs-on-windows-at-startup)
    (tool-bar-mode 1)
    (w32-send-sys-command 61488)
    (tool-bar-mode -1)
)
于 2009-11-25T00:33:14.477 に答える
2

(toggle-frame-maximized)Linux と Windows の両方で動作するように見える 1 つのコマンドに遭遇しました。

すべてをセットアップした後、初期化ファイルの最後近くにそれを置き、セットアップの終わりまでにすべてが最大化されないことを前提として、ほら、うまくいきます。

于 2015-09-10T03:22:21.307 に答える
2

このような問題を解決する別の方法は、間に遅延を置くことです。

(menu-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(scroll-bar-mode 1)

および set-frame-* 関数。例えば:

 (tool-bar-mode -1)
 (when window-system
  (run-at-time (format "%d sec" 1) nil '(lambda () (set-frame-position (selected-frame) 1 1)))
  (run-at-time (format "%d sec" 2) nil '(lambda () (set-frame-width (selected-frame) 150 t)))
  (run-at-time (format "%d sec" 3) nil '(lambda () (set-frame-height (selected-frame) 60 t)))
  )

set-frame-* 関数の間に遅延を入れることも不可欠です!

于 2009-09-14T13:44:04.267 に答える
1

みんな。emacs 23.3.1、ブローコードが無効です。(menu-bar-mode -1) によってウィンドウが全画面表示されなくなる可能性があるためです。

(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))

Eamcs wiki を検索し、使用可能な方法を見つけます。

http://www.emacswiki.org/emacs/FullScreen#toc3

マイクロソフト ウィンドウズ

MS Windows を使用していて、「実際のフルスクリーン」を使用したい場合、つまり上部のタイトルバーとすべてを削除したい場合は、darkroom-mode のサイトで w32-fullscreen を参照してください。

または、フルスクリーン フレーム パラメータを Windows で実際にフルスクリーンにするパッチをここで入手できます。

ウィンドウを最大化するには、次を使用できます: (w32-send-sys-command #xf030)

注意!emacs を最大化して起動したい場合は、次のコードを .emacs ファイルに追加する必要があります。

(defun jbr-init ()
  "Called from term-setup-hook after the default
terminal setup is
done or directly from startup if term-setup-hook not
used.  The value
0xF030 is the command for maximizing a window."
  (interactive)
  (w32-send-sys-command #xf030)
  (ecb-redraw-layout)
  (calendar)
)
(setq term-setup-hook 'jbr-init)
(setq window-setup-hook 'jbr-init)
于 2011-05-12T02:08:34.890 に答える
1

ウィンドウ クローム (タイトル バーと最大/最小/閉じるボタン) なしで Emacs をフル スクリーンで実行したい場合は、以下のモードを試してください。これは、XP SP3 の Emacs 23.3.1 でうまくいきました。

http://www.martyn.se/code/emacs/darkroom-mode/

于 2011-05-10T14:25:35.347 に答える
0

ツールバーを無効にするには、行を追加します

(tool-bar-mode nil)

カスタマイズファイル(通常はルートディレクトリの.emacs)に追加します。

于 2009-05-04T14:40:36.680 に答える
0

emacs-full-screen-win32プロジェクトが役に立ちます :)

于 2011-10-19T09:22:09.910 に答える