Terminal: Cascading settings need to much overriding to get rid of defaults

Created on 24 Oct 2019  Â·  10Comments  Â·  Source: microsoft/terminal

Description of the new feature/enhancement

Currently "defaults" (including profiles and keybindings) are always applied and merged with "profiles.json". I have zero overlap between default and custom keybindings because I use default prefix (ctrl+shift) inside different application. In new version of Terminal, if I don't override _all_ those to null I have unwanted side effects (specially if that app passes keybindings through and Terminal gets them).

Also I don't want to have certain profiles visible but GUIDs are different across machines so on each machine where I use Terminal I have to checkout my dotfiles (including Terminal config), inspect defaults file and then override (hide) those GUIDs.

Proposed technical implementation details (optional)

Merge (cascading) should be optional. If disabled defaults should be used one-time to create profiles.json.

Issue-Feature Needs-Attention Needs-Tag-Fix

Most helpful comment

It would be awesome to be able to disable all key bindings. Currently I have to read a mile of documentation to find them all and disable them or set them to something I like.

All 10 comments

Thanks for your feedback and appreciate your views. However, I don't quite follow what your proposed solution for your use-case is. We have to provide default key-mapping for many common and popular chords to expected actions, otherwise the Terminal won't be useful to most users.

If those key-mappings don't meet YOUR needs, you'll need to unbind/remap the defaults that you don't want.

While in your case, this means you may have to unmap more defaults than most, this is a necessary byproduct of Terminal providing sane defaults for most users, no?

Regarding GUID's: You can omit GUID's completely if you wish - your Terminal instances will then just auto-generate GUIDs internally, which it uses to differentiate one profile from another.

@bitcrazed Thanks for response, I completely understand that reasonable defaults need to be provided.

My problem is that I need to follow what you guys added/changed and remove that in my settings overlay pro-actively. It would be ideal if there was a general config switch e.g. addDefaultKeyBindings: I can set to false so I'm sure that only my own keybindings will be used and not weird mixture of in-time changing defaults and my own.

As for GUIDs, thank you, I didn't know that.

Defaults can yield surprising and devastating results when there is no trivial way to turn them off.

Take, for example, a user who uses Vim keybindings in *NIX command lines. Ctrl-w is used to delete the previous word, but trying this in Windows Terminal invariably closes the current tab without warning, which is a show-stopping problem to have. No application should punish a fully-supported use case by default.

devastating

Ctrl+W hasn’t been bound by default since version 0.3, about half a year ago.

_for this exact reason_

Odd, it just happened to me today. That’s why I’m here.

If you installed the Terminal immediately when we first released, then you probably still have ctrl+w bound in your settings - it should be trivial to change that line in your profiles.json file.

I meant it merely as an example—it’s the kind of thing that’s only possible if defaults aren’t a cohesive “thing”, and are instead scattered and islands unto themselves. If a user intends to use their own mappings for everything, for example, there’s no telling what new defaults will arise later that add surprise to their experience.

This wouldn’t be the case for many pieces of software, but a terminal is supposed to be able to pass unmapped key combinations through unchanged to other tools that have their own mappings.

I'd much more prefer standard UNIX approach where tool ships with default config file. You edit it, you exactly know what will happen. No surprises, no cascading settings.

It would be awesome to be able to disable all key bindings. Currently I have to read a mile of documentation to find them all and disable them or set them to something I like.

Was this page helpful?
0 / 5 - 0 ratings