Finestra FreeCAD fuori posto (in lxde)

Dice:

WM_CLASS(STRING) = “FreeCAD”, “FreeCAD”

Proviamo con:

Avvia Freecad e poi da terminale:

xdotool search --class FreeCAD windowmove 810 780 windowsize 300 300

Vediamo cosa fa.

E se ancora non funziona dai un:

xprop | grep WM_NORMAL_HINTS

E poi clic sulla finestra di Freecad e copia qui l’output.

1 Mi Piace

La finestra non è cambiata di un pixel.

L’output dice:

WM_NORMAL_HINTS(WM_SIZE_HINTS):

Non da alcun valore?

Prova con

xdotool search --class FreeCAD windowmove 810 780 windowsize 800 600

Sempre dopo aver avviato Freecad.

Niente. Nessuna reazione, nessun output.

La finestra è sempre lì dov’è, in attesa di novità.

Va bene, proviamo con devilspie2.

Installa il tool

sudo dnf install devilspie2

Poi crea una cartella devilspie2 in .config e un file freecad.lua all’interno drlla stessa con il tuo text editor. Deve avere percorso: ~/.config/devilspie2/freecad.lua

All’interno di freecad.lua copia la stringa:

if (get_class_instance_name() == "FreeCAD") then
    set_window_position(448, 312)
    set_window_size(1024, 768)
end

Salva e chiudi il file.

Lancia devilspie2 da terminale (freecad non deve essere in esecuzione):

devilspie2 &

Poi apri freecad e vedi come si comporta (ho cambiato alcuni valori, con un monitor a risoluzione1920x1080 si dovrebbe aprire una finestra freecad 1024x768 in basso al centro dello schermo).

1 Mi Piace

Impossibile risolvere la transazione:
Nessuna corrispondenza per l’argomento: devilspie2

Non è possibile capire come mai i primi due tool provati non hanno funzionato?

Il secondo non ho neanche dovuto installarlo, era già installato.

Quindi era previsto dalla distribuzione che potesse servire.

Ho visto solo ora che devilspie2 è stato rimosso dai repo Fedora.

Dipende dalla finestra Qt (con cui è scritto freecad), che openbox non riesce a gestire.

Al momento non ho altri suggerimenti se non quello di provare a lanciare freecad non da pacchetto che hai installato ma da Appimage.

Prova a scaricare la appimage di Freecad da qui:

e scegli il pacchetto FreeCAD_1.0.2-conda-Linux-x86_64-py311.AppImage

Vediamo se cambia qualcosa.

EDIT:

Possiamo provare uno script che agisca direttamente su X11, ma anche qui, non sono sicuro funzioni al 100%.

Qt?

E non dovrebbe andare bene in LxQt?

Ho anche LxQt ed ho provato ad aprire FreeCAD in una sessione LxQt, ma il problema c’è lo stesso, anche se meno accentuato.

Proviamo ad agire direttamente su X11.

Proviamo lo scrip.

dai un

sudo dnf install python3-xlib

poi vediamo l’output di:

echo $XDG_SESSION_TYPE

1 Mi Piace

echo $XDG_SESSION_TYPE

Mi dice solo:

x11

Crea un nuovo file nella tua home, con nome freecad_window.py

All’interno copia lo script:

#!/usr/bin/env python3
from Xlib import X, display
import time

# Connessione al server X
d = display.Display()
root = d.screen().root

# Apertura di FreeCAD
print("Attesa apertura FreeCAD...")
time.sleep(5)

# Posizione e dimensione
X_POS = 448
Y_POS = 312
WIDTH = 1024
HEIGHT = 768

# Scansione finestre
for w in root.query_tree().children:
    try:
        name = w.get_wm_name()
        cls = w.get_wm_class()
        if cls and "FreeCAD" in cls:
            print(f"Trovata finestra FreeCAD: {name}")
            w.configure(x=X_POS, y=Y_POS, width=WIDTH, height=HEIGHT, border_width=0)
            d.sync()  
            print("Finestra ridimensionata e spostata.")
            break
    except:
        pass

Salva e esci dal text editor

Apri Freecad

Dopo che Freecad è aperto da terminale dai un:

python3 ~/freecad_window.py

Vedi come si comporta.

1 Mi Piace

Mi dice:

Attesa apertura FreeCAD…
Trovata finestra FreeCAD: FreeCAD
X protocol error:
<class ‘Xlib.error.BadMatch’>: code = 8, resource_id = 138412033, sequence_number = 253, major_opcode = 12, minor_opcode = 0
Finestra ridimensionata e spostata.

Ma io la vedo sempre uguale, non mi pare abbia ridimensionato e spostato niente.

La vedo un po’ dura…

Chiudi freecad, e prova a sostituire il contenuto di freecad_window.py con:

#!/usr/bin/env python3
from Xlib import X, display, error
import time

d = display.Display()
root = d.screen().root

X_POS = 448
Y_POS = 312
WIDTH = 1024
HEIGHT = 768

print("In attesa di FreeCAD...")

while True:
    for w in root.query_tree().children:
        try:
            cls = w.get_wm_class()
            name = w.get_wm_name()
            # Filtra solo la finestra principale
            if cls and "FreeCAD" in cls and name and "FreeCAD" in name:
                geom = w.get_geometry()
                # Stampa info per debug
                print(f"Trovata finestra FreeCAD ({geom.width}x{geom.height})")
                try:
                    w.configure(x=X_POS, y=Y_POS, width=WIDTH, height=HEIGHT, border_width=0)
                    d.sync()
                    print("Finestra ridimensionata e spostata con successo.")
                except error.BadMatch:
                    print("Ignoro sub-finestra non configurabile (BadMatch).")
                    continue
                exit(0)
        except error.XError:
            # Ignora altri errori X secondari
            pass
    time.sleep(1)

salva e esci.

Come prima avvia Freecad e poi lancia un:

python3 ~/freecad_window.py

E vediamo

1 Mi Piace

$ python3 ~/freecad_window.py
In attesa di FreeCAD…
Trovata finestra FreeCAD (10x10)
X protocol error:
<class ‘Xlib.error.BadMatch’>: code = 8, resource_id = 142606337, sequence_number = 256, major_opcode = 12, minor_opcode = 0
Finestra ridimensionata e spostata con successo.

Invece è sempre la stessa.

A questo punto non ho più frecce al mio arco…

Puoi provare a far partire la appimage come suggerito sopra,

oppure provare un altro window manger, ad esempio quello di xfce (xfwm4)

Al momento non ho davvero altre idee.

Yatta -

1 Mi Piace

Ho scaricato la apimage ed ho provato a farla partire. Risultato:

FATAL ERROR: Can’t find a valid SQUASHFS superblock on /tmp/xa-AYZBE3/xa-tmp.squashfs

Problema risolto… con il senno di poi.

Ho anche xfce, che non apro mai perchè non mi piace.

Ho aperto FreeCAD in una sessione di xfce. Ho spostato la finestra di FreeCAD. Sono tornato ad Lxde ed ho apeto FreeCAD. La finestra si apre ora nella nuova posizione.

Diciamo che purtroppo non è una vera e propria soluzione, ma un’alternativa, poiché la finestra di Freecad alla fine non si comporta come dovrebbe in lxde e WM openbox.

Vediamo se più avanti mi viene in mente altro.

Saluti

Yatta -

Aggiornamento:

Ho installato lxde sulla mia macchina e fatto alcuni test:

Dopo aver aperto Freecad lancia il comando (ho eliminato le "virgolette” su Freecad):

wmctrl -x -r FreeCAD.FreeCAD -e 0,448,312,1024,768

e la finestra si comporta come previsto.

@Zievatron testa sul tuo sistema e facci sapere.

Yatta -

1 Mi Piace