Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jnoortheen/xontrib-term-integrations
Shell integration for Xonsh
https://github.com/jnoortheen/xontrib-term-integrations
iterm2 kitty terminal xonsh xontrib
Last synced: 3 months ago
JSON representation
Shell integration for Xonsh
- Host: GitHub
- URL: https://github.com/jnoortheen/xontrib-term-integrations
- Owner: jnoortheen
- License: mit
- Created: 2022-01-07T20:42:17.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-14T19:59:13.000Z (over 1 year ago)
- Last Synced: 2024-10-13T11:15:24.330Z (3 months ago)
- Topics: iterm2, kitty, terminal, xonsh, xontrib
- Language: Python
- Homepage:
- Size: 48.8 KB
- Stars: 16
- Watchers: 5
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Terminal Emulators integration
[Shell integration](https://iterm2.com/documentation-escape-codes.html) for Xonsh.The following terminal emulators are supported
- [iTerm2](https://iterm2.com/documentation-shell-integration.html)
- [kitty](https://sw.kovidgoyal.net/kitty/shell-integration/)
- [WezTerm](https://wezfurlong.org/wezterm/shell-integration.html) with CWD; Input, Output, and Prompt zones; and User Vars for tracking additional shell state**Note**: If identifying current terminal fails, `iTerm2` hooks are loaded.
PRs welcome on improving the support to more terminal programs :)
## Installation
To install use pip:
``` bash
xpip install xontrib-term-integrations
# or: xpip install -U git+https://github.com/jnoortheen/xontrib-term-integrations
```## Usage
``` bash
# this modifies the $PROMPT function. So load it after setting $PROMPT if you have a custom value
xontrib load term_integration
```(WezTerm) Set user vars[^1] via the helper `set_user_var` function:
```xsh
# via a xonsh alias
set_wezterm_user_var 'my_term_user_var' 'value_of_my_term_user_var'# or an explicit Python import
from xontrib_term_integrations.utils import set_user_var
set_user_var('my_term_user_var','value_of_my_term_user_var')
```You can disable registering the alias with a `$XONTRIB_TERM_INTEGRATIONS_SKIP_ALIAS = True`
## Contributing
Please make sure that you
* Document the purpose of functions and classes.
* When adding a new feature, please mention it in the `README.md`. Use screenshots when applicable.
* [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) style should be used
for commit messages as it is used to generate changelog.
* Please use [pre-commit](https://pre-commit.com/) to run qa checks. Configure it with```sh
pre-commit install-hooks
```## Known issues
- (WezTerm) Multiline prompt is partially supported:
- every continuation line is semantically marked by default:
```xsh
if True:
#↓ continuation prompt
..... echo 1
# ↑ input
```
so you can select ` echo 1` as a `SemanticZone` with a mouse multiclick, but you can't select both lines as one zone (and would need to map some combo of commands to hack around it)
- if you set `$MULTILINE_PROMPT_PRE=''`, `$MULTILINE_PROMPT_POS=''`, then continuation lines won't be marked, you'd be able to select all the lines as one `SemanticZone` (unles the _right_ prompt interferes), but that will also include `..` continuation markers (so you'd either need to disable them in Xonsh or add some extra WezTerm lua parsing hack to trim them)
(follow this [WezTerm discussion](https://github.com/wez/wezterm/discussions/3130) for updates)
- (WezTerm) Semantic _right_ prompt not separated from the next-line _left_ prompt ([issue](https://github.com/wez/wezterm/issues/3115))
- WezTerm is _not_ recognized in root shells due to [this issue](https://github.com/wez/wezterm/issues/3114)[^1]: Variables associated with a given pane rather than a process. [WezTerm](https://wezfurlong.org/wezterm/shell-integration.html#user-vars), [iTerm2](https://iterm2.com/documentation-escape-codes.html)