Portál AbcLinuxu, 4. května 2025 20:34
Po téměř 11 měsících vývoje od verze 0.10.0 (zprávička) byla vydána verze 0.11.0 hardwarově nenáročného desktopového prostředí LXQt (Lightweight Qt Desktop Environment) vzniklého sloučením projektů Razor-qt a LXDE (zprávička). Z novinek lze zmínit například pavucontrol-qt, Qt port audio mixéru pavucontrol z projektu PulseAudio. V lxqt-config přibyla možnost nastavování jasu. Vylepšena byla podpora více monitorů.
Tiskni
Sdílej:
K vydaniu sa trochu rozpísal aj jeden z hlavných vývojárov LXQt Jerome Leclanche.
Systém potřebuju k práci a ...Ted se jeste shodnout na tom, jak ma takovy "system k praci" vypadat.
Přitom značná část z nich, když dostane možnost přispět do jimi vybraného open-source projektu, tak má snahu utéct k lokalizaci pár řádek nebo jinak se skutečnému přemýšlení a programování vyhnout.Tak proc se tohle na zacatku nezakazalo? Prislo mi to opravdu smesne (no spis trapne), kdyz tohle dela clovek na magistru v oboru softwarove inzenyrstvi.
Prislo mi to opravdu smesne (no spis trapne), kdyz tohle dela clovek na magistru v oboru softwarove inzenyrstvi.Cesta nejmensiho odporu k zapoctu, kdo to nekdy nedelal?
Co se týče lokalizací, tak byly ponechané (nebyly přímo zakázané) jako záchytná šance pro ty, kdo opravdu mají problém něco naprogramovat. Také bylo na začátku vysvětlené, že si mnohem více vážíme i opravy jen jedné řádky kódu ve větším dobře vedeném projektu, než lokalizací (za ty bylo i omezené maximum možných bodů) a případně tvorby vlastních projektů typu hra ve Flash.
Co se týče obsahu předmětu OSP, tak studentům základní znalosti z oblasti operačních systémů i po povinném kurzu v bakaláři chybí. Z pohledu OI to bylo i při koncepci programu jasné, že vybrané obory by měly dovést studenta i k tomu, že bude pro oblast skutečného počítačového inženýrství, návrhu embedded platformem atd. použitelný. Takže byla původně zadaná příprava předmětu Open-Source operační systémy. Bohužel již v době přípravy nechuť k tomu znát základy a i oprávněný požadavek, že studentům chybí schopnost projekty vést a zdrojové kódy spravovat, vedla k tomu, že se předmět přejmenoval a výuka se rozčlenila přibližně na třetiny
1) open-soure jako příklad, projekty, historie, licence, filozofie i pragmatický přístup
2) správa kódů a seznamů chyb, a předávání úprav/komunikace
3) původní záměr zlepšit znalosti programování
Úvodní diskuze k předmětu zde
https://forum.fel.cvut.cz/post/26424/#p26424
Od původní představy, že by se studenti opravdu naplno učili na velkém projektu Linuxového jádra jsme přešli k spíše motivačním a snadným úlohám v userspace.
Myslím si, že ti kdo opovrhují alespoň letmým seznámením se s úspěšným (možná i na světě největším) softwarovým projektem (15 M řádek, v roce 2015 téměř 10,000 vývojářů z 1,000 firem) a mechanizmy, které umožňují to, že se projekt pod svojí vlastní vahou nezhroutí, tak nemají k programátorskému řemeslu a umění žádný vztah.
Přitom v dnešní době, kdy je Linuxové jádro extrémně rozšířené, Microsoft přichází na open-source, protože v rámci uzavřeného modelu již vypotřebovali vstupní vklad z VMS, BSD a dalších firem, které napsaly velkou část subsystémů Windows pro to, aby prodaly svůj HW a nic jiného než open-source spolupráce je asi dál nemůže posunout, tak v takové době se studenti o tyto technologie nechtějí zajímat trochu vážněji.
Sám si nemyslím, že je Linux všeho spásou a velmi aktivně přispívám i k alternativám. Například systém RTEMS, se který jsem si portoval na své desky během studia ve věku našich studentů. Leto3n9 commity zde. Přitom i pro tuto práci jsem Linux používal, protože příprava křížových překladačů na Windows, kterou jsem i pro některé firmy a kolegy podstoupil, je nepopsatelná ztráta času a nervů. Pro práci na Rsapberry Pi jsem používal Linuxové jádro, jako zdroj dokumentace, protože k mnoha čipům prostě dokumentace není, a nezbývá, než informace o HW získat z často nehezkých kusy kódu připravené přímo firmami pro Linux.
Když je to potřeba, tak jsem napsal i drivery pro Windows a další operační systémy. Vedl jsem i projekty v Qt, Delphi i jiné, které jsou na vyšších příčkách OS. Nakonec jsme pro medicínské aplikace i přes odpor k vlastnímu NIH GUI vedl vývoj takového Widget setu, který bylo možné na tvrdě svalovaný přístroj opět s RTEMSsem a ne Linuxem dostat.
Takže myslím, že mám o něco širší přehled. Ale Linux je často pro zkoumání nejjednodušší a pro studenty nejlehčí. Ovšem studenti, kteří nechtějí mít žádné hlubší znalosti OS budou argumentovat tím, že předmět je jen o Linuxu. Ono velká část řeší jen zkoušku s minimem energie, takže ti nejhorší opisují taháky od těch nejhorších z minulých let a vlastní závity vůbec nezapojí. tento předmět jsem bral spíš jako oddechový, v jiném se snažíme, aby takoví neprošli.
Jinak v současné době jsem zavalený požadavky na konzultace různých embedded projektů od firem, protože často z důvodu ceny platformy a vývojových nákladů volí Linux, často i tam, kde bych já i uvažoval, jestli není alternativa. V podstatě každá televize dnes používá boot systému, který jsme studentům ukazovali, jak si poskládat. Linuxové jádro (a nešťastně založený BIONIC based userspace) je na 70 až 80% "chytrých" telefonů. Opět 90% studentů nechce vědět, co se v té krabičce děje.
Hezky problémy kolem našeho předmětu zhodnotil kolega, který by sice byl lepším učitelem než já, ale raději z vědecké sféry odešel do vývoje ve firmách. ten řekl, vždyť předmět má v názvu PROGRAMOVÁNÍ, tak by o programování měl také být. Jinak je to člověk, ketrý pracuje především na vyšších úrovních (Qt) a tak, ale popis toho, jak systém chodí v nižších vrstvách si ode mě v populární podobě poslechne extrémně rád.
jeho prostrednictvim vydelat penizeUhhh... OS neni o charite, a neni ani o vydelavani penez (i kdyz tohle me u pubertaku neprekvapuje, taky sem v 15ti hledal vsude rychly prachy..). OS je hlavne o spolupraci (se zakazniky i konkurenci) a dlouhodobem setreni $$$ a problemu. Jestli chcete rychly prachy, zkuste treba loterii... mozna by tohle nekdo tem budoucim mozkum mohl vysvetlit.
na jiz uspesnejch fungujicich projektechUspesnejch v jakem smyslu ? kernel je "uspesny", ale ze by byl Linus miliardar, tak o tom sem neslysel.. jak rikam, jestli chcete rychle a pohodlne zbohatnout, tak programovani asi neni pro vas...
jak to proboha s OS souvisiJak souvisi hw a polling s OS... asi nijak. Teda krom toho ze je snazsi to ukazovat na OS. Jestli se ptate proc je treba vedet low-level veci, tak treba proto ze pokud chcete psat opravdu efektivni programy, musite dobre znat minimalne o vrstvu niz nez v ktere delate, plus neco o hardwaru. Samozrejme, asi spousta lidi nechce psat efektivni programy - v tom pripade samozrejme muzete byt programatorsky McDonald a smazit hranolceky v php / javascriptu do konce zivota. Jak je libo.. Kazdopadne, byt ja ucitelem, tak svym studentum asi rychle vytriskam z hlavy tu blbost ze s OS lze zbohatnout. Jo, podarilo se to asi trem lidem na cele planete, coz je statisticky mnohem horsi nez loterie
jako záchytná šance pro ty, kdo opravdu mají problém něco naprogramovat.To uz je to ted tak spatne, ze neni mozne takoveho studenta z ruznych duvodu jednoduse nenechat projit?
Epoll si umožňuje do jádra uložit pointer, takže vyhledání datové struktury k danému přenosu je O1. Jinak epoll různé chyby má, je třeba potřeba hlídat, že se do jednoho epollu nezařadí jeden deskriptor dvakrát, takže je potřeba mít seznam deskriptorů. Sám jsem si knihovnu pro různé event mechanismy v době, kdy libevent pořádně napsaná pro více pollů ve více vláknech nebyla, a nikde pole neudržuji.
Jen pro možnost nezávislé registrace na jeden FD (např. RD a WR) tam mám AVL podle deskriptorů. Ale to se řeší jen při zakládání a rušení eventů. Nikoliv při jejich používání.
API je pak udělané tak, že umožnuje různé mechanismy zanořovat do sebe. Třeba dole z nutnosti mít GLIB main, jako jednu jeho položku zaregistrovat epoll a pod ním mít velké množtví událostí.
Jinak souhlasím s tím, že pro GUI je poll OK. Select je problematičtější, může sejít v aplikaci s jiným vláknem, které zpracovává tisíce událostí, a pak je problém.
Zajímavé ale je, že pro případy, kdy jsou události aktivované téměř všechny naráz, tak naopak select na Linuxu vychází překvapivě dobře. Jinak FD_SETSIZE je jen konstrukce userspace, jádro zvládá přes select pracovat i s 10000 spojeními. Opět řešení bez omezení jsem otestoval v knihovně uLevPoll
https://sourceforge.net/p/ulan/ulevpoll/ci/master/tree/
Koncepce řetězení a integrace do GLIB a libevent1/2 je na ní celkem unikátní, kdyby její API měla GLIB, tak by jedno ošklivé omezení odpadlo. Ale v dnešní době je libevent2 daleko dále, nabízí koncept streamů, SSL atd.
Můj pokus byl spíš pro malé embedded věci s tím, aby na velkých systémech šlo bez změn kódu použít právě i libevent nebo něco lepšího.
Zkuste se podívat, jak jsem specializaci svého obecného API pro epoll() napsal při svém pokusu:
https://sourceforge.net/p/ulan/ulevpoll/ci/master/tree/ulevpoll/ul_evp_lnxepoll.c
https://sourceforge.net/p/ulan/ulevpoll/ci/master/tree/ulevpoll/ul_evp_lnxepoll.h
Pokud si vzpomínám, tak jsem tam žádný problém, který popisujete neměl. Indirekce tam je ale vícenásobná. jako eventy se registrují specializované struktury ul_evptrig_lnxepoll_t. Vytváří se při volání API fukce ul_evptrig_init() pro danou bázi (pokud byla báze založená pro mechanizmus epoll). Tato data se přímo do epollu neregistrují, protože epoll by neumožnil nezávisle registrovat samostatné události pro read a write na jedno FD. Proto se registrují až objekty ul_evplnxepoll_fdnode_t. Ty jsou setříděné v AVL stromu, takže při registraci eventu dojde k vyhlednání nodu v AVL podle FD. Pokud se nenajde, tak se nód založí. Z nodu jsou pak event struktury při příchodu události dostupné v doble-linked listu. Při rušení, příchodu události atd. se již vždy jde přímo podle ukazatelů, znova se nehledá. Pouze při rušení se vyhazuje z AVL stromu a rebalancuje se. I když můj generalizovaný AVL strom umožňuje i balancování při rušení nedělat za cenu degradace AVL s tím že během dalších insertů se to strochu dorovná. Ale to dobře chodí jen pro odsekávání prvního nebo posledního prvku, kdy to v reálných případech může vést jen k zvýšení počtu úrovní o jedno.
Jestli máte čas, tak zkuste můj kód projít, jestli tam opravdu náhodou problém není, případně zkuste výkonnost, když si nějakou Vaší aplikace na toto API přepíšete.
Myslím ale, že libevent2 na tom bude lépe. Co jsem jí zkoumal, tak také žádné rozsáhlé pole k epoll neudržuje a je v pořádku.
Můj kód má celkem zásadní omezení, že je postavený jako náhrada pro klasické použití pollu, z toho důvodu při setrvání události v aktivním stavu stále dokola vyvolává odpovídající trigger/handler. Pokud se posune řešení na vyšší úroveň streamů (libevent2 tuto alternativu obsahuje), tak lze epoll použít v režimu edge triggered událostí, kdy bude overhead menší. Bohužel pro obecné použití bych ve svém kódu musel vždy po návratu handleru kontrolovat třeba pollem, jestli handler obsloužil/vyčetl všechna data a pokud ne, tak si poznačit, že událost se má v příštím cyklu znova vyvolat, přesto, že z epollu hlášená není. Další určitá chyba je, že nemám zatím implementované priority. Počítám spíš s tím, že pro každou prioritu bude založená jiná smyčka v samostatném vlákně. V oblasti RT je to stejně nejlepší cesta, jak umožnit plánovači do zátěže a jejích potřeb vidět. Ale moje řešení nemusí být ani spravedlivé při více klientech obsluhovaných v jedné smyčce.
Dokumentace k mému neumělému pokusu je zde http://ulan.sourceforge.net/pdf/ulevpoll.pdf. Je v ní moc překlepů, měl bych si udělat čas, a vyčistit to. Patche proti DocBook zdrojovému textu v GITu vítané. No možná se na to podívám i dnes, když vidím, jak to roky dělá ostudu.
Mi třeba v takovém Gnome 2 nic nechybělo. Proč se přešlo na Gnome 3 a neustálé změny API nikdy nepochopím. Asi jsem moc starý. Jsem dalece jim nařizovat aby dělali něco, co mi bude vyhovovat. Jen těm změnám pro změny prostě nerozumím.Pro mě byl přechod z Gnome2 na Gnome3 (GnomeShell) absolutní wow, a subjektivně mi to zpohodlnělo práci aspoň o řád. A to se, obávám, řadím do té skupiny seniorů, nehračiček. Začínal jsem na RH2.6.
File manager v Qt si tahá závislost na glib.Pravdepodobne kvôli DBus.
VSemerge -pv lxqt-panel lxqt-session lxqt-runner lxqt-common These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild NS ] dev-qt/qtscript-5.6.1:5/5.6::gentoo [4.8.6-r2:4::gentoo] USE="-debug jit -scripttools {-test}" 2,528 KiB [ebuild N ] virtual/eject-0::gentoo 0 KiB [ebuild N ] dev-libs/libgudev-230::gentoo USE="-debug -introspection -static-libs" 252 KiB [ebuild N ] dev-libs/libatasmart-0.19-r1::gentoo USE="-static-libs" 252 KiB [ebuild N ] virtual/libgudev-230::gentoo USE="-introspection -static-libs" 0 KiB [ebuild N ] sys-fs/udisks-2.1.7:2::gentoo USE="acl -cryptsetup -debug -gptfdisk introspection (-selinux) -systemd" 899 KiB [ebuild N ] kde-frameworks/kf-env-3:5::gentoo 0 KiB [ebuild N ] kde-frameworks/extra-cmake-modules-5.23.0:5/5.23::gentoo USE="-doc {-test}" 279 KiB [ebuild N ] dev-qt/qtx11extras-5.6.1:5/5.6::gentoo USE="-debug {-test}" 33 KiB [ebuild N ] kde-frameworks/kwindowsystem-5.23.0:5/5.23::gentoo USE="X -debug nls {-test}" 161 KiB [ebuild NS ] dev-qt/qtsvg-5.6.1:5/5.6::gentoo [4.8.6-r1:4::gentoo] USE="-debug {-test}" 1,683 KiB [ebuild N ] kde-frameworks/kguiaddons-5.23.0:5/5.23::gentoo USE="-debug {-test}" 39 KiB [ebuild N ~] dev-libs/libqtxdg-2.0.0::gentoo USE="{-test}" 61 KiB [ebuild N ] kde-frameworks/solid-5.23.0:5/5.23::gentoo USE="-debug nls {-test}" 262 KiB [ebuild N ~] lxqt-base/liblxqt-0.10.0::gentoo 76 KiB [ebuild N ~] lxqt-base/lxqt-globalkeys-0.10.0::gentoo 51 KiB [ebuild N ~] lxqt-base/lxqt-panel-0.10.0-r1::gentoo USE="alsa clock -colorpicker -cpuload desktopswitch -dom kbindicator mainmenu mount -networkmonitor -pulseaudio quicklaunch -screensaver -sensors showdesktop -statusnotifier -sysstat taskbar tray volume -worldclock" 323 KiB [ebuild N ~] lxqt-base/lxqt-runner-0.10.0::gentoo 189 KiB [ebuild N ~] lxqt-base/lxqt-common-0.10.0::gentoo 3,893 KiB [ebuild N ~] lxqt-base/lxqt-session-0.10.0::gentoo 64 KiB Total: 20 packages (18 new, 2 in new slots), Size of downloads: 11,039 KiB
Nicmene koukam, ze 227 MB v tom meta jsou temata/ikony heh ... jinak zadny KDE knihovny v systemu nemam, Qt 5.6 naky jo ... i tak doufam, ze nadosmrti zustanu u lxde :)emerge -pv lxqt-meta These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-libs/wayland-1.11.0::gentoo USE="-doc -static-libs" 366 KiB [ebuild NS ] dev-qt/qtscript-5.6.1:5/5.6::gentoo [4.8.6-r2:4::gentoo] USE="-debug jit -scripttools {-test}" 2,528 KiB [ebuild N ] virtual/eject-0::gentoo 0 KiB [ebuild N ] dev-libs/libgudev-230::gentoo USE="-debug -introspection -static-libs" 252 KiB [ebuild N ] dev-libs/libatasmart-0.19-r1::gentoo USE="-static-libs" 252 KiB [ebuild N ] virtual/libgudev-230::gentoo USE="-introspection -static-libs" 0 KiB [ebuild N ] sys-fs/udisks-2.1.7:2::gentoo USE="acl -cryptsetup -debug -gptfdisk introspection (-selinux) -systemd" 899 KiB [ebuild N ] kde-frameworks/kf-env-3:5::gentoo 0 KiB [ebuild N ] kde-frameworks/extra-cmake-modules-5.23.0:5/5.23::gentoo USE="-doc {-test}" 279 KiB [ebuild N ] kde-frameworks/oxygen-icons-5.23.0:5/5.23::gentoo USE="{-test}" 227,826 KiB [ebuild N ] dev-qt/qtx11extras-5.6.1:5/5.6::gentoo USE="-debug {-test}" 33 KiB [ebuild N ] kde-frameworks/kwayland-5.23.0:5/5.23::gentoo USE="-debug {-test}" 205 KiB [ebuild N ] kde-frameworks/kwindowsystem-5.23.0:5/5.23::gentoo USE="X -debug nls {-test}" 161 KiB [ebuild NS ] dev-qt/qtsvg-5.6.1:5/5.6::gentoo [4.8.6-r1:4::gentoo] USE="-debug {-test}" 1,683 KiB [ebuild N ~] x11-misc/obconf-qt-0.9.0_p20150729::gentoo 95 KiB [ebuild N ] kde-frameworks/kguiaddons-5.23.0:5/5.23::gentoo USE="-debug {-test}" 39 KiB [ebuild R ] dev-libs/libdbusmenu-qt-0.9.3_pre20140619-r1::gentoo USE="-debug -doc qt4 qt5* {-test}" 46 KiB [ebuild N ] kde-plasma/libkscreen-5.6.5-r1:5/7::gentoo USE="X -debug {-test}" 82 KiB [ebuild N ] sys-auth/polkit-qt-0.112.0-r1::gentoo USE="-debug -examples qt4 qt5" 67 KiB [ebuild N ~] dev-libs/libqtxdg-2.0.0::gentoo USE="{-test}" 61 KiB [ebuild N ] kde-frameworks/solid-5.23.0:5/5.23::gentoo USE="-debug nls {-test}" 262 KiB [ebuild N ~] lxqt-base/liblxqt-0.10.0::gentoo 76 KiB [ebuild N ~] lxqt-base/lxqt-globalkeys-0.10.0::gentoo 51 KiB [ebuild N ~] lxqt-base/lxqt-policykit-0.10.0::gentoo 15 KiB [ebuild N ~] lxqt-base/lxqt-config-0.10.0::gentoo 151 KiB [ebuild N ~] lxqt-base/lxqt-qtplugin-0.10.0::gentoo 21 KiB [ebuild N ~] lxqt-base/lxqt-about-0.10.0::gentoo 30 KiB [ebuild N ~] x11-misc/pcmanfm-qt-0.10.0::gentoo 224 KiB [ebuild N ~] lxqt-base/lxqt-panel-0.10.0-r1::gentoo USE="alsa clock -colorpicker -cpuload desktopswitch -dom kbindicator mainmenu mount -networkmonitor -pulseaudio quicklaunch -screensaver -sensors showdesktop -statusnotifier -sysstat taskbar tray volume -worldclock" 323 KiB [ebuild N ~] lxqt-base/lxqt-runner-0.10.0::gentoo 189 KiB [ebuild N ~] lxqt-base/lxqt-common-0.10.0::gentoo 3,893 KiB [ebuild N ~] lxqt-base/lxqt-session-0.10.0::gentoo 64 KiB [ebuild N ~] lxqt-base/lxqt-notificationd-0.10.0::gentoo 31 KiB [ebuild N ~] lxqt-base/lxqt-meta-0.10.0::gentoo USE="about -admin filemanager icons -lightdm -lximage -minimal oxygen policykit -powermanagement -sddm -ssh-askpass -sudo" 0 KiB Total: 34 packages (31 new, 2 in new slots, 1 reinstall), Size of downloads: 240,192 KiB
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.