Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

Administradores de SesionesAdministradores de VentanasEscritoriosUtilidades de Escritorio

Gestores de Iconos - IconMgrIceWM Control Center

Gestores de Iconos - Idesk




Gestores de Iconos - Idesk




Copyright

Copyright © José Luis Lara Carrascal  2006-2023   http://manualinux.eu



Sumario

Introducción
Preliminares
Instalación
Configuración
Configurar el inicio de Idesk
Iniciamos Idesk
Funciones de Idesk
Paquetes binarios
Enlaces



 
Introducción  

En este manual trataremos la instalación desde código fuente del gestor de iconos Idesk, posiblemente el mejor gestor de iconos que existe en GNU/Linux y que, desde las últimas versiones, se ha convertido en un excelente gestor de fondos de escritorio, permitiendo la posibilidad de alternarlos de forma periódica.



Preliminares  

1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH


Abrimos una ventana de terminal y ejecutamos el siguiente comando:

[jose@Fedora-18 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin

Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente:

#!/bin/sh

export PATH=/usr/local/bin:$PATH

Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.

$ su -c "install -m755 variables.sh /etc/profile.d"

Tenemos que cerrar el emulador de terminal y volverlo a abrir para que la variable de entorno aplicada sea efectiva. Es conveniente guardar una copia de este script para posteriores instalaciones de nuestro sistema, teniendo en cuenta que es el que se va a utilizar a partir de ahora en todos los manuales de esta web, para establecer variables de entorno globales, excepto en aquellas que sólo afectan al usuario, en las que se utilizará el archivo de configuración personal, ~/.bashrc.

La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.

2) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr

Aún en el caso de que la versión a compilar la vayamos a instalar en el mismo directorio que la que proporciona la distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Idesk para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (16.0.6)
* M4 - (1.4.19)
* Make - (4.4.1)
* Automake - (1.16.5)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.8)
   LibICE - (1.1.1)
   LibX11 - (1.8.6)
   LibXext - (1.3.5)
   LibXft - (2.3.8)
* Freetype2 - (2.13.1)
* Imlib2 - (1.11.1)



Descarga

idesk-0.7.5.tar.bz2  |  idesk_imlib2_pkg-config.diff

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(nproc)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(nproc)"
Modificar el script de Libtool incluido en el paquete para poder hacerlo compatible con LLD

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar jxvf idesk-0.7.5.tar.bz2
$ cd idesk-0.7.5
$ patch -Np1 -i ../idesk_imlib2_pkg-config.diff
$ autoreconf -vif
$ sed -e '31a#include <sys/types.h>' -e '31a#include <sys/stat.h>' -i src/DesktopConfig.h
$ ./configure

Explicación de los comandos

patch -Np1 -i ../idesk_imlib2_pkg-config.diff : Aplica un parche personal para poder compilar el paquete con las últimas versiones de Imlib2.

autoreconf -vif : Actualiza el script de configuración al parche aplicado anteriormente.

sed -e '31a#include <sys/types.h>' -e '31a#include <sys/stat.h>' -i src/DesktopConfig.h : Soluciona un error de compilación con las cabeceras de las últimas versiones de Glibc. En concreto éste:

DesktopConfig.cpp: En la función miembro 'virtual void DesktopConfig::setDesktopOnlyOptions(Table)':
DesktopConfig.cpp:134:40: error: no se encontró una función coincidente para la llamada a 'stat::stat(const char*, stat*)'
        if( stat( directory.c_str(), &b ) < 0 ){
                                        ^

Compilación

$ make

Parámetros de compilación opcionales

-j$(nproc): Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su -c "make install-strip"

Estadísticas de Compilación e Instalación de Idesk

Estadísticas de Compilación e Instalación de Idesk
CPU AMD Ryzen 5 5500
MHz 3593.250 (BoostMax=4457.000)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.4.9-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Versión de Glibc 2.38
Enlazador dinámico LLD 16.0.6
Compilador Clang 16.0.6
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -j12
Tiempo de compilación 2"
Archivos instalados 6
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 224 KB

Consumo inicial de CPU y RAM de Idesk

Consumo inicial de CPU y RAM de Idesk
Programa
CPU RAM
idesk 0 % 27,1 MB
Para medir el consumo de CPU se utiliza el programa top, y para medir el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace.

Archivo de configuración personal

~/.ideskrc Es el archivo de configuración personal de Idesk en nuestro home.

Directorio de configuración personal

~/.idesktop Es el directorio donde se guardan los archivos de configuración de los iconos de Idesk en nuestro home.

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando como root:

$ su -c "make uninstall"

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

idesk-0.7.5-scripts.tar.gz

$ su
# tar zxvf idesk-0.7.5-scripts.tar.gz
# cd idesk-0.7.5-scripts
# ./Desinstalar_idesk-0.7.5

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf idesk-0.7.5-scripts.tar.gz
# cd idesk-0.7.5-scripts
# ./Respaldar_idesk-0.7.5

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_idesk-0.7.5



Configuración de Idesk  

1) ~/.ideskrc
2) ~/.idesktop


1) ~/.ideskrc  


Ejemplo de archivo de configuración
table Config
  FontName: gothic
  FontSize: 9
  FontColor: #FFFFFF
  ToolTip.FontSize: 9
  ToolTip.FontName: gothic
  ToolTip.ForeColor: #000000
  ToolTip.BackColor: #FFFFFF
  ToolTip.CaptionOnHover: true
  ToolTip.CaptionPlacement: Right
  Locked: tru
  Transparency: 50
  Shadow: false
  ShadowColor: #0006FA
  ShadowX: 2
  ShadowY: 2
  Bold: true
  ClickDelay: 300
  IconSnap: true
  SnapWidth: 20
  SnapHeight: 30
  SnapOrigin: BottomRight
  SnapShadow: true
  SnapShadowTrans: 200
  CaptionOnHover: false
  CaptionPlacement: bottom
  FillStyle: fillinvert
  Background.Delay: 30
  Background.Source: ~/Fondos
  Background.File: some_image.jpg
  Background.Mode: Scale
  Background.Color: #C2CCFF
end

table Actions
  Lock: control right doubleClk
  Reload: middle doubleClk
  Drag: left hold
  EndDrag: left singleClk
  Execute[0]: left doubleClk
  Execute[1]: right doubleClk
end
    

Descripción del archivo de configuración de Idesk
FontName: Define el tipo de fuente a utilizar. El valor por defecto es Arial.
FontSize: Define el tamaño de la fuente. El valor por defecto es 16.
ForeColor: Define el color del frente. El valor por defecto es #000000 (negro).


Tooltip.FontName: Define el tipo de fuente a utilizar en los títulos emergentes. El valor por defecto es Arial.
Tooltip.FontSize: Define el tamaño de la fuente de los títulos emergentes. El valor por defecto es 10.
Tooltip.ForeColor: Define el color del frente del título emergente. El valor por defecto es #FFFFFF (blanco).


Tooltip.BackColor: Define el color del fondo del título emergente. El valor por defecto es #FFFACD.


Tooltip.CaptionPlacement: Define la posición en el icono del título emergente. Los valores válidos son:Top, Bottom, Left y Right. (arriba, abajo, a la izquierda y a la derecha).
Tooltip.CaptionOnHover: Un valor true hará que el texto aparezca cuando el puntero del ratón se sitúe encima de un icono. False es el valor por defecto.
Locked: Un valor true bloquea la posibilidad de arrastrar los iconos por la pantalla.
Transparency: Define la transparencia de los iconos entre 0 (ninguna) y 255 (invisible).
HighContrast: Un valor true dibuja un borde alrededor del texto, con el color del texto invertido. Si se define un color, por ejemplo #aa00aa, lo dibujará del color definido. un valor false lo desactiva.
Shadow: Un valor true activa el sombreado del texto. 
ShadowColor: Define el color del sombreado del texto.


ShadowX: Define las coordenadas horizontales de posición del sombreado del texto respecto a la posición del icono. El valor por defecto es 1.
ShadowY: Define las coordenadas verticales de posición del sombreado del texto respecto a la posición del icono. El valor por defecto es 1.
Bold: Un valor true pone en negrita el texto de los iconos.
ClickDelay: Define el número de milisegundos para que un clic sea considerado un doble clic.
SingleClick: Un valor true hace que un solo clic ejecute el comando asociado al icono. Esto inhabilita la facultad de arrastrar el icono.
IconSnap: Un valor true activa el uso de una rejilla transparente para la ubicación de los iconos en la pantalla. Los iconos se ubicarán en el centro de los valores definidos en SnapWidth: y SnapHeight:
SnapWidth: Define la anchura de la cuadrícula en la que se ubicará el icono, partiendo de la base que éste siempre se ubicará en el centro de los valores definidos en este apartado y en el siguiente.
SnapHeight: Define la altura de la cuadrícula en la que se ubicará el icono, partiendo de la base que éste siempre se ubicará en el centro de los valores definidos en este apartado y en el anterior.
SnapOrigin: Define la posición inicial de los iconos. Los valores válidos son: TopLeft, TopRight, BottonLeft y BottomRight. (Arriba a la izquierda, arriba a la derecha, abajo a la izquierda y abajo a la derecha).
SnapShadow: Un valor true hará aparecer una sombra del icono sobre el mismo icono. IconSnap: tiene que estar en true.
SnapShadowTrans: Define la transparencia de SnapShadow entre 0 (ninguna) y 255 (invisible).
CaptionPlacement: Define la posición del título del icono respecto a la posición de éste. Los valores válidos son: Top, Bottom, Left y Right (Arriba, abajo, a la izquierda y a la derecha del icono).
CaptionOnHover: Un valor true hará que el título del icono sólo aparezca cuando se coloque el puntero del ratón sobre el icono. False es el valor por defecto.
FillStyle: Define la apariencia del icono al hacer clic sobre el mismo. FillInvert es el valor por defecto.
Background.File: Define la imagen para el fondo de pantalla. Si la ruta está equivocada o la imagen tiene un formato no soportado, ésta no se mostrará. La imagen sólo se muestra a tamaño original en el estilo Center (por ahora). Esta imagen permanece aunque idesk deje de funcionar. El valor por defecto: None.
Background.Delay: Define el retardo en minutos hasta que se cambie la imagen de fondo por otra. (El valor por defecto: 0  min). Poner 0 si se quiere desactivar el cambio de fondo de pantalla. El valor máximo es 525600 min.
Background.Source: Define el directorio de imágenes a utilizar para el fondo de escritorio. Si éste no existe o está vacío, se utilizará la opción Background.File. El valor por defecto: None
Background.Mode: Define el modo de posición de las imágenes en la pantalla. Los valores posibles son: Stretch (escalado proporcional), Scale (escalado no proporcional), Center (imagen centrada a tamaño original), Fit (imagen ajustada a la pantalla) o Mirror (mosaico). El valor por defecto: Stretch.
Background.Color: Define el color del marco de la imagen cuando ésta se muestra utilizando los modos Center o Fit en la opción Background.Mode. El valor por defecto: None.


CursorOver: Define el tipo de cursor cuando el ratón cubre con el puntero encima de un icono. Los valores válidos son:
       
     num_glyphs
     X_cursor
     arrow
     based_arrow_down
     based_arrow_up
     boat
     bogosity
     bottom_left_corner
     bottom_right_corner
     bottom_side
     bottom_tee
     box_spiral
     center_ptr
     circle
     clock
     coffee_mug
     cross
     cross_reverse
     crosshair
     diamond_cross
     dot
     dotbox
     double_arrow
     draft_large
     draft_small
     draped_box
     exchange
     fleur
     gobbler
     gumby
     hand1
     hand2
     heart
     icon
     iron_cross
     left_ptr
     left_side
     left_tee
     leftbutton
     ll_angle
     lr_angle
     man
     middlebutton
     mouse
     pencil
     pirate
     plus
     question_arrow
     right_ptr
     right_side
     right_tee
     rightbutton
     rtl_logo
     sailboat
     sb_down_arrow
     sb_h_double_arrow
     sb_left_arrow
     sb_right_arrow
     sb_up_arrow
     sb_v_double_arrow
     shuttle
     sizing
     spider
     spraycan
     star
     target
     tcross
     top_left_arrow
     top_left_corner
     top_right_corner
     top_side
     top_tee
     trek
     ul_angle
     umbrella
     ur_angle
     watch
     xterm

2) ~/.idesktop  

Es el directorio donde se colocan los archivos de configuración de los iconos, personalmente recomiendo colocar también los iconos en esta carpeta para tenerlo todo en un mismo sitio, un ejemplo de archivo .lnk :

home.lnk
table Icon
  Caption: home
  Icon: /home/jose/.idesktop/home.jpg 
  X: 26
  Y: 31
  Command[0]: rox /home/jose
  Command[1]: rox /home/jose/documentos

end
 
Las posiciones X e Y no hace falta que se editen, se graban automáticamente cuando se colocan los iconos en el escritorio. El Command[0], se ejecuta con el botón izquierdo del ratón, y el Command[1], con el botón derecho. El Command[1] es siempre opcional. En Caption definimos el nombre del icono y en Icon la ruta a éste.
 


Configurar el inicio de Idesk  

1) Idesk gestiona el fondo de escritorio
2) Idesk no gestiona el fondo de escritorio




1) Idesk gestiona el fondo de escritorio  

a) Blackbox

Siguiendo el método que se utiliza en el manual de Blackbox, lo añadimos al script ~/.blackbox/autostart de la siguiente forma,

#!/bin/sh

idesk &
(sleep 2; bbkeys &) &
docker &

b) Fluxbox

Añadimos el comando de ejecución en la sección correspondiente del script de inicio ~/.fluxbox/startup

# Applications you want to run with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.
#
# unclutter -idle 2 &
# wmnd &
# wmsmixer -w &
wmix &
idesk &

c) IceWM


Añadimos el comando de ejecución al script de inicio ~/.icewm/startup,

#!/bin/sh

idesk &
gai-bgswitcher &
bluecombo &
sleep 5 && wmix &


d) JWM

Añadimos el comando de inicio, reinicio y terminación al archivo de configuración, ~/.jwm/autostart.xml, de la versión en español disponible en la web.

<JWM>

    <StartupCommand>
    idesk &
    </StartupCommand>
   
    <RestartCommand>
    killall -9 idesk &> /dev/null
    idesk &

    </RestartCommand>
   
    <ShutdownCommand>
    killall -9 idesk &> /dev/null    
    </ShutdownCommand>
  
</JWM>  

e) LXDE

Añadimos el comando de ejecución al archivo de configuración, ~/.config/lxsession/LXDE/autostart, un ejemplo.

@idesk
@xscreensaver -no-splash
@lxpanel --profile LXDE
@pcmanfm -d

f) Openbox

Añadimos el comando de ejecución al script de inicio ~/.config/openbox/autostart, autostart.sh en versiones inferiores a la 3.5.

sleep 5; pypanel &
xbindkeys &
idesk &

g) Pekwm

Añadimos el comando de ejecución en la sección correspondiente del script de inicio ~/.pekwm/start.

# There's probably a few other good uses for it, too. I mainly pushed for it
# because when I was doing fluxbox's docs, people used to complain that there
# wasn't one, and I wanted to avoid that for pekwm. ;) --eyez

numlockx &
fbpanel &
idesk &
wmix &

h) Para los que inician X desde terminal con el comando startx

Para los usuarios que inician los entornos gráficos con el comando startx, pueden añadir el comando de ejecución al archivo .xinitrc que se encuentra en nuestro home, si no existe lo creamos, y añadimos lo siguiente:

idesk &
exec sawfish

i) XDM

Añadimos el comando de ejecución al archivo .xsession que se encuentra en nuestro home, si no existe lo creamos, y añadimos lo siguiente:

idesk &
exec sawfish

Para otros administradores de ventanas, consultar sus respectivos manuales, en lo que haga referencia a la ejecución de programas al inicio de estos.

2) Idesk no gestiona el fondo de escritorio  

Si no queremos que Idesk gestione el fondo de escritorio, donde hemos puesto idesk &, tendremos que poner (sleep 5; idesk &) &, para evitar que Idesk arranque antes que el gestor de fondos por defecto, y corrompa la visualización de los iconos (en ese caso tendríamos que reiniciar Idesk pulsando dos veces con el boton central del ratón en cualquiera de los iconos).



Iniciamos Idesk  


Captura Idesk + Fluxbox
Idesk + Fluxbox


Captura Idesk + JWM
Idesk + JWM




Funciones de Idesk  

Botón izquierdo del ratón (2 clics) Lanzador de aplicación.
Botón central del ratón (2 clics) Reinicia Idesk y cambia de fondo de escritorio, si está activado.
Control + botón derecho del ratón (2 clics) Bloquea y desbloquea la posición de los iconos en el escritorio.
Botón izquierdo del ratón (1 clic presionado) Arrastramos los iconos por la pantalla.



Enlaces  


http://idesk.sourceforge.net >> La web de Idesk.

http://idesklinker.sourceforge.net >> La web de IdeskLinker, utilidad gráfica de configuración que ha estado incluida en este manual hasta el 30-05-2010, y cuya falta de actualización la ha convertido en puro abandonware.

http://sourceforge.net/projects/ideskconfig/ >> Otra utilidad de configuración que no cubre todas las opciones de Idesk.

http://sourceforge.net/projects/ideskcfg/ >> Más de lo mismo, pero escrito en TCL y en idioma portugués.


Foro Galería Blog


Actualizado el 11-08-2023

Gestores de Iconos - Idesk

Gestores de Iconos - IconMgrIceWM Control Center