Skip to content

Add an integrated, feature-rich terminal panel #3567

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

bigbruno
Copy link

@bigbruno bigbruno commented Jun 8, 2025

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.

image

@Jeremy7701
Copy link
Contributor

That "terminal panel" screenshot looks seriously wrong.

Apart from the colour decoration...
The user home directory (/home/bruno) should be shown as ~ (not /)
cd /home is OK
But ls should show all the files and directories in /home, not the user home directory.

How will this work, reliably, with split panes and multiple tabs?
Will it cause bugs in any of the nemo plugins - presumably nemo-terminal plugin is replaced?

@bigbruno
Copy link
Author

bigbruno commented Jun 8, 2025

A captura de tela do "painel de terminais" parece muito errada.

Além da decoração colorida... O diretório inicial do usuário ( /home/bruno) deve ser mostrado como ~(não /) cd /home está OK Mas lsdeve mostrar todos os arquivos e diretórios em /home, não o diretório inicial do usuário.

Como isso funcionará de forma confiável com painéis divididos e várias abas? Causará bugs em algum dos plugins do Nemo (presumivelmente, nemo-terminalo plugin será substituído)?

Colors and display of ls have nothing to do with the built-in terminal, it's my bash configuration

In split panels and in more tabs, it starts other terminal processes, just like it is done with the terminal plugin

With a terminal built into the nemo code, there is no reason to use a terminal extension

@leigh123linux
Copy link
Contributor

That "terminal panel" screenshot looks seriously wrong.

Apart from the colour decoration... The user home directory (/home/bruno) should be shown as ~ (not /) cd /home is OK But ls should show all the files and directories in /home, not the user home directory.

I never liked the powershell prompts either

How will this work, reliably, with split panes and multiple tabs? Will it cause bugs in any of the nemo plugins - presumably nemo-terminal plugin is replaced?

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants