wlmaker
Loading...
Searching...
No Matches
Typedefs | Enumerations | Functions | Variables
workspace.h File Reference
#include <stdbool.h>
#include <stdint.h>
#include <libbase/libbase.h>
#include "element.h"
#include "layer.h"
#include "root.h"
#include "tile.h"
#include "window.h"
Include dependency graph for workspace.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef struct _wlmtk_workspace_t wlmtk_workspace_t
 

Enumerations

enum  wlmtk_workspace_layer_t { WLMTK_WORKSPACE_LAYER_BACKGROUND = 0 , WLMTK_WORKSPACE_LAYER_BOTTOM = 1 , WLMTK_WORKSPACE_LAYER_TOP = 3 , WLMTK_WORKSPACE_LAYER_OVERLAY = 4 }
 

Functions

wlmtk_workspace_twlmtk_workspace_create (struct wlr_output_layout *wlr_output_layout_ptr, const char *name_ptr, const wlmtk_tile_style_t *tile_style_ptr)
 
void wlmtk_workspace_destroy (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_set_details (wlmtk_workspace_t *workspace_ptr, int index)
 
void wlmtk_workspace_get_details (wlmtk_workspace_t *workspace_ptr, const char **name_ptr_ptr, int *index_ptr)
 
struct wlr_box wlmtk_workspace_get_maximize_extents (wlmtk_workspace_t *workspace_ptr, struct wlr_output *wlr_output_ptr)
 
struct wlr_box wlmtk_workspace_get_fullscreen_extents (wlmtk_workspace_t *workspace_ptr, struct wlr_output *wlr_output_ptr)
 
void wlmtk_workspace_confine_within (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr)
 
struct wlr_output_layout * wlmtk_workspace_get_wlr_output_layout (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_enable (wlmtk_workspace_t *workspace_ptr, bool enabled)
 
bool wlmtk_workspace_enabled (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_map_window (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr)
 
void wlmtk_workspace_unmap_window (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr)
 
wlmtk_layer_twlmtk_workspace_get_layer (wlmtk_workspace_t *workspace_ptr, wlmtk_workspace_layer_t layer)
 
bs_dllist_t * wlmtk_workspace_get_windows_dllist (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_window_to_fullscreen (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr, bool fullscreen)
 
void wlmtk_workspace_begin_window_move (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr)
 
void wlmtk_workspace_begin_window_resize (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr, uint32_t edges)
 
void wlmtk_workspace_activate_window (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr)
 
wlmtk_window_twlmtk_workspace_get_activated_window (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_activate_previous_window (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_activate_next_window (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_raise_window (wlmtk_workspace_t *workspace_ptr, wlmtk_window_t *window_ptr)
 
wlmtk_element_twlmtk_workspace_element (wlmtk_workspace_t *workspace_ptr)
 
wlmtk_root_twlmtk_workspace_get_root (wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_workspace_set_root (wlmtk_workspace_t *workspace_ptr, wlmtk_root_t *root_ptr)
 
bs_dllist_node_t * wlmtk_dlnode_from_workspace (wlmtk_workspace_t *workspace_ptr)
 
wlmtk_workspace_twlmtk_workspace_from_dlnode (bs_dllist_node_t *dlnode_ptr)
 

Variables

const bs_test_case_t wlmtk_workspace_test_cases []
 

Detailed Description

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Typedef Documentation

◆ wlmtk_workspace_t

State of the workspace.

Enumeration Type Documentation

◆ wlmtk_workspace_layer_t

Indicates which layer the view shall be rendered in.

See enum layer at: https://wayland.app/protocols/wlr-layer-shell-unstable-v1.

Function Documentation

◆ wlmtk_dlnode_from_workspace()

bs_dllist_node_t * wlmtk_dlnode_from_workspace ( wlmtk_workspace_t workspace_ptr)
Returns
Pointer to wlmtk_workspace_t::dlnode.

◆ wlmtk_workspace_activate_next_window()

void wlmtk_workspace_activate_next_window ( wlmtk_workspace_t workspace_ptr)

Activates the wlmtk_window_t after the currently activated one.

Intended to permit cycling through tasks. Will activate the window, but not raise it. See wlmtk_workspace_activate_previous_window.

Parameters
workspace_ptr

◆ wlmtk_workspace_activate_previous_window()

void wlmtk_workspace_activate_previous_window ( wlmtk_workspace_t workspace_ptr)

Activates the wlmtk_window_t before the currently activated one.

Intended to permit cycling through tasks. Will activate the window, but not raise it. See wlmtk_workspace_activate_next_window.

Parameters
workspace_ptr

◆ wlmtk_workspace_activate_window()

void wlmtk_workspace_activate_window ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr 
)

Acticates window_ptr. Will de-activate an earlier window.

◆ wlmtk_workspace_begin_window_move()

void wlmtk_workspace_begin_window_move ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr 
)

Initiates a 'move' for the window.

Parameters
workspace_ptr
window_ptr

◆ wlmtk_workspace_begin_window_resize()

void wlmtk_workspace_begin_window_resize ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr,
uint32_t  edges 
)

Initiates a 'resize' for the window.

Parameters
workspace_ptr
window_ptr
edges

◆ wlmtk_workspace_confine_within()

void wlmtk_workspace_confine_within ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr 
)

Confines the window to remain entirely within workspace extents.

A no-op if window_ptr is not mapped to workspace_ptr.

Parameters
workspace_ptr
window_ptr

◆ wlmtk_workspace_create()

wlmtk_workspace_t * wlmtk_workspace_create ( struct wlr_output_layout *  wlr_output_layout_ptr,
const char *  name_ptr,
const wlmtk_tile_style_t tile_style_ptr 
)

Creates a workspace.

Parameters
wlr_output_layout_ptrOutput layout. Must outlive the workspace.
name_ptr
tile_style_ptr
Returns
Pointer to the workspace state, or NULL on error. Must be free'd via wlmtk_workspace_destroy.

◆ wlmtk_workspace_destroy()

void wlmtk_workspace_destroy ( wlmtk_workspace_t workspace_ptr)

Destroys the workspace. Will destroy any stil-contained element.

Parameters
workspace_ptr

◆ wlmtk_workspace_element()

wlmtk_element_t * wlmtk_workspace_element ( wlmtk_workspace_t workspace_ptr)
Returns
Pointer to wlmtk_workspace_t::super_container::super_element.

◆ wlmtk_workspace_enable()

void wlmtk_workspace_enable ( wlmtk_workspace_t workspace_ptr,
bool  enabled 
)

Enabled or disables the workspace.

An enabled workspace can have keyboard focus and activated windows. When re-enabling a workspace, the formerly activated window will get re-activated and re-gains keyboard focus.

Parameters
workspace_ptr
enabled

◆ wlmtk_workspace_enabled()

bool wlmtk_workspace_enabled ( wlmtk_workspace_t workspace_ptr)
Returns
whether this workspace is enabled.

◆ wlmtk_workspace_from_dlnode()

wlmtk_workspace_t * wlmtk_workspace_from_dlnode ( bs_dllist_node_t *  dlnode_ptr)
Returns
Poitner to the wlmtk_workspace_t of the dlnode_ptr.

◆ wlmtk_workspace_get_activated_window()

wlmtk_window_t * wlmtk_workspace_get_activated_window ( wlmtk_workspace_t workspace_ptr)
Returns
Pointer to the activated wlmtk_window_t, if any.

◆ wlmtk_workspace_get_details()

void wlmtk_workspace_get_details ( wlmtk_workspace_t workspace_ptr,
const char **  name_ptr_ptr,
int *  index_ptr 
)

Retrieves the naming details of this workspace.

Parameters
workspace_ptr
name_ptr_ptr
index_ptr

◆ wlmtk_workspace_get_fullscreen_extents()

struct wlr_box wlmtk_workspace_get_fullscreen_extents ( wlmtk_workspace_t workspace_ptr,
struct wlr_output *  wlr_output_ptr 
)

Returns the extents of the workspace available for fullscreen windows.

Parameters
workspace_ptr
wlr_output_ptrOutput to lookup the extents for. May be NULL, in which case the primary output is used.
Returns
A struct wlr_box that lines out the available space and position.

◆ wlmtk_workspace_get_layer()

wlmtk_layer_t * wlmtk_workspace_get_layer ( wlmtk_workspace_t workspace_ptr,
wlmtk_workspace_layer_t  layer 
)

Returns pointer to the wlmtk_layer_t handle serving layer.

Parameters
workspace_ptr
layer
Returns
Pointer to the layer state.

◆ wlmtk_workspace_get_maximize_extents()

struct wlr_box wlmtk_workspace_get_maximize_extents ( wlmtk_workspace_t workspace_ptr,
struct wlr_output *  wlr_output_ptr 
)

Returns the workspace'soutput extents available for maximized windows.

Parameters
workspace_ptr
wlr_output_ptrOutput to lookup the extents for. May be NULL, in which case the primary output is used.
Returns
A struct wlr_box that lines out the available space and position.

◆ wlmtk_workspace_get_root()

wlmtk_root_t * wlmtk_workspace_get_root ( wlmtk_workspace_t workspace_ptr)
Returns
pointer to the anchor wlmtk_root_t of workspace_ptr.

◆ wlmtk_workspace_get_windows_dllist()

bs_dllist_t * wlmtk_workspace_get_windows_dllist ( wlmtk_workspace_t workspace_ptr)

Returns the bs_dllist_t of currently mapped windows.

Parameters
workspace_ptr
Returns
A pointer to the list. Note that the list should not be manipulated directly. It's contents can change on wlmtk_workspace_map_window or wlmtk_workspace_unmap_window calls.

◆ wlmtk_workspace_get_wlr_output_layout()

struct wlr_output_layout * wlmtk_workspace_get_wlr_output_layout ( wlmtk_workspace_t workspace_ptr)

◆ wlmtk_workspace_map_window()

void wlmtk_workspace_map_window ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr 
)

Maps the window: Adds it to the workspace container and makes it visible.

Parameters
workspace_ptr
window_ptr

◆ wlmtk_workspace_raise_window()

void wlmtk_workspace_raise_window ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr 
)

Raises window_ptr: Will show it atop all other windows.

◆ wlmtk_workspace_set_details()

void wlmtk_workspace_set_details ( wlmtk_workspace_t workspace_ptr,
int  index 
)

Sets or updates workspace details.

Parameters
workspace_ptr
index

◆ wlmtk_workspace_set_root()

void wlmtk_workspace_set_root ( wlmtk_workspace_t workspace_ptr,
wlmtk_root_t root_ptr 
)
protected

Sets the anchor wlmtk_root_t of workspace_ptr.

Must only be called from wlmtk_root_t.

Parameters
workspace_ptr
root_ptr

◆ wlmtk_workspace_unmap_window()

void wlmtk_workspace_unmap_window ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr 
)

Unmaps the window: Sets it as invisible and removes it from the container.

Parameters
workspace_ptr
window_ptr

◆ wlmtk_workspace_window_to_fullscreen()

void wlmtk_workspace_window_to_fullscreen ( wlmtk_workspace_t workspace_ptr,
wlmtk_window_t window_ptr,
bool  fullscreen 
)

Promotes the window to the fullscreen layer (or back).

To be called by wlmtk_window_commit_fullscreen.

Parameters
workspace_ptr
window_ptr
fullscreen

Variable Documentation

◆ wlmtk_workspace_test_cases

const bs_test_case_t wlmtk_workspace_test_cases[]
extern

Unit tests for the workspace.