1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-25 06:12:16 +03:00
Commit Graph

40 Commits

Author SHA1 Message Date
Wez Furlong
1ba432378b extract cursor rendering 2018-02-11 08:05:58 -08:00
Wez Furlong
8ecaa7d6ab extract underline and strikethrough methods 2018-02-11 08:01:06 -08:00
Wez Furlong
0208a7837e start breakin up the paint method
This has grown pretty large.  Splitting out the guts means adopting
the use of RefCell to satisfy the borrow checker.
2018-02-11 07:46:40 -08:00
Wez Furlong
31b270910b make cell_height and cell_width integers
I've been meaning to do this for a while
2018-02-11 07:28:36 -08:00
Wez Furlong
4a0648fef5 Add strikethrough rendering 2018-02-10 21:42:55 -08:00
Wez Furlong
5a6ed045ad Render underline and double underline 2018-02-10 21:25:43 -08:00
Wez Furlong
beeaacfabc fixup some bad math for under-width ligatures
We were panicking when rendering the || ligature, which is narrower
than we were expecting.  There was also a weird looking assert
that was triggering if we got path the math overflow.
2018-02-10 09:27:59 -08:00
Wez Furlong
6b182ffe52 implement an equivalent to xterm*boldColor
I love my tomato bold!
2018-02-10 08:36:34 -08:00
Wez Furlong
3075e47c89 Allow configuring colors 2018-02-10 08:16:20 -08:00
Wez Furlong
6c75ff4146 Use brighter version of ANSI color when bold enabled
This is one of the main reasons that I started to build my
own terminal emulator :-p
2018-02-09 20:54:17 -08:00
Wez Furlong
1619f786a9 Add somewhat primitive text selection for copy/paste 2018-02-08 21:35:26 -08:00
Wez Furlong
6dd0312980 Don't clip off the last couple of glyph pixels
This is most noticable with a cursive italic font.  When we
were dividing the glyph into cell slices, we could leave off
a 2 pixel wide strip from the last of the sequence and this
looked nasty.

This diff also adjusts come calculations to use the width and
height from the current TextStyle.  Whether this is more or
less correct remains to be seen :-p
2018-02-07 15:31:37 -08:00
Wez Furlong
edd5911535 Add a small font styling engine
This enables selecting an italic font when the cell is italic,
but has more power beyond just that simple property.

This runs a little hot on the CPU so there's probably some caching and
tweaking that can be done to make the evaluation a bit cheaper.
2018-02-07 09:23:24 -08:00
Wez Furlong
532cf28782 add support for setting the primary selection 2018-02-06 20:40:46 -08:00
Wez Furlong
7657a91188 refactor to make it easier to use and extend TerminalHost 2018-02-05 08:52:35 -08:00
Wez Furlong
a4c7de7b9b We now support shift+insert to paste the selection 2018-02-05 08:22:08 -08:00
Wez Furlong
b24ac14c05 Add TerminalHost trait
This will make it easier to add copy/paste handling in a follow up.
2018-02-04 22:35:33 -08:00
Wez Furlong
5261f9f3d8 Enable mouse reporting
There's a bit of restructuring of XCB event handling going on to enable
this, and we only support SGR reporting at the moment.
2018-02-04 20:53:03 -08:00
Wez Furlong
f89d37401b Enable viewing the scrollback
Both mouse wheel and shift+{PageUp,PageDown} can be used to adjust
the scroll viewport.
2018-02-04 14:19:12 -08:00
Wez Furlong
0bec822f75 create the palette when we create the window
Rather than every time we paint and resize
2018-02-04 09:19:25 -08:00
Wez Furlong
09c70930b9 improve resize handling
Both in terms of resizing the window and running the `resize` utility.
2018-02-04 09:17:05 -08:00
Wez Furlong
4c8e3ffd75 improve clustering and cursor rendering
We weren't quite right with handling the cursor around double-width
characters.  We're now a bit more robust at this because we're
clustering and taking pains to consider the printable width of the
cell as well as the width of the shaped (eg: with contextual ligatures)
glyph.

There may still be issues with contextual ligatures of length 3,
but I haven't managed to nail down exactly the issue yet.
2018-02-04 08:28:32 -08:00
Wez Furlong
904f8fc059 better typing for rows and cursor position 2018-02-02 08:16:07 -08:00
Wez Furlong
5cdb5149c3 suppress keypress debug prints 2018-02-01 00:26:01 -08:00
Wez Furlong
659ce4fc2d Make answerback more generic, enable title changing 2018-01-31 15:15:23 -08:00
Wez Furlong
11e6d538fc move term to its own crate
This makes it harder to accidentally violate separation of concerns.
2018-01-31 10:50:21 -08:00
Wez Furlong
cb9a2129be handle reverse index escape sequence
This unlocks pressing `b` in `less` and `more` to scroll backwards.
To facilitate this I had to do a better job at scrolling up and down,
so beef up the code to enable that.  Scroll regions still need some
work; test case for that is running vim and then opening help.

Also: fixup the y position when rending rows; it was off by one row.
2018-01-29 23:29:56 -08:00
Wez Furlong
0ebf84ee1c adopt dirtying mechanism for more efficient screen updates
We now keep track of the dirty status on a per-line basis
and use that status to realize when we need to repaint a portion
of the screen.  This reduces the compute cost of redrawing
quite significantly; we're no longer on `top` when we're running
`top`!
2018-01-29 20:38:48 -08:00
Wez Furlong
740c3339a5 Add glyph caching 2018-01-29 09:38:06 -08:00
Wez Furlong
be30b1cb54 there's already a wterm, rename to wezterm 2018-01-28 23:52:21 -08:00
Wez Furlong
5dbf90412f bounds check should be on the actual number of cols
Don't trust that a given Line has exactly phys_cols columns.
2018-01-28 23:33:31 -08:00
Wez Furlong
78c3aee697 Add support for responding to escape sequences 2018-01-28 16:43:10 -08:00
Wez Furlong
cedc62e91a fix cursor positioning when ligatures are used 2018-01-28 09:55:28 -08:00
Wez Furlong
dbeda14566 Add ShmImage, a shared memory Pixmap
Using the SHM extension of the X server saves us from sending ~1MB of
bitmap data to the server on many screen update operations for a
modestly sized terminal window.

SHM may not be available in some situations so we need to keep a
fallback that basically works.  This is done via a helper enum
in xwin.rs.

I've removed the unused Pixmap class; the pixmap concept makes the
most sense for us only when SHM is available.
2018-01-28 09:43:36 -08:00
Wez Furlong
91424e427f factor out BitmapImage from Image 2018-01-27 22:58:40 -08:00
Wez Furlong
bf854d0eb0 remove some unused code 2018-01-27 22:24:44 -08:00
Wez Furlong
0ab8cf1eec Render the cursor position, fixup colors
I thought it would be nice to use the default xterm palette, but
I really hate the contrast of its default blue on black, so switch
to the palette from my xterm config.
2018-01-27 22:17:31 -08:00
Wez Furlong
1ae85b2349 send keyboard input to the pty 2018-01-27 21:54:57 -08:00
Wez Furlong
f879447d59 add xgfx::Connection, store atoms inside it 2018-01-27 14:49:15 -08:00
Wez Furlong
ec3c8f04ba move TerminalWindow into its own file 2018-01-27 14:29:07 -08:00