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