К вашему сведению, я использую оконный менеджер i3.

Одна из основных причин, по которой я предпочитаю терминальные приложения, заключается в том, что они используют ту же панель окна, что и оболочка, из которой я их запускал. Я выхожу из программы, и я сразу же возвращаюсь в свою оболочку, с моим окружением, рабочим каталогом и всеми другими достоинствами оболочки.

С другой стороны, когда я открываю программу графического интерфейса из оболочки, она порождает новую панель окна, которую я обычно просто вкладываю в родительскую оболочку. Я иногда хочу такое поведение, но не всегда, потому что это просто еще одна панель для циклического перехода. Dmenu - это одно из решений этой проблемы, но потом я теряю свою среду, рабочую среду и доброту оболочки.

Если бы я мог как-то сказать своему приложению с графическим интерфейсом нарисовать его окно поверх окна моего терминала, мне бы даже не понадобилось dmenu. Дмену кажется излишним, когда у нас есть снаряды ...

Какие-либо предложения? Возможно, кто-то, кто взломал i3? Я открыт для редактирования источника.

1 ответ1

0

Обнаружив блокнот i3, xdotool и команду ожидания, я придумал такой хакерский скрипт:

#!/usr/bin/env bash 

"$*" &                                                                                                                                                                                                             
 child="$!"                                                                                                                                                                                                         
 xdotool set_window --name "$!" `xdotool getactivewindow`                                                                                                                                                           
 i3-msg move scratchpad                                                                                                                                                                                           
 wait $child                                                                                                                                                                                                        
 i3-msg [title="$child"] scratchpad show                                                                                                                                                                            
 i3-msg floating toggle

usage: launch-hide <my-gui-program>

Итак, я называю родительское окно оболочки pid дочернего интерфейса, отправляю его на блокнот, затем, когда я выхожу из дочернего процесса, запускается функция hide-hide, где он берет окно с блокнота с соответствующим детский пид.

Добавить автозаполнение:

complete -F _command launch-hide

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .