abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:00 | Zajímavý software

    Nourish (GitHub) je nový správce oken pro Linux. Tradiční plochy nahrazuje nekonečným plátnem a posouváním a přibližováním. Využívá vlastní kompozitor pro Wayland s názvem y5. Videoukázka.

    Ladislav Hagara | Komentářů: 3
    včera 15:33 | Komunita

    Po 20 letech a 17 otevřených (open source) krátkých filmech Blender Studio oznámilo plán na svůj první celovečerní film. Cílem samozřejmě není jenom nový otevřený film, ale především vývoj a vylepšení otevřených nástrojů pro spolupráci napříč celým procesem a vytvoření otevřené příručky (playbook) pro filmovou produkci ve velkém měřítku s informacemi, které jsou obvykle dostupné pouze uvnitř komerčních studií, a pomoci tak nezávislým tvůrcům překonat technické a organizační bariéry.

    Ladislav Hagara | Komentářů: 0
    včera 05:00 | Nová verze

    Byla vydána nová verze 26.6.25 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    26.6. 14:44 | IT novinky

    Apple bez varování odstranil ze svého obchodu sociální síť VKontaktě i další aplikace skupiny VK, jako je VK Music nebo VK Video [Novinky.cz].

    Ladislav Hagara | Komentářů: 18
    26.6. 14:22 | IT novinky

    V dubnu loňského roku představený poštovní klient Notion Mail bude 22. září ukončen.

    Ladislav Hagara | Komentářů: 3
    26.6. 04:33 | Komunita

    Konference OpenAlt 2026 hledá přednášející. Proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.

    Ladislav Hagara | Komentářů: 0
    26.6. 04:22 | IT novinky

    Společnosti OpenAI a Broadcom oznámily čip optimalizovaný pro AI pojmenovaný Jalapeño.

    Ladislav Hagara | Komentářů: 0
    25.6. 20:22 | Nová verze

    Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno v nové verzi 2.9. Hlavní novinkou je deno desktop pro převod Deno projektu na desktopovou aplikaci. Jedná se o alternativu k frameworkům Electron nebo Tauri.

    Ladislav Hagara | Komentářů: 2
    25.6. 15:44 | IT novinky

    Od zítra jsou Datové schránky oficiálně na nové adrese datovka.gov.cz. Adresa mojedatovaschranka.cz zůstává funkční do 27. srpna 2026, následně budou uživatelé automaticky přesměrováni na datovka.gov.cz.

    Ladislav Hagara | Komentářů: 3
    25.6. 13:44 | Nová verze

    Dolphin (Wikipedie), tj. open source multiplatformní emulátor herních konzolí GameCube a Wii od Nintenda, byl vydán ve verzi 2606. S podporou Game Boy Playeru.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (15%)
     (26%)
    Celkem 2004 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Awesome wm a umistovani oken

    14.10.2011 22:25 | Přečteno: 1349× | poslední úprava: 14.10.2011 22:48

    V mém posledním zveřejněném desktopu jsem si povzdechl nad tím, že mi Awesome v3.4.10 umísťuje firefox při plovoucím režimu o pár pixel přes horní wibox.

    Nebudu tu příliš rozvádět jak to funguje, protože jsem se moc o problematiku signálů nezajímal - nebyl čas, tak tedy:

    client.add_signal("manage", function (c, startup)

    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)

    Tato funkce/signál se mi stará o nové okna. V podstatě jde o to správně umístit okno na viditelnou plochu obrazovky a také aby nedošlo k překrytí. Hlavně maximalizovaný floating firefox či codeblocks o pár px překryly horní wibox o výšce 14px. Zjistil jsem, že za to může funkce no_offscreen() ve které byla chyba (feature?) v nastavování pozice okna v případě, že přesahuje maximální viditelnou šířku / výšku :

    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 -- original , chybi odecet borderu
    geometry.x = screen_geometry.x + screen_geometry.width - (geometry.width - 2*border)
    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 -- proc jen 1x border? radej nebudu patrat
    -- geometry.y = screen_geometry.y + screen_geometry.height - geometry.height -- to same chybi border odecet
    geometry.y = screen_geometry.y + screen_geometry.height - (geometry.height- 2*border)
    elseif geometry.y < screen_geometry.y then
    geometry.y = screen_geometry.y
    end
    -- c:geometry(geometry) -- v originale chybi return wtf?
    return c:geometry(geometry) -- uprava luta
    end

    Jak je vidět, úprava byla elementární i pro člověka co programuje v C embedded a Lua umí jen editovat z rychlíku :-)

    Doufám, že to třeba někdy někomu pomůže a doufám, že se kvůli této úpravě neobjeví další chyba / feature :-D

    A ještě dotaz pro odborníky v Awesome: Je tohle na bugreport ? Nějak nemám čas zjišťovat, jestli to není jen můj osobní workaround a ve výsledku bych se třeba jen ztrapnil :-D


    Jak jsem teď dodatečně zjistil, chyba bude ještě někde jinde, protože je nutno donutit okno větší, než je plocha, aby nepřesahovalo. To by ovšem měla řešit funkce no_overlap..patrně to ale neřeší dokonale, neboť firefox o pár pixel přesahuje spodek obrazovky a pomůže až toggle maximize..

           

    Hodnocení: 100 %

            špatnédobré        

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

    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

    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
    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ý.

    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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.