mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-25 13:55:34 -05:00
parent
3f5d82ff56
commit
4b3f6f6767
4 changed files with 138 additions and 3 deletions
|
@ -763,6 +763,34 @@ window {
|
||||||
.fi
|
.fi
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
|
.RS
|
||||||
|
.IP \(bu 2
|
||||||
|
Format: \fB\fCvar(PROPERTY NAME, DEFAULT)\fR
|
||||||
|
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.PP
|
||||||
|
A reference can point to another reference. Currently, the maximum number of redirects is 20.
|
||||||
|
A property always refers to another property. It cannot be used for a subpart of the property.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
|
||||||
|
.nf
|
||||||
|
window {
|
||||||
|
width: var( width, 30%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fi
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.PP
|
||||||
|
If the property \fB\fCwidth\fR is set globally (\fB\fC*{}\fR) that value is used, if the property
|
||||||
|
\fB\fCwidth\fR is not set, the default value is used.
|
||||||
|
|
||||||
.SH Orientation
|
.SH Orientation
|
||||||
.RS
|
.RS
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
|
@ -816,6 +844,31 @@ The environment variable should be an alphanumeric string without white\-space.
|
||||||
.fi
|
.fi
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
|
.RS
|
||||||
|
.IP \(bu 2
|
||||||
|
Format: \fB\fCenv(ENVIRONMENT, default)\fR
|
||||||
|
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.PP
|
||||||
|
This will parse the environment variable as the property value. (that then can be any of the above types).
|
||||||
|
The environment variable should be an alphanumeric string without white\-space.
|
||||||
|
If the environment value is not found, the default value is used.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
|
||||||
|
.nf
|
||||||
|
window {
|
||||||
|
width: env(WIDTH, 40%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fi
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.PP
|
||||||
|
If environment WIDTH is set, then that value is parsed, otherwise the default value (\fB\fC40%\fR).
|
||||||
|
|
||||||
.SH Inherit
|
.SH Inherit
|
||||||
.RS
|
.RS
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
|
|
40
doc/rofi.1
40
doc/rofi.1
|
@ -1393,6 +1393,46 @@ To get a searchable list of key bindings, run \fB\fCrofi \-show keys\fR\&.
|
||||||
.PP
|
.PP
|
||||||
A key binding starting with \fB\fC!\fR will act when all keys have been released.
|
A key binding starting with \fB\fC!\fR will act when all keys have been released.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
You can bind certain events to key\-actions:
|
||||||
|
|
||||||
|
.SS Timeout
|
||||||
|
.PP
|
||||||
|
You can configure an action to be taken when rofi has not been interacted
|
||||||
|
with for a certain amount of seconds. You can specify a keybinding to trigger
|
||||||
|
after X seconds.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
|
||||||
|
.nf
|
||||||
|
configuration {
|
||||||
|
timeout {
|
||||||
|
delay: 15;
|
||||||
|
action: "kb\-cancel";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.fi
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.SS Input change
|
||||||
|
.PP
|
||||||
|
When the input of the textbox changes:
|
||||||
|
|
||||||
|
.PP
|
||||||
|
.RS
|
||||||
|
|
||||||
|
.nf
|
||||||
|
configuration {
|
||||||
|
inputchange {
|
||||||
|
action: "kb\-row\-first";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.fi
|
||||||
|
.RE
|
||||||
|
|
||||||
.SH Available Modi
|
.SH Available Modi
|
||||||
.SS window
|
.SS window
|
||||||
.PP
|
.PP
|
||||||
|
|
|
@ -838,6 +838,36 @@ To get a searchable list of key bindings, run `rofi -show keys`.
|
||||||
|
|
||||||
A key binding starting with `!` will act when all keys have been released.
|
A key binding starting with `!` will act when all keys have been released.
|
||||||
|
|
||||||
|
You can bind certain events to key-actions:
|
||||||
|
|
||||||
|
### Timeout
|
||||||
|
|
||||||
|
You can configure an action to be taken when rofi has not been interacted
|
||||||
|
with for a certain amount of seconds. You can specify a keybinding to trigger
|
||||||
|
after X seconds.
|
||||||
|
|
||||||
|
```css
|
||||||
|
configuration {
|
||||||
|
timeout {
|
||||||
|
delay: 15;
|
||||||
|
action: "kb-cancel";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Input change
|
||||||
|
|
||||||
|
When the input of the textbox changes:
|
||||||
|
|
||||||
|
```css
|
||||||
|
configuration {
|
||||||
|
inputchange {
|
||||||
|
action: "kb-row-first";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Available Modi
|
## Available Modi
|
||||||
|
|
||||||
### window
|
### window
|
||||||
|
|
|
@ -455,9 +455,9 @@ static gboolean rofi_view_reload_idle(G_GNUC_UNUSED gpointer data) {
|
||||||
CacheState.idle_timeout = 0;
|
CacheState.idle_timeout = 0;
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
static gboolean rofi_view_user_timeout(G_GNUC_UNUSED gpointer data) {
|
|
||||||
CacheState.user_timeout = 0;
|
static void rofi_view_take_action(const char *name) {
|
||||||
ThemeWidget *wid = rofi_config_find_widget("timeout", NULL, TRUE);
|
ThemeWidget *wid = rofi_config_find_widget(name, NULL, TRUE);
|
||||||
if (wid) {
|
if (wid) {
|
||||||
/** Check string property */
|
/** Check string property */
|
||||||
Property *p = rofi_theme_find_property(wid, P_STRING, "action", TRUE);
|
Property *p = rofi_theme_find_property(wid, P_STRING, "action", TRUE);
|
||||||
|
@ -471,6 +471,10 @@ static gboolean rofi_view_user_timeout(G_GNUC_UNUSED gpointer data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
static gboolean rofi_view_user_timeout(G_GNUC_UNUSED gpointer data) {
|
||||||
|
CacheState.user_timeout = 0;
|
||||||
|
rofi_view_take_action("timeout");
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1229,6 +1233,12 @@ void rofi_view_finalize(RofiViewState *state) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function should be called when the input of the entry is changed.
|
||||||
|
* TODO: Evaluate if this needs to be a 'signal' on textbox?
|
||||||
|
*/
|
||||||
|
static void rofi_view_input_changed() { rofi_view_take_action("inputchange"); }
|
||||||
|
|
||||||
static void rofi_view_trigger_global_action(KeyBindingAction action) {
|
static void rofi_view_trigger_global_action(KeyBindingAction action) {
|
||||||
RofiViewState *state = rofi_view_get_active();
|
RofiViewState *state = rofi_view_get_active();
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
@ -1410,6 +1420,7 @@ static void rofi_view_trigger_global_action(KeyBindingAction action) {
|
||||||
if (rc == 1) {
|
if (rc == 1) {
|
||||||
// Entry changed.
|
// Entry changed.
|
||||||
state->refilter = TRUE;
|
state->refilter = TRUE;
|
||||||
|
rofi_view_input_changed();
|
||||||
} else if (rc == 2) {
|
} else if (rc == 2) {
|
||||||
// Movement.
|
// Movement.
|
||||||
}
|
}
|
||||||
|
@ -1499,6 +1510,7 @@ gboolean rofi_view_trigger_action(RofiViewState *state, BindingsScope scope,
|
||||||
void rofi_view_handle_text(RofiViewState *state, char *text) {
|
void rofi_view_handle_text(RofiViewState *state, char *text) {
|
||||||
if (textbox_append_text(state->text, text, strlen(text))) {
|
if (textbox_append_text(state->text, text, strlen(text))) {
|
||||||
state->refilter = TRUE;
|
state->refilter = TRUE;
|
||||||
|
rofi_view_input_changed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue