Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/1player/host-spawn
Run commands on your host from inside your toolbox or flatpak sandbox
https://github.com/1player/host-spawn
containers distrobox flatpak linux sandbox silverblue toolbox
Last synced: 13 days ago
JSON representation
Run commands on your host from inside your toolbox or flatpak sandbox
- Host: GitHub
- URL: https://github.com/1player/host-spawn
- Owner: 1player
- License: mit-0
- Created: 2022-07-06T15:21:37.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-09T17:45:00.000Z (5 months ago)
- Last Synced: 2024-08-01T03:28:35.713Z (3 months ago)
- Topics: containers, distrobox, flatpak, linux, sandbox, silverblue, toolbox
- Language: Go
- Homepage:
- Size: 57.6 KB
- Stars: 107
- Watchers: 10
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- stars - 1player/host-spawn
README
# host-spawn
Run commands on your host machine from inside your flatpak sandbox, [toolbox](https://github.com/containers/toolbox) or [distrobox](https://github.com/89luca89/distrobox) containers.
Originally started as a reimplementation of `flatpak-spawn --host`.
## Recommended setup
**Note:** Distrobox already ships with host-spawn. You might be better served by using their wrapper `distrobox-host-exec` which runs host-spawn under the hood.
* Install host-spawn in a location visible only to the container. I recommend `/usr/local/bin`.
* Make sure it is executable with `chmod +x host-spawn`## How to use
* `host-spawn` with no argument will open a shell on your host.
* `host-spawn command...` will run the command on your host.Run `host-spawn -h` for more options.
## Creating shims for host binaries
If there's a process that you always want to execute on the host system, you can
create a symlink to it somewhere in your $PATH and it'll always be executed through `host-spawn`.Example of creating a shim for the `flatpak` command:
```
# Inside your container:$ flatpak --version
zsh: command not found: flatpak# Have host-spawn handle any flatpak command
$ ln -s /usr/local/bin/host-spawn /usr/local/bin/flatpak# Now flatpak will always be executed on the host
$ flatpak --version
Flatpak 1.12.7
```**Note:** you will want to store the symlink in a location visible only to the container, to avoid an infinite loop. If you are using toolbox/distrobox, this means anywhere outside your home directory. I recommend `/usr/local/bin`.
## Improvements over flatpak-spawn --host
* Allocates a pty for the spawned process, fixing the following upstream issues: https://github.com/flatpak/flatpak/issues/3697, https://github.com/flatpak/flatpak/issues/3285 and https://github.com/flatpak/flatpak-xdg-utils/issues/57
* Handles SIGWINCH (terminal size changes)
* Passes through `$TERM` environment variable
* Shims host binaries when symlinked, see section above