From: Daniel Colascione <dancol@dancol.org>
To: Emacs developers <emacs-devel@gnu.org>
Subject: Can we go GTK-only?
Date: Thu, 27 Oct 2016 12:54:39 -0700 [thread overview]
Message-ID: <24db2975-17ca-ad01-20c8-df12071fa89a@dancol.org> (raw)
I've been doing some work on xterm.c and friends lately --- it's a very
complex subsystem made even more complex by supporting five different
toolkits in the same piece of code. GTK support adds a special twist:
GTK is nothing like an old-fashioned Xt-style toolkit, and trying to
force it into the mold requires going behind GTK's back in ways that are
fragile, inefficient, and unsupported. New versions of GTK regularly
break Emacs. Emacs cannot take advantage of GTK's support for non-X
targets, like Wayland.
Do we really need all the legacy infrastructure in xterm? Do many people
really build Emacs as a Motif application? The X window subsystem would
be made much simpler if we made it GTK3-only.
If we did, much of the complexity of the existing code would evaporate,
since we'd be using GTK's infrastructure instead of our own. We'd turn
Emacs frames into well-behaved GTK widgets --- just run redisplay inside
the Emacs-widget's draw method, draw onto the Cairo surface GTK
provides. Instead of flushing frames and drawing to the screen directly
from input-waiting routines, we'd rely exclusively on dirtying the Emacs
widget and letting the GTK's normal Expose-event processing take care of
invoking redisplay.
We'd have to get rid of the SIGIO input subsystem too, but I think
that's a good thing.
The size of the xterm codebase would shrink by at least two thirds, I
think. We already _have_ Cairo support: sure, it's broken, but the part
that's broken is integrating with the horrible Xt hacks, not the drawing
itself.
As a stepping stone, we should at least remove support for the
no-toolkit, Motif, and Athena configurations. (Lucid I can understand.)
next reply other threads:[~2016-10-27 19:54 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 19:54 Daniel Colascione [this message]
2016-10-27 20:05 ` Can we go GTK-only? Frank Haun
2016-10-27 20:45 ` Daniel Colascione
2016-10-27 21:08 ` Frank Haun
2016-10-27 20:32 ` Paul Eggert
2016-10-27 23:15 ` Perry E. Metzger
2016-10-28 7:13 ` Eli Zaretskii
2016-10-28 2:35 ` Richard Stallman
2016-10-28 6:22 ` Eli Zaretskii
2016-10-28 7:27 ` Ulrich Mueller
2016-10-28 8:15 ` Eli Zaretskii
2016-10-28 10:48 ` Frank Haun
2016-10-28 12:26 ` Eli Zaretskii
2016-10-28 13:35 ` Stefan Monnier
2016-10-30 14:43 ` Ken Raeburn
2016-10-30 21:42 ` Stefan Monnier
2016-10-30 22:49 ` Daniel Colascione
2016-10-30 23:57 ` Stefan Monnier
2016-10-31 3:37 ` Eli Zaretskii
2016-10-31 15:57 ` Eli Zaretskii
2016-10-31 0:00 ` YAMAMOTO Mitsuharu
2016-10-31 8:24 ` Ken Raeburn
2016-10-31 16:34 ` Perry E. Metzger
2016-11-01 8:22 ` YAMAMOTO Mitsuharu
2016-10-31 3:33 ` Eli Zaretskii
2016-10-31 15:57 ` Perry E. Metzger
2016-10-31 15:56 ` Eli Zaretskii
2016-10-31 15:59 ` Daniel Colascione
2016-10-31 16:47 ` Eli Zaretskii
2016-10-31 17:54 ` Perry E. Metzger
2016-10-31 20:50 ` Eli Zaretskii
2016-10-31 15:52 ` Eli Zaretskii
2016-10-31 15:54 ` Eli Zaretskii
2016-10-31 18:22 ` Ken Raeburn
2016-10-31 20:53 ` Eli Zaretskii
2016-10-31 21:04 ` Daniel Colascione
2016-11-01 15:11 ` Eli Zaretskii
2016-11-01 16:28 ` Paul Eggert
2016-11-01 16:49 ` Eli Zaretskii
2016-11-01 16:54 ` Daniel Colascione
2016-11-01 17:08 ` Eli Zaretskii
2016-11-01 17:16 ` Daniel Colascione
2016-11-01 19:15 ` Perry E. Metzger
2016-11-01 19:28 ` Lars Ingebrigtsen
2016-11-01 19:31 ` Eli Zaretskii
2016-11-01 16:55 ` Paul Eggert
2016-11-01 17:15 ` Perry E. Metzger
2016-11-01 16:41 ` Perry E. Metzger
2016-11-01 16:54 ` Eli Zaretskii
2016-11-01 17:22 ` Perry E. Metzger
2016-11-01 17:46 ` Eli Zaretskii
2016-11-01 17:56 ` Perry E. Metzger
2016-11-01 19:35 ` Perry E. Metzger
2016-11-01 16:45 ` Daniel Colascione
2016-11-01 17:01 ` Eli Zaretskii
2016-11-01 17:06 ` Daniel Colascione
2016-11-01 17:15 ` Eli Zaretskii
2016-11-01 17:18 ` Daniel Colascione
2016-11-01 17:44 ` Eli Zaretskii
2016-11-01 17:45 ` Daniel Colascione
2016-11-01 19:14 ` Stefan Monnier
2016-11-01 19:22 ` Eli Zaretskii
2016-11-01 19:42 ` Perry E. Metzger
2016-11-01 19:20 ` Perry E. Metzger
2016-11-01 20:05 ` Eli Zaretskii
2016-11-01 20:17 ` Daniel Colascione
2016-11-01 20:42 ` Eli Zaretskii
2016-11-02 2:26 ` Perry E. Metzger
2016-11-02 15:49 ` Eli Zaretskii
2016-11-02 15:55 ` Daniel Colascione
2016-11-02 5:00 ` YAMAMOTO Mitsuharu
2016-11-02 15:46 ` Eli Zaretskii
2016-11-03 3:43 ` YAMAMOTO Mitsuharu
2016-11-03 17:40 ` Eli Zaretskii
2016-11-02 0:27 ` Stefan Monnier
2016-11-02 15:53 ` Eli Zaretskii
2016-11-02 16:04 ` Stefan Monnier
2016-11-02 19:25 ` Nikolaus Rath
2016-11-02 19:25 ` Nikolaus Rath
2016-11-02 20:33 ` Paul Eggert
2016-11-03 1:25 ` Richard Stallman
2016-11-02 20:13 ` Eli Zaretskii
2016-11-03 3:29 ` Perry E. Metzger
2016-11-03 18:07 ` John Wiegley
2016-11-03 22:07 ` John Wiegley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=24db2975-17ca-ad01-20c8-df12071fa89a@dancol.org \
--to=dancol@dancol.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.