AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.
Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).
Bylo vydáno do češtiny přeložené číslo 717 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.
Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.10.38 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Google zveřejnil seznam 1220 projektů od 195 organizací (Debian, GNU, openSUSE, Linux Foundation, Haiku, Python, …) přijatých do letošního, již dvacátého, Google Summer of Code.
Na základě DMCA požadavku bylo na konci dubna z GitHubu odstraněno 8535 repozitářů se zdrojovými kódy open source emulátoru přenosné herní konzole Nintendo Switch yuzu.
Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.1.0. Po devíti letech od vydání předchozí verze 3.0.5. Doména dillo.org již nepatří vývojářům Dilla.
O víkendu probíhá v Bostonu, a také virtuálně, konference LibrePlanet 2024 organizovaná nadací Free Software Foundation (FSF).
Nová vývojová verze Wine 9.8 řeší mimo jiné chybu #3689 při instalaci Microsoft Office 97 nahlášenou v roce 2005.
Coppwr, tj. GUI nástroj pro nízkoúrovňové ovládání PipeWire, byl vydán v nové verzi 1.6.0. Zdrojové kódy jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.
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]);