web-dev-qa-db-ja.com

起動時にWindowsでEmacsを最大化する方法は?

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

これが私が試したことです:

  1. 初期フレームアリストを適切な高さ/幅に設定する
  2. Default-frame-alistの設定
  3. (Windows固有のもの)(w32-send-sys-command 61488)を介して最大化するように指示するメッセージをemacsウィンドウに送信します
  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ウィンドウのサイズが正しく変更されます。ここで何が起こっているのでしょうか?

[p.s.他にも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が提案したものの作業バージョンです)。

43
polyglot

私は見つけました 1年かそこら前の答え それはあなたが物事を正しく行うためにレジストリを操作しなければならないことを説明しています:

Emacsの最大化を開始するには、次の行を〜/ .emacsファイルの最後に置きます。

(w32-send-sys-command 61488)

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

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

W32SendSysコマンドコード の下のEmacsWikiを見ると、61488 is現在のフレームを最大化

25

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

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

おい、何が悪いの

emacs -mm

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

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

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

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

そして、すべてが桃色でリッピーです:)

11
yPhil

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)))
10
Roland Kaufmann

これはEmacs 24.5.1 (i686-pc-mingw32)で確実に機能します。

(add-to-list 'initial-frame-alist '(fullscreen . maximized))
3
ens

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

(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)
)
3
prewett

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

すべてをセットアップした後、それをinitファイルの終わり近くに置き、セットアップの終わりまでにすべてが最大化されると仮定しますしない、出来上がり、それは機能します。

2
tariqk

このような問題を解決する別の方法は、

(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- *関数の間に遅延を置くことも不可欠です!

2
gavenkoa

ウィンドウなしでEmacsのフルスクリーンを本当に実行したい場合chrome(タイトルバーと最大/最小/閉じるボタン))以下のモードを試してください。これはEmacs23.3.1で=で動作しました。 XP SP3。

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

1
Mike

ねえ-いい機能だ!投稿していただきありがとうございます

Initファイルのどこかに次のようなコードがあるため、機能していない可能性があります。 default-frame-alistは、フレームの作成後に適用されます。サイズと位置の要素を削除しました。あなたの関数はemacsの起動時にうまく機能します。

   (setq default-frame-alist
     (list
      (cons 'left                 350)
      (cons 'top                  0)
      (cons 'width                80)
      (cons 'height               45)
     ......
1
jottos

全員。 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#toc

MS Windows

MS Windowsを使用していて、「実際のフルスクリーン」を使用したい場合、つまり、上部のタイトルバーなどをすべて削除したい場合は、サイトの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)
1
zw963

emacs-full-screen-win32 プロジェクトはあなたを助けます:)

0
Jarlaxle
(defun resize-frame ()
"Set size"
(interactive)
(set-frame-width (selected-frame) 110)
(set-frame-height (selected-frame) 33)
(set-frame-position (selected-frame) 0 1))

以下は、私の.emacsファイルで呼び出される最後の関数で、debianとmac osxのemacs22とemacs23の両方で機能する画面の高さと幅を設定します。画面に応じて高さと幅の数値を設定します。

0
Hamza Yerlikaya

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

(tool-bar-mode nil)

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

0
John R Strohm

emacswiki からの次のスニペットは私からはうまくいきました:(スタートアップ設定ファイルに追加してください)

(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)
0
ᐅdevrimbaris