summaryrefslogblamecommitdiffstats
path: root/2021/talks/eaf.md
blob: 3c8f9bf30d7b3658ad3bf553d129a17c871eb11c (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                                 

                                                              




                                                                      

          



                                                                         

                                                                     














                                                                                                                                                                                                                                                                                                                                                                                                                     

                    
                                                                        
                                                          
                                                                     
                                                                        
                                                                      
                                                                        
                                                                 
                                    



                                                                       



                                                                       

                                                                     
           


                                                                      



                                                                        

                                                                  
                                                                   
                                                                    









                                                                                         
                                                            


                                                                  










                                                                                                                                                                                                                                                         
 

                      







                                                                             
 
                                                         
 
                                                         
[[!meta title="Emacs Application Framework: A 2021 Update"]]
[[!meta copyright="Copyright © 2021 Matthew Zeng"]]
[[!inline pages="internal(2021/info/eaf-nav)" raw="yes"]]

<!-- You can manually edit this file to update the abstract, add links, etc. --->


# 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
                (<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

- 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 (<https://github.com/emacs-eaf/emacs-application-framework/wiki/Hacking>) or my talk from last year (<https://emacsconf.org/2020/talks/34/>)

Links and other notes:

-   <https://github.com/emacs-eaf/emacs-application-framework>
-   <https://github.com/emacs-eaf/eaf-file-manager>
-   <https://github.com/emacs-eaf/eaf-rss-reader>
-   <https://github.com/manateelazycat/popweb>
-   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/)> 

[[!inline pages="internal(2021/captions/eaf)" raw="yes"]]

[[!inline pages="internal(2021/info/eaf-nav)" raw="yes"]]