Add an integrated, feature-rich terminal panel #3567
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
An embedded terminal in the file manager is essential for some people, including myself. I’m aware of the plugin that allows adding a terminal to Nemo, but it has usability limitations and is not usable on NixOS. Over the past few weeks, I implemented and, along with some friends, tested a different approach to integrating a terminal into Nemo.
I tried to modify Nemo’s existing code as little as possible, avoiding any additional memory or processing overhead when using the file manager without the terminal enabled, and keeping CPU and memory usage low when the terminal is active.
All terminal settings can be accessed by right-clicking on the terminal, and configurations are saved for future use.
We offer 9 theme options and simple ways to change the font size.
And the most useful part: integration options between the file manager and the terminal. You can choose to synchronize navigation from the file manager to the terminal, from the terminal to the file manager, or both.
Our reference for terminal integration is Dolphin, which had the best integration we knew of. However, with this embedded terminal in Nemo, we’ve added a few more features.
For example, if you type a command in the terminal and then change directories with synchronization enabled, the terminal won’t lose the content you were typing. The content is copied, the cd command is used to change directories, and then the text is pasted back into the terminal using terminal features—this doesn’t interfere with the system’s clipboard functionality.
By default, when accessing an SFTP address in the terminal, you can access files via GVFS Fuse. This is useful, but for DevOps work, it falls short since you can't run commands directly on the server. You have to manually establish an SSH connection, which breaks the sync between the terminal and file manager locations.
In our implementation, when you're in an SFTP address, right-clicking on the terminal gives you the option to connect via SSH, with the ability to maintain folder synchronization. This allows for easy graphical file access and editing, while also letting you run commands in the embedded terminal—like starting or stopping services.
There’s also an option to automatically establish an SSH connection when accessing SFTP addresses.
I hope this Pull Request gets accepted, as it's a feature I would genuinely love to see in all file managers.