all repos — openbox @ 4d5885d271d4943636e7e775492e8f4bd7fe8a84

openbox fork - make it a bit more like ryudo

openbox/action.h (raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#ifndef __action_h
#define __action_h

#include "client.h"

/* These have to all have a Client* at the top even if they don't use it, so
   that I can set it blindly later on. So every function will have a Client*
   available (possibly NULL though) if it wants it.
*/

struct AnyAction {
    Client *c;
};

struct Execute {
    Client *c;
    char *path;
};

struct ClientAction {
    Client *c;
};

struct MoveResizeRelative {
    Client *c;
    int delta;
};

struct SendToNextPreviousDesktop {
    Client *c;
    gboolean wrap;
    gboolean follow;
};

struct Desktop {
    Client *c;
    guint desk;
};

struct NextPreviousDesktop {
    Client *c;
    gboolean wrap;
};

struct Move {
    Client *c;
    int x;
    int y;
    gboolean final;
};

struct Resize {
    Client *c;
    int x;
    int y;
    gboolean final;
    Corner corner;
};

struct ShowMenu {
    Client *c;
    char * menuName;
};

union ActionData {
    struct AnyAction any;
    struct Execute execute;
    struct ClientAction client;
    struct MoveResizeRelative relative;
    struct SendToNextPreviousDesktop sendtonextprev;
    struct Desktop desktop;
    struct NextPreviousDesktop nextprevdesktop;
    struct Move move;
    struct Resize resize;
    struct ShowMenu showMenu;
};

typedef struct {
    /* The func member acts like an enum to tell which one of the structs in
       the data union are valid.
    */
    void (*func)(union ActionData *data);
    union ActionData data;
} Action;

Action *action_new(void (*func)(union ActionData *data));

/* Creates a new Action from the name of the action
   A few action types need data set after making this call still. Check if
   the returned action's "func" is one of these.
   action_execute - the path needs to be set
   action_restart - the path can optionally be set
   action_desktop - the destination desktop needs to be set
   action_move_relative_horz - the delta
   action_move_relative_vert - the delta
   action_resize_relative_horz - the delta
   action_resize_relative_vert - the delta
*/
Action *action_from_string(char *name);
void action_free(Action *a);

/* Execute */
void action_execute(union ActionData *data);
/* ClientAction */
void action_focus(union ActionData *data);
/* ClientAction */
void action_unfocus(union ActionData *data);
/* ClientAction */
void action_iconify(union ActionData *data);
/* ClientAction */
void action_raise(union ActionData *data);
/* ClientAction */
void action_lower(union ActionData *data);
/* ClientAction */
void action_focusraise(union ActionData *data);
/* ClientAction */
void action_close(union ActionData *data);
/* ClientAction */
void action_kill(union ActionData *data);
/* ClientAction */
void action_shade(union ActionData *data);
/* ClientAction */
void action_shadelower(union ActionData *data);
/* ClientAction */
void action_unshaderaise(union ActionData *data);
/* ClientAction */
void action_unshade(union ActionData *data);
/* ClientAction */
void action_toggle_shade(union ActionData *data);
/* ClientAction */
void action_toggle_omnipresent(union ActionData *data);
/* MoveResizeRelative */
void action_move_relative_horz(union ActionData *data);
/* MoveResizeRelative */
void action_move_relative_vert(union ActionData *data);
/* MoveResizeRelative */
void action_resize_relative_horz(union ActionData *data);
/* MoveResizeRelative */
void action_resize_relative_vert(union ActionData *data);
/* ClientAction */
void action_maximize_full(union ActionData *data);
/* ClientAction */
void action_unmaximize_full(union ActionData *data);
/* ClientAction */
void action_toggle_maximize_full(union ActionData *data);
/* ClientAction */
void action_maximize_horz(union ActionData *data);
/* ClientAction */
void action_unmaximize_horz(union ActionData *data);
/* ClientAction */
void action_toggle_maximize_horz(union ActionData *data);
/* ClientAction */
void action_maximize_vert(union ActionData *data);
/* ClientAction */
void action_unmaximize_vert(union ActionData *data);
/* ClientAction */
void action_toggle_maximize_vert(union ActionData *data);
/* Desktop */
void action_send_to_desktop(union ActionData *data);
/* SendToNextPreviousDesktop */
void action_send_to_next_desktop(union ActionData *data);
/* SendToNextPreviousDesktop */
void action_send_to_previous_desktop(union ActionData *data);
/* Desktop */
void action_desktop(union ActionData *data);
/* NextPreviousDesktop */
void action_next_desktop(union ActionData *data);
/* NextPreviousDesktop */
void action_previous_desktop(union ActionData *data);
/* NextPreviousDesktop */
void action_next_desktop_column(union ActionData *data);
/* NextPreviousDesktop */
void action_previous_desktop_column(union ActionData *data);
/* NextPreviousDesktop */
void action_next_desktop_row(union ActionData *data);
/* NextPreviousDesktop */
void action_previous_desktop_row(union ActionData *data);
/* ClientAction */
void action_toggle_decorations(union ActionData *data);
/* Move */
void action_move(union ActionData *data);
/* Resize */
void action_resize(union ActionData *data);
/* Execute */
void action_restart(union ActionData *data);
/* Any */
void action_exit(union ActionData *data);
/* ShowMenu */
void action_showmenu(union ActionData *data);
#endif