all repos — tint2 @ f8dde00a33af42ef227b2131ab32732ce1f5ce36

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

Do not pollute command line of executed processes
o9000 mrovi9000@gmail.com
commit

f8dde00a33af42ef227b2131ab32732ce1f5ce36

parent

380f2600278b111b065c9976126d8fc6bf0d85f6

3 files changed, 50 insertions(+), 47 deletions(-)

jump to
M src/execplugin/execplugin.csrc/execplugin/execplugin.c

@@ -579,17 +579,15 @@ command = execp->backend->dwheel_command;

break; } if (command) { - char *full_cmd = g_strdup_printf("export EXECP_X=%d;" - "export EXECP_Y=%d;" - "export EXECP_W=%d;" - "export EXECP_H=%d; %s", - x, - y, - execp->area.width, - execp->area.height, - command); - pid_t pid = tint_exec(full_cmd, NULL, NULL, time, obj, x, y); - g_free(full_cmd); + setenvd("EXECP_X", x); + setenvd("EXECP_Y", y); + setenvd("EXECP_W", execp->area.width); + setenvd("EXECP_H", execp->area.height); + pid_t pid = tint_exec(command, NULL, NULL, time, obj, x, y); + unsetenv("EXECP_X"); + unsetenv("EXECP_Y"); + unsetenv("EXECP_W"); + unsetenv("EXECP_H"); if (pid > 0) g_tree_insert(execp->backend->cmd_pids, GINT_TO_POINTER(pid), GINT_TO_POINTER(1)); } else {
M src/util/common.csrc/util/common.c

@@ -103,6 +103,13 @@ }

extern char *config_path; +int setenvd(const char *name, const int value) +{ + char buf[256]; + sprintf(buf, "%d", value); + return setenv(name, buf, 1); +} + #ifndef TINT2CONF pid_t tint_exec(const char *command, const char *dir, const char *tooltip, Time time, Area *area, int x, int y) {

@@ -172,43 +179,23 @@ panel_y1 = panel->posy;

panel_y2 = panel->posy + panel->area.height; } - command = g_strdup_printf("export TINT2_CONFIG=%s;" - "export TINT2_BUTTON_X=%d;" - "export TINT2_BUTTON_Y=%d;" - "export TINT2_BUTTON_W=%d;" - "export TINT2_BUTTON_H=%d;" - "export TINT2_BUTTON_ALIGNED_X=%d;" - "export TINT2_BUTTON_ALIGNED_Y=%d;" - "export TINT2_BUTTON_ALIGNED_X1=%d;" - "export TINT2_BUTTON_ALIGNED_Y1=%d;" - "export TINT2_BUTTON_ALIGNED_X2=%d;" - "export TINT2_BUTTON_ALIGNED_Y2=%d;" - "export TINT2_BUTTON_PANEL_X1=%d;" - "export TINT2_BUTTON_PANEL_Y1=%d;" - "export TINT2_BUTTON_PANEL_X2=%d;" - "export TINT2_BUTTON_PANEL_Y2=%d;" - "%s", - config_path, - x, - y, - area->width, - area->height, - aligned_x, - aligned_y, - aligned_x1, - aligned_y1, - aligned_x2, - aligned_y2, - panel_x1, - panel_y1, - panel_x2, - panel_y2, - command); + setenv("TINT2_CONFIG", config_path, 1); + setenvd("TINT2_BUTTON_X", x); + setenvd("TINT2_BUTTON_Y", y); + setenvd("TINT2_BUTTON_W", area->width); + setenvd("TINT2_BUTTON_H", area->height); + setenvd("TINT2_BUTTON_ALIGNED_X", aligned_x); + setenvd("TINT2_BUTTON_ALIGNED_Y", aligned_y); + setenvd("TINT2_BUTTON_ALIGNED_X1", aligned_x1); + setenvd("TINT2_BUTTON_ALIGNED_Y1", aligned_y1); + setenvd("TINT2_BUTTON_ALIGNED_X2", aligned_x2); + setenvd("TINT2_BUTTON_ALIGNED_Y2", aligned_y2); + setenvd("TINT2_BUTTON_PANEL_X1", panel_x1); + setenvd("TINT2_BUTTON_PANEL_Y1", panel_y1); + setenvd("TINT2_BUTTON_PANEL_X2", panel_x2); + setenvd("TINT2_BUTTON_PANEL_Y2", panel_y2); } else { - command = g_strdup_printf("export TINT2_CONFIG=%s;" - "%s", - config_path, - command); + setenv("TINT2_CONFIG", config_path, 1); } if (!command)

@@ -259,6 +246,23 @@ g_tree_insert(server.pids, GINT_TO_POINTER(pid), ctx);

} #endif // HAVE_SN } + + unsetenv("TINT2_CONFIG"); + unsetenv("TINT2_BUTTON_X"); + unsetenv("TINT2_BUTTON_Y"); + unsetenv("TINT2_BUTTON_W"); + unsetenv("TINT2_BUTTON_H"); + unsetenv("TINT2_BUTTON_ALIGNED_X"); + unsetenv("TINT2_BUTTON_ALIGNED_Y"); + unsetenv("TINT2_BUTTON_ALIGNED_X1"); + unsetenv("TINT2_BUTTON_ALIGNED_Y1"); + unsetenv("TINT2_BUTTON_ALIGNED_X2"); + unsetenv("TINT2_BUTTON_ALIGNED_Y2"); + unsetenv("TINT2_BUTTON_PANEL_X1"); + unsetenv("TINT2_BUTTON_PANEL_Y1"); + unsetenv("TINT2_BUTTON_PANEL_X2"); + unsetenv("TINT2_BUTTON_PANEL_Y2"); + return pid; }
M src/util/common.hsrc/util/common.h

@@ -56,6 +56,7 @@

// Executes a command in a shell. pid_t tint_exec(const char *command, const char *dir, const char *tooltip, Time time, Area *area, int x, int y); void tint_exec_no_sn(const char *command); +int setenvd(const char *name, const int value); // Returns a copy of s in which "~" is expanded to the path to the user's home directory. // The caller takes ownership of the string.