LINUX.ORG.RU

Криво распологается максимизированное окно (firefox)

 


0

1

Вот решил запилить todo и наконец взяться за то, что было лень делать. Пролистал свои старые топики, нашёл вопросы , которые ещё не решил. Вот , собственно , один из них: как сделать , чтобы новые окна появлялись под курсором мыши ? Из предложенных решений не подошло ни одно . Но я сам нашёл решение - awful.placement.centered(c) (впоследствии решил , что появление окон в центре экрана будет удобнее , чем под курсором). Только вот теперь наступил сабж. Т.к. у меня firefox распологается всегда на теге с layout'ом floating и одновременно максимизирован , то когда я его открываю , получается вот так. Как исправить ? Пробовал так (см ниже) но ничего не помогло.

     { rule = { class = "Firefox" },
       properties = { layout = awful.layout.maximized } },
}

★★★★★
Ответ на: комментарий от liathit

Вряд ли это относится к вопросу , но тема - chromefx .

sudopacman ★★★★★
() автор топика

awful.placement.centered(c)

Это когда окошки прорисовываются в левом верхнем углу, а потом прыгают в центр по сигналу? Ненавижу awesome за такое. Или починили?

anonymous
()

У меня например высталено Firefox на определённый тег.
Один раз нажал Mod4 + M и Firefox запомнил размер и положение.

    { rule = { class = "Firefox" },
           properties = {
                          border_width = "0",
                          tag = tags[1][3]
                           } },
rt072
()
Ответ на: комментарий от rt072

Один раз нажал Mod4 + M

Ну у меня так же , только это не помогает.

sudopacman ★★★★★
() автор топика

properties = { layout = awful.layout.maximized } },

Как можно клиенту задавать лайаут? Разупорись!

Для этого есть

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

Вот тебе пример (не всё из этого нужно):

{ rule = { class = "SomeGUI" },
  properties = {
    tag = tags[5],
    switchtotag = true,
    ontop = true,
    fullscreen = false,
    maximized = true,
    floating = true,
    callback = function() DoSomeStuff() end,
    width = 800,
    height = 600
  }
},
В 3.5.6-2 из git работает (да и вообще в 3.5.x).

// Когда уже научатся пользователи оглашать версию осома сразу в ОП?

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

tag = tags[5],

Разве там не tags[monitor][tag] ? Т.е. сначала указывается монитор , а потом тег. Или уже не обязательно ?

callback = function() DoSomeStuff() end,

Значит попробуем с c:geometry.

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

Если я правильно понял, это дурной фокс сам корректирует свое окно уже после того как WM по нему отработал, то есть нужно искать что-то в настройках браузера.

С другими приложениями maximized = true работает. И вот такой костыль тоже работает:

{
    rule     = { class = "Firefox", role = "browser" },
    callback = function(c)
        local t = timer({ timeout = 1 })
        t:connect_signal("timeout", function() c.maximized = true; t:stop() end)
        t:start()
    end
},

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

Такой «костыль» тоже не работает. В настройках браузера , как я знаю , такого нет. Я думаю проблема в том , что свойство maximized = true задаёт только размер, а положение не задаёт, получается, что размер окна большой , а само окно распологается неправильно . Может можно сделать awful.placement.centered(c) с проверкой по классу ? Чтобы для FF placement был стандартным ? Я пробовал , но у меня не получалось.

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

что свойство maximized = true задаёт только размер

Нет, maximized гарантированно загоняет окно в нужную область, включая позицию.

Такой «костыль» тоже не работает

А должен. Проверь правило на срабатывание

{
    rule     = { class = "Firefox" },
    callback = function(c)
        naughty.notify({ text = "Hello Firefox!" })
    end
},

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

Проверь правило на срабатывание

Правило работает. Может у нас версии осома разные ? У меня свежайшая - 3.5.6-2, lua 5.3 .

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

Тогда совсем не понятно. Если функция развернуть вообще работает (modkey + m по дефолту), то приведенный код обязан срабатывать. Выставить задержку побольше?

У меня последний стабильный 3.5.6. Попробуй maximized = true на каком другом приложении для интереса.

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

Та же фигня и с pcmanfm , если ему maximized = true поставить.

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

Разве там не tags[monitor][tag] ?

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

Значит попробуем с c:geometry.

Я же написал даже про это:

    width = 800,
    height = 600

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

Сам починил вот таким кодом

 {
    rule     = { class = "Firefox", role = "browser" },
    callback = function(c)
        local t = timer({ timeout = 0.3 })
        t:connect_signal("timeout", function()
			c.maximized_horizontal = not c.maximized_horizontal
            c.maximized_vertical   = not c.maximized_vertical
            c.maximized_horizontal = not c.maximized_horizontal
            c.maximized_vertical   = not c.maximized_vertical
        	; t:stop() end)
        t:start()
    end
},
Заметил, что лиса нормально распологается при повторной максимизации ,потому что awful.placement.centered(c) для него уже не работает т.к. уже не новое окно. Спасибо Worron за шаблон. Конечно , костыльно получилось. Лучше было бы с проверкой по классу типа такого:
if class != "Firefox"
awful.placement.centered(c)
Но из-за своих скудных познаний в lua такого у меня не вышло. Пока вопрос не закрываю, но если удостоверюсь, что это единственное решение , закрою.

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

Твой код - лютый ад.

Значит действительно placement виноват, как-то я его тупо проигнорировал. В свою очередь код с задержкой походу не срабатывал из-за того, что окно уже было maximized.

Пробуй

if c.class ~= "Firefox" then awful.placement.centered(c) end
или лучше
if not c.maximized then awful.placement.centered(c) end

Worron ★★★
()
Ответ на: комментарий от Worron
if not c.maximized then awful.placement.centered(c) end

То ,что надо .Спасибо.

sudopacman ★★★★★
() автор топика

Мы должны заниматься любой херью, лишь бы не юзать dwm/i3

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