all repos — openbox @ 687559cb2d8fce88d0d26223bb9468414a862ab7

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
#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 dx;
    int dy;
};

struct SendToDesktop {
    Client *c;
    guint desktop;
};

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;
};

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

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));
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_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(union ActionData *data);
/* MoveResizeRelative */
void action_resize_relative(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);
/* SendToDesktop */
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);

#endif