LINUX.ORG.RU

Move/resize для окна по названию, даже если оно не активно

 


0

1

Ку!
Хочется в openbox настроить перемещение окон по хоткеям, но уже после открытия окна.
Чтоб было понятнее зачем это - хочу чтоб каждая софтина была на своём месте на мониторе, тоесть в идеале я открываю 5 разных софтин, жму комбинацию и окна прописаные в правилах команды встают на свои места и с нужным размером.
Move/resize не проблема, нашёл в документации, например:

    <keybind key="A-F8">
      <action name="MoveResizeTo">
        <x>center</x>
        <y>center</y>
        <width>75%</width>
        <height>75%</height>
      </action>
    </keybind>

Но это работает для текущего активного окна, а вот как обращаться к окну по его названию даже если оно не активное?

UPD: тайлинг не предлагать

★★★★★

Например не заниматься фигнёй с хоткеями, а прописать правила для окон по классу/заголовку в <applications/>

anonymous ()

Pytyle. «Тайлинг для OpenBox».

Или можно стянуть конфиг с crunchbang'а;-) Там как раз изменение положения/рамер окон по хоткею есть. Не совсем то, что нужно;-) Но зато своё!

У меня же, как раз из crunchbang'а стащил:

<keybind key="W-A-Right">
	<action name="UnmaximizeFull"/>
	<action name="MaximizeVert"/>
	<action name="MoveResizeTo">
	<x>640</x>
	<y>0</y>
	<width>50%</width>
</keybind>

<keybind key="W-A-Up">
	<action name="ToggleMaximizeFull"/>
</keybind>

<keybind key="W-A-Down">
	<action name="ToggleShade"/>
</keybind>

<keybind key="A-F6">
	<action name="Iconify"/>
</keybind>

<keybind key="A-F4">
	<action name="Close"/>
</keybind>

<keybind key="A-Escape">
	<action name="Lower"/>
	<action name="FocusToBottom"/>
	<action name="Unfocus"/>
</keybind>
<keybind key="W-Right">
	<action name="GrowToEdgeEast"/>
</keybind>

<keybind key="W-Left">
	<action name="GrowToEdgeWest"/>
</keybind>

<keybind key="W-Down">
	<action name="GrowToEdgeSouth"/>
</keybind>

<keybind key="W-Up">
	<action name="GrowToEdgeNorth"/>
</keybind>


Если же хотите, чтобы приложение открылось в заданном месте экрана:
<application name="urxvt_s_srv">
 <position force="yes">
   <x>0</x><y>0</y>
 </position>
 <size>
  <width>50%</width>
  <height>50%</height>
 </size>
 <desktop>1</desktop>
Как раз заданное окно откроется на своём месте!

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

вот еслиб <application/> можно было бы в <keybind/> засунуть - проблемы была бы решена, но так не работает

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

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

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

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

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

Подобного не реализовывал, но если ничего не найдешь попробуй повозиться с xdotool для нажатия кнопок и wmctrl для извлечения из списка окон и делания окна автивным (вроде есть у него там такой параметр)

Н-р:

$ terminator -T terminator -e "xdotool key shift+Down"
$ [ "`wmctrl -l | grep "Opera"`" ] && wmctrl -r opera -b add,hidden

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

ну я команды для xdotool могу в .sh запихнуть и на хоткей повесить, так что думаю получится

а вообще интересно в каком НЕтайловом WM такое можно искаропки делать

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

На счет хоткеев вот не скажу, а вот что бы при старте сразу были на своем месте во fluxbox я подобное реализовывал, н-р:

####################
### transmission-gtk
#####
[app] (name=transmission-gtk)
 [Jump]		{no}
 ##[Hidden]	{yes
 #[IconHidden] 	{yes}
 [Workspace]	{3}
 [Deco]		{BORDER}
 [Position] 	(UPPERRIGHT){0 12}
 #[Dimensions]  {490 840}
[end]
[transient] (name=transmission-gtk)
 [Position]	(WINCENTER){-200 0}
 [Deco]		{TINY}
 [Layer] 	{4}
 [Sticky]	{yes}
[end]
# pcsxr
#[group]
[app] (name=pcsxr)
 [Workspace]	{0}
 [Position]		(WINCENTER){0 0}
 [Jump]			{yes}
[end]
[transient] (name=pcsxr)
 [Position]		(WINCENTER){0 0}
 [Deco]			{BORDER}
[end]
# antimicro
[app] (name=antimicro)
 [Deco]			{Tiny}
 [Workspace]	{3}
 [Position] 	(WINCENTER){-400 10}
 [Dimensions]   {733 770}
[end]

NK ★★★★★ ()

Набросал говнокодик, который передвигает и ресайзит окно, не выставляя фокус на него.

Аргументы - «Кусок Имени окна» x y ширина высота

Пример запуска python test.py «File Manager» 0 0 500 300

import sys, wnck, gtk



def main():
    title = sys.argv[1]
    x, y, w, h = map(int, sys.argv[2:])
    for win in scr.get_windows():
        if sys.argv[1] in win.get_name():
            break
    else:
        sys.exit(1)
    gwin = gtk.gdk.window_foreign_new(win.get_xid())
    gwin.move(x,y)
    gwin.resize(w,h)
    gtk.mainquit()


scr = wnck.screen_get_default()
gtk.idle_add(main)
gtk.main()
pawnhearts ★★★★★ ()
Ответ на: комментарий от q11q11

мне не нужны жёсткие правила, мне нужно разные конфигурации размещения окон по хотеям

А Pytyle смотрели? Набор конфигураций размещения всех открытых окон на мониторе. А может вы ищете Awesome? «разные конфигурации размещения окон по хоткеям» - это называется тайлинг;-) К сожалению у меня не прижилось ни то, ни другое... Но второй вариант очень даже понравился! Замечательно работает с двумя мониторами, в отличии от OpenBox'а.

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

Pytyle
Awesome
UPD: тайлинг не предлагать

я каждый день утром на работе расставляю окна так как мне удобно, но они пересекаются и это нифига не тайлинг, да и тайлинг мне не нравится, по-этому и не нужен :)

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