autocompletar a nivel de escritorio

11

A menudo escribo las mismas palabras en varias aplicaciones:

  • Editor (emacs, vi)
  • Navegador web
  • Conchas

Sería genial tener un autocompletado de las palabras que escribí durante la última semana disponibles en todas las aplicaciones anteriores.

Cada uno de ellos tiene una forma de mejorar la velocidad de escritura. Pero algo a nivel de escritorio sería lo mejor.

Ejemplo: "Integración continua". Quiero una forma rápida de escribir esta palabra sin cambiar el programa que recibe la entrada.

¿Ya hay algo como esto?

guettli
fuente
¿Suena como Synapse ( lifehacker.com/5704221/… )?
Salem
Creo que significan algo como el autocompletado de LibreOffice. Guarda las palabras que escribe (que cumplen con un requisito de longitud personalizable). Cuando escribe las primeras letras de una palabra que ha guardado, le ofrecerá escribir el resto, y puede presionar la pestaña para escribir o seguir escribiendo para negarlo.
Andy Castille

Respuestas:

7

La solución a su solicitud es el Método de entrada.

Lo que ha descrito es algo familiar para la mayoría de los usuarios del lenguaje CJK. Repasemos cómo funciona el método de entrada en los sistemas Linux actuales.

El sistema de método de entrada

Aquí hay una arquitectura simple para un sistema de método de entrada común:

NOTA: Yo Snapshot esta imagen de la entrada X Protocolo Método . Algunas de las flechas son irrelevantes para la siguiente discusión.

Históricamente, XIM (el protocolo X Input Method) fue el único protocolo. Es demasiado complejo y carece de algunas características deseadas. Por lo tanto, está mayormente abandonado, aunque los kits de herramientas populares como GTK, Qt todavía proporcionan compatibilidad.

Un sistema moderno de método de entrada contiene varias partes:

  1. Soporte de biblioteca del lado del cliente

    • implementado típicamente como un módulo cargado por kits de herramientas (por ejemplo, para GTK, ver /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/)
  2. Servidor de método de entrada
  3. Servidor X

¿Cómo encajan estas partes?

Un usuario escribe una clave. El servidor X recibe el evento de hardware desde la interfaz evdev, compone un XEvent y lo envía a la aplicación bajo el foco del teclado. El módulo de método de entrada del kit de herramientas de aplicación (GTK, Qt) intercepta el evento y pasa la información al servidor del método de entrada. El servidor del método de entrada calcula lo que el usuario puede desear y pasa parte del texto al módulo de MI.

Ahora, hablemos sobre la arquitectura del servidor de mensajería instantánea.
Un servidor de mensajería instantánea generalmente consta de dos partes:

  1. Un marco de mensajería instantánea que maneja las complejidades específicas de la plataforma y proporciona una interfaz agradable para el motor de mensajería instantánea y el kit de herramientas de módulos de mensajería instantánea. Proporciona los mecanismos de IPC utilizados por el módulo de IM, el servidor y el motor.
  2. Varios motores de mensajería instantánea hacen el trabajo real de transformar las claves escritas por el usuario en el texto deseado. Los motores de MI pueden ser bibliotecas compartidas cargadas por el servidor de MI o procesos independientes que se comunican con el servidor de MI.
  3. Los programas de configuración del método de entrada auxiliar proporcionan una interfaz de usuario amigable para personalizar el servidor IM y los comportamientos del motor.

Con todo, lo que hace un IM es transformar lo que escribe en algo diferente y, opcionalmente, proporcionar predicciones.

Un ejemplo

Usamos ibus-pinyinaquí para escribir algunos caracteres chinos.

La romanización de 汉语拼音 es han yu pin yin. Primero, debe escribir todas estas letras para obtener los cuatro caracteres chinos. Pero después de algunas veces, solo necesita escribir los cuatro caracteres iniciales h y p ypara obtener el carácter chino.

En el ibus-pinyincaso, han yu pin yinse acorta a h y p y.
Los motores de mensajería instantánea más avanzados utilizan técnicas de aprendizaje estadístico para proporcionar una mejor predicción. Nada puede impedirle escribir un motor de método de entrada en inglés para proporcionar un impulso de escritura.

Como beneficio adicional, todos los kits de herramientas tienen soporte para métodos de entrada, excepto algunos programas X antiguos. Entonces esta es una solución bastante universal.


Gracias a Anders FU Kiær. Características / Typing-Booster | Fedora Project Wiki debería ser la respuesta

sgx1
fuente
1
El marco de mensajería instantánea más utilizado es ibus . si tengo tiempo, trabajaré en escribir un motor de mensajería instantánea para hacerlo. cualquiera puede probarlo y dejar un enlace si tiene un código de prueba de concepto.
sgx1
Tu respuesta es la mejor. Te doy la recompensa :-)
guettli
3

Echa un vistazo a mi script, TextSuggest .

En acción:

Imgur

Instalación:

Instale los siguientes paquetes:

  • xdotool
  • xclip
  • suckless-tools(para dmenu)

Luego asigne 2 atajos de teclado:

  • uno a `python3 /path/to/TextSuggest.py --noselect
  • el otro para python3 /path/to/TextSuggest.py

El primero simplemente proporcionará una lista de búsqueda de todas las palabras. Use el segundo cuando tenga texto seleccionado y desee obtener sugerencias / finalizaciones para él.

Las sugerencias aceptadas se almacenan como historial (y luego se sugieren primero) en el archivo ~/.textsuggest_history.txt.

Puede definir palabras personalizadas y expansiones / alias en ~/.Custom_Words.txt.

ID universalmente único
fuente
0

Echa un vistazo a Autokey . Puede ajustarse a tus necesidades. C / P de su sitio:

AutoKey es una utilidad de automatización de escritorio para Linux y X11. Le permite administrar la colección de scripts y frases, y asignarles abreviaturas y teclas de acceso rápido. Esto le permite ejecutar un script o insertar texto a pedido en cualquier programa que esté utilizando.

Detnuomnu
fuente