thestinger / termite

Termite is obsoleted by Alacritty. Termite was a keyboard-centric VTE-based terminal, aimed at use within a window manager with tiling and/or tabbing support.
https://github.com/alacritty/alacritty
2.73k stars 240 forks source link

Adds tabs support via xembedd #750

Closed man9ourah closed 3 years ago

man9ourah commented 4 years ago

This adds xembed support which essentially adds tabs to termite via suckless tabbed .

This resolves #600 #267 #261 and #439 ..

This feature is clearly needed by lots of users, and the changes are minimal (20 lines), customized for X11, and configurable via cli option.

Running termite with tabbed

  1. Install suckless tabbed :
    git clone https://git.suckless.org/tabbed && cd tabbed && make && sudo make install
  2. Run termite with tabbed!
    tabbed termite -w 
  3. Checkout tabbed config and docs for keybindings and customization. (defaults: ctrl+shift+enter for new tab, ctrl+shift+(l/h) for switching tabs)

PoC

tabbed-termite-poc

Minimal quirk

  1. Although having zero effects during my simple test, this error shows during start up.
    (termite:13505): Vte-CRITICAL **: 02:40:18.774: void vte_terminal_set_size(VteTerminal*, long int, long int): assertion 'columns >= 1' failed

This really have no affect on usability from what I have seen, please let me know if I am wrong. However, after debugging, it turns out that the dimensions passed to vte_terminal_set_size is somehow set to 1*1. I was hoping one of the maintainers would chime in and point out how to fix this.

man9ourah commented 4 years ago

Just added a workaround for the vte_terminal_set_size issue.. not sure if it solves the problem or just hides it?

man9ourah commented 4 years ago

:(

With more usage I actually noticed some bugs, since Gtkplug are not really Gtkwindows, causing it to mess lots of events and leads to missed redraws, i.e. increasing font size while in tabbed wont happen until the window lose and regain focus.

I will leave this PR here in case someone wants to pick up this effort.

thestinger commented 3 years ago

Termite is obsolete. Please use Alacritty instead. See https://github.com/thestinger/termite#termite-is-obsoleted-by-alacritty for more details.