From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: David Hedlund Newsgroups: gmane.emacs.devel Subject: Re: Solution to a proposed FAQ, how to maximize emacs quickly (like `emacs --maximize`) for GNU/Linux - Improved solution by Chad: ~/.emacs.d/early-init.el Date: Thu, 5 Oct 2023 06:01:35 +0200 Message-ID: References: <19e53542-bfb0-4e48-8845-01fd34d93dbb@beloved.name> <87zg19ja6k.fsf@thaodan.de> <87lecsd0ob.fsf@dataswamp.org> <17c5289f-2549-48b6-a1ef-9497a375ee5e@beloved.name> <08e27ad4-f7b6-4177-9b34-6412122812c1@beloved.name> <87v8bviw8p.fsf@dataswamp.org> <84ec22ac-299e-4849-adaf-e604d20218a6@beloved.name> <8e8ddc25-c4c7-48dc-a7e1-c84472387053@beloved.name> <6a7034f0-db9d-433d-9b86-2769356ed513@beloved.name> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="------------fxbPhdgffw51RG0IT5jxMDFs" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36908"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Oct 05 06:02:44 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qoFZT-0009J7-Q3 for ged-emacs-devel@m.gmane-mx.org; Thu, 05 Oct 2023 06:02:44 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qoFYk-0000TX-K2; Thu, 05 Oct 2023 00:01:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qoFYY-0000Ol-IT for emacs-devel@gnu.org; Thu, 05 Oct 2023 00:01:48 -0400 Original-Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qoFYV-00067L-TE for emacs-devel@gnu.org; Thu, 05 Oct 2023 00:01:46 -0400 Original-Received: by mail.gandi.net (Postfix) with ESMTPSA id 72501E0004 for ; Thu, 5 Oct 2023 04:01:36 +0000 (UTC) Content-Language: en-US In-Reply-To: X-GND-Sasl: public@beloved.name Received-SPF: pass client-ip=217.70.183.196; envelope-from=public@beloved.name; helo=relay4-d.mail.gandi.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:311288 Archived-At: This is a multi-part message in MIME format. --------------fxbPhdgffw51RG0IT5jxMDFs Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 9/30/23 17:50, David Hedlund wrote: > > > On 9/29/23 19:54, David Hedlund wrote: >> >> >> On 9/29/23 19:18, David Hedlund wrote: >>> >>> >>> On 9/29/23 00:39, David Hedlund wrote: >>>> >>>> >>>> On 9/28/23 22:05, chad wrote: >>>>> Apologies for joining late, and perhaps you have already tried and >>>>> discounted this approach, but: Have you tried adding: >>>>> >>>>> (push '(fullscreen . maximized) default-frame-alist) >>>>> >>>>> >>>>> or perhaps >>>>> >>>>> (push '(fullscreen . maximized) initial-frame-alist) >>>>> >>>>> >>>>> to early-init? I put the first above line in >>>>> ~/.emacs.d/early-init.el, and got an initially maximized window >>>>> under an odd Wayland+XWayland system as well as Win 11. I don't >>>>> have reasonable access to either a more typical X11, Wayland, or >>>>> macOS system right now. >>>>> >>>>> The key is to put it in early-init.el, which is consulted before >>>>> emacs makes any windows in any window system. Also worth noting: >>>>> if you end up with conflicting elisp settings and X resources, >>>>> there are a variety of ways for the latter to silently override >>>>> the former. You can check this with "xrdb -query" (you might want >>>>> to run this in a shell buffer or pipe it to a pager). >>>>> >>>>> Hope this helps, >>>>> ~Chad >>>>> >>>> Today is a good day. This is working like a charm! I tried >>>> default-frame-alist, and initial-frame-alist, in upgraded virtual >>>> machines right now: >>>> >>>> * X11: >>>> >>>> ** Trisquel 11: Working >>>> >>>> ** Ubuntu MATE 22.04: Working >>>> >>>> ** Ubuntu 23.04: Working >>>> >>>> * Wayland >>>> >>>> ** Ubuntu 22.04: Working >>>> >>>> ** Ubuntu 23.04: Working >>>> >>>> This is the only solution so far that relies 100% on Emacs Lisp. I >>>> think this can be documented in >>>> https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode-on-GNU-Linux.htm >>>> >>>> >>>> Your solution effectively replaces my devilspie2 solution, Chad. >>>> Thank you very, very much! >>>> >>>> >>>> REQUEST: Can anyone please try Chad's solution and confirm if it is >>>> working for >>>> >>>> * Windows 11 >>>> > It works in Windows 11 too. I just tested this in > Win11_22H2_EnglishInternational_x64v2.iso Home edition, upgraded. > > "(push '(fullscreen . maximized) default-frame-alist)" is added to > .emacs.d/early-init.el it expanded the buffer equally quickly like > when this was added to a .emacs file (with 100 lines): > > (add-hook 'emacs-startup-hook 'toggle-frame-maximized) > > (setq frame-resize-pixelwise t) > (set-frame-position nil 0 0) > (set-frame-size nil (display-pixel-width) (display-pixel-height) t) > > > For GNU/Linux adding this to .emacs (same file size as for the Windows > 11 experiment) caused a delay: > > (add-hook 'emacs-startup-hook 'toggle-frame-maximized) > > > So for Windows, there are two methods that can be used, but for > GNU/Linux only one solution works (adding "(push '(fullscreen . > maximized) default-frame-alist)" to .emacs.d/early-init.el) > > > With this said, the OS independent solution is to add "(push > '(fullscreen . maximized) default-frame-alist)" to > .emacs.d/early-init.el which can be documented in a new page, > https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode.htm > > > >>>> * macOS >>>> >>>> * BSD >>>> >>>> >>>> If it is working for all of them, perhaps it's better to add a >>>> basic section (e.g. >>>> https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode.htm) >>>> and document that the solution: >>>> >> >> * The only reason why I suggested the file name >> https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode-on-GNU-Linux.html, >> or >> https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode, >> is to make it consistent with >> https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode-on-MS_002dWindows.html >> that is describing both fullscreen mode, but also maximized mode. >> >> * Perhaps it's better to use the file name >> https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-maximize-mode.html >> to avoid confusion. >> > Eli said: " > > "Fullscreen" is widely accepted terminology for what is discussed > there. Moreover, typing "i maximized RET" and "i fullscreen RET" in > both the ELisp and the Emacs user manuals brings you to the same text, > so we already have the two equivalent terms covered, and renaming the > node is not necessary IMO." > > >> >>>> * Will quickly maximize emacs (like `emacs -mm`) by using >>>> ~/.emacs.d/early-init.el, to avoid the slightly distracting visual >>>> effect of Emacs starting with its default frame size and then >>>> growing to fullscreen. Adding  "(add-to-list 'default-frame-alist >>>> '(fullscreen . maximized))" to the top of ~/.emacs will is cause >>>> the distracting visual effect if additionally typically >>>> configurations are added in ~/.emacs. >>>> >>>> * Only requires Emacs lisp and works out of the box. >>>> >>>> * Will be executed automatically when emacs starts. >>>> >>> ---------------8<----------------------- >>> >>> Just to avoid confusion, this line was added by mistake: >>> >>>> * ~/.emacs.d/early-init.el prevents the the visually distracting >>>> effect is (add-to-list 'default-frame-alist '(fullscreen . maximized)) >>>> >>> Of course, I meant that it should be what Chad suggested: (push >>> '(fullscreen . maximized) default-frame-alist) >>> >>> >>> End, this line was added by mistake >>> >>> ---------------8<----------------------- >>> >>> >>>> * Works for GNU/Linux (X11, Wayland), [Windows], [macOS], [BSD] >>>> >>>> EmacsWiki Full Screen, section Configuring fullscreen mode - https://www.emacswiki.org/emacs/FullScreen#h5o-2 Probably the simplest way to configure fullscreen or maximized mode is to customize |initial-frame-alist| (custom-set-variables '(initial-frame-alist (quote ((fullscreen . maximized))))) ----------------Text that I added ----------------------8<---------------------         To avoid the slightly distracting visual effect of Emacs starting with its default frame size and then growing to fullscreen, you can add an the above lines to .emacs.d/early-init.el instead of .emacs (thanks Chad). This has been successfully tested in GNU/Linux (both X11, and Wayland), and Windows. -----------------End text that I added ----------------------8<----------------------------- --------------fxbPhdgffw51RG0IT5jxMDFs Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


On 9/30/23 17:50, David Hedlund wrote:


On 9/29/23 19:54, David Hedlund wrote:


On 9/29/23 19:18, David Hedlund wrote:


On 9/29/23 00:39, David Hedlund wrote:


On 9/28/23 22:05, chad wrote:
Apologies for joining late, and perhaps you have already tried and discounted this approach, but: Have you tried adding:

(push '(fullscreen . maximized) default-frame-alist)

or perhaps

(push '(fullscreen . maximized) initial-frame-alist) 

to early-init? I put the first above line in ~/.emacs.d/early-init.el, and got an initially maximized window under an odd Wayland+XWayland system as well as Win 11. I don't have reasonable access to either a more typical X11, Wayland, or macOS system right now.

The key is to put it in early-init.el, which is consulted before emacs makes any windows in any window system. Also worth noting: if you end up with conflicting elisp settings and X resources, there are a variety of ways for the latter to silently override the former. You can check this with "xrdb -query" (you might want to run this in a shell buffer or pipe it to a pager).

Hope this helps,
~Chad

Today is a good day. This is working like a charm! I tried default-frame-alist, and initial-frame-alist, in upgraded virtual machines right now:

* X11:

** Trisquel 11: Working

** Ubuntu MATE 22.04: Working

** Ubuntu 23.04: Working

* Wayland

** Ubuntu 22.04: Working

** Ubuntu 23.04: Working

This is the only solution so far that relies 100% on Emacs Lisp. I think this can be documented in https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode-on-GNU-Linux.htm

Your solution effectively replaces my devilspie2 solution, Chad. Thank you very, very much!


REQUEST: Can anyone please try Chad's solution and confirm if it is working for

* Windows 11

It works in Windows 11 too. I just tested this in Win11_22H2_EnglishInternational_x64v2.iso Home edition, upgraded.

"(push '(fullscreen . maximized) default-frame-alist)" is added to .emacs.d/early-init.el it expanded the buffer equally quickly like when this was added to a .emacs file (with 100 lines):

(add-hook 'emacs-startup-hook 'toggle-frame-maximized)

(setq frame-resize-pixelwise t)
(set-frame-position nil 0 0)
(set-frame-size nil (display-pixel-width) (display-pixel-height) t)


For GNU/Linux adding this to .emacs (same file size as for the Windows 11 experiment) caused a delay:

(add-hook 'emacs-startup-hook 'toggle-frame-maximized)


So for Windows, there are two methods that can be used, but for GNU/Linux only one solution works (adding "(push '(fullscreen . maximized) default-frame-alist)" to .emacs.d/early-init.el)


With this said, the OS independent solution is to add "(push '(fullscreen . maximized) default-frame-alist)" to .emacs.d/early-init.el which can be documented in a new page, https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode.htm



* macOS

* BSD


If it is working for all of them, perhaps it's better to add a basic section (e.g. https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode.htm) and document that the solution:


* The only reason why I suggested the file name https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode-on-GNU-Linux.html, or https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode, is to make it consistent with https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-mode-on-MS_002dWindows.html that is describing both fullscreen mode, but also maximized mode.

* Perhaps it's better to use the file name https://www.gnu.org/software/emacs/manual/html_node/efaq/Fullscreen-maximize-mode.html to avoid confusion.

Eli said: "

"Fullscreen" is widely accepted terminology for what is discussed
there.  Moreover, typing "i maximized RET" and "i fullscreen RET" in
both the ELisp and the Emacs user manuals brings you to the same text,
so we already have the two equivalent terms covered, and renaming the
node is not necessary IMO."



* Will quickly maximize emacs (like `emacs -mm`) by using ~/.emacs.d/early-init.el, to avoid the slightly distracting visual effect of Emacs starting with its default frame size and then growing to fullscreen. Adding  "(add-to-list 'default-frame-alist '(fullscreen . maximized))" to the top of ~/.emacs will is cause the distracting visual effect if additionally typically configurations are added in ~/.emacs.

* Only requires Emacs lisp and works out of the box.

* Will be executed automatically when emacs starts.

---------------8<-----------------------

Just to avoid confusion, this line was added by mistake:

* ~/.emacs.d/early-init.el prevents the the visually distracting effect is (add-to-list 'default-frame-alist '(fullscreen . maximized))

Of course, I meant that it should be what Chad suggested: (push '(fullscreen . maximized) default-frame-alist)


End, this line was added by mistake

---------------8<-----------------------


* Works for GNU/Linux (X11, Wayland), [Windows], [macOS], [BSD]



EmacsWiki Full Screen, section Configuring fullscreen mode - https://www.emacswiki.org/emacs/FullScreen#h5o-2

Probably the simplest way to configure fullscreen or maximized mode is to customize initial-frame-alist

(custom-set-variables
 '(initial-frame-alist (quote ((fullscreen . maximized)))))

----------------Text that I added ----------------------8<---------------------

        To avoid the slightly distracting visual effect of Emacs starting with its default frame size and then growing to fullscreen, you can add an the above lines to .emacs.d/early-init.el instead of .emacs (thanks Chad). This has been successfully tested in GNU/Linux (both X11, and Wayland), and Windows. -----------------End text that I added ----------------------8<----------------------------- --------------fxbPhdgffw51RG0IT5jxMDFs--