Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c1a3cc7977 |
@@ -35,7 +35,6 @@ Contributors:
|
||||
heisenbug (https://gitlab.com/heisenbugh) : taskbar button tinting with icon color
|
||||
Fabian Carlström : taskbar sort order by app name
|
||||
Chris Billington (https://gitlab.com/chrisjbillington) : panel struts pivoting
|
||||
Arash Rohani <rohani.arash@pm.me> : helped with execp refresh
|
||||
|
||||
Translations:
|
||||
Bosnian:
|
||||
|
||||
@@ -290,7 +290,6 @@ add_executable(tint2-send src/tint2-send/tint2-send.c)
|
||||
target_link_libraries(tint2-send ${X11_LIBRARIES})
|
||||
|
||||
install( TARGETS tint2 DESTINATION bin )
|
||||
install( TARGETS tint2-send DESTINATION bin )
|
||||
install( FILES tint2.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps )
|
||||
install( FILES tint2.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications )
|
||||
install( FILES themes/tint2rc DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/xdg/tint2 )
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
2021-12-11 master
|
||||
- Enhancements:
|
||||
- Added command to refresh executors (issue #747)
|
||||
2021-12-04 17.0.2
|
||||
- Fixes:
|
||||
- On dual monitor, when minimizing Chrome window it minimizes on the wrong monitor panel (issue #818)
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
# Latest stable release: 17.0.2
|
||||
|
||||
The final release of tint2 is 17.0.2.
|
||||
The code is frozen and no more feature requests are accepted.
|
||||
|
||||
Changes: https://gitlab.com/o9000/tint2/blob/17.0.2/ChangeLog
|
||||
|
||||
Documentation: [doc/tint2.md](doc/tint2.md)
|
||||
|
||||
@@ -595,7 +595,6 @@ panel_size = 94% 30
|
||||
<h3 id="executor">Executor<a name="executor" href="#executor" class="md2man-permalink" title="permalink"></a></h3>
|
||||
<ul>
|
||||
<li><p><code>execp = new</code> : Begins the configuration of a new executor plugin. Multiple such plugins are supported; just use multiple <code>E</code>s in <code>panel_items</code>. <em>(since 0.12.4)</em></p></li>
|
||||
<li><p><code>execp_name = text</code> : A name that can be used with <code>tint2-send refresh-execp</code> to re-execute the command.</p></li>
|
||||
<li><p><code>execp_command = text</code> : Command to execute. <em>(since 0.12.4)</em></p></li>
|
||||
<li><p><code>execp_interval = integer</code> : The command is executed again after <code>execp_interval</code> seconds from the moment it exits. If zero, the command is executed only once. <em>(since 0.12.4)</em></p></li>
|
||||
<li><p><code>execp_continuous = integer</code> : If non-zero, the last <code>execp_continuous</code> lines from the output of the command are displayed, every <code>execp_continuous</code> lines; this is useful for showing the output of commands that run indefinitely, such as <code>ping 127.0.0.1</code>. If zero, the output of the command is displayed after it finishes executing. <em>(since 0.12.4)</em></p></li>
|
||||
|
||||
@@ -720,8 +720,6 @@ To hide the clock, comment \fB\fCtime1_format\fR and \fB\fCtime2_format\fR\&.
|
||||
.IP \(bu 2
|
||||
\fB\fCexecp = new\fR : Begins the configuration of a new executor plugin. Multiple such plugins are supported; just use multiple \fB\fCE\fRs in \fB\fCpanel_items\fR\&. \fI(since 0.12.4)\fP
|
||||
.IP \(bu 2
|
||||
\fB\fCexecp_name = text\fR : A name that can be used with \fB\fCtint2\-send refresh\-execp\fR to re\-execute the command.
|
||||
.IP \(bu 2
|
||||
\fB\fCexecp_command = text\fR : Command to execute. \fI(since 0.12.4)\fP
|
||||
.IP \(bu 2
|
||||
\fB\fCexecp_interval = integer\fR : The command is executed again after \fB\fCexecp_interval\fR seconds from the moment it exits. If zero, the command is executed only once. \fI(since 0.12.4)\fP
|
||||
|
||||
@@ -314,7 +314,6 @@ panel_size = 94% 30
|
||||
<h3 id="executor">Executor<a name="executor" href="#executor" class="md2man-permalink" title="permalink"></a></h3>
|
||||
<ul>
|
||||
<li><p><code>execp = new</code> : Begins the configuration of a new executor plugin. Multiple such plugins are supported; just use multiple <code>E</code>s in <code>panel_items</code>. <em>(since 0.12.4)</em></p></li>
|
||||
<li><p><code>execp_name = text</code> : A name that can be used with <code>tint2-send refresh-execp</code> to re-execute the command.</p></li>
|
||||
<li><p><code>execp_command = text</code> : Command to execute. <em>(since 0.12.4)</em></p></li>
|
||||
<li><p><code>execp_interval = integer</code> : The command is executed again after <code>execp_interval</code> seconds from the moment it exits. If zero, the command is executed only once. <em>(since 0.12.4)</em></p></li>
|
||||
<li><p><code>execp_continuous = integer</code> : If non-zero, the last <code>execp_continuous</code> lines from the output of the command are displayed, every <code>execp_continuous</code> lines; this is useful for showing the output of commands that run indefinitely, such as <code>ping 127.0.0.1</code>. If zero, the output of the command is displayed after it finishes executing. <em>(since 0.12.4)</em></p></li>
|
||||
|
||||
@@ -593,8 +593,6 @@ The action semantics:
|
||||
|
||||
* `execp = new` : Begins the configuration of a new executor plugin. Multiple such plugins are supported; just use multiple `E`s in `panel_items`. *(since 0.12.4)*
|
||||
|
||||
* `execp_name = text` : A name that can be used with `tint2-send refresh-execp` to re-execute the command.
|
||||
|
||||
* `execp_command = text` : Command to execute. *(since 0.12.4)*
|
||||
|
||||
* `execp_interval = integer` : The command is executed again after `execp_interval` seconds from the moment it exits. If zero, the command is executed only once. *(since 0.12.4)*
|
||||
|
||||
@@ -683,14 +683,6 @@ void add_entry(char *key, char *value)
|
||||
/* Execp */
|
||||
else if (strcmp(key, "execp") == 0) {
|
||||
panel_config.execp_list = g_list_append(panel_config.execp_list, create_execp());
|
||||
} else if (strcmp(key, "execp_name") == 0) {
|
||||
Execp *execp = get_or_create_last_execp();
|
||||
execp->backend->name[0] = 0;
|
||||
if (strlen(value) > sizeof(execp->backend->name) - 1)
|
||||
fprintf(stderr, RED "tint2: execp_name cannot be more than %ld bytes: '%s'" RESET "\n",
|
||||
sizeof(execp->backend->name) - 1, value);
|
||||
else if (strlen(value) > 0)
|
||||
snprintf(execp->backend->name, sizeof(execp->backend->name), value);
|
||||
} else if (strcmp(key, "execp_command") == 0) {
|
||||
Execp *execp = get_or_create_last_execp();
|
||||
free_and_null(execp->backend->command);
|
||||
|
||||
@@ -20,7 +20,6 @@ extern bool debug_executors;
|
||||
|
||||
typedef struct ExecpBackend {
|
||||
// Config:
|
||||
char name[21];
|
||||
// Command to execute at a specified interval
|
||||
char *command;
|
||||
// Interval in seconds
|
||||
@@ -155,6 +154,4 @@ void execp_default_font_changed();
|
||||
|
||||
void handle_execp_events();
|
||||
|
||||
void execp_force_update(Execp *execp);
|
||||
|
||||
#endif // EXECPLUGIN_H
|
||||
|
||||
+2
-7
@@ -32,6 +32,7 @@
|
||||
#include <X11/extensions/Xdamage.h>
|
||||
#include <Imlib2.h>
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
#include <time.h>
|
||||
@@ -548,13 +549,7 @@ void handle_x_event(XEvent *e)
|
||||
e->xclient.format == 8) {
|
||||
char name[sizeof(e->xclient.data.b) + 1] = {};
|
||||
memcpy(name, e->xclient.data.b, sizeof(e->xclient.data.b));
|
||||
for (GList *l = panel_config.execp_list; l; l = l->next) {
|
||||
Execp *execp = (Execp *)l->data;
|
||||
if (strncmp(name, execp->backend->name, sizeof(execp->backend->name) - 1) == 0) {
|
||||
fprintf(stderr, "tint2: Refreshing executor: %s\n", name);
|
||||
execp_force_update(execp);
|
||||
}
|
||||
}
|
||||
printf("TODO: refresh execp: %s\n", name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -292,10 +292,9 @@ void on_change_systray(void *obj)
|
||||
}
|
||||
|
||||
TrayWindow *traywin;
|
||||
GSList *l, *next;
|
||||
GSList *l;
|
||||
int i;
|
||||
for (i = 1, l = systray.list_icons; l; i++, l = next) {
|
||||
next = l->next;
|
||||
for (i = 1, l = systray.list_icons; l; i++, l = l->next) {
|
||||
traywin = (TrayWindow *)l->data;
|
||||
|
||||
traywin->y = posy;
|
||||
|
||||
@@ -45,8 +45,8 @@ int is_tint2(Window window)
|
||||
XWindowAttributes attr = {};
|
||||
if (!XGetWindowAttributes(display, window, &attr))
|
||||
return 0;
|
||||
// if (attr.map_state != IsViewable)
|
||||
// return 0;
|
||||
if (attr.map_state != IsViewable)
|
||||
return 0;
|
||||
|
||||
char *wm_class = get_property(window, XA_STRING, "WM_NAME");
|
||||
if (!wm_class) {
|
||||
@@ -96,7 +96,7 @@ void handle_tint2_window(Window window, char *action, char **args)
|
||||
return;
|
||||
}
|
||||
if (strlen(name) > sizeof(event.xclient.data.b)) {
|
||||
fprintf(stderr, "Error: execp name bigger than %ld bytes\n", sizeof(event.xclient.data.b));
|
||||
fprintf(stderr, "Error: execp name too long\n");
|
||||
return;
|
||||
}
|
||||
fprintf(stderr, "Refreshing execp '%s' for window: %lx\n", name, window);
|
||||
@@ -141,7 +141,7 @@ int main(int argc, char **argv)
|
||||
|
||||
argc--, argv++;
|
||||
if (!argc) {
|
||||
fprintf(stderr, "Usage: tint2-send [show|hide|refresh-execp]\n");
|
||||
fprintf(stderr, "Usage: tint2-show [show|hide|refresh-execp]\n");
|
||||
exit(1);
|
||||
}
|
||||
char *action = argv[0];
|
||||
|
||||
+460
-474
File diff suppressed because it is too large
Load Diff
+460
-474
File diff suppressed because it is too large
Load Diff
+460
-474
File diff suppressed because it is too large
Load Diff
+460
-474
File diff suppressed because it is too large
Load Diff
+460
-474
File diff suppressed because it is too large
Load Diff
+460
-474
File diff suppressed because it is too large
Load Diff
+460
-474
File diff suppressed because it is too large
Load Diff
+461
-475
File diff suppressed because it is too large
Load Diff
@@ -4271,23 +4271,6 @@ void create_execp(GtkWidget *notebook, int i)
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), COL_SPACING);
|
||||
row = 0, col = 2;
|
||||
|
||||
label = gtk_label_new(_("Name"));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
|
||||
gtk_widget_show(label);
|
||||
gtk_table_attach(GTK_TABLE(table), label, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0);
|
||||
col++;
|
||||
|
||||
executor->execp_name = gtk_entry_new();
|
||||
gtk_widget_show(executor->execp_name);
|
||||
gtk_entry_set_width_chars(GTK_ENTRY(executor->execp_name), 20);
|
||||
gtk_entry_set_max_length(GTK_ENTRY(executor->execp_name), 20);
|
||||
gtk_table_attach(GTK_TABLE(table), executor->execp_name, col, col + 1, row, row + 1, GTK_FILL, 0, 0, 0);
|
||||
col++;
|
||||
gtk_widget_set_tooltip_text(executor->execp_name,
|
||||
_("Specifies a name that can be used with `tint2-send refresh-execp` to re-execute "
|
||||
"the command."));
|
||||
|
||||
row++, col = 2;
|
||||
label = gtk_label_new(_("Command"));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
@@ -132,7 +132,6 @@ typedef struct Executor {
|
||||
GtkWidget *container;
|
||||
GtkWidget *page_execp;
|
||||
GtkWidget *page_label;
|
||||
GtkWidget *execp_name;
|
||||
GtkWidget *execp_command, *execp_interval, *execp_has_icon, *execp_cache_icon, *execp_show_tooltip;
|
||||
GtkWidget *execp_continuous, *execp_markup, *execp_tooltip, *execp_monitor;
|
||||
GtkWidget *execp_left_command, *execp_right_command;
|
||||
|
||||
@@ -857,7 +857,6 @@ void config_write_execp(FILE *fp)
|
||||
Executor *executor = &g_array_index(executors, Executor, i);
|
||||
|
||||
fprintf(fp, "execp = new\n");
|
||||
fprintf(fp, "execp_name = %s\n", gtk_entry_get_text(GTK_ENTRY(executor->execp_name)));
|
||||
fprintf(fp, "execp_command = %s\n", gtk_entry_get_text(GTK_ENTRY(executor->execp_command)));
|
||||
fprintf(fp, "execp_interval = %d\n", (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(executor->execp_interval)));
|
||||
fprintf(fp,
|
||||
@@ -1963,8 +1962,6 @@ void add_entry(char *key, char *value)
|
||||
/* Executor */
|
||||
else if (strcmp(key, "execp") == 0) {
|
||||
execp_create_new();
|
||||
} else if (strcmp(key, "execp_name") == 0) {
|
||||
gtk_entry_set_text(GTK_ENTRY(execp_get_last()->execp_name), value);
|
||||
} else if (strcmp(key, "execp_command") == 0) {
|
||||
gtk_entry_set_text(GTK_ENTRY(execp_get_last()->execp_command), value);
|
||||
} else if (strcmp(key, "execp_interval") == 0) {
|
||||
|
||||
Reference in New Issue
Block a user