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

2281 Commits

Author SHA1 Message Date
Wez Furlong
ab03147bd9 config: we can now read ~/.wezterm.lua
This allows for slightly more fancy configuration in the future, but for
now it is rather simple: your lua script returns a configuration struct
with the same shape as that from the TOML file.

A `wezterm` module is provided to the script that provides some
constants to help understand the environment in which wezterm
is running.

I want to add some helpers that make setting up the fonts feel less
weird (lots of nesting in the data model makes this weird).

The ability to conditionally construct configuration is powerful
and helps to address the broader request in
refs: https://github.com/wez/wezterm/issues/152

An example config looks like this:

```lua
local wezterm = require 'wezterm';

print(wezterm.config_dir);
print(wezterm.executable_dir);
wezterm.log_error("w00t! running " .. wezterm.version
  .. " on " .. wezterm.target_triple ..  " " .. wezterm.home_dir);

return {
  enable_scroll_bar = true,
  enable_tab_bar = true,
  ratelimit_output_bytes_per_second = 400000,
  scrollback_lines = 350000,
  font_dirs = {".dotfiles/fonts"},

  window_padding = {
    left = 2,
    bottom = 2,
  },

  font = {
    font = {{
      family = "Operator Mono SSm Lig Medium",
    }},
  },

  unix_domains = {
    {
      name = "unix",
    }
  },

  ssh_domains = {
    {
      name = "localhost",
      remote_address = "localhost",
      username = "wez",
    },
  },

  tls_clients = {
    {
      name = "cubetls",
      remote_address = "cube-localdomain:8080",
      bootstrap_via_ssh = "cube-localdomain",
    },
  },

  tls_servers = {
    {
      bind_address = "192.168.1.8:8080",
    },
  },

  hyperlink_rules = {
    {
      regex = "\\b\\w+://(?:[\\w.-]+)\\.[a-z]{2,15}\\S*\\b",
      format = "$0",
    },
  },

  font_rules= {
    {
      italic = true,
      font = {
        font = {{
          family = "Operator Mono SSm Lig Medium Italic",
        }}
      },
    },

    {
      italic = true,
      intensity = "Bold",
      font = {
        font = {{
          family = "Operator Mono SSm Lig Book Italic",
        }}
      },
    },

    {
      intensity = "Bold",
      font = {
        foreground = "tomato",
        font = {{
          family = "Operator Mono SSm Lig Bold",
        }}
      },
    },

    {
      intensity = "Half",
      font = {
        font = {{
          family = "Operator Mono SSm Lig Light",
        }}
      },
    },
  },
}
```
2020-02-26 22:11:23 -08:00
Wez Furlong
b46d2f054a mux: unset misc env vars when starting the mux server 2020-02-24 08:24:33 -08:00
Wez Furlong
54047e357a export WEZTERM_CONFIG_DIR and WEZTERM_EXECUTABLE_DIR
To make things more convenient on Windows, export the directories
as well as the file names that we discovered.

refs: https://github.com/wez/wezterm/issues/152
2020-02-24 08:03:59 -08:00
Wez Furlong
9b4ddde908 mux: don't panic the server if the client disconnects
I saw that the server exited with a panic here in the case that the
connection was torn down and left the channel broken.  We don't need
to terminate in this case and can simply ignore the error.
2020-02-23 10:38:46 -08:00
Wez Furlong
65749f06a3 mux: fix poll interval. show update indicator
Add an update indicator to the top right of client tabs; this is
overlaid on top of the surface when the last update from the server was
more than ~3s ago and if we expected it sooner than that.

While making this work, I noticed that the exponential poll backoff
had gotten broken in an earlier refactor; instead of a series of polls
backing off slowly, we were aggressively running the backoff up to the
max 30 second interval over the span of a few ms.   This commit fixes
up the backoff computation to only happen when we are ready to send
a poll.

refs: https://github.com/wez/wezterm/issues/127
2020-02-23 09:08:04 -08:00
Wez Furlong
c9064c3f90 mux: don't give up tls connection for connrefused
When we're trying to use credentials from a session that was previously
bootstrapped via ssh but hit connection refused (eg: the server was
subsequently shut down), then we want to proceed to attempting to
re-boostrap via ssh.
2020-02-22 19:26:25 -08:00
Wez Furlong
4af4ad77b5 split out MouseState/Renderable/ClientTab 2020-02-22 14:54:27 -08:00
Wez Furlong
5a2d2b3163 prepare to break up src/server/tab.rs 2020-02-22 13:07:45 -08:00
Wez Furlong
18294841e9 ssh2: update to 0.8
That version has the ability to use SSH agent forwarding.
This commit doesn't enable that functionality, it's just updating
the version and adjusting for changes in the upstream.
2020-02-22 08:50:13 -08:00
Wez Furlong
3dea5a59fc termwiz: bump version for publish
heads up to @quark-zju
2020-02-22 07:40:06 -08:00
Wez Furlong
c71004993f vtparse: bump version for publish 2020-02-22 07:32:52 -08:00
Wez Furlong
097092b36d mux: try harder to re-attach to tabs on reconnect
If we'd decided to close a tab due to an error bubbling up in the
reader, we need to re-assign a local id when we enumerate tabs.

This is a bit of a crutch: ideally we'd not close the tab and
instead show some kind of UI to indicate that it is not responding.

refs: https://github.com/wez/wezterm/issues/127
2020-02-22 07:29:27 -08:00
Wez Furlong
1ac0358cb8 mux: attempt to reuse tls creds on reconnect
Try to avoid running through the SSH authentication flow if we
previously bootstrapped via SSH and already have a local cert.
2020-02-22 07:14:42 -08:00
Wez Furlong
7e714a5ca1 x11: avoid changing the mouse cursor glyph on each move
@kalgynirae showed me weirdly laggy behavior when moving the mouse
in front of his x11 window.  My suspicion was that this is somehow
related to updating the mouse cursor glyph, and looking at this code
there were two things that might influence this:

* We weren't saving the newly applied cursor value, so we'd create
  a new cursor every time the mouse moved (doh!)
* We'd create a new cursor id each time it changed, and then destroy it
  (which isn't that bad, but if it contributes to lag, maybe it is?)

This commit addresses both of these by making a little cache map
from cursor type to cursor id.

I can't observe a difference on my system, so I wonder if this might
also be partially related to graphics drivers and hardware/software
cursors?
2020-02-21 09:10:13 -08:00
Wez Furlong
ee3156888f tab overlay: allow selecting tab by number 2020-02-21 08:44:35 -08:00
Brendan Cully
95fb9c08ca Cleanup: let structopt parse ssh user/host/port instead of doing it by hand
Implement FromStr and Display for SshParameters, so that they can be
parsed and displayed in the standard way.

The motivation for this is that I want to add gateway hosts to the ssh command, and
would like to be able to add something like `gateway: Vec<SshParamters>` to SshCommand
to do it.
2020-02-17 21:39:51 -08:00
Wez Furlong
6f8af46def export WEZTERM_EXECUTABLE and WEZTERM_CONFIG_FILE to the env
This allows child processes to "do something" with that information.
For example, portable wezterm deployments can use these paths to
bootstrap some other portable config paths.

refs: https://github.com/wez/wezterm/issues/152
2020-02-16 09:36:31 -08:00
Wez Furlong
bc6cf6eed6 fix typo in some debug 2020-02-16 09:32:22 -08:00
Wez Furlong
7d27499c18
remove build problem section from the bug report template 2020-02-15 20:24:01 -08:00
Wez Furlong
8083d22376 add note about using clink on windows systems 2020-02-15 14:49:11 -08:00
Wez Furlong
ae357ccc31 docs: add info about using OSC 7
refs: https://github.com/wez/wezterm/issues/146
2020-02-15 14:01:05 -08:00
Wez Furlong
89bed12551 ci: point to a version that has node_modules 2020-02-14 15:53:32 -08:00
Wez Furlong
8f81029718 ci: maybe fix some flakeyness 2020-02-14 13:17:28 -08:00
Wez Furlong
2522b276cc fix inverted logic when warning about not finding a font in font_dirs 2020-02-14 12:38:04 -08:00
Wez Furlong
ff210a1c8e tweak font parser/locator to recognize Regular as a sub family 2020-02-14 12:35:42 -08:00
Wez Furlong
0b3f61796a macos: change default font to Andale Mono
The other default available macos monospace fonts have ligatures for
"fi" that are configured such that harfbuzz will render them when they
are part of a word like "finish" which results in a very weird
appearance.
2020-02-14 12:12:00 -08:00
Wez Furlong
1357a7f25a Enable timestamps in the logger 2020-02-14 09:46:19 -08:00
Wez Furlong
754f8166b5 Add HideApplication and QuitApplication key assignments
```
[[keys]]
key = "q"
mods = "CMD"
action = "QuitApplication"
```

refs: https://github.com/wez/wezterm/issues/150
2020-02-14 08:49:15 -08:00
Wez Furlong
da6783bbd0 macos: implement Hide function
Hiding a window is implemented as miniaturizing the window, which
is typically shown with an animation of the window moving into the
dock.

This is not the same as the application-wide hide function in macOS;
that function hides the entire app with no animation.  We don't use
that here because our Hide function is defined as a window operation
and not an application operation.

refs: https://github.com/wez/wezterm/issues/150
2020-02-12 22:04:10 -08:00
Wez Furlong
9bce910194 docs: there's no stable centos rpm until we next tag 2020-02-12 19:25:28 -08:00
Wez Furlong
0d352f296c docs: update for centos rpm downloads 2020-02-12 19:20:36 -08:00
Wez Furlong
02ace26e0a macos: Fix an issue with chorded keys in norwegian keymap
fixes: https://github.com/wez/wezterm/issues/151
2020-02-12 18:36:05 -08:00
Wez Furlong
c95215b057 ci: rename <target>pr to just <target> 2020-02-12 13:36:31 -08:00
Wez Furlong
5d2d5222cd ci: forgot to set the release tag for nightly builds 2020-02-12 13:32:05 -08:00
Wez Furlong
ed9d8c9aeb ci: remove old badges from readme 2020-02-12 13:21:57 -08:00
Wez Furlong
d96a942421 ci: black format generate-workflows 2020-02-12 13:20:11 -08:00
Wez Furlong
b6673db39a CI: disambiguate fedora and centos nightly rpms 2020-02-12 13:16:13 -08:00
Wez Furlong
98984ec3a5 CI: take a stab at generating workflows 2020-02-12 13:05:21 -08:00
Wez Furlong
d5f467513a CI: build rpms for centos 7 2020-02-12 08:30:41 -08:00
Wez Furlong
9d668a6a33 cargo update 2020-02-11 07:49:05 -08:00
Jun Wu
4651b4c703 termwiz: bump regex to 1.0+
This makes termwiz (likely) use the same regex when being compiled
together with other dependencies in the eco-system.
2020-02-11 07:45:50 -08:00
Jun Wu
ca2e9c013a termwiz: do not depend on derive_builder
derive_builder has some extra dependencies that take a while to compile.
The builder feature can be expressed via a 30-line macro. So let's do
that to make termwiz compile faster.
2020-02-11 07:45:50 -08:00
Jun Wu
f51650c891 termwiz: remove dep on palette
The palette crate has a codegen step that translates svg_colors.txt to named.rs.
That makes it hard to build using buck.

Remove the palette dependency so termwiz is easier to build using buck.

I made sure the following code:

    fn main() {
        use termwiz::color::RgbColor;
        let r = RgbColor::from_rgb_str("#02abcd").unwrap();
        let r1 = r.to_tuple_rgba();
        let r2 = r.to_linear_tuple_rgba();
        println!("r1 = {:?}", r1);
        println!("r2 = {:?}", r2);
    }

prints

    r1 = (0.007843138, 0.67058825, 0.8039216, 1.0)
    r2 = (0.000607054, 0.4072403, 0.6104956, 1.0)

before and after the change.
2020-02-11 07:45:50 -08:00
Jun Wu
2dc4cfe61d vtparse: avoid build.rs codegen
Change build.rs codegen to const_fns. This makes vtparse more friendly for buck
build.

Note const_fn functions still have limitation on the current stable (1.41)
rustc (ex. native "match" or "if" cannot be used in const_fn). So I used some
tricks to get it compile.
2020-02-10 22:41:56 -08:00
Wez Furlong
412d0de7f5 rustfmt 2020-02-10 22:23:18 -08:00
Wez Furlong
0242cb7007 Add a minimum tab width for the tab bar
This is a soft minimum rather than a hard minimum, and is not
configurable.

refs: https://github.com/wez/wezterm/issues/147
2020-02-10 22:14:15 -08:00
Wez Furlong
dedce44c54 reattach tabs when reconnecting to a domain
This helps to restore any individually dropped tabs and to detect
tabs that were created by other clients across a reconnection.

refs: https://github.com/wez/wezterm/issues/127
2020-02-10 22:14:15 -08:00
Wez Furlong
df98af9243 Allow building an RPM on CentOS 2020-02-10 19:22:38 -08:00
Wez Furlong
79d8342a9d improve portability of window path/uri check for osc 7 2020-02-09 13:16:08 -08:00
Wez Furlong
65707aba56 allow setting default values for environment variables
This is useful for setting up a reasonable initial environment.
For example, on Windows you might want to set the `prompt` environment
so that some basic shell integration is enabled; this will cause new
tabs to open with the same cwd as the current tab:

```
set_environment_variables = { "prompt"="$E]7;file://localhost/$P$E\\$P$G" }
```

This setting is intended to apply only to the local domain.

refs: https://github.com/wez/wezterm/issues/146
2020-02-09 12:55:04 -08:00