]> gitweb.factorcode.org Git - factor.git/blob - extra/x/widgets/wm/workspace/workspace.factor
Initial import
[factor.git] / extra / x / widgets / wm / workspace / workspace.factor
1
2 USING: kernel namespaces namespaces.lib math sequences vars mortar slot-accessors x ;
3
4 IN: x.widgets.wm.workspace
5
6 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7
8 TUPLE: workspace windows ;
9
10 C: <workspace> workspace
11
12 VAR: workspaces
13
14 VAR: current-workspace
15
16 : init-workspaces ( -- ) V{ } clone >workspaces ;
17
18 : add-workspace ( -- ) { } clone <workspace> workspaces> push ;
19
20 : mapped-windows ( -- seq )
21 dpy get $default-root <- children [ <- mapped? ] subset ;
22
23 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
24
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* ;
30
31 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
32
33 : next-workspace ( -- )
34 current-workspace> 1+ dup workspaces> length <
35 [ switch-to-workspace ] [ drop ] if ;
36
37 : prev-workspace ( -- )
38 current-workspace> 1- dup 0 >=
39 [ switch-to-workspace ] [ drop ] if ;
40
41 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
42
43 : setup-workspaces ( n -- )
44 workspaces>
45   [ drop ]
46   [ init-workspaces [ add-workspace ] times 0 >current-workspace ]
47 if ;