LINUX.ORG.RU

Задать размер для диалоговых окон pcmanfm

 ,


0

2

Поставил в rc.lua правило для pcmanfm , ибо достало получать окно на пол экрана, когда открываю pcmanfm во floating layout'e после того, как он был открыт на другом теге с другим layout'ом.

{ rule = { class = "Pcmanfm" },
           callback = function( c )
               c:geometry( { width = 1080 , height = 650 } ) end
Проблема решилась, но возникла новая: теперь диалоговые окна (переименовать, заменить) открывались с таким же размером , выглядит ужасно.
Как можно это решить? Готов поменять файловый менеджер, если pcmanfm нельзя отучить запоминать размер окна, закрытого в последний раз / заставить поменять класс диалоговых окон.

★★★★★

xprop, скорее всего у диалоговых окон роль или ещё что то отличается, то есть если вкратце, то вам нужно более точно указать правило для главного окна.


вру, проверил, сходу они дают одинаковый выхлоп, так что нужно изощряться с дочерними окнами, у https://github.com/Elv13/tyrannical есть что то по этому поводу.

LiBer ★★★
()
Последнее исправление: LiBer (всего исправлений: 2)

Вместо колбэка можно так:

{ rule = { class = "Pcmanfm" },
    properties = {
        width = 1080,
        height = 650
    }
},

ЕМНИП, callback тоже должна быть в properties, хотя, с просонья могу и ошибиться.

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

Не знаю, у меня так , как я писал , работает.

sudopacman ★★★★★
() автор топика
Ответ на: комментарий от sudopacman

диалоговые окна (переименовать, заменить) открывались с таким же размером

Выхлоп xprop основного и диалоговых окон в студию.

r3lgar ★★★★★
()

Если по уму, то, как сказали, нужно смотреть по каким параметрам детектируются дочерние окна.

На крайний случай можно попробовать грязный хак ставящий геометрию только первому окну данного класса:

{ rule = { class = "Pcmanfm" },
           callback = function( c )
               for _, exist in ipairs(awful.client.visible(c.screen)) do if c.class == exist.class then return end end
               c:geometry( { width = 1080 , height = 650 } )
           end

Worron ★★★
()
Ответ на: комментарий от sudopacman

Вопрос не в lua, в том что у дочерних окон роль, имя или типа того должны отличаться, но это у каждого приложения индивидуально нужно смотреть, раз на раз не приходится.

У второго способа недостаток в том, что если откроешь второй экземпляр fm на том же теге его размеры не скорректируются.

Worron ★★★
()
Ответ на: комментарий от sudopacman

Выхлоп xprop основного и диалоговых окон в студию. [2]

хотя я вангую, что у тебя локаль какая-нибудь экзотическая просто и поэтому окно по-другому называется

а в NixOS еще и class может быть неправильным

actionless ★★★★★
()
Последнее исправление: actionless (всего исправлений: 2)
Ответ на: комментарий от actionless

Основное:

_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: True
		Initial state is Normal State.
		bitmap id # to use for icon: 0x1c00022
		bitmap id # of mask for icon: 0x1c00025
		window id # of group leader: 0x1c00001
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
_NET_WM_ICON(CARDINAL) = 	Icon (16 x 16):
	                
	                
	                
	        ░       
	 ░░░░░░         
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	 ░░░░░░░░░░░░░░ 
	                
	                

	Icon (48 x 48):
	                                                
	                                                
	                                                
	                                                
	                                                
	                                                
	                                                
	   ░░░░░░░░░░░░░░░░░░░░░░░                      
	   ░░░░░░░░░░░░░░░░░░░░░░░                      
	   ░░                   ░░                      
	   ░░                   ░░                      
	   ░░                   ░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░                       ░░   
	   ░░░░░░░░░░░░░░░░░                       ░░   
	   ░░░░░░░░░░░░░░░░░                       ░░   
	   ░░░░░░░░░░░░░░░░░                       ░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   
	                                                
	                                                
	                                                
	                                                
	                                                
	                                                

	Icon (24 x 24):
	                        
	                        
	                        
	                        
	            ░           
	            ░░░░░░░░░░  
	  ░░░░░░░░              
	  ░░░░░░░░              
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	  ░░░░░░░░░░░░░░░░░░░░  
	                        
	                        
	                        


_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 29360133
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_USER_TIME(CARDINAL) = 7223427
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x1c00004
WM_CLIENT_LEADER(WINDOW): window id # 0x1c00001
_NET_WM_PID(CARDINAL) = 5705
WM_LOCALE_NAME(STRING) = "ru_RU.UTF-8"
WM_CLIENT_MACHINE(STRING) = "linux"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified minimum size: 472 by 134
		window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "pcmanfm", "Pcmanfm"
WM_ICON_NAME(STRING) = "tiger"
_NET_WM_ICON_NAME(UTF8_STRING) = "tiger"
WM_NAME(STRING) = "tiger"
_NET_WM_NAME(UTF8_STRING) = "tiger"
Диалоговое:
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MODAL
_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: True
		Initial state is Normal State.
		window id # of group leader: 0x1c00001
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
WM_TRANSIENT_FOR(WINDOW): window id # 0x1c00003
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 29401306
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DIALOG
_NET_WM_USER_TIME(CARDINAL) = 7291225
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x1c0a0d9
WM_CLIENT_LEADER(WINDOW): window id # 0x1c00001
_NET_WM_PID(CARDINAL) = 5705
WM_LOCALE_NAME(STRING) = "ru_RU.UTF-8"
WM_CLIENT_MACHINE(STRING) = "linux"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified location: 0, 0
		program specified minimum size: 200 by 125
		window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "pcmanfm", "Pcmanfm"
WM_ICON_NAME(COMPOUND_TEXT) = "Переименовать файл"
_NET_WM_ICON_NAME(UTF8_STRING) = "Переименовать файл"
WM_NAME(COMPOUND_TEXT) = "Переименовать файл"
_NET_WM_NAME(UTF8_STRING) = "Переименовать файл"

sudopacman ★★★★★
() автор топика
Ответ на: комментарий от sudopacman

Сейчас проверил, оказалось накосячил, правильное условие

c ~= exist and c.class == exist.class
Еще в свойствах есть клиента есть pid, возможно проверка по нему решит проблему нескольких экземпляров.

Worron ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.