PaperWM
PaperWM copied to clipboard
Add workspace configuration (name, icon, directory etc.)
Configuration
A workspace should have a customizable configuration, which at least includes a name, an icon, a color and a workspace folder
.
Icon, colors and name
It's possible to provide a default icon ala. github avatars, and a default color chosen from a color palette.
The icon and name should be displayed in the statusbar, clicking on it should give you access to the configuration and other workspace related things, eg. notes.
Chapters/separators
Separators should be available to give a workspace internal structure. Like tabs in paper binders. Separators should be foldable.
Replacing the Actvities
text with the workspace name seems like a good idea. Clicking on the workspace name takes you to the workspace overview, which seems very sane.
We need a way to configure a workspace however, at its most basic changing the name. Triggering a menu on a right click might be good way to do this resulting in a menu like this (This is the Applications menu
extension):
Another option is having a configuration button/icon to click.
Technical: GSettings/dconf does not seem to have a decent mechanism for storing lists of composite types (sub-schemas) meaning it is not straight forward to use it for per-workspace configuration storage.
There is the `list-of" stuff: https://gitlab.gnome.org/GNOME/glib/commit/900a756e8fb70bcd6e725f0696d8094a7208f905 but it doesn't really seems to be properly supported.
It's miiight also be possible to create "schema-less" children using relocatable schemas and https://developer.gnome.org/gio/stable/GSettings.html#g-settings-new-full but I haven't quite managed to get it working.
Note-to-self:
- https://www.mail-archive.com/[email protected]/msg11753.html
- https://bugzilla.gnome.org/show_bug.cgi?id=622126
- https://bugzilla.gnome.org/show_bug.cgi?id=791781
More specifically this is some working code:
let gschema = Gio.SettingsSchemaSource.new_from_directory(
GLib.build_filenamev([Extension.path, "schemas"]),
Gio.SettingsSchemaSource.get_default(),
false
)
let settings = gschema.lookup("org.gnome.shell.extensions.org-scrollwm.Workspace", true);
let workspaceSettings = new Gio.Settings({
settings_schema: settings, path: '/org/gnome/shell/extensions/org-scrollwm/workspace/foo/'});
workspaceSettings.set_string('name', 'foo');
We probably also need a static list of workspace names/ids.
Workspace directory done: #185
Hey all,
I note workspace settings are larlgey done. I also note that this issue has some interesting ideas re chapters/separators within a workspace.
I'm happy with the workspace settings as they stand, and I admit I don't fully understand the chapters/separators idea. Are others still interested in this (and might be able to take a stab and fleshing this out)?
Comments thoughts welcome.
My guess regarding chapters/separators is that you put in a vertical bar at a specific location, possibly with a label/tag attached and maybe a colour. All windows after the separator will belong to that chapter until it reaches another chapter or the end.
This chapter can be folded and will then only display this bar and hide all windows that is part of this chapter.
It definitely sounds like an interesting idea.
Thanks @terlar, sounds cool (but quite complex) and I'm not sure I see the value in doing this (as opposed to just keeping windows in workspaces). I'll add a help wanted
label in case some kind soul decides this is worth the effort and want to give this one a go!
The workspaces directory thingy is a great idea doesn't seem to work? i set a directory but it has no effect on terminals, etc. Maybe I'm missing something?