2 USING: kernel namespaces namespaces.lib math sequences vars mortar slot-accessors x ;
4 IN: x.widgets.wm.workspace
6 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
8 TUPLE: workspace windows ;
10 C: <workspace> workspace
14 VAR: current-workspace
16 : init-workspaces ( -- ) V{ } clone >workspaces ;
18 : add-workspace ( -- ) { } clone <workspace> workspaces> push ;
20 : mapped-windows ( -- seq )
21 dpy get $default-root <- children [ <- mapped? ] subset ;
23 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
25 : switch-to-workspace ( n -- )
26 mapped-windows current-workspace> workspaces> nth set-workspace-windows
27 mapped-windows [ <- unmap drop ] each
28 dup workspaces> nth workspace-windows [ <- map drop ] each
29 current-workspace set* ;
31 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
33 : next-workspace ( -- )
34 current-workspace> 1+ dup workspaces> length <
35 [ switch-to-workspace ] [ drop ] if ;
37 : prev-workspace ( -- )
38 current-workspace> 1- dup 0 >=
39 [ switch-to-workspace ] [ drop ] if ;
41 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
43 : setup-workspaces ( n -- )
46 [ init-workspaces [ add-workspace ] times 0 >current-workspace ]