mirror of
https://github.com/labwc/labwc.git
synced 2026-02-26 01:40:22 -05:00
workspaces: Implement config parsing
This commit is contained in:
parent
d557623c34
commit
ae2fa1571b
3 changed files with 63 additions and 0 deletions
|
|
@ -88,6 +88,7 @@ The rest of this man page describes configuration options.
|
||||||
Raise window to top when focused. Default is no.
|
Raise window to top when focused. Default is no.
|
||||||
|
|
||||||
## WINDOW SNAPPING
|
## WINDOW SNAPPING
|
||||||
|
|
||||||
*<snapping><range>*
|
*<snapping><range>*
|
||||||
The distance in pixels from the edge of an ouput for window Move
|
The distance in pixels from the edge of an ouput for window Move
|
||||||
operations to trigger SnapToEdge. A range of 0 disables window snapping.
|
operations to trigger SnapToEdge. A range of 0 disables window snapping.
|
||||||
|
|
@ -96,6 +97,18 @@ The rest of this man page describes configuration options.
|
||||||
*<snapping><topMaximize>* [yes|no]
|
*<snapping><topMaximize>* [yes|no]
|
||||||
Maximize window if Move operation ends on the top edge. Default is yes.
|
Maximize window if Move operation ends on the top edge. Default is yes.
|
||||||
|
|
||||||
|
## WORKSPACES
|
||||||
|
|
||||||
|
*<desktops><names><name>*
|
||||||
|
Define workspaces. A workspace covers all outputs. The OSD only shows
|
||||||
|
windows on the current workspace. Workspaces can be switched to with
|
||||||
|
GoToDesktop and windows can be moved with SendToDesktop. See
|
||||||
|
labwc-actions(5) for more information about their arguments.
|
||||||
|
|
||||||
|
*<desktops><popupTime>*
|
||||||
|
Define the timeout after which to hide the workspace OSD.
|
||||||
|
A setting of 0 disables the OSD. Default is 1000 ms.
|
||||||
|
|
||||||
## THEME
|
## THEME
|
||||||
|
|
||||||
*<theme><name>*
|
*<theme><name>*
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,32 @@
|
||||||
<topMaximize>yes</topMaximize>
|
<topMaximize>yes</topMaximize>
|
||||||
</snapping>
|
</snapping>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Use GoToDesktop left | right to switch workspaces.
|
||||||
|
Use SendToDesktop left | right to move windows.
|
||||||
|
See man labwc-actions for futher information.
|
||||||
|
|
||||||
|
Workspaces can be configured like this:
|
||||||
|
<desktops>
|
||||||
|
<popupTime>1000</popupTime>
|
||||||
|
<names>
|
||||||
|
<name>Workspace 1</name>
|
||||||
|
<name>Workspace 2</name>
|
||||||
|
<name>Workspace 3</name>
|
||||||
|
</names>
|
||||||
|
</desktops>
|
||||||
|
-->
|
||||||
|
<desktops>
|
||||||
|
<!--
|
||||||
|
popupTime defaults to 1000 so could be left out.
|
||||||
|
Set to 0 to completely disable the workspace OSD.
|
||||||
|
-->
|
||||||
|
<popupTime>1000</popupTime>
|
||||||
|
<names>
|
||||||
|
<name>Default</name>
|
||||||
|
</names>
|
||||||
|
</desktops>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Keybind actions are specified in labwc-actions(5)
|
Keybind actions are specified in labwc-actions(5)
|
||||||
The following keybind modifiers are supported:
|
The following keybind modifiers are supported:
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
#include "config/libinput.h"
|
#include "config/libinput.h"
|
||||||
#include "config/mousebind.h"
|
#include "config/mousebind.h"
|
||||||
#include "config/rcxml.h"
|
#include "config/rcxml.h"
|
||||||
|
#include "workspaces.h"
|
||||||
|
|
||||||
static bool in_keybind;
|
static bool in_keybind;
|
||||||
static bool in_mousebind;
|
static bool in_mousebind;
|
||||||
|
|
@ -387,6 +388,12 @@ entry(xmlNode *node, char *nodename, char *content)
|
||||||
rc.snap_top_maximize = get_bool(content);
|
rc.snap_top_maximize = get_bool(content);
|
||||||
} else if (!strcasecmp(nodename, "cycleViewPreview.core")) {
|
} else if (!strcasecmp(nodename, "cycleViewPreview.core")) {
|
||||||
rc.cycle_preview_contents = get_bool(content);
|
rc.cycle_preview_contents = get_bool(content);
|
||||||
|
} else if (!strcasecmp(nodename, "name.names.desktops")) {
|
||||||
|
struct workspace *workspace = calloc(1, sizeof(struct workspace));
|
||||||
|
workspace->name = strdup(content);
|
||||||
|
wl_list_insert(rc.workspace_config.workspaces.prev, &workspace->link);
|
||||||
|
} else if (!strcasecmp(nodename, "popupTime.desktops")) {
|
||||||
|
rc.workspace_config.popuptime = atoi(content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -486,6 +493,8 @@ rcxml_init()
|
||||||
rc.snap_edge_range = 1;
|
rc.snap_edge_range = 1;
|
||||||
rc.snap_top_maximize = true;
|
rc.snap_top_maximize = true;
|
||||||
rc.cycle_preview_contents = false;
|
rc.cycle_preview_contents = false;
|
||||||
|
rc.workspace_config.popuptime = INT_MIN;
|
||||||
|
wl_list_init(&rc.workspace_config.workspaces);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
|
|
@ -620,6 +629,14 @@ post_processing(void)
|
||||||
struct libinput_category *l = libinput_category_create();
|
struct libinput_category *l = libinput_category_create();
|
||||||
l->type = TOUCH_DEVICE;
|
l->type = TOUCH_DEVICE;
|
||||||
}
|
}
|
||||||
|
if (!wl_list_length(&rc.workspace_config.workspaces)) {
|
||||||
|
struct workspace *workspace = calloc(1, sizeof(struct workspace));
|
||||||
|
workspace->name = strdup("Default");
|
||||||
|
wl_list_insert(rc.workspace_config.workspaces.prev, &workspace->link);
|
||||||
|
}
|
||||||
|
if (rc.workspace_config.popuptime == INT_MIN) {
|
||||||
|
rc.workspace_config.popuptime = 1000;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -718,6 +735,13 @@ rcxml_finish(void)
|
||||||
zfree(l);
|
zfree(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct workspace *w, *w_tmp;
|
||||||
|
wl_list_for_each_safe(w, w_tmp, &rc.workspace_config.workspaces, link) {
|
||||||
|
wl_list_remove(&w->link);
|
||||||
|
zfree(w->name);
|
||||||
|
zfree(w);
|
||||||
|
}
|
||||||
|
|
||||||
/* Reset state vars for starting fresh when Reload is triggered */
|
/* Reset state vars for starting fresh when Reload is triggered */
|
||||||
current_keybind = NULL;
|
current_keybind = NULL;
|
||||||
current_mousebind = NULL;
|
current_mousebind = NULL;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue