whoops; the inital impl and consumer didn't follow the doc comment,
so they were internally consistent, but when the windows started
to use this for sizing things looked weird!
My original idea was that I would centralize of the key binding
logic in the terminalstate, but this places a bit of a burden on
the TerminalHost portion of the interface.
In particular: when running a multiplexer server we may be headless
or have multiple heads. In that scenario we want the terminal
to be backed by a virtualized screen, and that means removing
the direct callback to access eg: the host clipboard. This
diff is the first of a couple that have the goal of removing
those sorts of dependencies.
The story as I understand it:
The current shaders requires GLSL 3.30 but OpenGL ES 2.0 is bound to GLSL
1.20.
The confusion arise when creating EGL context. We ask for ES2 because crate egli
doesn't provide a ES3 one "yet". On a recent system, the driver will probably return
a ES3 conformant context anyway .. lucky for us because because the shaders won't
compile on ES2 (which does not even have a `out` keyword).
Similar to the previous commit for glium, this diff avoids
resize and render for every resize event coming in from xwindows.
Instead we buffer up the most recent window size, scheduling
a later call to assess and apply that data.
This improves resize performance.
This is an unfortunately large diff that:
* Separates Tab ownership from TerminalWindow
* Introduces a Mux container for all of the tabs in the application,
across all windows
* Moves ownership of processing pty responses to the mux; it sets
up and has logic to process data for the ptys and apply to the
tabs
I've moved the logic for processing new tab and new window hotkeys
to the TerminalWindow's themselves as we need some context to
associate the tab with the right window and to create a new window.
I think that will simplify and allow unifying more code.
The saturating_sub was going to be an attempt at the look-back alluded
to in the TODO comment, but I decided not to implement that in this
iteration.
The effect of this was that double clicking the `m` in a sequence like
` master` would only select the `m` instead of the `master` string.
previously this just used unicode word segmentation rules, but that
is insufficient for most technical users.
Change this to look for sequences that are non-whitespace and not
enclosed by bracket/quote delimiters. This allows selecting file names
with a double click, which was my main issue.