1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-27 15:37:29 +03:00
Commit Graph

3983 Commits

Author SHA1 Message Date
Wez Furlong
37a57e8a41 wayland: refine event loop 2021-06-27 15:13:41 -07:00
Wez Furlong
0a00ffe98b wayland: fix key repeat
The main culprit was the calloop feature that is used by default
in the underlying SCTK crate.

This commit:

* Routes keyboard processing via the same keyboard mapping code
  that we use for X11
* Implements key repeats directly, and with awareness of elapsed
  time in case the repeat rate is quicker than the event dispatching
  quantum
* Disables the calloop feature of SCTK and let us do our own polling
  of the wayland connection.

Critically, key repeat is sticky and unpredictable while calloop is
enabled.

closes: #669
2021-06-27 14:29:03 -07:00
Wez Furlong
c514254138 wayland: use proportional font for title bar
allow specifying the font in the config file
2021-06-27 13:04:20 -07:00
Wez Furlong
ca8209b230 wayland: move frame color config to the config file
This simplifies it a bit and exposes the config via the config file;
the following options are possible, each one specifies a color

```lua
return {
  window_frame = {
    inactive_titlebar_bg = "",
    active_titlebar_bg = "",
    inactive_titlebar_fg = "",
    active_titlebar_fg = "",
    inactive_titlebar_border_bottom = "",
    active_titlebar_border_bottom = "",
    button_fg = "",
    button_bg = "",
    button_hover_fg = "",
    button_hover_bg = "",
  }
}
```

refs: https://github.com/wez/wezterm/issues/761
2021-06-27 12:33:56 -07:00
Wez Furlong
e0a6ba9404 docs: update for #906 2021-06-27 10:28:46 -07:00
adrian5
4377323a19 Remove duplicate colorscheme file 2021-06-27 09:57:56 -07:00
Wez Furlong
7f04c4601a window: fixup tests for font config changes 2021-06-26 22:58:42 -07:00
Wez Furlong
282c148bf6 wayland: render title with our font layer when doing CSD
This isn't perfect by any means:

* Should allow configuring a sans-serif font
* Emoji need to be scaled

but it allows us to upgrade SCTK without loosing the titlebar
or any control over client side decorations.
2021-06-26 22:58:42 -07:00
Wez Furlong
4f9532f9d8 window: plumb font config to underlying window impl 2021-06-26 22:58:42 -07:00
Wez Furlong
edbb446183 deps: cargo update 2021-06-26 22:58:42 -07:00
Wez Furlong
e69869efa7 refactor deps so that window can depend on wezterm-font
I want to use this to render the font in the title bar
2021-06-26 22:58:42 -07:00
Wez Furlong
d04486f30a wayland: replace andrew with tiny_skia
This has the consequence of removing the title bar text when
client side decorations are in use.
2021-06-26 22:58:42 -07:00
Wez Furlong
d1177a29c2 wayland: update to SCTK 0.14 2021-06-26 22:58:42 -07:00
Wez Furlong
355b2f5b5a wayland: import ConceptFrame impl from SCTK
This has been removed in a later version, so pull it in ahead
of updating that dependency to verify that it builds.
2021-06-26 22:58:42 -07:00
Wez Furlong
8ab025b7fc Allow building without wayland support
You can run `cargo build --release --no-default-features` to build
without wayland support.

This is useful for systems that do not have wayland (eg: the `slint`
distro).
2021-06-26 22:58:42 -07:00
Wez Furlong
e78bcfce2a add some test data files 2021-06-26 22:58:42 -07:00
Wez Furlong
2fc143e6dd click to focus window now focuses the pane under the mouse cursor
refs: https://github.com/wez/wezterm/issues/881
2021-06-26 15:24:17 -07:00
Wez Furlong
e786968578 adjust hinting for box drawing
This looks better at more sizes

refs: #584
2021-06-26 13:56:16 -07:00
Wez Furlong
b7f504b15e complete box drawing glyphs
refs: #584
2021-06-26 13:45:45 -07:00
Wez Furlong
24fbba66c2 even more box drawing glyphs 2021-06-26 12:28:11 -07:00
Wez Furlong
29f28885fa box drawing: cell arcs 2021-06-26 10:37:09 -07:00
Wez Furlong
4e7f73fab7 box drawing: half lines and mixed lines 2021-06-26 10:16:12 -07:00
Wez Furlong
08fb4eb858 more dashes, and the diagonals 2021-06-26 09:55:45 -07:00
Wez Furlong
0b5444ccfd always use own box glyphs for pane splits
This section of the code wasn't looking up the custom glyphs
and would always use the font.  We can make rendering a little
more efficient if we skip the font resolution for this case,
and the code is much simpler if we just use our own box drawing
glyphs, so that's what we're doing here.

refs: #584
2021-06-26 09:26:10 -07:00
Wez Furlong
843dd88bb5 improve box drawing rendering at smaller font sizes 2021-06-26 08:54:01 -07:00
Wez Furlong
4c0d789ac3 zeno -> tiny_skia
Mostly so that we can turn off anti-aliasing for smaller sizes,
but it also happens to be more complete anyway.
2021-06-25 22:55:42 -07:00
Wez Furlong
fad09eddda even more box drawing glyphs 2021-06-25 21:56:24 -07:00
Wez Furlong
f846f0c9e8 missed the chonky 4 vertical dash 2021-06-25 10:04:49 -07:00
Wez Furlong
8a3fb11598 more box drawing glyphs 2021-06-25 09:58:51 -07:00
Wez Furlong
d7975b15c5 more box glyphs 2021-06-25 09:23:01 -07:00
Wez Furlong
afe63357d3 top left line box glyphs
refs: #584
2021-06-25 00:23:42 -07:00
Wez Furlong
e0ea161673 Custom glyphs for box drawings solid and dashed lines
closes: #588
refs: #584
2021-06-24 23:19:09 -07:00
Wez Furlong
1e8b9ec0bb block glyphs: adjust poly to allow per-path stroke/weight 2021-06-23 10:03:29 -07:00
Wez Furlong
8f676bda36 remove dead code 2021-06-23 09:48:36 -07:00
Wez Furlong
709f33561b ls-fonts: indicate when we're using a custom glyph
```
; ./target/debug/wezterm ls-fonts --text '├─░'
├    \u{251c}     glyph=915  wezterm.font("Terminus", weight="Bold", stretch="Normal", italic=false)
                             /home/wez/.fonts/terminus-bold.otb, FontDirs
─    \u{2500}     glyph=891  wezterm.font("Terminus", weight="Bold", stretch="Normal", italic=false)
                             /home/wez/.fonts/terminus-bold.otb, FontDirs
░    \u{2591}     drawn by wezterm: Full(Light)
```
2021-06-23 09:20:35 -07:00
Wez Furlong
ea95f3f735 don't round mouse coords when mouse is grabbed
refs: https://github.com/wez/wezterm/issues/898
2021-06-22 20:39:51 -07:00
Wez Furlong
07799d0ab3 cargo update 2021-06-20 19:06:54 -07:00
Wez Furlong
9b6fa8d6af remove extraneous log::warn 2021-06-20 17:24:12 -07:00
Wez Furlong
ea58c2311a docs: changelog for https://github.com/wez/wezterm/pull/891 2021-06-20 09:08:26 -07:00
Autumn Lamonte
39535bbd77 #891 Fix tests 2021-06-20 08:29:31 -07:00
Autumn Lamonte
ab1cad0cbf #891 VT100 character set support 2021-06-20 08:29:31 -07:00
Autumn Lamonte
317d8d9725 #891 Fix format for CI 2021-06-20 08:29:31 -07:00
Autumn Lamonte
0b7f48256f Use black diamond U+25C6, not black diamond suit U+2666 2021-06-20 08:29:31 -07:00
Autumn Lamonte
6f680dc481 Flesh out DEC Special Graphics character set 2021-06-20 08:29:31 -07:00
Wez Furlong
ccd66c01a9 sixel: respect Dec Private Mode 8452
This adjusts the cursor position after emitting a sixel.

@dankamongmen: I don't have much of a sixel test suite to speak
of (cat snake.six :-p); I'd appreciate it if you could run
notcurses against this and confirm that it is doing something
sane!

At the very least, we shouldn't be warning about the unhandled
mode any more!

refs: https://github.com/wez/wezterm/issues/863
refs: https://github.com/dankamongmen/notcurses/issues/1743
2021-06-19 21:07:44 -07:00
Wez Furlong
ae4bfae5c4 mouse cursor -> Arrow when app grabs mouse
closes: https://github.com/wez/wezterm/issues/859
2021-06-19 17:35:16 -07:00
Wez Furlong
fdf871c3cb fonts: add wezterm ls-fonts --text "hello" to explain per-glyph font
```
; ./target/debug/wezterm ls-fonts --text "␉ ␌ ␍ ␊ ␋"
␉    \u{2409}     glyph=885  wezterm.font("Terminus", weight="Bold", stretch="Normal", italic=false)
                             /home/wez/.fonts/terminus-bold.otb, FontDirs
     \u{20}       glyph=2    wezterm.font("Operator Mono SSm Lig", weight="DemiLight", stretch="Normal", italic=false)
                             /home/wez/.fonts/OperatorMonoSSmLig-Medium.otf, FontDirs
␌    \u{240c}     glyph=888  wezterm.font("Terminus", weight="Bold", stretch="Normal", italic=false)
                             /home/wez/.fonts/terminus-bold.otb, FontDirs
     \u{20}       glyph=2    wezterm.font("Operator Mono SSm Lig", weight="DemiLight", stretch="Normal", italic=false)
                             /home/wez/.fonts/OperatorMonoSSmLig-Medium.otf, FontDirs
␍    \u{240d}     glyph=889  wezterm.font("Terminus", weight="Bold", stretch="Normal", italic=false)
                             /home/wez/.fonts/terminus-bold.otb, FontDirs
     \u{20}       glyph=2    wezterm.font("Operator Mono SSm Lig", weight="DemiLight", stretch="Normal", italic=false)
                             /home/wez/.fonts/OperatorMonoSSmLig-Medium.otf, FontDirs
␊    \u{240a}     glyph=886  wezterm.font("Terminus", weight="Bold", stretch="Normal", italic=false)
                             /home/wez/.fonts/terminus-bold.otb, FontDirs
     \u{20}       glyph=2    wezterm.font("Operator Mono SSm Lig", weight="DemiLight", stretch="Normal", italic=false)
                             /home/wez/.fonts/OperatorMonoSSmLig-Medium.otf, FontDirs
␋    \u{240b}     glyph=887  wezterm.font("Terminus", weight="Bold", stretch="Normal", italic=false)
                             /home/wez/.fonts/terminus-bold.otb, FontDirs
```
2021-06-19 16:55:45 -07:00
Wez Furlong
d317f0f312 Don't abort for overlay large sixel payloads
Rust hasn't stabilized fallible allocation, so when we are presented
with an implausibly large sixel, Rust terminates the program; it's not
even a panick that we could potentially catch -> direct to termination.

This commit introduces an arbitrary constraint so that we can
avoid unconditionally terminating for this bad input case.

Thanks to @klamonte for sharing this test case!
2021-06-19 13:01:17 -07:00
Wez Furlong
d57bc9b3dc CloseCurrentPane on last pane in a tab results in window closing
The issue is that the pane was only removed from the tab when explicitly
closed, leaving it to be later detected and flushed.

However, in the meantime, when performing eg: cursor blink maintenance,
if the set of panes in the tab is empty then the window would close.

The resolution is to ask the mux (rather than the tab) to kill the pane,
so that the cascading closure of the tab causes the window's active
tab to reference the correct remaining tab.

refs: #890
2021-06-19 11:06:14 -07:00
Wez Furlong
e3fdef7fb4 add wezterm cli spawn --new-window flag
refs: https://github.com/wez/wezterm/issues/887
2021-06-18 22:12:25 -07:00