summaryrefslogtreecommitdiffstats
path: root/2020/info/34.md
diff options
context:
space:
mode:
Diffstat (limited to '2020/info/34.md')
-rw-r--r--2020/info/34.md568
1 files changed, 566 insertions, 2 deletions
diff --git a/2020/info/34.md b/2020/info/34.md
index c8aaee9..cfca797 100644
--- a/2020/info/34.md
+++ b/2020/info/34.md
@@ -1,8 +1,9 @@
# Extend Emacs to Modern GUI Applications with EAF
Matthew Zeng
-[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng.webm"]]
-[Download compressed .webm video (28.4M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng--vp9-q56-video-original-audio.webm)
+[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng.webm" size="113M" subtitles="/2020/subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng.vtt" duration="22:23"]]
+[Download compressed .webm video (28.4M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng--vp9-q56-video-original-audio.webm)
+[View transcript](#transcript)
Emacs Application Framework (EAF) is a customizable and extensible GUI
application framework that extends Emacs graphical capabilities using
@@ -102,3 +103,566 @@ Not yet! Will have a look into it later :-)
- One of the admins of the [Emacs China
forum](https://emacs-china.org/).
- <https://github.com/manateelazycat/emacs-application-framework>
+
+<a name="transcript"></a>
+# Transcript
+
+[[!template new="1" text="Hello." start="00:00:03.600" video="mainVideo" id=subtitle]]
+[[!template text="Hopefully everyone is staying safe and" start="00:00:04.560" video="mainVideo" id=subtitle]]
+[[!template text="staying home," start="00:00:06.720" video="mainVideo" id=subtitle]]
+[[!template text="I feel very grateful to live in a world" start="00:00:08.000" video="mainVideo" id=subtitle]]
+[[!template text="today that technology and free software" start="00:00:10.000" video="mainVideo" id=subtitle]]
+[[!template text="can be leveraged to connect people in" start="00:00:12.000" video="mainVideo" id=subtitle]]
+[[!template text="such disconnected and difficult times," start="00:00:13.759" video="mainVideo" id=subtitle]]
+[[!template text="and to have an online conference like" start="00:00:16.080" video="mainVideo" id=subtitle]]
+[[!template text="this. Hopefully you've all" start="00:00:17.840" video="mainVideo" id=subtitle]]
+[[!template text="enjoyed this year's EmacsConf so far." start="00:00:19.920" video="mainVideo" id=subtitle]]
+[[!template text="Many thanks to all the people that made" start="00:00:22.960" video="mainVideo" id=subtitle]]
+[[!template text="this possible." start="00:00:24.720" video="mainVideo" id=subtitle]]
+[[!template text="Anyways, welcome to my talk &quot;Extend Emacs" start="00:00:26.880" video="mainVideo" id=subtitle]]
+[[!template text="to Modern GUI" start="00:00:30.000" video="mainVideo" id=subtitle]]
+[[!template text="Applications with EAF, the Emacs" start="00:00:30.960" video="mainVideo" id=subtitle]]
+[[!template text="Application Framework&quot;." start="00:00:34.079" video="mainVideo" id=subtitle]]
+[[!template text="This will be my first ever talk, so" start="00:00:35.920" video="mainVideo" id=subtitle]]
+[[!template text="apologies for my" start="00:00:38.320" video="mainVideo" id=subtitle]]
+[[!template text="inexperience, let us begin." start="00:00:39.840" video="mainVideo" id=subtitle]]
+[[!template text="About me: my name is Matthew Zeng, you can" start="00:00:43.280" video="mainVideo" id=subtitle]]
+[[!template text="also call me MT" start="00:00:46.559" video="mainVideo" id=subtitle]]
+[[!template text="or Mingde. I'm a Chinese Canadian living" start="00:00:47.840" video="mainVideo" id=subtitle]]
+[[!template text="in Toronto," start="00:00:50.640" video="mainVideo" id=subtitle]]
+[[!template text="Ontario. Offline: I'm an undergrad" start="00:00:51.440" video="mainVideo" id=subtitle]]
+[[!template text="studying mathematics at the University" start="00:00:54.239" video="mainVideo" id=subtitle]]
+[[!template text="of Waterloo." start="00:00:56.079" video="mainVideo" id=subtitle]]
+[[!template text="Online: I'm one of the admins of the" start="00:00:57.760" video="mainVideo" id=subtitle]]
+[[!template text="Emacs China" start="00:01:00.480" video="mainVideo" id=subtitle]]
+[[!template text="— the largest Emacs forum in China. So," start="00:01:03.039" video="mainVideo" id=subtitle]]
+[[!template text="to all Chinese listening to my talk right" start="00:01:06.320" video="mainVideo" id=subtitle]]
+[[!template text="now, feel free to check it out." start="00:01:08.080" video="mainVideo" id=subtitle]]
+[[!template text="And this is a link to my GitHub profile," start="00:01:10.960" video="mainVideo" id=subtitle]]
+[[!template text="(and) to my projects I'm involved in." start="00:01:14.320" video="mainVideo" id=subtitle]]
+[[!template text="One's M-EMACS which is" start="00:01:16.206" video="mainVideo" id=subtitle]]
+[[!template text="I'm the author of — a user-friendly" start="00:01:18.240" video="mainVideo" id=subtitle]]
+[[!template text="full-featured Emacs configuration" start="00:01:20.159" video="mainVideo" id=subtitle]]
+[[!template text="distribution," start="00:01:21.840" video="mainVideo" id=subtitle]]
+[[!template text="it is what I'm using right now, as well" start="00:01:22.799" video="mainVideo" id=subtitle]]
+[[!template text="as the Emacs Application Framework" start="00:01:25.040" video="mainVideo" id=subtitle]]
+[[!template text="which I help to maintain along with the" start="00:01:26.880" video="mainVideo" id=subtitle]]
+[[!template text="other author" start="00:01:29.119" video="mainVideo" id=subtitle]]
+[[!template text="lazycat, which of course, is today's" start="00:01:30.400" video="mainVideo" id=subtitle]]
+[[!template text="topic." start="00:01:33.040" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So, as you all might have already" start="00:01:35.759" video="mainVideo" id=subtitle]]
+[[!template text="noticed I'm currently using Emacs" start="00:01:38.720" video="mainVideo" id=subtitle]]
+[[!template text="and opening navigating closing" start="00:01:40.960" video="mainVideo" id=subtitle]]
+[[!template text="all these websites that are rendered" start="00:01:43.600" video="mainVideo" id=subtitle]]
+[[!template text="properly" start="00:01:45.360" video="mainVideo" id=subtitle]]
+[[!template text="all within Emacs, it's all thanks to the" start="00:01:46.159" video="mainVideo" id=subtitle]]
+[[!template text="EAF project." start="00:01:49.200" video="mainVideo" id=subtitle]]
+[[!template text="So, we're living in a society that's" start="00:01:51.840" video="mainVideo" id=subtitle]]
+[[!template text="heavily dependent on the internet" start="00:01:54.000" video="mainVideo" id=subtitle]]
+[[!template text="and multimedia, it is unavoidable to run" start="00:01:55.920" video="mainVideo" id=subtitle]]
+[[!template text="to some occasion that you need to" start="00:01:59.520" video="mainVideo" id=subtitle]]
+[[!template text="open a fancy website that uses" start="00:02:01.200" video="mainVideo" id=subtitle]]
+[[!template text="JavaScript and CSS," start="00:02:02.880" video="mainVideo" id=subtitle]]
+[[!template text="or you need to watch some videos. However," start="00:02:04.799" video="mainVideo" id=subtitle]]
+[[!template text="due to the nature and history of Emacs," start="00:02:08.239" video="mainVideo" id=subtitle]]
+[[!template text="it cannot" start="00:02:11.120" video="mainVideo" id=subtitle]]
+[[!template text="render all these modern graphics" start="00:02:11.840" video="mainVideo" id=subtitle]]
+[[!template text="effectively and efficiently." start="00:02:13.840" video="mainVideo" id=subtitle]]
+[[!template text="Emacs is solely a text-based editing" start="00:02:16.400" video="mainVideo" id=subtitle]]
+[[!template text="environment," start="00:02:19.360" video="mainVideo" id=subtitle]]
+[[!template text="and I argue that this is not a bad thing," start="00:02:20.400" video="mainVideo" id=subtitle]]
+[[!template text="in fact, it is one of the reasons that me" start="00:02:23.520" video="mainVideo" id=subtitle]]
+[[!template text="and I believe many of you as well" start="00:02:25.680" video="mainVideo" id=subtitle]]
+[[!template text="are attracted to Emacs in the first" start="00:02:27.760" video="mainVideo" id=subtitle]]
+[[!template text="place." start="00:02:29.760" video="mainVideo" id=subtitle]]
+[[!template text="Unfortunately, this results in us having" start="00:02:30.879" video="mainVideo" id=subtitle]]
+[[!template text="to open a dedicated web browser to" start="00:02:33.760" video="mainVideo" id=subtitle]]
+[[!template text="browse the internet," start="00:02:35.680" video="mainVideo" id=subtitle]]
+[[!template text="open a dedicated video player to watch" start="00:02:37.040" video="mainVideo" id=subtitle]]
+[[!template text="some videos, or a PDF renderer to read some" start="00:02:38.879" video="mainVideo" id=subtitle]]
+[[!template text="documents." start="00:02:41.440" video="mainVideo" id=subtitle]]
+[[!template text="So far Emacs cannot do all these tasks on" start="00:02:42.640" video="mainVideo" id=subtitle]]
+[[!template text="its own" start="00:02:45.200" video="mainVideo" id=subtitle]]
+[[!template text="but can only be achieved using other" start="00:02:46.000" video="mainVideo" id=subtitle]]
+[[!template text="external applications." start="00:02:48.080" video="mainVideo" id=subtitle]]
+[[!template text="So, the other author manateelazycat," start="00:02:51.519" video="mainVideo" id=subtitle]]
+[[!template text="or lazycat in short, didn't want to use" start="00:02:55.840" video="mainVideo" id=subtitle]]
+[[!template text="all these external applications," start="00:02:58.640" video="mainVideo" id=subtitle]]
+[[!template text="he wanted to have an uninterrupted Emacs" start="00:03:00.560" video="mainVideo" id=subtitle]]
+[[!template text="experience," start="00:03:03.120" video="mainVideo" id=subtitle]]
+[[!template text="he wanted to truly live in Emacs." start="00:03:04.159" video="mainVideo" id=subtitle]]
+[[!template text="However, it would be a lot of work to" start="00:03:07.280" video="mainVideo" id=subtitle]]
+[[!template text="build this" start="00:03:10.080" video="mainVideo" id=subtitle]]
+[[!template text="modern application from scratch, there's" start="00:03:11.040" video="mainVideo" id=subtitle]]
+[[!template text="simply no time or research to do that." start="00:03:13.519" video="mainVideo" id=subtitle]]
+[[!template text="So, lazycat thought of utilizing existing" start="00:03:16.239" video="mainVideo" id=subtitle]]
+[[!template text="applications" start="00:03:18.800" video="mainVideo" id=subtitle]]
+[[!template text="and to try to make it collaborate with" start="00:03:20.400" video="mainVideo" id=subtitle]]
+[[!template text="Emacs, there are many solutions available," start="00:03:22.319" video="mainVideo" id=subtitle]]
+[[!template text="one of it" start="00:03:24.959" video="mainVideo" id=subtitle]]
+[[!template text="is the Emacs X Windows Manager, and I'm" start="00:03:26.000" video="mainVideo" id=subtitle]]
+[[!template text="sure a lot of you already know that —" start="00:03:28.560" video="mainVideo" id=subtitle]]
+[[!template text="the EXWM. However, it didn't work for him," start="00:03:30.159" video="mainVideo" id=subtitle]]
+[[!template text="because although EXWM opens the" start="00:03:33.360" video="mainVideo" id=subtitle]]
+[[!template text="door to use other applications within" start="00:03:35.200" video="mainVideo" id=subtitle]]
+[[!template text="Emacs," start="00:03:37.440" video="mainVideo" id=subtitle]]
+[[!template text="it as a fine window manager cannot" start="00:03:38.239" video="mainVideo" id=subtitle]]
+[[!template text="modify," start="00:03:40.879" video="mainVideo" id=subtitle]]
+[[!template text="customize, or extend other software from" start="00:03:41.519" video="mainVideo" id=subtitle]]
+[[!template text="Emacs." start="00:03:43.920" video="mainVideo" id=subtitle]]
+[[!template text="For example, it cannot modify the" start="00:03:45.040" video="mainVideo" id=subtitle]]
+[[!template text="behavior when you press a key in" start="00:03:46.799" video="mainVideo" id=subtitle]]
+[[!template text="Chromium or" start="00:03:48.480" video="mainVideo" id=subtitle]]
+[[!template text="PDF viewer, therefore it cannot utilize" start="00:03:49.599" video="mainVideo" id=subtitle]]
+[[!template text="the rich Emacs ecosystem that's been" start="00:03:52.159" video="mainVideo" id=subtitle]]
+[[!template text="growing for almost 40 years." start="00:03:54.000" video="mainVideo" id=subtitle]]
+[[!template new="1" text="On the other hand, in the EAF browser, so," start="00:03:57.360" video="mainVideo" id=subtitle]]
+[[!template text="if you M-x eaf-open-browser-with-history," start="00:04:00.720" video="mainVideo" id=subtitle]]
+[[!template text="you can see" start="00:04:06.206" video="mainVideo" id=subtitle]]
+[[!template text="on the lower half of my screen — a list of" start="00:04:07.200" video="mainVideo" id=subtitle]]
+[[!template text="histories sorted by my personal" start="00:04:09.840" video="mainVideo" id=subtitle]]
+[[!template text="most visited sites, and you can search" start="00:04:11.920" video="mainVideo" id=subtitle]]
+[[!template text="for a site that you've been" start="00:04:14.560" video="mainVideo" id=subtitle]]
+[[!template text="to or search for some keyword in a" start="00:04:16.560" video="mainVideo" id=subtitle]]
+[[!template text="search engine." start="00:04:19.440" video="mainVideo" id=subtitle]]
+[[!template text="So, this is all achieved by utilizing the" start="00:04:21.840" video="mainVideo" id=subtitle]]
+[[!template text="popular completion framework in the" start="00:04:24.240" video="mainVideo" id=subtitle]]
+[[!template text="Emacs ecosystem — ivy." start="00:04:25.919" video="mainVideo" id=subtitle]]
+[[!template text="So, lazycat decided to develop a" start="00:04:29.280" video="mainVideo" id=subtitle]]
+[[!template text="solution of his own in 2018," start="00:04:31.120" video="mainVideo" id=subtitle]]
+[[!template text="namely the EAF project, so, I joined the" start="00:04:33.680" video="mainVideo" id=subtitle]]
+[[!template text="development last year, 2019." start="00:04:36.960" video="mainVideo" id=subtitle]]
+[[!template text="EAF is" start="00:04:42.756" video="mainVideo" id=subtitle]]
+[[!template text="a highly customizable and extensible" start="00:04:44.000" video="mainVideo" id=subtitle]]
+[[!template text="GUI application framework that extends" start="00:04:47.880" video="mainVideo" id=subtitle]]
+[[!template text="Emacs to graphical capabilities using" start="00:04:49.759" video="mainVideo" id=subtitle]]
+[[!template text="PyQt5, and it is not a window manager." start="00:04:52.056" video="mainVideo" id=subtitle]]
+[[!template text="Alright. So, in the README, you can see a" start="00:04:57.840" video="mainVideo" id=subtitle]]
+[[!template text="list of GIFs" start="00:05:02.479" video="mainVideo" id=subtitle]]
+[[!template text="showcasing all the available EAF" start="00:05:03.440" video="mainVideo" id=subtitle]]
+[[!template text="applications," start="00:05:05.600" video="mainVideo" id=subtitle]]
+[[!template text="a browser, a markdown previewer, a video" start="00:05:06.720" video="mainVideo" id=subtitle]]
+[[!template text="player, a PDF viewer, and more." start="00:05:09.520" video="mainVideo" id=subtitle]]
+[[!template text="Today I don't have" start="00:05:12.789" video="mainVideo" id=subtitle]]
+[[!template text="enough time to demonstrate each one of" start="00:05:14.240" video="mainVideo" id=subtitle]]
+[[!template text="them," start="00:05:16.160" video="mainVideo" id=subtitle]]
+[[!template text="but I will select a couple applications" start="00:05:16.560" video="mainVideo" id=subtitle]]
+[[!template text="to show you." start="00:05:18.720" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So, since we are already using EAF browser," start="00:05:21.120" video="mainVideo" id=subtitle]]
+[[!template text="we'll start with this. Besides using the" start="00:05:24.240" video="mainVideo" id=subtitle]]
+[[!template text="classic Control n (C-n), Control p (C-p)" start="00:05:27.840" video="mainVideo" id=subtitle]]
+[[!template text="you can also use the Vim style hjkl to" start="00:05:29.600" video="mainVideo" id=subtitle]]
+[[!template text="move up or down." start="00:05:32.000" video="mainVideo" id=subtitle]]
+[[!template text="Also, Meta Shift comma (M-<) or g (moves) to the" start="00:05:33.840" video="mainVideo" id=subtitle]]
+[[!template text="beginning of page," start="00:05:36.320" video="mainVideo" id=subtitle]]
+[[!template text="Meta Shift period (M->) or capital g (moves) to" start="00:05:37.280" video="mainVideo" id=subtitle]]
+[[!template text="the end of page." start="00:05:39.120" video="mainVideo" id=subtitle]]
+[[!template text="Vimium and Surfingkeys" start="00:05:41.199" video="mainVideo" id=subtitle]]
+[[!template text="are popular keyboard-based" start="00:05:45.306" video="mainVideo" id=subtitle]]
+[[!template text="browsing techniques in Chrome," start="00:05:46.479" video="mainVideo" id=subtitle]]
+[[!template text="and they've imported here as well. You" start="00:05:48.400" video="mainVideo" id=subtitle]]
+[[!template text="can press f to toggle markers pointing" start="00:05:50.479" video="mainVideo" id=subtitle]]
+[[!template text="to" start="00:05:52.720" video="mainVideo" id=subtitle]]
+[[!template text="all the links in the current page, say, I" start="00:05:53.039" video="mainVideo" id=subtitle]]
+[[!template text="want to visit the wiki —" start="00:05:55.280" video="mainVideo" id=subtitle]]
+[[!template text="which comes very very handy when you" start="00:05:56.960" video="mainVideo" id=subtitle]]
+[[!template text="want to configure EAF to your liking," start="00:05:59.680" video="mainVideo" id=subtitle]]
+[[!template text="so you see the marker on top of wiki is" start="00:06:02.400" video="mainVideo" id=subtitle]]
+[[!template text="dd," start="00:06:04.720" video="mainVideo" id=subtitle]]
+[[!template text="press dd and Enter (RET), and now" start="00:06:05.440" video="mainVideo" id=subtitle]]
+[[!template text="you are navigated to this link, so you" start="00:06:08.479" video="mainVideo" id=subtitle]]
+[[!template text="don't need to use your mouse at all." start="00:06:10.240" video="mainVideo" id=subtitle]]
+[[!template new="1" text="So, a full list of key bindings can be" start="00:06:13.840" video="mainVideo" id=subtitle]]
+[[!template text="found when you (press)" start="00:06:16.560" video="mainVideo" id=subtitle]]
+[[!template text="Control h m (C-h m), just as any other Emacs major" start="00:06:17.680" video="mainVideo" id=subtitle]]
+[[!template text="mode," start="00:06:20.560" video="mainVideo" id=subtitle]]
+[[!template text="so you don't have to remember everything…" start="00:06:21.199" video="mainVideo" id=subtitle]]
+[[!template text="all the key bindings I said to you." start="00:06:22.960" video="mainVideo" id=subtitle]]
+[[!template text="So, this is a global binding application" start="00:06:25.600" video="mainVideo" id=subtitle]]
+[[!template text="to every other EAF application as well." start="00:06:28.560" video="mainVideo" id=subtitle]]
+[[!template text="You can find it under the wiki in the" start="00:06:30.960" video="mainVideo" id=subtitle]]
+[[!template text="keybindings" start="00:06:36.720" video="mainVideo" id=subtitle]]
+[[!template text="section, so press f again and use" start="00:06:37.600" video="mainVideo" id=subtitle]]
+[[!template text="ns, press Enter (RET), now you're in the" start="00:06:40.639" video="mainVideo" id=subtitle]]
+[[!template text="keybindings web page." start="00:06:44.240" video="mainVideo" id=subtitle]]
+[[!template text="You can see all of the keybindings" start="00:06:45.600" video="mainVideo" id=subtitle]]
+[[!template text="available in every" start="00:06:47.520" video="mainVideo" id=subtitle]]
+[[!template text="EAF application, and you can try them out," start="00:06:49.280" video="mainVideo" id=subtitle]]
+[[!template text="and you can customize your key bindings" start="00:06:53.919" video="mainVideo" id=subtitle]]
+[[!template text="using eaf-bind-key," start="00:06:56.479" video="mainVideo" id=subtitle]]
+[[!template text="you can customize Control n (C-n) as" start="00:06:57.956" video="mainVideo" id=subtitle]]
+[[!template text="in the web page" start="00:07:00.240" video="mainVideo" id=subtitle]]
+[[!template text="to scroll up in the EAF PDF viewer, or you" start="00:07:02.960" video="mainVideo" id=subtitle]]
+[[!template text="can unbind" start="00:07:05.759" video="mainVideo" id=subtitle]]
+[[!template text="an existing binding using" start="00:07:06.639" video="mainVideo" id=subtitle]]
+[[!template text="eaf-bind-key," start="00:07:08.806" video="mainVideo" id=subtitle]]
+[[!template text="bind it to nil, so it doesn't bind to" start="00:07:10.000" video="mainVideo" id=subtitle]]
+[[!template text="anything." start="00:07:14.840" video="mainVideo" id=subtitle]]
+[[!template text="Okay, so, here comes the important part," start="00:07:16.160" video="mainVideo" id=subtitle]]
+[[!template text="if you want to customize EAF, you should" start="00:07:20.319" video="mainVideo" id=subtitle]]
+[[!template text="visit the customization page in the wiki." start="00:07:22.479" video="mainVideo" id=subtitle]]
+[[!template text="Now, I press Meta b to go back in" start="00:07:25.440" video="mainVideo" id=subtitle]]
+[[!template text="history, and" start="00:07:28.840" video="mainVideo" id=subtitle]]
+[[!template text="go to the customization page, press f," start="00:07:30.240" video="mainVideo" id=subtitle]]
+[[!template text="press ad," start="00:07:32.960" video="mainVideo" id=subtitle]]
+[[!template text="Enter, and now we're in the customization" start="00:07:34.080" video="mainVideo" id=subtitle]]
+[[!template text="page." start="00:07:36.639" video="mainVideo" id=subtitle]]
+[[!template text="So, the first customization option you" start="00:07:37.360" video="mainVideo" id=subtitle]]
+[[!template text="see is dark mode," start="00:07:39.280" video="mainVideo" id=subtitle]]
+[[!template text="let's say, if you want to turn on the dark" start="00:07:42.639" video="mainVideo" id=subtitle]]
+[[!template text="mode for EAF browser," start="00:07:44.479" video="mainVideo" id=subtitle]]
+[[!template text="and you don't want to use your mouse to" start="00:07:46.720" video="mainVideo" id=subtitle]]
+[[!template text="do all this stuff." start="00:07:48.479" video="mainVideo" id=subtitle]]
+[[!template text="You press c, and you can select" start="00:07:49.919" video="mainVideo" id=subtitle]]
+[[!template text="c to toggle the caret browsing, you can" start="00:07:53.360" video="mainVideo" id=subtitle]]
+[[!template text="see a lot of markers available," start="00:07:55.840" video="mainVideo" id=subtitle]]
+[[!template text="poped up again, but they're not" start="00:07:58.240" video="mainVideo" id=subtitle]]
+[[!template text="on top of links but instead of" start="00:08:01.280" video="mainVideo" id=subtitle]]
+[[!template text="paragraphs." start="00:08:02.720" video="mainVideo" id=subtitle]]
+[[!template text="You select the paragraph of your choice," start="00:08:03.599" video="mainVideo" id=subtitle]]
+[[!template text="in this case you want" start="00:08:05.360" video="mainVideo" id=subtitle]]
+[[!template text="ls which comes here," start="00:08:06.639" video="mainVideo" id=subtitle]]
+[[!template text="and then you just move the" start="00:08:10.240" video="mainVideo" id=subtitle]]
+[[!template text="cursor like what you always do" start="00:08:12.720" video="mainVideo" id=subtitle]]
+[[!template text="in Emacs, and now you select everything" start="00:08:15.120" video="mainVideo" id=subtitle]]
+[[!template text="and use Meta w (M-w) to copy the text." start="00:08:18.800" video="mainVideo" id=subtitle]]
+[[!template text="Now, we (run) Meta Shift colon (M-:) to evaluate" start="00:08:26.479" video="mainVideo" id=subtitle]]
+[[!template text="what we just copied," start="00:08:29.199" video="mainVideo" id=subtitle]]
+[[!template text="and set that to true, and" start="00:08:30.960" video="mainVideo" id=subtitle]]
+[[!template text="press r or F5 to refresh the page," start="00:08:35.120" video="mainVideo" id=subtitle]]
+[[!template text="voilà we have the dark mode enabled." start="00:08:38.320" video="mainVideo" id=subtitle]]
+[[!template text="So, there are…, well, let's toggle" start="00:08:42.159" video="mainVideo" id=subtitle]]
+[[!template text="it back off for now." start="00:08:44.880" video="mainVideo" id=subtitle]]
+[[!template text="Now, we (run) Meta Shift colon (M-:) again," start="00:08:46.160" video="mainVideo" id=subtitle]]
+[[!template text="and we find the one we just used, and" start="00:08:49.360" video="mainVideo" id=subtitle]]
+[[!template text="change it back to false," start="00:08:51.600" video="mainVideo" id=subtitle]]
+[[!template text="and refresh the page, back in the light" start="00:08:53.519" video="mainVideo" id=subtitle]]
+[[!template text="mode." start="00:08:56.880" video="mainVideo" id=subtitle]]
+[[!template text="So, there are many other customization" start="00:08:59.360" video="mainVideo" id=subtitle]]
+[[!template text="options available, you can either" start="00:09:02.160" video="mainVideo" id=subtitle]]
+[[!template text="evaluate like what we just did or add it" start="00:09:03.680" video="mainVideo" id=subtitle]]
+[[!template text="to your Emacs configuration file." start="00:09:05.920" video="mainVideo" id=subtitle]]
+[[!template text="So, in this wiki…," start="00:09:08.000" video="mainVideo" id=subtitle]]
+[[!template text="you can make the EAF browser to" start="00:09:11.680" video="mainVideo" id=subtitle]]
+[[!template text="continue where you left off" start="00:09:14.399" video="mainVideo" id=subtitle]]
+[[!template text="similar to the Chromium setting." start="00:09:16.320" video="mainVideo" id=subtitle]]
+[[!template text="You can make EAF the default browser" start="00:09:20.160" video="mainVideo" id=subtitle]]
+[[!template text="(in) Emacs by" start="00:09:22.800" video="mainVideo" id=subtitle]]
+[[!template text="aliasing browse-web to" start="00:09:23.839" video="mainVideo" id=subtitle]]
+[[!template text="eaf-open-browser," start="00:09:26.720" video="mainVideo" id=subtitle]]
+[[!template text="or set the browse-url-browser-function to" start="00:09:27.680" video="mainVideo" id=subtitle]]
+[[!template text="eaf-open-browser, there's just some tricks." start="00:09:31.200" video="mainVideo" id=subtitle]]
+[[!template text="And there (is) also" start="00:09:33.519" video="mainVideo" id=subtitle]]
+[[!template text="an experimental adblocker currently" start="00:09:34.480" video="mainVideo" id=subtitle]]
+[[!template text="in place, therefore it can" start="00:09:37.920" video="mainVideo" id=subtitle]]
+[[!template text="block some elements but not all, so" start="00:09:41.680" video="mainVideo" id=subtitle]]
+[[!template text="we really encourage people to help us" start="00:09:44.720" video="mainVideo" id=subtitle]]
+[[!template text="test out and" start="00:09:47.279" video="mainVideo" id=subtitle]]
+[[!template text="add more conditions in." start="00:09:48.240" video="mainVideo" id=subtitle]]
+[[!template text="So, you can…, the EAF Browser is able to" start="00:09:51.440" video="mainVideo" id=subtitle]]
+[[!template text="download" start="00:09:54.560" video="mainVideo" id=subtitle]]
+[[!template text="any files from the internet, and it will" start="00:09:55.760" video="mainVideo" id=subtitle]]
+[[!template text="be downloaded using Aria2." start="00:09:57.680" video="mainVideo" id=subtitle]]
+[[!template text="You can also customize" start="00:10:04.000" video="mainVideo" id=subtitle]]
+[[!template text="the eaf-browser-download-path" start="00:10:05.339" video="mainVideo" id=subtitle]]
+[[!template text="using eaf-setq, it's a function that we" start="00:10:07.200" video="mainVideo" id=subtitle]]
+[[!template text="defined similar to setq," start="00:10:11.120" video="mainVideo" id=subtitle]]
+[[!template text="the normal setq we know." start="00:10:13.623" video="mainVideo" id=subtitle]]
+[[!template text="So, by default the download file is" start="00:10:15.040" video="mainVideo" id=subtitle]]
+[[!template text="stored in your home directory slash" start="00:10:16.480" video="mainVideo" id=subtitle]]
+[[!template text="downloads," start="00:10:18.160" video="mainVideo" id=subtitle]]
+[[!template text="and you can change that whenever you" start="00:10:19.600" video="mainVideo" id=subtitle]]
+[[!template text="want. You can also disable" start="00:10:20.800" video="mainVideo" id=subtitle]]
+[[!template text="saving browsing history, so, remember" start="00:10:22.720" video="mainVideo" id=subtitle]]
+[[!template text="when I press…," start="00:10:26.079" video="mainVideo" id=subtitle]]
+[[!template text="when I use M-x eaf-open-browser's" start="00:10:27.089" video="mainVideo" id=subtitle]]
+[[!template text="history, I see all the" start="00:10:28.959" video="mainVideo" id=subtitle]]
+[[!template text="histories here, but if you want more" start="00:10:30.480" video="mainVideo" id=subtitle]]
+[[!template text="privacy, you don't want that to be" start="00:10:32.079" video="mainVideo" id=subtitle]]
+[[!template text="available at all. You can turn it off" start="00:10:33.680" video="mainVideo" id=subtitle]]
+[[!template text="easily with eaf-setq," start="00:10:35.360" video="mainVideo" id=subtitle]]
+[[!template text="and set that remember-history to false." start="00:10:37.356" video="mainVideo" id=subtitle]]
+[[!template text="You can also set your default search" start="00:10:40.640" video="mainVideo" id=subtitle]]
+[[!template text="engine." start="00:10:42.399" video="mainVideo" id=subtitle]]
+[[!template text="Right now we have Google, although" start="00:10:43.839" video="mainVideo" id=subtitle]]
+[[!template text="not really good but… Google and also" start="00:10:47.200" video="mainVideo" id=subtitle]]
+[[!template text="DuckDuckGo which is a better search engine," start="00:10:50.480" video="mainVideo" id=subtitle]]
+[[!template text="well, yeah, ethically better search" start="00:10:53.600" video="mainVideo" id=subtitle]]
+[[!template text="engine." start="00:10:57.360" video="mainVideo" id=subtitle]]
+[[!template text="So, you can also configure" start="00:10:59.360" video="mainVideo" id=subtitle]]
+[[!template text="the zoom. The default zoom of your" start="00:11:02.560" video="mainVideo" id=subtitle]]
+[[!template text="browser is 1.0, you can convert" start="00:11:05.040" video="mainVideo" id=subtitle]]
+[[!template text="default-zoom to 1.25, so when" start="00:11:07.600" video="mainVideo" id=subtitle]]
+[[!template text="you open any web page, it will be" start="00:11:10.000" video="mainVideo" id=subtitle]]
+[[!template text="zoomed by default. You can" start="00:11:11.920" video="mainVideo" id=subtitle]]
+[[!template text="also disable JavaScript, although I" start="00:11:17.360" video="mainVideo" id=subtitle]]
+[[!template text="personally don't really suggest you to" start="00:11:20.399" video="mainVideo" id=subtitle]]
+[[!template text="do, because it will" start="00:11:22.240" video="mainVideo" id=subtitle]]
+[[!template text="basically break a lot of our features," start="00:11:23.440" video="mainVideo" id=subtitle]]
+[[!template text="because a lot of the browser" start="00:11:26.240" video="mainVideo" id=subtitle]]
+[[!template text="related features" start="00:11:28.480" video="mainVideo" id=subtitle]]
+[[!template text="must be implemented using JavaScript," start="00:11:29.519" video="mainVideo" id=subtitle]]
+[[!template text="but yeah, you can do it if you really" start="00:11:33.760" video="mainVideo" id=subtitle]]
+[[!template text="want to. And there's also some" start="00:11:35.440" video="mainVideo" id=subtitle]]
+[[!template text="customization on EAF Camera" start="00:11:37.920" video="mainVideo" id=subtitle]]
+[[!template text="you can do as well." start="00:11:41.519" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Let's move on to EAF PDF Viewer." start="00:11:47.760" video="mainVideo" id=subtitle]]
+[[!template text="Now, let's open" start="00:11:52.399" video="mainVideo" id=subtitle]]
+[[!template text="the PDF file using EAF." start="00:11:56.079" video="mainVideo" id=subtitle]]
+[[!template text="So, that's one something already here, but" start="00:11:59.440" video="mainVideo" id=subtitle]]
+[[!template text="let's open it here." start="00:12:01.519" video="mainVideo" id=subtitle]]
+[[!template text="So, eaf-open, and" start="00:12:02.720" video="mainVideo" id=subtitle]]
+[[!template text="select &quot;Introduction to Programming in" start="00:12:06.079" video="mainVideo" id=subtitle]]
+[[!template text="Emacs Lisp&quot;." start="00:12:08.160" video="mainVideo" id=subtitle]]
+[[!template text="I have it already open, but it's okay." start="00:12:11.440" video="mainVideo" id=subtitle]]
+[[!template text="So, you have the file," start="00:12:13.760" video="mainVideo" id=subtitle]]
+[[!template text="you have other files displayed…" start="00:12:17.040" video="mainVideo" id=subtitle]]
+[[!template text="you have all the pages display, sorry." start="00:12:20.160" video="mainVideo" id=subtitle]]
+[[!template text="There are 273 pages in total, but notice" start="00:12:23.200" video="mainVideo" id=subtitle]]
+[[!template text="how fast it is to browse" start="00:12:27.040" video="mainVideo" id=subtitle]]
+[[!template text="all the pages, it is blazingly fast," start="00:12:29.279" video="mainVideo" id=subtitle]]
+[[!template text="that's all thanks to Python and" start="00:12:31.440" video="mainVideo" id=subtitle]]
+[[!template text="MuPDF which you don't really get from" start="00:12:33.519" video="mainVideo" id=subtitle]]
+[[!template text="Emacs Lisp." start="00:12:37.040" video="mainVideo" id=subtitle]]
+[[!template text="So, let's say if I want to jump to page" start="00:12:40.880" video="mainVideo" id=subtitle]]
+[[!template text="50." start="00:12:43.600" video="mainVideo" id=subtitle]]
+[[!template text="We press p and Enter 50." start="00:12:44.079" video="mainVideo" id=subtitle]]
+[[!template text="And here we are, we are at page 50." start="00:12:48.639" video="mainVideo" id=subtitle]]
+[[!template text="You can look at the lower right to" start="00:12:53.279" video="mainVideo" id=subtitle]]
+[[!template text="verify the page you're on." start="00:12:55.440" video="mainVideo" id=subtitle]]
+[[!template text="You can use i to toggle dark mode" start="00:12:58.880" video="mainVideo" id=subtitle]]
+[[!template text="as expected. Let's say you want to" start="00:13:05.120" video="mainVideo" id=subtitle]]
+[[!template text="find" start="00:13:07.839" video="mainVideo" id=subtitle]]
+[[!template text="table of contents, so use Control s —" start="00:13:08.240" video="mainVideo" id=subtitle]]
+[[!template text="the Emacs default binding for I-search," start="00:13:11.519" video="mainVideo" id=subtitle]]
+[[!template text="and search for a &quot;table of contents&quot;," start="00:13:15.680" video="mainVideo" id=subtitle]]
+[[!template text="here we are, it is highlighted for you," start="00:13:19.360" video="mainVideo" id=subtitle]]
+[[!template text="and you can Control s for more but" start="00:13:21.680" video="mainVideo" id=subtitle]]
+[[!template text="there's only one match," start="00:13:23.120" video="mainVideo" id=subtitle]]
+[[!template text="you (press) Control g (C-g) to" start="00:13:26.006" video="mainVideo" id=subtitle]]
+[[!template text="disable the highlight," start="00:13:27.200" video="mainVideo" id=subtitle]]
+[[!template text="and you see a lot of options for you to" start="00:13:28.800" video="mainVideo" id=subtitle]]
+[[!template text="go." start="00:13:30.880" video="mainVideo" id=subtitle]]
+[[!template text="Okay. Let's say, if you want to go to the" start="00:13:32.320" video="mainVideo" id=subtitle]]
+[[!template text="preface." start="00:13:35.040" video="mainVideo" id=subtitle]]
+[[!template text="That is, you press f which is" start="00:13:36.240" video="mainVideo" id=subtitle]]
+[[!template text="also similar to" start="00:13:39.519" video="mainVideo" id=subtitle]]
+[[!template text="EAF browser, you press f for Vimium," start="00:13:40.639" video="mainVideo" id=subtitle]]
+[[!template text="and you see the marker, now change to wn," start="00:13:44.240" video="mainVideo" id=subtitle]]
+[[!template text="press wn, and then you can go to the" start="00:13:47.760" video="mainVideo" id=subtitle]]
+[[!template text="preface." start="00:13:50.160" video="mainVideo" id=subtitle]]
+[[!template text="Now, we are at the preface." start="00:13:51.279" video="mainVideo" id=subtitle]]
+[[!template text="So, now you finish reading, you want to" start="00:13:54.320" video="mainVideo" id=subtitle]]
+[[!template text="save your progress?" start="00:13:56.480" video="mainVideo" id=subtitle]]
+[[!template text="No worries, it is already saved for you" start="00:13:57.600" video="mainVideo" id=subtitle]]
+[[!template text="by EAF. You can safely" start="00:13:59.440" video="mainVideo" id=subtitle]]
+[[!template text="close the document using x," start="00:14:01.199" video="mainVideo" id=subtitle]]
+[[!template text="and opening again, eaf-open," start="00:14:04.240" video="mainVideo" id=subtitle]]
+[[!template text="and the file…, see you are at" start="00:14:07.519" video="mainVideo" id=subtitle]]
+[[!template text="preface again. You're right at where" start="00:14:10.560" video="mainVideo" id=subtitle]]
+[[!template text="you left of." start="00:14:14.000" video="mainVideo" id=subtitle]]
+[[!template new="1" text="You can also use M-x org-store-link, or" start="00:14:16.560" video="mainVideo" id=subtitle]]
+[[!template text="Control c l (C-c l) —" start="00:14:19.440" video="mainVideo" id=subtitle]]
+[[!template text="which I prefer, if you want to save a" start="00:14:20.480" video="mainVideo" id=subtitle]]
+[[!template text="particular page in" start="00:14:23.279" video="mainVideo" id=subtitle]]
+[[!template text="a Org mode file. Now," start="00:14:24.480" video="mainVideo" id=subtitle]]
+[[!template text="I go back to my presentation doc, I don't" start="00:14:28.240" video="mainVideo" id=subtitle]]
+[[!template text="need this anymore." start="00:14:30.320" video="mainVideo" id=subtitle]]
+[[!template text="So, you just (press) Control c Control l (C-c C-l)," start="00:14:31.760" video="mainVideo" id=subtitle]]
+[[!template text="or I think M-x org-insert-link." start="00:14:35.600" video="mainVideo" id=subtitle]]
+[[!template text="You can find the file right here, and" start="00:14:39.120" video="mainVideo" id=subtitle]]
+[[!template text="you press Enter (RET)," start="00:14:41.040" video="mainVideo" id=subtitle]]
+[[!template text="and you press Enter (RET) for the description" start="00:14:42.399" video="mainVideo" id=subtitle]]
+[[!template text="again, and now it's right here," start="00:14:44.320" video="mainVideo" id=subtitle]]
+[[!template text="and Control c Control o (C-c C-o) to open it. Voilà!" start="00:14:46.480" video="mainVideo" id=subtitle]]
+[[!template text="You're back." start="00:14:50.720" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Let's now demonstrate the EAF Video" start="00:14:54.000" video="mainVideo" id=subtitle]]
+[[!template text="Player." start="00:14:57.120" video="mainVideo" id=subtitle]]
+[[!template text="So, M-x eaf-open, you use eaf-open whenever" start="00:14:58.880" video="mainVideo" id=subtitle]]
+[[!template text="you want to" start="00:15:02.639" video="mainVideo" id=subtitle]]
+[[!template text="open some file. You use eaf-open-browser" start="00:15:03.279" video="mainVideo" id=subtitle]]
+[[!template text="if you want to use some" start="00:15:06.079" video="mainVideo" id=subtitle]]
+[[!template text="actual application that's not really" start="00:15:07.279" video="mainVideo" id=subtitle]]
+[[!template text="related to a file." start="00:15:09.920" video="mainVideo" id=subtitle]]
+[[!template text="So, eaf-open, and select the video" start="00:15:11.199" video="mainVideo" id=subtitle]]
+[[!template text="you want, so," start="00:15:14.800" video="mainVideo" id=subtitle]]
+[[!template text="video-demo, I already have a video" start="00:15:15.600" video="mainVideo" id=subtitle]]
+[[!template text="demo" start="00:15:18.320" video="mainVideo" id=subtitle]]
+[[!template text="ready, because I recorded a video of" start="00:15:19.040" video="mainVideo" id=subtitle]]
+[[!template text="the demo" start="00:15:21.839" video="mainVideo" id=subtitle]]
+[[!template text="of the EAF Camera, have a look." start="00:15:22.720" video="mainVideo" id=subtitle]]
+[[!template text="Let's move to the beginning, &quot;Hello people" start="00:15:26.000" video="mainVideo" id=subtitle]]
+[[!template text="from the future!" start="00:15:28.079" video="mainVideo" id=subtitle]]
+[[!template text="This is a demo of the EAF Video Player" start="00:15:29.279" video="mainVideo" id=subtitle]]
+[[!template text="that demos the EAF Camera feature," start="00:15:32.399" video="mainVideo" id=subtitle]]
+[[!template text="so, as you can see on the screen of me" start="00:15:35.199" video="mainVideo" id=subtitle]]
+[[!template text="inside my camera," start="00:15:37.440" video="mainVideo" id=subtitle]]
+[[!template text="and the screen is actually with all" start="00:15:38.639" video="mainVideo" id=subtitle]]
+[[!template text="within Emacs." start="00:15:40.959" video="mainVideo" id=subtitle]]
+[[!template text="(Right, the video itself is as well, haha.)" start="00:15:42.880" video="mainVideo" id=subtitle]]
+[[!template text="You can open this" start="00:15:45.273" video="mainVideo" id=subtitle]]
+[[!template text="using eaf-open-camera" start="00:15:46.079" video="mainVideo" id=subtitle]]
+[[!template text="which I'm already into, and you can" start="00:15:49.839" video="mainVideo" id=subtitle]]
+[[!template text="press" start="00:15:53.040" video="mainVideo" id=subtitle]]
+[[!template text="p to capture a photo," start="00:15:53.600" video="mainVideo" id=subtitle]]
+[[!template text="so, the photo is by default stored at" start="00:15:56.720" video="mainVideo" id=subtitle]]
+[[!template text="your $HOME/Downloads directory," start="00:15:59.680" video="mainVideo" id=subtitle]]
+[[!template text="and you can modify it" start="00:16:02.773" video="mainVideo" id=subtitle]]
+[[!template text="freely. If you go here, and you can see" start="00:16:04.320" video="mainVideo" id=subtitle]]
+[[!template text="the camera stored" start="00:16:07.839" video="mainVideo" id=subtitle]]
+[[!template text="right here.&quot;" start="00:16:09.519" video="mainVideo" id=subtitle]]
+[[!template text="So, you press Space (SPC) to pause, what I used" start="00:16:13.759" video="mainVideo" id=subtitle]]
+[[!template text="here is" start="00:16:16.240" video="mainVideo" id=subtitle]]
+[[!template text="the eaf-open-this-from-dired." start="00:16:17.120" video="mainVideo" id=subtitle]]
+[[!template text="Basically, in dired" start="00:16:20.320" video="mainVideo" id=subtitle]]
+[[!template text="you select" start="00:16:22.959" video="mainVideo" id=subtitle]]
+[[!template text="the file that should be opened by" start="00:16:23.839" video="mainVideo" id=subtitle]]
+[[!template text="EAF, and I used that. It detects that" start="00:16:26.959" video="mainVideo" id=subtitle]]
+[[!template text="it wants to use the EAF Image Viewer, so" start="00:16:30.320" video="mainVideo" id=subtitle]]
+[[!template text="I accidentally tested EAF Image Viewer" start="00:16:32.720" video="mainVideo" id=subtitle]]
+[[!template text="before I noticed. That gives the" start="00:16:35.839" video="mainVideo" id=subtitle]]
+[[!template text="image of the photo I just took" start="00:16:40.240" video="mainVideo" id=subtitle]]
+[[!template text="using EAF Camera. As you can see, you" start="00:16:43.680" video="mainVideo" id=subtitle]]
+[[!template text="can" start="00:16:47.040" video="mainVideo" id=subtitle]]
+[[!template text="use hl — the Vim binding to navigate" start="00:16:47.360" video="mainVideo" id=subtitle]]
+[[!template text="in the timestamp in the video," start="00:16:50.720" video="mainVideo" id=subtitle]]
+[[!template text="and I can use" start="00:16:53.256" video="mainVideo" id=subtitle]]
+[[!template text="jk to change the volumes of the video." start="00:16:55.920" video="mainVideo" id=subtitle]]
+[[!template new="1" text="Alright. Now, you've seen all the basic" start="00:17:02.320" video="mainVideo" id=subtitle]]
+[[!template text="usages" start="00:17:05.520" video="mainVideo" id=subtitle]]
+[[!template text="of the EAF project, it comes the question" start="00:17:06.160" video="mainVideo" id=subtitle]]
+[[!template text="of what is the magic behind it." start="00:17:08.720" video="mainVideo" id=subtitle]]
+[[!template text="All right. Let's open the hacking page in" start="00:17:11.600" video="mainVideo" id=subtitle]]
+[[!template text="the wiki," start="00:17:14.559" video="mainVideo" id=subtitle]]
+[[!template text="the design is laid out in a diagram here." start="00:17:15.919" video="mainVideo" id=subtitle]]
+[[!template text="Let's put it" start="00:17:20.400" video="mainVideo" id=subtitle]]
+[[!template text="side by side along with my text, so" start="00:17:25.120" video="mainVideo" id=subtitle]]
+[[!template text="we can follow through." start="00:17:27.839" video="mainVideo" id=subtitle]]
+[[!template text="Right, okay. Let me…," start="00:17:32.320" video="mainVideo" id=subtitle]]
+[[!template text="sorry, let me drink some water." start="00:17:36.080" video="mainVideo" id=subtitle]]
+[[!template text="This page in the wiki went into a lot" start="00:17:42.320" video="mainVideo" id=subtitle]]
+[[!template text="of detail," start="00:17:46.000" video="mainVideo" id=subtitle]]
+[[!template text="due to the time constraint I will just" start="00:17:48.160" video="mainVideo" id=subtitle]]
+[[!template text="rephrase some of the ideas here, so for" start="00:17:49.520" video="mainVideo" id=subtitle]]
+[[!template text="anyone interested, please have a look at" start="00:17:51.679" video="mainVideo" id=subtitle]]
+[[!template text="the wiki yourself." start="00:17:53.520" video="mainVideo" id=subtitle]]
+[[!template text="The easiest way to think about EAF is" start="00:17:55.600" video="mainVideo" id=subtitle]]
+[[!template text="that" start="00:17:58.160" video="mainVideo" id=subtitle]]
+[[!template text="the actual GUI application is started in" start="00:17:58.720" video="mainVideo" id=subtitle]]
+[[!template text="the background," start="00:18:01.679" video="mainVideo" id=subtitle]]
+[[!template text="then the frame of the application is" start="00:18:02.960" video="mainVideo" id=subtitle]]
+[[!template text="attached to the appropriate location on" start="00:18:04.960" video="mainVideo" id=subtitle]]
+[[!template text="the" start="00:18:07.120" video="mainVideo" id=subtitle]]
+[[!template text="Emacs window. So," start="00:18:07.679" video="mainVideo" id=subtitle]]
+[[!template text="EAF linked Qt5 with Emacs using" start="00:18:10.720" video="mainVideo" id=subtitle]]
+[[!template text="Elisp and Python." start="00:18:13.440" video="mainVideo" id=subtitle]]
+[[!template text="On the Python side which is colored" start="00:18:14.960" video="mainVideo" id=subtitle]]
+[[!template text="yellow in the image," start="00:18:17.120" video="mainVideo" id=subtitle]]
+[[!template text="we have QGraphicsView and" start="00:18:18.640" video="mainVideo" id=subtitle]]
+[[!template text="QGraphicsScene objects." start="00:18:20.439" video="mainVideo" id=subtitle]]
+[[!template text="These are used to simulate the Emacs" start="00:18:22.960" video="mainVideo" id=subtitle]]
+[[!template text="window buffer design" start="00:18:25.039" video="mainVideo" id=subtitle]]
+[[!template text="where QGraphicsScene is similar to" start="00:18:26.640" video="mainVideo" id=subtitle]]
+[[!template text="buffers in Emacs," start="00:18:28.640" video="mainVideo" id=subtitle]]
+[[!template text="it controls the state and the content" start="00:18:29.840" video="mainVideo" id=subtitle]]
+[[!template text="details of the application" start="00:18:31.840" video="mainVideo" id=subtitle]]
+[[!template text="where QGraphicsView is similar to Emacs" start="00:18:34.240" video="mainVideo" id=subtitle]]
+[[!template text="window. It populates the buffer" start="00:18:41.200" video="mainVideo" id=subtitle]]
+[[!template text="(QGraphicsScene) to the foreground at" start="00:18:43.200" video="mainVideo" id=subtitle]]
+[[!template text="the appropriate" start="00:18:45.919" video="mainVideo" id=subtitle]]
+[[!template text="position." start="00:18:46.960" video="mainVideo" id=subtitle]]
+[[!template text="Whenever an EAF mode buffer" start="00:18:48.573" video="mainVideo" id=subtitle]]
+[[!template text="brings to a background…." start="00:18:50.320" video="mainVideo" id=subtitle]]
+[[!template text="Whenever an EAF mode buffer brings to the" start="00:18:57.679" video="mainVideo" id=subtitle]]
+[[!template text="foreground, sorry," start="00:18:59.679" video="mainVideo" id=subtitle]]
+[[!template text="a QGraphicsView instance is" start="00:19:00.880" video="mainVideo" id=subtitle]]
+[[!template text="created, and whenever the buffer goes to" start="00:19:02.559" video="mainVideo" id=subtitle]]
+[[!template text="the background" start="00:19:05.120" video="mainVideo" id=subtitle]]
+[[!template text="the QGraphicsView instance is then" start="00:19:06.080" video="mainVideo" id=subtitle]]
+[[!template text="deleted," start="00:19:08.000" video="mainVideo" id=subtitle]]
+[[!template text="while QGraphicsScene — the actual" start="00:19:09.120" video="mainVideo" id=subtitle]]
+[[!template text="process — remains running in the" start="00:19:10.960" video="mainVideo" id=subtitle]]
+[[!template text="background until the EAF mode buffer is" start="00:19:12.480" video="mainVideo" id=subtitle]]
+[[!template text="killed." start="00:19:14.480" video="mainVideo" id=subtitle]]
+[[!template text="GPU compositing is used to ensure that" start="00:19:16.000" video="mainVideo" id=subtitle]]
+[[!template text="QGraphicsView and" start="00:19:18.320" video="mainVideo" id=subtitle]]
+[[!template text="QGraphicsScene is synchronized real time." start="00:19:19.440" video="mainVideo" id=subtitle]]
+[[!template text="Using QWindow::setParent function" start="00:19:21.840" video="mainVideo" id=subtitle]]
+[[!template text="the QGraphicsView is attached to the" start="00:19:24.000" video="mainVideo" id=subtitle]]
+[[!template text="appropriate location on the Emacs frame," start="00:19:25.679" video="mainVideo" id=subtitle]]
+[[!template text="so that although GUI applications are" start="00:19:27.840" video="mainVideo" id=subtitle]]
+[[!template text="not running within Emacs," start="00:19:30.640" video="mainVideo" id=subtitle]]
+[[!template text="they look as if they were." start="00:19:32.400" video="mainVideo" id=subtitle]]
+[[!template text="When user types on the keyboard it is" start="00:19:36.160" video="mainVideo" id=subtitle]]
+[[!template text="first received by the Emacs" start="00:19:39.039" video="mainVideo" id=subtitle]]
+[[!template text="EAF mode buffer, and then Elisp sends" start="00:19:41.039" video="mainVideo" id=subtitle]]
+[[!template text="the event to QGraphicsScene using" start="00:19:43.520" video="mainVideo" id=subtitle]]
+[[!template text="D-Bus." start="00:19:45.360" video="mainVideo" id=subtitle]]
+[[!template text="When user clicks on the GUI application" start="00:19:46.240" video="mainVideo" id=subtitle]]
+[[!template text="it is received by the QGraphicsView" start="00:19:48.720" video="mainVideo" id=subtitle]]
+[[!template text="and processed in Python. Elisp can" start="00:19:50.799" video="mainVideo" id=subtitle]]
+[[!template text="communicate with Python through D-Bus," start="00:19:53.280" video="mainVideo" id=subtitle]]
+[[!template text="in other words you can" start="00:19:55.200" video="mainVideo" id=subtitle]]
+[[!template text="customize and extend Emacs not just" start="00:19:59.200" video="mainVideo" id=subtitle]]
+[[!template text="using" start="00:20:01.360" video="mainVideo" id=subtitle]]
+[[!template text="Elisp, and now you can use Python, this way" start="00:20:01.760" video="mainVideo" id=subtitle]]
+[[!template text="one can leverage" start="00:20:04.480" video="mainVideo" id=subtitle]]
+[[!template text="all the Python properties like" start="00:20:05.360" video="mainVideo" id=subtitle]]
+[[!template text="multi-threading or some other stuff," start="00:20:07.039" video="mainVideo" id=subtitle]]
+[[!template text="the entire Python ecosystem can be" start="00:20:09.600" video="mainVideo" id=subtitle]]
+[[!template text="utilized as well," start="00:20:11.679" video="mainVideo" id=subtitle]]
+[[!template text="such as the Qt web engine that is the" start="00:20:13.520" video="mainVideo" id=subtitle]]
+[[!template text="basis for" start="00:20:16.159" video="mainVideo" id=subtitle]]
+[[!template text="our EAF Browser, and PyMuPDF is the" start="00:20:16.960" video="mainVideo" id=subtitle]]
+[[!template text="basis for the EAF PDF Viewer." start="00:20:20.640" video="mainVideo" id=subtitle]]
+[[!template text="This really opens the window to many" start="00:20:23.360" video="mainVideo" id=subtitle]]
+[[!template text="many new possibilities to extend Emacs" start="00:20:25.840" video="mainVideo" id=subtitle]]
+[[!template text="using EAF." start="00:20:28.240" video="mainVideo" id=subtitle]]
+[[!template new="1" text="All right, back here. We are always" start="00:20:32.720" video="mainVideo" id=subtitle]]
+[[!template text="looking for people to join the" start="00:20:36.080" video="mainVideo" id=subtitle]]
+[[!template text="development, there are many many" start="00:20:37.760" video="mainVideo" id=subtitle]]
+[[!template text="more work that needs to be done," start="00:20:39.679" video="mainVideo" id=subtitle]]
+[[!template text="such as testing and debug EAF on" start="00:20:42.720" video="mainVideo" id=subtitle]]
+[[!template text="more Linux distros and window managers" start="00:20:44.640" video="mainVideo" id=subtitle]]
+[[!template text="such as i3" start="00:20:46.640" video="mainVideo" id=subtitle]]
+[[!template text="and stuff, you can also add new EAF" start="00:20:47.760" video="mainVideo" id=subtitle]]
+[[!template text="applications," start="00:20:51.200" video="mainVideo" id=subtitle]]
+[[!template text="or debug and enhance existing EAF" start="00:20:52.080" video="mainVideo" id=subtitle]]
+[[!template text="applications," start="00:20:54.240" video="mainVideo" id=subtitle]]
+[[!template text="or you can port EAF to native Wayland" start="00:20:55.440" video="mainVideo" id=subtitle]]
+[[!template text="which I just discussed with" start="00:20:58.000" video="mainVideo" id=subtitle]]
+[[!template text="the emacs-webkit author" start="00:21:00.240" video="mainVideo" id=subtitle]]
+[[!template text="Akira Kyle, and he told me that" start="00:21:03.840" video="mainVideo" id=subtitle]]
+[[!template text="EAF doesn't really work on" start="00:21:07.919" video="mainVideo" id=subtitle]]
+[[!template text="native Wayland, because it uses" start="00:21:11.200" video="mainVideo" id=subtitle]]
+[[!template text="XWayland, so it doesn't work on the pgtk" start="00:21:14.320" video="mainVideo" id=subtitle]]
+[[!template text="port of Emacs." start="00:21:16.799" video="mainVideo" id=subtitle]]
+[[!template text="And we also need people to port EAF to" start="00:21:18.159" video="mainVideo" id=subtitle]]
+[[!template text="non-free operating systems" start="00:21:20.559" video="mainVideo" id=subtitle]]
+[[!template text="including Windows and macOS," start="00:21:22.080" video="mainVideo" id=subtitle]]
+[[!template text="and that's because, like, D-Bus is a Linux" start="00:21:25.600" video="mainVideo" id=subtitle]]
+[[!template text="specific feature, so it doesn't really" start="00:21:28.480" video="mainVideo" id=subtitle]]
+[[!template text="work on other platform." start="00:21:30.080" video="mainVideo" id=subtitle]]
+[[!template text="We need to check, replace it with some" start="00:21:31.360" video="mainVideo" id=subtitle]]
+[[!template text="alternative, and" start="00:21:33.039" video="mainVideo" id=subtitle]]
+[[!template text="QGraphicsScene somehow doesn't really" start="00:21:34.640" video="mainVideo" id=subtitle]]
+[[!template text="work on macOS," start="00:21:36.720" video="mainVideo" id=subtitle]]
+[[!template text="and there are many other to-do lists" start="00:21:38.640" video="mainVideo" id=subtitle]]
+[[!template text="available, so please have a look" start="00:21:40.320" video="mainVideo" id=subtitle]]
+[[!template text="and see if there is anything you want to" start="00:21:42.880" video="mainVideo" id=subtitle]]
+[[!template text="work on." start="00:21:45.039" video="mainVideo" id=subtitle]]
+[[!template text="All right. So, since this is a" start="00:21:46.640" video="mainVideo" id=subtitle]]
+[[!template text="pre-recorded talk I won't be able to do" start="00:21:49.039" video="mainVideo" id=subtitle]]
+[[!template text="the Q & A real time in the video." start="00:21:51.120" video="mainVideo" id=subtitle]]
+[[!template text="However, I will be around on the" start="00:21:53.520" video="mainVideo" id=subtitle]]
+[[!template text="collaborative pad" start="00:21:56.080" video="mainVideo" id=subtitle]]
+[[!template text="and the IRC #emacsconf," start="00:21:57.200" video="mainVideo" id=subtitle]]
+[[!template text="#emacsconf-questions" start="00:22:00.239" video="mainVideo" id=subtitle]]
+[[!template text="to answer any questions when it pops up," start="00:22:01.360" video="mainVideo" id=subtitle]]
+[[!template text="and you can also submit an issue" start="00:22:04.139" video="mainVideo" id=subtitle]]
+[[!template text="on the repo, and you can check the wiki" start="00:22:05.760" video="mainVideo" id=subtitle]]
+[[!template text="for some other guides and tricks." start="00:22:09.120" video="mainVideo" id=subtitle]]
+[[!template text="All right. Thank you guys, and hopefully" start="00:22:12.640" video="mainVideo" id=subtitle]]
+[[!template text="you find" start="00:22:15.039" video="mainVideo" id=subtitle]]
+[[!template text="this EAF project very interesting, and" start="00:22:16.000" video="mainVideo" id=subtitle]]
+[[!template text="enjoy the rest of EmacsConf 2020." start="00:22:18.320" video="mainVideo" id=subtitle]]