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

5901 Commits

Author SHA1 Message Date
Wez Furlong
39e727db58 tab bar: invalidate on resize to avoid gaps on the RHS 2022-07-09 10:45:43 -07:00
Wez Furlong
268ff59a9f docs: fixup changelog for https://github.com/wez/wezterm/issues/1620
I copied and pasted the wrong issue into 5913783d1e
2022-07-09 10:32:34 -07:00
Wez Furlong
5913783d1e wayland: fix transparent gap under tab bar
Not sure why this only really showed up with Wayland, because the
issue was that the computed tab bar height ended up being 1 or 2
pixels shorter than the area we had allotted.

This commit resolves it by forcing the height to match, and
then aligning the content to the bottom of that region to avoid
having an undesirable line under the tab.

refs: #1256
2022-07-09 10:29:46 -07:00
Wez Furlong
e2b748a0d4 wayland: initial support for zwp_text_input_v3 / IME
refs: #1772
2022-07-09 09:44:08 -07:00
Wez Furlong
520a8e306f invalid tab bar on scaling changes
refs: #2208
2022-07-09 07:17:03 -07:00
Wez Furlong
dd27e790c8 docs: add wezterm.gui.screens() to changelog 2022-07-09 06:54:55 -07:00
Wez Furlong
29b7524b9d docs: wrap some text 2022-07-08 23:37:28 -07:00
Wez Furlong
95229d3334 add docs for ExecDomain
refs: https://github.com/wez/wezterm/issues/1776
2022-07-08 23:25:42 -07:00
Wez Furlong
b103cc3ebb docs: fix typo and copy pasta 2022-07-08 22:12:16 -07:00
Wez Furlong
c97e8e564e fonts: allow setting assume_emoji_presentation per font
This allows the user to specify what happens if they have an emoji
font that doesn't match our built-in heuristics.
2022-07-08 21:14:16 -07:00
Wez Furlong
b98fb8410b fonts: assume emoji presentation for fonts with "moji" in their name
previously, we'd match "emoji", but that wouldn't match openmoji.
2022-07-08 21:01:35 -07:00
Wez Furlong
f9cfde3b98 docs: changelog for https://github.com/wez/wezterm/pull/2233 2022-07-08 20:51:56 -07:00
Dominik Kreutzer
51c30e2ee2 win32: fix encoding of delete and backspace keys
When using the win32 keyboard encoding, the delete and backspace keys
were encoded with the wrong character codes compared to the native
terminal. This caused subtle issues in multiple applications.

This change brings the encoding in line with the native terminal.
2022-07-08 20:49:19 -07:00
Wez Furlong
686daf7bca wsl_domains: soft-bind to the config definition
Allows config file changes to be reflected
2022-07-08 20:47:07 -07:00
Wez Furlong
0899282ea6 exec_domains: soft-bind to the config definition
This allows config file changes to be reflected
2022-07-08 20:40:26 -07:00
Wez Furlong
93c5a9b3fb docs: note about wezterm.format in launcher menu labels 2022-07-08 20:26:01 -07:00
Wez Furlong
61f01f6ed7 allow parsing attributes from launcher labels 2022-07-08 19:28:33 -07:00
Wez Furlong
8f44dc46d9 exec_domains: allow async callbacks. can now also set label for launcher
The fixup callback can now by async, which makes it possible to use
other async functions in the callback.

There is an additional parameter to wezterm.exec_domain that allows
setting the label that is shown in the launcher menu.
It accepts either a string value or an async callback function
that can be used to compute the label dynamically.
2022-07-08 18:46:09 -07:00
Wez Furlong
c906179bb9 wayland: use zwlr_output_manager if available
This seems to have better names and also returns fractional
scaling information.
2022-07-08 13:40:28 -07:00
Wez Furlong
fdb5fc2d66 wayland: implement wezterm.gui.screens()
Hook it up for resolving geometry, but note that wayland doesn't
allow positioning and we don't expose a way to set width/height
based on screen right now.
2022-07-08 09:54:42 -07:00
Wez Furlong
5c6312c6a5 remove stray debug 2022-07-07 22:44:12 -07:00
Wez Furlong
d78cc6edb8 new: exec_domains
An ExecDomain is a variation on WslDomain with the key difference
being that you can control how to map the command that would be
executed.

The idea is that the user can define eg: a domain for a docker
container, or a domain that chooses to run every command in its
own cgroup.

The example below shows a really crappy implementation as a
demonstration:

```
local wezterm = require 'wezterm'

return {
  exec_domains = {
    -- Commands executed in the woot domain have "WOOT" echoed
    -- first and are then run via bash.
    -- `cmd` is a SpawnCommand
    wezterm.exec_domain("woot", function(cmd)
      if cmd.args then
        cmd.args = {
          "bash",
          "-c",
          "echo WOOT && " .. wezterm.shell_join_args(cmd.args)
        }
      end
      -- you must return the SpawnCommand that will be run
      return cmd
    end),
  },
  default_domain = "woot",
}
```

This commit unfortunately does more than should go into a single
commit, but I'm a bit too lazy to wrangle splitting it up.

* Reverts the nil/null stuff from #2177 and makes the
  `ExtendSelectionToMouseCursor` parameter mandatory to dodge
  a whole load of urgh around nil in table values. That is
  necessary because SpawnCommand uses optional fields and the
  userdata proxy was making that a PITA.
* Adds some shell quoting helper functions
* Adds ExecDomain itself, which is really just a way to
  to run a callback to fixup the command that will be run.
  That command is converted to a SpawnCommand for the callback
  to process in lua and return an adjusted version of it,
  then converted back to a command builder for execution.

refs: https://github.com/wez/wezterm/issues/1776
2022-07-07 16:38:14 -07:00
Wez Furlong
10b558fae2 dynamic: handle ambiguous {} object vs. array case centrally 2022-07-07 15:42:14 -07:00
Wez Furlong
6485fae873 docs: window:maximize(), window:restore() and gui-startup 2022-07-07 06:35:15 -07:00
Wez Furlong
2c093b976d windows: implement window:maximize(), window:restore() 2022-07-07 06:25:43 -07:00
Wez Furlong
9779b29c39 wayland: implement window:maximize() window:restore() 2022-07-07 06:19:08 -07:00
Wez Furlong
dbc2c85361 add window:toggle_fullscreen()
You can start a window in full screen mode using something like:

```lua
local wezterm = require 'wezterm'

local mux = wezterm.mux

wezterm.on("gui-startup", function()
  local tab, pane, window = mux.spawn_window{}
  window:gui_window():toggle_fullscreen()
end)

return {
}
```

refs: #177
refs: #284
2022-07-06 23:57:32 -07:00
Wez Furlong
871f7a8115 x11: implement maximize and restore 2022-07-06 23:53:19 -07:00
Wez Furlong
8caf0615c5 add plumbing for maximize/restore on x11/wayland
Doesn't do anything yet, but I always forget to add this until
after I've implemented one or the other and then wonder why
nothing happens.

refs: #284
2022-07-06 23:14:37 -07:00
Wez Furlong
8853df02ca lua: add window:maximize() and window:restore() methods
Implemented on macOS only for the moment.

refs: https://github.com/wez/wezterm/issues/284
2022-07-06 23:11:02 -07:00
Wez Furlong
533e52c589 lua: make gui_window() reconcile workspace
reconciling causes gui windows to be created and allows for stuff like
this, that would otherwise fail because the gui window hadn't been
created yet.

```lua
local wezterm = require 'wezterm'

local mux = wezterm.mux

wezterm.on("gui-startup", function()
  local tab, pane, window = mux.spawn_window{}
  window:gui_window():set_inner_size(1200, 1200)
end)

return {
}
```
2022-07-06 18:52:14 -07:00
Wez Furlong
3e01d44ece add window:set_position window:set_inner_size 2022-07-06 18:49:39 -07:00
Wez Furlong
61fb3dffe4 docs: window:gui_window, wezterm.gui.screens() and friends 2022-07-06 16:33:47 -07:00
Wez Furlong
df596da4ea docs: add mux_window:gui_window() 2022-07-06 16:10:17 -07:00
Wez Furlong
30a2223524 docs: split MuxWindow.md into multiple pages 2022-07-06 16:02:29 -07:00
Wez Furlong
8f45cb8dfa lua: add MuxWindow::gui_window() method
This is the inverse of Window::mux_window().
2022-07-06 15:52:31 -07:00
Wez Furlong
87ce88b924 lua: add wezterm.gui.gui_window_for_mux_window()
This is the inverse of wezterm.mux.get_window()
2022-07-06 15:39:43 -07:00
Wez Furlong
f7848cf96d lua: reduce a bit of boilerplate around registering wezterm.submodule 2022-07-06 15:26:21 -07:00
Wez Furlong
d130164fb9 docs: fix typo and copypasta in window:copy_to_clipboard 2022-07-06 15:15:55 -07:00
Wez Furlong
6334e3bc44 rename wezterm.window to wezterm.gui
This better reflects what it operates on
2022-07-06 13:52:19 -07:00
Wez Furlong
87b963981e win32: fixup initial window pos after screens changes
Ensure that we correctly use CW_USEDEFAULT for the case where
`--position` was not used.
2022-07-06 13:43:46 -07:00
Wez Furlong
2b3e5119a4 lua: screens: fixup x11 build 2022-07-06 13:30:40 -07:00
Wez Furlong
99f6fbda15 lua: implement wezterm.window.screens() for macos 2022-07-06 13:27:03 -07:00
Wez Furlong
5caa59577e lua: add screens.active 2022-07-06 13:17:31 -07:00
Wez Furlong
4a8e2b9e8b cargo update
To silence dependabot about openssl-src
2022-07-06 13:01:57 -07:00
Wez Furlong
0e36358acc fix up x11 build for screens changes on win32 2022-07-06 13:00:57 -07:00
Wez Furlong
43c7664438 screens: improve naming on Windows, move resolve_geom to Connection
On Windows, GDI returns unintuitive names like "\\.\DISPLAY6" that
may not start numbered at either 0 or 1.

This commit grubs through the various APIs so that we can produce more
meaningful names like "DISPLAY6: Gigabyte M32u on NVIDIA 2080 TI"
instead.

This commit also makes the lua wezterm.window.screens() function
consistent with the internal resolve_geom functions that each different
implementation had, so that we can eliminate those functions in
favor of this new one on the ConnectionOps trait.

Still need to do macOS and verify that this commit doesn't break X11.
2022-07-06 12:54:18 -07:00
Wez Furlong
cdeabd6a21 lua: implement wezterm.window.screens() on Windows 2022-07-06 08:58:07 -07:00
Wez Furlong
9301d1900d rustfmt 2022-07-06 08:39:14 -07:00
Wez Furlong
a6cf13e1e2 lua: add wezterm.window.screens()
Currently implemented on X11 only, this function returns information
about the geometry of the screen(s).

This is taken from the same source of information we use for the
`--position` CLI argument to `wezterm start`.

```
> wezterm.window.screens()
{
    "by_name": {
        "DisplayPort-1": {
            "height": 2160,
            "name": "DisplayPort-1",
            "width": 3840,
            "x": 0,
            "y": 0,
        },
    },
    "main": {
        "height": 2160,
        "name": "DisplayPort-1",
        "width": 3840,
        "x": 0,
        "y": 0,
    },
    "origin_x": 0,
    "origin_y": 0,
    "virtual_height": 2160,
    "virtual_width": 3840,
}
```
2022-07-06 08:35:05 -07:00