mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 20:38:08 +01:00
cleaning the house today
This commit is contained in:
@@ -235,8 +235,8 @@ Subject: Re: El paquete WindowMaker funciona bien en Alpha?
|
|||||||
> por favor probar esto? Debería el parámetro ser pasado al compilar
|
> por favor probar esto? Debería el parámetro ser pasado al compilar
|
||||||
> en Alpha?
|
> en Alpha?
|
||||||
|
|
||||||
Descargo de responsabilidad: alphas bajo mi mando nunca han ejecutado X y are
|
Descargo de responsabilidad: alphas bajo mi mando nunca han ejecutado X
|
||||||
least likely to suddenly start running it anytime soon.
|
y es poco probable de que las ejecute repentinamente en algún momento.
|
||||||
|
|
||||||
Alpha suele tener alguna ridícula poca cantidad de memoria compartida
|
Alpha suele tener alguna ridícula poca cantidad de memoria compartida
|
||||||
configurada.
|
configurada.
|
||||||
|
|||||||
25
NEWS
25
NEWS
@@ -92,10 +92,27 @@ that this happened.
|
|||||||
New dock option
|
New dock option
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Copy/paste launch in dock. For example, put
|
Copy/paste launch in dock.
|
||||||
netscape %s in the Docked icon for Netscape,
|
==========================
|
||||||
select an url somewhere and then middle-click the icon.
|
|
||||||
The command will be launched with the "pasted" string.
|
For example, put netscape %s in the Docked icon for Netscape, select an url
|
||||||
|
somewhere and then middle-click the icon. The command will be launched with
|
||||||
|
the "pasted" string.
|
||||||
|
|
||||||
|
|
||||||
|
Xinerama Support
|
||||||
|
================
|
||||||
|
|
||||||
|
Supported Xinerama features:
|
||||||
|
|
||||||
|
- Normal maximization of windows will maximize to only one of the screens,
|
||||||
|
the one where the cursor pointer is.
|
||||||
|
|
||||||
|
- Full Maximize command in window menu
|
||||||
|
|
||||||
|
- Place dialogs in the middle of the head where the pointer is
|
||||||
|
|
||||||
|
- Try to place windows inside one head in non-manual placement modes
|
||||||
|
|
||||||
|
|
||||||
Less dependancies
|
Less dependancies
|
||||||
|
|||||||
370
README.es
Normal file
370
README.es
Normal file
@@ -0,0 +1,370 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GNU Window Maker
|
||||||
|
X11 Window Manager
|
||||||
|
|
||||||
|
<http://windowmaker.org>
|
||||||
|
<ftp://ftp.windowmaker.org>
|
||||||
|
|
||||||
|
por
|
||||||
|
|
||||||
|
Alfredo K. Kojima
|
||||||
|
|
||||||
|
Dan Pascu
|
||||||
|
|
||||||
|
]d
|
||||||
|
|
||||||
|
|
||||||
|
Web/FTP Master
|
||||||
|
|
||||||
|
Phillip Smith
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Felicitaciones! A adquirido un dispositivo excelentísimo
|
||||||
|
que le proporcionará miles de años de uso sin problemas
|
||||||
|
,si no fuera porque indudablemente lo destruirá a través de alguna
|
||||||
|
maniobra estúpida típica de consumidor. Por eso le pedimos
|
||||||
|
por EL AMOR DE DIOS LEA ESTE MANUAL DEL PROPIETARIO CUIDADOSAMENTE
|
||||||
|
ANTES DE DESEMPAQUETAR EL DISPOSITIVO. ¿YA LO DESEMPAQUETÓ, NO?
|
||||||
|
DESEMPAQUETELO Y ENCHÚFELO Y ENCIÉNDALO Y DEJE DE TOQUETEAR LAS PERILLAS,
|
||||||
|
Y AHORA SUS CHICOS, EL MISMO CHICO QUE UNA VEZ METIÓ UNA SALCHICHA EN SU
|
||||||
|
VIDEOCASETERA Y DEFINIÓ UN "AVANCE RÁPIDO", ¿ESTE CHICO TAMBIÉN ESTÁ
|
||||||
|
TOQUETEANDO LAS PERILLAS, CIERTO? ¿Y RECIEN AHORA ESTÁ COMENZANDO A LEER
|
||||||
|
LAS INSTRUCCIONES, CIERTO? PODEMOS TAMBIÉN ROMPER ESTOS DISPOSITIVOS
|
||||||
|
EN LA FÁBRICA ANTES DE DESPACHÁRLOS, SABIA ESO?
|
||||||
|
|
||||||
|
|
||||||
|
-- Dave Barry, "Lea Esto Primero!"
|
||||||
|
|
||||||
|
|
||||||
|
Descripción
|
||||||
|
===========
|
||||||
|
|
||||||
|
Window Maker es el gestor de ventanas GNU para el Sistema de Ventanas X. Fue
|
||||||
|
diseñado para emular la apariencia y funcionalidad de parte del GUI de NEXTSTEP(mr).
|
||||||
|
Procura ser relativamente rápido y pequeño, rico en características, fácil de configurar
|
||||||
|
y usar, con una simple y elegante apariencia sacada desde NEXTSTEP(mr).
|
||||||
|
|
||||||
|
Window Maker fue diseñado teniendo en mente la integración con GNUstep y por eso
|
||||||
|
es el gestor de ventanas "oficial". Es también parte del proyecto GNU (www.gnu.org)
|
||||||
|
. Lea mas sobre GNUstep más adelante en este archivo.
|
||||||
|
|
||||||
|
|
||||||
|
Pistas (información dada por las aplicaciones para integrarse bien con el gestor de
|
||||||
|
ventanas) para Motif(tm), OPEN LOOK(tm), KDE y GNOME también son soportados.
|
||||||
|
Entonces puede reemplazar cualquiera de los gestores de ventana para estos entornos
|
||||||
|
con Window Maker manteniendo la mayoría, si no todo, de la funcionalidad del
|
||||||
|
gestor de ventanas nativo.
|
||||||
|
|
||||||
|
Window Maker antes se llamaba WindowMaker.
|
||||||
|
|
||||||
|
Window Maker no tiene relación con Windowmaker, el software para
|
||||||
|
hacer ventanas y puertas.
|
||||||
|
|
||||||
|
|
||||||
|
Documentación
|
||||||
|
=============
|
||||||
|
|
||||||
|
Lea antes de preguntar.
|
||||||
|
|
||||||
|
* Los archivos README distribuidos por todas partes del árbol de fuentes
|
||||||
|
contienen información relacionada al contenido en los directorios.
|
||||||
|
|
||||||
|
* INSTALL tiene instrucciones de instalación y algunos consejos cuando tenga
|
||||||
|
algún problema. Significa que debería leerlo antes de la instalación.
|
||||||
|
No fue escrito solo para ocupar espacio en el paquete...
|
||||||
|
|
||||||
|
* FAQ: Preguntas Frecuentes. LEALO!!! FAQ.I18N es para
|
||||||
|
preguntas relacionadas con la internacionalización.
|
||||||
|
|
||||||
|
* NEWS: lista los cambios visibles por el usuario desde la versión anterior.
|
||||||
|
Léalo si está actualizando.
|
||||||
|
|
||||||
|
* MIRRORS: algunos lugares alternativos donde puede obtener Window Maker,
|
||||||
|
incluyendo paquetes de Window Maker específicos para ciertas plataformas.
|
||||||
|
|
||||||
|
* BUGFORM: uselo para enviar reportes de errores. Por favor uselo.
|
||||||
|
|
||||||
|
* ChangeLog: ¿que cambió desde la versión anterior?
|
||||||
|
|
||||||
|
* BUGS: lista de errores conocidos.
|
||||||
|
|
||||||
|
*** Tutorial
|
||||||
|
|
||||||
|
Hay un tutorial mantenido por Georges Tarbouriech en:
|
||||||
|
|
||||||
|
http://www.linuxfocus.org/~georges.t/
|
||||||
|
|
||||||
|
*** Guía del Usuario
|
||||||
|
|
||||||
|
La Guía del Usuario de Window Maker puede ser bajada desde el ftp oficial
|
||||||
|
o por sitios web.
|
||||||
|
Puede también ser vista en formato HTML en:
|
||||||
|
|
||||||
|
http://people.delphi.com/crc3419/WMUserGuide/index.htm
|
||||||
|
|
||||||
|
La Guía del Usuario explica como usar Window Maker, los archivos de configuración
|
||||||
|
y opciones.
|
||||||
|
|
||||||
|
*** man pages
|
||||||
|
|
||||||
|
Tipee "man wmaker" en el prompt del shell para obtener ayuda general sobre Window Maker.
|
||||||
|
|
||||||
|
|
||||||
|
Directorios y Archivos en el Árbol de Fuentes
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
* Install es un script para configurar y compilar Window Maker de una forma
|
||||||
|
fácil (no es que la forma normal sea difícil, pero...).
|
||||||
|
|
||||||
|
* AUTORES: los créditos
|
||||||
|
|
||||||
|
* TODO: planes para el futuro.
|
||||||
|
|
||||||
|
* contrib/ tiene algunos parches aportados que no están soportados por Window Maker
|
||||||
|
porque entran en conflicto con la filosofía de diseño de los desarrolladores o por
|
||||||
|
alguna otra razón.
|
||||||
|
|
||||||
|
* util/ tiene varios programas utilitarios.
|
||||||
|
|
||||||
|
* WPrefs.app/ es el programa de configuración.
|
||||||
|
|
||||||
|
* src/wconfig.h posee opciones de compilación que puede cambiar para
|
||||||
|
seleccionar algunas opciones/caracteristicas y otras cosas.
|
||||||
|
|
||||||
|
* WINGs/ biblioteca widget para imitación de NEXTSTEP.
|
||||||
|
|
||||||
|
* wrlib/ biblioteca de procesamiento de imagen.
|
||||||
|
|
||||||
|
* po/ posee catálogos de mensajes que son las versiones traducidas de los mensajes
|
||||||
|
mostrados por Window Maker.
|
||||||
|
|
||||||
|
* docklib-x.x.tar.gz es una biblioteca para escribir dockapps.
|
||||||
|
|
||||||
|
SOCORRO!!!
|
||||||
|
==========
|
||||||
|
|
||||||
|
Hay una lista de correo para discutir sobre Window Maker en
|
||||||
|
wm-user@windowmaker.org. Para suscribirse, envie un mensaje que contenga:
|
||||||
|
|
||||||
|
subscribe
|
||||||
|
en el tema del mensaje a wm-user-request@windowmaker.org
|
||||||
|
|
||||||
|
Si tiene algun problema, pregunte aquí (después de leer los docs, por supuesto). Es
|
||||||
|
más probable que las personas de la lista sepan contestar sus preguntas
|
||||||
|
que nosotros. Para reportes de errores use el BUGFORM.
|
||||||
|
|
||||||
|
Si tiene un problema con una versión precompilada de Window Maker
|
||||||
|
(rpm, deb etc), primero pregunte a la persona que hizo el paquete.
|
||||||
|
|
||||||
|
NOTA IMPORTANTE: cuando pida ayuda (en la lista de correo o a los desarrolladores,
|
||||||
|
directamente) *siempre* envie información sobre el sistema que está usando. Puede
|
||||||
|
usar la sección de información del sistema al final del BUGFORM como una guía.
|
||||||
|
Otra cosa: por favor no envie correo HTML.
|
||||||
|
|
||||||
|
También hay un canal de IRC #windowmaker en openprojects. Únase aquí,
|
||||||
|
conecte su cliente de irc a irc.openprojects.net, irc.linux.com o algún otro
|
||||||
|
servidor de esa red.
|
||||||
|
|
||||||
|
GNUstep
|
||||||
|
=======
|
||||||
|
|
||||||
|
GNUStep es un completo sistema de desarrollo orientado a objetos, basado en la
|
||||||
|
especificación OpenStep liberada por NeXT(tm) (ahora Apple(tm) y Sun(tm)). Ello
|
||||||
|
proveerá todo lo que se necesita para producir aplicaciones multiplataforma,
|
||||||
|
orientadas a objetos, gráficas (y no gráficas); suministrando dentro de otras cosas,
|
||||||
|
bibliotecas base del sistema, una estructura de alto nivel para aplicaciones GUI que
|
||||||
|
usan un modelo de imagenes de tipo Display PostScript(tm) (DGS), objetos para acceso
|
||||||
|
a bases de datos relacionales, objetos distribuidos y un entorno de desarrollo gráfico,
|
||||||
|
con herramientas como un modelador de interfaces, un sistema para administración del
|
||||||
|
proyecto (central de proyecto) y otras herramientas.
|
||||||
|
|
||||||
|
El sistema de desarrollo de GNUStep será usado para crear un entorno de usuario,
|
||||||
|
con todo lo necesario para una completa interface gráfica de usuario, tal como
|
||||||
|
un visualizador de archivos, editores de texto y otras aplicaciones. Note que el
|
||||||
|
entorno de usuario (o "entorno de escritorio") es solo un pequeña parte de todo
|
||||||
|
el proyecto GNUStep y por lo tanto no "compite" con otros proyectos como KDE o GNOME,
|
||||||
|
simplemente porque son cosas completamente diferentes.
|
||||||
|
|
||||||
|
Para más información sobre el proyecto GNUStep, visite: http://www.gnustep.org y
|
||||||
|
http://gnustep.current.nu
|
||||||
|
|
||||||
|
|
||||||
|
Ejecutando multiples instancias de Window Maker
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
No es una buena idea eejcutar más de una instancia de Window Maker desde
|
||||||
|
el mismo usuario (ya que wmaker usará los mismos archivos de configuración)
|
||||||
|
al mismo tiempo. Podría obtener un comportamiento inesperado cuando Window
|
||||||
|
Maker actualiza sus archivos de configuración.
|
||||||
|
|
||||||
|
Si de verdad desea hacer esto, intente ejecutar Window Maker con la opción
|
||||||
|
de linea de comando --static ya que así no actualizará o cambiará ninguno de los
|
||||||
|
archivos de configuración.
|
||||||
|
|
||||||
|
Soporte para Sonido
|
||||||
|
===================
|
||||||
|
|
||||||
|
El sonido es soportado por los sistemas Linux y FreeBSD con el uso de
|
||||||
|
un módulo distribuido separadamente llamado WSoundServer. Hay también
|
||||||
|
una herramienta de configuracion gráfica para definir sus sonidos llamada
|
||||||
|
WSoundPref.
|
||||||
|
Puede bajar esto en:
|
||||||
|
http://shadowmere.student.utwente.nl/
|
||||||
|
|
||||||
|
Note que debe compilar Window Maker con el parámetro --enable-sound
|
||||||
|
y definir la opción DisableSound a NO.
|
||||||
|
|
||||||
|
Soporte para OpenL**k
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Calculo que muchos usuarios, principalmente del mundo académico,
|
||||||
|
tienen que usar aplicaciones escritas usando los toolkits OpenL**k,
|
||||||
|
así que tener soporte para estas aplicaciones debe ser de algún uso.
|
||||||
|
|
||||||
|
Para activarlo, use --enable-openlook al hacer el configure. Note que
|
||||||
|
no todo está implementado.
|
||||||
|
|
||||||
|
Las cosas implementadas incluyen consejos de adorno y el push-pin. Las cosas
|
||||||
|
no implementadas incluyen _SUN_WINDOW_STATE (la cosa compuesta que lleva el estado),
|
||||||
|
cosas que interesan sobre arrastrar y soltar, cabecera (no estoy seguro de que sea así)
|
||||||
|
y cadenas footer.
|
||||||
|
|
||||||
|
Por favor hágame saber si algo no funciona. Si la característica ya está implimentada,
|
||||||
|
pero no funciona por un error, intentaré arreglarlo. Si esta es una característica no
|
||||||
|
implementada y menciona que es importante (obs: no solo superficial), consideraré
|
||||||
|
implementarlo.
|
||||||
|
|
||||||
|
El estado "out" del pushpin es emular un botón presionado. Solo cliquee
|
||||||
|
en el botón para hacer que se libere, lo cuál corresponde al estado
|
||||||
|
pinned-in del pushpin. Si pulsa otra vez en el boton liberado, servirá de
|
||||||
|
botón normal de cerrado: cerrará la ventana.
|
||||||
|
|
||||||
|
|
||||||
|
Ajuste de Rendimiento.
|
||||||
|
=====================
|
||||||
|
Si quiere disminuir el uso de memoria por parte de Window Maker y mejorar el
|
||||||
|
rendimiento, manteniendo una linda apariencia y buena funcionalidad, siga los
|
||||||
|
items de abajo:
|
||||||
|
|
||||||
|
- use texturas sólidas para todo, principalmente barras de título y menúes.
|
||||||
|
Si quiere un escritorio de aspecto lindo, use el estilo Tradicional.
|
||||||
|
- Apague NewStyle y Superfluous
|
||||||
|
- No una muchos atajos al menú y mantenga solo los items esenciales en el menú.
|
||||||
|
- Active DisableClip
|
||||||
|
- edite wconfig.h y desactive el NUMLOCK_HACK y lo mismo con las características
|
||||||
|
que no use (tenga en mente que algunos de los #defines podrían no funcionar,
|
||||||
|
ya que ellos no están completamente soportados). Asegúrese de mantener siempre
|
||||||
|
Numlock y ScrollLock apagados.
|
||||||
|
- Active DisableAnimations. Puede también #undefine ANIMATIONS en wconfig.h
|
||||||
|
- quite las entradas por defecto IconPath y PixmapPath para contener solo las
|
||||||
|
rutas que en verdad tiene en su sistema.
|
||||||
|
- no use imágenes grandes en el fondo raíz.
|
||||||
|
- quite el soporte para los formatos de imagen que no use.
|
||||||
|
- para reducir el uso de la memoria, desactive el caché de ícono, definiendo
|
||||||
|
la variable de entorno RIMAGE_CACHE a 0. Si quiere aumentar el rendimiento
|
||||||
|
a expensas del uso de la memoria, defina este valor a un valor igual al
|
||||||
|
número de íconos distintos que use.
|
||||||
|
|
||||||
|
Control del Mouse por Teclado
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Muchas personas preguntan sobre agregar control por teclado al mouse, como
|
||||||
|
en fvwm, pero Window Maker no tendrá tal característica. La extensión XKB
|
||||||
|
soporta simulación de mouse desde el teclado, de una manera mucho más poderosa
|
||||||
|
que cualquier otra simulación hecha por un administrador de ventanas.
|
||||||
|
|
||||||
|
Para activarlo, presione la combinación de teclas Control+Shift+NumLock o
|
||||||
|
Shift+NumLock. Debiera escuchar el beep del parlante. Para desactivarlo,
|
||||||
|
haga lo mismo.
|
||||||
|
|
||||||
|
Para controlar el mouse el teclado numérico se usa así:
|
||||||
|
- 4 (flecha izquierda), 7 (Home), 8 (flecha arriba), 9 (PgUP), 6 (flecha derecha),
|
||||||
|
3 (PgDn), 2 (flecha abajo) y 1 (Fin) mueve el mouse a la correspondiente
|
||||||
|
dirección;
|
||||||
|
- sosteniendo una de las teclas de arriba y luego sosteniendo la tecla 5 moverá
|
||||||
|
el puntero más rápido;
|
||||||
|
- / seleccionará el primer botón del mouse (botón izquierdo);
|
||||||
|
- * seleccionará el segundo botón del mouse (botón del medio);
|
||||||
|
- - seleccionará el tercer botón del mouse (botón derecho);
|
||||||
|
- 5 hará un click con el botón actualmente seleccionado del mouse;
|
||||||
|
- + hará un doble click con el botón actualmente seleccionado;
|
||||||
|
- 0 (Ins) cliqueará y mantendrá el botón seleccionado actualmente;
|
||||||
|
- . (Del) liberará el botón seleccionado actualmente que fue anteriormente
|
||||||
|
cliqueado con la tecla 0 (Ins).
|
||||||
|
|
||||||
|
Los valores anteriores de las teclas funcionarán en un servidor X XFree86 3.2
|
||||||
|
(X11R6.1) pero su alcance puede variar.
|
||||||
|
|
||||||
|
Como hacer un gdb backtrace
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Backtraces pueden ayudarnos a arreglar errores que hicieron que Window Maker falle.
|
||||||
|
Si encuentra un bug que hace fallar a Window Maker, por favor envie un backtrace con su
|
||||||
|
reporte de error.
|
||||||
|
|
||||||
|
Para hacer un backtrace útil, necesita un archivo core con información de depuración
|
||||||
|
producida por Window Maker cuando falló. Debería haber sido instalado sin stripping también.
|
||||||
|
|
||||||
|
Para compilar wmaker con información de depuración:
|
||||||
|
|
||||||
|
./configure
|
||||||
|
make CFLAGS=-g
|
||||||
|
|
||||||
|
Si obtiene el cuadro de diálogo que le dice que wmaker falló y le
|
||||||
|
pregunta que hacer, respóndale "Abortar y dejar un archivo core"
|
||||||
|
|
||||||
|
script
|
||||||
|
cd src
|
||||||
|
gdb .libs/wmaker path_to_the_core_file
|
||||||
|
|
||||||
|
Luego, en el prompt gdb escriba "bt". Salga de gdb escribiendo "quit"
|
||||||
|
y luego, en el prompt del shell, scriba "exit"
|
||||||
|
|
||||||
|
El archivo llamado typescript contendrá el backtrace.
|
||||||
|
|
||||||
|
Derechos de Autor y Descargo de Responsabilidad
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
Window Maker está registrado por Alfredo K. Kojima y está licensiado por la
|
||||||
|
Licensia Pública General GNU. Lea el archivo COPYING para leer la licensia
|
||||||
|
completa.
|
||||||
|
|
||||||
|
Los íconos que son distribuidos con este programa y fueron hechos por Marco
|
||||||
|
van Hylckama Vlieg, están licenciados por la Licencia Pública General GNU.
|
||||||
|
Lea el archivo COPYING para leer la licencia completa.
|
||||||
|
|
||||||
|
Los íconos listados en COPYING.WTFPL y son distribuidos en este programa
|
||||||
|
fueron hechos por Banlu Kemiyatorn (]d), están licenciados por la
|
||||||
|
"do What The Fuck you want to Public License". Lea el archivo COPYING.WTFPL
|
||||||
|
para leer la licencia completa.
|
||||||
|
|
||||||
|
NeXT, OpenStep y NEXTSTEP son marcas registradas de NeXT Computer, Inc.
|
||||||
|
Todas las otras marcas registradas son propiedad de sus respectivos dueños.
|
||||||
|
|
||||||
|
Los autores se reservan el derecho de hacer cambios en el software sin previo
|
||||||
|
aviso.
|
||||||
|
|
||||||
|
Autores
|
||||||
|
=======
|
||||||
|
|
||||||
|
Alfredo K. Kojima <kojima@windowmaker.org>
|
||||||
|
Dan Pascu <dan@windowmaker.org>
|
||||||
|
]d <id@windowmaker.org>
|
||||||
|
|
||||||
|
Por favor no nos haga preguntas antes de leer la documentación (especialmente
|
||||||
|
la FAQ, este archivo y los archivos INSTALL) y sobre cosas "cool" que ve en
|
||||||
|
las capturas de pantalla del escritorio de las personas.
|
||||||
|
|
||||||
|
El archivo AUTHORS contiene una lista de las personas que han contribuido
|
||||||
|
con el proyecto. El nombre de las personas que han ayudado con localization
|
||||||
|
(traducción) se puede encontrar en po/README y Window Maker/README
|
||||||
|
|
||||||
|
Si tiene algún comentario, arreglos y reportes de errores (complete BUGFORMs)
|
||||||
|
y enviémelos a developers@windowmaker.org
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
traducido por Efraín Maximiliano Palermo <max_drake2001@yahoo.com.ar>
|
||||||
@@ -21,6 +21,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "config.h" /* for HAVE_XCONVERTCASE */
|
||||||
|
|
||||||
|
|
||||||
#include "WPrefs.h"
|
#include "WPrefs.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
@@ -120,6 +123,121 @@ static char *keyOptions[] = {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef HAVE_XCONVERTCASE
|
||||||
|
/* from Xlib */
|
||||||
|
|
||||||
|
static void
|
||||||
|
XConvertCase(sym, lower, upper)
|
||||||
|
register KeySym sym;
|
||||||
|
KeySym *lower;
|
||||||
|
KeySym *upper;
|
||||||
|
{
|
||||||
|
*lower = sym;
|
||||||
|
*upper = sym;
|
||||||
|
switch(sym >> 8) {
|
||||||
|
case 0: /* Latin 1 */
|
||||||
|
if ((sym >= XK_A) && (sym <= XK_Z))
|
||||||
|
*lower += (XK_a - XK_A);
|
||||||
|
else if ((sym >= XK_a) && (sym <= XK_z))
|
||||||
|
*upper -= (XK_a - XK_A);
|
||||||
|
else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis))
|
||||||
|
*lower += (XK_agrave - XK_Agrave);
|
||||||
|
else if ((sym >= XK_agrave) && (sym <= XK_odiaeresis))
|
||||||
|
*upper -= (XK_agrave - XK_Agrave);
|
||||||
|
else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn))
|
||||||
|
*lower += (XK_oslash - XK_Ooblique);
|
||||||
|
else if ((sym >= XK_oslash) && (sym <= XK_thorn))
|
||||||
|
*upper -= (XK_oslash - XK_Ooblique);
|
||||||
|
break;
|
||||||
|
case 1: /* Latin 2 */
|
||||||
|
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||||
|
if (sym == XK_Aogonek)
|
||||||
|
*lower = XK_aogonek;
|
||||||
|
else if (sym >= XK_Lstroke && sym <= XK_Sacute)
|
||||||
|
*lower += (XK_lstroke - XK_Lstroke);
|
||||||
|
else if (sym >= XK_Scaron && sym <= XK_Zacute)
|
||||||
|
*lower += (XK_scaron - XK_Scaron);
|
||||||
|
else if (sym >= XK_Zcaron && sym <= XK_Zabovedot)
|
||||||
|
*lower += (XK_zcaron - XK_Zcaron);
|
||||||
|
else if (sym == XK_aogonek)
|
||||||
|
*upper = XK_Aogonek;
|
||||||
|
else if (sym >= XK_lstroke && sym <= XK_sacute)
|
||||||
|
*upper -= (XK_lstroke - XK_Lstroke);
|
||||||
|
else if (sym >= XK_scaron && sym <= XK_zacute)
|
||||||
|
*upper -= (XK_scaron - XK_Scaron);
|
||||||
|
else if (sym >= XK_zcaron && sym <= XK_zabovedot)
|
||||||
|
*upper -= (XK_zcaron - XK_Zcaron);
|
||||||
|
else if (sym >= XK_Racute && sym <= XK_Tcedilla)
|
||||||
|
*lower += (XK_racute - XK_Racute);
|
||||||
|
else if (sym >= XK_racute && sym <= XK_tcedilla)
|
||||||
|
*upper -= (XK_racute - XK_Racute);
|
||||||
|
break;
|
||||||
|
case 2: /* Latin 3 */
|
||||||
|
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||||
|
if (sym >= XK_Hstroke && sym <= XK_Hcircumflex)
|
||||||
|
*lower += (XK_hstroke - XK_Hstroke);
|
||||||
|
else if (sym >= XK_Gbreve && sym <= XK_Jcircumflex)
|
||||||
|
*lower += (XK_gbreve - XK_Gbreve);
|
||||||
|
else if (sym >= XK_hstroke && sym <= XK_hcircumflex)
|
||||||
|
*upper -= (XK_hstroke - XK_Hstroke);
|
||||||
|
else if (sym >= XK_gbreve && sym <= XK_jcircumflex)
|
||||||
|
*upper -= (XK_gbreve - XK_Gbreve);
|
||||||
|
else if (sym >= XK_Cabovedot && sym <= XK_Scircumflex)
|
||||||
|
*lower += (XK_cabovedot - XK_Cabovedot);
|
||||||
|
else if (sym >= XK_cabovedot && sym <= XK_scircumflex)
|
||||||
|
*upper -= (XK_cabovedot - XK_Cabovedot);
|
||||||
|
break;
|
||||||
|
case 3: /* Latin 4 */
|
||||||
|
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||||
|
if (sym >= XK_Rcedilla && sym <= XK_Tslash)
|
||||||
|
*lower += (XK_rcedilla - XK_Rcedilla);
|
||||||
|
else if (sym >= XK_rcedilla && sym <= XK_tslash)
|
||||||
|
*upper -= (XK_rcedilla - XK_Rcedilla);
|
||||||
|
else if (sym == XK_ENG)
|
||||||
|
*lower = XK_eng;
|
||||||
|
else if (sym == XK_eng)
|
||||||
|
*upper = XK_ENG;
|
||||||
|
else if (sym >= XK_Amacron && sym <= XK_Umacron)
|
||||||
|
*lower += (XK_amacron - XK_Amacron);
|
||||||
|
else if (sym >= XK_amacron && sym <= XK_umacron)
|
||||||
|
*upper -= (XK_amacron - XK_Amacron);
|
||||||
|
break;
|
||||||
|
case 6: /* Cyrillic */
|
||||||
|
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||||
|
if (sym >= XK_Serbian_DJE && sym <= XK_Serbian_DZE)
|
||||||
|
*lower -= (XK_Serbian_DJE - XK_Serbian_dje);
|
||||||
|
else if (sym >= XK_Serbian_dje && sym <= XK_Serbian_dze)
|
||||||
|
*upper += (XK_Serbian_DJE - XK_Serbian_dje);
|
||||||
|
else if (sym >= XK_Cyrillic_YU && sym <= XK_Cyrillic_HARDSIGN)
|
||||||
|
*lower -= (XK_Cyrillic_YU - XK_Cyrillic_yu);
|
||||||
|
else if (sym >= XK_Cyrillic_yu && sym <= XK_Cyrillic_hardsign)
|
||||||
|
*upper += (XK_Cyrillic_YU - XK_Cyrillic_yu);
|
||||||
|
break;
|
||||||
|
case 7: /* Greek */
|
||||||
|
/* Assume the KeySym is a legal value (ignore discontinuities) */
|
||||||
|
if (sym >= XK_Greek_ALPHAaccent && sym <= XK_Greek_OMEGAaccent)
|
||||||
|
*lower += (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent);
|
||||||
|
else if (sym >= XK_Greek_alphaaccent && sym <= XK_Greek_omegaaccent &&
|
||||||
|
sym != XK_Greek_iotaaccentdieresis &&
|
||||||
|
sym != XK_Greek_upsilonaccentdieresis)
|
||||||
|
*upper -= (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent);
|
||||||
|
else if (sym >= XK_Greek_ALPHA && sym <= XK_Greek_OMEGA)
|
||||||
|
*lower += (XK_Greek_alpha - XK_Greek_ALPHA);
|
||||||
|
else if (sym >= XK_Greek_alpha && sym <= XK_Greek_omega &&
|
||||||
|
sym != XK_Greek_finalsmallsigma)
|
||||||
|
*upper -= (XK_Greek_alpha - XK_Greek_ALPHA);
|
||||||
|
break;
|
||||||
|
case 0x14: /* Armenian */
|
||||||
|
if (sym >= XK_Armenian_AYB && sym <= XK_Armenian_fe) {
|
||||||
|
*lower = sym | 1;
|
||||||
|
*upper = sym & ~1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static char*
|
static char*
|
||||||
captureShortcut(Display *dpy, _Panel *panel)
|
captureShortcut(Display *dpy, _Panel *panel)
|
||||||
{
|
{
|
||||||
@@ -135,7 +253,8 @@ captureShortcut(Display *dpy, _Panel *panel)
|
|||||||
ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0);
|
ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0);
|
||||||
if (!IsModifierKey(ksym)) {
|
if (!IsModifierKey(ksym)) {
|
||||||
XConvertCase(ksym, &lksym, &uksym);
|
XConvertCase(ksym, &lksym, &uksym);
|
||||||
key=XKeysymToString(uksym);
|
key=XKeysymToString(uksym);
|
||||||
|
|
||||||
panel->capturing = 0;
|
panel->capturing = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ typedef struct _Panel {
|
|||||||
|
|
||||||
WMFrame *pipeF;
|
WMFrame *pipeF;
|
||||||
WMTextField *pipeT;
|
WMTextField *pipeT;
|
||||||
|
WMButton *pipeCacheB;
|
||||||
|
|
||||||
WMFrame *dpathF;
|
WMFrame *dpathF;
|
||||||
WMTextField *dpathT;
|
WMTextField *dpathT;
|
||||||
@@ -134,6 +135,7 @@ typedef struct {
|
|||||||
} external;
|
} external;
|
||||||
struct {
|
struct {
|
||||||
char *command;
|
char *command;
|
||||||
|
unsigned cached:1;
|
||||||
} pipe;
|
} pipe;
|
||||||
struct {
|
struct {
|
||||||
char *directory;
|
char *directory;
|
||||||
@@ -691,8 +693,8 @@ createPanel(_Panel *p)
|
|||||||
/* pipe */
|
/* pipe */
|
||||||
|
|
||||||
panel->pipeF = WMCreateFrame(panel->optionsF);
|
panel->pipeF = WMCreateFrame(panel->optionsF);
|
||||||
WMResizeWidget(panel->pipeF, width, 100);
|
WMResizeWidget(panel->pipeF, width, 150);
|
||||||
WMMoveWidget(panel->pipeF, 10, 50);
|
WMMoveWidget(panel->pipeF, 10, 30);
|
||||||
WMSetFrameTitle(panel->pipeF, _("Command"));
|
WMSetFrameTitle(panel->pipeF, _("Command"));
|
||||||
|
|
||||||
panel->pipeT = WMCreateTextField(panel->pipeF);
|
panel->pipeT = WMCreateTextField(panel->pipeF);
|
||||||
@@ -710,6 +712,14 @@ createPanel(_Panel *p)
|
|||||||
WMSetLabelText(label, _("Enter a command that outputs a menu\n"
|
WMSetLabelText(label, _("Enter a command that outputs a menu\n"
|
||||||
"definition to stdout when invoked."));
|
"definition to stdout when invoked."));
|
||||||
|
|
||||||
|
|
||||||
|
panel->pipeCacheB = WMCreateSwitchButton(panel->pipeF);
|
||||||
|
WMResizeWidget(panel->pipeCacheB, width - 20, 40);
|
||||||
|
WMMoveWidget(panel->pipeCacheB, 10, 110);
|
||||||
|
WMSetButtonText(panel->pipeCacheB,
|
||||||
|
_("Cache menu contents after opening for\n"
|
||||||
|
"the first time"));
|
||||||
|
|
||||||
WMMapSubwidgets(panel->pipeF);
|
WMMapSubwidgets(panel->pipeF);
|
||||||
|
|
||||||
|
|
||||||
@@ -983,11 +993,17 @@ parseCommand(WMPropList *item)
|
|||||||
/*
|
/*
|
||||||
* dir menu, menu file
|
* dir menu, menu file
|
||||||
* dir WITH
|
* dir WITH
|
||||||
* |pipe (TODO: ||pipe)
|
* |pipe
|
||||||
*/
|
*/
|
||||||
p = parameter;
|
p = parameter;
|
||||||
while (isspace(*p) && *p) p++;
|
while (isspace(*p) && *p) p++;
|
||||||
if (*p == '|') {
|
if (*p == '|') {
|
||||||
|
if (*(p+1) == '|') {
|
||||||
|
p++;
|
||||||
|
data->param.pipe.cached = 0;
|
||||||
|
} else {
|
||||||
|
data->param.pipe.cached = 1;
|
||||||
|
}
|
||||||
data->type = PipeInfo;
|
data->type = PipeInfo;
|
||||||
data->param.pipe.command = wtrimspace(p+1);
|
data->param.pipe.command = wtrimspace(p+1);
|
||||||
} else {
|
} else {
|
||||||
@@ -1226,6 +1242,10 @@ updateMenuItem(_Panel *panel, WEditMenuItem *item, WMWidget *changedWidget)
|
|||||||
REPLACE(data->param.pipe.command,
|
REPLACE(data->param.pipe.command,
|
||||||
WMGetTextFieldText(panel->pipeT));
|
WMGetTextFieldText(panel->pipeT));
|
||||||
}
|
}
|
||||||
|
if (changedWidget == panel->pipeCacheB) {
|
||||||
|
data->param.pipe.cached =
|
||||||
|
WMGetButtonSelected(panel->pipeCacheB);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ExternalInfo:
|
case ExternalInfo:
|
||||||
@@ -1290,6 +1310,7 @@ menuItemCloned(WEditMenuDelegate *delegate, WEditMenu *menu,
|
|||||||
|
|
||||||
case PipeInfo:
|
case PipeInfo:
|
||||||
newData->param.pipe.command = DUP(data->param.pipe.command);
|
newData->param.pipe.command = DUP(data->param.pipe.command);
|
||||||
|
newData->param.pipe.cached = data->param.pipe.cached;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ExternalInfo:
|
case ExternalInfo:
|
||||||
@@ -1415,6 +1436,7 @@ menuItemSelected(WEditMenuDelegate *delegate, WEditMenu *menu,
|
|||||||
|
|
||||||
case PipeInfo:
|
case PipeInfo:
|
||||||
WMSetTextFieldText(panel->pipeT, data->param.pipe.command);
|
WMSetTextFieldText(panel->pipeT, data->param.pipe.command);
|
||||||
|
WMSetButtonSelected(panel->pipeCacheB, data->param.pipe.cached);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ExternalInfo:
|
case ExternalInfo:
|
||||||
@@ -1682,11 +1704,14 @@ processData(char *title, ItemData *data)
|
|||||||
if (!data->param.pipe.command)
|
if (!data->param.pipe.command)
|
||||||
return NULL;
|
return NULL;
|
||||||
WMAddToPLArray(item, pomenu);
|
WMAddToPLArray(item, pomenu);
|
||||||
s1 = wstrconcat("| ", data->param.pipe.command);
|
if (data->param.pipe.cached)
|
||||||
|
s1 = wstrconcat("| ", data->param.pipe.command);
|
||||||
|
else
|
||||||
|
s1 = wstrconcat("|| ", data->param.pipe.command);
|
||||||
WMAddToPLArray(item, WMCreatePLString(s1));
|
WMAddToPLArray(item, WMCreatePLString(s1));
|
||||||
wfree(s1);
|
wfree(s1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ExternalInfo:
|
case ExternalInfo:
|
||||||
if (!data->param.external.path)
|
if (!data->param.external.path)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ es.po Spanish Alvaro Herrera <alvherre@webhost.cl>
|
|||||||
fi.po Finnish Tomi Kajala <tomi@iki.fi>
|
fi.po Finnish Tomi Kajala <tomi@iki.fi>
|
||||||
it.po Italian Michele Campeotto <micampe@f2s.com>
|
it.po Italian Michele Campeotto <micampe@f2s.com>
|
||||||
ru.po Russian Igor P. Roboul <igor@srcso.sochi.su>
|
ru.po Russian Igor P. Roboul <igor@srcso.sochi.su>
|
||||||
de.po German Bernd Eggert <Bernd.Eggert@t-online.de>
|
de.po German Torsten Marek <torsten.marek@vbdnet.de>
|
||||||
|
Bernd Eggert <Bernd.Eggert@t-online.de>
|
||||||
Guido Scholz <guido.scholz@bayernline.de>
|
Guido Scholz <guido.scholz@bayernline.de>
|
||||||
hu.po Hungarian Horvath Szabolcs <horvathsz@penguinpowered.com>
|
hu.po Hungarian Horvath Szabolcs <horvathsz@penguinpowered.com>
|
||||||
bg.po Bulgarian Slavei Karadjov <slaff@exco.net>
|
bg.po Bulgarian Slavei Karadjov <slaff@exco.net>
|
||||||
|
|||||||
58
doc/wcopy.1
Normal file
58
doc/wcopy.1
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
.TH wcopy,wpaste 1 04/09/01
|
||||||
|
.UC 4
|
||||||
|
.SH NAME
|
||||||
|
wcopy \- copy stdin to an X11 cut buffer
|
||||||
|
wpaste \- paste X11 cut buffer to stdout
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B wcopy [ [0-9]... ] [wxcopy's normal args]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBwcopy\fP reads from standard input and copies it to the nominated
|
||||||
|
X11 cut buffers.
|
||||||
|
The default is the first cut buffer.
|
||||||
|
.PP
|
||||||
|
\fBwpaste\fP pastes the nominated X11 cut buffers(s)
|
||||||
|
to standard output.
|
||||||
|
The default is the first cut buffer.
|
||||||
|
.PP
|
||||||
|
Note that the cut buffers are numbered starting from 0.
|
||||||
|
.PP
|
||||||
|
Simple integer arguments pick a cut-buffer.
|
||||||
|
.PP
|
||||||
|
For \fBwcopy\fP,
|
||||||
|
the argument number picks a cut-buffer to copy the standard input to.
|
||||||
|
(Subsequent copies are taken from the first nominated buffer \-
|
||||||
|
it does not try to re-read the input!))
|
||||||
|
.SH EXAMPLES
|
||||||
|
.TP 1.5i
|
||||||
|
.B echo fred | wcopy 1 2
|
||||||
|
This puts the word "fred" into the 2nd and 3rd cut-buffers.
|
||||||
|
.TP 1.5i
|
||||||
|
.B wpaste | tr "A-Z" "a-z" | wcopy 1
|
||||||
|
This copies the clipboard then translates all upper case letters to lower in
|
||||||
|
the 1st
|
||||||
|
cut buffer and copies the result into the 2nd.
|
||||||
|
.TP 1.5i
|
||||||
|
.B wpaste 0 | fmt -w 66 | sed 's/^/> /' | wcopy 1
|
||||||
|
This reformats the clipboard to paragraphs with lines no longer than 66
|
||||||
|
characters, inserts typical email quoting characters, and copies the
|
||||||
|
output to the 2nd cut-buffer.
|
||||||
|
.TP 1.5i
|
||||||
|
.B wpaste | sed 's/^> *//' | wcopy
|
||||||
|
This removes email quotes from the start of lines in the clipboard
|
||||||
|
and replaces the clipboard with the un-quoted material.
|
||||||
|
.TP 1.5i
|
||||||
|
.B wpaste > ~/.myclipboard
|
||||||
|
Copies the clipboard into a location where it can be pixked up from other
|
||||||
|
computers (e.g. even from a Windows machine) \- as per the file permissions
|
||||||
|
you choose for the ".myclipboard" file.
|
||||||
|
.SH ENVIRONMENT
|
||||||
|
If WXCOPY_DEFS or WXPASTE_DEFS are defined in your environment,
|
||||||
|
they will always be provided as the first argument(s) to the
|
||||||
|
respective underlying command.
|
||||||
|
.SH BUGS
|
||||||
|
Don't use "-cutbuffer N" notation as per wxcopy/wxpaste:
|
||||||
|
stick to just using the plain unadorned number(s) that wcopy/wpaste expect.
|
||||||
|
.SH SEE ALSO
|
||||||
|
wxcopy(1), wxpaste(1), xcb(1)
|
||||||
|
.SH AUTHOR
|
||||||
|
Luke Kendall
|
||||||
@@ -7,7 +7,8 @@ ja.po Japanese 1 ABE Shige <sabe@ibm.net>
|
|||||||
MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>
|
MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>
|
||||||
Takeo Hashimoto <HashimotoTakeo@mac.com>
|
Takeo Hashimoto <HashimotoTakeo@mac.com>
|
||||||
pt.po Portuguese Eliphas Levy Theodoro <eliphas@conectiva.com.br>
|
pt.po Portuguese Eliphas Levy Theodoro <eliphas@conectiva.com.br>
|
||||||
de.po German Bernd Eggert <Bernd.Eggert@t-online.de>
|
de.po German Torsten Marek <torsten.marek@vbdnet.de>
|
||||||
|
Bernd Eggert <Bernd.Eggert@t-online.de>
|
||||||
Matthias Warkus <mawarkus@t-online.de>
|
Matthias Warkus <mawarkus@t-online.de>
|
||||||
Guido Scholz <guido.scholz@bayernline.de>
|
Guido Scholz <guido.scholz@bayernline.de>
|
||||||
es.po Spanish Raul Benito Garcia <raul@fi.upm.es>
|
es.po Spanish Raul Benito Garcia <raul@fi.upm.es>
|
||||||
|
|||||||
Reference in New Issue
Block a user