xiterm

simple vte terminal emulator
git clone https://git.ce9e.org/xiterm.git

commit
e99158b66d9655cb786b675636d16454e8857dec
parent
79c9bbd234a96c0490c5445aeccfc1193b273745
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2020-09-20 10:34
allow to pass command to execute

required for Terminal=true in .desktop files

This does not properly support unqouted commands

Example:

	x-terminal-emulator -e vim  # does work
	x-terminal-emulator -e "sh -c vim"  # does work
	x-terminal-emulator -e sh -c vim  # does not work

Diffstat

M xiterm.c 16 ++++++++++++++--

1 files changed, 14 insertions, 2 deletions


diff --git a/xiterm.c b/xiterm.c

@@ -13,7 +13,7 @@ VteRegex *url_regex;
   13    13 GdkRGBA palette[16];
   14    14 double font_scale = 1;
   15    15 
   16    -1 char *cmd[2] = {"/bin/bash", NULL};
   -1    16 char *cmd[4] = {"/bin/bash", NULL, NULL, NULL};
   17    17 const char *colors[16] = {
   18    18 	"#000", "#c00", "#591", "#b71", "#16c", "#96a", "#299", "#ccc",
   19    19 	"#333", "#f33", "#7c0", "#ed0", "#6ad", "#c8b", "#0dd", "#fff",
@@ -179,10 +179,22 @@ gboolean on_key(GtkWidget *widget, GdkEventKey *event, gpointer user_data) {
  179   179 }
  180   180 
  181   181 int main(int argc, char **argv) {
  182    -1 	int i;
   -1   182 	int i, opt;
  183   183 	GError *err = NULL;
  184   184 	GtkWidget *widget;
  185   185 
   -1   186 	while ((opt = getopt(argc, argv, "e:")) != -1) {
   -1   187 		switch (opt) {
   -1   188 		case 'e':
   -1   189 			cmd[0] = "/bin/sh";
   -1   190 			cmd[1] = "-c";
   -1   191 			cmd[2] = optarg;
   -1   192 			break;
   -1   193 		default:
   -1   194 			exit(EXIT_FAILURE);
   -1   195 		}
   -1   196 	}
   -1   197 
  186   198 	url_regex = vte_regex_new_for_match(REGEX_URL, -1, PCRE2_MULTILINE, &err);
  187   199 	g_assert(err == NULL);
  188   200