Added workspace ID in GET_WORKSPACES response.

This commit is contained in:
Iskustvo 2020-01-07 02:32:18 +01:00
parent d341b91b0a
commit 5835bbc385
4 changed files with 14 additions and 0 deletions

View File

@ -164,6 +164,10 @@ sending a reply. Expect the socket to be shut down.
The reply consists of a serialized list of workspaces. Each workspace has the The reply consists of a serialized list of workspaces. Each workspace has the
following properties: following properties:
id (integer)::
The internal ID (actually a C pointer value) of this container. Do not
make any assumptions about it. You can use it to (re-)identify and
address containers when talking to i3.
num (integer):: num (integer)::
The logical number of the workspace. Corresponds to the command The logical number of the workspace. Corresponds to the command
to switch to this workspace. For named workspaces, this will be -1. to switch to this workspace. For named workspaces, this will be -1.

View File

@ -30,6 +30,7 @@ void parse_workspaces_json(char *json);
void free_workspaces(void); void free_workspaces(void);
struct i3_ws { struct i3_ws {
uintptr_t id; /* Workspace ID - C pointer to a workspace container */
int num; /* The internal number of the ws */ int num; /* The internal number of the ws */
char *canonical_name; /* The true name of the ws according to the ipc */ char *canonical_name; /* The true name of the ws according to the ipc */
i3String *name; /* The name of the ws that is displayed on the bar */ i3String *name; /* The name of the ws that is displayed on the bar */

View File

@ -61,6 +61,12 @@ static int workspaces_boolean_cb(void *params_, int val) {
static int workspaces_integer_cb(void *params_, long long val) { static int workspaces_integer_cb(void *params_, long long val) {
struct workspaces_json_params *params = (struct workspaces_json_params *)params_; struct workspaces_json_params *params = (struct workspaces_json_params *)params_;
if (!strcmp(params->cur_key, "id")) {
params->workspaces_walk->id = val;
FREE(params->cur_key);
return 1;
}
if (!strcmp(params->cur_key, "num")) { if (!strcmp(params->cur_key, "num")) {
params->workspaces_walk->num = (int)val; params->workspaces_walk->num = (int)val;
FREE(params->cur_key); FREE(params->cur_key);

View File

@ -906,6 +906,9 @@ IPC_HANDLER(get_workspaces) {
assert(ws->type == CT_WORKSPACE); assert(ws->type == CT_WORKSPACE);
y(map_open); y(map_open);
ystr("id");
y(integer, (uintptr_t)ws);
ystr("num"); ystr("num");
y(integer, ws->num); y(integer, ws->num);