• 6 Posts
  • 27 Comments
Joined 1 year ago
cake
Cake day: July 8th, 2023

help-circle




  • It is a frontend for standard CLI tools yes, but it comes with many additional features. The focus is especially on integrating standard CLI tools with your desktop environment and other applications that you use like editors or terminals.

    For example, of course you can just use the ssh CLI to connect to your server and edit files. But with XPipe you can do the same thing but more comfortably. You can source passwords from your local password manager CLI, automatically launch terminals with the SSH session, edit remote files with your locally installed text editor, and more.

    Of course you can do this also with tools like putty, but the difference here is the integration. Other tools ship their own SSH client with its own capabilities, features, and limitations. They also have their own terminal. XPipe preserves full compatibility with your local SSH client and terminal. E.g. all your configuration options are properly applied, your configs are automatically sourced, any advanced authentication features like gpg keys, smartcards, etc. work out of the box.

    The same approach is also used for the integrations for docker, podman, LXD, and more, so you can use it for a large variety of use cases.



  • 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.




  • 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 there

    As 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.


  • 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.








  • That is good to hear it works at least to some degree now. In theory, xpipe does detect your installed terminals at launch and will select the most appropriate (i.e. prefer iTerm2 over Terminal.app if iTerm2 is installed), however it seems like there are some false positives as is it quite difficult to properly check whether an app is installed somewhere on macOS.

    The UI feedback is definitely on my TODO list, having a status bar for example that tells you exactly what is currently going on would be very nice to have instead of just a spinner or nothing at all. I will see what I can do there






  • Yeah the initial woes should be ironed out fairly quickly. Each user runs this in a completely different environment, so it was to be expected that I didn’t account and prepare for some cases.

    In the file manager, the main way of uploading files is to just drag and drop the files into the current directory, either from your local desktop environment or from another open tab in XPipe. For downloads, there should be a box on the bottom left where you can drag and drop remote files into. Once dropped into it, they are downloaded, and once it’s finished, you can then drag them into your local desktop environment just as you can do with local files. I guess this process can be made more intuitive though, I will try to figure things out.