
Me gustaría poder agregar marcos (no pestañas) al terminador desde gnome-pie o algo similar. "--help" no parecía tener nada, pero ¿ustedes sí?
Respuesta1
Para simular cualquier combinación de teclas lo que me viene a la cabeza es utilizar xdotool
herramienta.
Instalar$ sudo apt-get install xdotool
Uso:
$ xdotool key [key]+[key]
p.ej
$ xdotool key ctrl+shift+o # To split horizontal
$ xdotool key ctrl+shift+e # To split vertical
Teniendo esto, puedes facilitar la creación de algunos alias.
$ alias splith='xdotool key ctrl+shift+o'
$ alias splitv='xdotool key ctrl+shift+e'
Intentalo.
ACTUALIZAR
Ok, encontremos una solución.
Encontré una utilidad para ejecutar comandos desde otras terminales enaquí.
Crea un archivo $ vim ttyecho.c
, copia este código
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <string.h>
#include <unistd.h>
void print_help(char *prog_name) {
printf("Usage: %s [-n] DEVNAME COMMAND\n", prog_name);
printf("Usage: '-n' is an optional argument if you want to push a new line at the end of the text\n");
printf("Usage: Will require 'sudo' to run if the executable is not setuid root\n");
exit(1);
}
int main (int argc, char *argv[]) {
char *cmd, *nl = "\n";
int i, fd;
int devno, commandno, newline;
int mem_len;
devno = 1; commandno = 2; newline = 0;
if (argc < 3) {
print_help(argv[0]);
}
if (argc > 3 && argv[1][0] == '-' && argv[1][1] == 'n') {
devno = 2; commandno = 3; newline=1;
} else if (argc > 3 && argv[1][0] == '-' && argv[1][1] != 'n') {
printf("Invalid Option\n");
print_help(argv[0]);
}
fd = open(argv[devno],O_RDWR);
if(fd == -1) {
perror("open DEVICE");
exit(1);
}
mem_len = 0;
for ( i = commandno; i < argc; i++ ) {
mem_len += strlen(argv[i]) + 2;
if ( i > commandno ) {
cmd = (char *)realloc((void *)cmd, mem_len);
} else { //i == commandno
cmd = (char *)malloc(mem_len);
}
strcat(cmd, argv[i]);
strcat(cmd, " ");
}
if (newline == 0)
usleep(225000);
for (i = 0; cmd[i]; i++)
ioctl (fd, TIOCSTI, cmd+i);
if (newline == 1)
ioctl (fd, TIOCSTI, nl);
close(fd);
free((void *)cmd);
exit (0);
}
Luego ejecuta make
+ archivo
$ make ttyecho
$ sudo chown root:root ttyecho
$ sudo cp ttyecho /usr/bin
Ahora pruébalo, comprueba el terminal terminador.tty
$ tty
/dev/pts/0
En otra terminal ejecute lo siguiente
$ ttyecho -n /dev/pts/0 splith
Respuesta2
Esta es una adición al excelente trabajo de tachomi.respuesta; por favor votalo.
AFAIK, no hay forma de dividir el terminador con (por ejemplo) un comando DBUS externo, por lo que debe usar un truco de pulsación de tecla como se propone en la otra respuesta. Para enviar a Terminator las pulsaciones de teclas, primero debe asegurarse de que esté activo. Una forma de hacer esto es la siguiente. En mi caso, uso terminator como terminal "emergente" siempre activo, activado con Ctrl+ Space. Mi script verifica si está oculto y luego lo hace aparecer emulando Ctrl+ Space; de lo contrario, si está visible, pero no al frente, activa la ventana.
Si no lo usa como terminal emergente, entonces probablemente debería funcionar de todos modos, y nunca pasar por ese condicional.
windowlist=$(xprop -root | sed -rn 's/_NET_CLIENT_LIST_STACKING\(WINDOW\): window id # (.*)/\1/p' | tr -d ',')
terminator_visible=false
for i in $windowlist; do
[[ $(xprop -id $i | grep WM_CLASS\(STRING\)) == 'WM_CLASS(STRING) = "terminator", "Terminator"' ]] && terminator_visible=true && term_id=$i
done
if [[ $terminator_visible == false ]]; then # it's hidden
xdotool key --clearmodifiers ctrl+space
elif [[ $(xprop -id $(xdotool getactivewindow) | grep WM_CLASS\(STRING\)) != 'WM_CLASS(STRING) = "terminator", "Terminator"' ]]; then # it's visible, but not active
xdotool windowactivate $term_id 2> /dev/null
fi
Después de ejecutar este script para activar la ventana, simplemente ejecute los xdotool
comandos según la otra respuesta, es decir, uno de los siguientes. También sugeriría usar --clearmodifiers
(consulte man xdotool
para obtener más información).
xdotool key --clearmodifiers ctrl+shift+o
xdotool key --clearmodifiers ctrl+shift+e
Respuesta3
Estos días puedes utilizar remotinator hsplit
:https://terminator-gtk3.readthedocs.io/en/latest/advancedusage.html#remotinator
Estaba buscando esto hoy y lo publiqué aquí en caso de que alguien más (o yo en el futuro) también encuentre esta publicación.