Euro-Office (Wikipedie) je evropský fork open source kancelářského balíku OnlyOffice. Za forkem stojí koalice firem IONOS, Nextcloud, Eurostack, XWiki, OpenProject, Soverin, Abilian a BTactic. Cílem je zajistit digitální suverenitu Evropy a snížit závislost na neevropských platformách. Projekt vznikl mimo jiné v reakci na nedávné uzavření cloudové služby OnlyOffice. OnlyOffice obviňuje Euro-Office z porušení licenčních podmínek. Na možné problémy upozorňuje i Collabora Online. Jednostranná změna licence není v pořádku.
Byly zpracovány a na YouTube zveřejněny videozáznamy jednotlivých přednášek z letošního Installfestu.
Během akce Arduino Days 2026 byl publikován Arduino Open Source Report 2025 (pdf) a oznámeno 7 nových produktů kompatibilních s deskou UNO Q (Arduino USB-C Power Supply, USB-C Cable, USB-C Hub, UNO Media Carrier, UNO Breakout Carrier, Bug Hopper, Modulino LED Matrix).
Google v pátek spustil v Česku Vyhledávání Live. Tato novinka umožňuje lidem vést plynulou konverzaci s vyhledávačem v češtině. A to prostřednictvím hlasu, nebo prostřednictvím toho, na co ukážou svým fotoaparátem či kamerou v mobilu. Rozšíření této multimodální funkce je možné díky nasazení Gemini 3.1 Flash Live, nového hlasového a audio modelu, který je od základu vícejazyčný, takže umožňuje lidem po celém světě mluvit na vyhledávač přirozeně a v jazyce, který je jim nejbližší.
Jsongrep je open-source nástroj, který efektivně prohledává JSON dokumenty (editovat je neumí). Kompiluje regulérní jazyk dotazu do podoby deterministického konečného automatu (DFA), díky čemuž prochází strom JSON dokumentu pouze jednou a je v tom tedy rychlejší než jiné nástroje jako jsou například jq, JMESPath nebo jql. Jsongrep je napsaný v programovacím jazyce Rust, zdrojový kód je dostupný na GitHubu.
O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.
Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.
Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.
Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.
Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.
Snažím se napsat "visťácké" menu pro gnome. Zatím pracuji na tlačítku, ale nedaří se mi ho zobrazit v panelu. Když kód zkompiluju jako normální aplikaci, tak se obrázek tlačítka zobrazí, když ho zkompiluju jako applet, tak se na panel přidá akorát tečka - jediný pixel, představující můj applet. Neví někdo, co je ještě třeba udělat?
#include <string.h>
#include <gtk/gtk.h>
#include <panel-applet.h>
#define START_PREFIX "/home/jarda/.themes/WE Ergo/gtk-2.0/PanelMenu/WE Ergo/"
#define START_NORMAL START_PREFIX "start-here.png"
#define START_HOVER START_PREFIX "start-here-glow.png"
#define START_PRESS START_PREFIX "start-here-depressed.png"
class PanelButton
{
GtkWidget* eventBox;
GtkWidget* image;
bool hover;
bool pressed;
public:
PanelButton()
{
eventBox = gtk_event_box_new();
image = gtk_image_new_from_file(START_NORMAL);
gtk_container_add(GTK_CONTAINER(eventBox), image);
}
~PanelButton()
{
}
GtkWidget* mainWidget() const { return eventBox; }
};
static void applet_destroy(GtkWidget *widget, gpointer *ptr)
{
PanelButton *button = (PanelButton*)ptr;
delete button;
}
// #define __TEST
#ifndef __TEST
static gboolean init_applet(PanelApplet *applet, const gchar *iid, gpointer data)
{
if (strcmp(iid, "OAFIID:Example") != 0)
{
return 0;
}
PanelButton* button = new PanelButton();
gtk_container_add(GTK_CONTAINER(applet), button->mainWidget());
g_signal_connect(G_OBJECT(applet), "destroy", G_CALLBACK(applet_destroy), button);
gtk_widget_show_all(GTK_WIDGET(applet));
return 1;
}
PANEL_APPLET_BONOBO_FACTORY("OAFIID:WEErgoMenu", PANEL_TYPE_APPLET, "WE Ergo Menu", "0", init_applet, NULL)
#else
int main(int argc, char **argv)
{
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
PanelButton* button = new PanelButton();
gtk_container_add(GTK_CONTAINER(window), button->mainWidget());
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(applet_destroy), button);
gtk_widget_show_all(GTK_WIDGET(window));
gtk_main();
return 0;
}
#endif
resize?
Tiskni
Sdílej: