Le miniguide di UbaWeb

Avviare EOG o EOM o altre applicazioni in finestra massimizzata

Premessa Torna su

2 settembre 2016 - Ubuntu 14.04.5 LTS x86_64, mate, kernel: 4.4.0-36
Oggi ho trovato un post su ubuntu-it dove si chiedeva come far avviare "Eyes Of Gnome" in una finestra massimizzata.
Ho fatto una googolata ed ho visto che Kde permette questa impostazione nativamente; ma per chi non usa KDE?
Ho trovato che si può usare Devil's pie per impostare regole per determinate finestre.
Il programma è presente nei repo (universe) di Ubuntu. A quanto pare però Devil's pie non è più mantenuto ed il progetto viene sviluppato come Devil's pie2.
Ho visto che il programma utilizza la sintassi Lua invece di Lips del progetto originario.
Senza mettermi a legger nulla sulla sintassi del programma ho trovato subito un esempio, dove si impostava lo script di configurazione in base al nome della finestra.

Il problema Torna su

Nell'esempio si fa riferimento al nome della finestra! In EOG (Eyes Of Gnome) e in EOM (Eyes Of Mate) il nome della finestra viene rimpiazzato dal nome del file aperto.
Ho guardato le funzioni disponibili del programma ed ho visto che è possibile utilizzare il nome dell'applicazione con get_application_name(), ok siamo a cavallo.
Poi ho trovato questa pagina che è fondamentale, spiega come installare e come utilizzare devilspie2 e descrive tutti i suoi comandi; c'è un esempio chiarificatore che fa uso anche di get_application_name().
Ora basta trovare la descrizione dell'applicazione che gestisce la finestra.
Esistono vari strumenti per ottenere tutte le informazioni sulle finestre ma anche devilspie2 può farlo, utilizzerò questo.
Basta inserire queste due righe nel file di configurazione che saranno eseguite avviando devilspie2, con l'opzione --debug e la finestra del programma che vogliamo gestire aperta.
debug_print("Window Name: "..get_window_name()); debug_print("Application name: "..get_application_name())

In PraticaTorna su

Installare devilspie2 con:
sudo apt-get install devilspie2

Dopo l'installazione dovrebbe esser stata creata la directory ~/.config/devilspie2; se non esistesse crearla con:
mkdir "$HOME/.config/devilspie2"
La directory è vuota, si deve creare almeno uno script di configurazione, contenente le impostazioni che vogliamo per le varie finestre.

Configurazione di base

Per creare il file di configurazione con gedit:
gedit "$HOME/.config/devilspie2/massimizza_finestre.lua"
(Al posto di "gedit" si può inserire il nome dell'editor di testo che vogliamo utilizzare).
Incollare queste righe e salvare.

debug_print("Window Name: "..get_window_name()); debug_print("Application name: "..get_application_name()) if (get_application_name()=="Visualizzatore di immagini Eye of MATE") then maximize(); end if (get_application_name()=="Visualizzatore di immagini") then maximize(); end if (get_application_name()=="gpicview") then maximize(); end if (get_application_name()=="gThumb") then maximize(); end if (get_application_name()=="geeqie") then maximize(); end

Le prime due righe stampano le informazioni richieste, aprendo la finestra del programma voluto ed eseguendo:
devilspie2 --debug
Le altre righe impostano il comportamento per vari visualizzatori di immagini: eom, eog, gpicview, gThumb e geeqie.
Si possono aggiungere impostazioni per altre finestre e comportamenti diversi.
Per provarlo basta avviare devilspie2 con
devilspie2
Non resta che far partire devilspie2 all'avvio del sistema.
Nel mio caso, uso Ubuntu Mate 14.04 basta aggiungere devilspie2 alle applicazioni d'avvio.

Aggiornamenti Torna su

In questa sezione aggiungerò altre informazioni utili:

Per la sintassi Lua vedere: http://www.lua.org/docs.html
Per le funzioni di devilspie2 vedere: https://www.howtoforge.com/tutorial/ubuntu-desktop-devilspie-2/
Oggi non aggiungo altro; dopo aver fatto qualche prova aggiungerò altre spiegazioni utili.
Bye 8-)

Comandi riconosciuti da Devil's Pie2

(Da usr/share/doc/devilspie2/README.GZ)

debug_print(string)

Debug helper that prints a string to stdout. The string is only printed to
stdout if devilspie2 is run with the --debug option, otherwise nothing will
be printed.




Then, there's the functions to get the properties of a window, and related
information:


get_window_name()

   returns a string containing the name of the current window.


get_window_has_name()

   return true or false depending on if the window has a name or not
   (from version 0.20)


get_application_name()

   returns the application name of the current window.


get_window_geometry()

   Returns the window geometry as four numbers - x-position, y-position,
   width and height. (from version 0.16) - for example you can do something
	like this:

	x, y, width, height = get_window_geometry();
	print("X: "..x..", Y: "..y..", width: "..width..", height: "..height);


get_window_client_geometry()

   returns the window geometry excluding the window manager borders as four
   numbers, x-position, y-position, width and height. (from version 0.16) -
	see get_window_geometry for an example on how to use this function.


get_window_is_maximized()

   Returns true if the window is maximized, false otherwise. (available from
   version 0.21)


get_window_is_maximized_vertically()

   Returns true if the window is vertically maximized, false otherwise.
   (available from version 0.21)


get_window_is_maximized_horisontally()

   Returns true if the window is horisontally maximized, false otherwise.
   (available from version 0.21)


get_window_type()

   Returns the type of the window - The result type is a string, and can
   be one of the following:

   "WINDOW_TYPE_NORMAL"
   "WINDOW_TYPE_DESKTOP"
   "WINDOW_TYPE_DOCK"
   "WINDOW_TYPE_DIALOG"
   "WINDOW_TYPE_TOOLBAR"
   "WINDOW_TYPE_MENU"
   "WINDOW_TYPE_UTILITY"
   "WINDOW_TYPE_SPLASHSCREEN"

   or "WINDOW_TYPE_UNRECOGNIZED" if libwnck didn't recognize the type.

   If the function for some reason didn't have a window to work on the string
   result is "WINDOW_ERROR".

   (available from version 0.21)


get_class_instance_name()

   Gets the class instance name from the WM_CLASS Property for the current
   window. Only available on libwnck 3+, and in devilspie2 version 0.21 or 
   later.


get_window_property(property)

   Returns the window property described in the property string. For a list of
   available properties, you should see the page
   http://standards.freedesktop.org/wm-spec/wm-spec-latest.html

   (Available from version 0.21)


get_window_role

   Returns a string describing the current window role of the matched window as
   defined by it's WM_WINDOW_ROLE hint.


get_window_xid

   Returns the X window id of the current window.


get_window_class

   Returns a string representing the class of the current window.


get_workspace_count

	Return the number of workspaces available (available from version 0.27)


get_screen_geometry

	Returns the screen geometry (two numbers) for the screen of the
	current window (available from version 0.29)

	

and the rest of the commands are used to modify the properties of the windows:


set_window_position(xpos,ypos)

   Set the position of a window.


set_window_position2(xpos,ypos)

   Set the position of a window - Compared to set_window_position, this
   function uses XMoveWindow instead of wnck_window_set_geometry which
   gives a slightly different result.
   (Available from version 0.21)


set_window_size (xsize, ysize)

   Sets the size of a window - takes xsize and ysize as parameters.


set_window_geometry (xpos, ypos, xsize, ysize)

   Sets both size and position of a window in one command. Takes four
   parameters, xpos, ypos, xsize and ysize.


set_window_geometry2 (xpos, ypos, xsize, ysize)

   Sets the window geometry just as set_window_geometry, using
   XMoveResizeWindow instead of its libwnck alternative. This results in
   different coordinates than the set_window_geometry function, and results
   are more similar to the results of the original devilspie geometry function.
   (available from version 0.21)


make_always_on_top()

   Sets a window always on top.


set_on_top()

   sets a window on top of the others. (unlike make_always_on_top, it doesn't
   lock the window in this position.)


shade()

   "Shades" a window, showing only the title-bar.


unshade()

   Unshades a window - the opposite of "shade"


maximize()

   maximizes a window


unmaximize()

   unmaximizes a window


maximize_vertically()

   maximizes the current window vertically.


maximize_horisontally()

   maximizes the current window horisontally.


minimize()

   minimizes a window


unminimize()

   unminimizes a window, that is bringing it back to screen from the minimized
   position/size.


decorate_window()

   Shows all window decoration.


undecorate_window()

   Removes all window decorations.
	

close_window()

	Closes the window. (Available from 0.31)


set_window_workspace(number)

   Moves a window to another workspace. The number variable starts counting at 
   1.


change_workspace(number)

   Changes the current workspace to another. The number variable starts counting
   at 1.


pin_window()

   asks the window manager to put the window on all workspaces.


unpin_window()

   Asks the window manager to put window only in the currently active workspace.


 stick_window()

   Asks the window manager to keep the window's position fixed on the screen,
   even when the workspace or viewport scrolls.


unstick_window()

   Asks the window manager to not have window's position fixed on the screen
   when the workspace or viewport scrolls.


set_skip_tasklist(skip)

   Set this to true if you would like the window to skip listing in your
   tasklist. Takes a boolean(true or false) as value. (from version 0.16)


set_skip_pager(skip)

   Set this to true if you would like the window to skip listing in your pager.
   Takes a boolean(true or false) as value. (from version 0.16)


set_window_above()

   Set the current window above all normal windows. (available from version
   0.21)


set_window_below()

   Set the current window below all normal windows. (available from version
   0.21)


set_window_fullscreen(fullscreen)

   Asks the window manager to set the fullscreen state of the window according
   to the fullscreen boolean. (available from version 0.24)


set_viewport(viewport)

   Moves the window to the requested viewport - Counting starts at number 1.
   (Available from version 0.25)


center()

   Centers the current window on the current workspace.
   (Available from version 0.26)


set_opacity(value)
set_window_opacity(value)

	Sets the window opacity, takes a float value, 1.0 = completely opaque, 
	0.0, completely see-through. Both set_opacity and set_window_opacity
	will do the same thing.
	(Available from version 0.28, set_window_opacity from 0.29)


set_window_type(type)

	Sets the window type, according to _NET_WM_WINDOW_TYPE. The allowed types
	are the standard _NET_WM ones (formatted as a string):

	"_NET_WM_WINDOW_TYPE_DESKTOP"
	"_NET_WM_WINDOW_TYPE_DOCK"
	"_NET_WM_WINDOW_TYPE_TOOLBAR"
	"_NET_WM_WINDOW_TYPE_MENU"
	"_NET_WM_WINDOW_TYPE_UTILITY"
	"_NET_WM_WINDOW_TYPE_SPLASH"
	"_NET_WM_WINDOW_TYPE_DIALOG"
	"_NET_WM_WINDOW_TYPE_NORMAL"

	or shorter versions of the same values 

	"WINDOW_TYPE_DESKTOP"
	"WINDOW_TYPE_DOCK"
	"WINDOW_TYPE_TOOLBAR"
	"WINDOW_TYPE_MENU"
	"WINDOW_TYPE_UTILITY"
	"WINDOW_TYPE_SPLASH"
	"WINDOW_TYPE_DIALOG"
	"WINDOW_TYPE_NORMAL"

	(Function is available from version 0.28)
	
focus()
focus_window()

	Focuses the current window. (Function is available from version 0.30)

Please note that strings comparisons are case sensitive, comparing
"SomeProgram" with "someprogram" will not report equality.


	

Torna su
Sito realizzato da: UbaWeb di Giovanni Ubaldi

Licenza Creative Commons Tutto il contenuto di questo sito se non diversamente dichiarato è di Giovanni Ubaldi ed è distribuito con Licenza:

Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.