Этот вопрос находится в контексте рабочего стола Lucid 10.04 (т.е. никакая Единица).
Я действительно больше всего экранирую навигацию через клавиатуру (не мышь), таким образом, я ищу решение для сценария повторной активации приложения, которое было "минимизировано" к области уведомлений Панели.
Я буду использовать Skype в качестве примера.
wmctrl
предоставляет мне достаточно доступа к обычно минимизированным окнам, но когда Skype "минимизирован" к области уведомлений, это просто идет "от радара" насколько wmctrl затронут.
Мысль, что позиции значка в области уведомлений могут варьироваться, является там некоторым способом определить экранные координаты Значка панелей Skype, таким образом, я могу "нажать" его использование xdotool
(или подобная утилита)?
... или возможно существует более прямой способ активировать "бездействующий" Skype?... (и я не имею в виду мышь ;)
Вот сценарий, до сих пор. Надо надеяться, это ясно даст понять, что я пытаюсь сделать:
#!/bin/bash
procname="skype-wrapper"
windmask="Skype™"
if [[ $(pgrep -x -n -c "$procname") == 1 ]] ; then
wintitle="$(wmctrl -l |grep "$windmask" |head -n 1 |sed -n "s/^.\+${HOSTNAME} \(.*\)/\1/p")"
if [ "$wintitle" = "" ] ; then
echo "Click on Skype's Panel-icon to show the main window"
###############################################################
# How can I find the screen co-ordinates of Skype's Panel Icon
###############################################################
else
# Skype is running, and has (at least) one visible window which matches $windmask. Activate it.
wmctrl -a "$wintitle"
fi
else
# The process is not currently running. Start it.
("$procname" &)
fi
http://d01.megashares.com/dl/161a012/Skype.zip
zskypewrapper.sh и showskype.py должны быть исполняемым файлом и в $PATH где-нибудь.
Надежда это помогает кому-то.:-D
Как насчет:
#!/usr/bin/env python
import dbus
# Get a D-Bus interface to Skype
bus = dbus.SessionBus()
skype_object = bus.get_object('com.Skype.API', '/com/Skype')
skype = dbus.Interface(skype_object, dbus_interface='com.Skype.API')
# Ask for permission to control Skype
response = skype.Invoke("NAME " + __file__)
response = skype.Invoke("PROTOCOL 8")
# Issue commands
response = skype.Invoke("SET WINDOWSTATE NORMAL")
Это столь не обобщено, как Вы хотели, но это могло бы сделать задание. Для чего-либо кроме простого персонального использования будет требоваться некоторую включенную обработку ошибок.
Источник: общественность Skype ссылка API
Мне удалось соединить сценарий Python, который делает задание (... большая кривая обучения и хороший способ учиться :)
Это не доберется до господствующей тенденции, но я отправляю его для любого, кому может быть интересно.
Поскольку нет никакого способа, которым я знаю о непосредственно определить координаты конкретного Значка панели задач уведомления, я должен был "искать" значок.
Для идентификации значка сценарий имеет "одно время на значок", ПОЛУЧАЮТ proc, который определяет (надо надеяться), уникальную строку пикселей..., к счастью, значки являются очень цветными.
(получение proc обращается к 2 незначительным сценариям удара),
Я не уверен, что askubuntu политика расценивает большую регистрацию кода, поэтому пока я не узнаю, хорошо ли это или нет, я отправил ее на pastebin.ubuntu.com
Основной сценарий является 140 строками фактического кода, но работает к 240 с комментариями, и по некоторой неизвестной причине, когда в pastebin, многие, но не все строки с двумя пробелами, продвигая его к 339! (мой редактор установлен на Unix LF)...
Вот ссылки на основные сценарии Python и 2 сценария удара помощника;