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