Jak zmaksymalizować ramkę Emacsa podczas uruchamiania?

64

Czy istnieje sposób na zmaksymalizowanie mojego okna przy uruchamianiu?

Obecnie naciskam Control+ Windows Key+ Upna klawiaturze, ale jest to bardzo kłopotliwe za każdym razem.

Używam Emacsa 24.4 na Ubuntu 12.04.

Łukasz
źródło
1
Nie znałem kluczowej kombinacji, aby zmaksymalizować emacsa. Dzięki za to, a także poniższa odpowiedź się sprawdziła!
Prasanna,
Skąd znalazłeś kombinację <kbd>![Windows Key][oldwinlogo]</kbd>To nie działa dla mnie :-(
Prasanna

Odpowiedzi:

69

Mam inną metodę, którą przetestowałem na Emacsie 24.3 i 24.4, a także na Windowsie i GNU / Linux. W moim pliku init umieściłem :

(add-to-list 'default-frame-alist '(fullscreen . maximized))

Wydaje mi się, że został on nieco zmodyfikowany w odpowiedzi StackOverflow, którą znalazłem jakiś czas temu, ale nie mogę go teraz znaleźć.

Edycja: Kolejną zaletą tej metody jest to, że dotyczy ona również nowych klientów, którzy łączą się z serwerem Emacs (np emacsclient -c.).

Scott Weldon
źródło
3
+1 za dokładną odpowiedź. Gdybym mógł ponownie zaakceptować to jako odpowiedź - naprawdę bym to zrobił!
Prasanna,
1
Podoba mi się to rozwiązanie emacsclient, ale jest kilka ramek, które po zmaksymalizowaniu uniemożliwiałyby ich prawidłowe użycie, jak na przykład panel sterowania Ediff , czy istnieje obejście tego problemu?
marcanuy,
@marcanuy: Nie znam rozwiązania z góry mojej głowy, ale warto zadać nowe pytanie.
Scott Weldon,
30

Dostosuj ...-frame-alistw pliku init, aby powiedzieć Emacsowi, jak zmaksymalizować ramkę. Masz również wiele opcji, jak dokładnie ją zmaksymalizować.

alist opcje

Masz dwie ...-frame-alistopcje:

  1. default-frame-alist (jak w odpowiedzi @Scott Weldon)
  2. initial-frame-alist

Jeśli użyjesz default-frame-alist, zmaksymalizuje wszystkie ramki: zarówno pierwszą, jak i wszystkie inne, które utworzysz. To może nie być to, czego chcesz (a może to: kim jestem, aby osądzać?).

Jeśli użyjesz initial-frame-alist, zmaksymalizuje tylko ramkę utworzoną przez Emacsa podczas uruchamiania, ale nie dotknie żadnych tworzonych kolejnych ramek.

opcje maksymalizacji

Aby uzyskać informacje na temat opcji maksymalizacji, zobacz ten węzeł instrukcji, aby uzyskać szczegółowe informacje. W krótkiej wersji fullscreenparametr można ustawić na :

  • fullwidth (ustaw ramkę tak szeroko, jak to możliwe, nie dotykaj pionu)
  • fullheight (ustaw ramkę tak wysoko, jak to możliwe, nie dotykaj poziomu)
  • fullboth (ustaw wysokość i szerokość, aby dopasować do rozmiaru ekranu)
  • maximized (zrób to, cóż, zmaksymalizowane)

Różnica między fullbothi maximizedpolega na tym, że możesz zmienić rozmiar tego pierwszego za pomocą myszy, natomiast drugiego nie możesz.

przykład

Na przykład te linie: 1) utworzą zmaksymalizowaną ramkę początkową i 2) utworzą ramki o pełnej wysokości (ale nie pełnej szerokości) na każdej kolejnej ramce:

(add-to-list 'initial-frame-alist '(fullscreen . maximized))
(add-to-list 'default-frame-alist '(fullscreen . fullheight))
Dan
źródło
3
Rzeczywiście initial-frame-alistjest o wiele bardziej przydatny niż default-frame-alistwtedy, gdy używa się narzędzi takich jak ediff.
giordano,
28

W Emacsie 24.4 (toggle-frame-maximized)przełącza zmaksymalizowany stan bieżącej ramki.

Zobacz także pytanie Maksymalizuj Emacsa przy uruchamianiu przy przepełnieniu stosu oraz stronę Pełny ekran na EmacsWiki.

Konstantyn
źródło
Działa to z castlemacs na Mac. Dzięki!
Sankalp
9

@ Odpowiedź Constantine'a już obejmuje, w jaki sposób można to osiągnąć, modyfikując plik init (jeśli używasz Emacsa 24.4).

Jeśli uruchamiasz Emacsa z wiersza poleceń, z myślnika lub z programu uruchamiającego, takiego jak Synapse lub krunner , możesz określić -mmopcję (skrót od --maximized), aby osiągnąć ten sam wynik:

emacs -mm

-mmOpcja została po raz pierwszy wprowadzona w Emacs 23.2 , więc to rozwiązanie nie jest ograniczone do najnowszej stabilnej wersji.


To, co odróżnia to rozwiązanie od innych sugestii zamieszczonych tutaj (wszystkie są świetne), polega na tym, że pozwala on decydować indywidualnie dla każdego przypadku, czy chcesz zmaksymalizować ramkę Emacsa podczas uruchamiania, czy nie.

Jeśli chcesz mieć bardziej trwałe rozwiązanie, możesz skonfigurować aliasdla powyższego polecenia, dodając następujące elementy do .bashrc:

alias emacs='emacs -mm'
itsjeyd
źródło
2
Kolejną zaletą tego rozwiązania jest to, że emacs zaczyna się już zmaksymalizować. Obejścia plików początkowych powodują, że przełącza się ono na maksymalizację podczas uruchamiania, co jest dość denerwujące.
i
1
Aby dodać do tej odpowiedzi: emacs -fsuruchamia Emacsa zmaksymalizowane do pełnego ekranu lub maksymalnie zmaksymalizowane do maksimum.
Teemu Leisti
6

Aby uruchomić Emacsa zmaksymalizowany, dodaj do pliku init:

;; Start maximised (cross-platf)
(add-hook 'window-setup-hook 'toggle-frame-maximized t)

W przypadku, gdy chcesz przejść do trybu pełnoekranowego lub, jak mówią teraz, trybu wolnego od zakłóceń :

;; Start fullscreen (cross-platf)
(add-hook 'window-setup-hook 'toggle-frame-fullscreen t)

UWAGA : Działa to również w systemie Windows.

Antonio
źródło
1

Używam następujących:

(when (eq system-type 'gnu/linux)
  (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)))
  (run-with-idle-timer 0.01 nil 'x11-maximize-frame)
  )

(when (eq system-type 'windows-nt)
  (w32-send-sys-command 61488)
)
Cegła suszona na słońcu
źródło