Me gustaría imitar el uso de Alfred en Mac OS X, donde si intentas abrir una aplicación después de buscarla, solo abrirá una nueva ventana si el programa aún no se está ejecutando, de lo contrario establecerá el foco en el instancia actualmente en ejecución de esa aplicación. ¿Hay alguna forma de cambiar el comportamiento predeterminado del iniciador para verificar esto antes de abrir una nueva ventana?
16
.desktop
archivos..desktop
Sin embargo, si reemplaza el comando en el archivo, el botón derecho abrir con opción está roto.Respuestas:
Actualización 7 de abril: ¡Se agregó una versión diferente y se encontró a Albert, vea la actualización y el bono a continuación!
Con respecto a la funcionalidad del guión : Usted ha preguntado " ¿Hay alguna forma de cambiar el comportamiento predeterminado del iniciador para verificar esto antes de abrir una nueva ventana ". La respuesta básica es, no, como usuario habitual no tiene forma de agregar ese comportamiento al tablero. Sin embargo, si hubiera un desarrollador de alcance de la unidad que estuviera dispuesto a implementar eso, podría acercarse a ellos o desarrollar uno usted mismo si tiene resolución y está dispuesto a aprender. Mis habilidades de codificación son muy modestas, por lo tanto, uso scripts de shell y el front-end gráfico disponible para los scripts como solución alternativa.
Información relacionada
Publicación original:
He escrito un script que usa el diálogo zenity y wmctrl para lograr lo que pediste. Tenga en cuenta que este es un script gráfico, lo que significa que solo funcionará con Windows, en la GUI, y no funcionará si intenta iniciar algo en tty. Además, por lo que entiendo, Alfred hace exactamente lo mismo. Puede crear un acceso directo de escritorio o un acceso directo de iniciador, como se describe aquí y aquí .
La secuencia de comandos:
Notas al margen: en la versión anterior, el script usaba echo $ ?, para probar si las expresiones anteriores salieron con éxito. Según la sugerencia de muru (de la edición), cambié el código a una versión algo más compacta, por lo que le sugiero que eche un vistazo a la versión anterior y la actual.
Además, anteriormente
wmctrl -a $MYPROG
no funcionaba con las pruebas de google-chrome o chromium-browser; por alguna estúpida razón, algunos programas tienen la propiedad WM_CLASS de la ventana en mayúscula, mientras que el programa que se muestra endpkg --get-selections
minúsculas (solo leeman wmctrl
y ejecutawmctrl -lx
, lo sabrás). Agregar ese -ax debería encargarse de esto. El script muestra la ventana de cromo ya abierta como deberíaOtra cosa: wmctlr es algo extraño, ya que a veces necesita un retraso (tenía experiencia con él en otro script), así que tuve que agregar una
sleep 1
línea. Anteriormente sería un poco intermitente con Firefox, pero ahora funciona de maravilla.El guión en acción
En la siguiente animación, puede ver que en la primera ejecución del script, hay una instancia de firefox abierta, y el script cambia el foco a esa ventana; en la segunda prueba, abro una nueva instancia de google-chrome, que no se había abierto anteriormente. (Nota al margen: si tiene curiosidad sobre el escritorio, por cierto, eso es openbox con cairo dock)
Por sugerencia en los comentarios, animación incrustada eliminada, solo enlace publicado ¡Informe si está roto por favor! http://i.stack.imgur.com/puuPZ.gif
Actualización, 7 de abril
Mejoré un poco el script para hacer que todos los programas enumerados en el cuadro de entrada desplegable de zenity. Ahora el usuario no tiene que memorizar cada programa, sino que simplemente puede desplazarse por una lista de ellos con las teclas de flecha o simplemente abrir el menú desplegable. Además, esta versión mejorada genera ventanas no por nombre, sino por id de ventana, lo que proporciona un rendimiento mucho mejor. Tenga en cuenta que la forma en que reviso los archivos .desktop es algo redundante, usando el comando de corte dos veces, pero como mi script-fu no es tan bueno hasta ahora, esto es todo lo que puedo hacer. ¡Sugerencias para mejorar son bienvenidas!
Prima:
De hecho, he encontrado a Albert , que es la versión Linux de Alfred, pero no lo he probado yo mismo. Vale la pena echarle un vistazo. Sin embargo, como ya señaló Jacob, todavía tiene errores.
Hay una aplicación llamada Gnome-Do, que gráficamente se parece a Alfred, sin embargo, no tiene la misma funcionalidad que este script.
Avíseme si le gusta este script, si hay algo que necesita ser arreglado, y no olvide votar la respuesta si le resulta útil.
fuente
dpkg --get-selectons
. El lanzamiento de escritor libreoffice escribiendo "escritor" no funcionará, pero puede hacer un enlace simbólico en su carpeta ~ / bin, / bin o / usr / bin o usar un alias en .bashrc o .profile.1. Dash the Second
Debajo de un script que se puede usar como una alternativa a Dash, cuando se trata de ejecutar aplicaciones como se describe en su pregunta.
Existe una ventana con la misma funcionalidad que Dash; Si escribe uno o más caracteres de la aplicación, la aplicación aparecerá en la lista. Presione Enterpara iniciar o subir la aplicación, dependiendo de si ya se está ejecutando o no.
Puede llamarlo desde una combinación de teclas de acceso directo, o establecer un icono en el iniciador para usarlo de manera similar a Dash (ver más abajo), o ambos.
La secuencia de comandos
Cómo utilizar
El script necesita estar
wmctrl
instalado:Luego:
dash_alternative.py
Agréguelo a una combinación de teclas de acceso directo: Elija: Configuración del sistema> "Teclado"> "Atajos"> "Atajos personalizados". Haga clic en "+" y agregue el comando:
Explicación
Cuando se ejecuta el script, enumera todas las aplicaciones, representadas en
/usr/share/applications
. Busca en los.dektop
archivos, creando una lista de todos los nombres de las aplicaciones (desde la primera línea "Nombre =") y el comando para ejecutar la aplicación (desde la primera línea "Exec =").Posteriormente, se crea una lista de Zenity, que presenta todas las aplicaciones ordenadas.
Cada vez que se selecciona una aplicación, el script busca en la lista de procesos en ejecución si la aplicación se está ejecutando. Si es así, se abre la ventana correspondiente. Si no, se abre una nueva instancia.
Notas
Para ejecutar el script en 12.04 (ya que la pregunta original fue etiquetada,
12.04
simplemente cambie el shebang#!/usr/bin/env python
y ejecútelo mediante el comandoHasta donde lo probé, el script funciona bien. Los comandos y sus (no-) nombres de proceso correspondientes (por ejemplo,
LibreOffice
<>soffice.bin
), diferentes tipos de ventanas (nautilus
tiene varios tipos de ventanas diferentes, además de ventanas "reales"), múltiples pids por aplicación (Chromium
,Google-chrome
) pueden causar excepciones, que arreglé en los ejemplos encima. Si alguien se encuentra con un problema, menciónelo.2. Adicional: configurarlo como una alternativa al Dash "real" para ejecutar aplicaciones
Guarde el icono a continuación (clic derecho> seguro como) como
dash_alternative.png
Copie el siguiente código en un archivo vacío, guárdelo
~/.local/share/applications
comodash_thesecond.desktop
. Establezca las rutas correctas para/path/to/dash_alternative.py
(el script) y/path/to/dash_alternative.png
(el icono)Arrastre el
.desktop
archivo al lanzador:fuente
.desktop
archivos:~/.local/share/applications
. Pensé que limitaría la búsqueda a aplicaciones instaladas globalmente.Para el iniciador (el panel vertical en el lado izquierdo de la pantalla), este ya es el comportamiento predeterminado, ya que es la interfaz de cambio de tareas.
Para el guión (la parte grande que se abre al hacer clic en el logotipo de Ubuntu), no hay forma de cambiar el comportamiento de esta manera, sin una modificación presumiblemente significativa del código fuente en sí.
Sin embargo, algunas aplicaciones ya pueden hacer esto, ya que están diseñadas para comportarse de esa manera. Sin embargo, todas las aplicaciones no se implementan, y no necesariamente deben implementarse de esa manera.
Sin embargo, como otra característica, si abre la ventana desplegada con Super+ Wy comienza a escribir el nombre de una aplicación, las ventanas para esa aplicación serán las únicas que se muestran.
fuente