LINUX.ORG.RU

Awesome: открывать floating окна посередине экрана по-умолчанию

 ,


0

1

Первое «плавающее» окно у меня по-умолчанию открывается в верхнем левом углу экрана (следующие - где-то ещё), и это меня не устраивает. Я добавил следующее в awful.rules:

	{ rule = { },
		-- Rules for all the clients: define border appearance, sloppy focus settings, remove gaps between windows (see FAQ), and set local key/mouse bindings
		properties = { border_width = beautiful.border_width,
			border_color = beautiful.border_normal,
			focus = awful.client.focus.filter,
			size_hints_honor = false,
			keys = clientkeys,
			buttons = clientbuttons },
			callback = function (c)
				awful.placement.centered(c,nil)
			end},
(обратите внимане на последние три строки).

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

if not c.size_hints.user_position and not c.size_hints.program_position then
				awful.placement.no_overlap(c)
				awful.placement.no_offscreen(c)
			end
которое не даёт окнам накладываться друг на друга. В принципе, меня устраивает то, как всё это сейчас работает, но такой вопрос: не лучше ли будет отдельно оговорить, что если окно в режиме floating, то центрировать его? Мне кажется, что то, как я сделал, не слишком изящно.

★★

Кстати, такая ситуация: есть два запускатора: xfce4-appfinder (я его сделал floating) и gmrun. Оба они при такой настройке по-умолчанию открываются в центре экрана, но если какое-то окно имеет

c.maximized_horizontal = not c.maximized_horizontal
c.maximized_vertical = not c.maximized_vertical
то gmrun по-прежнему открывается по центру, а xfce4-appfinder исчезает вниз экрана. Как это вылечить и откуда берётся разница?

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

Что я должен был извлечь из этой ссылки, блжад? Я эту команду и использую.

Valdor ★★
() автор топика
Ответ на: комментарий от r3lgar
	{ rule = { floating = "true" },
		callback = function (c)
			awful.placement.centered(c,nil)
		end
	},

Попробовал вот так ещё сделать - получил хрен.

А если для отдельного окна указать

	{ rule = { instance = "xfce4-appfinder" },
		properties = { floating = true },
		callback = function (c)
			awful.placement.centered(c,nil)
		end
	}
, то оно хорошо открывается по центру в большинстве случаев, но если есть максимизированное окно - то новое окно оказывается внизу слева.

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

Оно там немного кривовато: вроде бы среди команд подставляет те, что подходят по поиску, но при нажатии на них сразу же запускает, вместо того, чтобы подставить в строку. Где-то оно удобно (2 раза enter не нажимать), а с командами, которым нужен аргумент, наоборот, неудобно. Нужно будет написать багрепорт. А ещё советую man rofi почитать, там много полезного.

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

Прочитал и уже даже раскрасил сабж под свои нужды. Но он мне не совсем подходит. Мне хотелось бы иметь такую функцию - что если команда начинается с определённого символа, то всё, что после него, должно быть обработано таким-то образом. Так умеет xfce4-appfinder, потому на него и запал.

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

Чувак, я, конечно, не знаю Lua, и не пользуюсь Awesome, но что у тебя получится если написать вот так:

{ properties = { floating = true },
		callback = function (c)
			awful.placement.centered(c,nil)
		end
}

Deleted
()
Ответ на: комментарий от Valdor

И да, отследи кавычки вокруг true в обоих случаях. У тебя где-то ошибка.

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

Отлично. Так и сделал, теперь всё хорошо, спасибо тебе огромное. Осталось только два вопроса: не нужно ли туда всунуть какую-нибудь проверку на то, floating ли окно? С одной стороны - нахрен надо, ведь положение принципиально можно задать только для floating, для тайлинг - другие категории. С другой стороны - а хрен его знает.

Второй вопрос: а почему при настройке через rules получалось так, что при максимизированном окне новое floating оказывалось чёрти-где? Откуда могла взяться разница?

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

не нужно ли туда всунуть какую-нибудь проверку на то, floating ли окно?

Нет никакой необходимости — awful.placement.*() работают только с теми клиентами, которых можно позиционировать. Соответственно, тайловые, максимизированные и фуллскриновые клиенты оно будет игнорировать в любом случае.

почему при настройке через rules получалось так, что при максимизированном окне новое floating оказывалось чёрти-где?

Кто виноват в съезжании я не знаю, а разбираться лень.

Откуда могла взяться разница?

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

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

Кстати, такая ситуация: есть два запускатора: xfce4-appfinder (я его сделал floating) и gmrun. Оба они при такой настройке по-умолчанию открываются в центре экрана, но если какое-то окно имеет

кстати, в осоме свой менюбар есть

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

Да, я о нём знаю. Хорош, на самом деле, только автодополнение какое-то неполноценное. Хочу как в zsh!

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