[[!meta title="Emacs Application Framework: A 2021 Update"]] [[!meta copyright="Copyright © 2021 Matthew Zeng"]] [[!inline pages="internal(2021/info/eaf-nav)" raw="yes"]] # Emacs Application Framework: A 2021 Update Matthew Zeng [[!inline pages="internal(2021/info/eaf-schedule)" raw="yes"]] Emacs Application Framework (EAF) is a customizable and extensible GUI application framework that extends Emacs graphical capabilities using PyQt5. There are many new but important updates since EmacsConf2020 last year, this talk will briefly go over them. # Feedback Pad: - Q1: is there any additions that you have to add to emacs for using non-English/latin characters or does it work mostly out of the box?  - A: [Prot] :  I only set the default-input-method to "greek". Then switch to it with C- (toggle-input-method) - Q1: Any plans for supporting other languages? It'd be great to use EAF to offload processing to Common Lisp, for example. - A: You're able to use Python & JavaScrpt/Vue to extend on top of Elisp, it is so far enough (Python for Qt apps and JS for web apps). Currently I don't see a clear advantage of using Common Lisp as well, but there could definitely be a support in theory. - Q2: is there an eaf-app that's not a bootstrapping nightmare? (having Vue as a dependency, eg) - A: I don't fully understand what you mean by "bootstrapping nightmare", all these dependencies are system dependencies that you install like any other system dependency, it doesn't slow the Emacs startup nor the system startup. But if you're asking for an app suggestion with lightweight dependencies without JS or Vue dependencies, the popular EAF Browser and EAF PDF Viewer are cool app options. - Q3: Are there security implications to having a browser in emacs? - A [opalvaults]: With how Emacs deals with things like GPG/pass/etc. I feel like it's probably as secure as you make it? - A: [matthewzmd] the browser application is independent from emacs itself, you're using a browser in emacs, but the browser is not actually *in* emacs. The browser is QtWebEngine, a modified Chromium without Google stuff, it is as safe as a Chromium can be. - Q4: maybe i misunderstood, but is every eaf app essentially embedded QT? - A: yes, it's built upon qt-webengine - A: Yes, it uses PyQt5 and it's essentially painting the Qt frame on top of emacs, simulating a buffer. EPC is used for Elisp <-> Python <-> JS communication so that you can extend Emacs in various langauges - Q: I guess/hope this is using qtwebengine, not qtwebkit? - A: right, qtwebengine. If you wanna dig more into the internals of EAF, I suggest you to read this part of the Wiki (https://github.com/emacs-eaf/emacs-application-framework/wiki/Hacking) or my talk from last year (https://emacsconf.org/2020/talks/34/) - Q5: Can the EAF dependencies be made into dynamically loadable modules for Emacs, so there will be no need to rebuilt Emacs? - A: There is no need to rebuilt Emacs, they're simply dependencies that you can install using the system package managers (pacman, apt, etc), npm install and pip install IRC nick: matthewzmd - Q1: Any plans for supporting other languages?  It'd be great to use EAF to offload processing to Common Lisp, for example. - A: You're able to use Python & JavaScrpt/Vue to extend on top of Elisp, it is so far enough (Python for Qt apps and JS for web apps). Currently I don't see a clear advantage of using Common Lisp as well, but there could definitely be a support in theory. - Q2: is there an eaf-app that's not a bootstrapping nightmare? (having Vue as a dependency, eg) - A: I don't fully understand what you mean by "bootstrapping nightmare", all these dependencies are system dependencies that you install like any other system dependency, it doesn't slow the Emacs startup nor the system startup. But if you're asking for an app suggestion with lightweight dependencies without JS or Vue dependencies, the popular EAF Browser and EAF PDF Viewer are cool app options. - Q3: Are there security implications to having a browser in emacs? - A [opalvaults]: With how Emacs deals with things like GPG/pass/etc. I feel like it's probably as secure as you make it? - A: [matthewzmd] the browser application is independent from emacs itself, you're using a browser in emacs, but the browser is not actually *in* emacs. The browser is QtWebEngine, a modified Chromium without Google stuff, it is as safe as a Chromium can be. - Q4: maybe i misunderstood, but is every eaf app essentially embedded QT? - A: yes, it's built upon qt-webengine  - A: Yes, it uses PyQt5 and it's essentially painting the Qt frame on top of emacs, simulating a buffer. EPC is used for Elisp <-> Python <-> JS communication so that you can extend Emacs in various langauges - Q: I guess/hope this is using qtwebengine, not qtwebkit? - A: right, qtwebengine.  If you wanna dig more into the internals of EAF, I suggest you to read this part of the Wiki ( or my talk from last year ( - Q5: Can the EAF dependencies be made into dynamically loadable modules for Emacs, so there will be no need to rebuilt Emacs? - A: There is no need to rebuilt Emacs, they're simply dependencies that you can install using the system package managers (pacman, apt, etc), npm install and pip install - One thing I never tried watching all this is viewing PDF files within emacs. - is there an eaf-app that's not a bootstrapping nightmare? I suppose having Vue as dependency makes that not so for a large number - This is pretty cool, from a security standpoint, I'm not sure I'd want a web browser in emacs all that much. - With how Emacs deals with things like GPG/pass/etc. I feel like it's probably as secure as you make it? - matthewzmd: TDT the browser application is independent from emacs itself, you're using a browser in emacs, but the browser is not actually in emacs - If it can be secured under something like firejail, that may be better, as long as there's some segmenting with any communication between the two. Then again, I generally run any browser in dedicated VMs. - ok now this is something i need - maybe i misunderstood, but is every eaf app essentially embedded QT? - matthewzmd: Yes, it uses PyQt5 and it's essentially painting the Qt frame on top of emacs, simulating a buffer. EPC is used for Elisp <-> Python <-> JS communication - I guess/hope this is using qtwebengine, not qtwebkit? ('cos qtwebkit is unmaintained and by now massively insecure) - matthewzmd: if you wanna dig more into the internals of EAF, I suggest you to read this part of the Wiki () or my talk from last year () Links and other notes: - - - - - if you wanna dig more into the internals of EAF, I suggest you to read this part of the Wiki ( or my talk from last year (  [[!inline pages="internal(2021/captions/eaf)" raw="yes"]] [[!inline pages="internal(2021/info/eaf-nav)" raw="yes"]]