mercoledì 16 agosto 2006

Java Swing / AWT e XGL

Da un paio di mesi sto usando Xgl come server grafico per il mio portatile, mi sto trovando estremamente bene, tanti effetti sono inutili, ma molti semplificano il lavoro e sono divertenti.

Esiste qualche problema con XGL e Compiz (il gestore delle finestre) e le applicazioni Java che usano Swing o Awt.

In special modo viene disegnata solo la root window ma non i sottocomponenti (come pulsanti o menu) e si ottiene una finestra completamente vuota (ma funzionante!) .

Per ovviare al problema ho pensato di utilizzare una sessione nested di X.

Far ciò è semplice, basta installare un server che supporti le sessioni nested, come Xephyr o Xnast, e magari un piccolo gestore di finestre come IceWm.

Per ubuntu/debian è bastato dare un

"apt-get install xfce xfce-gnome xserver-xephyr"

Poi mi sono creato uno shell script per avviarmi netbeans (il programma java che mi serviva)

#! /bin/bash
Xephyr :2 -ac -screen 1270x760 &
icewm --display :2 &
export DISPLAY=:2
~/.netbeans-5.5beta2/bin/netbeans &

e tutto torna a funzionare lanciando lo script...

Questo è un piccolo workaround momentaneo... speriamo che mamma Sun dia una sistemata alle Swing / Awt, o che Novell sistemi Xgl.

Un'altro Workaround è usare un Jdk < 1.5 come 1.4.

Con tutte le novità introdotte da Java 5 (e quelle da Java 6) sarà difficile tornare indietro... io ho preferito smanettare con X....

Ciao Piero

6 commenti:

  1. Speriamo con tutta ste novità tecnologiche di non impazzire. La nostra mente è limitata. Dovremo selezionare cosa vale la pena approfondire e cosa no.

    Xgl è veramente bello .. se la mia scheda non avesse le sue cose ogni tanto! .. mi andrebbe alla grande anche a me :) speriamo che i cari XGLlers sistemino i problemi tuoi e miei :)

    RispondiElimina
  2. Salve,
    Ho provato lo shell script, per risolvere il problema Java Swing / AWT e XGL.
    Sembra che tutto funzioni,quando lo avvio ho notato che si apare una finestra ad 1/4 di schermo, se la massimizzo si vede solo 1/4 di schermo e la parte restante si vede tutto nero.

    RispondiElimina
  3. Probabilemnte dipende dalla risoluzione dello schermo, lo script potrà visualizzare al massimo finestre a 1270×760 (risoluzione che a me serviva)
    Basta cambiare la risluzione (= grandezza della finestra) nello script

    RispondiElimina
  4. non mi funziona...quando faccio partire lo script vedo una finestra nera??? sicuramente sbaglio qualcosa ma non so cosa

    RispondiElimina
  5. vediamo passo passo quello che ho fatto,apt-get install xfce "non lo trova" idem per xfce-gnome,ho pensato di installare icewm e icewm-gnome quelli me li da,nessun problema per installare xephire probabilmente vedo una finestra nera (grigia a barre) perchè non trova nessun gestore di finestre?..Boh non ci capisco

    RispondiElimina
  6. Non so se puo' aiutare.. avevo lo stesso problema per l'avvio di matlab 2007a per Linux e ho risolto in maniera piu' semplice e veloce.

    Basta aggiungere questa riga in ~/.bashrc:
    "export AWT_TOOLKIT=MToolkit"

    Ho trovato questa soluzione su:
    https://bugs.launchpad.net/ubuntu/+bug/120342

    Spero sia utile ;)

    RispondiElimina