Dice:
WM_CLASS(STRING) = “FreeCAD”, “FreeCAD”
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.
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).
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
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.
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
$ 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 -
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 -