emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: emacs for pure Gtk3


From: Yuuki Harano
Subject: Re: emacs for pure Gtk3
Date: Mon, 27 Apr 2020 21:37:27 +0900 (JST)

Thank you.

On Sun, 26 Apr 2020 17:01:33 +0300,
        Eli Zaretskii <address@hidden> wrote:
>   . You don't seem to have a copyright assignment on file.  This would
>     be a significant contribution to Emacs, for which we must have
>     such an assignment from you before bringing this code into the
>     Emacs repository.  Would you be willing to start the legal
>     paperwork now?  If so, I will send you the form to fill.

Yes.  Please send me it.

By the way, this fork contains much code written by @fejfighter.
He said "for now: Yes I do agree to assign my code to the FSF." here,
https://github.com/masm11/emacs/pull/11#issuecomment-600856858 .
What to do?

>   . The code seem to be based on an relatively old version of our
>     master branch, which makes it hard to review (there are many
>     spurious changes unrelated to your work).  Please rebase on the
>     latest HEAD of the master branch.

OK, I'll rebase later.

>   . Would it be possible for you to describe the design of this
>     feature, and how that affects the various Emacs features, so that
>     understanding the changes would be facilitated?  In particular,
>     can this new window-system live together with X and TTY frames in
>     the same session? does it support Lisp threads? etc.  Also, what
>     are the requirements from the platforms where this could be built
>     and used?

I started porting to pure Gtk3 about 2 years ago.
I referred NS's code because X's is too complex.
But I ported text rendering code from X afterwards.
There are old codes because I can't follow NS and X code changes.

Because I was not going to merge to mainline when I started porting,
older commit messages are in Japanese.  If you don't like Japanese
messages, I can make one big commit instead of existing commits.

Since pgtk emacs is configured with '--without-x', existing X code
is disabled.  If configured with '--with-x', the existing X support
should be enabled as before.

Pgtk emacs supports X window system too through Gtk library.
It can handle Wayland, X window system, and TTY in the same session.
But segmentation fault may occur when running on X and Wayland
in the same session.

Since Gtk does not support these functions on Wayland, they don't work
on Wayland.  On X, they should work.
  - x_set_no_focus_on_map
  - x_set_no_accept_focus
  - x_set_z_group
  - raise/lower
  - gtk_plug
Since Gtk does not support this function, it doesn't work, even if on X.
  - vendor_specific_keysyms

I don't know about Lisp threads.  I have never supported it explicitly.
Pgtk emacs may not support it.

Pgtk emacs:
- needs '--with-cairo'.
- supports menubar, toolbar, scrollbar, tabbar, and fringe.
- supports stipple.
- supports childframe.

Pgtk emacs uses cairo.  It prepares a surface before rendering, render
on it, and copy it on the window on a Gtk 'draw' event.

X-gtk emacs uses gtkutil.c.  Pgtk emacs also uses it.

Since Gtk doesn't support xrdb, I implemented alternative using GNOME's 
gsettings.
  (pgtk-set-resource "background" "gray")
  (x-get-resource "background" "Background")
Xrdb is not supported even if on X.

The prefixes of functions and variables: 'pgtk-' and 'x-'.
I don't have rules about which should be used for each of functions and 
variables.

Gtk supports w32, but I have never tested on w32.

-- 
Yuuki Harano



reply via email to

[Prev in Thread] Current Thread [Next in Thread]