-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathegmde-terminal
executable file
·51 lines (42 loc) · 1.79 KB
/
egmde-terminal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/sh
set -xe
for terminal in x-terminal-emulator xdg-terminal weston-terminal gnome-terminal
do
if terminal_command=$(command -v $terminal); then break; fi
done
case $(realpath "$terminal_command") in
*gnome-terminal*)
# gnome-terminal tries to run a single `gnome-terminal-server` process and any attempt
# to launch a second instance appears on the desktop that owns the first terminal.
#
# What we do is launch the gnome-terminal-server with a distinct --app-id and,
# after waiting for it to start, launch gnome-terminal with the same --app-id.
# On Ubuntu 16.04 and 18.04 gnome-terminal-server is in /usr/lib/gnome-terminal
# On Fedora and Ubuntu 20.04 gnome-terminal-server is in /usr/libexec/
# On Arch gnome-terminal-server is in /usr/lib/
for terminal_server in /usr/libexec/gnome-terminal-server /usr/lib/gnome-terminal/gnome-terminal-server /usr/lib/gnome-terminal-server
do
if [ -x "$terminal_server" ]; then break; fi
done
if ! gdbus introspect --session --dest io.mirserver.egmdeTerminal --object-path /io/mirserver/Terminal > /dev/null 2>&1
then
$terminal_server --app-id io.mirserver.egmdeTerminal&
if (gdbus help | grep wait > /dev/null)
then
gdbus wait --session io.mirserver.egmdeTerminal
else
while ! gdbus introspect --session --dest io.mirserver.egmdeTerminal --object-path /io/mirserver/Terminal > /dev/null 2>&1
do
sleep 0.2
done
fi
fi
if command -v gnome-terminal.real > /dev/null 2>&1
then terminal=gnome-terminal.real
else terminal=gnome-terminal
fi
exec $terminal --app-id io.mirserver.egmdeTerminal "$@";;
*)
# Other terminals default to running as a separate process, which suits us.
exec $terminal "$@"
esac