Implemented configurable scratchpad size.
Patch status: rejected
Patch by Matthias Fulz
To apply this patch, use:
curl http://cr.i3wm.org/patch/639/raw.patch | git am
b/include/config.h
| 17 |
@@ -183,6 +183,10 @@ struct Config {
|
| 18 |
int32_t floating_minimum_width;
|
| 19 |
int32_t floating_minimum_height;
|
| 20 |
|
| 21 |
+ /** Scratchpad size in percent of the size of the output screen */
|
| 22 |
+ float scratchpad_width_percent;
|
| 23 |
+ float scratchpad_height_percent;
|
| 24 |
+
|
| 25 |
/* Color codes are stored here */
|
| 26 |
struct config_client {
|
| 27 |
uint32_t background;
|
b/parser-specs/config.spec
| 32 |
@@ -47,6 +47,8 @@ state INITIAL:
|
| 33 |
-> COLOR_SINGLE
|
| 34 |
colorclass = 'client.focused_inactive', 'client.focused', 'client.unfocused', 'client.urgent'
|
| 35 |
-> COLOR_BORDER
|
| 36 |
+ 'scratchpad_width_percent' -> SCRATCHPAD_WIDTH_PERCENT
|
| 37 |
+ 'scratchpad_height_percent' -> SCRATCHPAD_HEIGHT_PERCENT
|
| 38 |
|
| 39 |
# We ignore comments and 'set' lines (variables).
|
| 40 |
state IGNORE_LINE:
|
| 41 |
@@ -474,3 +476,13 @@ state BAR_COLORS_TEXT:
|
| 42 |
-> call cfg_bar_color($colorclass, $border, $background, NULL); BAR_COLORS
|
| 43 |
text = word
|
| 44 |
-> call cfg_bar_color($colorclass, $border, $background, $text); BAR_COLORS
|
| 45 |
+
|
| 46 |
+# scratchpad width in percent of output screen
|
| 47 |
+state SCRATCHPAD_WIDTH_PERCENT:
|
| 48 |
+ width = number
|
| 49 |
+ -> call cfg_scratchpad_width_percent(&width)
|
| 50 |
+
|
| 51 |
+state SCRATCHPAD_HEIGHT_PERCENT:
|
| 52 |
+ height = number
|
| 53 |
+ -> call cfg_scratchpad_height_percent(&height)
|
| 54 |
+
|
b/src/config.c
| 59 |
@@ -258,6 +258,10 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath,
|
| 60 |
/* Set default_orientation to NO_ORIENTATION for auto orientation. */
|
| 61 |
config.default_orientation = NO_ORIENTATION;
|
| 62 |
|
| 63 |
+ /* Set defualt scratchpad size */
|
| 64 |
+ config.scratchpad_width_percent = 0.5;
|
| 65 |
+ config.scratchpad_height_percent = 0.75;
|
| 66 |
+
|
| 67 |
/* Set default urgency reset delay to 500ms */
|
| 68 |
if (config.workspace_urgency_timer == 0)
|
| 69 |
config.workspace_urgency_timer = 0.5;
|
b/src/config_directives.c
| 74 |
@@ -394,6 +394,24 @@ CFGFUN(color, const char *colorclass, const char *border, const char *background
|
| 75 |
#undef APPLY_COLORS
|
| 76 |
}
|
| 77 |
|
| 78 |
+CFGFUN(scratchpad_width_percent, const long width) {
|
| 79 |
+ config.scratchpad_width_percent = width * 0.01;
|
| 80 |
+ // not sure, shall we check the size?
|
| 81 |
+ if(config.scratchpad_width_percent > 1.0)
|
| 82 |
+ config.scratchpad_width_percent = 1.0;
|
| 83 |
+ else if(config.scratchpad_width_percent < 0.05)
|
| 84 |
+ config.scratchpad_width_percent = 0.05;
|
| 85 |
+}
|
| 86 |
+
|
| 87 |
+CFGFUN(scratchpad_height_percent, const long height) {
|
| 88 |
+ config.scratchpad_height_percent = height * 0.01;
|
| 89 |
+ // not sure, shall we check the size?
|
| 90 |
+ if(config.scratchpad_height_percent > 1.0)
|
| 91 |
+ config.scratchpad_height_percent = 1.0;
|
| 92 |
+ else if(config.scratchpad_height_percent < 0.05)
|
| 93 |
+ config.scratchpad_height_percent = 0.05;
|
| 94 |
+}
|
| 95 |
+
|
| 96 |
CFGFUN(assign, const char *workspace) {
|
| 97 |
if (match_is_empty(current_match)) {
|
| 98 |
ELOG("Match is empty, ignoring this assignment\n");
|
b/src/scratchpad.c
| 103 |
@@ -195,8 +195,8 @@ void scratchpad_show(Con *con) {
|
| 104 |
if (con->scratchpad_state == SCRATCHPAD_FRESH) {
|
| 105 |
DLOG("Adjusting size of this window.\n");
|
| 106 |
Con *output = con_get_output(con);
|
| 107 |
- con->rect.width = output->rect.width * 0.5;
|
| 108 |
- con->rect.height = output->rect.height * 0.75;
|
| 109 |
+ con->rect.width = output->rect.width * config.scratchpad_width_percent;
|
| 110 |
+ con->rect.height = output->rect.height * config.scratchpad_height_percent;
|
| 111 |
floating_check_size(con);
|
| 112 |
con->rect.x = output->rect.x +
|
| 113 |
((output->rect.width / 2.0) - (con->rect.width / 2.0));
|