Necesito una lista con solo aquellas aplicaciones que están actualmente abiertas / ejecutándose en Dash, las que tienen esa pequeña flecha blanca en el lado izquierdo del icono.
¿Hay alguna forma de conseguirlo?

14.04
unity-dash
process
launcher
ovidb
fuente
fuente

Respuestas:
La forma de hacerlo
qdbuseorg.ayatana.bamfinteractuar.Lista de aplicaciones abiertas por
.desktoparchivo:Uso
org.ayatana.bamf.matcher.RunningApplicationsyorg.ayatana.bamf.view.Namemétodosfuente
Interesante pregunta.
Como siempre, hay diferentes formas de obtener una lista de estas aplicaciones, cada una con anuncios y desventajas específicas.
Obtener una lista de procesos, representados en el Iniciador, usando la lista de ventanas
Dado que solo las aplicaciones con una ventana (asignada) aparecen en el Iniciador, usando:
(
wmctrlno está instalado por defecto), podemos obtener una lista de ventanas abiertas y el identificador de proceso al que pertenecen las ventanas. El formato de la salida es:donde para nosotros la información más importante está en:
0x05204641); esta es la ventana -id12618); esta es la identificación del proceso (pid) a la que pertenece la ventana, yverhaal (~) - gedit); Este es el nombre de la ventana .Una vez que tenemos el pid, podemos buscar el nombre del proceso correspondiente mediante el comando:
Podemos guiar los pasos anteriores y enumerar los resultados para las ventanas existentes, con el siguiente aspecto (usando
python):Complicaciones
Esto parece sencillo. Sin embargo, como siempre, la realidad es un poco más complicada. Hay algunas excepciones y complicaciones de las que debemos ocuparnos:
Idle(pythonIDE) otkinterson tales ventanas.wmctrl, pero no aparecen por separado en Dash.LibreOfficeque todos los módulos tengan el nombre del procesosoffice.bin. Al mismo tiempo, ejecutar el comandosoffice.binno funcionará. En caso de que necesite identificar los módulos (Calc,Writeretc.) por separado, necesitaría obtener información adicional, por ejemplo, del nombre de la ventana .gnome-terminal, como aparece en la lista de procesos, como en la salida deps -e ww. En 14.04,gnome-terminalaparece comognome-terminal, sin embargo, en 15.04 / 15.10 se muestra:/usr/lib/gnome-terminal/gnome-terminal-server.Lo que necesitamos arreglar al menos
Para solucionar los problemas más importantes anteriores, debe:
agregue un cheque si la ventana es una ventana "real" o "normal", verificando con
Si la salida incluye la línea:
La ventana es una ventana válida en el sentido de Unity Launcher
gnome-terminalen in15.x(suponiendo que desea que sea el nombre del proceso presentadognome-terminal) necesitamos agregar una excepción, para cambiar el nombre del procesognome-terminalsi aparece como/usr/lib/gnome-terminal/gnome-terminal-serverGuión
Cómo utilizar
El script necesita
wmctrl:copie el script anterior en un archivo vacío, guárdelo como
get_running.pyejecútelo con el comando:
Saldrá como:
o, corre con el argumento
-list:Notas
De su pregunta, no está completamente claro cuál es exactamente el propósito de la lista encontrada. Si necesita tener el nombre de la aplicación, tal como aparece en la interfaz (nombres "legibles"), un enfoque completamente diferente podría ser adecuado:
.desktoparchivo/usr/share/applications. En la mayoría de los casos, podemos concluir el nombre del proceso y el nombre de la interfaz de la aplicación a partir de su.desktoparchivo. Con esta información, podríamos crear una lista de aplicaciones GUI en ejecución relativamente fácil, presentada por su nombre "legible".Sin embargo, también en este caso, la realidad también es más complicada que la teoría, como se explica aquí .
fuente