[[!meta title="A modern Emacs look-and-feel without pain"]] [[!meta copyright="Copyright © 2023 Pedro A. Aranda"]] [[!inline pages="internal(2023/info/flat-nav)" raw="yes"]] # A modern Emacs look-and-feel without pain Pedro A. Aranda (he) [[!template id="help" summary="main talk does not have captions" tags="help_with_main_captions" message="""This talk does not have captions yet. Would you like to help [caption this talk](/captioning)? You may be able to start with these [autogenerated captions](/2023/captions/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.vtt)."""]] [[!inline pages="internal(2023/info/flat-before)" raw="yes"]] In my talk I will show how to enrich themes without having to write them from scratch, using the flat-button style. This gives you the possibility of creating a nice Emacs GUI with minimal extra ELISP. About the speaker: Pedro A. Aranda is a 30+ year Emacs user, who started on an HP mainframe and soon started using the DJGPP port of emacs on a 386 at home. Currently lecturing at a university in Madrid, he uses emacs for most of his teaching activities. # Discussion ## Questions and answers - Q: Do you plan to upstream this style into core Emacs? - A: It's in core emacs - Q: How difficult is it to modify face styles like this internally? - A: It's very simple, just set the :style of the :box face attribute. - Q: How much work was involved in implementing this style internally in Emacs core? - A: About a 20-line patch. - Q: Could you please share the code for copy and paste? Thx! - A:  - (defun flat-style(theme &rest args) -   (custom-set-faces -    `(mode-line -      ((t (:inherit mode-line -                    :box (:line-width ,mode-line-height :style flat-button)))) t) -    `(mode-line-inactive -      ((t (:inherit mode-line-inactive -                    :box (:line-width ,mode-line-height :style flat-button)))) t))) - (advice-add 'load-theme :after #'flat-style) - Q: Do you teach Emacs to any of your university students? - A: No teaching, but a lot of introdcuing ;-) ## Notes - It looks great, thanks for upstreaming it in GNU Emacs core as well! [[!inline pages="internal(2023/info/flat-after)" raw="yes"]] [[!inline pages="internal(2023/info/flat-nav)" raw="yes"]]