Squeak.ru - шаблоны программирования

Как сохранить программу открытой из Java Runtime.exec (команда) Всегда сверху

У нас есть полноэкранная java-программа, работающая в Linux. Программа всегда запущена и является основной причиной существования Linux.

У нас есть куча файлов справки в формате PDF для программы, которые можно открыть через раскрывающееся меню. Когда пользователь щелкает один из пунктов меню справки, мы открываем XPDF через

    final Runtime rt = Runtime.getRuntime();
    final String cmd = "runxpdf.sh";
    rt.exec(cmd);

Все это прекрасно работает, за исключением того, что если пользователь щелкнет нашу программу во время работы программы просмотра XPDF, она отстанет от нашего полноэкранного отображения программы.

Что мы хотели бы сделать, так это держать программу XPDF всегда наверху, пока она не будет закрыта. Возможно ли это сделать, выполнив программу из Java?


Ответы:


1

Проблема в том, что вам нужно связаться с другой программой, оконным менеджером, чтобы указать этой программе держать окно поднятым.

В системах на основе X Window раньше был инструмент под названием wmctrl, который делал запросы и запросы к текущему оконному менеджеру, при условии, что он был совместимым оконным менеджером. У меня были смешанные результаты, используя такой инструмент. Из примерно 20 оконных менеджеров Linux самые популярные лучше справляются с обработкой запросов (возможно, поэтому они так популярны?).

Команда переключения рабочего стола на окно, поднятие и фокусировка

wmctrl -i -a <Window Id>

Чтобы получить список окон, управляемых оконным менеджером

wmctrl -l

Хотя это не гарантирует «всегда сверху», вы можете написать цикл Thread для проверки и повторного открытия окна.

Что касается решения для Windows, кто-то еще должен будет это прокомментировать.

24.07.2012
  • Обратите внимание, что wmctrl не установлен на многих системах, возможно, вам придется его установить. Кроме того, я не знаю 100% Java-библиотеки, которая могла бы выполнять тот же вызов, и я не изучал базовый механизм (предполагаемого сетевого) вызова. 24.07.2012
  • да, это звучит правильно для меня, я использовал wmctrl в файле ключей Fluxbox, чтобы вывести различные вещи наверх при комбинациях мыши и клавиатуры в прошлом. 24.07.2012

  • 2

    Немного тангенциально, но я думаю, что стоит попробовать — вы рассматривали возможность отображения PDF непосредственно с Java? Тогда у вас будет больше контроля над окном, например. с помощью JFrame setAlwaysOnTop (логическое значение). Некоторые параметры отображения PDF обсуждаются здесь.

    24.07.2012
  • Да, это один из вариантов, который мы рассматривали, но в то время, когда мы выбрали xpdf (несколько лет назад), средства отображения PDF на основе Java, которые мы пробовали, казались глючными. Может пора взглянуть еще раз. 22.08.2012
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...