Redesign User Preferences #54115
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
16 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#54115
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
There are two main reasons why the User Preferences need an overhaul:
2.8x introduces new concepts that require new kinds of settings. One being
Proposed Design
I'd propose a design that is similar to how many applications, websites and operating-systems (or desktop environments) do it:
Notable suggestions are:
Workspaces, System), then the settings-"group" (Interface,
Add-ons, Theme, Devices, etc.). Of course "category" and
Note that the mock-up shows changes to the theme-system as well. These are not part of this proposal. Changes like that can be checked on separately as we go more into details.
Rationale
A design similar to the one proposed, should bring multiple benefits:
Workload
Although there may be some challenges, I expect this redesign to be a nicely isolated task where we can do much good with rather little effort. Definitely a doable change for 2.8. Especially since it allows us making the workspace configuration more flexible & useful (we don't have a proper UI for that yet).
We may have to add special widgets for the category/group chooser, but a temporary solution using existing widgets would work too.
I wouldn't mind working on a prototype and transforming it into a ready-to-use state once the design is agreed on. A nice task for until we know how to continue with the topbar.
References
I did do some research before opening this, in fact the proposed solution is based on this KDE-settings mockup: *More mockups using this design here //.
Other useful references:
Added subscriber: @JulianEisel
Added subscriber: @antoniov
Added subscriber: @DuarteRamos
Added subscriber: @Ton
Added subscriber: @JoshuaLeung
In general, I don't have any major objections to the stuff proposed here.
Various random points (even though we're still just dealing with rough ideas here atm):
Renaming this thing to "Settings" is probably ok. Interestingly, quite a few apps seem to use various different terms here - e,g, a quick check here finds: "Options" (Firefox, MS Office), "Preferences" (MuseScore, Inkscape, Audacity), and "Settings" (MS Windows, Vivaldi, Krita (but only as a menu name; the actual entry is called "Configure Krita"))
"Paths" is often something that's very system-dependent AFAIK (e.g. stuff like tempfile directories, editor/viewer paths, etc.), so it probably should go under "SYSTEM"
The "Input" and "Addons" sections you've currently got under "USER PREFERENCES" is probably something that will still be a bit contentious (e.g. what exactly shows up there vs in the workspace specific modes?)
It would be great to make that space/editor/area be made up of multiple regions, instead of just a single one (as now), so that the navigation stuff is always visible. IIRC, we had a proposal once to use a real tab strip, but with this multi-level design.
For the search, it'd be great to have this implemented per user-pref instance, instead of being a semi-global thing. This applies to both the proposed search option, and also the addons search. This is something that has bugged me for a while, especially as it makes it pretty nasty trying to check on the keymaps for properties in several different areas
Another point to note about search is: How are we going to do it? We could just naively filter by property names, but what about things like the labels and layouts that are sometimes needed to make these things work? We can have this discussion later in the process, but it's just something to keep in mind
Perhaps I'm missing/forgetting something here, but how do we intend to handle big equipment-related pen/tablet vs mouse vs mixed configuration things with this UI? Like, where would I expect to go looking for those settings, since this sort of thing could have quite a big impact across the set of keymaps + addons installed (e.g. for a tablet, you might want a bunch of addons for easier access to certain functionality for instance). Is this something that falls under "User Preferences > Input" or "System > General" or do we even need a separate category to deal with this?
Yeah... always annoys me that there isn't a standard for this. When dealing with other apps I always search through the menus for an "Options", "Settings" or "Preferences" entry. I bet I'm not the only one. Not sure if I'd catch "User Preferences" if I didn't knew it was called this way.
Indeed, might make sense. For the future, it might also be nice to have a "Security" group for .py script autorun , sandboxing options etc.
In my mind the workspace add-ons would be add-on overrides (to override enabled/disabled state and add-on settings). Same with the keymap btw. The mock-up should probably say "Add-on Overrides" in the workspace category.
Note that the groups visible in the mock-up are not meant to be part of the proposal, just some reasonable placeholders to show the point.
What exactly do you mean with the navigation stuff? The category/group buttons? I actually thought of this as a separate region too (esp. since it might need separate scrolling).
Huh, interesting. Never faced this, but I also only use one UserPref instance usually. Will keep that in mind.
(Testing this, the keymap editor seems to do this just fine.)
Yup, how exactly it's going to work is something we need to look into once basic settings UI design is agreed on. Think the search can be implemented in .py, so we can easily test multiple versions.
In the mock-up I added a "Devices" group as part of the system settings (also for things like HMDs). That might already work fine. I think it would additionally be wise to split the "Input" tab into "Keyboard" and "Mouse", just for better structuring. If needed we can also add "Pen Tablet", "3D Mouse" and such.
Now, if you want to enable an add-on based on a specific device - shouldn't the add-on handle this somehow? Either in the poll-callback or in its settings. I guess these would be add-ons specifically for a device type (tablet, 3D mouse, ...) anyway.
Added subscriber: @VukGardasevic
Implementing a data independent scrollable box (scroll_box or similar) would be a good start. UI list are a bit difficult to use as they need data defined first and a counter for tracking the active state.
Having a box widget that makes all UI children entries being accessible with scrollbars (vertically and horizontally) could help a lot with organization and saving space. Behaving like a region in a box. :)
Added subscriber: @PierreSchiller
Could this be a good time to propose a NEW SPLASH screen? to better simplify the first user enounter with the software?
@JulianEisel Right. That sounds reasonable.
Yep, that sidebar :)
Hmm... I'm not so sure that it really makes sense to do that - at least not right now. Maybe for global settings like rotate/scrollwheel behaviour vs general hotkeys it might be ok, but I have doubts about whether it'd really be beneficial splitting out stuff like Selection Operators/3D Cursor/GPencil etc. actions on mouse clicks from hotkey invoked stuff. Especially since it's possible to still create conflicts by setting a normal key as a modifier for a mouse-action when that same key may be used elsewhere.
@VukGardasevic You're basically just describing the "View2D" system :P While we haven't actually tested using one View2D nested inside another one (i.e. they are currently only inline-attached to all ARegions), IIRC, there isn't actually stopping you from being able to use one like that. On that note, maybe I need to give this a go ;)
@PierreSchiller That's a separate issue. I'm not sure if it's currently on our todolist or not
Added subscriber: @brecht
This generally seems fine to me. I think the breadcrumbs at the top are unnecessary, it doesn't look like the nesting would need to be very deep.
If you go ahead with this, I suggest to implement it incrementally into blender2.8, don't make a big branch where you try to do everything. But rather finish it step by step, for example:
I'd love to see work on this (in fact, I already did some research), however I'm afraid it's much more complicated than this settings UI redesign. For example the new splash screen should contain a quick setup for special devices (3D mice, pen tablets, multi-touch screens, etc), we don't really know how to integrate such settings nicely yet. There are quite a few loose ends like this.
I'm familiar with what you proposed in other discussions, it's definitely a good start. I'd propose to make it a multi-page splash screen though, see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup#Splash_Screen.
You're more than welcome to create a proposal, just saying that this task is more tangible and that I'd like to focus on it first.
Correction: There should definitely still be a group for the keymap-editing, maybe call it "Shortcuts/Key-map" or so. What I wanted to say is that we should have one group just for keymap-editing, and separate groups for device specific options. That way we can keep the individual groups uncluttered & rather focused.
Think this is useful when the navigation region is hidden, or as a general hint. But indeed, it's a bit redundant.
Definitely +1. Actually wanted to do something like this, what I said about creating a prototype first may have been a bit misleading.
I think I'll actually go ahead and start working on this in the blender2.8 branch, just like @brecht suggested. There don't seem to be any bigger objections against the proposed changes :)
To be clear, by working directly in blender2.8 I meant committing safe/simpler changes directly and more complicated ones can still go through code review. I rather not have more half-finished stuff in blender2.8, but if each individual step is committed in a finished state that's fine.
Yes, that would be really helpful:)
Added subscriber: @pablovazquez
Awesome! Sorry I didn't have time to look into this before, was busy with the Code Quest.
I agree with pretty much everything mentioned here. I would even add to the "Outdated/aging design" rationale that the current design is legacy from Blender 2.27! (2.26 and previous all settings were together in a flat layout). A quick look just for history purposes:
To sum up:
For categories that have many subcategories, we can (in the future) look into nested sidebar navigation. See "Devices" in the video below.
Most settings could be ported as-is for the time being. And later re-design those that already have a sidebar + search, like add-ons.
This is how the current GNOME settings look like, much better than the previous approach:
vid_6523-2018-02-26_12.07.54.mp4
Still has issues though:
** The first item on the list here is WiFi, which on a Desktop computer usually is off, showing the "?" icon makes it look like there's something wrong.
Pretty excited about this! And can't wait to work on the simplified theme settings :)
Thanks @JulianEisel !
Added subscriber: @michaelknubben
Added subscriber: @mendio
Added subscriber: @JonDoe286
Added subscriber: @JulienKaspar
Redesign User Preferences for 2.8xto Redesign User PreferencesAdded subscriber: @0o00o0oo
Added subscriber: @WilliamReynish
UI tweak:
{F5716371, size=full}
We could make use of panels more places in Preferences, such as Themes, for example: {F5716572, size=full}
Made a (rough) implementation of the panel based layout for testing, which looks like this:
Patch for testing (Python only): P834
@JulianEisel Nice one. We could even add sub-panels here too, for things like the New F-Curve Defaults under Keyframing. This could be used to great effect many places.
As a test, I modified your Python file to do this:
@WilliamReynish suggested to go with the term "Preferences" rather than "Settings":
I agree with him, he makes a good point. So if nobody objects I'll change the term.
Agreed, let's change it to Preferences.
This issue was referenced by
dac747bd09
Here's a patch to add panels to all the areas of Preferences.
*Adds panels to Interface, Editing, Input, General and Files sections
*Split apart Input from keymap
*fixes the issue with the UI Scale widget glitching
*A few small tweaks
UserPreferences_panels.diff
Looks like this:
This looks great. @JulianEisel, I guess you can commit this to your branch and help reviewing it?
I think we should only commit this when it's in a finished state, since moving around items multiple times is annoying for users.
Some feedback from a quick test.
@brecht Agreed on all points.
Re. the header, it was a bit of an experiment. We need to define the role of the header here. Currently, the placement of the Editor type selector is clumsy in the middle, and it’s also weird that it defaults to being on the bottom.
We could either hide the header and move everything into the panels, or maybe put the header at the top, and make it span the entire width to put the Editor type selector at the far left. Although it will still be mostly empty then. That was why I thought to try and move everything out of the header, so that we could simply hide it by default.
@WilliamReynish and I continued work in the
userpref_redesign
branch. Mostly working on the panel/subpanel based layout.Current screenshots:
Hi @JulianEisel,
I've done some additional layout work on the Preferences from your branch.
Some screenies:
Narrow:
Wide:
Other examples of consistent 2.8-style layout:
Patch:
Preferences_layout_update.diff
From here, we should also make four other smaller changes, which I'm not immediately sure how to do;
With these four changes I would say this is good enough to merge into 2.8.
Looking pretty good so far, huge improvement. Only one small nitpicking.
The save button is perfectly aligned with the preference categories tabs, and is exactly the same size and style. It looks way too much like one of them despite being a completely different type of UI element.
This might be potentially dangerous for the user accidentally saving changes instead of switching tabs.
Perhaps always aligning it to the bottom of the window and adding some sort of save icon in it (like Install and Reset in the header) would suffice. A slightly different color or size could also help.
Would it be possible to remember preference window size when saving startup file? It is generally too small by default on large monitors, and it gets bothersome to resize it every time.
@DuarteRamos: Yes, for sure. It needs to be anchored to the bottom. It's just technically a bit harder to do, so I will leave that for @JulianEisel
@JulianEisel: Another small patch for Preferences against your latest updates in the branch:
Patch:
Preferences_layout_update2.diff
Another update to Preferences, against the latest preferences_redesign branch:
1: There was a theme conflict here where the side panel and the panel are the same color. I made the side panel brighter to fix this - it also has the benefit of communicating the higher place in the hierarchy.
Before:
After:
2: Further cleaning up of Input section. Before, the Mouse panel was outside the Devices panel. Now all device input settings are grouped together. (Mouse and Keyboard are expended by default)
3: There were two View manipulation panels: One in Interface section and another in the Input section. This has been the case since 2.5. But actually, these sections contain the exact same category of options. It made no sense that half of these options were in different sections. I have now consolidated these options and categorised them logically in Orbit, Zoom, Cursor and Fly/Walk - all under Input:
I also made the required re-org in RNA to match this.
4: The Save Preferences button.
While I still think anchoring it to the bottom of the side panel is neat, I also don’t particularly mind putting it in the header, aligned to the right. @JulianEisel If you want, you are still welcome to do it the other way, but if it’s too much work, this can work too I think:
It’s actually similar to your original proposal for it, and it has the nice benefit that it separates it more from the sections in the side panel. The downside is that then the header needs to be visible, which reveals the editor dropdown menu.
What do you think we should do here?
Patch:
Preferences_Layout_4.diff
PS: Another idea might be to move the Text section from System to Interface. Seems to make more sense as an Interface option to me. @JulianEisel @brecht Thoughts?
Your changes seem reasonable. I'll push them in a minute.
Regarding the save preferences button, I already started working on the separate region for it, it's not a big deal really. To differentiate the button from the navigation buttons, we could shade the background color slightly different, and/or make the button use a different size.
Regarding the text options: I agree these should be put into the Interface section. I think they used to be there to workaround issues on old graphics cards/drivers, that's changed now.
Some more thoughts as we get to a more final stage:
@JulianEisel: Great. Yes, the margins could be smarter. If the window is narrow, they could become smaller or disappear completely.
The addons file browser thing doesn't seem so bad to me. In the default size I see this:
In general though, the file browser in Blender could be made to open as a new temporary window by default. That would eliminate the need for the clumsy Back to Previous button, and it makes it much simpler to go back. Resizing the file browser then doesn't affect the Blender window it was spawned from.
But I see that as more of a general problem with the file browser than an issue that is specific to the addons.
Latest update is nice. I've made a few more tweaks here:
(updated Dec 27 '18)
Preferences_Layout_5.diff
Another thing that may be interesting eventually, is to improve the keymap editor with a keyboard-centric view to get an overview of which keys are bound to which commands. This gives a better overview than a simple list of commands.
You could then click on a key and assign a command. Something like this:
Added subscriber: @L0Lock
@WilliamReynish Would it be possible to make this keyboard-centric view automatically adapt to the user's keyboard layout (or at least the main qwerty and azerty)?
Changed status from 'Open' to: 'Resolved'
I've just committed
a77b63c569
with which I'd consider the Preferences redesign as done.From this task I think the only thing missing is the search, which can be added as general improvement. @WilliamReynish and I already planned to work on the workspace preferences UI next, but that will probably get its own task.
A note on theme settings: I'm well aware that the re-organized theme settings don't solve the underlying issue of overwhelming complexity. Much more drastic changes are needed for this. I'm personally trying to address this as part of my bWidgets project, which I hope to push quite a bit in 2019.
Closing this task, thanks everybody for the involvement!