From 3b8fca86ffea77e901c1b469b51299c32bd7298a Mon Sep 17 00:00:00 2001 From: postsolar <120750161+postsolar@users.noreply.github.com> Date: Tue, 19 Dec 2023 07:52:46 +0200 Subject: [PATCH] Amend MOUSE.md Add more detailed explanations and a table for the workarounds for different terminals. Also some stylistic changes for greater consistency and ease of reading. --- MOUSE.md | 59 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/MOUSE.md b/MOUSE.md index 88bc092..d97661f 100644 --- a/MOUSE.md +++ b/MOUSE.md @@ -1,38 +1,51 @@ -# Mouse Scrolling vs Copy / Paste +# Mouse Scrolling vs Selecting and Copying `moar` supports two mouse modes (using the `--mousemode` parameter): -- `scroll` makes scrolling work, but will require some gymnastics for copying - text with your mouse, see below. -- `mark` makes copying text work, but on some terminals this will break scrolling. +- `scroll` makes `moar` process mouse events from your terminal, thus enabling mouse scrolling work, +but disabling the ability to select text with mouse in the usual way. Selecting text will require using your terminal's capability to bypass mouse protocol. +Most terminals support this capability, see [Selection workarounds for `scroll` mode](#mouse-selection-workarounds-for-scroll-mode) for details. +- `mark` makes `moar` not process mouse events. This makes selecting and copying text work, but scrolling might not be possible, depending on your terminal and its configuration. - `auto` uses `mark` on terminals where we know it won't break scrolling, and `scroll` on all others. [The white list lives in the `mouseTrackingRecommended()` function in `screen.go`](https://github.com/walles/moar/blob/master/twin/screen.go). -The reason is that if `moar` requests mouse events from the terminal, that will -make the terminal not accept mark / copy any more. +The reason these tradeoffs exist is that if `moar` requests mouse events from the terminal, +it should process _all_ mouse events, including attempts to select text. This is the case with every console application. -If `moar` _doesn't_ request mouse events, then some terminals will send arrow -keys instead when you scroll your mouse wheel, making scrolling still work. Some -other terminals will send nothing, making scrolling not work. +However, some terminals can send "fake" arrow key presses to applications which _do not_ request processing mouse events. +This means that on those terminals, you will be better off using `--mousemode mark` option, given that you also have this feature enabled (it's usually on by default). +With this setup, both scrolling and text selecting in the usual way will work. +To check whether this could work, simply run `moar` with option `--mousemode mark` and see if scrolling still works. -`less --mouse` has the same problems. +## Mouse Selection Workarounds for `scroll` Mode -## Text Marking Workarounds in `scroll` Mode +Most terminals implement a way to suppress mouse events capturing by applications, thus allowing you to select text even in +those applications which make use of the mouse. Usually this involves selecting with Shift being held. Often the +modifier key is configurable. Some other terminals allow setting options for specific types of mouse events to be reported. +While the table below attempts to list the default behaviours of some common terminals, you should consult +documentation of the one you're using to get detailed up-to-date information. -- **Alacritty**: Use use shift + mouse selection to make it work. Cred to @chrisgrieser for this tip. -- **Contour**: Use shift + mouse selection to mark text. Cred to @postsolar for this tip. -- **Foot**: Use use shift + mouse selection to make it work. Cred to @postsolar for this tip. -- **Hyper** on macOS: Set `macOptionSelectionMode: 'force'` in your config file, then hold the Option Key while marking -- **iTerm**: Preferences / Profiles / Default / Terminal / uncheck "Report mouse clicks & drags" -- macOS **Terminal** on a laptop: Hold down the fn key while marking with the mouse -- **kitty** on macOS: Holding shift or fn while marking. Cred to @PrayagS for this tip. -- **Konsole** Use use shift + mouse selection. Cred to @cig0 for this tip. -- **[Terminator](https://github.com/gnome-terminator/terminator)**: Use use shift + mouse selection to make it work. Cred to @felix-seifert for this tip. -- **[Tilix](https://gnunn1.github.io/tilix-web/)**: Use use shift + mouse selection. Cred to @Macr0Nerd for this tip. -- **[Warp](https://app.warp.dev)**: Preferences / Settings / Features / Terminal / uncheck "Enable Mouse Reporting" -- **Windows**: Use Shift to make a selection. If you click the wrong initial spot, you can clear the selection with Esc. Just be careful, if you hit Esc without a selection, the pager will exit. Cred to @89z for this one. +If your favorite terminal is missing, feel free to add it. + +> :warning: With some of these, if you made incorrect selection you can cancel it either with an Escape key press or with a mouse +> click on text area. You will probably need to still hold the modifier key for this, as hitting Escape without it will likely exit `moar`. + +| Terminal | Solution | +| -------- | -------- | +| Alacritty | [Use Shift](https://github.com/alacritty/alacritty/blob/a10fb8adc0857633be428d673ab8d36d2a90193a/extra/man/alacritty.5.scd#mouse) when selecting with mouse. *Cred to @chrisgrieser for this tip.* | +| Contour | [Use Shift](https://github.com/contour-terminal/contour/blob/cf434eaae4b428228413039624231ad0a4e6839b/docs/configuration/advanced/mouse.md) when selecting with mouse. *Cred to @postsolar for this tip.* | +| Foot | [Use Shift](https://codeberg.org/dnkl/foot/wiki#i-can-t-use-the-mouse-to-select-text) when selecting with mouse. *Cred to @postsolar for this tip.* | +| Hyper | on macOS: Set `macOptionSelectionMode: 'force'` in your config file, then hold the Option Key when selecting with mouse. | +| iTerm | Go to `Preferences / Profiles / Default / Terminal / ` and uncheck "Report mouse clicks & drags". | +| Terminal on macOS | on a laptop: Hold down the fn key when selecting with mouse. | +| kitty | [Use Shift](https://sw.kovidgoyal.net/kitty/overview/#mouse-features) or Fn when selecting with mouse. *Cred to @PrayagS for this tip.* | +| Konsole | [Use Shift](https://github.com/KDE/konsole/blob/ffc48bfdadfb93fea09dcc9181b73738a4544a08/doc/manual/index.docbook#L242) when selecting with mouse. *Cred to @cig0 for this tip.* | +| Terminator | Use Shift key when selecting with mouse. *Cred to @felix-seifert for this tip.* | +| Tilix | Use Shift key when selecting with mouse. *Cred to @Macr0Nerd for this tip.* | +| Warp | Go to `Preferences / Settings / Features / Terminal / ` and uncheck "Enable Mouse Reporting". | +| Windows | Use Shift key when selecting with mouse. *Cred to @89z for this tip.* | # `less`' screen initialization sequence