Я не уверен, можно ли запустить его в другом рабочем пространстве, но вы можете переместить он там со скриптом.
Взгляните на эту страницу: https://wiki.xfce.org/faq , в подпункте «Как программно переключать рабочие области, перемещать окна и т. Д.?»
Итак, вы Вы можете запустить вашу программу с помощью простого сценария оболочки, например:
#!/bin/sh
yourprogram &
PID="$!"
#echo $PID
sleep 1s
#sleep is required because the window takes aome time to open, maybe it can be adjusted
WINH="$(wmctrl -l -p | grep "$PID" | cut -d " " -f1)"
#echo $WINH
wmctrl -i -r $WINH -t 2
Это не идеально, поскольку процесс может иметь несколько окон (не знаю, что тогда произойдет), но он должен работать для простых программ.
Вы можете использовать tee
и воспользоваться преимуществами подстановки процессов:
$ cat somefile.txt | tee >(nc server port)
tee
просто копирует свой ввод как в stdout
, так и в файл.
С помощью<()
(bash
подстановки процесса )вы говорите bash
писать на ввод команды вместо файла.
Вы можете использовать tee
и избежать замены процесса:
$ ( cat somefile.txt | tee /dev/fd/3 | nc host port ) 3>&1
Преимущество этого заключается в том, что nc
будет работать синхронно. Вот пример поведения замены асинхронного процесса:
user@hostname $ cat somefile.txt
GET / HTTP/1.0
Host: StackOverflow.com
user@hostname $ cat somefile.txt | tee >(nc stackoverflow.com 80); echo "DONE"
GET / HTTP/1.0
Host: StackOverflow.com
DONE
user@hostname $ HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=utf-8
Location: https://stackoverflow.com/
[...]
Обратите внимание, что в нем написано «ГОТОВО» и отображается подсказка в середине вывода. Это не проблема, если nc
работает синхронно:
user@hostname $ ( cat somefile.txt | tee /dev/fd/3 | nc stackoverflow.com 80 ) 3>&1; echo "DONE"
GET / HTTP/1.0
Host: StackOverflow.com
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=utf-8
Location: https://stackoverflow.com/
[...]
DONE