WEBVTT 00:00:03.600 --> 00:00:04.560 hello 00:00:04.560 --> 00:00:06.720 hopefully everyone is staying safe and 00:00:06.720 --> 00:00:08.000 staying home 00:00:08.000 --> 00:00:10.000 I feel very grateful to live in a world 00:00:10.000 --> 00:00:12.000 today that technology and free software 00:00:12.000 --> 00:00:13.759 can be leveraged to connect people in 00:00:13.759 --> 00:00:16.080 such disconnected and difficult times 00:00:16.080 --> 00:00:17.840 and to have an online conference like 00:00:17.840 --> 00:00:19.920 this hopefully you've all 00:00:19.920 --> 00:00:22.960 enjoyed this year's Emacs con so far 00:00:22.960 --> 00:00:24.720 many thanks to all the people that made 00:00:24.720 --> 00:00:26.880 this possible 00:00:26.880 --> 00:00:30.000 anyways welcome to my talk extend Emacs 00:00:30.000 --> 00:00:30.960 to modern gui 00:00:30.960 --> 00:00:34.079 applications with eaf the imax 00:00:34.079 --> 00:00:35.920 application framework 00:00:35.920 --> 00:00:38.320 this will be my first ever talk so 00:00:38.320 --> 00:00:39.840 apologies for my 00:00:39.840 --> 00:00:43.280 inexperience let us begin 00:00:43.280 --> 00:00:46.559 about me my name is matthew zing you can 00:00:46.559 --> 00:00:47.840 also call me mt 00:00:47.840 --> 00:00:50.640 or mindu I'm a chinese canadian living 00:00:50.640 --> 00:00:51.440 in toronto 00:00:51.440 --> 00:00:54.239 ontario offline I'm an undergrad 00:00:54.239 --> 00:00:56.079 studying mathematics at the university 00:00:56.079 --> 00:00:57.760 of urudu 00:00:57.760 --> 00:01:00.480 online I mean one of the admins of the 00:01:00.480 --> 00:01:03.039 Emacs china 00:01:03.039 --> 00:01:06.320 the largest Emacs forum in china so 00:01:06.320 --> 00:01:08.080 to all chinese listen to my talk right 00:01:08.080 --> 00:01:10.960 now feel free to check it out 00:01:10.960 --> 00:01:14.320 and this is a link to my github profile 00:01:14.320 --> 00:01:17.280 to my projects I'm involving one's me 00:01:17.280 --> 00:01:18.240 max which is 00:01:18.240 --> 00:01:20.159 I'm the author of a user-friendly 00:01:20.159 --> 00:01:21.840 full-featured image configuration 00:01:21.840 --> 00:01:22.799 distribution 00:01:22.799 --> 00:01:25.040 it is what I'm using right now as well 00:01:25.040 --> 00:01:26.880 as the imax application filter 00:01:26.880 --> 00:01:29.119 which I help to maintain along with the 00:01:29.119 --> 00:01:30.400 other other 00:01:30.400 --> 00:01:33.040 lazy cat which of course is today's 00:01:33.040 --> 00:01:35.759 topic 00:01:35.759 --> 00:01:38.720 so as you might all might have already 00:01:38.720 --> 00:01:40.960 noticed I'm currently using Emacs 00:01:40.960 --> 00:01:43.600 and oh and opening navigating closing 00:01:43.600 --> 00:01:45.360 all these websites that are rendered 00:01:45.360 --> 00:01:46.159 properly 00:01:46.159 --> 00:01:49.200 or within Emacs it's all thanks to the 00:01:49.200 --> 00:01:51.840 ef project 00:01:51.840 --> 00:01:54.000 so we're living in a society that's 00:01:54.000 --> 00:01:55.920 heavily dependent on the internet 00:01:55.920 --> 00:01:59.520 and multimedia it is unavoidable to run 00:01:59.520 --> 00:02:01.200 to some occasion that you need to 00:02:01.200 --> 00:02:02.880 open a fancy website that uses 00:02:02.880 --> 00:02:04.799 javascript and css 00:02:04.799 --> 00:02:08.239 or you need to watch some videos however 00:02:08.239 --> 00:02:11.120 due to the nature and history of Emacs 00:02:11.120 --> 00:02:11.840 it cannot 00:02:11.840 --> 00:02:13.840 render all these modern graphics 00:02:13.840 --> 00:02:16.400 effectively and efficiently 00:02:16.400 --> 00:02:19.360 Emacs is solely a text-based editing 00:02:19.360 --> 00:02:20.400 environment 00:02:20.400 --> 00:02:23.520 and I argue that this is not a bad thing 00:02:23.520 --> 00:02:25.680 in fact it is one of the reasons that me 00:02:25.680 --> 00:02:27.760 and I believe many of you as well 00:02:27.760 --> 00:02:29.760 are attracted to Emacs in the first 00:02:29.760 --> 00:02:30.879 place 00:02:30.879 --> 00:02:33.760 unfortunately this results in us having 00:02:33.760 --> 00:02:35.680 to open a dedicated web browser to 00:02:35.680 --> 00:02:37.040 browse the internet 00:02:37.040 --> 00:02:38.879 open a dedicated video player to watch 00:02:38.879 --> 00:02:41.440 some videos or a pdf render to read some 00:02:41.440 --> 00:02:42.640 documents 00:02:42.640 --> 00:02:45.200 so far ems cannot do all these tasks on 00:02:45.200 --> 00:02:46.000 its own 00:02:46.000 --> 00:02:48.080 but can only be achieved using other 00:02:48.080 --> 00:02:51.519 external applications 00:02:51.519 --> 00:02:55.840 so the other the author manatee lazy cat 00:02:55.840 --> 00:02:58.640 or lazy cat in short didn't want to use 00:02:58.640 --> 00:03:00.560 all these external applications 00:03:00.560 --> 00:03:03.120 he wanted to have an uninterrupted e-max 00:03:03.120 --> 00:03:04.159 experience 00:03:04.159 --> 00:03:07.280 he wanted to truly live in e-max 00:03:07.280 --> 00:03:10.080 however it would be a lot of work to 00:03:10.080 --> 00:03:11.040 build this 00:03:11.040 --> 00:03:13.519 modern application from scratch there's 00:03:13.519 --> 00:03:16.239 simply no time or research to do that 00:03:16.239 --> 00:03:18.800 so lazy car without utilizing existing 00:03:18.800 --> 00:03:20.400 applications 00:03:20.400 --> 00:03:22.319 and to try to make it collaborate with 00:03:22.319 --> 00:03:24.959 Emacs there are many solutions available 00:03:24.959 --> 00:03:26.000 one of it 00:03:26.000 --> 00:03:28.560 is the e-max x windows manager and I'm 00:03:28.560 --> 00:03:30.159 sure a lot of you already know that 00:03:30.159 --> 00:03:33.360 the exwm however it didn't work for him 00:03:33.360 --> 00:03:35.200 because although ux doubling opens the 00:03:35.200 --> 00:03:37.440 door to use other applications within 00:03:37.440 --> 00:03:38.239 Emacs 00:03:38.239 --> 00:03:40.879 it as a fine window manager cannot 00:03:40.879 --> 00:03:41.519 modify 00:03:41.519 --> 00:03:43.920 customize or extend other software from 00:03:43.920 --> 00:03:45.040 Emacs 00:03:45.040 --> 00:03:46.799 for example it cannot modify the 00:03:46.799 --> 00:03:48.480 behavior when you press a key in 00:03:48.480 --> 00:03:49.599 chromium or 00:03:49.599 --> 00:03:52.159 pdf viewer therefore it cannot utilize 00:03:52.159 --> 00:03:54.000 the rich emax ecosystem that's been 00:03:54.000 --> 00:03:57.360 growing for almost 40 years 00:03:57.360 --> 00:04:00.720 on the other hand in the ef browser so 00:04:00.720 --> 00:04:03.760 if you mx ef open 00:04:03.760 --> 00:04:07.200 browser with history you can see 00:04:07.200 --> 00:04:09.840 on the lower half of my screen a list of 00:04:09.840 --> 00:04:11.920 histories sorted by my personal 00:04:11.920 --> 00:04:14.560 most visited sites and you can search 00:04:14.560 --> 00:04:16.560 for a site that you've been 00:04:16.560 --> 00:04:19.440 into or search for some keyword and in a 00:04:19.440 --> 00:04:21.840 search engine 00:04:21.840 --> 00:04:24.240 so this is all achieved by utilizing the 00:04:24.240 --> 00:04:25.919 popular completion framework in the 00:04:25.919 --> 00:04:29.280 Emacs ecosystem 00:04:29.280 --> 00:04:31.120 so this car decided to develop a 00:04:31.120 --> 00:04:33.680 solution of its own in 2018 00:04:33.680 --> 00:04:36.960 namely the eaf project so I joined the 00:04:36.960 --> 00:04:40.840 development last year 00:04:40.840 --> 00:04:44.000 2019 ef is 00:04:44.000 --> 00:04:47.880 a highly customizable and extensible 00:04:47.880 --> 00:04:49.759 reapplication framework that extends 00:04:49.759 --> 00:04:52.160 imax to graphical capabilities using pi 00:04:52.160 --> 00:04:57.840 qd5 and it is not a window manager 00:04:57.840 --> 00:05:02.479 alright so in the readme you can see a 00:05:02.479 --> 00:05:03.440 list of gifs 00:05:03.440 --> 00:05:05.600 showcasing all the available ef 00:05:05.600 --> 00:05:06.720 applications 00:05:06.720 --> 00:05:09.520 a browser a markdown premier a video 00:05:09.520 --> 00:05:10.960 player 00:05:10.960 --> 00:05:14.240 a pdf viewer and more today I don't have 00:05:14.240 --> 00:05:16.160 enough time to demonstrate each one of 00:05:16.160 --> 00:05:16.560 them 00:05:16.560 --> 00:05:18.720 but I will select a couple applications 00:05:18.720 --> 00:05:21.120 to show you 00:05:21.120 --> 00:05:24.240 so since we are already using ef browser 00:05:24.240 --> 00:05:27.840 we'll start with this besides using the 00:05:27.840 --> 00:05:29.600 classic control n control p 00:05:29.600 --> 00:05:32.000 you can also use the vim style xjkl to 00:05:32.000 --> 00:05:33.840 move up or down 00:05:33.840 --> 00:05:36.320 also meta shift comma or g to the 00:05:36.320 --> 00:05:37.280 beginning of page 00:05:37.280 --> 00:05:39.120 when that shift period or capital g to 00:05:39.120 --> 00:05:41.199 the end of page 00:05:41.199 --> 00:05:44.320 limiting and surfing keys linear and 00:05:44.320 --> 00:05:46.479 surfing keys are popular keyboard-based 00:05:46.479 --> 00:05:48.400 browsing techniques in chrome 00:05:48.400 --> 00:05:50.479 and they've imported here as well you 00:05:50.479 --> 00:05:52.720 can press f to toggle markers pointing 00:05:52.720 --> 00:05:53.039 to 00:05:53.039 --> 00:05:55.280 all the links in the current page say I 00:05:55.280 --> 00:05:56.960 want to visit the wiki 00:05:56.960 --> 00:05:59.680 which comes very very handy when you 00:05:59.680 --> 00:06:02.400 want to configure ef to your liking 00:06:02.400 --> 00:06:04.720 so you see the marker on top of wiki is 00:06:04.720 --> 00:06:05.440 dd 00:06:05.440 --> 00:06:08.479 press dd and you enter and now 00:06:08.479 --> 00:06:10.240 you will navigate it to this link so you 00:06:10.240 --> 00:06:13.840 don't need to use your mouse at all 00:06:13.840 --> 00:06:16.560 so a full list of key bindings can be 00:06:16.560 --> 00:06:17.680 found when you 00:06:17.680 --> 00:06:20.560 control hm just as any other max major 00:06:20.560 --> 00:06:21.199 mode 00:06:21.199 --> 00:06:22.960 so you don't have to remember everything 00:06:22.960 --> 00:06:25.600 all the key bindings I said to you 00:06:25.600 --> 00:06:28.560 so this is a global binding application 00:06:28.560 --> 00:06:30.960 to every other ef application as well 00:06:30.960 --> 00:06:34.319 so you can find it under the week or or 00:06:34.319 --> 00:06:36.720 you can find it under the wiki in the 00:06:36.720 --> 00:06:37.600 key binding 00:06:37.600 --> 00:06:40.639 section so press f again and use 00:06:40.639 --> 00:06:44.240 ns press enter now you're in the key 00:06:44.240 --> 00:06:45.600 binding web page 00:06:45.600 --> 00:06:47.520 you can see all of the key buttons 00:06:47.520 --> 00:06:49.280 available in every 00:06:49.280 --> 00:06:53.919 es application and you can try them out 00:06:53.919 --> 00:06:56.479 and you can customize your key bindings 00:06:56.479 --> 00:06:57.360 using ef 00:06:57.360 --> 00:07:00.240 bank key you can customize control n as 00:07:00.240 --> 00:07:02.960 in the web page to 00:07:02.960 --> 00:07:05.759 to scroll up in the ef pdf viewer or you 00:07:05.759 --> 00:07:06.639 can unbind 00:07:06.639 --> 00:07:09.599 an existing binding using using yet bank 00:07:09.599 --> 00:07:10.000 key 00:07:10.000 --> 00:07:14.840 binder to new so it doesn't bind to 00:07:14.840 --> 00:07:16.160 anything 00:07:16.160 --> 00:07:20.319 okay so here comes the important part 00:07:20.319 --> 00:07:22.479 if you want to customize ef you should 00:07:22.479 --> 00:07:25.440 visit the customization page in the wiki 00:07:25.440 --> 00:07:28.840 so now I press meta b to go back in 00:07:28.840 --> 00:07:30.240 history and 00:07:30.240 --> 00:07:32.960 go to the customization package press f 00:07:32.960 --> 00:07:34.080 press a d 00:07:34.080 --> 00:07:36.639 enter and now we're in the customization 00:07:36.639 --> 00:07:37.360 page 00:07:37.360 --> 00:07:39.280 so the first customization option you 00:07:39.280 --> 00:07:42.639 see is dark mode 00:07:42.639 --> 00:07:44.479 let's say if you want to turn on the doc 00:07:44.479 --> 00:07:46.720 mode for ef browser 00:07:46.720 --> 00:07:48.479 and you don't want to use your mouse to 00:07:48.479 --> 00:07:49.919 do all this stuff 00:07:49.919 --> 00:07:53.360 you press c and you can select 00:07:53.360 --> 00:07:55.840 c to toggle the correct browsing you can 00:07:55.840 --> 00:07:58.240 see a lot of markers available 00:07:58.240 --> 00:08:01.280 pop um again but they're not they're not 00:08:01.280 --> 00:08:02.720 on top of links but instead of 00:08:02.720 --> 00:08:03.599 paragraphs 00:08:03.599 --> 00:08:05.360 you select the paragraph or your choice 00:08:05.360 --> 00:08:06.639 in this case you want 00:08:06.639 --> 00:08:10.240 ls which comes here 00:08:10.240 --> 00:08:12.720 and then you just you just move the 00:08:12.720 --> 00:08:15.120 cursor like what you always do 00:08:15.120 --> 00:08:18.800 in Emacs and now you select everything 00:08:18.800 --> 00:08:23.280 and use meta w to 00:08:23.280 --> 00:08:25.680 excuse me metadata to copy the taste the 00:08:25.680 --> 00:08:26.479 text 00:08:26.479 --> 00:08:29.199 now we made a shift column to evaluate 00:08:29.199 --> 00:08:30.960 what we just copied 00:08:30.960 --> 00:08:35.120 and set that to true and 00:08:35.120 --> 00:08:38.320 press r or f5 to refresh the page 00:08:38.320 --> 00:08:42.159 voila we have the dark mode enabled 00:08:42.159 --> 00:08:44.880 so there are well let's take a toggle 00:08:44.880 --> 00:08:46.160 back off for now 00:08:46.160 --> 00:08:49.360 now we made our shift column again 00:08:49.360 --> 00:08:51.600 and we find the the one we just used and 00:08:51.600 --> 00:08:53.519 change it back to false 00:08:53.519 --> 00:08:56.880 and refresh the page back in the light 00:08:56.880 --> 00:08:59.360 mode 00:08:59.360 --> 00:09:02.160 so there are many other customization 00:09:02.160 --> 00:09:03.680 options available you can either 00:09:03.680 --> 00:09:05.920 evaluate like what we just did or add it 00:09:05.920 --> 00:09:08.000 to your Emacs configuration file 00:09:08.000 --> 00:09:11.680 so in this wiki you can have you can 00:09:11.680 --> 00:09:14.399 you can make the ef browser to to 00:09:14.399 --> 00:09:16.320 continue where you left off 00:09:16.320 --> 00:09:20.160 similar to the chromium setting 00:09:20.160 --> 00:09:22.800 and you can make yes the default browser 00:09:22.800 --> 00:09:23.839 Emacs by 00:09:23.839 --> 00:09:26.720 aliasing aliasing browse web to your 00:09:26.720 --> 00:09:27.680 open browser 00:09:27.680 --> 00:09:30.399 or or set the browse url browser 00:09:30.399 --> 00:09:31.200 function to 00:09:31.200 --> 00:09:33.519 open browser there's just some tricks 00:09:33.519 --> 00:09:34.480 and there are also 00:09:34.480 --> 00:09:37.920 uh an experimental app blocker currently 00:09:37.920 --> 00:09:41.680 take in place and so therefore it can 00:09:41.680 --> 00:09:44.720 block some elements but not all so 00:09:44.720 --> 00:09:47.279 we we really encourage people to help us 00:09:47.279 --> 00:09:48.240 test out and 00:09:48.240 --> 00:09:51.440 add more conditions in 00:09:51.440 --> 00:09:54.560 so you can so the ef browser is able to 00:09:54.560 --> 00:09:55.760 download 00:09:55.760 --> 00:09:57.680 any files from the internet and it will 00:09:57.680 --> 00:09:59.920 be downloaded using 00:09:59.920 --> 00:10:04.000 a area too and 00:10:04.000 --> 00:10:06.079 you can also customize the ef browser 00:10:06.079 --> 00:10:07.200 download path 00:10:07.200 --> 00:10:11.120 using ef set so it's a function that we 00:10:11.120 --> 00:10:14.399 defined similar to set the normal set we 00:10:14.399 --> 00:10:15.040 know 00:10:15.040 --> 00:10:16.480 so by default the download file is 00:10:16.480 --> 00:10:18.160 stored in your home directory slash 00:10:18.160 --> 00:10:19.600 downloads 00:10:19.600 --> 00:10:20.800 and you can change that whenever you 00:10:20.800 --> 00:10:22.720 want you can also disable 00:10:22.720 --> 00:10:26.079 saving browsing history so remember 00:10:26.079 --> 00:10:28.959 when I press when I use mx you have open 00:10:28.959 --> 00:10:30.480 browser's history I see all the 00:10:30.480 --> 00:10:32.079 histories here but if you want more 00:10:32.079 --> 00:10:33.680 privacy you don't want that to be 00:10:33.680 --> 00:10:35.360 available at all you can turn it off 00:10:35.360 --> 00:10:36.560 easily with ef 00:10:36.560 --> 00:10:38.720 set queue and set that remember history 00:10:38.720 --> 00:10:40.640 to false 00:10:40.640 --> 00:10:42.399 you can also say your default search 00:10:42.399 --> 00:10:43.839 engine so 00:10:43.839 --> 00:10:47.200 so right now we have google although 00:10:47.200 --> 00:10:50.480 not not really good but google and also 00:10:50.480 --> 00:10:53.600 go which is a better search engine 00:10:53.600 --> 00:10:57.360 well uh yeah ethically better search 00:10:57.360 --> 00:10:59.360 engine 00:10:59.360 --> 00:11:02.560 so you can also configure 00:11:02.560 --> 00:11:05.040 the zoom so the default zoom of your 00:11:05.040 --> 00:11:07.600 browser is 1.0 so you can convert 00:11:07.600 --> 00:11:10.000 convert 3000 to 1.25 so you can so when 00:11:10.000 --> 00:11:11.920 you open any web page about it will be 00:11:11.920 --> 00:11:14.079 zoomed 00:11:14.079 --> 00:11:17.360 by default uh you can 00:11:17.360 --> 00:11:20.399 also disable javascript although I 00:11:20.399 --> 00:11:22.240 personally don't really suggest you to 00:11:22.240 --> 00:11:23.440 do because it will 00:11:23.440 --> 00:11:26.240 basically break a lot of our features 00:11:26.240 --> 00:11:28.480 because a lot of the browser browser 00:11:28.480 --> 00:11:29.519 related features 00:11:29.519 --> 00:11:33.760 must be implemented using javascript 00:11:33.760 --> 00:11:35.440 but yeah you can do it if you really 00:11:35.440 --> 00:11:37.920 want to and there also some 00:11:37.920 --> 00:11:41.519 customization on ef camera 00:11:41.519 --> 00:11:47.760 you can do as well yeah 00:11:47.760 --> 00:11:52.399 so uh let's move on to efpd viewer 00:11:52.399 --> 00:11:56.079 so now now let's open 00:11:56.079 --> 00:11:59.440 the pdf file using af 00:11:59.440 --> 00:12:01.519 so that's one something already here but 00:12:01.519 --> 00:12:02.720 let's open it here 00:12:02.720 --> 00:12:06.079 so yes open and 00:12:06.079 --> 00:12:08.160 select introduction to programming in 00:12:08.160 --> 00:12:11.440 e-max list 00:12:11.440 --> 00:12:13.760 uh I have it already open but it's okay 00:12:13.760 --> 00:12:17.040 so you have the file 00:12:17.040 --> 00:12:20.160 you have other files displayed 00:12:20.160 --> 00:12:22.800 you have all the pages display story yes 00:12:22.800 --> 00:12:23.200 and 00:12:23.200 --> 00:12:27.040 there are 273 pages in total but notice 00:12:27.040 --> 00:12:29.279 like how fast it is to browse 00:12:29.279 --> 00:12:31.440 all the pages it is blazingly fast 00:12:31.440 --> 00:12:33.519 that's all thanks to python and 00:12:33.519 --> 00:12:37.040 mupdf which you don't really get from 00:12:37.040 --> 00:12:40.880 Emacs list 00:12:40.880 --> 00:12:43.600 so let's say if I want to jump to page 00:12:43.600 --> 00:12:44.079 50 00:12:44.079 --> 00:12:48.639 we press p and enter 50. 00:12:48.639 --> 00:12:53.279 50 and here we are we are at page 50. 00:12:53.279 --> 00:12:55.440 you can look at the lower right to 00:12:55.440 --> 00:12:58.880 verify the page you're on 00:12:58.880 --> 00:13:02.079 and you can you can 00:13:02.079 --> 00:13:05.120 use I to toggle dark mode 00:13:05.120 --> 00:13:07.839 as expected and let's say you want to 00:13:07.839 --> 00:13:08.240 find 00:13:08.240 --> 00:13:11.519 table of contents so use ctrl s 00:13:11.519 --> 00:13:15.680 the image default binding for I search 00:13:15.680 --> 00:13:19.360 and search for a table of contents 00:13:19.360 --> 00:13:21.680 here we are it is highlighted for you 00:13:21.680 --> 00:13:23.120 and you can control s for more but 00:13:23.120 --> 00:13:24.240 there's only one or 00:13:24.240 --> 00:13:27.200 one match one other one you ctrl g to 00:13:27.200 --> 00:13:28.800 disable the highlight 00:13:28.800 --> 00:13:30.880 and you see a lot of options for you to 00:13:30.880 --> 00:13:32.320 go 00:13:32.320 --> 00:13:35.040 okay let's say if you want to go to the 00:13:35.040 --> 00:13:36.240 preface 00:13:36.240 --> 00:13:39.519 so that is you press f which which is 00:13:39.519 --> 00:13:40.639 also similar to 00:13:40.639 --> 00:13:44.240 eef browser you press f for vimeo 00:13:44.240 --> 00:13:47.760 and you see the marker now change to w 00:13:47.760 --> 00:13:50.160 press wn and then you can go to the 00:13:50.160 --> 00:13:51.279 prefix 00:13:51.279 --> 00:13:54.320 now we'll add a prefix 00:13:54.320 --> 00:13:56.480 so now you finish reading you want to 00:13:56.480 --> 00:13:57.600 save your progress 00:13:57.600 --> 00:13:59.440 no worries it is already saved for you 00:13:59.440 --> 00:14:01.199 by ef you can safely 00:14:01.199 --> 00:14:04.240 close the document using x 00:14:04.240 --> 00:14:07.519 and opening again af 00:14:07.519 --> 00:14:10.560 open and the file see your I 00:14:10.560 --> 00:14:14.000 preface again so you're right at where 00:14:14.000 --> 00:14:16.560 you let up left up 00:14:16.560 --> 00:14:19.440 you can also use mx org store link or 00:14:19.440 --> 00:14:20.480 ctrl cl 00:14:20.480 --> 00:14:23.279 which I prefer to if you want to save a 00:14:23.279 --> 00:14:24.480 particular page in 00:14:24.480 --> 00:14:28.240 a orgmo file so now 00:14:28.240 --> 00:14:30.320 I go back to my presentation now I don't 00:14:30.320 --> 00:14:31.760 need this anymore 00:14:31.760 --> 00:14:35.600 uh so you just control c control l 00:14:35.600 --> 00:14:39.120 or I think mx or insert link 00:14:39.120 --> 00:14:41.040 so you can find the file right here and 00:14:41.040 --> 00:14:42.399 you press enter 00:14:42.399 --> 00:14:44.320 and you press enter for the description 00:14:44.320 --> 00:14:46.480 again and now it's right here 00:14:46.480 --> 00:14:50.720 and ctrl c ctrl o to open it voila 00:14:50.720 --> 00:14:54.000 you're back right so 00:14:54.000 --> 00:14:57.120 let's now demonstrate the ef video 00:14:57.120 --> 00:14:58.880 player 00:14:58.880 --> 00:15:02.639 so mxef open if you use ef open whenever 00:15:02.639 --> 00:15:03.279 you want to 00:15:03.279 --> 00:15:06.079 open some file you use yet open browser 00:15:06.079 --> 00:15:07.279 if you want to use some 00:15:07.279 --> 00:15:09.920 actual application that's not really 00:15:09.920 --> 00:15:11.199 related to a file 00:15:11.199 --> 00:15:14.800 so you have open and select the video 00:15:14.800 --> 00:15:15.600 you want so 00:15:15.600 --> 00:15:18.320 video demo so I already have a video 00:15:18.320 --> 00:15:19.040 demo 00:15:19.040 --> 00:15:21.839 ready so because I recorded a video of 00:15:21.839 --> 00:15:22.720 the demo 00:15:22.720 --> 00:15:26.000 of the ef camera have a look so 00:15:26.000 --> 00:15:28.079 let's move to the beginning hello people 00:15:28.079 --> 00:15:29.279 from the future 00:15:29.279 --> 00:15:32.399 this is a demo of the ef video player 00:15:32.399 --> 00:15:35.199 that demos the ef camera feature 00:15:35.199 --> 00:15:37.440 so as you can see on the screen of me 00:15:37.440 --> 00:15:38.639 inside my camera 00:15:38.639 --> 00:15:40.959 and the screen is actually with all 00:15:40.959 --> 00:15:42.880 within Emacs 00:15:42.880 --> 00:15:46.079 right so and you can open this 00:15:46.079 --> 00:15:49.839 using here open camera 00:15:49.839 --> 00:15:53.040 and which I'm already into and you can 00:15:53.040 --> 00:15:53.600 press 00:15:53.600 --> 00:15:56.720 p to capture a photo 00:15:56.720 --> 00:15:59.680 so the photo is by default stored at 00:15:59.680 --> 00:16:00.880 your home slash 00:16:00.880 --> 00:16:03.920 downloads directory and you can modify 00:16:03.920 --> 00:16:04.320 it 00:16:04.320 --> 00:16:07.839 freely so if you go here and you can see 00:16:07.839 --> 00:16:09.519 the camera stored 00:16:09.519 --> 00:16:13.759 right here so why what I used here 00:16:13.759 --> 00:16:16.240 so you press space to pause what I used 00:16:16.240 --> 00:16:17.120 here is 00:16:17.120 --> 00:16:20.320 the year so ef open this entire so 00:16:20.320 --> 00:16:22.959 basically so in direct you you go to you 00:16:22.959 --> 00:16:23.839 you select 00:16:23.839 --> 00:16:26.959 the file that should be opened by 00:16:26.959 --> 00:16:30.320 eaf and I use that so it it detects that 00:16:30.320 --> 00:16:32.720 it wants to use the ef image viewer so 00:16:32.720 --> 00:16:35.839 I accidentally tested if image viewer 00:16:35.839 --> 00:16:39.759 before I noticed so that that that gives 00:16:39.759 --> 00:16:40.240 the 00:16:40.240 --> 00:16:43.680 image of the photo I just took 00:16:43.680 --> 00:16:47.040 using ef camera and as you can see you 00:16:47.040 --> 00:16:47.360 can 00:16:47.360 --> 00:16:50.720 I can use hl the bim button to navigate 00:16:50.720 --> 00:16:51.600 in the time 00:16:51.600 --> 00:16:55.920 timestamp in the video and I can use 00:16:55.920 --> 00:17:02.320 jk to to change the volumes of the video 00:17:02.320 --> 00:17:05.520 alright so now you've seen all the basic 00:17:05.520 --> 00:17:06.160 usages 00:17:06.160 --> 00:17:08.720 of the ef project it comes the question 00:17:08.720 --> 00:17:11.600 of what is the magic behind it 00:17:11.600 --> 00:17:14.559 all right let's open the hacking page in 00:17:14.559 --> 00:17:15.919 the wiki 00:17:15.919 --> 00:17:20.400 the design is laid out in a diagram here 00:17:20.400 --> 00:17:25.120 so and let's put it 00:17:25.120 --> 00:17:27.839 side by side along with my text so you 00:17:27.839 --> 00:17:28.160 can 00:17:28.160 --> 00:17:32.320 go we can follow through 00:17:32.320 --> 00:17:36.080 right okay let me 00:17:36.080 --> 00:17:42.320 sorry let me drink some water 00:17:42.320 --> 00:17:46.000 so this page in the wiki went into a lot 00:17:46.000 --> 00:17:48.160 of detail 00:17:48.160 --> 00:17:49.520 due to the time constraint I will just 00:17:49.520 --> 00:17:51.679 rephrase some of the ideas here so for 00:17:51.679 --> 00:17:53.520 anyone interested please have a look at 00:17:53.520 --> 00:17:55.600 the wiki yourself 00:17:55.600 --> 00:17:58.160 the easiest way to think about eaf is 00:17:58.160 --> 00:17:58.720 that 00:17:58.720 --> 00:18:01.679 the actual gui application is started in 00:18:01.679 --> 00:18:02.960 the background 00:18:02.960 --> 00:18:04.960 then the frame of the application is 00:18:04.960 --> 00:18:07.120 attached to the appropriate location on 00:18:07.120 --> 00:18:07.679 the 00:18:07.679 --> 00:18:10.720 Emacs window so 00:18:10.720 --> 00:18:13.440 you have linked qt5 with Emacs using 00:18:13.440 --> 00:18:14.960 list and python 00:18:14.960 --> 00:18:17.120 of the python site which is colored 00:18:17.120 --> 00:18:18.640 yellow in the image 00:18:18.640 --> 00:18:20.559 you have two graphics view and queue 00:18:20.559 --> 00:18:22.960 graphics scene objects 00:18:22.960 --> 00:18:25.039 these are used to simulate the e-max 00:18:25.039 --> 00:18:26.640 window buffer design 00:18:26.640 --> 00:18:28.640 where q graphics scene is similar to 00:18:28.640 --> 00:18:29.840 buffers in Emacs 00:18:29.840 --> 00:18:31.840 it controls the state and the content 00:18:31.840 --> 00:18:34.240 details of the application 00:18:34.240 --> 00:18:39.039 well q graphics view is similar to 00:18:39.039 --> 00:18:41.200 geographic view is similar to imax 00:18:41.200 --> 00:18:43.200 window it populates the buffer 00:18:43.200 --> 00:18:45.919 to graphics scene to the full program at 00:18:45.919 --> 00:18:46.960 the appropriate 00:18:46.960 --> 00:18:50.320 position whenever an ef mode buffer 00:18:50.320 --> 00:18:57.679 brings to a background 00:18:57.679 --> 00:18:59.679 whenever an ef mode buffer brings to the 00:18:59.679 --> 00:19:00.880 foreground sorry 00:19:00.880 --> 00:19:02.559 a queue graphics view instance is 00:19:02.559 --> 00:19:05.120 created and whenever the buffer goes to 00:19:05.120 --> 00:19:06.080 the background 00:19:06.080 --> 00:19:08.000 the q graphics view instance is then 00:19:08.000 --> 00:19:09.120 deleted 00:19:09.120 --> 00:19:10.960 while q graphics scene the actual 00:19:10.960 --> 00:19:12.480 process remains running in the 00:19:12.480 --> 00:19:14.480 background until the ef mode buffer is 00:19:14.480 --> 00:19:16.000 killed 00:19:16.000 --> 00:19:18.320 gpa compositing is used to ensure that q 00:19:18.320 --> 00:19:19.440 graphics view and 00:19:19.440 --> 00:19:21.840 graphics sync is synchronized real time 00:19:21.840 --> 00:19:24.000 using q windows set parent function 00:19:24.000 --> 00:19:25.679 the queue graphics view is attached to 00:19:25.679 --> 00:19:27.840 appropriate location on the e-max frame 00:19:27.840 --> 00:19:30.640 so that although great applications are 00:19:30.640 --> 00:19:32.400 not running within e-max 00:19:32.400 --> 00:19:36.160 they look as if they were 00:19:36.160 --> 00:19:39.039 so when user types on the keyboard it is 00:19:39.039 --> 00:19:41.039 first received by the Emacs ef 00:19:41.039 --> 00:19:43.520 ef mode buffer and then it lifts sends 00:19:43.520 --> 00:19:45.360 the event to google graphics sync using 00:19:45.360 --> 00:19:46.240 dbus 00:19:46.240 --> 00:19:48.720 when user clicks on the gui application 00:19:48.720 --> 00:19:50.400 it is received by the queue graphics 00:19:50.400 --> 00:19:50.799 view 00:19:50.799 --> 00:19:53.280 and process in python ellipse can 00:19:53.280 --> 00:19:55.200 communicate with python through dbus 00:19:55.200 --> 00:19:59.200 in other words in other words you can 00:19:59.200 --> 00:20:01.360 customize and extend Emacs not just 00:20:01.360 --> 00:20:01.760 using 00:20:01.760 --> 00:20:04.480 lisp and now you can use python this way 00:20:04.480 --> 00:20:05.360 one can leverage 00:20:05.360 --> 00:20:07.039 all the python properties like 00:20:07.039 --> 00:20:09.600 multi-threading or some other stuff 00:20:09.600 --> 00:20:11.679 the entire python ecosystem can be 00:20:11.679 --> 00:20:13.520 utilized as well 00:20:13.520 --> 00:20:16.159 such as the qt web engine that is the 00:20:16.159 --> 00:20:16.960 basis for 00:20:16.960 --> 00:20:20.640 our eef browser and pi mu pdf is the 00:20:20.640 --> 00:20:23.360 basis for the ef pdf viewer 00:20:23.360 --> 00:20:25.840 so this really opens the window to many 00:20:25.840 --> 00:20:28.240 many new possibilities to extend Emacs 00:20:28.240 --> 00:20:32.720 using eaf 00:20:32.720 --> 00:20:36.080 all right back here we are always 00:20:36.080 --> 00:20:37.760 looking for people to join the 00:20:37.760 --> 00:20:39.679 development there are many many 00:20:39.679 --> 00:20:42.720 more work that needs to be done like 00:20:42.720 --> 00:20:44.640 such as testing and debug if there are 00:20:44.640 --> 00:20:46.640 more linux distros and window managers 00:20:46.640 --> 00:20:47.760 such as i3 00:20:47.760 --> 00:20:51.200 and stuff I mean you can also add new ef 00:20:51.200 --> 00:20:52.080 applications 00:20:52.080 --> 00:20:54.240 or debug and enhance existing af 00:20:54.240 --> 00:20:55.440 applications 00:20:55.440 --> 00:20:58.000 or you can port ef to native wayland 00:20:58.000 --> 00:21:00.240 which I just discussed with the 00:21:00.240 --> 00:21:03.840 the ems whip kit author uh a kill 00:21:03.840 --> 00:21:07.919 akira tile and she he told me that like 00:21:07.919 --> 00:21:10.159 really like it must really yeah it 00:21:10.159 --> 00:21:11.200 doesn't really work 00:21:11.200 --> 00:21:14.320 um native villain because it uses 00:21:14.320 --> 00:21:16.799 x valence so it doesn't work on the pgdk 00:21:16.799 --> 00:21:18.159 port of Emacs 00:21:18.159 --> 00:21:20.559 so and we also need people to pour ef to 00:21:20.559 --> 00:21:22.080 non-free operating systems 00:21:22.080 --> 00:21:25.600 including windows and mac os 00:21:25.600 --> 00:21:28.480 and that's because like debug is a linux 00:21:28.480 --> 00:21:30.080 specific feature so it doesn't really 00:21:30.080 --> 00:21:31.360 work on other platform 00:21:31.360 --> 00:21:33.039 we need to change replace it with some 00:21:33.039 --> 00:21:34.640 alternative and 00:21:34.640 --> 00:21:36.720 geographic scene somehow doesn't really 00:21:36.720 --> 00:21:38.640 work on mac os 00:21:38.640 --> 00:21:40.320 and there are many other to-do lists 00:21:40.320 --> 00:21:42.880 available so please have a look 00:21:42.880 --> 00:21:45.039 if and see it's anything you want to 00:21:45.039 --> 00:21:46.640 work on 00:21:46.640 --> 00:21:49.039 all right so since this is a 00:21:49.039 --> 00:21:51.120 pre-recorded talk I won't be able to do 00:21:51.120 --> 00:21:53.520 the q a real time in the video 00:21:53.520 --> 00:21:56.080 however I will be around on the 00:21:56.080 --> 00:21:57.200 collaborate pad 00:21:57.200 --> 00:22:00.559 and the irc imax con you must come 00:22:00.559 --> 00:22:01.360 questions 00:22:01.360 --> 00:22:04.240 to answer any questions it pops up and 00:22:04.240 --> 00:22:05.760 you can also submit an issue 00:22:05.760 --> 00:22:09.120 on the repo and you can check the wiki 00:22:09.120 --> 00:22:12.640 for some other guides and tricks 00:22:12.640 --> 00:22:15.039 all right thank you guys and hopefully 00:22:15.039 --> 00:22:16.000 you find the 00:22:16.000 --> 00:22:18.320 this year project very interesting and 00:22:18.320 --> 00:22:24.320 enjoy the rest of Emacs com 2020