summaryrefslogblamecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng-autogen.sbv
blob: 449411597f1643160a54fdb581fabfa40f00c527 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                      
                                       
















                                       
                                    







                                       
                                       

























                                        
                                      




                       
                                







                                      
                                      

                       
           

                       
                                   










                                       
                                     




                       
                                 







                                 
                                      




                              
                                       













                                      
                                 










                                     
                                      

























                                        
                                      










                                
                                    




                       
                                        




                                        
                                 

                       
                                   









































































                                        
                                        




                       
                                      













                                       
     










                                       
     




















































                                        
               







                                
                                      





































                                       
                                        







                                      
                                       

















































                                        
                                       








































                                        
                                  









































































                                        
                                   



































































                                        
                                      























































                                        
                                
















                                        
        





















































































                                        
                                        

                       
                               





























































                                       
                                  























































                                        
                                       




























                                        
          

                       
                                      



















                                     
                         










                                     
                                      






































































                                       
                            













                                      
                                       







                       
                                        







                                  
                            

















































                                        
                                    




                       
                                      




























                                        
            







                              
                                      

























                                        
                                  

                       
                                       
















                                        
                                        




                                      
                                     

                       
                                        




                       
                              







                                      
                                       




                       
                                    

















































                                        
                                      































                                        
               

                       
                                    

























                                    
                



























































































                                        
                              




























                                       
                                   





































                                        
                                      

























                                      
                                        













                                    
                               



















                                        
             














































                                        
                                       




                              
                               































                                      
                                
 
0:00:03.600,0:00:06.720
hello

0:00:04.560,0:00:08.000
hopefully everyone is staying safe and

0:00:06.720,0:00:10.000
staying home

0:00:08.000,0:00:12.000
I feel very grateful to live in a world

0:00:10.000,0:00:13.759
today that technology and free software

0:00:12.000,0:00:16.080
can be leveraged to connect people in

0:00:13.759,0:00:17.840
such disconnected and difficult times

0:00:16.080,0:00:19.920
and to have an online conference like

0:00:17.840,0:00:22.960
this hopefully you've all

0:00:19.920,0:00:24.720
enjoyed this year's Emacs con so far

0:00:22.960,0:00:26.880
many thanks to all the people that made

0:00:24.720,0:00:30.000
this possible

0:00:26.880,0:00:30.960
anyways welcome to my talk extend Emacs

0:00:30.000,0:00:34.079
to modern gui

0:00:30.960,0:00:35.920
applications with eaf the imax

0:00:34.079,0:00:38.320
application framework

0:00:35.920,0:00:39.840
this will be my first ever talk so

0:00:38.320,0:00:43.280
apologies for my

0:00:39.840,0:00:46.559
inexperience let us begin

0:00:43.280,0:00:47.840
about me my name is matthew zing you can

0:00:46.559,0:00:50.640
also call me mt

0:00:47.840,0:00:51.440
or mindu I'm a chinese canadian living

0:00:50.640,0:00:54.239
in toronto

0:00:51.440,0:00:56.079
ontario offline I'm an undergrad

0:00:54.239,0:00:57.760
studying mathematics at the university

0:00:56.079,0:01:00.480
of urudu

0:00:57.760,0:01:03.039
online I mean one of the admins of the

0:01:00.480,0:01:06.320
Emacs china

0:01:03.039,0:01:08.080
the largest Emacs forum in china so

0:01:06.320,0:01:10.960
to all chinese listen to my talk right

0:01:08.080,0:01:14.320
now feel free to check it out

0:01:10.960,0:01:17.280
and this is a link to my github profile

0:01:14.320,0:01:18.240
to my projects I'm involving one's me

0:01:17.280,0:01:20.159
max which is

0:01:18.240,0:01:21.840
I'm the author of a user-friendly

0:01:20.159,0:01:22.799
full-featured image configuration

0:01:21.840,0:01:25.040
distribution

0:01:22.799,0:01:26.880
it is what I'm using right now as well

0:01:25.040,0:01:29.119
as the imax application filter

0:01:26.880,0:01:30.400
which I help to maintain along with the

0:01:29.119,0:01:33.040
other other

0:01:30.400,0:01:35.360
lazy cat which of course is today's

0:01:33.040,0:01:35.360
topic

0:01:35.759,0:01:40.960
so as you might all might have already

0:01:38.720,0:01:43.600
noticed I'm currently using Emacs

0:01:40.960,0:01:45.360
and oh and opening navigating closing

0:01:43.600,0:01:46.159
all these websites that are rendered

0:01:45.360,0:01:49.200
properly

0:01:46.159,0:01:51.840
or within Emacs it's all thanks to the

0:01:49.200,0:01:54.000
ef project

0:01:51.840,0:01:55.920
so we're living in a society that's

0:01:54.000,0:01:59.520
heavily dependent on the internet

0:01:55.920,0:02:01.200
and multimedia it is unavoidable to run

0:01:59.520,0:02:02.880
to some occasion that you need to

0:02:01.200,0:02:04.799
open a fancy website that uses

0:02:02.880,0:02:08.239
javascript and css

0:02:04.799,0:02:11.120
or you need to watch some videos however

0:02:08.239,0:02:11.840
due to the nature and history of Emacs

0:02:11.120,0:02:13.840
it cannot

0:02:11.840,0:02:16.400
render all these modern graphics

0:02:13.840,0:02:19.360
effectively and efficiently

0:02:16.400,0:02:20.400
Emacs is solely a text-based editing

0:02:19.360,0:02:23.520
environment

0:02:20.400,0:02:25.680
and I argue that this is not a bad thing

0:02:23.520,0:02:27.760
in fact it is one of the reasons that me

0:02:25.680,0:02:29.760
and I believe many of you as well

0:02:27.760,0:02:30.879
are attracted to Emacs in the first

0:02:29.760,0:02:33.760
place

0:02:30.879,0:02:35.680
unfortunately this results in us having

0:02:33.760,0:02:37.040
to open a dedicated web browser to

0:02:35.680,0:02:38.879
browse the internet

0:02:37.040,0:02:41.440
open a dedicated video player to watch

0:02:38.879,0:02:42.640
some videos or a pdf render to read some

0:02:41.440,0:02:45.200
documents

0:02:42.640,0:02:46.000
so far ems cannot do all these tasks on

0:02:45.200,0:02:48.080
its own

0:02:46.000,0:02:51.519
but can only be achieved using other

0:02:48.080,0:02:55.840
external applications

0:02:51.519,0:02:58.640
so the other the author manatee lazy cat

0:02:55.840,0:03:00.560
or lazy cat in short didn't want to use

0:02:58.640,0:03:03.120
all these external applications

0:03:00.560,0:03:04.159
he wanted to have an uninterrupted e-max

0:03:03.120,0:03:07.280
experience

0:03:04.159,0:03:10.080
he wanted to truly live in e-max

0:03:07.280,0:03:11.040
however it would be a lot of work to

0:03:10.080,0:03:13.519
build this

0:03:11.040,0:03:16.239
modern application from scratch there's

0:03:13.519,0:03:18.800
simply no time or research to do that

0:03:16.239,0:03:20.400
so lazy car without utilizing existing

0:03:18.800,0:03:22.319
applications

0:03:20.400,0:03:24.959
and to try to make it collaborate with

0:03:22.319,0:03:26.000
Emacs there are many solutions available

0:03:24.959,0:03:28.560
one of it

0:03:26.000,0:03:30.159
is the e-max x windows manager and I'm

0:03:28.560,0:03:33.360
sure a lot of you already know that

0:03:30.159,0:03:35.200
the exwm however it didn't work for him

0:03:33.360,0:03:37.440
because although ux doubling opens the

0:03:35.200,0:03:38.239
door to use other applications within

0:03:37.440,0:03:40.879
Emacs

0:03:38.239,0:03:41.519
it as a fine window manager cannot

0:03:40.879,0:03:43.920
modify

0:03:41.519,0:03:45.040
customize or extend other software from

0:03:43.920,0:03:46.799
Emacs

0:03:45.040,0:03:48.480
for example it cannot modify the

0:03:46.799,0:03:49.599
behavior when you press a key in

0:03:48.480,0:03:52.159
chromium or

0:03:49.599,0:03:54.000
pdf viewer therefore it cannot utilize

0:03:52.159,0:03:57.360
the rich emax ecosystem that's been

0:03:54.000,0:04:00.720
growing for almost 40 years

0:03:57.360,0:04:03.760
on the other hand in the ef browser so

0:04:00.720,0:04:07.200
if you mx ef open

0:04:03.760,0:04:09.840
browser with history you can see

0:04:07.200,0:04:11.920
on the lower half of my screen a list of

0:04:09.840,0:04:14.560
histories sorted by my personal

0:04:11.920,0:04:16.560
most visited sites and you can search

0:04:14.560,0:04:19.440
for a site that you've been

0:04:16.560,0:04:21.840
into or search for some keyword and in a

0:04:19.440,0:04:24.240
search engine

0:04:21.840,0:04:25.919
so this is all achieved by utilizing the

0:04:24.240,0:04:29.120
popular completion framework in the

0:04:25.919,0:04:29.120
Emacs ecosystem

0:04:29.280,0:04:33.680
so this car decided to develop a

0:04:31.120,0:04:36.960
solution of its own in 2018

0:04:33.680,0:04:40.000
namely the eaf project so I joined the

0:04:36.960,0:04:40.000
development last year

0:04:40.840,0:04:47.880
2019 ef is

0:04:44.000,0:04:49.759
a highly customizable and extensible

0:04:47.880,0:04:52.160
reapplication framework that extends

0:04:49.759,0:04:57.840
imax to graphical capabilities using pi

0:04:52.160,0:05:02.479
qd5 and it is not a window manager

0:04:57.840,0:05:03.440
alright so in the readme you can see a

0:05:02.479,0:05:05.600
list of gifs

0:05:03.440,0:05:06.720
showcasing all the available ef

0:05:05.600,0:05:09.520
applications

0:05:06.720,0:05:10.960
a browser a markdown premier a video

0:05:09.520,0:05:14.240
player

0:05:10.960,0:05:16.160
a pdf viewer and more today I don't have

0:05:14.240,0:05:16.560
enough time to demonstrate each one of

0:05:16.160,0:05:18.720
them

0:05:16.560,0:05:21.120
but I will select a couple applications

0:05:18.720,0:05:24.240
to show you

0:05:21.120,0:05:27.840
so since we are already using ef browser

0:05:24.240,0:05:29.600
we'll start with this besides using the

0:05:27.840,0:05:32.000
classic control n control p

0:05:29.600,0:05:33.840
you can also use the vim style xjkl to

0:05:32.000,0:05:36.320
move up or down

0:05:33.840,0:05:37.280
also meta shift comma or g to the

0:05:36.320,0:05:39.120
beginning of page

0:05:37.280,0:05:41.199
when that shift period or capital g to

0:05:39.120,0:05:44.320
the end of page

0:05:41.199,0:05:46.479
limiting and surfing keys linear and

0:05:44.320,0:05:48.400
surfing keys are popular keyboard-based

0:05:46.479,0:05:50.479
browsing techniques in chrome

0:05:48.400,0:05:52.720
and they've imported here as well you

0:05:50.479,0:05:53.039
can press f to toggle markers pointing

0:05:52.720,0:05:55.280
to

0:05:53.039,0:05:56.960
all the links in the current page say I

0:05:55.280,0:05:59.680
want to visit the wiki

0:05:56.960,0:06:02.400
which comes very very handy when you

0:05:59.680,0:06:04.720
want to configure ef to your liking

0:06:02.400,0:06:05.440
so you see the marker on top of wiki is

0:06:04.720,0:06:08.479
dd

0:06:05.440,0:06:10.240
press dd and you enter and now

0:06:08.479,0:06:13.680
you will navigate it to this link so you

0:06:10.240,0:06:13.680
don't need to use your mouse at all

0:06:13.840,0:06:17.680
so a full list of key bindings can be

0:06:16.560,0:06:20.560
found when you

0:06:17.680,0:06:21.199
control hm just as any other max major

0:06:20.560,0:06:22.960
mode

0:06:21.199,0:06:25.600
so you don't have to remember everything

0:06:22.960,0:06:28.560
all the key bindings I said to you

0:06:25.600,0:06:30.960
so this is a global binding application

0:06:28.560,0:06:34.319
to every other ef application as well

0:06:30.960,0:06:36.720
so you can find it under the week or or

0:06:34.319,0:06:37.600
you can find it under the wiki in the

0:06:36.720,0:06:40.639
key binding

0:06:37.600,0:06:44.240
section so press f again and use

0:06:40.639,0:06:45.600
ns press enter now you're in the key

0:06:44.240,0:06:47.520
binding web page

0:06:45.600,0:06:49.280
you can see all of the key buttons

0:06:47.520,0:06:53.919
available in every

0:06:49.280,0:06:56.479
es application and you can try them out

0:06:53.919,0:06:57.360
and you can customize your key bindings

0:06:56.479,0:07:00.240
using ef

0:06:57.360,0:07:02.960
bank key you can customize control n as

0:07:00.240,0:07:05.759
in the web page to

0:07:02.960,0:07:06.639
to scroll up in the ef pdf viewer or you

0:07:05.759,0:07:09.599
can unbind

0:07:06.639,0:07:10.000
an existing binding using using yet bank

0:07:09.599,0:07:14.800
key

0:07:10.000,0:07:14.800
binder to new so it doesn't bind to

0:07:14.840,0:07:20.319
anything

0:07:16.160,0:07:22.479
okay so here comes the important part

0:07:20.319,0:07:25.440
if you want to customize ef you should

0:07:22.479,0:07:28.840
visit the customization page in the wiki

0:07:25.440,0:07:30.240
so now I press meta b to go back in

0:07:28.840,0:07:32.960
history and

0:07:30.240,0:07:34.080
go to the customization package press f

0:07:32.960,0:07:36.639
press a d

0:07:34.080,0:07:37.360
enter and now we're in the customization

0:07:36.639,0:07:39.280
page

0:07:37.360,0:07:42.400
so the first customization option you

0:07:39.280,0:07:42.400
see is dark mode

0:07:42.639,0:07:46.720
let's say if you want to turn on the doc

0:07:44.479,0:07:48.479
mode for ef browser

0:07:46.720,0:07:49.919
and you don't want to use your mouse to

0:07:48.479,0:07:53.360
do all this stuff

0:07:49.919,0:07:55.840
you press c and you can select

0:07:53.360,0:07:58.240
c to toggle the correct browsing you can

0:07:55.840,0:08:01.280
see a lot of markers available

0:07:58.240,0:08:02.720
pop um again but they're not they're not

0:08:01.280,0:08:03.599
on top of links but instead of

0:08:02.720,0:08:05.360
paragraphs

0:08:03.599,0:08:06.639
you select the paragraph or your choice

0:08:05.360,0:08:10.240
in this case you want

0:08:06.639,0:08:12.720
ls which comes here

0:08:10.240,0:08:15.120
and then you just you just move the

0:08:12.720,0:08:18.800
cursor like what you always do

0:08:15.120,0:08:23.280
in Emacs and now you select everything

0:08:18.800,0:08:25.680
and use meta w to

0:08:23.280,0:08:26.479
excuse me metadata to copy the taste the

0:08:25.680,0:08:29.199
text

0:08:26.479,0:08:30.960
now we made a shift column to evaluate

0:08:29.199,0:08:35.120
what we just copied

0:08:30.960,0:08:38.320
and set that to true and

0:08:35.120,0:08:42.159
press r or f5 to refresh the page

0:08:38.320,0:08:44.880
voila we have the dark mode enabled

0:08:42.159,0:08:46.160
so there are well let's take a toggle

0:08:44.880,0:08:49.360
back off for now

0:08:46.160,0:08:51.600
now we made our shift column again

0:08:49.360,0:08:53.519
and we find the the one we just used and

0:08:51.600,0:08:56.880
change it back to false

0:08:53.519,0:08:59.120
and refresh the page back in the light

0:08:56.880,0:08:59.120
mode

0:08:59.360,0:09:03.680
so there are many other customization

0:09:02.160,0:09:05.920
options available you can either

0:09:03.680,0:09:08.000
evaluate like what we just did or add it

0:09:05.920,0:09:11.680
to your Emacs configuration file

0:09:08.000,0:09:14.399
so in this wiki you can have you can

0:09:11.680,0:09:16.320
you can make the ef browser to to

0:09:14.399,0:09:20.160
continue where you left off

0:09:16.320,0:09:22.800
similar to the chromium setting

0:09:20.160,0:09:23.839
and you can make yes the default browser

0:09:22.800,0:09:26.720
Emacs by

0:09:23.839,0:09:27.680
aliasing aliasing browse web to your

0:09:26.720,0:09:30.399
open browser

0:09:27.680,0:09:31.200
or or set the browse url browser

0:09:30.399,0:09:33.519
function to

0:09:31.200,0:09:34.480
open browser there's just some tricks

0:09:33.519,0:09:37.920
and there are also

0:09:34.480,0:09:41.680
uh an experimental app blocker currently

0:09:37.920,0:09:44.720
take in place and so therefore it can

0:09:41.680,0:09:47.279
block some elements but not all so

0:09:44.720,0:09:48.240
we we really encourage people to help us

0:09:47.279,0:09:51.440
test out and

0:09:48.240,0:09:54.560
add more conditions in

0:09:51.440,0:09:55.760
so you can so the ef browser is able to

0:09:54.560,0:09:57.680
download

0:09:55.760,0:09:59.920
any files from the internet and it will

0:09:57.680,0:10:04.000
be downloaded using

0:09:59.920,0:10:06.079
a area too and

0:10:04.000,0:10:07.200
you can also customize the ef browser

0:10:06.079,0:10:11.120
download path

0:10:07.200,0:10:14.399
using ef set so it's a function that we

0:10:11.120,0:10:15.040
defined similar to set the normal set we

0:10:14.399,0:10:16.480
know

0:10:15.040,0:10:18.160
so by default the download file is

0:10:16.480,0:10:19.600
stored in your home directory slash

0:10:18.160,0:10:20.800
downloads

0:10:19.600,0:10:22.720
and you can change that whenever you

0:10:20.800,0:10:26.079
want you can also disable

0:10:22.720,0:10:28.959
saving browsing history so remember

0:10:26.079,0:10:30.480
when I press when I use mx you have open

0:10:28.959,0:10:32.079
browser's history I see all the

0:10:30.480,0:10:33.680
histories here but if you want more

0:10:32.079,0:10:35.360
privacy you don't want that to be

0:10:33.680,0:10:36.560
available at all you can turn it off

0:10:35.360,0:10:38.720
easily with ef

0:10:36.560,0:10:40.640
set queue and set that remember history

0:10:38.720,0:10:42.399
to false

0:10:40.640,0:10:43.839
you can also say your default search

0:10:42.399,0:10:47.200
engine so

0:10:43.839,0:10:50.480
so right now we have google although

0:10:47.200,0:10:53.600
not not really good but google and also

0:10:50.480,0:10:57.360
go which is a better search engine

0:10:53.600,0:10:59.360
well uh yeah ethically better search

0:10:57.360,0:11:02.560
engine

0:10:59.360,0:11:05.040
so you can also configure

0:11:02.560,0:11:07.600
the zoom so the default zoom of your

0:11:05.040,0:11:10.000
browser is 1.0 so you can convert

0:11:07.600,0:11:11.920
convert 3000 to 1.25 so you can so when

0:11:10.000,0:11:14.079
you open any web page about it will be

0:11:11.920,0:11:17.360
zoomed

0:11:14.079,0:11:20.399
by default uh you can

0:11:17.360,0:11:22.240
also disable javascript although I

0:11:20.399,0:11:23.440
personally don't really suggest you to

0:11:22.240,0:11:26.240
do because it will

0:11:23.440,0:11:28.480
basically break a lot of our features

0:11:26.240,0:11:29.519
because a lot of the browser browser

0:11:28.480,0:11:33.600
related features

0:11:29.519,0:11:33.600
must be implemented using javascript

0:11:33.760,0:11:37.920
but yeah you can do it if you really

0:11:35.440,0:11:41.519
want to and there also some

0:11:37.920,0:11:45.519
customization on ef camera

0:11:41.519,0:11:45.519
you can do as well yeah

0:11:47.760,0:11:56.079
so uh let's move on to efpd viewer

0:11:52.399,0:11:59.440
so now now let's open

0:11:56.079,0:12:01.519
the pdf file using af

0:11:59.440,0:12:02.720
so that's one something already here but

0:12:01.519,0:12:06.079
let's open it here

0:12:02.720,0:12:08.160
so yes open and

0:12:06.079,0:12:11.440
select introduction to programming in

0:12:08.160,0:12:13.760
e-max list

0:12:11.440,0:12:16.800
uh I have it already open but it's okay

0:12:13.760,0:12:16.800
so you have the file

0:12:17.040,0:12:22.800
you have other files displayed

0:12:20.160,0:12:23.200
you have all the pages display story yes

0:12:22.800,0:12:27.040
and

0:12:23.200,0:12:29.279
there are 273 pages in total but notice

0:12:27.040,0:12:31.440
like how fast it is to browse

0:12:29.279,0:12:33.519
all the pages it is blazingly fast

0:12:31.440,0:12:37.040
that's all thanks to python and

0:12:33.519,0:12:39.839
mupdf which you don't really get from

0:12:37.040,0:12:39.839
Emacs list

0:12:40.880,0:12:44.079
so let's say if I want to jump to page

0:12:43.600,0:12:48.320
50

0:12:44.079,0:12:48.320
we press p and enter 50.

0:12:48.639,0:12:55.440
50 and here we are we are at page 50.

0:12:53.279,0:12:58.880
you can look at the lower right to

0:12:55.440,0:13:02.079
verify the page you're on

0:12:58.880,0:13:05.120
and you can you can

0:13:02.079,0:13:07.839
use I to toggle dark mode

0:13:05.120,0:13:08.240
as expected and let's say you want to

0:13:07.839,0:13:11.519
find

0:13:08.240,0:13:15.680
table of contents so use ctrl s

0:13:11.519,0:13:19.360
the image default binding for I search

0:13:15.680,0:13:21.680
and search for a table of contents

0:13:19.360,0:13:23.120
here we are it is highlighted for you

0:13:21.680,0:13:24.240
and you can control s for more but

0:13:23.120,0:13:27.200
there's only one or

0:13:24.240,0:13:28.800
one match one other one you ctrl g to

0:13:27.200,0:13:30.880
disable the highlight

0:13:28.800,0:13:32.320
and you see a lot of options for you to

0:13:30.880,0:13:35.040
go

0:13:32.320,0:13:36.240
okay let's say if you want to go to the

0:13:35.040,0:13:39.519
preface

0:13:36.240,0:13:40.639
so that is you press f which which is

0:13:39.519,0:13:44.240
also similar to

0:13:40.639,0:13:47.760
eef browser you press f for vimeo

0:13:44.240,0:13:50.160
and you see the marker now change to w

0:13:47.760,0:13:51.279
press wn and then you can go to the

0:13:50.160,0:13:54.320
prefix

0:13:51.279,0:13:56.480
now we'll add a prefix

0:13:54.320,0:13:57.600
so now you finish reading you want to

0:13:56.480,0:13:59.440
save your progress

0:13:57.600,0:14:01.199
no worries it is already saved for you

0:13:59.440,0:14:04.240
by ef you can safely

0:14:01.199,0:14:07.519
close the document using x

0:14:04.240,0:14:10.560
and opening again af

0:14:07.519,0:14:14.000
open and the file see your I

0:14:10.560,0:14:16.560
preface again so you're right at where

0:14:14.000,0:14:19.440
you let up left up

0:14:16.560,0:14:20.480
you can also use mx org store link or

0:14:19.440,0:14:23.279
ctrl cl

0:14:20.480,0:14:24.480
which I prefer to if you want to save a

0:14:23.279,0:14:28.240
particular page in

0:14:24.480,0:14:30.320
a orgmo file so now

0:14:28.240,0:14:31.760
I go back to my presentation now I don't

0:14:30.320,0:14:35.600
need this anymore

0:14:31.760,0:14:39.120
uh so you just control c control l

0:14:35.600,0:14:41.040
or I think mx or insert link

0:14:39.120,0:14:42.399
so you can find the file right here and

0:14:41.040,0:14:44.320
you press enter

0:14:42.399,0:14:46.480
and you press enter for the description

0:14:44.320,0:14:50.720
again and now it's right here

0:14:46.480,0:14:54.000
and ctrl c ctrl o to open it voila

0:14:50.720,0:14:57.120
you're back right so

0:14:54.000,0:14:58.880
let's now demonstrate the ef video

0:14:57.120,0:15:02.639
player

0:14:58.880,0:15:03.279
so mxef open if you use ef open whenever

0:15:02.639,0:15:06.079
you want to

0:15:03.279,0:15:07.279
open some file you use yet open browser

0:15:06.079,0:15:09.920
if you want to use some

0:15:07.279,0:15:11.199
actual application that's not really

0:15:09.920,0:15:14.800
related to a file

0:15:11.199,0:15:15.600
so you have open and select the video

0:15:14.800,0:15:18.320
you want so

0:15:15.600,0:15:19.040
video demo so I already have a video

0:15:18.320,0:15:21.839
demo

0:15:19.040,0:15:22.720
ready so because I recorded a video of

0:15:21.839,0:15:26.000
the demo

0:15:22.720,0:15:28.079
of the ef camera have a look so

0:15:26.000,0:15:29.279
let's move to the beginning hello people

0:15:28.079,0:15:32.399
from the future

0:15:29.279,0:15:35.199
this is a demo of the ef video player

0:15:32.399,0:15:37.440
that demos the ef camera feature

0:15:35.199,0:15:38.639
so as you can see on the screen of me

0:15:37.440,0:15:40.959
inside my camera

0:15:38.639,0:15:42.880
and the screen is actually with all

0:15:40.959,0:15:46.079
within Emacs

0:15:42.880,0:15:49.839
right so and you can open this

0:15:46.079,0:15:53.040
using here open camera

0:15:49.839,0:15:53.600
and which I'm already into and you can

0:15:53.040,0:15:56.720
press

0:15:53.600,0:15:59.680
p to capture a photo

0:15:56.720,0:16:00.880
so the photo is by default stored at

0:15:59.680,0:16:03.920
your home slash

0:16:00.880,0:16:04.320
downloads directory and you can modify

0:16:03.920,0:16:07.839
it

0:16:04.320,0:16:09.519
freely so if you go here and you can see

0:16:07.839,0:16:13.759
the camera stored

0:16:09.519,0:16:16.240
right here so why what I used here

0:16:13.759,0:16:17.120
so you press space to pause what I used

0:16:16.240,0:16:20.320
here is

0:16:17.120,0:16:22.959
the year so ef open this entire so

0:16:20.320,0:16:23.839
basically so in direct you you go to you

0:16:22.959,0:16:26.959
you select

0:16:23.839,0:16:30.320
the file that should be opened by

0:16:26.959,0:16:32.720
eaf and I use that so it it detects that

0:16:30.320,0:16:35.839
it wants to use the ef image viewer so

0:16:32.720,0:16:39.759
I accidentally tested if image viewer

0:16:35.839,0:16:40.240
before I noticed so that that that gives

0:16:39.759,0:16:43.680
the

0:16:40.240,0:16:47.040
image of the photo I just took

0:16:43.680,0:16:47.360
using ef camera and as you can see you

0:16:47.040,0:16:50.720
can

0:16:47.360,0:16:51.600
I can use hl the bim button to navigate

0:16:50.720,0:16:55.920
in the time

0:16:51.600,0:17:00.880
timestamp in the video and I can use

0:16:55.920,0:17:00.880
jk to to change the volumes of the video

0:17:02.320,0:17:06.160
alright so now you've seen all the basic

0:17:05.520,0:17:08.720
usages

0:17:06.160,0:17:11.600
of the ef project it comes the question

0:17:08.720,0:17:14.559
of what is the magic behind it

0:17:11.600,0:17:15.919
all right let's open the hacking page in

0:17:14.559,0:17:20.400
the wiki

0:17:15.919,0:17:24.799
the design is laid out in a diagram here

0:17:20.400,0:17:24.799
so and let's put it

0:17:25.120,0:17:28.160
side by side along with my text so you

0:17:27.839,0:17:32.320
can

0:17:28.160,0:17:36.080
go we can follow through

0:17:32.320,0:17:39.440
right okay let me

0:17:36.080,0:17:39.440
sorry let me drink some water

0:17:42.320,0:17:48.160
so this page in the wiki went into a lot

0:17:46.000,0:17:49.520
of detail

0:17:48.160,0:17:51.679
due to the time constraint I will just

0:17:49.520,0:17:53.520
rephrase some of the ideas here so for

0:17:51.679,0:17:55.600
anyone interested please have a look at

0:17:53.520,0:17:58.160
the wiki yourself

0:17:55.600,0:17:58.720
the easiest way to think about eaf is

0:17:58.160,0:18:01.679
that

0:17:58.720,0:18:02.960
the actual gui application is started in

0:18:01.679,0:18:04.960
the background

0:18:02.960,0:18:07.120
then the frame of the application is

0:18:04.960,0:18:07.679
attached to the appropriate location on

0:18:07.120,0:18:10.720
the

0:18:07.679,0:18:13.440
Emacs window so

0:18:10.720,0:18:14.960
you have linked qt5 with Emacs using

0:18:13.440,0:18:17.120
list and python

0:18:14.960,0:18:18.640
of the python site which is colored

0:18:17.120,0:18:20.559
yellow in the image

0:18:18.640,0:18:22.960
you have two graphics view and queue

0:18:20.559,0:18:25.039
graphics scene objects

0:18:22.960,0:18:26.640
these are used to simulate the e-max

0:18:25.039,0:18:28.640
window buffer design

0:18:26.640,0:18:29.840
where q graphics scene is similar to

0:18:28.640,0:18:31.840
buffers in Emacs

0:18:29.840,0:18:34.240
it controls the state and the content

0:18:31.840,0:18:38.880
details of the application

0:18:34.240,0:18:38.880
well q graphics view is similar to

0:18:39.039,0:18:43.200
geographic view is similar to imax

0:18:41.200,0:18:45.919
window it populates the buffer

0:18:43.200,0:18:46.960
to graphics scene to the full program at

0:18:45.919,0:18:50.320
the appropriate

0:18:46.960,0:18:57.679
position whenever an ef mode buffer

0:18:50.320,0:18:59.679
brings to a background

0:18:57.679,0:19:00.880
whenever an ef mode buffer brings to the

0:18:59.679,0:19:02.559
foreground sorry

0:19:00.880,0:19:05.120
a queue graphics view instance is

0:19:02.559,0:19:06.080
created and whenever the buffer goes to

0:19:05.120,0:19:08.000
the background

0:19:06.080,0:19:09.120
the q graphics view instance is then

0:19:08.000,0:19:10.960
deleted

0:19:09.120,0:19:12.480
while q graphics scene the actual

0:19:10.960,0:19:14.480
process remains running in the

0:19:12.480,0:19:16.000
background until the ef mode buffer is

0:19:14.480,0:19:18.320
killed

0:19:16.000,0:19:19.440
gpa compositing is used to ensure that q

0:19:18.320,0:19:21.840
graphics view and

0:19:19.440,0:19:24.000
graphics sync is synchronized real time

0:19:21.840,0:19:25.679
using q windows set parent function

0:19:24.000,0:19:27.840
the queue graphics view is attached to

0:19:25.679,0:19:30.640
appropriate location on the e-max frame

0:19:27.840,0:19:32.400
so that although great applications are

0:19:30.640,0:19:35.760
not running within e-max

0:19:32.400,0:19:35.760
they look as if they were

0:19:36.160,0:19:41.039
so when user types on the keyboard it is

0:19:39.039,0:19:43.520
first received by the Emacs ef

0:19:41.039,0:19:45.360
ef mode buffer and then it lifts sends

0:19:43.520,0:19:46.240
the event to google graphics sync using

0:19:45.360,0:19:48.720
dbus

0:19:46.240,0:19:50.400
when user clicks on the gui application

0:19:48.720,0:19:50.799
it is received by the queue graphics

0:19:50.400,0:19:53.280
view

0:19:50.799,0:19:55.200
and process in python ellipse can

0:19:53.280,0:19:59.200
communicate with python through dbus

0:19:55.200,0:20:01.360
in other words in other words you can

0:19:59.200,0:20:01.760
customize and extend Emacs not just

0:20:01.360,0:20:04.480
using

0:20:01.760,0:20:05.360
lisp and now you can use python this way

0:20:04.480,0:20:07.039
one can leverage

0:20:05.360,0:20:09.600
all the python properties like

0:20:07.039,0:20:11.679
multi-threading or some other stuff

0:20:09.600,0:20:13.520
the entire python ecosystem can be

0:20:11.679,0:20:16.159
utilized as well

0:20:13.520,0:20:16.960
such as the qt web engine that is the

0:20:16.159,0:20:20.640
basis for

0:20:16.960,0:20:23.360
our eef browser and pi mu pdf is the

0:20:20.640,0:20:25.840
basis for the ef pdf viewer

0:20:23.360,0:20:28.240
so this really opens the window to many

0:20:25.840,0:20:31.120
many new possibilities to extend Emacs

0:20:28.240,0:20:31.120
using eaf

0:20:32.720,0:20:37.760
all right back here we are always

0:20:36.080,0:20:39.679
looking for people to join the

0:20:37.760,0:20:42.720
development there are many many

0:20:39.679,0:20:44.640
more work that needs to be done like

0:20:42.720,0:20:46.640
such as testing and debug if there are

0:20:44.640,0:20:47.760
more linux distros and window managers

0:20:46.640,0:20:51.200
such as i3

0:20:47.760,0:20:52.080
and stuff I mean you can also add new ef

0:20:51.200,0:20:54.240
applications

0:20:52.080,0:20:55.440
or debug and enhance existing af

0:20:54.240,0:20:58.000
applications

0:20:55.440,0:21:00.240
or you can port ef to native wayland

0:20:58.000,0:21:03.840
which I just discussed with the

0:21:00.240,0:21:07.919
the ems whip kit author uh a kill

0:21:03.840,0:21:10.159
akira tile and she he told me that like

0:21:07.919,0:21:11.200
really like it must really yeah it

0:21:10.159,0:21:14.320
doesn't really work

0:21:11.200,0:21:16.799
um native villain because it uses

0:21:14.320,0:21:18.159
x valence so it doesn't work on the pgdk

0:21:16.799,0:21:20.559
port of Emacs

0:21:18.159,0:21:22.080
so and we also need people to pour ef to

0:21:20.559,0:21:25.600
non-free operating systems

0:21:22.080,0:21:28.480
including windows and mac os

0:21:25.600,0:21:30.080
and that's because like debug is a linux

0:21:28.480,0:21:31.360
specific feature so it doesn't really

0:21:30.080,0:21:33.039
work on other platform

0:21:31.360,0:21:34.640
we need to change replace it with some

0:21:33.039,0:21:36.720
alternative and

0:21:34.640,0:21:38.640
geographic scene somehow doesn't really

0:21:36.720,0:21:40.320
work on mac os

0:21:38.640,0:21:42.880
and there are many other to-do lists

0:21:40.320,0:21:45.039
available so please have a look

0:21:42.880,0:21:46.640
if and see it's anything you want to

0:21:45.039,0:21:49.039
work on

0:21:46.640,0:21:51.120
all right so since this is a

0:21:49.039,0:21:53.520
pre-recorded talk I won't be able to do

0:21:51.120,0:21:56.080
the q a real time in the video

0:21:53.520,0:21:57.200
however I will be around on the

0:21:56.080,0:22:00.559
collaborate pad

0:21:57.200,0:22:01.360
and the irc imax con you must come

0:22:00.559,0:22:04.240
questions

0:22:01.360,0:22:05.760
to answer any questions it pops up and

0:22:04.240,0:22:09.120
you can also submit an issue

0:22:05.760,0:22:12.640
on the repo and you can check the wiki

0:22:09.120,0:22:15.039
for some other guides and tricks

0:22:12.640,0:22:16.000
all right thank you guys and hopefully

0:22:15.039,0:22:18.320
you find the

0:22:16.000,0:22:24.320
this year project very interesting and

0:22:18.320,0:22:24.320
enjoy the rest of Emacs com 2020