Portál AbcLinuxu, 1. května 2025 11:25

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
luta avatar 14.10.2011 22:56 luta | skóre: 20 | blog: muj_blok | Prostějov/Brno
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken
Odpovědět | Sbalit | Link | Blokovat | Admin

ps mám to celé blbě, žádný bugreport nebude :-D ale štvě mě to :-(

juraj-bit avatar 14.10.2011 23:25 juraj-bit | skóre: 14 | blog: X BLOG X | Bratislava
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja to mám vpodstate tak isto (Debian Wheezy) placement.lua :
function no_offscreen(c)
    local c = c or capi.client.focus
    local geometry = c:geometry()
    local border = c.border_width
    local screen_geometry = capi.screen[c.screen].workarea

    if geometry.x + geometry.width + 2*border > screen_geometry.x + screen_geometry.width then
        geometry.x = screen_geometry.x + screen_geometry.width - geometry.width
    elseif geometry.x < screen_geometry.x then
        geometry.x = screen_geometry.x
    end

    if geometry.y + geometry.height + border > screen_geometry.y + screen_geometry.height then
        geometry.y = screen_geometry.y + screen_geometry.height - geometry.height
    elseif geometry.y < screen_geometry.y then
        geometry.y = screen_geometry.y
    end

    c:geometry(geometry)
end

Nepozorujem prekrytie horného panela ami presah okna cez dolný okraj pri maximalizovaní Firefoxu. Fullscreen mám zakomentovaný.

Nihil habenti nihil deest
luta avatar 14.10.2011 23:38 luta | skóre: 20 | blog: muj_blok | Prostějov/Brno
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken

já nevím přesně jak to popsat. Nakonec to vypadá, že tam chyběl jen ten return v té funkci. Dále jsem si dopsal funkci, která mi testuje velikost okna a pokud je okno zaručeně větší jak obrazovka, tak ho zmenší. Tohle asi ani jedna z těch funkcí nedělala. Takže výsledek vypadá nějako takto :

function w_resize(c)
local geometry = c:geometry()
local border = c.border_width
local screen_geometry = screen[c.screen].workarea

if geometry.width + 2*border > screen_geometry.width then
geometry.width = screen_geometry.width
end
if geometry.height + 2*border > screen_geometry.height then
geometry.height = screen_geometry.height
end

return c:geometry(geometry)
end


-- {{{ Signals
-- Signal function to execute when a new client appears.
client.add_signal("manage", function (c, startup)

w_resize(c)

if not startup then
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
awful.client.setslave(c)

-- Put windows in a smart way, only if they does not set an initial position.
if not c.size_hints.user_position and not c.size_hints.program_position then

awful.placement.no_offscreen(c)
awful.placement.no_overlap(c)
end
end
end)

tak nějak to zatím funguje, než zase najdou nějakou chybu

juraj-bit avatar 14.10.2011 23:58 juraj-bit | skóre: 14 | blog: X BLOG X | Bratislava
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken
Tá fukcia w_resize(c) sa bude niekedy možno hodiť, zatial som ju nepotreboval.
luta avatar 15.10.2011 00:02 luta | skóre: 20 | blog: muj_blok | Prostějov/Brno
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken

trochu je v ní pořád bordel s těma borderama, protože netuším, jak s tím awesome počítá (jestli je už v geometry započítano), ale funguje to. Tenhle detail mě opravdu dlouho štval

juraj-bit avatar 15.10.2011 00:25 juraj-bit | skóre: 14 | blog: X BLOG X | Bratislava
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken

Toto

awful.client.setslave(c)

mám zakomentované

-- awful.client.setslave(c)
luta avatar 15.10.2011 00:32 luta | skóre: 20 | blog: muj_blok | Prostějov/Brno
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken

setslave startuje nove okno jako slave a ne master. to mam tak schvalne

juraj-bit avatar 15.10.2011 00:38 juraj-bit | skóre: 14 | blog: X BLOG X | Bratislava
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken
Pozeral som najnovšte témy a čistá práca so signálmi bez commentov vyzerá takto:
-- SIGNALS
client.add_signal("manage", function (c, startup)
	if not startup then
		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
	end
end)

client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)

Ešte sa mi nestalo, aby sa mi niektoré okno zobrazilo nekorektne, skúšal som všetky graf. programy, ktoré mám nainštalované, až teda na Gimp, ktorý sa mi otvára maximalizovaný a ovládacie panely mi prekrýva hlavné okno, vpodstate mi to ale tak aj vyhovuje, lebo pár pixelov z nich je vidieť..
luta avatar 15.10.2011 00:50 luta | skóre: 20 | blog: muj_blok | Prostějov/Brno
Rozbalit Rozbalit vše Re: Awesome wm a umistovani oken

ja mel problem hlavne s floating layoutem. kazdopadne diky. btw gimp mi taky konecne startuje korektne. protoze mam wibox jen 14px vysoky tak nemam rad kdyz mi ho neco prekryva

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.