1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-19 19:31:49 +03:00
Commit Graph

1730 Commits

Author SHA1 Message Date
Wez Furlong
847214c0a8 Yet another different way to upload release assets 2019-12-29 19:00:46 -08:00
Wez Furlong
437ace7ef7 try a different strategy for building on release 2019-12-29 18:47:23 -08:00
Wez Furlong
23766f6825 remove release creation from tag_posix.yml
This isn't smart enough to avoid making a new release when
one with the same name already exists
2019-12-29 18:37:06 -08:00
Wez Furlong
9762b247e6 Explicitly set the tag for the release 2019-12-29 18:27:12 -08:00
Wez Furlong
f1b6c9d9a0 remove azure status from readme 2019-12-29 17:46:21 -08:00
Wez Furlong
92f5c14373 More CI grunt work
Hook up fedora rpms to the "nightly" nee hourly builds.

Maybe make it so that tags build a release.

Nerf more of the old azure pipelines config
2019-12-29 17:45:00 -08:00
Wez Furlong
bfa8d0c207 wayland: implement focus_change callback
Refs: https://github.com/wez/wezterm/issues/93
2019-12-29 17:17:46 -08:00
Jeremy Fitzhardinge
fce215f10f Enable focus for Windows.
Untested; passes a `cargo check`, but I'm not sure whether I've got the right
event for focus.
2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
887991f464 Remove BlockOutline cursor style
Not really needed, since its something we can handle at rendering time.
2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
999ba79436 Use non-focused cursor shape for unfocused windows 2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
a499eedb86 Make sure cursor gets refreshed properly on focus change 2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
6d5fbf93ff Define outline cursor for unfocused use 2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
0bc0972f75 Track focus state and disable cursor blinking when not focused
Issue https://github.com/wez/wezterm/issues/93
2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
71acd7d2a9 Add focus tracking for Wayland 2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
6558230c9f Implment focus_change for X11 2019-12-29 16:58:15 -08:00
Jeremy Fitzhardinge
69ed1e7aed Add focus_change to WindowCallbacks 2019-12-29 16:58:15 -08:00
Wez Furlong
9596dfd97f Add CI for Fedora 2019-12-29 16:41:28 -08:00
Wez Furlong
b75d6ae62b Schedule rather than "Schedule" on windows 2019-12-29 16:39:51 -08:00
Wez Furlong
30910918f4 Update Cargo.lock 2019-12-29 13:43:59 -08:00
Wez Furlong
033ce1f565 Take a stab at migrating release upload from azure to GHA 2019-12-29 13:36:22 -08:00
Wez Furlong
8964ebd795 Add ability to build an rpm on Fedora
ci/deploy.sh can now emit an rpm to your `~/rpmbuild/RPMS` dir.
2019-12-29 13:09:53 -08:00
Wez Furlong
a251c3722b Enable GH actions build caching
We need to build in release mode so targets are cacheable.
GH has a limit of 400MB per cache blob and we're at 750MB with
the debug build.  Slim it down a bit.

The cache wants to hash the Cargo.lock file so I've removed that
from the ignore file and added it to the repo.  This might cause
an error for users checking out the repo after this change is
pushed; removing the local Cargo.lock should resolve that.
2019-12-29 13:09:18 -08:00
Jeremy Fitzhardinge
962b74c458 Only blink cursor when it's not moving
The cursor should only start blinking when its been sitting in once place;
a moving cursor should always be visible. Rather than making the cursor blink
relative to the creation time of the window, track its position, and use the
last time it moved as the blinking timebase.

Fixes https://github.com/wez/wezterm/issues/83
2019-12-29 09:38:59 -08:00
Wez Furlong
5d55b8bc2e Ensure that the scrollbar defines more vertex fields
This is a bit of a speculative change to see if it helps with
refs: https://github.com/wez/wezterm/issues/82

I have sometimes seen my scrollbar have a color that I didn't
choose and ISTR having some issues in the past when updating
the quads if I didn't set all of the fields of the vertex
to a better defined value.
2019-12-28 12:15:48 -08:00
Wez Furlong
bd0859bef6 Make it possible to more easily tweak atlas padding 2019-12-28 11:55:42 -08:00
Wez Furlong
afc96688ae Use $WEZTERM_CONFIG_FILE for config path if set
This makes it easier for me to test other configurations when
troubleshooting issues!
2019-12-28 11:30:32 -08:00
Wez Furlong
a42342ce0c Recognize C1 codes encoded as UTF-8
These are used in the default Fedora 31 bash profile, so it seems
worth handling even if they are a bit amgiguously defined.

Closes: https://github.com/wez/wezterm/issues/86
2019-12-28 10:33:24 -08:00
Wez Furlong
fa7a007a9f Don't hang when using middle mouse button to paste
A while back I moved the clipboard related processing mostly out
of the term processing code, but since I mostly use the keyboard
for pasting, I'd overlooked the middle mouse button paste flow.

This is problematic because fetching the clipboard requires a
degree of inter process communication and needs the event loop
to be pumped.  Since the terminal callbacks are dispatched from
an event loop callback, attempting to block on the clipboard
future causes a deadlock.

This commit resolves that issue by anticipating that we'll need
the clipboard contents for the majority of middle mouse button
clicks and scheduling a fetch and cache ahead of passing that
event down to the terminal layer.

Why don't we simply use the same technique as the Paste key
assignment?  If the terminal is currently using SGR mouse
tracking mode then the application on the other end of the
pty will want the raw button press.   Our layering doesn't
allow for passing up the concept of whether a middle button
does paste or sends the raw event.

tricksy!

Refs: https://github.com/wez/wezterm/issues/87
2019-12-28 09:15:24 -08:00
Wez Furlong
682bb0d3fd add missing comment 2019-12-28 08:37:19 -08:00
Wez Furlong
d9a9d75a83 Update issue templates 2019-12-27 20:52:10 -08:00
Wez Furlong
9a85109c4e
Delete ISSUE_TEMPLATE.md 2019-12-27 20:36:58 -08:00
Wez Furlong
8adf7fbbbe Update issue templates 2019-12-27 20:35:09 -08:00
Wez Furlong
c8cd600706 wayland: fix unintentional blend with other windows
@jsgf mentioned this to me, and since I've started running "proper"
wayland gnome-shell/mutter on my pixelbook go, I'm seeing it too.

The issue is that the alpha values are potentially <1.0 when they
are committed to the frame buffer and the mutter compositor is
faithfully blending wezterm with the window behind it, leading to
weird looking effects such as varying brightness of text, or for
cases where the window behind wezterm is bright white, a halo
effect that makes the text less sharp.

This commit addresses this issue by asking glium to ask opengl to
set the destination alpha to 1.0 in the final draw stage.
2019-12-27 19:12:19 -08:00
Wez Furlong
de3ffb3428 fix min underline height
I noticed this for small enough sizes of Fira Code the border width
for the cursor would round to zero, and then looking at eg: `man ls`,
the underlined portions had no underline.

Ensure that the underline size is at least 1 pixel.
2019-12-27 12:03:45 -08:00
Wez Furlong
0a6e3fda30 move scrollbar bits to their own module 2019-12-27 11:37:45 -08:00
Wez Furlong
ba2caa815d Allow omitting window_padding fields
Closes: https://github.com/wez/wezterm/issues/85
2019-12-27 09:58:51 -08:00
Wez Furlong
0e568ea161 wayland: reduce CPU utilization by correctly handling Refresh
On a Fedora 31 system running Wayland I noticed that wezterm and
the compositor were running pretty hot on their respective CPU
cores.

It turned out that we had a lot of
[Refresh](https://docs.rs/smithay-client-toolkit/0.6.4/smithay_client_toolkit/window/enum.Event.html#variant.Refresh)
events being generated and consumed. We were treating this as needing
a full paint so we'd be effectively continually running the opengl
paint cycle over and over.

The docs for that event say that it is intended to refresh the client
decorations so let's focus it towards that instead.  This does bring
the CPU usage back down to intended levels.

I believe this hot CPU usage to be compositor-dependent: this is the
first I've seen of it out of 4 different Wayland environments!
2019-12-27 08:48:00 -08:00
Wez Furlong
45fe44e231 Document more things
Closes: https://github.com/wez/wezterm/issues/7
2019-12-24 19:22:50 -08:00
Wez Furlong
744158c531 Add harfbuzz_features docs 2019-12-24 19:09:57 -08:00
Wez Furlong
6171f863ef Add changelog
Refs: https://github.com/wez/wezterm/issues/77
2019-12-24 19:04:33 -08:00
Wez Furlong
db2194d793 Remove some bulky artifacts from the source tarball
* harfbuzz includes some ttf fixtures.
* libpng has some test images
* the wezterm web page has some movie files(!)

None of these are required to be in the source tarball, so strip them
out to save ~40MB and bring the tarball down to <5MB.

Refs: https://github.com/wez/wezterm/issues/46
2019-12-24 13:13:41 -08:00
Wez Furlong
11b79827de Add script that can produce a full source tarball
Full means "including git submodules" and makes it easier for folks to
download and build a release without sucking down large repos from
various locations, especially for folks with bandwidth constraints.

Upload the source tarball to the associated release.

Refs: https://github.com/wez/wezterm/issues/81
Refs: https://github.com/wez/wezterm/pull/46
Refs: https://github.com/wez/wezterm/pull/48
2019-12-24 09:41:15 -08:00
Wez Furlong
fc6d80af0e opengl: make it easier to track quads
The offset math around the scroll thumb made me uncomfortable
so this commit introduces a struct to keep track of the vertex
indices and make it easier to recall them later.
2019-12-23 19:20:07 -08:00
Wez Furlong
68a2d9f159 Adjust default scroll thumb color
I think #222 looks much cooler than #444
2019-12-23 18:08:15 -08:00
Wez Furlong
66b0cf24d1 scrollbar: set a min height for the scroll thumb 2019-12-23 15:14:38 -08:00
Wez Furlong
f350b24220 fix tests 2019-12-23 14:52:49 -08:00
Wez Furlong
aac93e7f0a Improve palette handling w/ live config reloading
@fanzeyi ran into part of this issue when using multiplexing;
tabs from a remote domain always used the default color scheme
rather than the local configuration file color scheme.

Another variation on this is that making changes to the `[colors]`
section of the config only impacts tabs created after the change
was loaded, rather than updating the running tabs.

The root of this was that each terminal was keeping its own
copy of the palette that was updated at creation time to reflect
the config file.  Relatively recently I introduced a new trait
to allow the terminal state to reach out and obtain configuration
from another source.

This commit connects the terminal configuration layer to the
configuration file directly.

The color schemes are now pulled directly from the configuration
file, except in the case where a dynamic color scheme has been
applied: using escape sequences to change the colors causes
the palette to be forked away from the configuration file.

There's still a low pri TODO around this space: if we're connected
to a remote domain and someone uses dynamic color scheme escapes,
should we reflect those locally?  If so then we'll need to build
some plumbing to transport the palette to/from the remote system.

Closes: https://github.com/wez/wezterm/pull/60
2019-12-23 14:19:48 -08:00
Wez Furlong
1ff76e1c3c fix scrollbar rendering on X11 + opengl
Needed to also set the foreground otherwise it appeared invisible
on that particular system!
2019-12-23 08:08:30 -08:00
Wez Furlong
f28d9e994f Enable mouse interaction with scroll bar
This commit:

* Removes the ability to drag the window by the tab bar.  I added
  that in anticipation of needing to do custom title bar dragging
  with Wayland, but it turned out both to be not required and not
  possible to drag windows around in that way.
* Replaces the drag logic with dragging the scrollbar thumb
* Clicking above the scrollbar thumb is equivalent to page up
* Clicking below the scrollbar thumb is equivalent to page down
2019-12-22 22:01:00 -08:00
Wez Furlong
ec609a2e41 Add optional scroll position UI
This commit adds a scrollbar that shows the scroll position but
that does not currently allow dragging to scroll.

The scrollbar occupies the right hand side window padding.

The width of the scrollbar can be set by explicitly configuring
`window_padding.right`.  If the right padding is set to 0 (which
is its default value), and the scroll bar is enabled then the cell
width will be used for the right padding value instead.

The scrollbar can be enabled/disabled via this config setting:

```
enable_scroll_bar = true
```

Its color by this:

```
[colors]
scrollbar_thumb = "#444444"
```

(Note that color palette config will be reloaded when the config
file is changed, but you'll need to spawn a new tab/window to
see the effects because we cannot assume that a config reload should
always replace a potentially dynamically adjusted color scheme in
a tab).
2019-12-22 20:12:56 -08:00