← Back to team overview

asbru-cm team mailing list archive

[Bug 1847932] [NEW] Port to GTK3 and new VTE

 

Public bug reported:

>From egmontkob on GitHub:
Ásbrú should be ported to GTK3. You guys all know it well, e.g. https://github.com/asbru-cm/asbru-cm/projects/1, the feature-gtk3 branch, etc...

It's mostly not about GTK or GNOME 2/3 per se (although that too, e.g.
the continuously increasing maintenance burden like in #114), but
probably most importantly about VTE. GTK2 can only use VTE version 0.28
which has been unmaintained for 8+ years, and is nowadays the cause of
serious terminal emulation troubles like #49, #143. There have been
hundreds of other bugfixes, including a security/privacy issue of
scrollback written to disk unencrypted, many crash fixes, tons of
emulation fixes, huge speed improvement, and so on, and also many many
cool new features added to GTK3-based VTE which is currently at version
0.58.

Old VTE will probably be removed by distributions in the near future:
Debian, Ubuntu, Fedora.

Here's my work on porting Ásbrú to GTK3. IMO it's in pretty good state,
and is quite usable (unlike the feature-gtk3 branch). I haven't checked
all the features of Ásbrú (I'm not even familiar with them), but the
main UI, preferences, defining a connection etc. seem to work fine,
including launching a local terminal using new VTE.

The feature-gtk3 branch comments out lots of things that I didn't need
to comment out, and is behind master, so I decided to base my work on
master. The attached patches apply on current master (158c2ab). That
being said, certain things I've taken from the feature-gtk3 branch (to
make it easier to compare the two, pick fixes from one to the other).

0001-search-n-replace-Gtk2-Gtk3.patch.txt – This is just an automatic
search'n'replace from "Gtk2" to "Gtk3" and "GTK2" to "GTK".

0002-asbru.glade-from-feature-gtk3.patch.txt – This one adds the new
glade file, copied from the feature-gtk3 branch.

0003-asbru.glade-updates-d3b14a5089.158c2abdc7.patch.txt – This patch
updates the glade file, by backporting the changes that happened in
master since the fork.

0004-My-stuff.patch.txt – On top of the previous patches that "prepare"
for GTK3, this is the real porting.

0005-Drag-n-drop.patch.txt – Fix DND and a few related bits.

0006-Drag-n-drop-tooltip-border.patch.txt – Add a black border to DND
tooltip.

0007-TreeView-fix-getting-node_uuid.patch.txt – Fix finding an item's
children in TreeView.

0008-Silly-typo.patch.txt – Typo fix (and also the reason why I hate
script languages as opposed to compiled ones :)).

Known issues, bugs, missing bits:

Need to migrate from libunique to GApplication or GtkApplication, from
send_message() to probably GApplication's "command-line" signal and
friends.

Remembering the history of terminal commands doesn't work (I've
commented it out). VTE's get_text_range() gives this error: "gperl-i11n-
invoke-c.c:582:_allocate_out_mem: assertion failed: (interface_info)".
Looks like a nasty issue with VTE's annotation or the introspection
framework. Might need help from introspection and Perl binding experts.

Port drag and drop. Update: It's ported now, but see a comment below.

Port tray icon support (haven't tested).

Make sure that X11 compatibility layer is used even when on Wayland,
rather than being a native Wayland app, so that embedding an external
window based on XID still works; or at least make sure it degrades
gracefully on Wayland.

Update the documentation, user facing messages, deb/rpm definitions etc.

Testing, testing, testing. Walking through all the features. As soon as
something doesn't work, or an error is printed, track it down and fix
it.

Update for new stuff in VTE:

Transparency needs to be done differently. set_color_background() needs
to get a color with an alpha channel, plus the widget needs to be
app_paintable. Maybe something more is needed too, I'm not sure. See
VTE-based apps that support transparency for reference, e.g. Tilix,
Xfce4-terminal, Guake, and a Fedora/Ubuntu patch for GNOME Terminal. Or
just remove this feature.

set_emulation() is no longer available, VTE can no longer try to emulate
various behaviors as per their terminfo definitions, the emulation
behavior is hardwired. Remove the corresponding config option and UI
field.

set_visible_bell() is no longer available. You might remove this option,
or implement showing some custom UI element (e.g. a bell symbol) on the
bell signal.

set_bold_is_bright() is new in VTE 0.52, and defaults to being disabled
since 0.56. This latter one results in darker colors that not everyone
likes, for compatibility it would be great to add a config option.
(Discussions)

New VTE lets you display the right-click context menu only if the
application running inside is not interested in mouse events, and pass
it to the application otherwise. (PAC bug, VTE fix)

You might go through the API docs and decide what other new stuff to
add. E.g. cursor blinking, text blinking, mouse pointer autohide...

I sincerely hope that my work gives a boost to porting to GTK3 and that
it will happen in the foreseeable future.

(Disclaimer: I don't use Ásbrú myself and I'm not particularly
interested in this project. What I'm interested in is terminal emulation
in general, and retiring old VTE in favor of the new one ASAP.)

** Affects: asbru-cm
     Importance: Wishlist
     Assignee: Ásbrú Connection Manager Project (asbru-cm)
         Status: In Progress

** Affects: asbru-cm/6.0
     Importance: Wishlist
     Assignee: Ásbrú Connection Manager Project (asbru-cm)
         Status: In Progress

** Also affects: asbru-cm/6.0
   Importance: Wishlist
     Assignee: Ásbrú Connection Manager Project (asbru-cm)
       Status: In Progress

-- 
You received this bug notification because you are a member of Ásbrú
Connection Manager Project, which is a bug assignee.
https://bugs.launchpad.net/bugs/1847932

Title:
  Port to GTK3 and new VTE

Status in asbru-cm:
  In Progress
Status in asbru-cm 6.0 series:
  In Progress

Bug description:
  From egmontkob on GitHub:
  Ásbrú should be ported to GTK3. You guys all know it well, e.g. https://github.com/asbru-cm/asbru-cm/projects/1, the feature-gtk3 branch, etc...

  It's mostly not about GTK or GNOME 2/3 per se (although that too, e.g.
  the continuously increasing maintenance burden like in #114), but
  probably most importantly about VTE. GTK2 can only use VTE version
  0.28 which has been unmaintained for 8+ years, and is nowadays the
  cause of serious terminal emulation troubles like #49, #143. There
  have been hundreds of other bugfixes, including a security/privacy
  issue of scrollback written to disk unencrypted, many crash fixes,
  tons of emulation fixes, huge speed improvement, and so on, and also
  many many cool new features added to GTK3-based VTE which is currently
  at version 0.58.

  Old VTE will probably be removed by distributions in the near future:
  Debian, Ubuntu, Fedora.

  Here's my work on porting Ásbrú to GTK3. IMO it's in pretty good
  state, and is quite usable (unlike the feature-gtk3 branch). I haven't
  checked all the features of Ásbrú (I'm not even familiar with them),
  but the main UI, preferences, defining a connection etc. seem to work
  fine, including launching a local terminal using new VTE.

  The feature-gtk3 branch comments out lots of things that I didn't need
  to comment out, and is behind master, so I decided to base my work on
  master. The attached patches apply on current master (158c2ab). That
  being said, certain things I've taken from the feature-gtk3 branch (to
  make it easier to compare the two, pick fixes from one to the other).

  0001-search-n-replace-Gtk2-Gtk3.patch.txt – This is just an automatic
  search'n'replace from "Gtk2" to "Gtk3" and "GTK2" to "GTK".

  0002-asbru.glade-from-feature-gtk3.patch.txt – This one adds the new
  glade file, copied from the feature-gtk3 branch.

  0003-asbru.glade-updates-d3b14a5089.158c2abdc7.patch.txt – This patch
  updates the glade file, by backporting the changes that happened in
  master since the fork.

  0004-My-stuff.patch.txt – On top of the previous patches that
  "prepare" for GTK3, this is the real porting.

  0005-Drag-n-drop.patch.txt – Fix DND and a few related bits.

  0006-Drag-n-drop-tooltip-border.patch.txt – Add a black border to DND
  tooltip.

  0007-TreeView-fix-getting-node_uuid.patch.txt – Fix finding an item's
  children in TreeView.

  0008-Silly-typo.patch.txt – Typo fix (and also the reason why I hate
  script languages as opposed to compiled ones :)).

  Known issues, bugs, missing bits:

  Need to migrate from libunique to GApplication or GtkApplication, from
  send_message() to probably GApplication's "command-line" signal and
  friends.

  Remembering the history of terminal commands doesn't work (I've
  commented it out). VTE's get_text_range() gives this error: "gperl-
  i11n-invoke-c.c:582:_allocate_out_mem: assertion failed:
  (interface_info)". Looks like a nasty issue with VTE's annotation or
  the introspection framework. Might need help from introspection and
  Perl binding experts.

  Port drag and drop. Update: It's ported now, but see a comment below.

  Port tray icon support (haven't tested).

  Make sure that X11 compatibility layer is used even when on Wayland,
  rather than being a native Wayland app, so that embedding an external
  window based on XID still works; or at least make sure it degrades
  gracefully on Wayland.

  Update the documentation, user facing messages, deb/rpm definitions
  etc.

  Testing, testing, testing. Walking through all the features. As soon
  as something doesn't work, or an error is printed, track it down and
  fix it.

  Update for new stuff in VTE:

  Transparency needs to be done differently. set_color_background()
  needs to get a color with an alpha channel, plus the widget needs to
  be app_paintable. Maybe something more is needed too, I'm not sure.
  See VTE-based apps that support transparency for reference, e.g.
  Tilix, Xfce4-terminal, Guake, and a Fedora/Ubuntu patch for GNOME
  Terminal. Or just remove this feature.

  set_emulation() is no longer available, VTE can no longer try to
  emulate various behaviors as per their terminfo definitions, the
  emulation behavior is hardwired. Remove the corresponding config
  option and UI field.

  set_visible_bell() is no longer available. You might remove this
  option, or implement showing some custom UI element (e.g. a bell
  symbol) on the bell signal.

  set_bold_is_bright() is new in VTE 0.52, and defaults to being
  disabled since 0.56. This latter one results in darker colors that not
  everyone likes, for compatibility it would be great to add a config
  option. (Discussions)

  New VTE lets you display the right-click context menu only if the
  application running inside is not interested in mouse events, and pass
  it to the application otherwise. (PAC bug, VTE fix)

  You might go through the API docs and decide what other new stuff to
  add. E.g. cursor blinking, text blinking, mouse pointer autohide...

  I sincerely hope that my work gives a boost to porting to GTK3 and
  that it will happen in the foreseeable future.

  (Disclaimer: I don't use Ásbrú myself and I'm not particularly
  interested in this project. What I'm interested in is terminal
  emulation in general, and retiring old VTE in favor of the new one
  ASAP.)

To manage notifications about this bug go to:
https://bugs.launchpad.net/asbru-cm/+bug/1847932/+subscriptions


Follow ups