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: about 1 month 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 3 years ago)
- Default Branch: master
- Last Pushed: 2025-07-31T10:35:01.000Z (6 months ago)
- Last Synced: 2025-10-13T03:36:49.543Z (3 months ago)
- Topics: containers, distrobox, flatpak, linux, sandbox, silverblue, toolbox
- Language: Go
- Homepage:
- Size: 55.7 KB
- Stars: 151
- Watchers: 9
- Forks: 8
- Open Issues: 3
-
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