Skip to content
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

Profile reordering for Settings UI #8914

Open
Tracked by #10000
carlos-zamora opened this issue Jan 27, 2021 · 33 comments
Open
Tracked by #10000

Profile reordering for Settings UI #8914

carlos-zamora opened this issue Jan 27, 2021 · 33 comments
Assignees
Labels
Area-Settings UI Anything specific to the SUI Help Wanted We encourage anyone to jump in on these. Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Product-Terminal The new Windows Terminal.
Milestone

Comments

@carlos-zamora
Copy link
Member

carlos-zamora commented Jan 27, 2021

Description of the new feature/enhancement

The Settings UI doesn't have a way of reordering your profiles. In the JSON, we're able to just reorder the array of profiles.list.

Some considerations to keep in mind include:

Ideally, we could have a design that's future-proof. But since we don't know when the above will be implemented, we could just go with a simple non-future-proof design now, then redesign later.

EDIT: We should also consider deprecating hidden once this is in.

Proposed technical implementation details (optional)

A few ideas have come to mind, but @cinnamon-msft and I haven't actually taken the time to sit down and design this yet. I'll list a few ideas here, but I'm excited to see what ideas the community can come up with:

1. Drag and drop NavigationView's menu items

Pretty straightforward. The idea is that you can drag and drop the menu items for profiles.

NavigationView

Concerns:

  • knowing that those menu items are drag-able isn't intuitive. Maybe we could add some kind of
    gripper icon?
    gripper icon example
  • not really future-proof
  • TECHNICALLY: I don't believe the items in a nav view can be re-ordered trivially (without implementing a fork of nav view, quite likely).
    • Open question: Can we just stick the list of profiles as a ListView with CanReorder=true inside the NavView?
    • This would almost certainly require a huge refactor of how navigation works in the settings UI

2. Add an index "setting" in Profile > General

This would probably be a number box on each Profile > General page (not base layer).

Concerns:

  • don't like that you can't see all the overall order
@carlos-zamora carlos-zamora added Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Product-Terminal The new Windows Terminal. Area-Settings UI Anything specific to the SUI labels Jan 27, 2021
@carlos-zamora carlos-zamora added this to the Terminal v1.7 milestone Jan 27, 2021
@ghost ghost added the Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting label Jan 27, 2021
@carlos-zamora
Copy link
Member Author

@cinnamon-msft assigning you for now since we need a design. I don't think we'll need to write up a design doc though, tbh, but we'll play it by ear.

@carlos-zamora carlos-zamora removed the Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting label Jan 27, 2021
@zadjii-msft zadjii-msft modified the milestones: Terminal Backlog, Backlog Jan 4, 2022
@ultrasound1372
Copy link

I think if this were implemented keyboard accessibility would also need to be considered. I was personally thinking the up/down buttons like present in the path environment variable dialog in system properties, but not sure if that would visually mesh well with this UI. If it uses dragging I'd think something like alt+up/down could work if we're only moving one profile at a time. Would reordering be the only way for me to change the control+shift+number layout to activate the 11th profile in my list? Said 11th profile happens to be a VS native tools prompt and I'd like that to go above all my MSYS prompts.

@BuzyBeeC
Copy link

BuzyBeeC commented Mar 19, 2022

Perhaps a hybrid solution, where profiles are displayed as a numbered list (indexed) in the settings, would combine the best of each. On the left of each profile icon would a be a number “text box” that can be changed via typing. The GUI could visibly reorder profiles based on this number to make it clear. It would intuitively fit with the ctrl+shift+<0-9> shortcut. It could also probably be made keyboard accessible as @ultrasound1372 mentioned but much more efficient than moving one position at a time.

Since the GUI would already update position in the list, a reverse drag-and-drop option that updates the index could maybe be added as a bonus (with gripper icon on the right). I don’t think it would be too unintuitive without it though since many rearranging actions in modern GUIs are drag-and-drop. After all, I first stumbled upon this thread after trying to drag to reorder the profiles.

@ultrasound1372
Copy link

If @BuzyBeeC's thing is considered, I think that that numeric edit should be a spin control rather than a simple edit. That would also allow range limits to be placed and cut down on input validation requirements. You can't change this profile to index 20 when you only have 10 profiles, after all. And for keyboard users this would let us change the ordering with simple up/down arrow on the box.

@BuzyBeeC
Copy link

If @BuzyBeeC's thing is considered, I think that that numeric edit should be a spin control rather than a simple edit. That would also allow range limits to be placed and cut down on input validation requirements. You can't change this profile to index 20 when you only have 10 profiles, after all. And for keyboard users this would let us change the ordering with simple up/down arrow on the box.

This sounds like a simpler and more user-friendly approach.

@brian-kneebone-hp-com
Copy link

brian-kneebone-hp-com commented Aug 24, 2022

I'm more of a fan of click/drag (for mouse/finger users) and the keyboard options proposed above for those that require it (I'd assume CTRL+UP/DOWN or ALT+ UP/DOWN or whatever convention I'm not aware of that makes the most sense would be nice). Why create a new UI if it's not absolutely required. At least for me, my first instinct was to try these techniques, but I might be a weirdo.

PS - I had to mention this by editing the comment. I love that Microsoft Terminal lets us modify the JSON properties more directly for cases where there's not a UI to enable what people are after. This is so freeing in software design and it needs to be applauded/encouraged with others. Letting people customize experiences who are willing to take the leap even experimenting with config files, APIs, etc. before the more friendly user experiences get figured out always feels like the right balance for general and power users. Thank you!

@ultrasound1372
Copy link

Unfortunately, there is no standard for keyboard only reordering or drag and drop. This would be one of the first applications I know of to implement such a thing, second in my knowledge only to foobar2000's list of decoders. Everything else is either use cut/paste or you're just dead out of luck if you can't see. Depending on if you're going to allow multiple movements at once I would go with either alt or control as they said. If you can drag multiple consecutive profiles at once, to reorder a group, I'd select those with shift and move them with alt. Otherwise I'd use control. If you let people select with shift and use control someone might get confused with the other thing where you can control arrows to avoid changing the selection and space to toggle it for the currently focused item, allowing noncontiguous selection. For reordering though that doesn't make sense.

@psztoch

This comment was marked as spam.

@zadjii-msft
Copy link
Member

zadjii-msft commented Nov 8, 2022

You can always reorder the profiles manually in the settings.json file before this gets added.

@psztoch
Copy link

psztoch commented Nov 8, 2022

I do this to myself. But regular users (programmers) complain and don't want to use powershell 7 which is added at the end.

@avluis

This comment was marked as spam.

@zs-dima

This comment was marked as spam.

@zadjii-msft zadjii-msft modified the milestones: Terminal v1.17, Backlog Jan 24, 2023
@zadjii-msft
Copy link
Member

Uh, it absolutely does....?

image

Also, feel free to just rebind the actions to whatever you want:

        { "command": { "action": "newTab", "index": 0 }, "keys": "ctrl+shift+1" },
        { "command": { "action": "newTab", "index": 1 }, "keys": "ctrl+shift+2" },
        { "command": { "action": "newTab", "index": 2 }, "keys": "ctrl+shift+3" },
        { "command": { "action": "newTab", "index": 3 }, "keys": "ctrl+shift+4" },
        { "command": { "action": "newTab", "index": 4 }, "keys": "ctrl+shift+5" },
        { "command": { "action": "newTab", "index": 5 }, "keys": "ctrl+shift+6" },
        { "command": { "action": "newTab", "index": 6 }, "keys": "ctrl+shift+7" },
        { "command": { "action": "newTab", "index": 7 }, "keys": "ctrl+shift+8" },
        { "command": { "action": "newTab", "index": 8 }, "keys": "ctrl+shift+9" },

Just change the index to whichever index profile you want.

@zadjii-msft
Copy link
Member

@ggjulio FWIW, the first profile you have in your list is not actually your Ubuntu distro. That one's marked hidden: true. I'd reckon there's another Ubuntu profile, probably with a source that mentions "Canonical", right below the azure cloud shell 😉

@ggjulio
Copy link

ggjulio commented Jan 27, 2023

Ho crap, I'm dumb, didn't see this property's value was true... sorry for all the spam,
I'll delete all those useless messages...
Thank for your time @zadjii-msft

@zadjii-msft
Copy link
Member

Don't worry about it! Sometimes, things like that can be helpful for other folks to read and learn from too ☺️

@tietomattias
Copy link

@ggjulio I had the same mistake in my JSON >.<

@carlos-zamora carlos-zamora removed their assignment Feb 2, 2023
@NewtonChutney
Copy link

Ahh.. Was just about to raise a duplicate issue! 😅
+1 on this request
BTW, is the backlog prioritized based on the 👍 hits?

@zadjii-msft
Copy link
Member

BTW, is the backlog prioritized based on the 👍 hits?

More or less, yea.

@ReDNeQ
Copy link

ReDNeQ commented May 7, 2023

That Drag and Drop tho! Sure I edited the JSON file, but man o man, some of us want it all. ;)

@raghuwanshi
Copy link

You can always reorder the profiles manually in the settings.json file before this gets added.

We used to customize everything manually in the settings.json, then why do we even have a Settings GUI? The answer is simple 'ease of use' or user friendliness.

@eduarddejong
Copy link

eduarddejong commented Sep 8, 2023

You can always reorder the profiles manually in the settings.json file before this gets added.

We used to customize everything manually in the settings.json, then why do we even have a Settings GUI? The answer is simple 'ease of use' or user friendliness.

The reason I appreciate the help of a GUI for the Terminal is that the settings JSON file is still not as easy to restore from a backup version as this is the case with the one of VS Code for example. And I mean like after a Windows reinstall or on another machine.

With a bit of file comparing and merging using VS Code or Meld we'll get the job done, but there are always some profiles with unique GUIDs, etc., that need to be corrected on the new system.

And I also don't know about any automated syncing solution yet.

So in other words, we simply cannot really argu that that JSON file editing "should" be the preferred or even intended way of settings editing.

@Agent-E11

This comment was marked as spam.

@sedlund

This comment was marked as spam.

@zadjii-msft zadjii-msft added the Help Wanted We encourage anyone to jump in on these. label Nov 9, 2023
@allusernamestakenexceptthis

Based on no.2 solution. Why not add sort_order key/value that accept any integer and in settings of profile as numeric textbox. default is 10 with increment of 10. e.g. 10,20,30,40,50. that way it's easy for users to just change the one they want or set profile to be always last like 9999.

The menu then reorders based on this Ascending. For most users that needs it, this would do the job. and should be easy to implement. Perhaps can be added to advanced since not a very friendly design.

@nikhil-swamix
Copy link

nikhil-swamix commented Dec 3, 2023

2023-12-03.03-05-45.mp4

please have a look at the video. and code https://github.com/nikhil-swamix/TerminalProfileManager .
Context, wrong order was reducing productivity for me. so built this. but kind of works, atleast on my pc. this is more like modding, not official solution.

Features:

  • drag and drop profiles to reorder them, and save the new order to the settings file.
  • intelligently read settings from AppData/Local folder irrespective of user name.
  • color theme matched to windows terminal dark mode.
  • edit/extend logic using simple python code and change GUI using html and css.
  • if python already installed, half the setup is done.
  • jquery, jquery-UI and bootstrap used for GUI. Keyboard support in future.
  • hidden profiles explicitly dimmed.

Future Development:

  • Add searchbar - fuzzy search when you have too many profiles
  • always on top window setting, which allows quick nav.
  • Hide Unhide profile Toggle button for each profile
  • more profile customization via the float popup.

@allusernamestakenexceptthis @eduarddejong @raghuwanshi @ReDNeQ @zadjii-msft @NewtonChutney @tietomattias @ggjulio @ultrasound1372 @psztoch @brian-kneebone-hp-com @BuzyBeeC @carlos-zamora

@nikhil-swamix
Copy link

nikhil-swamix commented Dec 3, 2023

Terminal direct integration is now added!

@carlos-zamora @zadjii-msft

  • dear guys, i have a small question, how are guids generated? which core elements are responsible?
    image

@NewtonChutney
Copy link

2023-12-03.03-05-45.mp4

@Nikhil-Software-Cartel this looks more like a PoC but I think the idea here is to have the list in the main terminal settings page itself be draggable

@NewtonChutney

This comment has been minimized.

@trparky
Copy link

trparky commented Jan 11, 2024

When will this be something that's added to Terminal?

@Agent-E11
Copy link

Agent-E11 commented Jan 12, 2024

@trparky It looks like it is planned (at some point) #10000

@carlos-zamora carlos-zamora self-assigned this Mar 8, 2024
@Agent-E11
Copy link

@caihongxu It is way faster to open the settings.json file and reorder them there. The list is located at profiles.list

@alcarcdr
Copy link

alcarcdr commented Mar 16, 2024

You can always reorder the profiles manually in the settings.json file before this gets added.

We used to customize everything manually in the settings.json, then why do we even have a Settings GUI? The answer is simple 'ease of use' or user friendliness.

Having the GUI Settings would mean things being easer, if in reality it didn't mean we end up wasting lots of time searching for advice, and discussing, features it doesn't have, ones we would expect it to.
Reordering displayed lists of profiles should have been a top UX requirement, yet having the JSON settings file has resulted in neglect.

If we're being given both GUI and JSON file settings, then we should get a nice little button that pops up a little doc listing User Use Cases requirements that need to be done in the JSON settings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Settings UI Anything specific to the SUI Help Wanted We encourage anyone to jump in on these. Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Product-Terminal The new Windows Terminal.
Projects
None yet
Development

No branches or pull requests