Wez Furlong
60e89f6328
Fix latency issue with clipboard/selection handling
...
We now use mio to select on both the xcb connection and the
channel that we're using to bridge the threads.
2018-02-27 23:56:20 -08:00
Wez Furlong
aad282cb81
and move some more of the clipboard code around
2018-02-27 22:14:10 -08:00
Wez Furlong
451f7b37bb
move some more clipboard code around
2018-02-27 22:06:44 -08:00
Wez Furlong
0181a1ccfc
refactor clipboard code
...
No real functional changes, this is just moving some things
around to make it a bit easier to address the laggy selection
handling.
2018-02-27 21:57:17 -08:00
Wez Furlong
27ab1b65a0
Add support for F-keys
...
Fixes https://github.com/wez/wezterm/issues/11
2018-02-27 08:01:41 -08:00
Wez Furlong
981d939298
More gracefully handle running out of texture space
...
I manually checked this by setting TEX_SIZE to a small value
and watching the log reallocate progressively larger sizes.
2018-02-24 23:05:20 -08:00
Wez Furlong
f4d3ea6e05
remove stray debug print
2018-02-24 17:35:39 -08:00
Wez Furlong
4092796db3
Fix an issue where the background color rendered gray instead of black
...
When using the default monospace font on ubuntu (typicaly
DejaVuSansMono), the texture atlas would end up the bottom left pixel
being a shade of gray.
Since we were using (0,0) coords for whitespace cells, all whitespace
cells would appear shaded gray.
We now reserve a black pixel in the bottom left of the underline texture
and switch to that for whitespace instead.
I added Debug support to the ColorPalette while tracking this down,
and figured that I might as well keep it.
2018-02-24 17:28:35 -08:00
Wez Furlong
abc06620b8
add support for implicit hyperlinks
2018-02-24 15:43:02 -08:00
Wez Furlong
478c64e05e
Parse command line arguments
...
We can now run something other than the shell.
2018-02-23 08:41:46 -08:00
Wez Furlong
7af77d34a0
Improve wheel scrolling
...
We now scroll further if you wheel harder
2018-02-23 08:10:11 -08:00
Wez Furlong
90dd732aee
make selected and cursor text fg/bg configurable
...
Previously we only allowed changing the cursor bg color, now we
get 4 different color settings for this!
2018-02-23 07:57:52 -08:00
Wez Furlong
3f6a1f758b
restore original window position when exiting fullscreen
...
We do some bookkeeping of our own because the get_position() method
appears to return stale data on Linux.
2018-02-23 00:10:42 -08:00
Wez Furlong
d661cf2894
take a stab at hidpi scaling for Jacob
...
I noticed this looked crazy when he dragged the window between
screens, so maybe this is better?
2018-02-22 23:50:52 -08:00
Wez Furlong
2c74a9fe1b
Add primitive Alt-Enter shortcut for fullscreen mode
...
We'll want to make the bindings configurable in the future.
2018-02-22 23:31:20 -08:00
Wez Furlong
1245bfc065
use text mouse cursor by default, switch to hand cursor on hover
2018-02-22 23:22:08 -08:00
Wez Furlong
1fdbb33010
also need a receiver method
2018-02-22 23:06:50 -08:00
Wez Furlong
4878aef542
factor out clipboard bits as a trait
...
This will make it easier to plug in macos support later.
2018-02-22 22:53:50 -08:00
Wez Furlong
64c0873ba3
don't fail if lcd filtering is not supported
...
This was happening on a fedora based distro
2018-02-22 22:14:33 -08:00
Wez Furlong
296c27d3ff
rustfmt
2018-02-22 21:16:02 -08:00
Wez Furlong
9673c8c1b7
roll back bundling of harfbuzz
...
This will likely break travis; I'll follow up with something to help with that.
Refs: https://github.com/wez/wezterm/issues/1
2018-02-22 21:07:17 -08:00
Wez Furlong
4a66bf98ca
"centralize" conn.flush()
...
I've noticed a bit of sluggishness when pasting text from the
terminal and into chrome. This doesn't fix it, but it moves
things a bit closer to how they should be.
2018-02-22 20:55:03 -08:00
Wez Furlong
6bf691947d
fixup sluggish selection dragging
2018-02-22 14:36:06 -08:00
Wez Furlong
6232ebf1c6
make refresh rate more regular
2018-02-22 14:34:57 -08:00
Wez Furlong
c8f3add5cc
At is also covered by ReceivedCharacter
2018-02-22 14:28:56 -08:00
Wez Furlong
42323a5be8
plumb clipboard stuff into the wakeup stuff
2018-02-22 09:02:01 -08:00
Wez Furlong
3fb247d22c
avoid spurious unhandled warning about these keys
2018-02-22 08:48:20 -08:00
Wez Furlong
d03564aa10
paint after each window input, remember mods for text input
...
Also need to tweak how we handle ALT-x and CTRL-x as the case of the input
is different with glium vs. xcb
2018-02-22 08:41:51 -08:00
Wez Furlong
697f07cb51
Don't need to worry about MAPPING_NOTIFY events for clipboard
2018-02-22 08:41:27 -08:00
Wez Furlong
79ebf717e8
provide a more targeted channel for wakeups
...
This allows using the mio poll timer as the signal for drawing
frames, rather than always drawing them after each byte is read
from the pty. We're using 50ms as the frame interval at the moment.
2018-02-22 01:44:07 -08:00
Wez Furlong
f6a95aafcf
use less cpu while idling
...
This does mean that we paint more frequently (basically after every
read from the pty), so our perf for large files is down.
2018-02-22 01:15:28 -08:00
Wez Furlong
ac7d2a9cda
simplify child waiting
2018-02-22 00:35:51 -08:00
Wez Furlong
c9c5b25b01
suppress dead code warning about clip_thread
...
We want it to live in the struct until it Drops, and the compiler
is helpfully telling us that we don't access it.
2018-02-22 00:23:11 -08:00
Wez Furlong
6f3b6d7018
remove unused x11 dep
2018-02-22 00:19:12 -08:00
Wez Furlong
bd4e745380
go all-in on glutin and remove my own xcb based code
2018-02-22 00:18:10 -08:00
Wez Furlong
3c379978d2
enable paste and link clicking in glutin backend
2018-02-22 00:07:04 -08:00
Wez Furlong
8cb8d7d613
wire up sigchld
2018-02-21 23:51:52 -08:00
Wez Furlong
df0e85abaf
hook up input events for glutin
2018-02-21 23:37:19 -08:00
Wez Furlong
ae5910af54
Start breaking the clipboard code out from the window code
...
This facilitates using the core of glutin without having too much
custom event loop dispatching.
2018-02-21 20:35:58 -08:00
Wez Furlong
d876d23a28
stub for a glutin based window
...
It can render the terminal but doesn't handle input of any kind.
2018-02-21 00:16:03 -08:00
Wez Furlong
c39dbdc356
stubs for macos font loading
2018-02-20 22:33:09 -08:00
Wez Furlong
a7f2757452
rustfmt update
2018-02-20 22:08:19 -08:00
Wez Furlong
9dadffcf1e
fix compile for child waiter on !linux
2018-02-20 21:32:44 -08:00
Wez Furlong
e9e3e47b94
make fontconfig/freetype conditional
2018-02-20 20:55:03 -08:00
Wez Furlong
e2462ea16a
refactor rasterizer
2018-02-20 20:49:16 -08:00
Wez Furlong
999396bc45
separate out the fontconfig/freetype code
2018-02-20 20:20:37 -08:00
Wez Furlong
b35fc8a3b1
remove helper method
2018-02-20 19:58:47 -08:00
Wez Furlong
dd4c9d6683
refactor the font loading code
...
This is the first step towards making this code more system independent.
2018-02-20 19:53:50 -08:00
Wez Furlong
b66f93ad11
add non-linux sigchld waiter
2018-02-20 17:34:32 -08:00
Wez Furlong
a4b55ecffb
macos pty api has some mutable ptrs
2018-02-20 17:13:19 -08:00
Wez Furlong
e2529d1837
Move opengl code into its own module
2018-02-20 15:46:05 -08:00
Wez Furlong
4efef794fe
move Renderer to its own file
...
It is now independent of the X11 code
2018-02-20 15:43:42 -08:00
Wez Furlong
39a0b6c9fd
extract render code into Renderer class
2018-02-20 15:33:21 -08:00
Wez Furlong
e1cd44922f
move x11 code around
...
idea is to reduce the cfg attributes and make it easier to
split into system dependent renderers
2018-02-20 15:02:39 -08:00
Wez Furlong
5a99dd143c
move hbwrap into harfbuzz crate
2018-02-20 14:32:28 -08:00
Wez Furlong
fe1ae0b7eb
Be more particular about platform deps
2018-02-20 14:17:28 -08:00
Wez Furlong
e7d99024bb
build our own harfbuzz for broader compat
2018-02-20 12:33:30 -08:00
Wez Furlong
9a5e7999da
TODONE
2018-02-20 08:13:36 -08:00
Wez Furlong
9da069e1e9
clean up atlas api
...
We now bubble up an error if we ran out of texture space.
Previously we'd allocate a new texture but that wouldn't help anyone.
I've bumped up the texture size by default, too.
Longer term we should catch this, blow the font cache, cancel the
pending render and re-render.
2018-02-20 08:09:12 -08:00
Wez Furlong
e6f42987ca
remove another unused crate
2018-02-20 07:41:19 -08:00
Wez Furlong
5ff473872d
Eliminate the third draw call
...
We can consolidate the underline/strike glyph rendering with
the background layer pass.
2018-02-19 22:02:27 -08:00
Wez Furlong
279b2018fd
Render cursor and selection for resized lines
...
If the user enlarges the terminal we can have regions of the vertex
buffer that have colors that default to alpha channel 0. This is
normally fine but breaks rendering of the cursor and the selection;
those attributes are out of band from the normal cell attributes,
especially for whitespace cells, so we need to handle those in
the degenerate case at the end of a line render.
Refactor the code that computes the cursor and selection colors
so that we can call it and use it in both places.
2018-02-19 21:29:27 -08:00
Wez Furlong
d55d5855a5
set CLIPBOARD as well as PRIMARY selection when selecting
2018-02-19 20:53:12 -08:00
Wez Furlong
966eb2ce4c
Don't loop to read from pty
...
We don't need to be greedy in handling this read. It is important
not to for example when a lot of data is being written to the pty
we don't want that to starve the gui event handler and block sending
an interrupt signal.
2018-02-19 07:56:33 -08:00
Wez Furlong
a0faebad8b
Clear some rendering artifacts from the rhs of the screen
...
These would get left behind after making the window wider
and then switching between alt screen and the main screen.
2018-02-19 00:15:11 -08:00
Wez Furlong
52f6e3c0bd
tweak the underline position
2018-02-18 23:53:54 -08:00
Wez Furlong
bc2c77aa1c
fixup alpha for tinted colors
...
Needed to de-pre-multiply(!) the color channels by the alpha to avoid
them getting too dark.
2018-02-18 23:48:21 -08:00
Wez Furlong
9bc0eee1e2
Re-enable underlining of whitespace
...
This was a hangover from an earlier iteration and isn't needed any more.
2018-02-18 23:08:49 -08:00
Wez Furlong
450ed0e82c
don't explode when scrolling back
2018-02-18 23:04:11 -08:00
Wez Furlong
e87f129ded
We now do a better job at rendering dejavusansmono
...
The descender in that font seems bad, so guestimate something that works
better for us.
2018-02-18 21:59:28 -08:00
Wez Furlong
8afbcc8ee0
clear adjust for whitespace glyphs
2018-02-18 20:37:13 -08:00
Wez Furlong
4818cdb838
improve font rendering by reducing hinting level
...
and using a more robust color multiplication function.
2018-02-18 20:30:53 -08:00
Wez Furlong
69278e8fde
whoops, fixup width calc for single width glyphs
2018-02-18 17:53:39 -08:00
Wez Furlong
fa0549b76e
add some more comments
...
and back out the get_all flag that was added as a temp workaround
in the earlier stages of adding opengl support.
2018-02-18 17:21:02 -08:00
Wez Furlong
3ccb0c24ef
Add third pass draw for underline/strikethrough rendering
2018-02-18 17:12:53 -08:00
Wez Furlong
f51b99cb73
remove some more dead bits and plumb underline/strike into shader
2018-02-18 14:52:10 -08:00
Wez Furlong
a1e5a17e94
remove some dead code
2018-02-18 14:48:24 -08:00
Wez Furlong
6f6622c659
pass has_color flag through to fragment shader
2018-02-18 14:22:43 -08:00
Wez Furlong
8d6950f586
Do a better job at rendering double wide glyphs
...
Color emoji look a bit jagged so we may have a rounding problem
for those. Will revisit them later.
2018-02-18 14:17:31 -08:00
Wez Furlong
a4c45fa321
use a single big vertex buffer
2018-02-18 11:31:00 -08:00
Wez Furlong
4acfd82e87
Default::default for Vertex & Point
2018-02-17 22:17:17 -08:00
Wez Furlong
6e3eb9747a
use texture atlas
2018-02-17 21:34:01 -08:00
Wez Furlong
1607ba4443
Add untested code for managing a texture atlas
2018-02-17 20:37:07 -08:00
Wez Furlong
de700e0207
make it very slightly cheaper to enumerate the screen lines
2018-02-17 15:04:48 -08:00
Wez Furlong
f8b596bd7c
remove more now-dead code
2018-02-17 14:02:02 -08:00
Wez Furlong
878bc4e082
update underline/strike rendering to opengl
2018-02-17 13:50:55 -08:00
Wez Furlong
d86f7ff2df
remove unused bits
2018-02-17 12:18:29 -08:00
Wez Furlong
2b2e443c7b
fix glyph y scale for color emoji
2018-02-17 12:17:36 -08:00
Wez Furlong
98c66b1919
remove unused variables
2018-02-17 12:00:29 -08:00
Wez Furlong
261a6cb6c6
remove some dead xproto code from xgfx
2018-02-17 12:00:13 -08:00
Wez Furlong
220e73e528
clean up more of the rendering
...
We can now render bg colors, selection, cursor, and the text has
reasonable proportions, and coloring.
bright cyan on blue has some black AA artifacts that I need to
investigate.
2018-02-17 11:53:54 -08:00
Wez Furlong
b8eb6dbedc
make color -> uniform conversion more ergonomic
2018-02-17 08:25:59 -08:00
Wez Furlong
6991f5c6e0
fixup rendering of wide and color glyphs
2018-02-17 08:19:01 -08:00
Wez Furlong
cbad708398
the glyphs now have the correct proportions
2018-02-17 07:37:06 -08:00
Wez Furlong
9c4d26827e
draw ghostly looking glyphs
2018-02-17 07:23:59 -08:00
Wez Furlong
c8a58cac06
we now render useless blocks in the fg color via gl
2018-02-16 23:28:51 -08:00
Wez Furlong
20965e786f
start hacking on OpenGL ES2 rendering
2018-02-16 21:44:56 -08:00
Wez Furlong
236960e1a8
squeeze one extra row in at the bottom of my screen
2018-02-11 18:54:18 -08:00
Wez Furlong
0ae6b3e753
use xdg-open to open links on click
2018-02-11 12:41:31 -08:00
Wez Furlong
21f0e3fd98
Recognize clicks on hyperlinks
...
There's plumbing for handling these events in the TerminalHost
trait, but we don't do anything beyond printing them at the moment.
2018-02-11 12:28:37 -08:00