plwm je nový, poměrně minimalistický správce oken pro X11. Podporuje dynamické dláždění okny, plochy, pravidla pro okna atd. Zvláštností je, že je napsaný v logickém programovacím jazyce Prolog. Používá implementaci SWI-Prolog.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Sean Heelan se na svém blogu rozepsal o tom, jak pomocí OpenAI o3 nalezl vzdálenou zranitelnost nultého dne CVE-2025-37899 v Linuxu v implementaci SMB.
Jiří Eischmann v příspěvku na svém blogu představuje typy, jak lépe chránit své soukromí na mobilním telefonu: "Asi dnes neexistuje způsob, jak se sledování vyhnout úplně. Minimálně ne způsob, který by byl kompatibilní s tím, jak lidé technologie běžně používají. Soukromí ovšem není binární věc, ale škála. Absolutního soukromí je dnes na Internetu dost dobře nedosažitelné, ale jen posun na škále blíže k němu se počítá. Čím méně dat se o vás posbírá, tím nepřesnější budou vaše profily a tím méně budou zneužitelné proti vám."
Byla vydána nová stabilní verze 25.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Warbler. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
Multiplatformní open source spouštěč her Heroic Games Launcher byl vydán v nové stabilní verzi 2.17.0 Franky (Mastodon, 𝕏). Přehled novinek na GitHubu. Instalovat lze také z Flathubu.
Organizace Apache Software Foundation (ASF) vydala verzi 26 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Klávesnice IBM Enhanced Keyboard, známá také jako Model M, byla poprvé představena v roce 1985, tzn. před 40 lety, s počítači IBM 7531/7532 Industrial Computer a 3161/3163 ASCII Display Station. Výročí připomíná článek na zevrubném sběratelském webu Admiral Shark's Keyboards. Rozložení kláves IBM Enhanced Keyboard se stalo průmyslovým standardem.
Vyšlo Pharo 13 s vylepšenou podporou HiDPI či objektovým Transcriptem. Pharo je programovací jazyk a vývojové prostředí s řadou pokročilých vlastností.
Java má dnes 30. narozeniny. Veřejnosti byla představena 23. května 1995.
Adresa tématu či pozadí: http://interfacelift.com/wallpaper/downloads/date/widescreen/
Pozadí je ve skutečnosti generováno dynamicky (Perl + ImageMagic) každých pět minut náhodným výběrem dvou širokoúhlých obrázků z databáze vytvořené z InterfaceLift.com.
Gnome Shell rozšíření:
Tiskni
Sdílej:
Je to starý kód, šlo by to napsat lépe, ale funguje to.
#!/usr/bin/env perl use strict; use warnings; use utf8; use File::Copy; use File::Temp qw/ tempfile /; binmode(STDIN, "utf8"); binmode(STDOUT, "utf8"); binmode(STDERR, "utf8"); use File::Spec; # Výpis informací o použití programu. sub print_help { my $exit_code = shift @_; $exit_code = 1 unless $exit_code; print STDERR "Použití:\n"; print STDERR " $0 <adresář_s_obrázky> <cílový_soubor_s_tapetou>\n"; exit $exit_code; } sub get_full_path { my $arg = shift @_; return File::Spec->canonpath(File::Spec->rel2abs($arg)); } # # Main # my ($wdir, $wfilelink, $wfile, $wfileold) = (undef, undef, undef, undef); unless (($#ARGV + 1) == 2 and -d $ARGV[0] and -l $ARGV[1]) { print_help; } else { $wdir = get_full_path($ARGV[0]); $wfilelink = get_full_path($ARGV[1]); } if (-f "$wfilelink.1") { $wfileold = "$wfilelink.1"; $wfile = "$wfilelink.2"; } else { $wfileold = "$wfilelink.2"; $wfile = "$wfilelink.1"; } my $pid = `pgrep gnome-session`; chomp $pid; my $dbus = `grep -z "DBUS_SESSION_BUS_ADDRESS" "/proc/$pid/environ" 2>/dev/null`; chomp $dbus; $dbus =~ s/^DBUS_SESSION_BUS_ADDRESS=//g; exit if ($dbus =~ /^\s*$/); opendir(WDIR, $wdir) || die("Nezdrařilo se čtení obsahu adresáře $wdir: $!"); my @wdircontent = grep { $_ !~ /^(\.|\.\.)$/ && -f "$wdir/$_" } readdir(WDIR); closedir(WDIR); my $randomwfile1 = get_full_path(File::Spec->join($wdir, $wdircontent[int(rand($#wdircontent + 1))])); my $randomwfile2 = get_full_path(File::Spec->join($wdir, $wdircontent[int(rand($#wdircontent + 1))])); my ($tmpfile1, $tmpfilename1) = tempfile(UNLINK => 1, SUFFIX => '.png') or die "$!"; my ($tmpfile2, $tmpfilename2) = tempfile(UNLINK => 1, SUFFIX => '.png') or die "$!"; #system('convert', "$randomwfile1", '-quality', '100', '-resize', 'x1200', '-gravity', 'center', '-crop', '1920x1200+0+0', "$tmpfilename1") == 0 system('convert', "$randomwfile1", '-quality', '100', '-resize', 'x1600', '-gravity', 'center', '-crop', '2560x1440+0+0', "$tmpfilename1") == 0 or die "Convert 1 failed: $!"; system('convert', "$randomwfile2", '-quality', '100', '-resize', 'x1200', '-gravity', 'center', '-crop', '1600x1200+0+0', "$tmpfilename2") == 0 or die "Convert 2 failed: $!"; system('montage', "$tmpfilename1", "$tmpfilename2", '-quality', '100', '-background', 'black', '-mode', 'Concatenate', '-gravity', 'SouthWest', '-tile', 'x1', "$wfile") == 0 or die "Montage failed: $!"; open(INFO, ">:encoding(UTF-8)", "/tmp/wallpaper-info.txt") or die("open() failed: $!"); print INFO "left picture: $randomwfile1\n" ."right picture: $randomwfile2\n"; close(INFO); unlink "$wfileold" if (-f "$wfileold"); unlink "$wfilelink" if (-l "$wfilelink"); symlink("$wfile", "$wfilelink"); $wfile =~ s/'/'\\''/g; # Aby to prošlo v následujícím příkazu, pokud je ve jméně souboru apostrof. #system('export DBUS_SESSION_BUS_ADDRESS='."'$dbus'".'; gsettings set org.gnome.desktop.background picture-uri '."'$wfile'"); system('export DBUS_SESSION_BUS_ADDRESS=$(grep -z "DBUS_SESSION_BUS_ADDRESS" "/proc/$(pgrep gnome-session)/environ" | cut -d= -f2-); gsettings set org.gnome.desktop.background picture-uri '."'$wfile'");
Je to nastaveno na dvoumonitorovou konfiguraci: vlevo 2560×1440 a vpravo 1600×1200 zarovnaný na spodní okraj levého monitoru.
V noci jsem si ještě vzpomněl, že vlastně ten skript nepůjde spustit na místě, kde to ještě není nachystaný ten symlink (kvůli prodlevě při generování nového obrázku, kdy by nebyl soubor s tapetou dobře vytvořený, se obrázek střídavě generuje do dvou souborů a po vygenerování se jen přesměruje symlink, aby se plynule bez prodlev zobrazila nová tapeta), takže před případným použitím doporučuji aplikovat tenhle patch:
--- a/wallpaper-random-change.pl 2016-01-14 09:37:20.597823140 +0100 +++ b/wallpaper-random-change.pl 2016-01-14 09:37:32.513515615 +0100 @@ -38,7 +38,7 @@ my ($wdir, $wfilelink, $wfile, $wfileold) = (undef, undef, undef, undef); -unless (($#ARGV + 1) == 2 and -d $ARGV[0] and -l $ARGV[1]) { +unless (($#ARGV + 1) == 2 and -d $ARGV[0] and (-l $ARGV[1] or not -e $ARGV[1])) { print_help; } else { $wdir = get_full_path($ARGV[0]);