►
From YouTube: Rust Cologne: Wayland + Rust
Description
https://media.ccc.de/v/rustcologne.2018.10.wayland
I’ll take some time to explain what is Wayland and why it’s here to stay.
Then, I’ll give a high level overview of the state of Rust on Wayland:
how to write servers and clients, and how far along we can get with Rust.
I want to focus on Smithay projects, and wlroots-rs.
Dorota
A
A
B
A
I
like
it,
but
you
can
hear
without
noise
I
did
to
them,
for
because
most
of
the
people
know
me
anyway,
but
my
name
is
Radha
and
this
is
going
to
be
a
row
well,
so
there
there's
a
short
answer
about
Weyland
Weyland
is
over
with
I
changed
this
generally,
when
I'm
in
the
future.
Where
is
the
future
of
this
place?
I
reversed
under
live
and
we're
probably
not
getting
away
with
the
few
with
out
of
this
future.
A
Let's
see
why,
so
this
is
the
official
text
from
pretest
aboard
explaining
what,
when
I
did
it
I
would
focus
on
the
second
sentence.
First,
Weyland,
the
protocol
four
components
are
adopted,
client.
Well,
the
see
library,
implementation
of
that
protocol,
so
it's
introduced
in
a
couple
of
words,
but
our
clients
and
the
protocol.
Others
are
the
three
key
words
of
a
describe
the
relationship
of
things
which
are
relevant
and
whether
they're
the
first
sentence
Weiland,
is
intended
as
a
simpler
replacement
for
X
easier
to
develop
and
maintain.
So
we
can
get
an
idea.
A
The
people
got
sick
of
X
and
want
something
that
will
come
back
to
that,
but
first
about
the
protocol.
So
you
get
an
idea,
client
about
the
dart
and
protocol
service,
it's
all
about
Windows
and
how
they
are
placed
on
your
desktop.
Well,
not
just
with
there's
also
this
place.
We
have
a
great
example
year
where
there
are
two
distillation
they
might
be
running
on.
Well,
we
don't
know
actually
doing
up
with
the
digital.
A
Second
Mike
Whalen
is
dealing
with
Windows
pointers,
you're
just
pointing
the
pointer
with
my
pointer
and
how
they
talk
to
different
things,
and
why
do
people
are
not
people
happy
with
eggs?
I
turns
out
to
be
rather
leaky,
and
you
cannot
really
contain
it
very
well.
It's
also
somewhat
synchronous
so
that,
when
an
application,
this
happens
all
the
time
to
me
when
a
remote
application
gets
stuck
at
some
particular
point.
A
The
whole
desktop
becomes
unresponsive
and
it's
like,
for
example,
the
internet
goes
down
at
the
time
that
it's
wrote
it's
a
really
nasty
time
because
it
can't
and
you
can
always
switch
the
virtual
kill
everything
now.
So
the
main
issue
with
X
was
that
it
was
not
possible
to
sandbox
it
if
you
could
create
a
time.
A
I,
don't
know
we
could
talk
about
the
web
browser,
but
web
browser
is
doesn't
have
that
much
freedom
with
operation
to
it.
Imagine
kids
make
a
sandbox
for
for
application.
You
could
still
never
assure
that
the
application
doesn't,
for
example,
try
to
snoop
on
your
key
presses
or
doesn't
try
to
watch
your
desktop.
That
was
a
big
issue
with
X
I.
Don't
know
it
exact
reasons,
but
it
was
being
done
fixable,
another
thing
yeah,
so
with
Wayland,
you
cannot
do
that.
You
cannot
snoop
on
the
input
of
other
programs.
A
You
cannot
generate
Inc
with
events
that
appear
to
come
from
the
urea.
There
was
not
an
issue
with
it
Explorer.
You
cannot
capture
all
the
input,
events
to
the
exclusion
of
the
users
application.
So
if,
for
example,
it
did
not
follow
any
obligation,
you
can
execute
theoretically
sponsor
a
fake
desktop,
take
all
the
input
events
and
generate
some
fake
outputs
and
the
user
will
never
know,
because
there's
just
no
way
to
for
that
scenario
to
be
presented
to
the
user
so
yeah
this
this.
This
is
gone
with.
A
So
Whelan,
but
you
could
break
it
if
you
design
a
new
protocol
which
is
fundamentally
broken
so
that
that's
one
of
the
main
point
of
oil
of
Weyland
is
composed
of
little
pieces
which
are
rotated
protocols
and
they
are
called
interfaces,
and
these
are
some
examples
of
interfaces
that
you
can
find
in
a
way.
I
tell
them
are
rather
important.
They
are
on
the
top,
and
some
of
them
are
less
important,
but
I
think
I
selected
all
a
representative
sample
of
what
a
particular
composite
are,
in
this
case
roots
tongue
from
the
double
roots
project.
A
What
kind
of
things
well
at
this
so
current
goes
the
seat.
A
seat
is
a
usually
much
user
and
have
a
keyboard,
and
they
can
have
pointers
and
that
that's
rather
important
when
we're
dealing
with
applications.
We
want
to
control
them,
there's
a
shell
which
is
a
protocol
for
the
protocol
for
showing
windows
to
the
user.
So
unless
you
are
supporting
supporting
shell,
you
are
not
going
to
have
windows
that
you
can
move
around
on
the
desktop
and
you're
not
going
to
have
minimization.
C
A
You
will
not
have
graphical
devices
gamma
control,
gamma
control,
screenshots
are
also
not
straight,
not
not
not
straight
or
they
are
straightforward,
but
they
are
not
a
given.
You
have
to
have
a
separate
protocol
and
so
on,
and
so
on,
so
for
everything
that
you
want
to
do,
you
have
to
think
about
it
and
you
have
to
implement
in
your
competitor
and
make
sure
that
the
applications
also
can
make
use
of
it.
So.
A
This
call
is
a
bit
of
a
masculine
composite.
Ours
cannot
be
counted
on
when
you
have
different
features
and
different
components.
Ours,
you
can
have
different
support
or
different
protocols
are
supported
in
different
clients.
So
this
is
a
I,
don't
know,
I
think
it
is
kind
of
a
cost
of
having
a
more
safe
system.
Some
things
are
still
missing.
I
think
the
video
recording
is
still
in
progress
good.
A
B
A
C
A
A
Shell,
which
supports
walence
satirical
versions
and
sway,
which
was
made
from
the
ground
as
a
way,
love
compositor,
it's
one
of
the
tiling
window
manager.
It
used
to
be
appalling.
When
imagine
now
it's
a
welcome
poster
when
talking
about
whele
and
on
the
right
side,
there's
white,
color,
there's
rust
and
underside
like
out
of
this
three
or
actually
out
of
all
of
them.
That
I
designed
calming
way
cooler
is
developed,
is
actively
developed.
A
They
are
really
language
or
not
so
I
don't
need
to
focus
on
them,
but
I.
Think
focusing
on
on
the
compositor
side
is
much
more
important,
but
why
did
I
start
bothering
with
it
I'm
working
for
tourism,
which
is
a
company
that
putting
the
user
security
and
privacy
first
foremost
and
we
are
developing
a
new
phone?
That's
going
to
respect
you
this
in
this
way
and
turns
out
that
we
don't
have
a
compositor
for
that.
Our
decision
was
to
use
Waylon,
but
unfortunately
the
composer's
are
just
not
there.
We.
C
A
Started
using
one
of
the
C
compositors,
but
many
thing
we
will
have
to
someone,
we
will
have
to
Justice
compositor,
well
work
well
on
constraint,
screens
and
why
not
take
that
opportunity
to
start
using
rest?
So
what
should?
Why
should
we
use
rest
if
we
can
get
the
important
qualities
of
a
compositor
without
it?
Maybe
we
don't
have
to
change
many
things?
Maybe
we
don't
have
to
make
the
switch
to
Rasmus.
Let's,
let's
see
what
trust
cannot
offer
us,
the
compositor,
the
compositor
or
window
manager
should
be
reliable.
D
A
Crash
and
take
all
the
applications
with
it,
that's
completely
unacceptable.
The
other
thing
is
speed.
That's
because
the
user
is
is
interacting
with
it
and
the
kind
of
comes
with
cuteness.
You
do
not
want
to
start
recording
videos
and
then
see
that
is
through
the
frame
range
up
to
15
or
10.
It
also
has
to
be
smooth
to
allow
for
quick
interactions.
C
A
Do
not
want
to
wait
for
your
team,
you
have
to
you,
have
to
be
a
thin
layer
that
doesn't
introduce
any
overhead.
This
is
also
important
way
to
build.
We
are
shipping
in
April
and
we
want
this
to
get
done
well.
We
have
a
lot
of
other
projects
due
to
careful.
So
what
does
rust
give
us
rust
gives
us
the
type
system
which
is
introducing
reliability
a
lot.
In
my
opinion,
the
speed
comes
from
zero
cost
abstractions
with
nothing
what
they
think
the
interest
very
little
overhead
compared
to
C.
A
So
we
are
at
most,
we
are
even,
but
we
might
be,
we
might
be
moving
a
little
bit,
but
that
shouldn't
be
much
of
an
issue
when
it
comes
to
smoothness.
I
have
to
did
you
come
back
here
and
think
about
how
applications
interact
with
the
system
applications.
Usually
another
example:
video
player
is
going
to
update
its
own
window
and
it's
going
to
throw
some
surfaces
to
draw,
and
it's
going
to
have
now
receive
some
in
truth
or
something.
A
But
earlier
on
the
other
side
of
the
screen,
you
can
have
another
application,
which
is
a
game,
for
example,
which
is
also
trying
to
update
the
buffers
or
whatever
draw
something
like
only.
We
need
to
look
at
them.
They
are
completely
separate,
and
this
makes
it
possible,
hopefully
to
have
the
compositor
treat
them
separately
and
with
Russ
support
for
concurrency.
A
There
is
a
librarian
on
the
left
side
of
the
slide.
You
can
see
three
entries
which
are
related
to
the
client
size
and
I
will
not
talk
that
much
about
them,
but
they
want
to
show
that
there
is
something
there
and
there
are
three
I
think
like
completely
even
independent
implementations
for
a
server-side
understand,
compositor
site
as
tre
stripe
indicates
what
has
been
written
in
C
and
the
start
from
talks
is,
is
what
has
been
written
in
rust
and
I,
skipped
this
six
crates
and
just
included
their
arrest
rates
to
make
it
simpler.
So.
D
A
Whale
and
feather
on
top
of
which
smithy
is
built
where
the
server
is
a
basic
crate,
supporting
or
basic
writing,
and
it's
a
basic
trade
based
on
the
basic
Whelan
library
to
create
servers.
So
the
top
the
bottom
library
that
you
can
see
here
is
straight
from
the
Whelan
project
and
really
standard
zone.
So
it's
a
quite
a
low-level
wrapper
over
whatever
minimum
stuff.
You
have
to
use
to
build
winners
things
and
on,
and
there
is
a
compositor
framework
which
is
called
smithing
and
fireplace
seems
to
be
using
the
framework
going
further.
A
There
are
the
twin
projects,
WLC
and
WL
routes,
and
both
of
them
are
built
on
top
of
web
server.
Actually,
so
there
are
kind
of
high-level
implementations
of
several
protocols
for
Wayland,
but
they
are
written
in
C
and
the
wrap
dress.
Wrappers
are
well
just
just
as
wrappers
over
high
level
libraries,
those
that
will
see
suppose
elation
much
higher
level.
A
A
So
so
that's
that's,
as
you
can
see
it's
kind
of
disappointing,
because
all
of
those
are
building
upon
see
what
will
trust
if
the
news
is
not
so
good.
Apparently
there
is
an
issue
with
messa
and
open
to
you,
meaning
that
you
pretty
much
cannot
write
a
server
implementation
in
rust
or
in
any
other
language.
That's
not
using
official
c
libraries
that
was
that
comes
from
a
conversation
from
last
year,
which
kind
of
died
outside
of
know
whether
this
is
still
the
official
position
of
of
the
library
maintainer.
A
But
anyway
there
was
this
project
perception
skyline,
which
tried
to
prove
it
wrong,
and
this
is
kind
of
also
connective
right
now,
so
I
do
not
really
have
high
hopes
for
for
this
to
change
in
the
near
future.
So
this
is
really
disappointing,
but
it
means
we
are
not
getting
pure
wrath
protocol
implementations,
even
though
the
author
said
it
would
be
really
easy
and
nice
to
righted
enough.
It's
a
very
sad
time.
So
then
we'll
have,
let's
see
what
this
is
all
about.
A
I
have
my
demo
clip
at
our
I
had
a
kind
of
an
interactive
version
of
the
demo,
where
we
could
write
a
couple
of
functions
to
make
the
example.
Compositor
do
things
and
one
of
those
things
or
maybe
I
should
show
you
that
the
composite
of
first,
the
composite
art,
is
going
to
bathe
on
WL
RS
and,
let's,
let's
do
it.
A
Let's
build
the
example,
you
can
see
that
they
have
to
mess
with
Apache.
Okay,
so
I
have
to
move.
We
met
a
little
bit
with
the
past
because
the
library
would
not
go
once
I
know.
I
mean
I
would
be
begging
to
me
if
the
issue
entity-
shell,
is
the
name
of
the
protocol,
which
is
allowing
windows
to
be
shown
on
the
screen
and
I
need
to
find
where
I
say
this.
A
The
composite
are,
is
basically
a
demo
from
WL
roots
RF,
and
the
only
responsibility
of
that
demo
is
to
be
able
to
share
Windows.
It
is
some
modifications
because
gtk
is
requiring
a
protocol.
That
was
not.
There
was
a
last
one
line
change,
so
it's
pretty
much
with
the
stock
configuration
I
should
have
it
somewhere.
Okay,.
A
B
A
When
I
open
an
application
in
there,
it's
there
I
can
kind
of
click
on
it,
but
not
really.
The
keyboard
input
works,
but
I
cannot
do
much
with
it.
I
cannot,
for
example,
move
the
window
or
I
cannot
hit
the
buttons,
because
that
stuff
hasn't
been
implemented
in
this
compositor
and
it's
not
a
baseline.
A
A
A
There
is
another
cursor
here,
I,
don't
know
why
and
there's
shells
which
is
in
other
words
windows
and
handle
to
the
whole
seat,
which
should
contain
cursor
keyboarding
and
the
cursor
manager.
So
what
we
need
to
the
cut
is
the
second
place
which
actually
renders
the
shells
of
Windows
well.
The
protocol
name
is
equity.
Shell
and
I.
Don't
really
know
why
exactly
this
has
to
go
Windows
shells
but
anyway,
and
this
one
is
able
to
place
windows
on
the
screen
it
iterates
over
all
the
shelves.
A
It
gives
them
widths
and
Heights,
it
gives
them
positions
and
then
it
renders
them
on
layer,
own
outputs,
which
means
strings
and
render
cells
function
gets
called
every
frame.
So
every
frame
we
have
the
ability
to
drop
it
and
there's
a
metro
and
some
weird
syntax
that
you
might
have
noticed
a
fire
they
can
tell.
This
is
a
special
macro
which
is
which
is
particular
at
u-w
roots
RS,
which
unpack
handles
the
objects
and
matches
them
to
the
object.
A
Data
in
Wayland
three
objects
that
it's
being
interacted
with
from
the
compositor
between
the
compositor
and
the
client.
Every
object
is
given
a
handle
and
the
hand
only
the
handle
is
being
passed
around.
So
whenever
there's
a
cold,
the
cold
doesn't
really
send
the
object.
The
co
can
send
only
cold
some.
The
communication
that
really
stand
out.
A
If
Nicole
can
ask
for
the
object
to
be
created
on
server
side
and
the
server
names
that
start
tracking
it
state,
they
call
can
change
the
object
or
the
Koken
of
data
object
in
some
way,
but
in
DM
is
this
the
server
which
or
the
receiver
will
track
the
state
and,
on
the
other
hand,
the
the
one
who
created,
who
has
to
call
object
to
be
created
also
probably
needs
to
keep
some
state
of
the
order.
So
the
object
is
just
that
there.
A
In
reality,
there
is
a
handle
which
corresponds
to
two
things:
the
object
on
one
side
and
the
other
on
the
other
side.
So
when
we
are
looking
at
this,
the
state
actually
stores
handles,
but
we
need
to
get
to
the
objects
in
themselves.
So
now-
and
this
is
the
the
border
of
fluorescence-
see,
the
objects
are
see,
objects
and
they
need
to
the
handle
needs
to
be
transformed
into
the
see
object,
which
is
then
wrapped
and
rough
and
possible
to
operate
from
with
interest.
A
A
Cursor
state
no
data
structure
we
to
look
for
fermentations
input
larger.
Oh,
yes,
the
pointer
added
exploit
oh
yeah,
there
isn't
pointer,
Handler
and
pointer
Honda.
Just
deals
with
events
come
on
a
pointer
defender,
removal
moved
up
the
counselor
pointer
so
event
from
the
events
that
comes
from
from
some
input.
Library
comes
here
and
gets
passed
on
to
the
client.
A
Let's,
let's
take
one
of
those
to
see
what
exactly
is
the
motion
handler
is
taking
on
a
motion
event
at
processing
it,
and
then
it
takes
the
W
routes
object
and
give
it
a
high
level
command
so
yeah.
There
is
not
much
difficulty
here.
The
button
event
handles
whatever
happens
to
the
button.
It
handles
that
down
event
really
up
events,
and
it
passes
that
on
to
the
client
with
taste.
It
seems
event
that
is
another
simple
so
with
what
we
eat
to
do
in
order
to
to
move
a
window.
A
If
we
want
to
say
simple
is
just
using
the
button
press
Q
now
when
the
cursor
one
wonders
mouse
button
has
been
clicked
and
the
motion
event.
So
if
we
want
to
start
moving
Windows,
we
definitely
want
to
know
where
they
are,
and
currently
we
do
not
have
that
we
have
a
shelf
space,
but
they
only
consider
the
handle
so,
let's
add
to
feel
to
the
structure,
make
them
according
to
their
own
prevention,
floods,
X
up
with
identity
in
the
wrong
order.
A
Sell
it
at
you
variables
that
are
going
to
attract
the
state
of
when
it
comes
to
the
pollution.
So
when,
once
we
have
those
two
variables
you
have
understand
getting
errors
and
because
I'm
too
lazy
to
go
through
all
code
by
hand
and
event,
you
let
different
other
point.
It
helps
me.
Oh
that's
not
right,
come
on
yeah
I'm,
totally
right
for
money
right
decision.
A
A
D
A
So,
what's
missing
is
handling
of
the
mouse
events.
What
was
that
again?
Let's
start
humming
the
buttons.
So
first
we
need
to
have
a
distinction
between
when
the
mouse
pointer
is
just
moving
around
and
the
distinction
and
the
site
where
the
mouse
pointer
is
moving
things.
So,
let's
find
whether
we
have
that
there
should
be
a
state
up
on
the
mouse
pointer,
which
is
yet
not
all
and
moving.
So
when
the
pointer
is
held
down
is
going
to
be
treated
as
moving.
A
This
function
is
something
I
brought
before
and
I
just
find
when
one
finds
out
where
the
second
window
has
been
click.
So
if
no
window
has
been
fixed,
then
we
don't
have
much
video,
but
if
the
window
has
been
placed,
then
let's
push
the
pointer
in
the
moving
state
or
what,
when
the
event
looks
much.
D
A
A
C
D
B
A
A
A
We
if
we
are
over
a
window
and
we
are
pressing,
then
we
are
going
to
put
the
cursor
in
the
dragging
mode.
But
if
we
release
the
button
we
are
going
to
be
put
in
the
normal
mode.
So
the
situation
that
could
go
wrong
is
that
we
did
not
find
the
shell
and
will
you
release
the
cursor,
and
but
somehow
that
means
that
the
cursor
somehow
left
the
shell,
while
dragging
so
that's
rather
unlikely
to
them.
I.
C
A
A
B
Do
it
later
on
this?
Was
it
this.
C
A
A
A
B
A
B
A
A
C
B
A
So
we
can
just
put
this
inside
the
closure
and
somehow
communicate
the
return
value
which
is
I,
don't
know
some
kind
of
yes
or
no,
but
actually
it's
going
to
be
much
am
much
more
useful
for
this
example.
If
we
return
to
actual
shell
handle,
we
can
return
this.
Is
it
just
a
simple
function
that
compares
whether
the
shell
is
at
this
point
on
the
screen
and
I
just
realized
that
it
does
not
contain
the
shell
offset?
So
let's
do
that
now.
A
D
A
Yeah,
so
the
shell
is
an
offset.
This
is
the
offset
and
this
comb
checks
whether
this
shell
window
contains
a
point
up
on
this
cream,
which
is
X,
so
we
should
think
they
offset
fast
turns
on
the
treat,
there's
a
simple
mathematics,
but
it's
really
annoying
when
there
are
other
people
talking
to
you
that
you
get
this
right.
A
A
Should
be
fine,
if
that's
not
that's
returned
denarii,
and
this
is
the
exam
on
the
double
think
that
they
want
to
do
in
the
other
function.
It's
kind
of
annoying
the
handle
cannot
return
immediately
from
the
function,
so
I
have
to
the
condition
inside
this
this
macro
and
then
return
either
true
or
false
after
the
matter
ends.
So
I
will
have
to
do
that
again.
I
think,
because
I
can't
just
simply
do
return
from
the
whole
function
here.
C
A
A
Return
to
a
boss
like
by
calling
Sir
John
T,
contains
one
yeah.
So
if
I
do
that,
I'm
going
to
get
back
inside
the
handle,
because
that's
the
mattress
to
a
cobra
but
chance
days
is
from
the
other
scope,
it's
Europe,
the
traitor
I
think
it's
Boren
wanted
me
to
do.
You
mean
because
of
the
at
rel
equals
whatever?
Yes,
after
I
share
this,
this
becomes
enclosure.
A
A
This
is
just
a
high-level
wrapper
over
the
WL
roots,
which
is
itself
I,
love,
library
and
smithy
and
other
composite
are,
is
a
bit
more
around
if
you
mighty
crest,
as
far
as
you
can
tell
I,
didn't
do
as
much
work
on
that,
but
it
seems
nicer,
so
I
think
that's
going
to
be
easy.
I
am
I,
can't
experience.
B
C
A
A
A
A
B
A
A
So,
let's,
let's
I,
guess:
let's
save
the
shell
so
that
we
know
what
we
are
moving
like
that,
because
we
still
have
to
handle
this
emotion
event
and
we
do
not
know
what
we
are
moving.
Then
it
doesn't
really
help
us
so
for
that
sir
I
am
going
to
save
their
faith
I'm
going
to
save
the
shell
handle
in
the
cursor
state,
which
might
not
be
such
a
good
idea
after
more
thinking.
But
some
of
you
think
right
now.
Oh.
A
A
C
B
C
A
C
B
A
B
C
B
A
Wouldn't
give
us
it
gives
us
the
show
handle
inside
the
site,
which
is
original
bad
and
it
allows
us
to
move
on
to
their
second
function,
which
is
actually
dealing
with
positions
of
things.
So
here
we
have
the
motion
event
and
we
can
find
out
what
the
deltas
or
what
we
need
to
do
is
find
the
handle
that's
currently
present,
which
is
easy
because
that's
a
cursor
and
what
do
they
name
it,
but
today
with
it
here.
Yes,
I
put
it
somewhere
all
right.
So
that's
touch.
A
A
A
B
A
A
A
B
Need
a
couple:
sonic
phones,
you
need
a
couple
semicolons
with
your
D
cannot
require
some
equal
to
the
end
of
this
all.
D
A
A
A
So
I'm
using
the
space
I'm
showing
the
Faceman,
which
is
inside
the
foyer
and
also
here
so
I'm,
crying
that
I'm
still
referencing
that
big
space
from
the
inside.
So
if
a
flounder
state
is
really
not
a
very
I
know,
it
is
a
big
application
because
then
I'm
trying
to
modify
this
tightening
wants
to
modify
the
global
state.
So
that's
kind
of
mine
and.
A
D
A
Is
no
uniqueness,
that's
that's
true
and
probably
failing
to
match.
Oh,
that's!
That's
a
lot
of
initialization!
Let's
I'm
curious,
whether
this
dis
events
keep
showing
when
I'm
just
doing
things
because
that's
incompatible
printed
debugging,
but
now
it
cannot
show
anyone
so
men
in
print
of
the
baggage
versa.
C
A
So
we
can't
much
and
I'm
pressing
the
buttons
and
nothing
happens,
which
is
fine,
because
that
change
of
state
only
happens
when
there's
a
window
underneath.
So,
let's
pop
up
a
window
there's
a
window
now,
so
we
should
have
a
go
to
press.
Well,
it's
happening.
Let's
bring
it
by
here.
There
is
well
there's
more
information
than
I
asked
for
didn't
you
think.
A
Accidently
peacefully,
so
we
have
a
cursor
mode,
which
is
becoming
the
moving
or
dragging
mode
and
I
press
down,
and
then
it
becomes
come
back
to
normal
after
I
release,
which
is
quite
pretty
fine,
but
then
we
might
have
a
reason
to
thing
that
something
is
wrong
when
it
comes
to
the
actual
movement
which
seem
that
this
is
not
a
straightforward
functional
button.
So
what
what
we
want
you
to
check?
Let
us
bring
something
whenever
anything
is
moving
at
all
I.
Think
that
thing
to
be
the
right
spot.
A
A
A
B
D
A
A
A
A
A
A
D
C
B
D
A
A
Okay,
to
tell
me
how
no
immigrants,
sis
trust
size,
905,
600,
yeah,
love
those
enough
know
how
that
might
happen.
I
guess
we
don't
need
it.
Mom's.
A
This
is
the
kind
of
things
that
you
have
to
do,
what
we
are
a
window
manager
we
which,
as
you
have
seen
it
is
fun,
especially
when
you
are
dealing
with
some
library
which
was
originally
written
for
C,
so
yeah
Cindy,
and
you
can
probably
work
through
that
lease.
You
really
want
to
so
a
bit
much
brilliant
daunting
task
that
much
but
yeah.
We
despair
it
from
another
demonstration
seeing
how
this
one
was
really
much
longer
than
it
looks
like
it
would
be.
A
But
there
is
this
second
library
which
is
more
breath
where
this
one,
which
is
called
smithing,
and
if
you
want
to
try
with
your
new
awesome
ways
to
manage
windows,
that's
where
you
should
probably
amend
by
to
start
doing
that
for
my
private
experimentations
yeah.
So
that's
what
I
have
to
show
you.
Thank
you
very
much.
C
A
Oh
yeah,
it's
an
acid
composer
and
most
of
their
competitors
that
I've
seen
which
are
doing
Weiland.
They
support
method
operation,
so
that
should
be
fine
I
think
they
have
like
three
different
modes
of
operation:
kms
X
and
s
no
frame
buffer
or
something
so
it's
it's
really
make
me
all
they
care
about.
If
you
have
something
from
drawn
and
to
receive
events,
so
that's
rather
simple
yeah,
not
how
I
do
the
compiler
works
on
at
work
to.
A
Is
it
true,
and
also
if
this
will
between
him
here?
So
this
is
true,
untrue
and,
depending
on
how
you
look
at
it,
the
protocol
design
is
simpler,
but
because,
because
the
consciousness
simpler,
so
the
general
design,
as
far
as
I
can
tell
is
simpler.
But,
firstly,
you
have
to
deal
with
a
multiple
protocols.
Who
is
she
I,
don't
know
what
the
situation
wasn't
like.
It
also
had.
Some
extensions
are
running
pal
and.
C
A
So
it
gets
done
so
much
more
than
I
do
so.
That's
not
that
one
complaint
that
you
could
have
a
good
wine
under
there's,
so
many
problems
from
different
protocols
that
are
not
really
comparable
it.
But
if
we
have
data
next,
then
we
are
not
really
making
things
worse.
But
when
people
complain
about
is
that
in
order
to
make
a
client
work,
you
need
thousand
lines
of
boilerplate,
which
is
not
the
case
with
it.
So
I
don't
know.
A
If
it
comes
from
a
simpler
design,
maybe
it
should
be
called
lower
level
or
something
but
apparently
well.
This
is
the
decision
that
people
made
so
sing.
The
simplest
simplest
application
that
you
can
make
random
Weiland
is
really
really
annoying
because
you
have
to
set
up
a
lot
of
things
manually.
You
have
to
set
up
the
the
cursor:pointer
manual.
It
was
kind
of
funny
you
have
to
set
up
the
DL
context.
A
A
A
A
Samples
and
pointer
the
pointer,
the
cup
was
called
pointer,
so
it
should
be
simple,
I'm
going
to
move
it
on
this
screen
and,
let's
see
that's
400
lines
of
codes,
and
this
is
just
the
main
function.
So
this
is
quite
annoying
that
you
have
to
do
like
you
have
to
deal
with
input.
Modified,
open,
modify,
frame,
modify,
handle
patch,
that's
kind
of
reasonable,
but
there
is.
There
is
a
lot
of
thing
that
you
have
to
do
and
what
my
most
annoying
thing
to
me
is
that
you
have
to
set
up
your
surfaces
yourself.
A
B
A
Immigration
targets,
if
well,
maybe
a
simple
video,
maybe
my
second
daughter's
simple
example-
is
still
one
honey
line
of
code,
but
they
like
this
one
better.
It's
not
that
bad,
but
it
doesn't
seem
like
it
going
to
show
any
windows.
C
A
See
yeah
it's
C,
but
like
you
can
get
an
idea.
How
much
stuff
is
necessary
just
to
get
something
running,
and
this
is
a
simple
example
that
just
solves
shoulders
square
I
can
even
demonstrate
that,
because
that
really
quick
I
have
everything
in
order
to
show
that
are
doing.
I
said
this
is
quaint,
but
today
my
computer
doesn't
seem
to
be
put
down.
C
A
A
But
if
you
have
to
deal
with
everything
like
setting
up
a
surface
setting
up
a
window
setting
up
a
pointer
setting
up
everything,
you
want
to
go
this
setting
up
and
binding
to
the
keyboard
binding
to
the
pointer
as
well
and
everything
you
have
to
really
do
everything
step
by
step
and
once
like
open
your
star
comes
in,
you
have
to
touch
some
are
kind
interfaces
and
that
becomes
annoying
quickly.
I.
A
So
Constance
surfaced
and
this
window
is
not
working
because
open
them
in
the
wrong
order
and
I
ended
up
having
to
compositors
at
the
same
time
so
yeah.
So
this
is
an
example
that
I
showed
you
the
one
that
contains
like
thousand
lines
or
so
I
show
this.
You
showed
it
to
someone
but
another
member
in
which
we
sorry
about
oh
yeah.
A
C
A
A
Is
no,
there
is
nothing
that
the
concept
of
Windows
is
not
the
same
way
on
this
basement
surfaces,
which
is
very
well,
which
is
also
not
the
same
as
buffers,
but
it
kind
of
similar.
So
literally
three
layers,
because
before
you
can
get
here,
first,
you
have
delegated
buffer,
which
is
containing
your
pixel
data,
which
is
kind
of
a
low-level
primitives.
So
it's
fine.
You
have
to
happen
another
surface
which
wraps
the
hot
butter
and
contains
information
like
the
scaling
factor
and
I.
A
Don't
know
what
else
so,
then
you
have
a
surface,
and
when
you
cut,
when
you
have
a
surface,
you
can
use
it
for
several
different
ways.
You
can
actually
start
using
the
surface
inside
protocols.
One
of
those
protocols
is
the
protocol
for
just
displaying
Windows.
The
other
protocol
is
a
protocol
for
displaying
panels,
which
is
this
one
is
using,
even
though
it's
not
a
panel,
so
you
can
plug
it
into
different
protocols,
but
the
way
the
resulting
windows
is
just
is
not
the
same.
A
One
of
the
one
type
of
the
window
with
the
shell
that
we
played
with
earlier
and
this
type
of
the
window
is
a
layer
show
which
is
a
completely
different
thing.
So
there
is
no
like
a
route
window
which
you
could
derive
from.
You
have
to
set
things
up
over
and
over
again,
there
is
a
concept
of
sub
surfaces,
which
is
also
not
like
the
root
window.
A
From
the
description,
the
surfaces
exist
only
to
be
able
to
set
up
a
different
buffer
with
a
different
mode,
for
example,
as
now,
instead
of
RGB
while
UV,
or
something
like
that,
so
that
you
can
have
separate
areas
within
a
single
window.
So
that's
useful
for
videos,
for
example,
but
it's
just
like
that's
the
extent
to
which
serves
sub
surfaces
are
useful,
so
you
do
not
get
all
this
entire
dancer.
A
A
This
is
something
that
I
do
not
expect
the
same
people
to
ever
do
I
think
that
same
people
will
just
use
decay
or
kitty
or
yell
or
whatever
they
want,
and
they
will
just
forget
about
Elektra,
so
yeah
I.
Don't
really
think
that
anyone
will
write
that,
except
for
compositor
owners
or
people
writing
those
libraries.
A
It's
actually
much
nicer
this
way,
because
you
can
then
take
your
favorite
application
and
call
the
interesting
protocols
directly.
So
if
you
have
a
protocol
for
screenshots,
you
can
call
the
screenshot
protocol
from
your
application
like
a
kind
of
a
helium
core,
something
like
that.
So
this
is
just
one
piece
of
whale
and
inside
your
whole,
ttk
application.
A
This
is
this:
how
the
shell
that
we
are
working
on
is
actually
operating
a
shell
called
Foss,
and
we
have
my
private
protocol,
which
is
only
valid
before
between
decks
between
the
shell
and
between
our
composite
are,
and
it's
like,
carrying
the
names
of
available
windows,
so
that
the
shell
can
display
names
of
the
windows
and
switch
to
do
the
movements
just
like
that.
So
this
is.
This
is
actually
a
nice
thing
that
you've
not
have
to
be
control
on
this.
You
can
just
hear
that
part
of
their
interesting
to.
C
C
A
Started
all
knowledgeable
so
yeah,
but
there's
a
whole
trend
already
that
continues
on
the
on
the
perception
project.
If
you
remember
the
name,
perception
should
be
able
to
find
it
there's
an
issue
which
talks
about
that
and
how
they
see
different
ways
out
of
it
like
they
saw
a
way
out
of
it
in
terms
of
the
client,
but
they
didn't
see
a
way
out
of
it.
The
compositor
and
like
that
there
was
a
couple
of
months
worth
of
discussion
with
two
separate
issues
were
just
removed
and
like
and.
A
A
So
what
more
they
say,
that
is
that
the
structure
is
really
deeply
integrated,
like
the
data
that's
being
passed,
is
before
integrated
into
the
whole
C
ecosystem,
like
it
touches
upon
different
in
different
structures,
and
perhaps
perhaps
just
can't
carry
too
many
to
my
data
too
many
pointers
to
make
achievable.
Yes,.
C
A
A
A
Our
software
in
general
is
going
to
hold
it
up
a
bit
because
it's
compatible
only
with
x
and
obviously
not
good
way
on
is
going
to
stay
there
and
sit
there
forever,
but
in
general,
everything
in
that
the
open
source
area
is
going
towards
whale
intruders.
There's
not
anything
so
yeah
that
that
kind
of
libel.