vscode-marquee
vscode-marquee copied to clipboard
[💡 Feature]: Reduce settings
Is your feature request related to a problem?
I notice that marquee is trying to write a huge amount of configurations into setting.json (most of them are about layout, more than 2000 lines !!!). This is unacceptable and should be avoided.
I provide a short sample here
"marquee.configuration.modes": {
"default": {
"layouts": {
"lg": [
{
"w": 4,
"h": 12,
"x": 0,
"y": 0,
"i": "welcome",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 4,
"h": 12,
"x": 0,
"y": 12,
"i": "news",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 4,
"h": 12,
"x": 4,
"y": 12,
"i": "github",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 4,
"h": 12,
"x": 8,
"y": 12,
"i": "todo",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 4,
"h": 12,
"x": 8,
"y": 0,
"i": "weather",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 4,
"h": 12,
"x": 4,
"y": 0,
"i": "projects",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 6,
"h": 13,
"x": 6,
"y": 24,
"i": "notes",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
}
],
"md": [
{
"minW": 3,
"minH": 12,
"w": 3,
"h": 12,
"x": 0,
"y": 0,
"i": "welcome",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 4,
"h": 12,
"x": 6,
"y": 12,
"i": "todo",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 3,
"h": 12,
"x": 7,
"y": 0,
"i": "weather",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 3,
"h": 12,
"x": 3,
"y": 12,
"i": "github",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 3,
"h": 12,
"x": 0,
"y": 12,
"i": "news",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 5,
"h": 13,
"x": 0,
"y": 24,
"i": "snippets",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 5,
"h": 13,
"x": 5,
"y": 24,
"i": "notes",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 4,
"h": 12,
"x": 3,
"y": 0,
"i": "projects",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"static": false,
"moved": false,
"x": 0,
"y": 0,
"h": 12,
"w": 4,
"i": "npm-stats"
},
{
"minW": 3,
"minH": 12,
"static": false,
"moved": false,
"x": 0,
"y": 0,
"h": 12,
"w": 4,
"i": "markdown"
},
{
"minW": 3,
"minH": 12,
"static": false,
"moved": false,
"x": 0,
"y": 0,
"h": 12,
"w": 4,
"i": "stateful-dnd-widget"
},
{
"minW": 3,
"minH": 12,
"static": false,
"moved": false,
"x": 0,
"y": 0,
"h": 12,
"w": 4,
"i": "stateful-widget"
}
],
"sm": [
{
"minW": 3,
"minH": 12,
"w": 3,
"h": 12,
"x": 0,
"y": 0,
"i": "welcome",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 3,
"h": 12,
"x": 3,
"y": 24,
"i": "todo",
"moved": false,
"static": false
},
{
"minW": 3,
"minH": 12,
"w": 3,
"h": 12,
"x": 3,
"y": 12,
"i": "weather",
"moved": false,
"static": false
Describe the solution you'd like.
Put the layout settings in another place instead of setting.json.
Describe alternatives you've considered.
No response
Additional context
No response
Code of Conduct
- [X] I agree to follow this project's Code of Conduct
This is unacceptable and should be avoided.
Why is this unacceptable? I know it is a it annoying to have this large object within the settings.json but it is the recommended way for extension developers to store these kind of settings. Which place would you recommend?
This is unacceptable and should be avoided.
Why is this unacceptable? I know it is a it annoying to have this large object within the
settings.jsonbut it is the recommended way for extension developers to store these kind of settings. Which place would you recommend?
- Many developers (including me) are accustomed to modifying setting.json directly, it's annoying to find a key out of 2000 lines.
- I've installed more than 40 extensions, and my setting.json only has 160 lines before installing marquee. Many of them have UI features, but I have never found such a configuration before. I don't know how did they tackle their UI configuration, but it's clearly not a common practice.
- As you can easily figure out that most of the configuration of marquee is duplicate, for example
{
"w": 4,
"h": 12,
"x": 8,
"y": 12,
"i": "todo",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 4,
"h": 12,
"x": 8,
"y": 0,
"i": "weather",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
{
"w": 4,
"h": 12,
"x": 4,
"y": 0,
"i": "projects",
"minW": 3,
"minH": 12,
"moved": false,
"static": false
},
They share the same value of w, h, y, moved, static, etc. which is clearly improbable. 4. Even for vscode itself, there are many configurable UI features, (for example, width of panels, the position of panels), but vscode never saves it in setting.json. 5. I've opened setting sync, which means that if I modify marquee UI, the setting will be synchronized to other machines, even if such a setting is not suited for that machine. None of the existing extensions I know will try to synchronize UI settings across machines.
+1 @ThyrixYang
I'll cut right to the more objective reason for a change here: the vast majority of this JSON is not settings.
Let us consider the default screen that I see as a first time (and otherwise happy!) Marquee user:

What about this is truly MY SETTINGS vs. configuration specific to the Marquee extension itself:
{
"name": "", // For "Hi, name here...",
"widgets": [
["welcome", "projects", "weather"],
["news", "github", "todo"],
["snippets", "notes"]
]
}
Now recall that I said that was accurate for new users, because they have not yet moved or resized any of the widgets. The moment one of them is moved or resized the shorthand row-major storage I've used above no longer works.
Why have it at all?
Overall the underlying issue here is not so much about bloat in the JSON Marquee stores within user settings, but why Marquee needs that information at all.
It is needed today because of the widget arrangement UI reminiscent of WYSIWYG website builders. And – just like those WYSIWYG website builders – it struggles with the complexities of responsive design across viewport sizes.
If instead we consider a few alternative strawperson proposals:
- Rows & Columns Using a grid based system where rows & columns can be added, removed, or resized. Then the above shorthand, plus the size of each row & column would be sufficient.
- Named layouts with a separate layout editor Ship with a fixed number of named layouts (e.g.
2x2,2x2 + headline,3x3) that cannot be resized. Then the above shorthand, plus the layout name would be sufficient
p.s. 👋 @christian-bromann, appreciate all the hard work that went into Marquee. Really enjoying it overall!
Thanks @indexzero - we totally get it. We're going to prioritize getting a solution sorted out for this. 👍
@ThyrixYang We have released changes to Marquee as an Edge version. You can install it through the marketplace, want to give it a spin and let us know if the version works for you?