Hello Linux community,
I’m proud to present to you XPipe, a new type of shell connection hub and remote file manager that allows you to access your entire sever infrastructure from your local machine through your installed command-line programs. This approach makes it much more flexible as it doesn’t have to deal with file system APIs, protocols, or libraries at all, everything is delegated to your own CLI tools. So if you normally use CLI tools like ssh
, docker
, kubectl
, etc. to connect to your servers, you can just use XPipe on top of that without any set up required on your servers.
Since the first announcement around one month ago, a lot of things have changed thanks to the community sharing a lot of feedback and reporting issues. Overall, the project is now in a much more stable state as all the accumulated issues have been fixed. Furthermore, many feature requests have been implemented. This includes for example:
- SSH tunnel support (Local, Remote, and Dynamic)
- Automatic import from your SSH configs
- Podman support
- Support for other Linux environments on Windows such as Cygwin or MSYS2
- Fish shell environment support
- Support for more terminals and editors such as Alacritty, Kitty, and more
Here are some screenshots:
Overall, there have also been a lot of changes across the board:
-
In terms of security and the handling of passwords, people did not like storing their passwords in yet another tool, so a lot of changes have been made. You can now source all required passwords either on the fly with a prompt or call the CLI of your password manager to fetch them.
-
The UI also got an overhaul and is now much more responsive and performant. Many of the icons were redone to achieve a more uniform look plus it now also displays the logo of the os/distro you connected to. It is also made to be more intuitive in many aspects.
-
In terms of availability, there are also now ARM builds available for Linux, plus a new xpipe AUR package. The available automatic installation scripts for bash and PowerShell have also been improved.
-
Of course a lot of bugs have been fixed as well and I learned a lot about in what kind of different environments people use this tool.
So if you gave this project a try a while ago or it sounds interesting to you, you can check it out on GitHub! There are still more features to come in the near future. I also appreciate any kind of feedback to guide me in the right development direction. There is also a Discord and Slack workspace for any sort of talking, now with a small community present.
Enjoy!
deleted by creator
Overall, XPipe makes it much less tedious to connect and access remote systems wherever they are located, especially if you have to go through multiple intermediate systems in between. Once you added a system to XPipe, you can just connect to it with your favorite terminal in one click just as you would do manually and also browse the file system. Having a graphical overview over all available remote connections and their file systems can make your life easier, especially if you work with many different remote systems, containers, clusters, and more.
If you just regularly connect to two simple servers via SSH, then you probably won’t get that much use out of this. But if you have many servers, gateway servers, containers, and other subsystems running, then it will make your life easier.
How’s it different than something like MobaXTerm? https://mobaxterm.mobatek.net/
There are certainly some similarities, i.e. you use both to connect and work on your remote systems. However, the main difference is that XPipe does not come with integrated connection capabilities or an integrated terminal. Everything is delegated to your tools, i.e. XPipe for example connects via your installed ssh command-client and launches the terminal emulator you choose, nothing is included in the application itself.
On a more fundamental level, XPipe is not aware of any protocols like SSH, SFTP, FTP, and more. Instead, XPipe creates a new process using for example your local ssh executable, which is usually the OpenSSH client. I.e. it launches the process
ssh user@host
in the background and communicates with the opened remote shell through the stdout, stderr, stdin of the process. From there, it detects what kind of server and environment, e.g. shell type, os, etc. you have logged into with that shell connection, and adjusts how it talks to the remote system from thereAs a result of this approach, you can do stuff with XPipe that you can’t do with other tools like MobaXterm. One example would be connecting and accessing files on a docker container as there’s no real protocol to formally connect here by default. XPipe can simply execute
docker exec -i sh
to open a shell into the container and handle the file management through this opened shell by sending commands like ls, touch, and more.More broadly, XPipe can work on any shell connection, regardless of how it is established. From its perspective, there’s no visible difference between a remote ssh connection, a shell in a docker container, or your local system shell.
Furthermore, MobaXterm is Windows only while XPipe is cross-platform.
Kicked the tires and it seems promising. Thanks for sharing. I’ll keep an eye on this.
Also, thanks for being cross platform.
This is really great! Tried it out and it’s already earned the coveted “pin” on the taskbar. Thank you for your work on this.
This is freaking awesome!
Looking forward to trying this out!
Looks sick!
Looks good, but why is it so gooey?
What do you refer to here? The UI or something else? I haven’t heard the word gooey being used to describe an application before, but I’m also not a native speaker.
Yes I was making a play on words with GUI and gooey. Reading the post I thought it was a cli app until I saw the screenshots, that’s all.
Oh I see, that went over my head 😀
Looks interesting, will give it a go if/when it shows up on nixpkgs
The auto-detect seemed nice, but was missing some key features.
- unable to pass additional arguments to shells (that I could find)
- i.e. i need to start some of my terms in certain directories to take advantage of .direnv set environment variables
- also when I wanted to connect to my docker containers, or even remote hosts, i’d rather do it as a certain user than always connect as root
- didn’t enjoy using it in dwm, though I imagine any tiling window manager would have the same issues: way too many pop-ups
Thanks for the feedback!
- There is a custom shell functionality under add command -> shell command, however it’s not perfect so you have to see whether it works for your cases
- I am not sure whether direnv works when you create a custom shell environment in xpipe with an init script of cd , I can test that
- About connecting to docker containers and other hosts, you can in theory connect as any user. However some parts like an on demand sudo elevation is currently bugged, but will work soon.
- Yeah I can imagine that using it in a tiling window manager is not very pleasant, I honestly did not take these into account when designing it. However, I plan to get rid of separate dialog windows and merge them with the main window.