-
Notifications
You must be signed in to change notification settings - Fork 736
[gui] add Select All option to terminal right click menu
#4211
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
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4211 +/- ##
=======================================
Coverage 89.37% 89.37%
=======================================
Files 259 259
Lines 15744 15744
=======================================
Hits 14071 14071
Misses 1673 1673 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This is a nice initiative Lev, but it would be the first right-click menu. @vikorama's, I'd love your opinion in that regard. |
|
@ricab seems that this right-click menu is already there, at least on Mac:
So, if it's only about adding the 'Select all' option, I can't think of arguments for or against it. @levkropp How did you come up with this idea? Would it improve any of your own workflows? As I user I normally just drag a cursor to select what I want. |
|
Ohh, my bad, sorry. I thought it was a new thing. |
This idea came from #4192 which suggests a GUI toolbar at the top of the screen as an accessibility enhancement for Multipass. It suggests options for Copy, Paste, and Select All among others Select All is a common option in right click menus for terminals. Above is the right click menu of the built in Terminal in Visual Studio Code as an example. Use cases would be for people who want to quickly select all information on their terminal screen with just 2 clicks, or those who have accessibility issues regarding the ability to click-and-drag So regardless of future implementation plans for #4192's toolbar itself, I think Select All being implemented is a valuable addition to our GUI terminal's right click menu. |
|
Thank you for sharing the original request Lev! Something to look into, as I heard about similar struggles from other users. This PR looks like a good step in the direction! |
|
Thanks @vikorama ! Could I bother you for an approval on this? |
|
It would also be interesting to add the |
macOS offers tabs everywhere, if it is feasible it would be useful to block those of the system and provide a universal one. |
@levkropp it's an honor. The Select all works like a charm, so I can approve this PR. One thing tho is that I realised I could not triple-click within a paragraph of text so that the whole paragraph gets selected. This is the expected behaviour in Mac's and Windows' terminals (Ubuntu too, right?). Is this easy to fix maybe in this PR? |
e912721 to
3f24346
Compare
Hey @vikorama , I wasn't able to reproduce this triple-click behavior on a KDE Konsole on Kubuntu 24.04 or on a Powershell Terminal on Windows 11 Pro. This may be a Mac-specific (Terminal.app) feature? It also seems that this is not a very straightforward feature to implement in our Flutter GUI as it stands (I attempted a quick solution by wrapping the Terminal in a GestureDetector and calling the function to select all text when a triple click is detected, but this does not work) and may even require changes to our fork of terminal plugin we are using. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @levkropp! LGTM then
3f24346 to
deb9c30
Compare
deb9c30 to
1b935ce
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Works as expected. It feels like the code could be nicer but alas xterm doesn't seem to provide direct support for iterators or the like
| // Check if the line has any non-empty content | ||
| bool hasContent = false; | ||
| for (int j = 0; j < line.length; j++) { | ||
| if (line.getCodePoint(j) != 0 && line.getCodePoint(j) != 32) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if there is a nicer way to do this, but it seems LineBuffer is not trivially iterable and ' '.runes.first isn't much better than 32
1b935ce to
fd86a6d
Compare


This pull request introduces a new option to the right click menu in the terminal tab in the GUI, enabling users to select all text within the terminal buffer. The changes include the addition of a new
Intentclass, modifications to the context menu, and implementation of the logic for selecting all terminal text.New Feature: Select All Terminal Text
SelectAllTerminalTextIntentclass: Introduced a newIntentclass to handle the "Select All" functionality.SelectAllTerminalTextIntent.terminalController.