0% found this document useful (0 votes)
224 views100 pages

Linux Format - June 2025

The document discusses the latest features and updates in Ubuntu 25.04, highlighting its significance in the Linux distribution landscape despite not being a long-term support (LTS) release. It includes insights from team members on desired features and improvements, such as better packaging system integration and user-friendly tools. The issue also features reviews of various Linux distributions and tutorials for users to enhance their experience with Ubuntu and other systems.

Uploaded by

Hoàng Kim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
224 views100 pages

Linux Format - June 2025

The document discusses the latest features and updates in Ubuntu 25.04, highlighting its significance in the Linux distribution landscape despite not being a long-term support (LTS) release. It includes insights from team members on desired features and improvements, such as better packaging system integration and user-friendly tools. The issue also features reviews of various Linux distributions and tutorials for users to enhance their experience with Ubuntu and other systems.

Uploaded by

Hoàng Kim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 100

WELCOME

MEET THE TEAM Spring ahead


It’s that time of year when the
We’re trying out the new features of flowers start to bloom, the lawn
Ubuntu 25.04. If you could have any needs cutting again and Ubuntu
gets updated. We might be on an
feature implemented on Ubuntu, what odd year, so no LTS edition, but
would your dream be? with Ubuntu still being a key
Linux distribution, it points the
way many will follow. We’ve got a
packed issue ready to get you up
Nick Peers to speed with the latest Ubuntu
It may have been an April Fool’s joke, but version. Turn to our review on
the ‘news’ about a universal packaging page 22 to discover the new and
system replacing Snap, Flatpak, AppImage exciting features, or if you’re new
and the rest had me excited. Failing that, to Linux, we’ve got a quick-start guide in our feature on page 32
maybe Ubuntu could make more of an effort that can help you try out the new Ubuntu in seconds.
to accommodate other packaging systems in its App Center. There’s no doubt that Ubuntu has lost some of its desktop
leadership over recent years. Its onward push for Snap
integration and standardisation on the Gnome 3 desktop
Michael Reed %0)"!1,*+62+12v0"!!&01/,01,%"!,##&+1%"&/,4+
I wish more of the distros would make directions, and that’s no bad thing. It lets Ubuntu focus on its
ʋǠơࢳ%ʋɭljɽljǫȍơɽˊɽʋơȟȟȶɭơɢɭȶȟǫȥơȥʋȶɭ corporate-funded necessities and enables desktop users to
ơʽơȥʋǠơƎơljŔʠȍʋࡳĭǫʋǠʋǠơɭǫnjǠʋljɭȶȥʋ࢛ơȥƎ $,+!02--,/1-/,'" 101%1"11"/*""11%"&/+""!0o"}/"
ečz࡬ࢳʋǠơljŔɽʋɭȶȍȍŹŔƃȇɽŔɭơŔnjɭơŔʋljơŔʋʠɭơ looking at you, lovely Linux Mint.
for the average user. Sure, there are a few Many seem to hold this up as some sort of end-of-times
ȶʽơɭǠơŔƎɽ࡬ŹʠʋčŹʠȥʋʠǫɽȥࢬʋʋŔɭnjơʋǫȥnjȍȶˁ࢛ơȥƎɽˊɽʋơȟɽࡳ event, while it’s simply open source at work. It’s why we can help
people try Ubuntu in multiple different ways. It’s why you can
install Ubuntu on multiple different machines without licence,
Nate Drake activation or hardware limitations and none of those pesky
I would love to see more seamless !3"/10,/+$4/"o%& %&04%6 01/1"!"+',6&+$20&+$&+25
ƎʠŔȍࢳŹȶȶʋǫȥnjˁǫʋǠĭǫȥƎȶˁɽ࡬ȟǫȥʠɽʋǠơ many moons ago, and I hope you do, too.
partitioning puzzle, which I’ve been forced
to resolve by installing an extra drive for
Linux in my laptop. A OneNote࢛ȍǫȇơŔɢɢʋȶ
rival Microsoft’s would be nice, too. Neil Mohr Editor
[email protected]

Les Pounder
My feature is specific for Ubuntu on
ʋǠơࢳèŔɽɢŹơɭɭˊáǫࡳ¡ŔȇơʋǠơeáz¶ŔȥƎ
camera easier to use. With the power of
ʋǠơࢳèŔɽɢŹơɭɭˊáǫࠄŔȥƎá-zơ࢛ŹŔɽơƎɽʋȶɭŔnjơ࡬

Back
ˁơǠŔʽơʋǫȥˊɭȟ࢛ɢȶˁơɭơƎá-ɽ࡬ŔȥƎčŹʠȥʋʠ
ƃȶʠȍƎŹơʋǠơǫƎơŔȍ¶òljȶɭȟŔȇơɭɢɭȶǿơƃʋɽࡳ

Mayank Sharma
issues!
zࢬƎȍǫȇơʋȶɽơơɽȶȟơljȶɭȟȶljơȥŔŹȍơƎ࢛Źˊ࢛ Digital and print:
see page 62
default automated backup. A combination
of TimeShift, %ʋɭljɽɽȥŔɢɽǠȶʋɽŔȥƎRsync to
take periodic snapshots of system and user
ljǫȍơɽࡳȥƎŔȶȥơ࢛ƃȍǫƃȇȶȥ࢛ƎơȟŔȥƎ%Ŕƃȇʠɢ
Now switch that can save and then restore the desktop.

www.techradar.com/pro/linux June 2025 LXF328 3


BACK ISSUES!
Page 62

UBUNTU
REVIEWS

BLASTS OFF
The new 25.04 version of
Ubuntu is here, and it’s
geared towards dual
Ryzen 9 9950X3D 19
Processor connoisseur Paul Alcorn simply
boot setups. Nick Peers
loves this new 16-core monster that’s been explains how to run it
unleashed by AMD. alongside Windows.
See page 32!
Debian 12.10 20
Nate Drake explores the latest stable point
release for Bookworm. Does the OS still
live up to its reputation for stability?

CREDIT: Magictorch
Garuda Linux 250308 21
Nate Drake dives into this Arch-based
distro, named after a divine bird. Is it a
soaring eagle or just a lame duck?

Ubuntu 25.04 22
Huffing and puffing, Nate Drake takes a
ROUNDUP IN DEPTH
look at the interim 25.04 release and
wonders how things could get much better.
CREDIT: Magictorch

Secure browsers 26 Inside the DNA of AMD 48


Two Point Museum 24 Always the cautious type, Michael Reed A new generation of AMD GPUs is upon us.
Management is thrilled to hear it can get goes on the hunt for a browser that offers Amateur genealogist Jarred Walton delves
money for old content it has lying around. enhanced security without compromising into the AMD family tree and picks apart
Mollie Taylor thinks it’s too late for LXF. on fun and features. the heritage of RDNA 4.

4 LXF328 June 2025 www.linuxformat.com


CONTENTS

Pi USER TUTORIALS

Pi news 43 TERMINAL: File encryption 52


Introduced by Les Pounder, who is Keeping files safe from prying eyes doesn’t
),+$&+$1,$"1,21+!,21*,+$1%" need to be a Herculean trial. Shashank
& ,**2+&16,+ "$&+o Sharma has a tool that makes it a breeze.

MUSESCORE: Write music scores 54


Nick Peers shows you how to use
MuseScore to transform your musical
ideas into full-blown compositions.

OPEN DOCS: Slides and spreadsheets 58


Marco Fioretti explains how to create the
same office files you can make with
LibreOffice – but without LibreOffice.

Modulo 5 Basic 45 MONITOR HEALTH: Custom graphs 64


Is it a Pi? Is it a Pine? No, it’s Les Pounder Everyone loves making custom
waving the latest Pineboard expansion graphsfrom their weird health glitches
around. Stop it, Les! – Michael Reed explains how he does it!

Twister OS 3.0.2 44 Frost-free fruit with a Pi Pico 46 HARDWARE: What made Linux great 68
Les Pounder hasn’t seen Twister, or the Les Pounder grows strawberries, but now After the ’80s 8-bit boom, enthusiasts
sequel, Twisters, but he has played Half- he has planted a Raspberry Pi Pico, hoping moved to more capable 16-bit systems, able
Life, live on air using a Pi and Twister OS. for a fresh crop of raspberries. to run Linux. Mike Bedford investigates.

CODING ACADEMY

Create a web-based reward system 90


Matt Holder wonders how difficult it would
be to replace a card-and-stamp reward
system with something more modern.

Simple DirectMedia Layer apps 94 UPGRADE IT: Your mouse 72


David Bolton shows how to set up SDL2 Look after your digits and treat them
with Rust and demonstrates it with a 400- witha hand-picked mouse selected by
line program to pick a person at random. Saeed Wazir and Neil Mohr.

REGULARS AT A GLANCE HACKING ACADEMY

News 6 Mailserver 16 Hacking news 78


Aggressive AI annoyance, Blender gets Readers discuss their views on Steam, Introduced by Nate Drake, who’s been
gong, PWA Firefox feature, Linus lambasts Windows, RISC and more with Neil Mohr. using free airport Wi-Fi to discuss the
Linux patch, hypothetical HP handheld, dangers of public Wi-Fi.
OTF is Trumped, plus industry opinion and Back issues 62
a look at the latest distro updates. Get hold of previous Linux Format editions GL.iNet Beryl AX (GL-MT3000) 79
everything must go! Our resident
Kernel watch 10 nomad Nate Drake
HotPicks 83 hooks up one
Answers 12 Mayank Sharma has never been to a of GL.iNet’s
Neil Bothwick has bits and bytes firing from concert. His wife wanted him to take her tinier offerings to
his neurons, so solutions to problems such 1,*20& )n21%"/"#20"!o2/12/&+$ stay connected in
as setting laptop charging limits, passing broken tibia, he now has ample time to dig uncharted territory.
cookies to programs, copying keyboard for open source apps such as Thunderbird,
settings and more just pour from his brain. Clapper Media Player, Bottles, Exercise Evil twins & honeypots 80
Timer, KPhotoAlbum, ProtonVPN, Refine, Nate Drake demonstrates how easy
Subscriptions 15 Fastfetch, Blinken, KsirK and Qpdf Tools. it is to set up rogue wireless networks
Subscribe to a wide range of non-Linux to trick users into connecting.
magazines and make mega savings! Next month? 98 Pen testers beware!

www.techradar.com/pro/linux June 2025 LXF328 5


THIS ISSUE: Aggressive AI annoyances Linus lambasts
Linux patch Hypothetical HP handheld OTF is Trumped

ARTIFICIAL INTELLIGENCE

 ,-"/1&,+0/"%2/1&+$
open source projects
AI crawlers are overwhelming open source platforms, escalating
costs, and forcing drastic measures like country-wide blocks.
pen source platforms are under
O
-)",# /#1&+$20"/$"+101/&+$0
0&"$"#/,*$$/"00&3" 4" 1,/"0"*)")"$&1&*1"4"/,40"/0o
/4)"/0n4%& %&+0,*" 0"0/" "3"/1%")"00n1%",-"+0,2/ "
,3"/4%")*&+$&+#/01/2 12/"n!&0/2-1&+$0"/3& "0 ,**2+&16%0"$2+#&$%1&+$ (o
and escalating costs. )0*!"3"),-"/& ,)ƪ
,*",10!"0&$+"!1,0 /-"1/&+&+$!1 "+"/+!&+,1"!1%1%"#&/0104
#,/ *,!")0&$+,/"&+01/2 1&,+0&+4"0&1" "3&!"+ ",#1%&04%"+-& 12/"
robot.txt#&)"0+,11,0 /-"0&1"!1o%",3"/))
robot.txt of an anime girl appeared on a
"##" 1 +"0&*&)/1,ƒ!"+&),#0"/3& "„ +,*" &1&+01+ "o%"&*$"
attacks. /"-/"0"+1"!1%"!"#2)1),!&+$-$"
/"4"2)1n#,2+!"/+!,#,-"+ for +2&0o%&01,,)&0-/,,#v,#v
0,2/ "!"3"),-*"+1-)1#,/*,2/ " 21n 4,/( %))"+$"/!"0&$+"!1,), ( 
/" "+1)6011"!1%1%"}0 2//"+1)60-"+!&+$ 0 /-"/0o +&1&)/"02)10%3"""+
:8v988,#%&01&*"*&1&$1&+$%6-"/v -/,*&0&+$o +,*"060!*&+/1
$$/"00&3" )/$")+$2$"*,!")† &,1/,40(&-,01"!,+01,!,+1%1
/4)"/010 )"€o 4&1%&+:o=%,2/0&**"!&1")6#1"/&+01))&+$ Open-source platforms like Read the
"3&+ "+7&n*"*"/,#1%" "!,/$2/" +2&0n&1), ("!@9n;>> )&"+10n4%&)")),4&+$ Docs noted multiple incidents where
-/,'" 1}0060!*&+1"*n%0)0,011"!1%1 :n>A8o +,1%"/4,/!0n/,2+!A?,#1/##& 1, excessive traffic generated by posts
#1"//"-"1"!)61/6&+$1,), (,102+"10n 1%"-)1#,/*4021,*1"!o caused huge bandwidth costs.
%"%!1,/"0,/11,++&+$))1/##& 4&1%o/ 0"##" 1&3"0+2&0&0n&1}0 20"!&002"0
ƒ/7&)„!,*&+o #,/)"$&1&*1"20"/0o ,/&+01+ "n&#
"++&0 %2"/1n4%,&0)"!*&+1&+"/,# )&+(&00%/"!&+ %1/,,*,/*&)&+$
1%",-"+0,2/ "&0-,/0, &)+"14,/(n%0 )&01n&1}0)&(")61%1*2)1&-)"-",-)"4&))
)0,-2)& )6)*01"!&$1" % ,*-+&"0 click it simultaneously. +2&0&02+)"
#1"/!&0 ,3"/&+$1%1,3"/?8,#1/##& 1,%&0 1,!&01&+$2&0%"14""+1%&0+!,1
CREDIT:"!1%", 0o"0,

0"/3"/40$"+"/1"!61/&+&+$,10o " 1/##& n0,0,*"20"/0%3"1,4&1


)0, )&*"!1%1,104"/"0 /-&+$-$"0 *&+21"0"#,/"1%")&+(),!0o
"3"/60&5%,2/0n"3"+1%,0"1%1 ,+1&+"!+, 1&))n1%""+"#&101,,-"+0,2/ "
20"#2)1/&+&+$!1n02 %01%"4"0&1"}04&(& -/,'" 10/" )"/o +:8:<n"!1%"
"!&1%&01,/6o , 0-,01"!1%1&+60&+$)" 
/!&1&,+)), (&+$*"1%,!0n02 %0 /4)"/!,4+),!"!,3"/98,#!1&+
/1"v)&*&1&+$n%3"-/,3"!&+"##" 1&3"1%20#/n ,+"!6n/"02)1&+$&+,3"/[=n888&++!4&!1% Tools like Anubi use a proof-of-work
" 20"*+6 ,10*("20",#/"0&!"+1&) %/$"0o#1"/), (&+$ ,10n1%"!,4+),!0 challenge to block AI bots. This can
-/,5&"01,04&1 % !!/"00"0o%"6/")0, !" /"0"!6?=n03&+$[9n=88*,+1%o hugely cut down automated traffic.

6 LXF328 June 2025 www.linuxformat.com


NEWSDESK

SOFTWARE OPINION

Blender wins the Oscars UNIQUELY


Blender 4.4 debuts, with a focus on stability, better LINGUISTIC
codec support and Oscar-winning acclaim.

T
%")"+!"/ ,2+!1&,+%0++,2+ "!
1%"/")"0",#3"/0&,+<o<,#&10#/""
+!,-"+0,2/ ";$/-%& 01,,)o
"3"),-"/0%3""*-%0&0"!01&)&16#,/1%&0
/")"0"n4%& %40!"3"),-"!,3"/)1":8:< Italo Vignoli
+!"/)6:8:=n)"!&+$1%"*1,!21%"&/$/,2- is one of the founders
"##,/11%"&+1"/,#2)&16o2/&+$1%&01&*"n of LibreOffice and the
,3"/?882$#&5"0%3"""+!!/"00"!o Document Foundation.
)"+!"/)0,+,4 ,+1&+00"3"/)("6
2-!1"0o%&"#*,+$1%"0"&0+"4461, &/"##& " 1&3")6
,))1"*2)1&-)"!1v), (+&*1&,+0&+1, The Blender Foundation has released a showcase reel of clips supports language
0&+$)" 1&,+20&+$1%"),10#"12/"o from projects that are being developed using the software. *&+,/&1&"04,/)!4&!"o+"
)1%,2$%2)(+02--,/1&001&))"5-"/&*"+1)n ,#1%"("6460&1 %&"3"0
-"/#,/*+ "%0+,4""+ ,+0&!"/)6 *,!&#&"/0/"+,402--,/1"!#,/"5-,/1#/,* 1%&0&01%/,2$%1/+0)1&,+
&*-/,3"!o,*"#"12/"0/"*&00&+$n02 % )"+!"/o%&0)),4020"/01,-) ",)2*" +!), )&01&,+n4&1%1%"
0-"+n-"+2!&3+! 6!/3&"4-,/1o &0-) "*,!&#&"/,3"/v1,-+"5&01&+$ 0,#14/"3&))"&+,3"/
,4"3"/n&1)0,%0&*-/,3"! ,*-1&&)&16 sequence or deploy Geometry Nodes to created 9:8)+$2$"0n&+ )2!&+$
4&1% !/&3"/0n&+ )2!&+$1%"3&!& +&*1"!3,)2*"0-/, "!2/))6o minority and constructed
:888v=8880"/&"0o %")1"01/")"0"#"12/"0/14,/(#/,* )+$2$"0)&(""+1/)
%"-1&!"+,&0"/%0)0,""+2-$/!"!o 1%"0 /v4&++&+$*,3&" ),4n4%& %40 2/!&0%n)&+$,++!
1+,402--,/10*,/" ,+0&01"+1!"+,&0&+$n *!""+1&/")6&+)"+!"/o ++&+1"/3&"4,+1%" +1"/0)3& o%&0/,!
*,/" 2/1" ,),2/0n+!)"00),1 %&+$o ,2+!1&,+4"0&1"n!&/" 1,/ &+10&)),!&0 )&+$2&01& 02--,/1)),40
)"+!"/3&!",0 ++,4"/"+!"/"!20&+$ 011"!1%1*+6,#1%""5&01&+$#&)*+&*1,/0 small communities to
1%" o:>=3&!", ,!" n3&1%" ,//"0-,+!&+$ 1,,()"001%+4""(1,04&1 %1,)"+!"/o " -/"0"/3"1%"&/)+$2$"0
!/,-v!,4+*"+2o"+!"/2!&,)0,+,4 )0,!*&11"!1%11%"*&+!/4,#20&+$ 620&+$1%"*&+*,!"/+
02--,/10/"+!"/&+$1,#,/*1o+&*1"! )"+!"/ for ),440!,4+1,&10/")v1&*"v 0,#14/""+3&/,+*"+10o
3,)2*"0#/,* ",*"1/6,!"0,/3,)2*" /"+!"/&+$"+$&+"o %"&/"##& "&+$2&01& 
,,)0"51"+0&,+%")-0
/"0"/ %"/0+!"+1%20&010
document minority
SOFTWARE )+$2$"0o 1&+1"$/1"0
1,,)0#,/*+$&+$)&+$2&01& 
!1n ,+3"/1&+$#,/*10n+!

PWA support for Firefox? +)60&+$-%,+,),$6n*(&+$


it easier to create resources
for endangered languages.
Taskbar Tabs arrive as an experimental feature. ,**2+&16"+$$"*"+1
&03&1)#,/+6-/,'" 11,

A
#1"/1%"#&)2/",#,7&))/&0*1, 1%"0&0&1 20"!20"/ ,+#20&,+n-)201%"/" 02 ""!n+!+1&3"
#2))6&+1"$/1"4"--)& 1&,+04&1% 40) (,#-"/ "&3"!3)2"o )+$2$"-/,'" 10&+3,)3"
CREDIT:)"+!"/<o<%,4 0""")ƒ,22"„o,7&))

20"/0}!"0(1,-0&+:898n1%"/,40"/ 2&+,)0,,21)&+"!,7&))}03&0&,+#,/ local communities in


!"3"),-"/%0 ,+#&/*"!,+ "$&+1%1&1 integration in &/"#,5o%&0&+ )2!"01%"&)&161, translation efforts.
-)+01,/&+$+1&3"ƒ-/,$/"00&3"4" 1("+61+!*,3"&1"0&)6&++!,21,#4" &$%1v1,v)"#1ƒ„
--0„02--,/11, &/"#,5o --*,!"o ")0,!&0 200"!*,!&#& 1&,+01, language support includes
%&0#"12/"n 2//"+1)6+*"!0(/ &/"#,5}0 4%"+20&+$0n02 %0/"*,3&+$ /& n "/"4n0%*&/&
0n4&))1%",/"1& ))6)),44"0&1"01, 1%"10,/,,(*/(01,,)/0o +!,1%"/0n4&1%,+$,&+$
#2+ 1&,+0--)& 1&,+0n,##"/&+$#"12/"0 "!!"!1%1&14,+}1"-,00&)"1, !&0 200&,+01,!!/"00v
02 %010(/-&++&+$+!,##)&+" "00o +3&$1"46#/,*4"--04&1%4"0&1"o 0-" &#&  %))"+$"0o
&/"#,5-/,!2 1*+$"/3&!2&+, &/"#,520"/04&))+""!1, ),0"&1o2&+,)0, 6"*-,4"/&+$*&+,/&16
%0 ,+#&/*"!1%1-/"3&"43"/0&,+,#1%&0  (+,4)"!$"!1%14%&)"&1}0"061,-&+4" )+$2$"0-"("/04&1%1,,)0
#"12/"&0 2//"+1)63&))"&++&$%1)62&)!0 --& ,+01,1%"&+!,4010(/n&1&0*,/" for documentation and
,#1%"/,40"/o %))"+$&+$&+ o&+2540+}1*"+1&,+"!o !&$&1) ,**2+& 1&,+n
++"/)&"/-,01,+1%",7&)),++" 1 %",+)&+" ,**2+&160""*0!&3&!"!n$&3"+ &/"##& " ,+1/&21"01,
-)1#,/*n%" (+,4)"!$"!1%"-/"3&,20 ,7&))}0"/)&"/#&)2/"1,#2))602--,/10n )&+$2&01& !&3"/0&16+!
#&)2/",# &/"#,5}0!"0(1,-02--,/1,+ unlike %/,*&2*v0"!/,40"/0o -/"0"/31&,+$),))6o

www.techradar.com/pro/linux June 2025 LXF328 7


NEWSDESK

OPINION LINUX

EMBEDDED Linus hates


IN NICE “turd” code

CREDIT:&(&*"!&š&+25 ,2+!1&,+n,/3)!0u+!u &*u"*)&+o'-$


Torvalds has been criticised
Linus Torvalds slams messy “turd” files in the past for his blunt
communication style and harsh
and demands cleaner Linux builds. criticism of code proposals.

T
%"!"1"02//,2+!&+$&+25 ,!&+$ &$+,/"!o21*,/"&*-,/1+1)6n1%,0"12/!0)0,
Mark Filion 01+!/!0%01("++"412/+n#1"/ /"(#&)"+*" ,*-)"1&,+j,+,n!!&+$&11,
is senior marketing manager &+20,/3)!0,-"+)6)*01"!+ $&1&$+,/"!,"0+}1 12))6#&51%"-/,)"*o%&0
Ŕʋࢳ-ȶȍȍŔŹȶɭŔࡳ 1"01-1 %#,/1%"&/" 1"+!"/&+$ 1%&+$+""!01,!&"o€
+$"/ƒ„020601"*&+&+25>o9=o +1")"+$&+""/04!"!&+1,1%"!&0 200&,+
+9<1%v9>1%6n1%" &02+%--&+"00 "+1/"!,+1%"# 11%11%" 6 (+,4)"!$&+$1%",3"/0&$%1o%"61%"+
*"!!"!" &-"0 ,!"402&)10-/1,##2))("/+")2&)!0n0, 02$$"01"!/"), 1&+$1%"%!/1"01#&)"01,
,+#"/"+ "&0%"!&+$1, )"3"0"%&+!2+4+1"!#&)"0&+1%"&+ )2!" .hdrtest02!&/" 1,/&"0n1%"+&+1/,!2 &+$
& "o/!&1&,+))6%")! !&/" 1,/&"01%1%" ))"!12/!0€o ,+#&$2/1&,+,-1&,+1,*+$"1%"0"2&)!v
),+$0&!""/+")" &-"0&+ ,/3)!0!!"!p%"1%&+$1%1*!"*" 1&*" %" (0o +1%",/6n1%&04,2)!-/"3"+1+6
/&0n1%&06"/*/(0&10#&/01 +,1& "1%1&14001&))1%"/"401%1|$&101120} *,/",#&+20}00,v ))"!12/!0#/,* )211"/&+$
standalone edition – set ,*-)&+0,211%"012-&!12/!0+,1"&+$ 1%"2&)!1/""o
$&+011%" (!/,-,#1%"
-& 12/"0.2" /"+ %&3&"/
%" ,+#"/"+ ",##"/0
2+&.2",--,/12+&161,
,++" 14&1%0,*",#
HARDWARE FUNDING
1%"1%,2$%1)"!"/0+!
,/"!"3"),-"/0,#1%"
"*"!!"!n,-"+0,2/ "
0,#14/" ,**2+&16o
The Nope Deck Open source
11"+!""0 +),,(#,/4/!
1,14,!60,#&+0&$%1#2)
1)(0n#,)),4"!6!6
HP dismisses handheld
plans after an interview funding fight
!"!& 1"!1,4,/(0%,-0n with its gaming SVP. The OTF is suing the
4%"/", 1,n)$/&!n
USAGM for jeopardising
H
)& *"/+!&-"&/" %0 )/&#&"!1%1&1%0+,&**"!&1"
!"3"),-"/04&))*""1o -)+01,-/,!2 "%+!%")!$*&+$ open source projects.
4,!!&1&,+)"3"+104&)) !"3& "&+1%"3"&+,#,1%"/1" %

T
,,("+!1%" ,+#"/"+ "o *+2# 12/"/0)&("+!"+,3,o %"+,+v-/,#&1 ƒ-"+" %+,),$6
201"#,/"*"!!"! +)&+"0-" 2)1&,+#)/"!/&"#)6#1"/+ 2+!„&002&+$1%"$"+ 6#,/
" &-"0(& (0,##1/  &+1"/3&"44&1% ,0"-%&+"+n }0,# ),)"!&ƒ „+!1%"##& "
%,"+&5n1%"&+25"!& $*&+$0,)21&,+0o+-/&0"!1"* ,#+$"*"+1+!2!$"1#1"/#2+!&+$40
2**&14&))1("-) ",+ #,/"&+$"11"/02&1"!1,0*))0 /""+0,+ 1"/*&+1"!6!" /""#/,*/"0&!"+1/2*-o
9;1%6n/&$%1 /,001%" %+!%")!0o ,4"3"/n0%""*-%0&0"!1%1  %" 02--,/10/,2+!=8,-"+0,2/ "
01/""11 ,1")*-+&)"o &0#, 20"!,+&10+! 6-"//+!0o -/,'" 10&+ )2!&+$,/n"1}0+ /6-1n-"+
%"+n#/,*9>1%v9@1%6n %&0%0+}1-/"3"+1"!"!!&1,/0#/,* +! v/,&!o 10)402&1 )&*01%"1"/*&+1&,+&0
1%" 1/"*"/ ,**2+&16 !&0 200&+$%6-,1%"1& ) %+!%")!n',(&+$)6 2+)4#2)n0#2+!&+$,#[<;o=*&))&,+#,/:8:=
4&))"%,01&+$&10++2) 4,+!"/&+$&#20"/04,2)!+""!1,-6*,+1%)6 %!)/"!6""+$/+1"!6,+$/"00o
-/&+$  (#"011", 020 /&-1&,+n00,*" -/&+1"/,4+"/0!,o /!&1&,+))61%"$,3"/+*"+1%0
,v4,/(&+$0- "&+& "o &+3"01"!%"3&)6&+,-"+0,2/ "3&1%" o +
&1%&10$/"1)&+"2- :8:<n"1}0+ /6-1/" "&3"![@88n888n4%&)"
+!!' "+1 ,**2+&16 1%",/-/,'" 140$&3"+[=88n888o
"3"+10n*"!!"!" &-"0  0-" &)!3&0,/1,1%"/2*-
:8:=-/,*&0"01,"+ !*&+&01/1&,+/&("!"0 /&"!1%" 0
2+*&00)"$1%"/&+$#,/ 2/!"+1,1%"15-6"/€n!"0-&1"1%"# 11%1
"*"!!"!,-"+0,2/ " 1%"%&1" ,20"+!*+6,1%"/#"!"/)
"+1%20&010o ,/*,/"!"1&)0n 4"0&1"020""1}0+ /6-1 "/1&#& 1"0o
3&0&1https://embedded- %" 4"0&1"0601%"#2+!%0/")"0"!
recipes.org/2025/ and ,3"/:n=88-1 %"0#,/,-"+0,2/ "0,#14/"o 1
https://gstreamer. Tan praised SteamOS for playing well with small screens, as )0,02--,/1020$"#,/<=*&))&,+-",-)"
freedesktop.org/. well as its ability to save game progress between sessions. &+ ,2+1/&"04&1%01/& 1&+1"/+"1 "+0,/0%&-o

8 LXF328 June 2025 www.linuxformat.com


NEWSDESK

Distro watch
OPINION

VALKEY
What’s behind the free software sofa? TURNS ONE
DEEPIN 25 ALPHA
%&0%&+"0"&+25!&01/,%0""+&+!"3"),-*"+10&+ ":88<o 1&*0
1,"")"$+1+!20"/v#/&"+!)6n4%& %&1 %&"3"01%/,2$%ƒ""-&+
"0(1,-+3&/,+*"+1„n0"!,+1%"1=1,,)(&1o%&0)1"01)-%
includes upgraded,+1/,)"+1"/*,!2)"0#,/4))--"/n0 /""+03"/n
-,4"/*+$"*"+1n*,20"+!1,2 %-!o 1)0,2+!)"0&+6-0 – The distribution was Lori Lorusso
""-&+}0- ($"*+$"*"+11,,)o%"!"30061%&0-/,3&!"02+&#&"! formerly known as is head of community
--/2+1&*""+3&/,+*"+1!" ,2-)"!#/,*1%"owww.deepin.org Linux Deepin. ŔʋࢳáơɭƃȶȥŔࡳ

)("6%0/" %"!&10
,+"v6"/++&3"/0/6
ENDEAVOUROS 2025.03.19 0-/,'" 1o 140.2& ()6
&(" %6ƒ0"""),4„+!"3,2/&00"!,+/ %&+25o !,-1"!0-/,'" 16
1#,)),40/,))&+$/")"0"*,!")+!!"#2)101,1%")0* 1%"&+25 ,2+!1&,+#1"/
!"0(1,-o0"/04%,,-1#,/1%"!&01/,}0,+)&+"&+01))"/ + %,,0" "!&0 %+$"!&100,#14/"
,1%"/"+3&/,+*"+10o%")1"01"/ 2/6",/"#/"0%/")"0")0, )& "+ "n4&1%02--,/1#/,*
,*"04&1%+2-$/!"!,##)&+"&+01))"/n&+ )2!&+$#&51%1"+02/"0 ,+1/&21,/01n ,,$)"n
/ %*&//,/0),!-/,-"/)6o #20"/0 %,,0"Systemd21,v&+01))n Setup now has better "+ "+1n)&n/& 00,+n
0"12-+,4 /"1"0:  -/1&1&,+&+01"!,#9 o,2 + support for installing "/ ,++!&3"+o214%1
!&0 ,3"/*,/"1https://endeavouros.com. multiple kernels. %0%--"+"!&+1%")016"/n
+!4%6!,"0&10%,4$/"1
future for open source?
)("6@o9)2+ %"!1
Q4OS 5.8 2",+&+,+!,+o),+$
<&00"!,+"&+o-&+0/"3&))"4&1%n04"))0 4&1%+1&3"02--,/1#,/ 
1%"/&+&16!"0(1,-"+3&/,+*"+1n4%& %-/,3&!"0*,/"1/!&1&,+) +!3" 1,/0&*&)/&160"/ %n
!"0(1,-o%")1"0101)"/")"0"n ,!"v+*"!.2/&20n&00"!,+ &1!!0-/,$/**&)&16
1%"*,01/" "+1-,&+1/")"0",#"&+ƒ9:o98„+! ,+1&+0+2*"/,20 02--,/10,6,2 + %,,0"
2$#&5"0o%"!"0(1,--/,#&)"/1,,)%0+"4-)2$&+#,/%+!)&+$ Q4OS now has better %,46,2-216,2/!10"
)1-(0o%"-/,#&)"/}0 -&)&1&"0%3")0,""+"5-+!"!n0&1+,4 support for Flatpaks 0 /&-101,$"1%"/o%&0*("0
%0"11"/02--,/1#,/*2)1&1%/"!&+$o""*,/"1https://q4os.org. and multithreading. it easier to plug in your
%,0"+)+$2$")&("61%,+
+! /"1" ,**+!00"!
,+%,46,22&)!o
CACHYOS 250330 %"$,)&01, /"1"
%&0/ %v0"!&+25!&01/,&0!"0&$+"!#,/,1%0-""!+!0" 2/&16o -/,'" 11%1 ,*-+&"0 +
*-/,3"*"+10&+ )2!"!"-),6&+$1%"ƒ2/01v/&"+1"!"0-,+0" *,3"1,o%1&+3,)3"01/201o
+%+ "/„0 %"!2)"/1,,-1&*&0"1%"&+25("/+")o%")1"013"/0&,+ 10"0%3"1,4,/(n+!
&+ )2!"01%"+"4&*&+",,1),!"/o%&002--,/10,1% n +! 6,2%3"1,1/2011%11%"6
!&/" 11/#00+-0%,10o%")0,+,4&+ )2!"00"11&+$01, ,+#&$2/" 4&)) //6,+4,/(&+$o,2&)!
+!"+)"*#&)"0%/&+$o %6+,4!"-),60,><x CachyOS comes 1%11/201n1%" ,**2+&16
customised &+"- ($"4&1%+,)&;:!"-"+!"+ &"0o%"!"30 )&* with an overhauled %04,/("!,+#"12/"0
1%&0&*-/,3"0-"/#,/*+ ",#&+" apps. https://cachyos.org bootloader. 1%1*("&1"+1"/-/&0"v
/"!6+!&*-/,3"
performance so companies
feel safe to migrate.
GOBOLINUX 017.01 )("6+,4%0*,/"
%&0&+25!&01/,40#&/01/")"0"!&+:88:21#,)),403"/6&//"$2)/ 1%+9n888 ,**&10n9=8
/")"0" 6 )"o2 "00&3"3"/0&,+0 *",21/,2$%)6"3"/66"/ ,+1/&21,/0n9;/")"0"0+!
"14""+:88>+!:88@o"/0&,+89?o89/"-/"0"+101%"#&/01+"4 ,3"/#&3"*&))&,+, ("/ pulls.
/")"0"&+,3"/#&3"6"/0o ,,&+2501+!0-/1&+1%1&1!,"0+}1 10%,401%11%" ,**2+&16v
#,)),41%"1/!&1&,+)#&)"601"*%&"// %601+!/!,#*,01!&01/,0o ,/ Each GoboLinux )"!--/, %&0*,/"
"5*-)"n&+01"!,#-) &+$--0&+šusr/binn0,#14/"+!)&//&"0%3" program has its own "##" 1&3"1%+0&+$)"v3"+!,/
1%"&/,4+!"!& 1"!#,)!"/&+/Programs. https://gobolinux.org subdirectory tree. ,-"+0,2/ "-/,'" 10o 
4,+!"/4%"/"4"4&))
"+"516"/r

www.techradar.com/pro/linux June 2025 LXF328 9


NEWSDESK

Kernel Watch
OPINION

MAN VS
MACHINE
Jon Masters summarises the latest happenings in
the Linux kernel, so that you don’t have to.
inus Torvalds announced Linux aims to be developed upstream in reasonably
L 6.15-rc1, noting that it was
“one of the bigger” development
digestible chunks, which is why the initial
upstream commit is bare bones and not
Jon Masters is a kernel hacker cycles, “due to the previous releases being intended to be usable for gaming or machine-
who’s been involved with Linux impacted by the holiday season”. The new learning workloads.
for over 22 years, and works on kernel includes various internal reworks Still, it will be fascinating for many to be able
energy-efficient Arm servers. (such as updating minimum compiler to watch a new open source driver for Nvidia
versions and refactoring networking code), GPUs being developed in the open using Rust
There has been some but it also includes a number of user-visible from day one.
interesting discussion changes, such as the initial driver stub for The original announcement for the Nova
about a patch addressing a the new Nova-core successor to the project occurred back in March 2024: https://
bug in the Linux netfilter Nouveau Nvidia GPU driver. lore.kernel.org/dri-devel/Zfsj0_tb-0-tNrJy@
tunnel driver. Most If things follow a typical Linux kernel cassiopeiae/. There is also a talk from last year’s
interesting was the development cycle, we are looking at a final &+25)2*"/0,+#"/"+ "ƒ&+ )2!&+$3&!",„n
discussion’s use of AI LLMs 6.15 kernel release in June. We will keep here: https://lpc.events/event/18/
for an explanation. readers updated next month as the kernel is contributions/1911/.
The crux of the patch tested. Of course, this assumes that Linus
comes from this line: doesn’t forget to do the release, as he RIP Dave Täht
infamously did last month for 6.14. After we We recently learned that long-time network
went to press noting that 6.14 was imminent, engineer Dave Täht has passed away. He
the new kernel was delayed by an extra day 40=Ao3"&0*,014"))(+,4+#,/
This attempts to perform when Linus got distracted preparing for ,#,2+!&+$1%"2##"/),1-/,'" 1n4%& %
type conversion (the bit in upcoming developments and “entirely forgot &*01,/"!2 "2++" "00/6,3"/20",#
parentheses) from an to actually ever cut the release”. Oops. .2"2"0+!2##"/0&++"14,/(&+#/01/2 12/"
opaque pointer (opts->u. beyond that which is necessary for reliable
data) to a geneve_opt The Nova project 1/+0*&00&,+o2 %),1 12))60"/3"01,
pointer type. Except the The new Nova project is intended to &+ /"0")1"+ 6+!'&11"/n-/1& 2)/)6#,//")v
)&+"&0*&00&+$+" "00/6 eventually replace Nouveau for Nvidia Turing time communications and interactions. News
parentheses around the (GeForce 20 series, from six years ago) and ,#%&0!"1%40-2)&0%"!61%"&/",
opts->u.data + opts->len as later GPUs that include a GPU System project: https://libreqos.io/2025/04/01/
the original intention is to Processor (GSP). It is written in Rust and in-loving-memory-of-dave/.
cast the whole expression.
The patch is thus a trivial
one-liner. In the discussion, ONGOING DEVELOPMENT
a number of replies attempt
to use AI chatbots to explain ,),,+7&+&-,01"!-1 %0"/&"0 memory management. This relates to other
the problem, some of which 1&1)"!|p-)+"0}1%111"*-101, recent discussion about simplifying the
get it wrong by failing to provide a unified implementation for the "/+")*"-$""/$&+$ƒ„ ,!"1%1
understand the point of a generalised concept of virtual privilege de-dupes identical memory across, for
typecast. This serves as a levels in the context of confidential example, several virtual machines. In the
useful reminder of the compute. This allows a confidential virtual preferred future, a special kernel daemon
importance of AI as a tool machine to have “multiple copies of a (ksmd) is replaced by userspace code that
rather than a replacement vCPU’s register state”, effectively to can “trigger merging on the specified
for human beings. mutiplex several services within the memory region asynchronously”.
It also serves as a useful 0*"o%&0*&$%1&+ )2!"0-" &) Akamai has announced that it is now
example of the importance 0"/3& "0-/,3&!"!1, ,+#&!"+1&)n +"4&+#/01/2 12/"-/1+"/€1,1%"
of sanitisers, which run prior #,/"5*-)"o &+25"/+")/$+&71&,++!%00&$+"!
to a code submission, and An initial patch was posted by Sourav *2)1&v6"/$/""*"+1&+4%& %&14&))
flag up dangerous patterns +!&*-)"*"+1&+$|")" 1&3"p provide, “at no cost”, all the necessary
that might be coding errors. Synchronous and Partitioned Merging’ infrastructure to host Kernel.org, including
Alas, today there is no following a discussion at the LSF/MM-25 the various Git repositories used for daily
standardised set of conference on Linux filesystems and kernel development.
pre-submission tests
for kernel code.

10 LXF328 June 2025 www.linuxformat.com


Make Python work for you with tutorials on coding with Django,
Flask, Pygame and even more useful third-party frameworks.
Neil
Bothwick
has bits and
Got a burning question about open source or the kernel? bytes firing
from his
Whatever your level, email it to [email protected] neurons.

Q I’ve been overcharged


I have a Lenovo Yoga laptop and it
Look under supported features
for charge threshold. Providing this is
of the current settings, so the following
allow your battery to charge to 100%:
is often used with the charger connected available, you can set about editing /etc/ $ sudo tlp fullcharge
for lengthy periods. My Android phone tlp.conf to suit your needs. You need two The threshold is reset when you either
has an option to limit charging to 80%, lines to set charging thresholds: reboot or run:
&+,/!"/1,-/"0"/3"11"/6)&#"n+!  START_CHARGE_THRESH_BAT0=0 $ sudo tlp setcharge
was wondering whether something like STOP_CHARGE_THRESH_BAT0=1 TLP is capable of handling much more
1%&0&03&))"#,/*6)-1,-n/1%"/1%+ It is not possible to adjust the actual than battery thresholds, such as changing
spending hours with the charger plugged threshold on these Lenovo models, performance governors depending on
&++!1%"11"/61988o although for other laptops it may be whether you are running on battery or AC.
Joe Andrews possible. So, we set them to either 0 to The man page gives a brief description,
disable the threshold or 1 to enable it. but there is extensive documentation at
A Modern laptops have pretty clever
charge management, so when you
Although the setting says BAT0, it actually
applies to all batteries, even if tlp-stat
https://linrunner.de/tlp/index.html.
There is also a third-party graphical
hit 100%, charging is stopped, or reduced shows it to be BAT1. interface for TLP, called TLPUI, available
to a trickle. Where the damage is done is TLP is run as a systemd service – to from https://github.com/d4nj1/TLPUI.
when you unplug, run the battery down a start it and enable it at boot, run:
little, then charge to 100% again. It’s the
last few per cent of charging that does
$ sudo systemctl enable --now tlp.service
Your distro’s installer may have already
Q Cookie conundrum
I’m trying to use yt-dlp to download
1%"!*$"n%"+ "1%"+!/,&!,-1&,+1, taken care of this, but running it again ,22"3&!",n21&1}006&+$ %3"1,
limit it to 80% – electric cars have similar !,"0+,%/*o #6,2"!&11%" ,+Y$2/1&,+ ),$&+Y/01" 20"1%"3&!",*6 ,+1&+
settings. Recent Linux kernels can limit Y)"4%&)"1%"0"/3& "&0/2++&+$n!,+,1 restricted content. It says that I need to
charging, as long as the hardware provides use systemctl restart . Instead, run TLP 20"*6,22" ,,(&"#/,**6/,40"/
the information to do this. to tell the running instance to reload 1,)"1&1(+,4"3"/61%&+$}0Y+"o
The user program to manage this &10 ,+Y$2/1&,+p ,n $,1/,40"/"51"+0&,+1%1
is called TLP and should be in your $ sudo tlp start retrieves cookies for you, and I got the
distro’s repositories. Check whether What happens when you do want a ,,(&"&+Y)",+*6!"0(1,-o%"
6,2/%/!4/"&002--,/1"!6/2++&+$p full charge before going out? The TLP ,+)61/,2)"&01%1 }*&+25+"4&"+!
$ sudo tlp-stat -b command-line program can override any }*+,102/"4%11%" ,**+!4&))"1,
make yt-dlp use that cookie. That’s the
part I’m struggling with.
Lucas Noble

A There’s a couple of options when it


comes to passing cookies to yt-dlp.
One is to use the following command,
where BROWSER can be one of brave,
chrome, chromium, edge, Y/"#,5, opera,
safari, vivaldi or whale – give it the name
of whichever browser you have used to
log into YouTube:
$ yt-dlp --cookies-from-browser
BROWSER http://youtube.com/...
The other option, and often the easiest
in this case, is to use the --cookies option
to tell yt-dlp 4%"/"1,Y+!1%" ,,(&"x1%"
), 1&,+,#1%"Y)"6,203"!&1&+p
$ yt-dlp --cookies Desktop/cookies.txt
http://youtube.com/...
The main disadvantage of this
approach is that yt-dlp is quite sensitive
TLP enables you to manage battery charging and power usage on many laptops. ,211%" ,+1"+1,#1%" ,,(&"0Y)"n

12 LXF328 June 2025 www.linuxformat.com


ANSWERS

in particular the line endings. Windows


software uses a CR and an LF (carriage
return and line feed) combination to
indicate the end of the line, whereas Linux
and similar use just LF. This should not
be a problem unless you downloaded the
,,(&"Y)"4&1%&+!,40/,40"/+!
then try to use it under Linux. If the line
endings are wrong, you usually see this
error message
HTTP Error 400: Bad Request
)0,n1%"Y/01)&+",#1%" ,,(&"Y)"
should be one of the following:
# HTTP Cookie File
# Netscape HTTP Cookie File
If this is not the case, it is simpler to
#,/$"11%" ,,(&"Y)"6,2%3"+!20"1%"
--cookies-from-browser option. If the line
endings are wrong, you can convert them
with a simple program called dos2unix.
It may be installed by default with your Use find, or a graphical equivalent, to detect which files a program modified.
distro, otherwise you can install it from
your software manager. Dos2unix has a
number of conversion functions, but the
do this for a number of programs, which
would make the GUI approach slower,
Q Variable results
I have a script that resides on a
most straightforward is converting line 1%&0&0 /#16461,Y+!*,!&Y"! ,+Y$ remote machine. The script prompts for
endings, when you simply call it with: Y)"0o &/01,-"+1%"-/,$/*6,24+11, &+-21n4%& %&000&$+"!1,3/&)"p
$ dos2unix Desktop/cookies.txt investigate, then open a terminal and run: read -p ‘Input something: ‘ my_var
Now yt-dlp should do as you wish. $ touch xyz When I SSH into the remote machine
Incidentally, the dos2unix package also %&0 /"1"0+"*-16Y)" ))"!xyz +!/2+1%"0 /&-1n&1#&)0" 20"1%"
includes the program unix2dos. We’ll let (the name is unimportant) with the current 3)2"0 &+-21/"+}1"&+$00&$+"!1,1%"
you work out what that one does. time. Now make the changes to your 3/&)"ƒ#,/"5*-)"n1%"3/&)""+!02-
program’s settings and exit it. Go back to "&+$"*-16„o

Q Finding your keys


%"/"/"1%"-"/v--("6,/!
the terminal and run:
$ find ~ -xdev -type f -newer xyz
I’ve attempted using the -t option
when SSHing into the remote machine,
,+Y$1"51Y)"0#,/-/,$/*002 % %&0,21-210)&01,#Y)"0&+6,2/home 211%1%0+}1/"0,)3"!1%"&002"p
as Gwenview? I’m looking at ¯šo ,+Y$ !&/" 1,/6*,!&Y"!0&+ "6,2/+touch me@localhost: ssh -t user@host
and not seeing it. I’ve looked in various – -xdev keeps the search in the current user@remote: ./myscript
places in my home directory. I’ve checked Y)"0601"*n4%& %&0+" "00/6&#6,2%3" Input something:
0"3"/)1"51Y)"0n&+ )2!&+$$4"+3&"4/ , network shares mounted under your user@remote: echo $my_var
21&1!,"0+}10""*)&("1%"/"/"+6 home directory and do not have hours Why is this happening, and how can I
("6,/!0%,/1 210&+1%"/"o #,2+! to spare. The -type option tells Y+! to Y5&1l
0%,/1 210#,/0&*&)/--&+1%"1"51Y)" ,+)6 ,+0&!"/Y)"0n+,1!&/" 1,/&"0o #1%&0 Tia Wade
¯šo ,+Y$š$"".&"š ")0n21  ++,1 produces too long a list, you could pipe the
Y+!+61%&+$0&*&)/#,/Gwenview, nor
+6--ƒ4%& %))%3""11&+$0–
output through a pager or grep:
$ find ~ -xdev -type f -newer xyz | less
A This actually has nothing to do
4&1% q1%"0*"4,2)!%--"+
,+Y$2/""6,/!„o +""!1,1/+0#"/ $ find ~ -xdev -type f -newer xyz | grep -i &#6,2/+1%"0 /&-1), ))6o%"+6,2/2+
1%"*1,+,1%"/ ,*-21"/3&Y)" ,-6n gwen 0 /&-1n&10-4+0+,1%"/0%"))0 %&)!
0&1}01"!&,201,0"12-)/$"+2*"/0,# You could also reduce the scope of the process. Anything done in that child shell
shortcuts on multiple computers using search if you suspect the program stores cannot affect the calling environment of
1%""11&+$0–,+Y$2/""6,/!  o its settings in a standard place such as the parent shell. For example, if you use
Josh Nelson o ,+Y$or .local (although if you were sure cd1, %+$"!&/" 1,/6&+1%"0 /&-1n6,2/
of the location, you probably wouldn’t be parent’s shell current directory is not
A It is possible to copy Gwenview’s
keyboard shortcuts from one
0(&+$1%&0&+1%"Y/01-) "„p
$ find ~./.config ~/.local-xdev -type f
changed by running the script.
If you want to check whether the
computer to another using the GUI. Go -newer xyz | less variable is set correctly, you could include
1,,+Y$2/"–,+Y$2/""6,/! Or you can avoid all of this work as we the following in the script, somewhere
Shortcuts, as you would when setting %3")/"!6!,+"&1#,/6,2x1%"Y)"6,2 after the read command:
them up. Now click on Manage Schemes need is .local/share/kxmlgui5/gwenview/ echo $my_var
at the bottom of the window. From the gwenviewui.rc. Or you can run the script with:
,/"-1&,+0!/,-v!,4+nY/010")" 1 You found the settings for Geeqie more $ bash -x ./myscript
3"%,/1 210, %"*"n1%"+5-,/1 easily because this is a  program, The -x option causes Bash to print each
 %"*"o%"+6,2 +&*-,/11%&0Y)"&+1, 4%& %20"0!&##"/"+1Y)"%&"// %6#,/&10 command before it is executed, including
Gwenview on other computers. 0"11&+$0o")&("21&1!,"0%3" any variable expansion. Other shells, such
If you would prefer to work directly tendency to store information where you as sh and zsh, also support the -x option.
4&1%1%" ,+Y$2/1&,+Y)"0n,/+""!1, 4,2)!+,1"5-" 11,Y+!&1o If this produces too much output, such as

www.techradar.com/pro/linux June 2025 LXF328 13


ANSWERS

if you have the read command near the User cron tasks
beginning of a long script or one with a lot are not installed
as part of the
of loop iterations, you can turn this option
OS, but many
on and off within the script with these two packages do
commands, respectively: ĬÐijǏķĥǎĬőĬijÐąǎ
set +x cron jobs.
set -x
Another way to deal with this is to use
the source command to call the script:
$ source ./myscript
Source executes the contents of the
script in the current shell, so comes with
a couple of caveats. Firstly, and most
&*-,/1+1)6n+6*,!&Y 1&,+0*!"1,
the script’s environment also affect the
current environment. Also, you may get
unpredictable results if running the script
in a different shell from that given in the
shebang line – for example, if your shell is
zsh but the script starts with: 01%"0"0601"*20"0systemd/ %3"+"51/Y")!0-" &#6&+$1%"20"/1,
#!/usr/bin/bash timers instead.” So, that means the run the job, which is not necessary for a
cron',04,2)!+,1%3"""+,+1%")&3" user cron task because it has to run as

Q Persistent cron
Am I right in assuming that all cron
installation stick.
Patrick Lord
that user.
User cron jobs do not survive a
',0,+&+25"+1"/"!,+)-1,- reinstallation, even if /home is on a
+""!1,""+1"/"!61%"-"/0,+)20"/
of that laptop, if there are no outside
A The Arch Linux wiki is a really good
source of information, but it is
0"-/1"-/1&1&,+n01%"6/"0&!"&+/var.
,4"3"/n*,01,#1%"0601"*cron',0/"
!*&+&01/1,/0l )0,002*"1%"0" inevitably orientated towards Arch itself. not part of the base OS but are installed
cron',0!&0--"/4%"+1%"%/!!/&3" Arch does indeed use systemd timers by individual software packages. For
,#1%1)-1,-&0/"-) "!6+,1%"/%/! rather than a cron daemon, but most example, locate,,/,+",#&10)1"/+1&3"0n
!/&3"+!1%"&0/"&+01))"!#/,* distros stick with one of the traditional needs to regularly update its database of
fresh live stick. cron implementations. Y)"0,+1%" ,*-21"/o%&0&0202))6/2+0
*0(&+$" 20"&+),,(&+$1 There are both system cron jobs a script from /etc/cron.daily. The source
the terminal output of the laptop I am +!20"/,+"0o%"0601"*cron jobs of each cron script is usually obvious
/"#"/"+ &+$n+5:<8"+,3,%&+(-!n +"!"Y+"!&+/etc/crontab but from the name, but you can use the dpkg
there are cron',0)&01"!#/,*6"/0$,n /"202))60"12-00"-/1"Y)"0&+ command on Ubuntu (and other distros
even though I changed the hard drive last 1%"/etc/cron.daily, /etc/cron.hourly and based on Debian) to determine which
6"/+!#/"0%)6&+01))"!1%"2+12 /etc/cron.weekly directories. User cron - ($"0&+01))"!Y)"p
from a stick. ',0/"202))6!"Y+"!&+švar/spool/ $ sudo dpkg --search /path/to/file
+1%"4&(&,#/ %&+25n /"!p cron/crontabs/$USER. There is one
“There are many cron implementations, 0&$+&Y +1!&##"/"+ ""14""+0601"* GET HELP NOW!
21+,+",#1%"*/"&+01))"!6!"#2)1 and user cron tasks. The system tasks
We’d love to try to answer any questions 20 /&-1&,+0p for magazine issues email [email protected]
you send to [email protected],
A QUICK REFERENCE TO… TEE TIME no matter what the level. We’ve all been
stuck before, so don’t be shy. However,
Shell direction is pretty common, Tee effectively produces two copies we’re only human (although many suspect
being able to direct the output from of the data piped to it, one sent to the Neil is a robot), so it’s important that you
 ,**+!1,Y)"4&1% > , or using +*"!Y)"+!,+"1,01+!/!,21-21n include as much information as you can.
| to send the output through a pipe to 202))61%"1"/*&+)o,1"1%1&#1%"Y)" ?ãǏĬČąÐijéìĆäǎŋČĨüĬǎČĆǎČĆÐǎÌìĬijĨČǎÅķijǎĆČijǎ
another command. Sometimes, though, exists, it is overwritten without warning. another, tell us. If you get an error message,
we need more than that. For example, Use the -a (or --append) option to add please tell us the exact message and
you may want to save the output to a 1%"!11,+"5&01&+$Y)"xtee still precisely what you did to invoke it.
Y)"+!0""&1,+1%"1"/*&+)n&+/") /"1"01%"Y)"&#&1!,"0+,1"5&01n0, If you have, or suspect, a hardware
1&*"o"!&+$1%"!"01&+1&,+Y)"0 you could get into the habit of using -a problem, let us know about the hardware.
&1&04/&11"+1,!,"0+,1!,1%1" 20" by default. Consider installing hardinfo or lshw. These
data is buffered before writing, but What if you want to send the output programs list the hardware on your
there is a command that can, and it of your command to another program, machine, so send us their output. If you’re
is called tee. The name gives a good such as xargs, and still see its output? unwilling, or unable, to install these, run the
indication of its function – it acts like %"/"}0+,Y)"&+3,)3"!%"/"o"))n1%"/" following commands in a root terminal and
a T-piece in pipework, splitting the is, because in Linux “everything is a send us the system.txt file, too.
stream into two. To do what we just Y)"€n"3"+1%"01+!/!,21-21,#6,2/ uname -a > system.txt
described, you would use: terminal. Try something like this: lspci >> system.txt
$ somecommand | tee somefile $ somecommand | tee /dev/tty | xargs ... lspci -vv >> system.txt

14 LXF328 June 2025 www.linuxformat.com


www.techradar.com/pro/linux May 2025 LXF327 15
Mailserver
MAILSERVER

WRITE TO US %&+"0" 
}*&+1/&$2"!6))1%" ,3"/$",21 vo }*)0,
Do you have a &1 ,+ "/+"!o9„,01,#1%")-1,-0/"3&"4"!0,#/
burning Linux-
&+LXF1%1%3"1%1/ %&1" 12/"20"0601"*v,+vv
related issue
%&--/, "00,/0o:„,01&#+,1))02 % %&-0/"*!"
that you want to
discuss? Write to &+%&+o* 4,//&"!1%1,-"+&+$GIMP4&)) 20"&1
us at Linux Format, 1,0"+!/"-,/11,"&'&+$l,n+,16"1o1&))n&0+6,+"
Future Publishing, 1Linux Format 4/",#+6"##,/101,-/,!2 "
xķ­őǏ<ČķĬÐƨǎ  v-/, "00,/0"&1%"/&+2/,-",/&+1%"l
ƒéÐǏąÅķĨőƨǎ Mike Neary, Spring City
­ijéƨǎūǎū‡ǎČĨǎ
email letters@ Neil says…
linuxformat.com. I think there is great interest in RISC-V in China
" 20"&1}0,-"+1" %+,),$61%1 +}102!!"+)6
"0+ 1&,+"!61%""01o01)&0%"!"01"/+
,*-+&"0%3")"00&+1"/"0101%"6 +}1 ,+1/,) yÐÿìŊÐǎijéÐǎij­ĥÐǎÌ­őĬǎŋìijéČķijǎé­ŊìĆäǎijČǎķĬÐǎij­ĥÐƧ
-/,!2 1&,++,/&+ )2!"1%"&/,4+) (,5),01%1
,2)!""*&+$6,2/!11,1%"o,11%1 +!--"/1-"4"/"20"! (&+1%"!6o )0,
!,"0+}1%--"++6461%+(01,1%" &3"6"0r $/"1)6--/" &1"%,4&(")460#&+!0+!)&+(01,
1}0$/"1.2"01&,++!%3&+$.2& (),,(/,2+!n "*2)1,/0#,/1%"0"+ &"+1* %&+"0n0,6,2 +ƒ0 
1%"/"}0$,,!!"),#2/,-"+ 1&3&16&+ v %3"„"5-"/&"+ "1%"*n)"&13&/12))6o +$"+"/)n }*
!"3"),-*"+1n0&1}00""+0461,&+!"-"+!"+ " &$#+,#1%"*$7&+"n+!40"0-" &))61& ()"!1,
#/,*1%" +1")š!2,-,)6o ,/"5*-)"nhttps:// 0""*60")#/"#"/"+ "!&+6,2/0"/&"0,+ ,!&+$
codasip.com is just one of many start-ups. 0& Space Invaders$*"0j""-2-1%"$,,!4,/(o
Colin
))1-"!,21
We’ve looked at '2014+1"!1,4/&1"+!06%,4*2 % }3""+',6"! Neil says…
éČŋǏy?}ǎé­Ĭǎĥÿ­őÐÌǎ
­ǎĥ­ĨijǎìĆǎéÐÿĥìĆäǎ
&(""!#,/!}0/" "+1/1& )"0,+1%"+! Glad you’re appreciating Mike’s fantastic work. I’m
PìĆķŐǎÌÐŊÐÿČĥǎČŊÐĨǎ -2+ % /!1" %+,),$6o"))6&+1"/"01&+$012##n+! always trying to get him to ensure we keep these
the years. &("!&!$/"1',,#"5-)&+&+$%,4-2+ % /!0 /"1/,1" %+,),$6/1& )"0/")"3+11,1,!66#&+!&+$
"*2)1,/0+!1,,)01%1"+)"6,2
1,/")&3"+!-)64&1%1%"*o

 p /*"4,/(n 2!0,+ /+&"š ,**,+0o


+--"!,##
01/1"!20&+$&+25#"46"/0$,
4&1%2+12o6 2/&,20+12/")"!
*"1,!&01/,%,-n0, 1/&"!&+25&+1n
/ %+!1%"+ "!,/o 016"!,+
"!,/#,/4%&)"0 )&("!&103&"
+!)1"012-!1"0o 1%")-"!*")"/+
%,4&+254,/(0n+!  201,*&0"!*6
+,*"!"0(1,-o"0n +,*"o )0,
1/&"! 6-/)+!n21&140 %,--6n0, 
4"+1 (1, +,*"o%"+ *"
"!,/<9o3"/64""(n4&1%" %+"4
("/+")2-!1"n*64,2)!/"(o 
)460%!1,,,1#/,*-/"3&,20
Helpdex

16 LXF328 June 2025 www.linuxformat.com


MAILSERVER

LETTER OF THE MONTH


1"*"!,##
%,2)!+}16,2"02--,/1&+$!"3"),-"/0
4%, /"1"$*"0!&/" 1)6#,/&+25
/1%"/1%+02--,/1&+$1%"-/,-/&"1/6
1"*0601"*4&1%&10l 1}0'201
#),$$&+$"3"/6,+"1%"0*",)!
&+!,40$*"0+!20&+$Wine1,
"51"+!&1001,/"1,&+2520"/0o !,+}1
(+,44%6-",-)"$"10,"5 &1"!61%&0n
&1}0'201"*/ &+$"&+$20"!6
,/-,/1&,+0o"3"),-"/00%,2)!02--,/1 ?Ĭǎš­ÿŊÐǎÐŊìÿƮǎ]ĆÿőǎìãǎőČķǎ
$*"04/&11"+#,/&+25o ĥÿ­őǎijéÐǎĨìäéijǎä­ąÐĬƧǎǎ
ČĆij­ìĆÐĨìĬÐÌǎĬČãijŋ­ĨÐǎìĬǎãČĨǎijéÐǎÅÐĆÐãìijǎČãǎijéÐǎÌÐŊÐÿČĥÐĨǎĆČijǎijéÐǎķĬÐĨƧǎ Tod Whiles

 (2-3"/0&,+0+!/"0,)3"&002"0o 1" *"0, Neil says…


++,6&+$1%1 !" &!"!1,$, (1,2+12o,4n&1 %1}03"/6*2 %)&("1%"1))*+11&12!"1,0,#14/"
'2014,/(0o 1//")6/"(0n+!  +4,/(-" "#2))6 !"3"),-*"+1p&1}0%&046,/1%"%&$%46n4%& %4%&)" --)2!1%"
4&1%,210-"+!&+$%)#*6!61/6&+$1,,,1*6o sentiment – and someone has to take a stand for user freedom – it’s
}3" 201,*&0"!2+124&1%0,*+60%,/1 2101%1  +,1"+1&/")6/,,1"!&+/")&16o,2%3"1, "-11%1!"3"),-"/0
//")620"1%"*,20"o 10+&*1&,+0/"#&+"+!+"3"/ %3"#&+&1"/"0,2/ "0n4%& %!& 11"01%11%"6}))!&/" 1!"3"),-*"+1
'&11"/o%"")"-%+1&+1%"/,,*&0+-0o %3"+, 1,4/!0$"11&+$*5&*2*/"12/+0o&1%&+25%3&+$#/ 12/"!
+-- ($"0o 20",/ )1-(o+-0/"0),4o " ,0601"*n&1*("046*,/"0"+0"1,1/$"1&+!,40n+!)3"
%1}01%",+)6!,4+0&!",#2+12n210&+ " !,+}1 +,4"+)"01%"*1,1/$"11%"0&+$)"Proton/Wine #,/&+25
20"1%"*n&14,/(04"))#,/*"o %3"+}11/&"!,-juo 02--,/1o 1'2010""*0-/$*1& +!"+"#&10"3"/6,+"o
%,2)! 04&1 %l/"1%"/"/")-"/(0&+!,&+$0,l
Giles Umbridge
-2/ %0"!+"40 ++"/,+ "n&14,/("!$/"1n1%"+
Neil says… +"43"/0&,+,#&+!,40 *",21n 2-$/!"!n+!
61%"&/3"/6+12/"n0601"*0)&("+-+! )1-( *60 ++"/40+,),+$"/02--,/1"!o 14001&))"&+$
/")460$,&+$1,01/1)&11)"0),4"/1%+1/!&1&,+) 0,)!&+1%"0%,-00&140+"4*,!")o*50&!&1
- ($"0n1%,2$%4&1%*,!"/+0n&00" ,+!%"/" %!+,-)+01,02--,/11%13"/0&,+,#&+!,40n0, 
,/1%"/"/")-/,)"*l00,*",+"',("!n6,2}3" -)2$$"!&1&+1,*6&+250"/3"/+!&14,/("!-"/#" 1)6o
&+3"+1"!"&+n+!#/+()6n&#6,24+11,3,&! }3"01&))$,11%"0 ++"/+!&14,/(0,+2+12#&+"o
+-0n1%"/"}0&+1,/&+!""!"&+4&1% +,*"#,/ Brian Trevors
 ),0"v1,v2+12"5-"/&"+ "o
Neil says…
&+25&0#,/"3"/ * $,&+$1,!"#"+!& /,0,#1l/,)6+,1o,2/
!,+}11%&+(+61%&+$&0#,/"3"/o # 1%&+(1,4%"+ #&/01 last point is certainly championing open standards
&+01))"!2+12&+:88<n&1}0.2&1"!&##"/"+1+,4#/,* 3"/020-/,-/&"1/602--,/1"!0601"*0n4%& % +"
%,4&140o !&!-"/#,/* )"+&+01))4%"+ !" &!"! (&))"!,3"/+&$%1,/#1"/+2-$/!"o,11%1&+25
1,*&$/1"#/,*;:v&11,><v&1n1%,2$%x1%1*201 +"3"/!,"01%1n02 %0"+!&+$&;@>02--,/1+!0,
%3" )"/"!+4#2)),1,# )211"/,21*60601"*o ,+o0*"+1&,+"!"/)&"/n1%"/"}0,+)6#&+&1"*,2+1,#
+"-/,)"*4&1%&+!,40&04%"+&1!" &!"0 !"3"),-"//"0,2/ "0n211)"014&1%,-"+0,2/ "n&#
)/$"*,2+1,#%/!4/"&0+,),+$"/ ,*-1&)"o  0,*",+"4+101,(""-02--,/1&+$&1n1%"6 +o
[email protected]

www.techradar.com/pro/linux June 2025 LXF328 17


REVIEWS
Ryzen 9 9950X3D
Paul Alcorn loves the new 16-core monster from AMD!
MD’s 3D V-Cache
SPECS
Architecture:
A technology has proven
1,"1%"(&))"/1" %1%1
Granite Ridge delivers dominating performance
Socket: AM5 over Intel in gaming, and the
Process: TSMC second-gen revision propels the
4nm, IO 6nm 16-core, 32-thread chip to a whole
Cores: 16 new level of gaming performance –
(32 threads) while preserving the lion’s share of
Clock: 4.3GHz performance in productivity tasks.
(5.7GHz boost), Naturally, performance will vary
unlocked by title due to the vagaries of the
Cache: 1,280KB 3D V-Cache tech, but the 9950X3D
L1, 16MB L2, is impressive in a wide range of
128MB L3 workloads, and its higher 170W
Base TDP: TDP also unlocks exceptional Intel-
170W beating performance in many of It seems AMD has finally perfected its game-boosting 3D V-Cache technology.
Max PBP: our productivity benchmarks.
162W AMD’s 3D V-Cache tech is in its third generation, while Intel’s 285K is unable to leverage the
Memory: and this time round, AMD moved the vertically-stacked performance-boosting instructions.
DDR5-5600, 64MB L3 cache chiplet from the top to the bottom of What Intel chips lack in sheer threaded horsepower,
ECC support the compute chiplet for higher thermal headroom they make up for in single-threaded performance. We
Max memory: AMD’s goal is to master both disciplines – gaming measured single-thread performance for the Core
192GB, dual and productivity – with its dual-chiplet X3D processors, Ultra 9 285K as 7% faster than the 9950X3D, and the
channel but that’s a tricky technical challenge. The company 14900K is 3% faster.
GPU: Radeon, has optimised its drivers to cover edge cases and The Ryzen 9 9950X3D is a comparatively miserly
2.2GHz, 2-core deliver better scheduling, plus there’s overclocking. chip, given the level of performance it delivers
IO: 4x USB 3.2 The Zen 5-powered Ryzen 9 9950X3D comes throughout our test suite. The chip peaked at 233W
Gen2, armed with 16 cores, 32 threads, 144MB of total cache, but hovered in the low 200s during most workloads.
1x USB 2.0 and a peak boost clock rate of 5.7GHz. This chip has a In comparison, the Core i9-14900K is an egregious
PCIe: 28 lanes, 170W TDP – 50W higher than the prior-gen model. power guzzler, sucking down up to 383W during a
v5.0 Blender workload, and bear in mind this chip doesn’t
Figures of fun match the 9950X3D in productivity work. The Core
Under testing, we saw the Ryzen 9 9950X3D match Ultra 9 285K is more miserly, but it peaks at 325W, so
AMD’s claims of being within roughly one percent of can also have a voracious appetite. In most workloads,
the current fastest CPU for gaming, the Ryzen 7 the 285K draws as much or more power than the
9800X3D. AMD claims a 20% lead over the 285K, but 9950X3D in its overclocked PBO configuration.
the Ryzen 9 9950X3D leads the Core Ultra 9 285K by If you can afford it, you won’t find a mainstream
37% in our benchmarks, mirroring the delta we saw desktop PC chip that offers a stronger blend of gaming
with the 9800X3D launch. Intel’s previous-gen Core and productivity performance.
i9-14900K is actually the best contender against the
AMD line-up in gaming, but the 9950X3D is still an
insurmountable 26% faster.
VERDICT
The Ryzen 9 9950X3D lives up to delivering a solid DEVELOPER: AMD
20% gain over the prior-gen Ryzen 7 7950X3D when WEB: www.amd.com
&1 ,*"01,-/,!2 1&3&164,/(),!0o%"AA=8; PRICE: £700
matches the vanilla Ryzen 9 9950X in our overall
measure of performance in multithreaded workloads. FEATURES 9/10 EASE OF USE 9/10
The £580 Core Ultra 9 285K is the 9950X3D’s real PERFORMANCE 9/10 VALUE 8/10
competitor in productivity workloads; it delivers far
more performance in threaded workloads than the Incredible gaming performance while retaining nearly all the
Core i9-14900K. Regardless, the 9950X3D is 11% productivity performance of a standard Zen 5 model. If you
faster in threaded workloads than the 285K. However, can afford it, this is the most powerful all-rounder available.
our overall measurement is heavily influenced by
performance in AVX-512 workloads. The 9950X3D Rating 9/10
%0+"06)"$2-!2"1,&1002--,/1#,/v=9:n

www.techradar.com/pro/linux June 2025 LXF328 19


REVIEWS Linux distribution

Debian 12.10
Nate Drake explores the latest stable point release for Bookworm.
Does the OS still live up to its reputation for stability?
e last covered Debian
IN BRIEF
Debian isn’t
W 12 (code name
Bookworm) when it
flashy. Instead it was released in LXF305. As most
offers a mature readers know, the OS is one of
and stable OS the oldest versions of Linux in
with easy setup. active development.
You mightn’t Debian follows a painstaking
benefit from development process, whereby
))1%")1"01 project members carefully
software curate packages for stability.
features but This is why the OS forms the
&1}0/")&)" basis of so many popular Linux
daily driver. distros, such as Ubuntu.
Packages are initially only
accepted into Debian’s unstable
SPECS branch. To become a candidate Debian’s Welcome screen seems identical to the live Setup Assistant. From here you can
CPU: 1GHz for the next release, it must be configure options such as the keyboard layout.
Mem: 2GB migrated into the testing
HDD: 10GB branch. This is a meticulous process, as packages must ESR (Extended Support Release). This emphasis on
Builds: not have any release-critical bugs, nor can they break stability is also shown when examining app versions.
Aarch64, any existing code used in the testing branch. For instance, the most recent version of LibreOffice is
/*")n/*%#n The Debian Project is currently on the verge of the currently 25.2.1; however, Debian 12.10 uses v7.4.7.2.
i386, i686, next major release of Debian. Version 13, code-named You can install additional programs via the default
Loongarch64, Trixie, is scheduled for summer 2025. package manager, which in our case was Gnome
mipsel, ppc64el, In the meantime, this tenth update of the stable Software. We used this to install VLC directly from
s390x, Riscv64 version contains numerous bug fixes and security Debian repositories and were pleased to see this
x86_64 patches. There are multiple installation images, reflected the most recent stable release (3.0.21).
including a small ‘netinst’ ISO of around 630MB, which This raises an important dilemma as to whether
can download required packages as required. Debian is truly suitable as a daily driver. On one hand,
We opted for a live image of Debian running the choosing and testing packages carefully results in a
Gnome desktop, though other flavours are available very stable system, which is why major versions of
with KDE, XFce, LXDE, and Cinnamon. Debian are released only once every few years.
On first boot, we were greeted by the Initial Setup On the other hand, using older versions of software
window, prompting us to select basic configuration means users can’t take advantage of the latest
options like the keyboard layout. From here, you can features. They can also be prone to security bugs.
also disable location services and connect online This latest point release addresses this dilemma by
accounts such as Google, Nextcloud or Microsoft. including a number of upgrades. Certain packages that
Once the Gnome desktop loaded, we chose to are no longer maintained have also been removed for
launch the installer, which is based on Calamares, via security reasons.
the dock. After choosing our region and keyboard
layout (again) we could erase the current partition. Full
disk encryption is supported. Once installation was
VERDICT
underway, setup completed in our virtual machine in DEVELOPER: The Debian Project
less than six minutes. This puts it on a par with other WEB: www.debian.org LICENCE: DFSG-
major distros we’ve reviewed, like Arch and Ubuntu. compatible licences, plus proprietary
Upon restarting our virtual machine (which
automatically ejected the live install disk), we were FEATURES 8/10 EASE OF USE 9/10
greeted by Debian’s Welcome window, which is PERFORMANCE 10/10 DOCUMENTATION 9/10
identical to Initial Setup.
We launched System Monitor and discovered that This point release isn’t as major as the upcoming Debian 13,
with no other graphical apps running, Debian used just but does address numerous bugs and security issues.
1.5GB of virtual RAM. CPU usage hovered around 1%.
Debian has a carefully selected collection of default Rating 9/10
apps, which are chosen for stability, such as Firefox

20 LXF328 June 2025 www.linuxformat.com


Linux distribution REVIEWS

Garuda Linux 250308


Nate Drake dives into this Arch-based distro, named after a divine bird.
Is it a soaring eagle or just a lame duck?
his Arch-based distro
IN BRIEF
Despite some
T follows a rolling-release
model. However, the
teething development team has released
troubles with snapshots of Garuda annually since
setup, we’re 2012. The latest version, code-
impressed by named Broadwing, is available in a
Garuda’s Mac- variety of spins.
like interface, These include versions with
centralised Garuda’s dr460nized desktop, a
system custom version of KDE Plasma
management, designed to resemble Mac OS.
and extensive Alternate spins include versions
online support. with COSMIC, Gnome, Cinnamon,
There’s also a XFce and Mokka – a Catppuccin
huge number pastel-themed KDE desktop, which
,#!"0(1,- is the focus of this review. While the setup assistant no doubt makes life easier, it required us to download hefty updates
environments After downloading the weighty immediately after installation.
available. 3.1GB ISO, we booted into Garuda’s
live environment from a virtual machine. We noted, requiring so much RAM during install. It also mentioned
however, that the main site’s download page advises that system RAM usage may seem to be high due to
SPECS against doing this due to missing graphics acceleration. Garuda deploying zram.
CPU: 1GHz Setup is handled by the Calamares installer. After Nevertheless, with no other apps running, Garuda
Mem: 4GB choosing the account, we opted for a clean install. consumed only 1.8GB of virtual RAM, though it used
(8GB System encryption is supported. around 10% of resources for our four virtual CPUs. The
recommended) Once setup was underway, it completed in around install footprint was also quite light at just over 9.1GB.
HDD: 30GB three minutes. However, upon restarting our VM, For such a large ISO, we were surprised to see that
(40GB Garuda’s setup assistant launched. This prompted us Garuda doesn’t contain many default apps. There’s no
recommended) to update the OS by downloading 287 files totalling mail client or office suite, though we noted that the OS
Builds: x86_64 935MB via Konsole, including a firmware update. does include FireDragon, Okular and VLC.
Once the updates were complete, the setup Software is handled by the handy Pacman front-end
assistant listed options to install drivers for printer/ Octopi, so we fired it up and installed the Thunderbird
scanner support and extra wallpapers. There’s also an mail client without any issues. The program appeared
option to load the BlackArch repo to install pen-testing in the Internet category in the app menu, and its icon
skills. As we didn’t care for Garuda’s dark theme, we appeared in the dock when we launched Thunderbird.
opted to install the wallpapers, which once again were Apart from being an obvious tribute to Mac OS, the
downloaded via Konsole. dock deserves special mention as from here you can
Once completed, we were pleased to see that the access system settings. As we previously said, the
setup assistant offered links to the Garuda Linux forum brooding theme wasn’t to our taste, but you can switch
and wiki. One restart later, we were greeted by Garuda to the lighter Breeze if you wish.
Rani. This is a new Garuda-specific application, which
the release notes describe as the “future of Garuda
utilities”. In plain English, Rani seems to be a one-stop
VERDICT
application for customising and managing the system. DEVELOPER: SGS, Shrinivas Vishnu
We took this opportunity to launch Whoogle, a self- Kumbhar et al WEB: https://garudalinux.org
hosted proxy that can provide greater privacy when LICENCE: Mainly GPL-3.0
searching Google. Choosing this automatically loaded
the default FireDragon browser (a fork of Floorp), FEATURES 8/10 EASE OF USE 7/10
which displayed the Garuda’s site’s implementation PERFORMANCE 8/10 DOCUMENTATION 10/10
,#%,,$)"o%"0&1")0,0""*&+$)6%,010&10,4+
deployment of the BitWarden password manager, Garuda takes a while to set up and update but the Rani app
which you access by choosing VaultWarden in Rani. promises to make system customisation much easier.
Next, we launched System Monitor. The Garuda
downloads had previously warned that the listed Rating 8/10
requirements were so heavy due to Calamares

www.techradar.com/pro/linux June 2025 LXF328 21


REVIEWS Linux distribution

Ubuntu 25.04
Huffing and puffing, Nate Drake takes a look at the interim 25.04 release
and wonders how things could get much better.
he name Ubuntu is
IN BRIEF
The team
T derived from a Bantu
word that roughly
1+,+& ) translates as ‘humanity towards
only goes ,1%"/0}o&+ " 1,"/:88<n1%&0
#/,*01/"+$1% community spirit has been
1,01/"+$1%4&1% reflected by regular releases of
Ubuntu. Setup this Debian-based OS.
now includes Over the years, Ubuntu has
more flexible undergone many iterations.
installation Initially, its flagship edition
options. There deployed the Gnome 2 desktop
are also environment. This all changed
improved with the advent of Ubuntu 11.04
wellness Natty Narwhal in 2011, which
features and %"/)!"!+,+& )}0,4++&16
better support desktop environment, which Ubuntu 25.04 uses kernel v6.14. It has new features such as drastically improved
for Windows provided a more modern and performance for emulating Windows programs.
emulation. touch-friendly interface.
In 2017, Canonical abandoned Unity in favour of As with previous versions, you can also choose
between an interactive guided installation or automatic
SPECS
+,*"o2+12}0/")"0" 6 )"+,4/,2$%)6#,)),401%1
of new versions of the desktop environment, with new setup using a YAML file. Setup also still offers the choice
CPU: 2GHz versions being released approximately every six months. between a small default collection of apps, or extended
Mem: 4GB At the time of writing, Ubuntu 25.04 (scheduled for installation that includes extra software like office tools.
HDD: 25GB 17th April) has yet to be released, so our review focuses After choosing the first option in each case, we were
Builds:%#n on the beta. This means that the listed features or prompted to choose a partition. Disk encryption using
PPC64el, screenshots may differ from the final release. As always, LUKS with LVM is supported. You can also opt to encrypt
 vn0;A85n do your own research before installing. with a passphrase using ZFS or use hardware-backed
x86_64 One of the first things we noticed when downloading encryption, though these are classified as experimental.
1%")1"012&)!,#2+12:=o8<&01%1&1}0/,2+!9  Once the install was underway, we were treated to
(at 6.3GB) larger than version 24.10 (5.3GB). 0"/&"0,# ,),2/#2)0-)0%0 /""+0"5-)&+&+$))1%1}0
Upon booting the live image in our virtual machine, $/"1,212+12o%&0&+ )2!"!1%" )&*1%1&1}01%"
4"041%11%"0"12- ,+1&+"!+,02/-/&0"0#,/1%,0" choice of 66% of developers. This is based on a 2020
already familiar with the OS. The assistant prompts you survey by Hacker Earth, and reflects the preferences of
Our build didn’t to choose a language and offers accessibility options. “experienced developers”.
include Top Charts The keyboard layout screen seems to be different from %"&+01))"/)0, ,+1&+"!%")-#2))&+(01,2+12}0
in App Center "#,/"n$&3"+1%11%"/"}0"1" 1211,+o/"00&+$1%&0 official documentation, as well as Ubuntu Discourse,
to list popular
prompts you to type specific keys – such as * – to which serves as a combination of a mailing list and
programs, but
ìijǏą­őǎÅÐǎìĆǎijéÐǎ !"1"/*&+"1%")6,21o%"/"}0)0,%+!61"51#&")! #,/2*#,/20"/0o%&0&0,+"/"&+4%& %1%"0%&+"0o
final release. where users can type using their chosen configuration. 2+12}0,+)&+"!, 2*"+11&,++!!&0 200&,+0/"1%"
*,01-/,)&#& 4"}3""3"/0""+#,/&+25!&01/,n4&1%
1%"-,00&)""5 "-1&,+,#"! 1o
Setup completed in around six minutes, which is on a
par with previous iterations of Ubuntu.
Once we restarted our virtual machine, we were
invited to visit the aforementioned Ubuntu Discourse
1,3&"41%"/")"0"+,1"0o%,2$%4"0(6,21,"/&+
mind our prior warning that details for the stable release
of Ubuntu 25.04 may differ from our daily build, we did
uncover some useful titbits of information.
These included the fact that this release (code name
Plucky Puffin) will be supported for nine months until
January 2026.
It was here that we discovered the Ubuntu installer
now has additional encryption options beyond those
1%14" %,0"o%"/"}0+,4"11"/02--,/1#,/&+01))&+$

22 LXF328 June 2025 www.linuxformat.com


Linux distribution REVIEWS

UBUNTU FLAVOURS
+",#2+12}001/"+$1%0&01%1,##& &)3"/0&,+0/"3&))"20&+$
multiple desktop environments. Although the flagship edition
deploys Gnome 48, Kubuntu uses Plasma 6.3.
01%"!,"0+}1&+ )2!"0+-!n&#20"/0,-1#,/*&+&*)&+01))n
6!"#2)11%"!,"0+}1&+ )2!"1%"+-3"/0&,+,# Firefox.
However, users can still install a web browser via the command line
from Ubuntu repositories. Kubuntu also uses Calamares instead of
the customer installer found in the flagship edition.
Gnome 48’s new Wellbeing settings enable users to set screen time Xubuntu 25.04 is due to ship with the version 4.20 of the Xfce
limits. There are also options to configure break notifications. desktop. This means the OS will ship with tentative experimental
support for Wayland, though it still has X11 functionality. It will
Ubuntu alongside existing encrypted Windows BitLocker )0,02--,/11%"4 +!6#&/" ,*-,0&1,/0+!4,/("11"/
partitions. The installer can also now replace an existing with HiDPI displays. Developer notes on GitHub also state that there
Ubuntu installation altogether. will be a friendly GUI for backing up data. This has been tentatively
After returning to the welcome window, you are asked set as deja-dup, though this may change for the final release.
whether you wish to share system data with Canonical to Lubuntu 25.04 deploys the LXQt 2.1 desktop. As the beta was
%")-&*-/,3"2+12o%"/"}0)0,-/,*-11,,-"+1%" available at the time of writing, we confirmed that it has performance
App Center. improvements, including two-minute minimal installs. If you opt for a
After launching System Monitor, we found that Normal or Full installation, you can also install Snap packages during
Ubuntu is still very forgiving on system resources. With setup. Pre-installed Snaps can also be upgraded via delta downloads,
no other programs running, the OS consumed 1.3GB of which is more efficient than downloading the entire new package
,2/3&/12)+!,+)6<,#/"0,2/ "0o04" " %1&*"o%"/"}0+,02--,/1#,/6)+!n1%,2$%1%"!"3"),-"/0
chose the Default selection of apps earlier, the install hope to include this before the release of Ubuntu 26.04 LTS.
footprint also weighed in at a very reasonable 10.6GB.
According to the release notes, Ubuntu 25.04 comes
with Gnome 48. Thanks to the efforts of Canonical build, though we live in hopes it will be included in the
developers, the desktop environment now supports final release. Nevertheless, we took the opportunity to
triple buffering, which helps with rendering on lower-end search for and install the Thunderbird mail client in under
GPUs, such as Intel integrated graphics. one minute.
Other changes to Gnome are more overt. Version 48 %"/")"0"+,1"0011"1%1&#6,2}/"2-$/!&+$1,
now includes a dedicated Wellbeing section. Android Ubuntu 25.04, instead of doing a clean install as we did,
users will find the options familiar, given that you can set updates will refresh seeded Snaps to the appropriate
)&*&10,+0 /""+1&*"n02 %0"&$%1%,2/0!6o%"/"}0 Snaps channels, regardless of what was tracked before.
)0,!"!& 1"!/"("*&+!"/00" 1&,+n4%"/"6,2 One exception to this is the document viewer, which
can have the OS prompt you to look away from the has now been upgraded from Evince to Papers. The
screen and/or move around at regular intervals. latest version includes some nifty new features, including
While browsing through the Gnome settings, we also the ability to verify digital signatures. The App Center
reviewed the Appearance section, where we discovered also now offers the latest stable release of GIMP (3.0.0).
there are no fewer than 10 alternative Puffin-themed Ubuntu now deploys the new Linux 6.14 kernel. This
wallpapers. From here, you can still adjust accent colours, news is probably most exciting to those who like to run
as in the previous version of Gnome. Windows games on Linux, given that it includes an
"+"51!" &!"!1,1("1%"") ,*"00&01+1}0 overhauled NTSYNC driver, which emulates Windows NT
advice to launch the App Center."}!-/"3&,20)6/"! synchronisation primitives.
,+2+12&0 ,2/0"1%11%"!"3"),-"/0-)++"!1, This can hugely improve performance for those
introduce Top Charts support here to list apps based on running Windows titles via compatibility layers like those
-,-2)/&16o%&0!&!+}10""*1,"-/"0"+1&+,2/!&)6 in Wine or Steam Play.

VERDICT
DEVELOPER: Canonical
WEB: https://ubuntu.com
LICENCE: Mainly GPL

FEATURES 10/10 EASE OF USE 10/10


PERFORMANCE 9/10 DOCUMENTATION 10/10

Ubuntu 25.04 comes with an overhauled setup and features.


The upgraded kernel is more efficient and there’s extensive
online documentation.

The Evince document viewer has been replaced by Papers. The latest Rating 10/10
version has new features like digital signature verification.

www.techradar.com/pro/linux June 2025 LXF328 23


REVIEWS Museum simulation

Two Point Museum


Management is thrilled to hear it can get money for old content it has lying
around. Mollie Taylor thinks that is too late even for LXF.
wo Point Studios has really cornered the with which to adorn our museum walls and floors.
SPECS
Minimum
T +& %"*/("1,#1(&+$01/&$%1v) "! ,+ "-1
and contorting it into something completely
The customisation in Two Point Museum is fabulous,
especially for our Sims-addled brains, with plenty of
OS: Ubuntu unserious, yet we were still taken aback by just how themed decorations for each museum, along with a
22.04 64-bit excellently crafted Two Point Museum is. It’s a fantastic handful of generic set dressings. We wish there’d been
CPU: Intel Core evolution of its last two games, Two Point Hospital and more variety of wallpapers and flooring, but we were
i3 8100, Two Point Campus, easily being the developer’s greatest, drowning in cool furniture items by the time we wrapped
67"+=9<88 quirkiest management sim to date. up our playtime for this review. We never knew we could
Mem: 6GB There are five museums to manage across the enjoy carefully placing hand dryers as much as we did.
GPU: GeForce game’s campaign, each one just different enough to We couldn’t sit there playing exhibition dress-up for
GT 1030, always be throwing new things our way. We started ever, and Two Point Museum’s plate spinning ramped
Radeon RX ,21&+"*"+1,&)"n/2+v,#v1%"v*&))"01)&0%*"+1 2-#/#01"/1%+4" ,2)!%3"+1& &-1"!o%&)"4"
560, Intel UHD sporting dusty fossils. Our first run-through there gave started off hiring based on vibes alone (read: we liked
630, 2GB us very little responsibility, mostly keeping us tied into their silly names), each staff member’s qualification and
VRAM (720p the basic loop of sending staff out on expeditions, personality traits are vital. An expert might be able to
low detail) displaying and decorating whatever they brought back, analyse exhibits 50% faster, but they’re a dull old soul
HDD: 8GB and then watching the money roll in. who sucks the life out of any guided tours they conduct.
As we progressed, we began taking ownership of Certain expeditions require staff with a particular
Recommended aquarium Passwater Cove, interactive haunted hotel qualification, such as Survival Skills or Pilot Wings, but
OS: Ubuntu Wailon Lodge, and Pebberley Heights, a museum on a they can also help to negate certain dangerous random
22.04 64-bit, sky-high platform where exhibits rain down from above. encounters that can occur while retrieving new museum
Steam OS The campaign had us darting between each one, displays. Paying attention when hiring and making use
CPU: Intel Core requiring us to spread our time between all five in order ,#1%"1/&+&+$/,,*1,$&3",2/%/!v4,/(&+$01##+"4
i5 11600, to progress and unleash Two Point Museum’s full scale qualifications became super-important to minimise
Ryzen 5 5600 of responsibility and chaotic antics. Jumping between injuries or stop staff from going MIA all together.
Mem: 8GB each map helped keep things fresh, and meant that each
HDD: 8GB time we returned, we were given new challenges to slot Art-rageous antics
GPU: GeForce into the existing spaces we’d carved out. As Two Point Museum threw more things at us, it forced
GTX 1070, Now revisiting Memento Mile, we were forced us to start thinking more strategically. More managerially.
Radeon RX 1,0%("2-,2/*"1& 2),20)6!"0&$+"!0- "1, The game provides a few tools to help establish the flow
5600 XT, Intel incorporate new mechanics, such as spotting vandals, and keep things chugging along; zone assignments let us
Arc A750, 8GB hosting guided tours, and displaying more advanced outline different areas across each museum and assign
VRAM (1080p exhibits that had to be kept in specific conditions, like a staff to them, so they don’t go wandering off across the
high detail) dry climate or with a constant cool breeze, lest the ice- map. We could chuck down one-way doors to stop folk
blocked caveman broke free and terrorised guests. circling back round, or create staff-only entrances with
Folding in these new challenges was accompanied corridors that could quickly ferry our workers to
601"!&)6$/,4&+$ ,))" 1&,+,#$,/$",20!" ,/1&,+0 important areas. Each time the game plonked a new

Museums are renowned for their money-making antics. A fossil exhibit, yes yes, it’s full of ex-Linux Format editors…

24 LXF328 June 2025 www.linuxformat.com


Museum simulation REVIEWS

Nothing fishy to see here, although this might be a tuna fish. A group of cheese men observe a science exhibit.

museum in front of us, we felt we had that little more announcer, and Jane Webley does absolutely nail that
foresight and planning behind us, and we really hit our slightly sarcastic edge that we Brits simply can’t resist.
groove by the time we were sent to Pebberley Heights Our campaign money woes also inspired us to go all-
and the quirky science facility Bungle Wasteland. out in Two Point Museum’s sandbox mode, which has a
We did, however, become increasingly frustrated with huge selection of drop-down menus and sliders of
certain aspects of Two Point Museum as we progressed. settings to tweak alongside three difficulty presets. It
During the times when we were losing money, or failing means that hardcore management simmers can give
to fully satisfy VIP guests and primary school visits, we themselves a tough-as-nails challenge they won’t
often struggled to pinpoint why. Although you can pull necessarily get from the campaign, while we can go back
2-+,3"/3&"4,#6,2/#&++ "0n1%"$*"!,"0+}1/"))6 to treating the whole thing like a well-cultured dollhouse.
point out where you’re going wrong. Even after culling We didn’t get to spend a ton of time in the sandbox
staff numbers and bumping up ticket prices – something mode, as we were more focused on experiencing the
that did not go down well with our guests – we were still progression from the campaign, but that’s ultimately
struggling to break even on one of our maps. what Two Point Museum wants you to do anyway. Get
We went from treating Two Point Museum like a drip-fed the intricacies one by one before letting it all
glorified Sims to muttering under our breath, “Noooo, we flood your veins later down the line. We already know
are haemorrhaging money, our staff are unhappy, and we’re going to be dipping back in on a less professional
4" +}1#&1+,1%"/1%/,,*&+1%&0#)&--&+$2&)!&+$o€ basis, just to craft the exhibitions of our dreams.
The museum rating panel offers little to no If you’ve enjoyed Two Point Hospital and Two Point
constructive feedback, even when our rating was Campus, it’s an absolute no-brainer that you give Two
%,3"/&+$&+1%"*&!v>80o%"0""5%&&10/"$/"1j€ Point Museum a try. We’d argue that, as a concept, a
+! }*/"))6"+',6&+$1%"*20"2*j€1,,(-"/*+"+1 museum management sim is the most endearing
residence in the common thoughts column, which ,#1%"*))n+!&1}0""+',61,0""'201%,4$/"1
weren’t exactly helpful when trying to get into the canvas the concept has been for Two Point Studios to
!"1&)0,#4%6,2/$2"01%--&+"00-"/ "+1$"40+}1 really go all-out on its signature whimsy.
necessarily reflecting those comments. And if sterilised medical institutes and dorms filled
Call it a skill issue, which it kind of is, and we weren’t with sexy young adults aren’t your thing, the cosiness a
looking for a play-by-play, but we couldn’t help but wish humble museum offers might be just the thing you need
Two Point Museum did a better job of saying, “Hey, here’s to reel you into what is easily one of the neatest, most
4%"/"6,2}/"*"00&+$2-n&!&,1o€,*"1&*"0& ,+04,2)! approachable management sims in recent memory.
pop up of folk being thirsty, or their bladder fit to burst,
but we still seemed to get those even when the building
was crammed with an abundance of cafeterias, vending
VERDICT
machines and loos. We would also occasionally get icons DEVELOPER: Two Point Studios
that we didn’t understand at all, and despite our efforts, WEB: www.twopointstudios.com
we were unable to discern exactly what the game was PRICE: £24.99
trying to tell us.
GRAPHICS 9/10 GAMEPLAY 8/10
Anything is fossible LONGEVITY 8/10 VALUE 8/10
It’s our main complaint in what is otherwise a very solid,
stellar experience – bar the odd occasion where the Zany Two Point Museum is the coolest, cosiest and most evolved
British Tannoy Voiceover was a little too zany, as we were iteration of the formula to date, even if its more obtuse
regularly hearing the same voicelines over and over aspects prevented us from becoming a pro curator.
again. Saying that, we did particularly appreciate the
more meta-leaning acknowledgement of her previous Rating 8/10
undertakings as a hospital and college campus

www.techradar.com/pro/linux June 2025 LXF328 25


WE COMPARE TONS OF STUFF SO YOU DON’T HAVE TO!

Michael Reed
is a highly private
individual, who is
Zen Brave LibreWolf secure both in
Vivaldi Tor Browser himself and in his
choice of secure,
private browser.

Secure browsers
Always the cautious type, Michael Reed goes on the hunt for a browser
that offers enhanced security without compromising on fun and features.

HOW WE TESTED…

We used each of the


browsers as much as possible
for normal browsing in order
to build up a picture of what
the user experience was
actually like. Some of these
browsers felt like a step up
&+#"12/"0 ,*-/"!1,
browsers that tend to come
with a distribution, as well as
offering enhanced security
and privacy.
At all times, we thought
about whether the browser is
usable in its other aspects as
well as the security features
&1,##"/0o +,1%"/4,/!0n
browser that imposes
massive inconveniences in
use for an extra fraction of
-"/ "+1$",#-/,1" 1&,+
against tracking wouldn’t
score as well. It’s a bit like his month, we’re looking at five attacks that can be launched over the
going on a diet: an elaborate
regime that is never followed
T browsers that place privacy and
security at the forefront. We live
internet. When it comes to browsers, privacy
is more concerned with preventing the user
because it’s too inconvenient 0,*2 %,#,2/)&3"0,+)&+"1%"0"!60n+! from being tracked online. Given half a
isn’t as good as a sensible, the web browser is our portal to that online chance, interested parties will attempt to
moderate one that is easy to world. It makes sense, therefore, that we !,1%&+$0)&("2-),!&+#,/*1&,+,+1,6,2/
adhere to. !,"3"/61%&+$4" +1,""#2-0" 2/&16 computer, find out what websites you’re
We did some formal testing when browsing. We’re particularly interested logged into, and build up a profile on you.
of the resistance to tracking in browsers that can enhance privacy As well as the practical safety issues of
CREDIT: Magictorch

using the EFF’s Cover Your without compromising day-to-day usability. online privacy, there is a principle at stake.
Tracks website, and frankly, it We’d prefer not to miss out on features and #6,220"1%"/&$%1/,40"/n6,2 +06
threw up some surprises. convenience just to feel safe. goodbye to the adverts that pop up in
Security and privacy aren’t quite the same reference to something you were searching
thing. Security is protection from malicious for or discussing minutes before.

26 LXF328 June 2025 www.linuxformat.com


Secure browsers ROUNDUP

Installation
and setup
The first stage is obtaining a copy
of the software and installing it.
ll the browsers support Linux, Windows and Mac OS,

A which we consider useful as it brings in a larger user


base, and it’s handy when you have to move between The Tor Browser installation is simply an archive that you unpack to your hard
platforms. They all offered a version for the Raspberry Pi, too. ÌĨìŊÐƧǏƒéÐǎĥĨČäĨ­ąǎìijĬÐÿãǎÆ­ĆǎĬЭĨÆéǎãČĨǎķĥÌ­ijÐĬǎČĆÆÐǎìijLJĬǎĨķĆĆìĆäƧ
The Zen website offers an AppImage that can be run without
installation and a binary tarball that’s manually installable on There are also instructions for adding the official Brave repo to
most distros. The browser is also available on Flathub. The most of the major distros. The developers maintain the Flathub
AppImage version could detect other browsers when importing and Snap ports, but advise against using these for some reason.
bookmarks and logins, but as we used the Flathub version for The LibreWolf website has instructions for most major
testing, we had to import password and bookmark files manually. distros, and these consist of adding the official repository to your
The Vivaldi site offers DEB and RPM files that should work on system, then adding LibreWolf with the package manager. The
most Linux distros, and it also links to the Snap Store. Flathub Other Linux category is where the instructions for AppImage and
also offers Vivaldi at an identical version number. We installed Flatpak are located, and we installed LibreWolf from Flatpak.
the Snap version. Manually importing Firefox bookmarks was OK,
but we had search online to work out how to import passwords. VERDICT
The Tor website only offers a tar.xz file that you expand to the
directory of your choice. You run the launcher script directly from ZEN 8/10 VIVALDI 7/10
there. The Ubuntu repos do offer an app that downloads the BRAVE 7/10 TOR BROWSER 6/10
archive and checks for updates, but we kept things manual. LIBREWOLF 8/10
The advice on the Brave site is to run a command line that Tor Browser was a bit quirky in this respect (possibly for privacy reasons).
downloads and runs an installation script, which is what we did. The others all had a reasonable set of options.

Settings and
customisation
The first port of call: making sure
the software works how you want.
or Browser has a settings page that is similar to that

T ,#1%"01+!/!Firefox browser, and the settings are


searchable and split into five categories. It covers the
basics that you’d expect from a web browser. šìŊ­ÿÌìLJĬǎĬÐijijìĆäĬǎ­ĨÐǎ­ijijĨ­ÆijìŊÐǎ­ĆÌǎŋÐÿÿǎÿ­ìÌǎČķijƧǎĬǎŋìijéǎąČĬijǎČãǎijéÐǎ­ĥĥÿìÆ­ijìČĆƨǎ
Like Tor Browser, LibreWolf offers the standard Firefox äČČÌǎķĬÐǎìĬǎą­ÌÐǎČãǎÆČÿČķĨǎ­ĆÌǎĬĥ­ÆÐƨǎą­üìĆäǎìijǎ­ǎĥÿЭĬķĨÐǎijČǎŋČĨüǎŋìijéƧ
settings in a searchable and categorised format, but there is the
addition of a LibreWolf category that offers a handful of mainly Zen is built on top of a Firefox base, but the settings dialog
security-orientated settings that are specific to LibreWolf. Like looks substantially different from that of Firefox. We were happy
this aspect of Tor Browser, the settings are a bit drab, but they to see some illustrations thrown in where appropriate, for
largely get the job done. example. There is an extra section for Zen Mods, Zen’s own add-
Like most of Vivaldi, its settings page is immaculately laid on system. Zen, Brave and Vivaldi all offer an extended settings
,21+!4")),/$+&0"!n4&1%*,/"1%+!,7"+ 1"$,/&"0&+ experience compared to the browsers that they are based on.
1%"0"11&+$00&!"/o ,,!20"&0*!",# ,),2/n+!4%"/"
appropriate, diagrams are used to illustrate what the settings VERDICT
actually do. The settings include a host of excellent refinements
that control how the browser’s user interface works. ZEN 8/10 VIVALDI 10/10
Brave’s settings aren’t quite as lush, visually, as Vivaldi’s, BRAVE 9/10 TOR BROWSER 5/10
21&1}0,3&,201%1+"/)6"3"/60" 1&,+ ,+1&+01)"01 LIBREWOLF 5/10
#"4)1"/1&,+0 ,*-/"!1,1%"Chromium base. Like Vivaldi, Tor Browser and LibreWolf mostly stick to the drab basics of Firefox. The
settings are well organised into a decent number of categories. others add a number of extras.

www.techradar.com/pro/linux June 2025 LXF328 27


ROUNDUP Secure browsers

User interface
Nice environments Zen 8/10 Brave 8/10
are productive. From the start, we have to give Zen some Brave makes good use of the sidebar for
credit because the developers have tried bookmark browsing and the reading list.
ecause this is a special to introduce new ideas into the GUI The sidebar is also home to the AI chat

B class of browser, we’re


willing to make some
compared to the other browsers. A lot of
use is made of the sidebar, which is left
system, Leo AI. Once you’ve had an AI
chatbot available in the sidebar, it’s
allowances for a less featureful out by default, and this makes sense in a difficult to go back to having it running
interface. However, if a browser can world of widescreen monitors, because &+1o
offer security and privacy, and a it’s less of a sacrifice to usable screen Tab grouping features are present. In
nice interface, that’s even better. space to lose space from the side of the the Brave system, a new group can be
As these are secure browsers, window than from the top or bottom. optionally named and coloured. Other
4")&("1,")"1, "001%" Rather than putting the browser tabs tabs can then be dragged on to that
security and privacy features easily, along the top of the main window, they group, and it’s a feature that is sorely
within the user interface. We also stack vertically in the sidebar. This also missed in browsers such as stock Firefox
welcome any extra visual indicators increases the number of tabs that can be that don’t have it. Quick-launch icons for
that concern this area of use. kept open at one time while maintaining arbitrary sites can also be added to the
Despite the security and privacy readable text labels on the tabs. sidebar, but they don’t actually open
orientation of these browsers, It’s quick and easy to create and switch inside the sidebar.
some of them offer a bit more between multiple workspaces. These are In use, Brave isn’t quite as flashy and
&+1%"/")*,#20"/&+1"/# " collections of open tabs. So, you might modern looking as Opera, Vivaldi or Edge,
innovation, which is missing from create a workspace called ‘work’ and but it’s still ahead of plain Chrome or
mainstream stalwarts such as others called ‘fun’, ‘reading’ and ‘social Firefox when it comes to adding the kind
Firefox and Chrome. Most of the media’, for instance. A fast interface with of modern interface features that we
major browsers adopted multiple a unique layout. expect to see in a modern browser.
tabs over 20 years ago, but these
days, we’re happy to see any
advanced features (such as
grouping) that make dealing with a
large collection of tabs easier. A
well-featured and easily accessible
sidebar is another feature we feel
should become a standard
expectation these days, too.

Extensions
Add features and make things work the way you want them to.
or Browser is built on a basic Firefox base. The Brave uses the same approach as Vivaldi as it has a few

T developers advise against expanding the browser’s


facilities using extensions. Technically, you can add
built-in extensions and then tries to maintain a good level of
compatibility with Chrome extensions.
Firefox extensions, but it might be the case that these additions Zen has a two-tier approach to extensions as it allows the
cause a security compromise or malfunction. So, you’ll have to addition of standard Firefox extensions and it has its own system
decide on a case-by-case basis whether the risk is worth it if of so-called mods that are created by the community. These
there’s an extension that you need. mods are added via a store page, and at the time of writing there
The LibreWolf developers aren’t quite as stringent in their were more than 80 of them, most of them concentrating on UI
advice against installing extensions, but they do recommend enhancements. Between the two, there’s quite a lot of features
limiting your additions to the essentials because the extensions out there for you to add.
themselves can cause security problems. In actual fact, the risks
are probably similar to those of Tor Browser as the two browsers VERDICT
work in a similar way.
Vivaldi allows the use of Chrome extensions, which gives ZEN 9/10 VIVALDI 8/10
access to an enormous library of add-ons to choose from. The BRAVE 8/10 TOR BROWSER 5/10
settings page points out that you may run into problems in rare LIBREWOLF 5/10
cases when it comes to compatibility, and it includes a link to Zen surprised us with the amount of variety it offers. You’re unlikely to stump
1%",##& &)4"#,/2*1,/"-,/1&+ ,*-1&&)&1&"0o Brave and Vivaldi if you want extra features.

28 LXF328 June 2025 www.linuxformat.com


Secure browsers ROUNDUP

LibreWolf 6/10 Vivaldi 9/10 Tor Browser 6/10


Given that this is a fork of Firefox, it’s not There’s something about Vivaldi that The Tor Browser interface certainly isn’t
%2$"02/-/&0"1%11%"20"/&+1"/# " looks right and gives the interface &++646#)0%6,/#"12/"- ("!n0&1}0
resembles Firefox in its default state. It’s a excellent clarity and contrast. We left the nothing more than the default Firefox
functional system for use in an office, but visual settings at default while assessing layout. The slight differences are that a
it’s a little drab and spartan compared to Vivaldi, but it can, optionally, stack the Tor network connection indicator pops
what a lot of other browsers are starting tabs vertically in the sidebar like Zen. 2-#/,*1&*"1,1&*"n+!1%"/"/"14,
to offer these days. The Reader View icon We’re willing to lose a bit of space from security-related icons in the tab bar
is one of the few user interface features the side of the screen on a widescreen region of the interface. The first of these
that it offers beyond standard options that monitor, and Vivaldi populates this area allows you to make a quick check of your
all browsers offer. One click on this icon with a column of icons (which can be security level with a link to the appropriate
simplifies the current page for distraction- tucked away) that activate various sidebar area of the settings, and the second one
free reading. modes such as bookmarks, reading list enables you to reset your current activity,
It shares the same saving grace as and more. It’s also possible to add sites restarting the browser to do so.
Firefox itself in that you can enhance the such as Wikipedia to the sidebar for side- If you were going to use Tor Browser as
user interface by customising it, and we by-side viewing with another page. This is your regular browser, you might want to
published a guide to doing this in LXF324. the best sidebar of the browsers here. add a few extra convenience features,
#&/01*,3"*&$%1"1,!!+& ,+1, Vivaldi intelligently assesses the colour +!1%"/"}0+,1%&+$01,--&+$6,2#/,*
easily access the sidebar. From here, scheme of a website and its favicon, and customising the interface. For example,
6,2 +!!0,*"1%&+$/"0"*)&+$ colours the tab bar appropriately, typifying you can add the sidebar icon. However,
0-)&13&"4#"12/"),+$4&1%0,*"#,/* the many visual refinements that Vivaldi the project itself advises against adding
,#1$/,2-&+$n))20&+$1%""51"+0&,+ adds. It’s the best looking of all of the user Firefox extensions as it may compromise
system. Overall, LibreWolf’s GUI fulfils the interfaces, and one of the best looking security. It’s the bare, basic browsing
basic requirements. browsers out there. interface, but you can make a few tweaks.

Security and privacy


Keeping yourself anonymous and safe online.
or Browser won’t connect to the web at all without as open as possible about what information they do send out

T using the Tor network. Therefore, all network traffic


from the browser is encrypted and then sent through
about your usage.
Tor Browser’s use of the Tor network might seem like a
the Tor network, confusing any parties that want to find out unique advantage, but Brave can also connect to it. However, it’s
4%,6,2/"+!4%"/"6,2/"0"!o +"3"/60&+$)"0-" 1 up to the user to remember to select the option when needed. It
(such as automatically deleting cookies on shutdown and also comes with uBlock Origin installed, and is open source.
,+)6)),4&+$ „nTor Browser is configured to be secure, Zen isn’t a powerhouse of anti-tracking features, but the
even if it means that in rare cases, a given website might not source code is open and the developers have a policy of
work properly. disabling features that could be used to ‘phone home’ compared
Like Tor Browser, LibreWolf takes a Firefox base and to other browsers.
configures it to enhance privacy and security. If you knew
%,4n6,2 ,2)!&+1%",/61("01+!/!Firefox and add about a VERDICT
!,7"+,/0, ,+#&$2/1&,+,-1&,+01, %&"3"0,*"1%&+$0&*&)/n
but it’s up to you to decide if it would be worth the effort rather ZEN 6/10 VIVALDI 7/10
than simply using LibreWolf. The choice of search engine is the BRAVE 8/10 TOR BROWSER 8/10
privacy-orientated DuckDuckGo. LIBREWOLF 8/10
Vivaldi is only partially open source. However, the developers We can’t be 100% sure about closed source software. Tor Browser and
argue that they have no incentive to track you. They have been LibreWolf do everything possible to keep the shields up.

www.techradar.com/pro/linux June 2025 LXF328 29


ROUNDUP Secure browsers

Tracking and
fingerprinting
Make sure only entities you approve
of can see what you’re doing.
e put the browsers through the EFF’s Cover Your Tracks

W test (https://coveryourtracks.eff.org) to see how well


they resisted tracking and fingerprinting attempts.
We were disappointed with Tor Browser as it gives quite a Ĩ­ŊÐǎäČijǎijéÐǎÅÐĬijǎĬÆČĨÐǎČĆǎ$66LJĬǎČŊÐĨǎ¡ČķĨǎƒĨ­ÆüĬǎijÐĬijƧǎ›ÐǎŋÐĨÐǎìąĥĨÐĬĬÐÌǎ­ĬǎìijLJĬǎ
&1,#&+#,/*1&,+,211,4"0"/3"/01%1&1}0 ,++" 1"!1,o ­ÿĬČǎ­ǎäČČÌǎäÐĆÐĨ­ÿƽĥķĨĥČĬÐǎÅĨČŋĬÐĨǎijé­ijǎÌČÐĬĆLJijǎãÐÐÿǎÆČąĥĨČąìĬÐÌǎìĆǎķĬÐƧ
However, it may be the case that the use of the Tor network is a
bigger win for privacy than its ability to resist fingerprinting. Without having to move away from the default settings,
Brave did better than any of the others, succeeding in all three Vivaldi did respectably well on the test.
of the main categories. It blocked both main types of potentially The results of a test like this bear some interpretation.
malicious trackers and it produced an untrackable, randomised Looking into the details, we could certainly say that Brave
fingerprint. It also had an ace up its sleeve as it can connect to +!Vivaldi do a respectable job in this area without throwing
the Tor network as well as having all of these other measures. usability out of the window.
Admittedly, it’s not a stripped-down stealth machine like Tor
Browser, but because of a combination of good qualities, it gives VERDICT
extremely effective privacy without compromising on features.
Zen did OK, but the EFF’s test threw up quite a few ZEN 6/10 VIVALDI 8/10
shortcomings. It’s not unsafe, but it’s not configured to be as BRAVE 9/10 TOR BROWSER 7/10
highly secure and anonymous as some of the other options. LIBREWOLF 6/10
Disappointingly, LibreWolf also only managed to achieve a We were surprised how well Brave and Vivaldi did on this test while
middling score on the EFF’s test. maintaining a strong set of normal features.

As a daily driver
How well does it work as a normal
browser for day-to-day use?
verall, Tor Browser can be used for basic, standard

O browsing, but without Firefox’s usual synchronisation


and expandability features, it’s not much fun as a daily
driver. Furthermore, once you’ve got the Tor network connection
engaged, it tends to be a bit slow, and you can run into problems
such as when sites like Google can’t determine the correct ǎÅĨČŋĬÐĨǎÿìüÐǎĨ­ŊÐǎÆ­Ćǎé­ĆÌÿÐǎąČĬijǎČĨÌìĆ­ĨőǎÅĨČŋĬìĆäǎij­ĬüĬǎŋìijéǎ­ĥÿČąÅƧǎ?ijǎ
language settings because they don’t know where you’re located. ÆČąÐĬǎŋìijéǎÿČijĬǎČãǎãЭijķĨÐĬǎ­ĆÌǎìijLJĬǎÐŐĥ­ĆÌ­ÅÿÐƨǎijČČƧ
LibreWolf’s official Firefox bookmark sync feature can be
re-enabled, and this is fairly safe as it uses end-to-end encryption. driven sidebar is pleasant to use, and it’s extremely convenient
Like Tor Browser, without full access to Firefox’s extensions, it’s a 1,%3"0&1"002 %00, &)*"!&#""!0,-"+&+1%"0&!"/o 1}0
rather bland browsing experience that’s behind the cutting edge. shame that it doesn’t come with an AI chatbot like Vivaldi does.
Brave is based on Chromium, the open source version of Zen is fast and pleasant-looking in use, and its always-out
Chrome. In daily use, the proprietary omissions don’t affect sidebar is a gutsy design decision. The developers encourage
browsing. For example, services such as Netflix that require DRM users to dig into its two add-on systems to add extra features
(digital rights management) work as they should. Synchronisation +! 201,*&0"1%"/,40&+$"5-"/&"+ "n+!&+&10!"#2)10"12-n
with Google services such as bookmark sync doesn’t work, but it already offers a bit more than the basic browsers.
Brave has its own system for synchronising such details between
devices. It makes much more use of the sidebar than stock VERDICT
Chrome, and comes with cutting-edge features like an AI chatbot,
meaning that in total, it’s ahead of stock Chrome or Firefox. ZEN 8/10 VIVALDI 9/10
Vivaldi also combines security and privacy with advanced BRAVE 9/10 TOR BROWSER 5/10
features. When it comes to usability and looks, the interface is in LIBREWOLF 6/10
the top tier of all browsers. It also has advanced features that Vivaldi and Brave offer a bit more than the stock browser that comes with
would be a lot of work to add to Chrome or Firefox. The icon- most distributions. Zen innovates in terms of UI.

30 LXF328 June 2025 www.linuxformat.com


Secure browsers ROUNDUP

The verdict
Secure browsers
e’ve made Brave our top pick as a privacy and

W security-orientated browser as it strikes the best


balance between fulfilling those criteria while still
being a good choice as a general-use browser. Ironically,
for a browser that’s touted for its privacy features, the
interface offers a bit more than the default configurations
of either Firefox or Chrome, the two most common
browsers that are supplied with Linux distributions.
Brave’s policies towards adverts aren’t perfect, though.
Over the years, the developers have been caught up in
some controversies.
Overall, you’re not missing out on anything significant
compared with Firefox or Chrome, and Brave offers some
extras in both general features and security and privacy.
Because of its pleasant interface, as a day-to-day 1st Brave 9/10
browser, Vivaldi might have beaten Brave, but we’re
considering these browsers from a standpoint of security Web: https://brave.com
and privacy in this Roundup. It’s an excellent performer in Licence: Mozilla Public License 2.0 Version: 1.75.181
most regards and offers features over the standard Packed with good features. Great user interface. Excellent privacy system.
browsers that you might be used to.
It’s fairly early days for the Zen project, but we enjoyed 2nd Vivaldi 8/10
using it. It’s the elephant in the room, but it sometimes
feels risky to commit to a younger browser. Zen was first Web: https://vivaldi.com
released in 2024, and it already has quite a following, Licence: Proprietary (Chromium base) Version: 7.1.3570.60
which is an endorsement in itself. The more we used it, One of the best user interfaces in a browser. Fairly feature packed.
the more we felt that it is ready for full-time use if you’re
attracted to its design and interface. 3rd Zen 7/10
Tor Browser deliberately minimises frivolous features
to ensure maximum security in use. Although technically Web: https://zen-browser.app
possible, it’s not recommended to use extensions. Access Licence: Mozilla Public License 2.0 Version: 1.9.1b
to the Tor network gives greatly enhanced privacy and Lightweight and fast. Innovative interface. Two different add-on systems.
anonymity. The reason that it doesn’t feature more highly
on our list is that there are other options that offer 4th Tor Browser 6/10
enhanced privacy and security, and are more fully
featured as day-to-day browsers. It’s a bit inconvenient Web: www.torproject.org Licence: Various including MPL 2.0,
1,%3"1,04&1 %46#/,*6,2/+,/*)/,40"/1,20" GPL 2.0 or later, 3 ClauseBSD, MIT Licence Version: 14.0.7
Tor Browser for security-sensitive matters. On the other Extreme anonymity and security. Visit restricted sites. Not ideal for daily use.
hand, if you’re convinced that you’re in danger of being
monitored, it might be worth keeping a copy installed. 5th LibreWolf 6/10
LibreWolf offers a customised build and configuration
of Firefox with extra privacy options. It’s closer to being a Web: https://librewolf.net
normal browser for day-to-day use than Tor Browser, but Licence: Mozilla Public License 2.0 Version: 136.0-2
it’s still going to feel a bit hampered in that role. Pre-customised Firefox with security settings turned on. Can be expanded.

ALSO CONSIDER
All of these browsers are based on mainstream browsers. distro that can be booted from a flash drive and includes Tor
+1%",/6n6,2 ,2)!1("1%"+,/*)3"/0&,+,#Firefox or Browser. It’s about as secure a setup as you can get.
Chromium and research the most stringent security options, Opera is a browser with good privacy features. Although it
creating a customised, secure setup. Firefox, in particular, is now based on Chromium for rendering pages, it continues
exposes a lot of useful security options. to innovate in the area of interfaces. Opera also has a built-in
Tor Browser is a standalone browser that can be run from a VPN that should offer a similar level of anonymity as browsers
directory on your hard drive or from a flash drive. Tails is a live that can connect to the Tor network.

www.techradar.com/pro/linux June 2025 LXF328 31


Ubuntu

%"+"4:=o8<3"/0&,+,#2+12&0
%"/"n+!&1}0$"/"!1,4/!0!2)v
,,10"12-0o& (""/0 explains
%,41,/2+&1),+$0&!"&+!,40o

here’s one thing to be said road-test Ubuntu’s new features without

T
1,0"12-6,2/1,4") ,*"&10+"4
about Ubuntu: releases are ,**&11&+$ƒ6"1„1,#2))v),4+&+01))o # ,-"/1&+$0601"*o
(almost always) as regular 0,n1%&0#"12/"&0#,/6,2o"}))4)(6,2 "}))01"-6,21%/,2$%1%""+1&/"
0 ), (4,/(o "/"4"/"n 1%/,2$%1%"-/, "00,# /"1&+$2+12 &+01))1&,+-/, "00x*!""3"+"0&"/
/")60&5*,+1%0#1"/2+12:<o98 &+01))1&,+*"!&n-)20/"3")%,41, 1%+(01,2+12:=o8<}0&*-/,3"!
--"/"!n+!&1002 "00,/&0)/"!6&+ 1"01&1&+ ,*-)"1"0#"16#/,*,1%1%" &+01))"/#,/!2)v,,10"12-0n-)20$&3"
1%"2&)!&+$o5&01&+$2+12:<o9820"/0 )&3"!"0(1,-+!&+3&/12)"+3&/,+*"+1o 6,21,2/,#1%"2+12:=o8<!"0(1,-n
0%,2)!%3"/" "&3"!1%"-/,*-11, "}))1%"+$,,+1,/"3")%,40&*-)" 4%&)"/"3")&+$%,41,(""-6,2/0601"*
2-!1"6+,4n4%&)"2+12:<o8< – and relatively safe – it is to install 2-1,!1"n#&+!+!&+01))+"4--0n+!
20"/0&*-1&"+1#,/+"4#"12/"0 + 2+12:=o8<),+$0&!"&+!,40o,2})) %,41,1/6,21!&##"/"+1!"0(1,-0&#6,2
 p Magictorch

+3&$1"1,,#14/"©-!1"0n )& ( ")"1,04&1 %0"*)"00)6"14""+ +}1$"1,+4&1%1%"!"#2)1 +,*"o


1%"-!1"01+!0")" 1/,-,0"! ,1%,-"/1&+$0601"*0n"+)&+$6,21, +0%,/1n&1}0"3"/61%&+$6,2+""!1,
#/,*1%"-!1"0!/,-v!,4+*"+2o ,+1&+2"20&+$&+!,404%&)""5-),/&+$ (+,4,211"01&+$+!&+01))&+$2+12
But what if you’re not an Ubuntu ))1%12+12%01,,##"/o"}))"5-)&+ :=o8<,+6,2/+,+v2+120601"*o%"
20"/l"/%-06,2}/"&+!,4020"/ %,41, /"1"#&)v0#" (2-0,6,2/ -"/#" 1461,1/6&+25+!/"1%"+"4
),,(&+$#,/#/"0%01/1n,/6,2}!)&("1, 0601"*&0+}1-211/&0(n-)20/"3")%,4 )&#"&+1,6,2/o%1}0+,11,)&("l

32 LXF328 June 2025 www.linuxformat.com


Ubuntu

Get the install media


Find out more about Ubuntu, plus discover how to create
your bootable Ubuntu install disk to help blast you off!
f you’re new to Linux, the first thing to two years and have five years of support for those who

I understand is that, unlike Windows or Mac OS,


Linux isn’t a single homogeneous operating
prize stability over new features. Ubuntu 25.04 is
supported for nine months until January 2026. That’s
system. It consists of multiple distributions, or distros, not an issue – you’ll be offered Ubuntu 25.10 as an
each sharing the Linux kernel but also developing their in-place upgrade in October, long before support is
own building blocks, some of which are unique while withdrawn. This works exactly like any Windows
others are freely shared between them. Think of Linux update – with files and settings remaining untouched.
as the roots of a tree, with a single trunk that branches
off in multiple directions with offshoots sprouting Create your disk
everywhere, all of which represent different distros. Click the Download 25.04 link to download the ISO
One of the most popular distros is Ubuntu. While it’s image file containing the full Ubuntu live desktop
a fork of another distro, Debian, it’s also the progenitor environment and installer. This is 5.9GB, so save it on a
of many further distros, like Linux Mint. That’s because drive with plenty of free space, and be prepared for a
Ubuntu is heavily supported by its parent company long wait if you’re not on a full fibre connection.
Canonical, ensuring it has ample resources for support Once saved to your hard disk, the file can be used
and development. This is ably demonstrated by the one of two ways. The ISO image can be used directly
fact Ubuntu ships two major new releases each year. for testing Ubuntu in a virtual machine (see over the
The latest release (25.04) is the focus of our feature. page for details); otherwise you need to copy it to an
8GB (or larger) USB flash drive. Burning to DVD is
Obtain installation media largely out of the window these days as single layer
Step one is to create your installation DVD or USB flash capacities topped out at 4.7GB and frankly you’re lucky
drive. This also functions as a live installation, enabling to find a DVD reader, never mind a writer, on a modern
you to explore Ubuntu’s desktop and features before desktop PC or laptop.
installing it. First, you need to download an ISO image. If you’d like to create a bootable USB flash drive, the
Open your web browser and navigate to https:// process can be more complicated, but Ubuntu will load
22+12o ,*š!,4+),! where you’re shown a variety of (and install) much quicker than when using a DVD. It’s a
releases, including Desktop, Server and delicious simple procedure if you’re a Ventoy (%11-0pšš3"+1,6o+"1)
Flavours (more on those later). Click Download Ubuntu user – copy the ISO file to your Ventoy bootable disk,
Desktop. Two versions are available: Ubuntu 24.04.x then boot it from there. If not, the walkthrough reveals
LTS and Ubuntu 25.04. LTS versions are released every how to create your bootable drive using the free Rufus.

CREATE A BOOTABLE USB DRIVE

Set up Set up ISO file Confirm and write


1 Download Rufus from %11-0pšš/2#20o 2 Leave Disk Or ISO Image (Please 3 You’re told the ISO image is
ie/en/ – we recommend the portable Select) selected and click the Select ISOHybrid and given a choice of write
version that doesn’t require installation. button to its right to browse for and select modes – leave ISO selected and click OK.
Open the file, clicking Yes when prompted the downloaded Ubuntu ISO file. Leave Review the warning (all existing data and
and Yes again to allow it to check for app MBR selected as the Partition Scheme for partitions on the drive will be wiped) and
updates. Once Rufus opens, select your compatibility purposes. Review the other click OK again. A progress bar indicates
target disk by its drive letter and capacity settings (filesystem should be FAT32 and the drive-writing process. Once complete,
from the Device drop-down menu. cluster size 8192 bytes). Click Start. click Close. The drive is ready for use.

www.techradar.com/pro/linux June 2025 LXF328 33


Ubuntu

Super quick-start guide


You don’t even need to install Ubuntu to try its delights!

odern Linux is easier, faster and less


M hassle to install than any recent
release of Windows. That’s the truth.
No messing with keys, no worrying about
activation and no digging out that lost install
disc or USB drive. No restrictive hardware
demands. No invasive adverts, no snooping,
no popup adware asking you to do this,
register for that, connect to this service and
on and on…
The beauty of Linux is that because it’s
freed software, anyone can download and
start using it. You don’t even have to install
anything! Linux technology and its free-and-
easy licence means that it can run off virtual
machines that live in the web. Don’t believe
us? Head to %11-0pšš!&01/,0"o ,*š0")" 1š
ubuntu/, where you can launch your very own
in-browser version of Ubuntu 25.04 running
remotely on a virtualised server out there You need an ISO writing tool to create your bootable USB drive.
somewhere. It’ll be a little more laggy than a
local instance or install, but it offers instant access past that meant CDs or DVDs, but now we usually
from any modern browser running on Windows or mean a spare USB thumb drive. It’s not as fast and
Mac OS. &01/,0"o ,* also offers a large range of 6,2 +}16!"#2)103"4,/(-"/*+"+1)6n21&1}0+
alternative Linux distros from Linux Mint to Arch, so ideal way to quickly try out Linux without worrying
you can try out a load and find which you like the most. about installing or setting up anything else and you can
Obviously, running Ubuntu on your own hardware is carry it around. As long as you have a suitable drive and
why we’re here. There’s two main non-invasive ways of can persuade your PC to boot from it – not always an
trying Linux: running it off live media or on a local easy task – you could be trying out Linux in a matter of
virtual machine. Both are both pretty quick – just a minutes, perhaps tens of minutes?!
couple of downloads and a bit of disk writing. A live media version of Ubuntu is very similar to the
Let’s take a look at running it off live media. In the installed version – it’s a great way of testing if it’ll work

VIRTUAL UBUNTU

Get VirtualBox Create a machine Starting virtual Ubuntu


1 Head to 444o3&/12),5o,/$ and 2 Choose Ubuntu and the bits should 3 A prompt appears asking for a disc;
download VirtualBox for your operating match the ISO you downloaded. Click locate the Ubuntu ISO file and click Start.
system: Windows or Mac OS. Install it and Next. Under Memory we recommend Ubuntu starts. Once loaded, you’re free
be aware you need at least 20GB of spare 2,048, but if you have an 8GB PC, 4,096 1,1/6,212+12,/20"1%" +01))& ,+1,
drive space to store the virtual OS file. You is best. You can leave the rest as default properly install it to the virtual machine.
also need the Ubuntu ISO file from444o settings, apart from the dynamic hard For extended use, in the virtual machine’s
22+12o ,*. Once installed, start it, click drive size. The default is 8GB; we suggest settings, under Display, you’ll want to
the New button and call it Ubuntu. at least 32GB. Finish and click Start. enable 3D acceleration and allocate 16MB.

34 LXF328 June 2025 www.linuxformat.com


Ubuntu

on your actual PC hardware, because if you do a real


install, it’s running in the same conditions using the USB UBUNTU
same drivers. So, it’s worth checking if the wireless
adaptor is working and if the graphics are correctly To run Ubuntu from a USB stick, you first need a USB drive at least
identified. Of course, it’ll boot somewhat slower and 8GB in size; 16GB would be ideal. You need the Ubuntu ISO file from
won’t be quite as responsive, as it’s running from a USB 444o22+12o ,* as discussed on the previous page, and we’ll use
drive, though largely the OS will be in memory. the download tool UNetbootin from %11-pšš2+"1,,1&+o$&1%2o&,. This
The main problem you’ll encounter is getting your installs the live disc ISO file directly to your USB drive.
PC to boot from the fresh USB stick. When you switch The tool can download the ISO image, but it’s best practice to do it
on the system you have two options: one is to open any yourself. Select Diskimage and locate the file in the ,4+),! folder.
provided Boot menu – not all devices offer this and the Use the Ubuntu Storage box to create reusable space – 512MB
key used varies. HP systems use F9, Dell and Lenovo should be fine, use more on larger sticks. Ensure you have the
use F12, older AMIBIOS-based systems use F8, Award- correct USB drive selected in the bottom menu and click OK.
based systems use F11. You need to slowly tap the key You can now boot your PC from the USB drive. However, you need
just after switching on the system. Select any USE to ensure your PC selects the USB drive as the boot device. Usually
drive option and you’re good to go. when you turn on your PC a message says press F11 or F12 to select
If no boot menu seems available, the other option is the boot device – consult your manual for details.
to select the order of boot devices within the BIOS/
UEFI settings. Typically a message should flash up
during the system start explaining which key to press. and once the desktop has loaded select Devices >
Just as with the boot menu, pressing one of Del (the Insert Guest Additions CD Image
most common), F1, F2, Esc or a ‘special’ maintenance This adds another virtual optical disc with the
key should provide access. In the BIOS, locate the Boot required software. After a few seconds, a window
Device menu and ensure the USB/removable drive is should open asking if you want to run the disc – choose
first in the list. Save and reboot. Run and allow the software to install. This can take a
while. Use the View, Input and Devices menus at the
Going virtual top of the VirtualBox window to adjust and control all
Another option is to install Oracle’s VirtualBox software of the previously mentioned integration features. They
on your existing system – Linux, Windows or Mac OS. make using VirtualBox much more comfortable, as well
You can grab a copy to install from 444o3&/12),5o,/$š as enabling a wider range of resolutions.
4&(&š,4+),!0. Install and run this. It looks complex, Thanks to modern processors providing a host of
but creating a virtual PC is pretty easy if you stick to hardware virtualisation acceleration, alongside fistfuls
the default settings. The main stumbling block is of spare processor cores and often bags of memory,
ensuring you add the ISO file to the virtual optical drive virtual systems can be quite nippy. The main stumbling
under the Storage settings (see Virtual Ubuntu box). If block is 3D acceleration and it’s still somewhat poor
you find you want to keep using the virtual version of ,+"3"+1%")1"01 ,+02*"/ 0+!-/, "00,/0x
Ubuntu, ensure you install the VirtualBox additions; this that’s not a Linux thing, either. The main takeaway is
provides better screen scaling, seamless mouse you likely won’t be gaming or 3D accelerating much
integration, combined clipboard and seamless ,+6,2/3&/12)2+12* %&+"n'201(""-1%1&+*&+!n
dragging and dropping from the host machine to the but for general desktop use, it’s going to give you a
virtual Ubuntu. To do this, run the VirtualBox Ubuntu, good idea of how things work.
BIOS and UEFI
systems are a law
unto themselves,
but one you
need to conquer
to change the
booting.

www.techradar.com/pro/linux June 2025 LXF328 35


Ubuntu

Preparing Windows PCs


Before diving in and installing Ubuntu alongside Windows, take the time
to make sure your PC is ready to accommodate a dual-boot system.

ot only is it technically possible to run Ubuntu drive? The latter is preferable – you can buy an internal

N (or any other Linux distro) alongside Windows,


it’s also relatively painless. That said, you
480GB SSD for around £30. Power down your PC, take
precautions against static, and open the case to verify
should still look to take suitable precautions and there’s a 2.5 or 3.5-inch drive bay free, plus spare SATA
prepare your system for life as a dual-boot machine. power cable on the PSU and a free SATA slot on the
Let’s start with the obvious fail-safe procedure: take motherboard. You also need a SATA data cable.
a full system backup. This ensures that in the worst- If you don’t have the space or want to run Linux on
case scenario, you can simply restore this backup and your laptop, consider adding a fast external USB drive –
start again, no damage done. The best tool for the job is if you have the latest USB 3.2 Gen 2 slots, a drive like
Hasleo Backup Suite Free (444o"062"#&o ,*). Choose Kingston’s XS1000 1TB Portable (£70) can deliver
Backup > System Backup to back up all the partitions speeds that match or exceed your internal drives.
required to restore Windows to a working state, and If you can’t justify the expense, but you have the
take the time to click Backup Options > Advanced > space to spare on your Windows system drive (around
Check The Integrity Of The Backup Image Files On 120GB as a bare minimum), you can install Ubuntu on
Completion to verify the backup. Once done, visit the the same the drive in its on partition.
Tools section and click Emergency Disk to create
emergency boot media (DVD or USB flash drive). Prep Windows
With your backup in place, you can start prepping One key consideration when setting up your PC for
your system. First, where do you plan to install Linux? dual-booting is hibernation and Windows’ Fast Startup
On the same hard drive as Windows or another hard feature. When either is enabled, your Windows partition
is off limits to Ubuntu. If you’ve no reason to access any
files on there, all well and good, but if there is data that
BYPASS FAST BOOT you might want access to, you need to perform the
following step to disable hibernation (which in turn
An annoying feature of many PCs is that they’re set up with Fast disables Windows’ default Fast Startup setting).
Boot enabled by default. This isn’t the same as Fast Startup, which Right-click on the Start button, then choose either
affects Windows only, but is a feature set in the UEFI that bypasses Terminal (Admin) in Windows 11 or Command Prompt
the screen that allows you to enter the UEFI or change boot media. (Admin) in Windows 10. When the command prompt
If you’re unable to enter the UEFI for any reason when restarting appears, enter the following command:
your PC, it’s a safe bet you have Fast Boot enabled and you may $ powercfg -h off
need to bypass it – not just to edit the UEFI but also to allow your PC Once done, enter the following command to verify
to boot from the Ubuntu installation media over the page. If this hibernation and Fast Startup are no longer in play:
becomes necessary, click Start > Settings. Navigate to System $ powercfg /availablesleepstates
(Windows 11) or Update & Security (Windows 10), select Recovery Windows now takes longer to boot and shut down –
and click Restart or Restart Now next to Advanced Startup. When the consequence of losing Fast Startup, so ask yourself
the menu appears, navigate to Troubleshoot > Advanced Options > if you really need access to the Windows drive.
UEFI Firmware Settings to boot directly into your UEFI.
UEFI/BIOS considerations
In most cases, your PC should now be good to go with
running Windows and Linux alongside each other.
These days, modern flavours of Linux – including
Ubuntu 25.04 – are designed to play nicely with the
security measures introduced by Microsoft (and swiftly
adopted by hardware manufacturers). That means you
shouldn’t need to worry about disabling your UEFI/
BIOS’s Secure Boot feature, which prevents you from
booting into any operating system that hasn’t been
signed by a security key to help block potential malware
infections in the form of deep-seated rootkits.
The good news is that Ubuntu has supported Secure
Boot for over a decade, although if your PC or laptop is
If Fast Boot prevents you from entering your UEFI/BIOS when starting your PC, you running on an ARM64 chipset rather than the usual
can access it directly from Windows instead. x86/64, you may run into problems. In this case, you
need to boot into your UEFI and disable Secure Boot

36 LXF328 June 2025 www.linuxformat.com


Ubuntu

displaying all the physical disks and drive partitions set


up on your PC. If you have more than one physical disk
installed, look for the one containing drive C. You’ll see
it’s not the only partition on there. In most cases, there
will be at least two additional (and relatively tiny)
partitions, which may reside at the start or end of the
disk. One or more of these may be dubbed ‘recovery
partitions’, and contain files needed to restore Windows
in the event of repair. There’s also a tiny partition,
50-100MB in size, which may be dubbed EFI System
Partition or System Reserved.
It’s this partition that contains the Windows
bootloader, which is required for Windows to boot.
Create a fail-safe backup of your system drive with Hasleo Backup When you install Ubuntu alongside Windows, we’ll
Suite and you can proceed without fear of losing Windows. !!!&##"/"+1,,1),!"/x x4%& % +"
20"!1,"&1%"/)2+ %2+12,/'2*-1,1%"&+!,40
following the PC or motherboard manual’s instructions. bootloader (to boot Windows). By default, it’s added to
If you’re struggling to track it down, look in the Security the EFI System Partition, but in extreme circumstances
section. Disabling the feature won’t affect Windows, it can be stored on another drive.
but it does increase your risk of rootkit infection. For now, all you need to know is that if the tiny
When Microsoft introduced the new UEFI system, partition is labelled EFI System Partition, your PC is set
one side effect was the need to offer a compatibility up for native UEFI use. If the partition is labelled System
layer for older hardware and OSes (including Windows 7 Reserved, it indicates your PC’s UEFI has CSM enabled
and older versions of Ubuntu). This is referred to in the and the drive is currently using the MBR partition table.
UEFI as CSM (Compatibility Support Module). However, GPT is our preferred partition layout for the reasons
newer PCs shipping with Windows 10 or 11 are most described in the box (below), where you’ll also discover Despite what
likely to be configured with this disabled. As Ubuntu has how to convert your drive from MBR to GPT should you Paragon might tell
long supported UEFI mode, you don’t need to enable it wish to follow our advice. Don’t feel you have to – you you, you will be
able to boot back
to install Ubuntu 25.04, so unless it’s switched on in the can happily install Ubuntu 25.04 alongside Windows on into Windows after
BIOS, leave well alone. an MBR-formatted drive but be aware of the warning converting the
about GRUB in the box before you turn the page. drive to GPT.
Partitioning considerations
You probably know how physical disks are divided into
virtual volumes or drives known as partitions. When
setting up a hard disk, you’re prompted to choose one
of two layout methods – known as partition tables. The
older method is MBR (Master Boot Record), while the
newer standard is GPT (GUID Partition Table).
GPT is in most ways superior to MBR, but it’s the
only partition table that UEFI in its native form will
recognise. The primary function of the CSM module
therefore is to preserve compatibility with the older
MBR system. Ubuntu happily works with either system,
but it pays to identify which one is used by your PC.
Take the time to right-click your Start menu and
choose Disk Management. This opens a window

CONVERT WINDOWS TO GPT


If Windows is set up on an MBR- having to manually configure partitions from 444o-/$,+v0,#14/"o ,*š#/""š
partitioned drive, your PC is currently during the Ubuntu install process, we pm-express/. After installation, launch
set to boot with UEFI Compatibility suggest converting your Windows drive the program and select the disk drive
Mode enabled. While you can leave to GPT and switching off CSM in the containing Windows in the main
1%&0&+-) "n1%"/"/"(+,4+&002"0 UEFI before proceeding. program window. Click Convert MBR
whereby major Windows updates wipe To avoid data loss, you need to Disk To GPT. Note the warning message
out the GRUB partition if it’s installed on &+01))1,,) -)",# ,+3"/1&+$1%" – this means that once the conversion
the same drive as Windows itself. partition table for you – and because &0 ,*-)"1"n6,24,+}1")"1,,,1
One solution would be to ensure you this could nuke your hard drive, you into Windows until you enter your BIOS
install GRUB to a different physical disk should first take a complete backup and switch off Legacy or CSM boot.
(which could be the same drive you ,#6,2/&+!,40!/&3"20&+$Hasleo However, once you’ve completed the
install Ubuntu on if you choose to install Backup Suite. switch (including enabling Secure Boot),
it on its own drive). But if that’s not Once done, download Paragon your PC should boot normally – with the
practical, or you don’t like the idea of Partition Manager Community Edition drive layout now converted to GPT.

www.techradar.com/pro/linux June 2025 LXF328 37


Ubuntu

Dual boot with Windows


Your system is backed up, prepped and ready to go. Let’s
get Ubuntu installed alongside Windows.

re you sitting comfortably? Then let’s begin.

A First, insert your Ubuntu install media, then


reboot or start your PC. If your PC is
configured to look for bootable USB or CD/DVD media,
you should see the GRUB menu appear – skip to the
next paragraph. If not, look out for any startup
messages, then press the key to choose which drive
1,,,1#/,*ƒ&#6,2,+)60""+,-1&,+1,,,1&+1,1%"
UEFI/BIOS settings, select that before navigating to the
Boot section and looking for an option to override the
current boot default; failing that, set the first boot
device to your boot media, typically USB or DVD).
When the GRUB menu appears, leave Try Or Install GParted makes it easy to set up your Windows system drive to
Ubuntu selected and hit Enter. Then wait while Ubuntu accommodate Ubuntu – so long as you have plenty of free space.
loads its live desktop environment. Once loaded, your
first job is to quit the Welcome To Ubuntu wizard – just Partition Table. Set the partition table type to match
click the close button, top-right, to exit to the desktop. that of your Windows drive (typically GPT). Click Apply.

Prep your drive Start install process


Click Show Apps in the bottom-left to bring up a list of Now it’s time to install Ubuntu. The hard work has been
apps – click GParted to open the partition editor (click done – now you just have to follow a wizard. Click the
Authenticate when prompted). The next step depends Install Ubuntu 25.04 shortcut on the desktop. When it
on where you’re installing Linux. If you’re planning to appears, leave English selected and click Next. Explore
install it alongside Windows, verify the Windows drive is the accessibility settings if relevant, or click Next again.
selected, then select the biggest partition on the drive. Select the correct keyboard layout – typically English
Right-click this and choose Resize/Move. Use the (UK) – before clicking Next. Choose your preferred
slider to reduce the size of your Windows partition to connection to the internet (wired or Wi-Fi), click Next,
leave enough empty grey space for Ubuntu. Use the then configure said Wi-Fi connection if selected.
Free Space Following (MiB) figure as a guide – look to You may be prompted to download an updated
leave at least 120,000Mib (around 126GB) free for version of the installer if it exists – click Update Now
Ubuntu, but make sure you also leave plenty of free followed by Close Installer. You then need to reopen
space for Windows – at least 20GB. Click Resize/Move 1%"&+01))"/+!/"-"11%"-/"3&,2001"-0"#,/"
followed by the green tick button to apply the change. proceeding to the rest of the installation.
If you’ve fitted a new drive, click the /dev/sda drop-
down menu in the top-right. Identify your new drive by Choose extra packages
its capacity and select it. You should see it is empty, Leave Interactive Installation selected and click Next.
ready to be initialised. To do so, choose Device > Create You get to choose between a relatively bare-bones

INSTALL NEW SOFTWARE


You can obtain apps for Ubuntu from a store. You can browse using the limited version to install (for example, Firefox
variety of different sources – over the selection of categories, or search for offers the Extended Support Release
course of the next few months, you’re apps using their name at the top – as channel as well as access to the beta
likely to encounter terms like AppImage you type, matching apps appear in a and other pre-release versions). Simply
(effectively a portable application), drop-down menu. You can also search click Install and the app is added to your
Flatpak, Snap and packages (with a side by app type – for example, type system and a shortcut placed in the
order of repositories), never mind DEB browser and hit Enter to view a list launcher. The App Center also enables
files and source code. ,#3&))"4"/,40"/0o you to remove previously installed
Ubuntu offers built-in support for Click on a result and you’re taken packages – simply locate the app and
Snap packages (and some Debian 1,&10,4+-$"n4%"/"6,2 +3&"4 click the down arrow next to Open,
packages) via its App Center. This works screenshots, a description and rating, where you’ll see the Uninstall option you
in a similar way to your phone’s app plus in some cases choose which need to remove it.

38 LXF328 June 2025 www.linuxformat.com


Ubuntu

Take the time


to ensure that
Ubuntu will be
installed where
you expect it to
be (alongside
Windows or on its
own drive) before
clicking Install.

Choose a password that’s reasonably strong, but also easy to


remember – you’ll be using it frequently in Ubuntu.

installation (leave Default Selection selected) or one label it’s been allocated) has been detected and will be
with more preinstalled apps (Extended Selection). We configured for Ubuntu 25.04.
recommend the latter as it includes a data backup tool You should also check to see where Ubuntu’s boot
(deja-dup) as well as an office suite (LibreOffice), photo manager – GRUB – is likely to reside. In most cases, it
organiser (Shotwell), email client (Thunderbird) and will be placed on the Windows Boot Manager partition
media player (Totem). Make your choice and click Next. (you can confirm this by checking that it says ‘Used for
Tick both boxes to install recommended proprietary boot/efi’), even if you’re installing Ubuntu on its own
software, including drivers and support for additional drive. All other partitions should remain unchanged.
media formats that isn’t open source, then click Next. Once you’re happy that Ubuntu has detected your
chosen disk or partition, click Install. Now sit back as
Configure dual boot Ubuntu installs itself to your PC alongside Windows.
We now reach the crunch section – you’re asked ‘How
do you want to install Ubuntu?’ As you’ve done the Post-install steps
%/!4,/(,#0"11&+$2-6,2/!&0(+!-/1&1&,+)6,21 Once installation completes, you’re returned to the live
accordingly, you can leave Install Ubuntu Alongside desktop. Time to test your new install – click the button
Windows Boot Manager selected and click Next. in the top-right corner to reveal a pop-up menu. Click
You’re given the option of encrypting your hard the power button and choose Restart, then click
!/&3"x//")6+" "00/62+)"006,2}/"20&+$)-1,- Restart again. When prompted, remove your boot flash
and have sensitive information to protect. Show drive or DVD and press Enter.
Advanced Options reveals even more encryption and All being well, you should be greeted with the GRUB
filesystem options, none of which are needed for a menu, but this time it contains different options. By
simple dual boot setup, so leave No Encryption selected default, Ubuntu is selected and if you don’t use the
(or choose to encrypt your drive with a passphrase and arrow keys to change boot option, it automatically
follow the prompts) before clicking Next again. starts after a 10-second delay. You should also see
The next screen prompts you to set up your Ubuntu Windows Boot Manager as an option – selecting this
user account. This will be used to log into Ubuntu, plus loads your existing Windows installation as normal.
you’ll need to enter your account password whenever Going forward, GRUB will always default to the first
6,2+""!")"31"! "001,1%",-"/1&+$0601"* option (Ubuntu) in the list – we’ll explore how to change
(such as when installing new software). With this mind, this in the final pages of this feature. For now, let Ubuntu
choose a password that’s strong, but easy to remember. load and click your username when it appears at the
You’ll also see Ubuntu give your computer a name to login menu. You’ll find yourself at the desktop where
identify it on your network – this can be changed as you’re greeted by a post-setup menu. Click Next.
required. Leave Require My Password To Log In ticked Step one is to agree (or not) to sharing system
and click Next. The penultimate step is to confirm your !14&1%1%"2+121"*o,2}/"1%"+-/,*-1"!1,
time zone, then click Next again. explore the Ubuntu App Center, which is where you’ll be
able to add new programs to your Ubuntu installation.
Confirm dual boot setup Click Open App Center or click its shortcut – then find
You are now given a detailed summary of your out more about what’s on offer in the box (opposite).
0"12- %,& "0o%"*,01&*-,/1+11%&+$1%1
/".2&/"0 %" (&+$&01%"/1&1&,+00" 1&,+n4%"/" Stay up to date
6,2}))0"""5 1)64%"/"2+12-)+01,&+01))&10")# Like all OSes, staying up to date with the latest features,
alongside Windows. fixes and security patches is essential. Ubuntu prompts
Ubuntu (and Linux in general) labels disks as sda, you for updates via the Software Updater app
sdb+!0,,+n4&1%-/1&1&,+01%"+$&3"+)")002 % (accessed via the Launcher). You can review the
00!9, sda2 and so on. The key thing is this: if you’re updates, or just click Install Now, enter your password,
installing Ubuntu on the same drive as Windows, you and keep things running smoothly. While updates are
should see that Ubuntu 25.04 is listed on your primary being applied, click Details to reveal a window similar to
drive (sda) as the final partition (so sda5 in our the Windows command prompt (the Linux terminal)
example), marked as ‘Created and formatted as ext4 displaying details about the updates being downloaded
used for /’. If you’ve installed a dedicated hard disk for and installed. Once complete, click OK, then turn the
Ubuntu’s use, you should find that sdb (or whatever disk page to start exploring your new desktop in detail.

www.techradar.com/pro/linux June 2025 LXF328 39


Ubuntu

Take the desktop tour


Familiarise yourself with Ubuntu 25.04 and discover how to
regain control over the boot menu.

fter logging into Ubuntu proper for the first apps and attached drives. Several key apps are pinned

A time, you’re greeted by a desktop both alien


and familiar. A Linux distro’s desktop is one of
here by default, including Firefox, Thunderbird, the
Rhythmbox music player and LibreOffice Word.
the key ways that it marks itself out from other distros, To view a list of all installed apps on your PC, click
and Ubuntu’s Gnome is one of the most striking. the Show Apps button in the bottom-left corner to
There’s no attempt to replicate the layout found in open the Launcher. When you open an app from here,
Windows or Mac OS, but that doesn’t mean it’s hard to you’ll see its icon also appear in the Dash beneath the
navigate or master. The annotation (opposite) provides pinned apps list, complete with a red dot next to it.
a quick look at its key elements, but there’s nothing %&0&+!& 1"01%"--&0 2//"+1)6,-"+o+-&++"!--
scary here. (If you really can’t get on with the desktop, icons vanish the moment the app is closed, so if you
you can switch to another – see the box below). find yourself using an app frequently, right-click the
Dash icon when it’s open and choose Pin To Dash
I get around (conversely, right-click unused apps and choose Unpin
Your eye will be drawn to the Dock (sometimes called to remove them and clear space for others).
the Dash), a convenient place to quickly open favourite When switching workspaces or opening the
Launcher, you’ll notice a search tool at the top of the
window. This is more than a simple app search tool; you
TRY A DIFFERENT DESKTOP can use it to find files, folders, settings (via the Settings
app – see below) and even Unicode characters.
If you can’t get on with Ubuntu’s Gnome desktop for any reason, you When you open an app, you’ll find it offers a
can always switch to another. One option is to try a different flavour #*&)&/&+1"/# "1%1&0,#1"+3&/12))6&!"+1& )1,
of Ubuntu, which basically pairs Ubuntu with a different desktop &10&+!,40,/  ,2+1"/-/1o,*"--0/"
environment like KDE (Kubuntu) or Cinnamon (Ubuntu Cinnamon) – completely self-contained within their own windows,
visit %11-0pšš22+12o ,*š!"0(1,-š#)3,2/0 for details of these. while others place menu items on the menu bar at the
Trying a different flavour is only practical if you’ve logged into top of the Gnome desktop. As you’d expect, windows
Ubuntu and decided quickly that the Gnome desktop isn’t for you. If can resized, dragged and tiled – drag them to the
after a few weeks or months you decide you don’t like Gnome, it’s edges of the screen to snap horizontally or vertically,
technically possible to switch to another desktop without ditching ,/20"("6,/!0%,/1 210ƒ&+!,40("6//,4("60„
your current Ubuntu install. In fact, you can install multiple desktops to tile horizontally, maximise or reduce to previous size
and switch between them at will. and position.
New desktops need to be installed from the terminal, not via App
Center. For example, to install the Windows-like LXQt alongside Browse files and folders
+,*"n,-"+1%"1"/*&+)ƒ1/))1„+!16-"1%"#,)),4&+$p Gnome’s default file manager will feel instantly familiar,
$ sudo apt install lxqt from the shortcuts displayed in the left-hand pane to
Follow the prompts – once installed, log out of Ubuntu. After the way files and folders can be displayed as icons or
clicking on your login name, note the settings button in the bottom- &+)&01o,2 +,-"+*2)1&-)"#,)!"/0&+10ƒ1/)„
right – click this and select LXQt Desktop to switch to LXQt. and access network shares from other machines, too.
You can also access non-Linux drives like your old
NTFS, exFAT and FAT32-formatted disks – simply
double-click its shortcut on the left to mount the drive
and gain read/write access to its contents.
Drag files and folders from window to window or
11,1n4&1%1%"0*"/2)"00,+,1%"/,-"/1&+$
systems (so files are moved by default between folders
on the same drive unless you hold Ctrl). Right-click for
even more options.
A quick note on how Linux organises files: you’ll be
allocated your own ,*" folder, inside which all your
personal files can be stored. While it’s technically
possible to browse to other folders on your drive –
including system ones – you won’t necessarily want to
do this, particularly while you’re still acclimatising to a
You’re not stuck with Gnome if you’d like to try something different or closer to Windows. new operating system. To do so later, click inside the
Address Bar at the top of the window, where you’ll be

40 LXF328 June 2025 www.linuxformat.com


Ubuntu

greeted by the full path (such as /home/username), Navigate your new desktop
which you can manually change to whatever you wish.
1 4 5
Customise your setup
When you open the quick-access menu, you’ll see
shortcuts for managing networks, changing volume,
switching power mode and toggling the Dark Style 2
desktop theme. Above the volume slider are four icons,
including one for triggering screenshot capture (or use
the Print Screen key) and accessing the Settings tool. 6
This works in a similar way to the Windows settings
tools – browse the categories on the left, divided into
five sections. Work through these to tailor Ubuntu (and
Gnome) to your needs, whether configuring hardware,
setting desktop preferences or connecting online
accounts. Press F1 at any point to open a help
document describing the currently selected category. 3

Terminal access 1
Switch workspace
Gnome supports multiple virtual desktops 4
Calendar
Click here to display the notifications
It’s easy to forget, but Linux remains a command-line- it dubs workspaces. Click this switch to add new panel (complete with Do Not Disturb switch) as
based operating system. Gnome sits on top of the workspaces, switch between them and access well as a calendar and list of any events due.
underlying OS, and it’s added more and more features Ubuntu’s search tool.
to make it possible to minimise (if not eliminate) your Quick-access menu
Dock 5 Click the icons in the top-right corner
exposure to the command line. Still, there will be times 2 The equivalent of the Windows taskbar, to access a series of shortcuts, including the
when you need to access the underlying shell. this houses shortcuts to favourite apps (which Settings and all-important Power buttons.
In most cases, you can do this from the comfort can be pinned), plus drives and open windows.
File manager
,# +,*"0&*-)66,-"+&+$1%"1"/*&+)n1,,)1%1
Launcher 6 Ubuntu’s default File Manager works in
gives you direct access to the underlying OS. You can 3 The Windows Start menu! Click here a similar way to Windows’ own File Explorer.
access the terminal via the Launcher, but the quickest to bring up a list of shortcuts to all installed Click inside Home to view the full path to the
461,,-"+&1&04&1%1%"1/))10%,/1 21o ĥ­Æü­äÐĬƧǎ‡ĬÐǎijéÐǎĬЭĨÆéǎÅķijijČĆǏijČǎħķìÆüÿőǎ currently selected folder.
The terminal isn’t just a place to go when there’s no locate an app.
other option, but can be a more efficient way to get
things done. For example, the following option quickly would prefer that GRUB remembered your last choice,
finds, downloads and installs the latest updates: then you’ll need to edit a system file – and that involves
$ sudo apt update && sudo apt -y upgrade using the terminal. First, you need to open the file in
When you perform the update check, you’re the nano text editor:
prompted for your password; that’s because updating $ sudo nano /etc/default/grub
Ubuntu requires elevated (administrator) access, Now change the GRUB_DEFAULT=0 so it reads
4%& %&04%11%"sudo command does. You don’t need GRUB_DEFAULT=saved , then add the following line
to enter your password every time you use sudo, but beneath it:
you will be prompted at set intervals. You’ll also be GRUB_SAVEDEFAULT=true
prompted for your user password when attempting to + "!,+"n-/"001/)n1%"+-/"004%"+
do certain things from the desktop (including running prompted to save the file. Finally, you need to issue the
the update check) – it’s not an annoyance, but a vital following command:
security feature that ensures nothing can get at the $ sudo update-grub
deep parts of your system without your explicit say-so. Going forward, GRUB will remember your last
choice and make that its default.
Edit GRUB menu
By default, GRUB will always boot into Ubuntu unless New features in Ubuntu 25.04
you specifically select Windows Boot Manager. If you One advantage of installing this brand-new version
,#2+12&01%16,2}/"+,4,+1%"#011/ (1,+"4
and improved features, with major new versions rolling
out every six months. One of Ubuntu 25.04’s most
visible new features is a new Wellbeing section in
Settings – not only can you use it to track your
computer usage, but you can also configure it to
prompt you to take regular eyesight and movement
breaks. It can even be used to set screen and daily
limits, too.
Other improvements are outlined in our full review
(see page 22) – these features won’t stand out
necessarily if you’re new to Ubuntu, but they’re proof
that the operating system is constantly evolving and
There’s no need to be afraid of Linux’s command line – the terminal improving, making it your perfect companion (and
lets you interact with it from the comfort of your desktop. eventual successor) to Windows.

www.techradar.com/pro/linux June 2025 LXF328 41


Pi USER
Custom OS build Les Pounder
works with groups

system debuts
such as the
Raspberry Pi
Foundation to help
boost people’s
maker skills.

One size does not fit all, especially for embedded CARE IN THE
systems in industrial situations. COMMUNITY
ecognising the need in industry

R
%"9;1%&/1%!6,#1%"
#,/%&$%)6 201,*&0"!2&)!0,#&10 Raspberry Pi has been and gone,
Raspberry Pi OS, the Pi Foundation +!4"+,4"+1"/1%"4(4/!
is introducing/-&v&*$"v$"+n+)1"/+1&3" teenage years! Raspberry Pi has
1,,)1,pi-gen, 1,%")-$"+"/1"%&$%)6 $/,4+2-),10&+ "&12/01,+1,
201,*&0"!0,#14/"&*$"0#,/1%"&o 1%"0 "+"o +1%""/)6!60n4"
%"/"/""5&01&+$1%&/!v-/162&)! 04"$"/20"/0ƒ 40,+",#
0601"*0n21&+1/,!2 &+$+&+v%,20",+" 1%"*„$/0-&+$#,/1%" %+ "1,
"+)"00-"//6&1,%3"0&+$)"0"1,# $"11%"&/%+!0,+,/!o%&0
0,2/ "01%1 +"2-!1"!n&*-/,3"!,/ 40/"-)& 1"!!2/&+$1%"
#&5"!&+0&+$)"-) "+!0,3&))"1,)) -+!"*& +! %&- /&0&0,#
&**"!&1")6n4&1%,21!")6o :8:8v:8::n4&1%0-"//6&0
%"+"40601"*&+1/,!2 "0-/,#&)"0n "&+$0//"01,&)"1--"/o
&*$")6,210+! ,+#&$#&)"0o/,#&)"0 21 (1,1%"-,&+1o +1%,0"
CREDIT: Raspberry Pi Foundation

,21)&+"1%""&+- ($"0+!&+01))1&,+ "/)6!60n1%" ,**2+&16*!"


-/, "001%"&*$"4&))20"o *$")6,21&0 1%"0-"//6&4%1&1&0n+!
1%"#&)"0601"*+!-/1&1&,+0"12-o%" ,+#&$ 0 0&1%"/"n+")!"/&+1%"
#&)"&01%"1"51  #&)"01%1,21)&+"))1%&0+! 0-"//6& ,**2+&16n 
%,4&10%,2)!"!"-),6"!,+1%"%/!4/"o 4,+!"/4%14"4&))0""&+1%"
%"/"}0+2*"/,#-/"2&)1+!1"01"! +"51!" !"o"4%/!4/"n
"5*-)"0n02 %0)&*n*&+&*)0601"* 02/"n214%1,211%"
2&)!n+!"(&,0(n4%& %-2))0&+%/,*&2* ,**2+&16l%" %&)!/"+
+!6)+!&+), ("!v!,4+0601"*o &+! 4%,$/"42-4&1%0-"//6&
,21*,/"%"/"p%11-0pšš&1o)6š)5#;:@$"+ We like to build it, build it. /"+,4!2)10n&+0-&/&+$,1%"/0
1,1("1%"&/#&/0101"-0&+1,
,!&+$+!*(&+$o214%"/"

PoE+ injector Best Pi ever!


/"1%" )20n 0+!
0-"//6 *01%1"5&01"!
 (&+1%""/)6!60,#&l%"
-+!"*&  20"!*+6,#1%"
Power to the Ethernet. Awards all round. )201,0%21!,4+n+!0,*"
+"3"//",-"+"!0/"01/& 1&,+0
,!$6-,4"/v,3"/v1%"/+"102--)&"0" %"0-"//6&:;=8*& /, ,+1/,))"/ 4"/")&#1"!o,44"%3"0)&--"!
$,+"j%" ,2+!1&,+%001/1"!02--)6&+$ %04,+1%":8:<ƒ4"/"*"*"/1%16"/„  (1,|-/"v0-"//6&}1&*"0
/")&)",&+'" 1,/0#/,*& /, %&-o%" *"!!"!,*-21&+$ ++,31&,+ +!4"/&0(),0&+$))1%14"
-)20&+1%"+*"*"+0&1 +%+!)",1% 4/!o%"4/!/" ,$+&0"01%"& %3"$&+"!&+1%"0"9;6"/0o
1%",)!"/9;+!1%":=!"*+!0,#1%" ,2+!1&,+}0 ,**&1*"+11, /"1&+$0" 2/"n %"+ #&/0101/1"!4,/(&+$
@8:o;#š101+!/!0o &+!,21*,/"p%11-0pšš %&$%v-"/#,/*+ "0,)21&,+0#,/!"*+!&+$ for&+25 ,/*1n 4/,1"0%,4
&1o)6š)5#;:@-," &+!201/&)--)& 1&,+0o))4"))!"0"/3"!j /"-,/10+! *""1&+$0
!"1&)0o21&1%0""+0,*"
Purple cables
CREDIT: Raspberry Pi Foundation

not included. 1&*"0&+ " 4010%,4


ƒ-/&):8:<j„+!"+',6"!1%"
,*-+6,#1%" ,**2+&16o }!
)&("1,0""*,/""3"+10+!
*""1&+$0#,/&+25+!1%"
0-"//6&&+:8:=o21
1,!,1%1n4"+""!1,01/1
,/$+&0&+$1%"*n,/&+0-&/"1%"
next generation to do so!
Now with added awards!

www.techradar.com/pro/linux June 2025 LXF328 43


REVIEWS Linux distribution

Twister OS 3.0.2
Les Pounder hasn’t seen Twister, or the sequel, Twisters, but he has
played Half-Life, live on air using a Raspberry Pi and Twister OS.
t has been some time since
IN BRIEF
The latest
I we used Twister OS, and we
haven’t used it with the
release of Raspberry Pi 5, so the recent release
Twister OS is of Twister OS 3.0.2 was welcome.
geared towards "1"01"!&1,+&=9> /2++&+$
the Raspberry from an NVMe SSD. Installation was
Pi 5 and 500, /""7"20&+$Raspberry Pi Imager
offering a slick +!,,11&*"0/"46#01"/1%+
and fully- Raspberry Pi OS, despite them both
featured sharing a Debian foundation.
experience Twister OS is all about choice. You
#,/1%,0" can choose your theme, from the light
looking for an or dark Twister OS themes to many
alternative to versions of Windows and a nod to
the official o" %,0"1%")&$%1!"0(1,-+! Twister OS’s themes include Windows and Mac doppelgangers. We prefer the default theme.
Raspberry Pi it was a great experience. It looked
OS. Coming good and the layout saw the Applications menu in the one snag: there was no preview window to frame our
with different top-left, which also has a section for settings such as shot. However, the camera was able to capture an image
app stores and display configuration. Wi-Fi, Bluetooth and so on are using rpicam-jpeg and the quality matched what we have
easy-to-use &+1%"1,-v/&$%1n'201,3"0,*"),3")6v),,(&+$Conky already tested with Raspberry Pi OS.
tools to tweak graphs. At the bottom is a plank dock, with a selection The GPIO is usable; we tested using the Python
the OS for extra ,#--01%16,2/"#/""1,14"(n&+ )2!&+$Chromium library GPIO Zero and built a simple test project. More
performance, Media Edition. Geared for DRM-protected streaming advanced uses of the GPIO depend on requirements–
Twister OS services such as Netflix, Hulu and Disney+, it works well. using lgpio requires a little effort, but is possible.
&0$/"1 On the desktop are two installers for PiKISS and The beauty of Twister OS is its simplicity. It is primarily
alternative OS. Pi-Apps. The former is a terminal-based application to focused on providing a beautiful and slick experience to
install extra apps and tweak the OS. You can also install the end user, but it doesn’t sacrifice on features. Sure the
and play older PC games, such as Half-Life, using it, as camera issue is awkward, but we can work around it.
we demonstrated on an episode of Tom’s Hardware, The This could be your daily driver. It does most of what
Pi Cast. Underlying the OS is Box86, Box64 and Wine, Raspberry Pi OS does, but looks like a ‘grown-up’ OS.
offering the ability to play older games. You do need legal It did feel a little sluggish, even running from a Pi 5
copies of them, including the Steam installation files. with NVMe SSD. We went into raspi-config, enabled PCIe
Pi-Apps and
PiKISS are Gamers are well catered for, with emulators for classic Gen 3 speeds and rebooted. We then confirmed it was
included with retro consoles, and even the Nintendo GameCube and enabled by using dd1,/"!1%""!/&3" ,+1"+101,
Twister OS and Wii. Pi-Apps is an app store for the Raspberry Pi and it /dev/null. Read speeds were 892MB/s but the OS still
they bring two provides an exceptionally easy means to install apps for felt a little slow to react. But we are sure this will be
extremely easy
means to install coding, gaming, illustration, office and even 3D printing. smoothed out as new releases are made. Twister OS is a
applications for We tested the official Raspberry Pi Camera Module 3 fun and very capable OS that we could easily use for our
the host OS. and it worked out of the box with Twister OS, but with next Pi project, or even as a lightweight desktop.

VERDICT
DEVELOPER: Pi Labs
WEB: https://twisteros.com
LICENCE: Mixed

FEATURES 9/10 EASE OF USE 9/10


PERFORMANCE 8/10 DOCUMENTATION 6/10

Twister OS is a solid alternative to Raspberry Pi OS that we


would use in a heartbeat, despite its current flaws.

Rating 8/10

44 LXF328 June 2025 www.linuxformat.com


Compute add-on REVIEWS

Modulo 5 Basic
Is it a Pi? Is it a Pine? No, it’s Les Pounder waving the latest Pineboards
expansion around. Stop it Les, put it down!
oland’s Pineboards has a
IN BRIEF
At a glance, this
P history of beating Raspberry
&1,1%"*/("1o"041%&0
is a Raspberry 4&1%&+",/!0} 1/&3"0jn4%& %
Pi 5, but delving brought PCIe-based storage (and AI
deeper, we can accelerators) to the freshly released
see that there Raspberry Pi 5. Its latest Modulo line
are many key &0#,/1%"&,*-21",!2)"=+!<n
differences +!/&+$0&=v)&(""5-+0&,+o
between the At first glance, you’d think this was a
two. Chiefly, the Raspberry Pi 5. But look a little closer,
CM5 PCB in the and you’ll realise that there are several
centre of the differences between the two. The CM5
board, which PCB in the centre of the board has a
has a very very similar layout to the Raspberry Pi 5
similar layout to x1%",n9+!/"&+0&*&)/
the Raspberry locations – but the eMMC (if your CM5
Pi 5. has it) is on the underside of the CM5.
The other differences are the
location of the camera and display
connectors, moved behind the USB There’s something missing from this Raspberry Pi 5… Hang on!
ports and the ports for the RTC battery,
#++!!"2$o3"/61%&+$")0"&01%"0*"0,+ application. On the Modulo 5 Basic, flip the switch to
Pi 5. This means the Modulo 5 Basic can be used inside Flash Mode, then connect to your PC via the USB Type C
1%",##& &)&= 0"q,1%"/ 0"0*6/".2&/"14"(&+$o cable. Press the power button twice and the CM5
The PCIe connector is in the same place as the appears as a USB device. All you need to do now is open
Raspberry Pi 5 and that means we can use Pineboards’ Raspberry Pi Imager and flash your chosen OS.
1/&3"j+,,/+,1%"/o: #,/#2)) " "+ Using the GPIO on the Modulo 5 Basic is just as easy
;o8"5-"/&"+ "o"1"01"!&1+!6"0n4"$"11%"0*" as on a Raspberry Pi 5, and it comes with the Python
performance as a regular Raspberry Pi 5. +!9&002"01%1)0,# "1%"&=o"%!+
Technically, the official Raspberry Pi 5 Active Cooler blinking and fully controlled from a push button with just
&0 ,*-1&)"n216,2+""!1,20"1%"&+ )2!"!,!2),= a few lines of the GPIO Zero Python 3 code. Adding a
0& v ,*-1&)"-)01& -)2$0o"1/&"!1,-211%" 1&3" HAT to the GPIO will vary greatly depending on software
cooler on the Modulo 5 Basic without the plugs and it support. Newer HAT+ boards will work, but right now,
was just too thick, because the CM5 sits on top of the we’ve only used HAT+ boards that connect to the PCIe
connectors, raising it a few millimetres. You can get one connector, not the GPIO. Using something such as
side on, but the other side tilts upwards, with the plastic &*,/,+&}05-),/"/ 1/,4,2)!/".2&/"0&$+&#& +1
/1+1)&0&+$)6 ),0"1,1%",!2),=0& o,+}11/6 workarounds given the changes to how the Raspberry
1,#,/ "&1j"!&!+!4"|0)&$%1)6}4/-"!1%"o Pi’s GPIO now works.
It bent back OK, and everything works. If you want
cooling for your CM5, use the official Pi 5 Active Cooler
with the Modulo 5 Basic plugs. Or use the CM5 passive
VERDICT
cooler (it comes with the official CM5 development kit) DEVELOPER: Pineboards
,/1%""  ,,)"/n4%& %/&+$0 1&3" ,,)&+$n#2))6 WEB: https://pineboards.io
controlled by the OS via the fan connector. PRICE:[<Aƒ^;@„
%"0-"//6&*"/0+!+"4,2 %&0-)6
:o84,/(4&1%1%",!2),=21 "001,1%" ,++" 1,/0 FEATURES 8/10 EASE OF USE 7/10
&01&$%1n"0-" &))6&#1%"=&0)/"!6&+0"/1"!o" PERFORMANCE 8/10 VALUE 7/10
used a plastic spudger to unlock and lock the plastic
tabs. After that, we told the Raspberry Pi CM5 where to A good compromise of the Raspberry Pi 5 form factor.
find our camera and screen. You see, the CM5 does not ?ijǏäìŊÐĬǎķĬǎijéÐǎy­ĬĥÅÐĨĨőǎvìǎůǎÐŐĥÐĨìÐĆÆÐƨǎÅķijǎŋìijéǎ­Ćǎ
21,*1& ))6!"1" 11%"!"3& "0x6,2+""!1,!!"51/ ķĥäĨ­ÌЭÅÿÐǎVůǎ­ijǎìijĬǎéЭĨijƧ
lines to /boot/firmware/config.txt for it to find them.
Flashing an OS to the CM5 via the Modulo 5 Basic is Rating 8/10
really simple. On your PC, run Raspberry Pi’s RPiBoot

www.techradar.com/pro/linux June 2025 LXF328 45


TUTORIALS Pi Pico W

PI PICO W

Frost-free fruit
with a Pi Pico
Les Pounder grows strawberries in his garden, but now he has planted a
Raspberry Pi Pico, hoping for a fresh crop of raspberries.

n this tutorial, we’re building

I something to keep our


strawberries safe from frost.
0&+$ 991"*-"/12/"0"+0,/n+
OLED display and a Pico W, we will get live
OUR temperature data displayed on the screen
and an alert to a smartphone using Ntfy.sh.
EXPERT The circuit for this project is broken
Les Pounder down into two parts. The input is our DHT11
is associate temperature and humidity sensor, which
editor at Tom’s connects to the Pico’s 3.3V output, GND
Hardware and a and the data pin to GP2. The OLED display
freelance maker ,++" 101,;o;n +!1,ƒ 8„
for hire. He and SCL (GP1). See the high-res diagram,
ŹȍȶnjɽࢳŔŹȶʠʋǠǫɽ available in the download for this issue. The build for this project can be easily transferred to a PCB, Veroboard
ŔƎʽơȥʋʠɭơɽŔȥƎ and so on, and integrated into a 3D printed case.
projects at Coding the project
http://bigl.es. We’re going to assume that you have already installed i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000)
Thonny for the Raspberry Pi Pico. If not, Tom’s oled = SSD1306_I2C(128, 64, i2c)
YOU NEED Hardware has a guide to help: www.tomshardware. Create an object, sensor, to represent the DHT11
com/how-to/raspberry-pi-pico-setup/. temperature sensor:
Pi Pico W Open Thonny and connect the Pico to your sensor = dht.DHT11(Pin(2))
or Pico 2 W machine. Go to Tools > Options and select the To get the Pico online, create an object, wlan, and
Breadboard Interpreter tab. Set the interpreter to MicroPython then turn on the Wi-Fi, before connecting to the Wi-Fi
DHT11 (Raspberry Pi Pico) and set the Port to match the access point:
temperature location of your Pico. Click OK. Thonny now connects wlan = network.WLAN(network.STA_IF)
sensor to the board and we can start writing code. wlan.active(True)
I2C OLED Click on Tools > Manage Packages and search for wlan.connect(“YOUR WIFI AP”, “YOUR WIFI
128x64 pixel micropython-ssd1306. Click on install and Thonny PASSWORD”)
display copies the files to the Pico. Add a pause between requesting the connection
7x M2M Create a new file (File > New) then import a series of and then checking the connection status:
jumper wires libraries. The first is DHT, for our sensor, time to control time.sleep(2)
Code: the pause, machine’s Pin and I2C classes for the GPIO, print(wlan.isconnected())
https://bit.ly/ 9;8>#,/,2/0 /""+n+"14,/(#,/&v &n+! Using the oled object, blank the screen:
lxf328code finally urequests to send data from the Pico: oled.fill(0)
import dht oled.show()
import time Using a conditional test, check if the Wi-Fi has
from machine import Pin, I2C connected successfully. If it has (True), update the
from ssd1306 import SSD1306_I2C OLED screen to show ‘Wi-Fi Connected’ in the top-
import network )"#1ƒ8n8„,#1%"!&0-)6o #1%"&v &#&)0n!&##"/"+1
import urequests as requests message appears. The oled.show() line updates the
Next, tell the Raspberry Pi Pico where the OLED display with the correct text, then it pauses for five
screen is connected. It uses I2C for a connection, so seconds before the main body of code starts:
we have to specify the GPIO pins, and then create an if wlan.isconnected() == True:
object, oled, to represent the display: oled.text(“Wi-Fi Connected”,0,0)

46 LXF328 June 2025 www.linuxformat.com


Pi Pico W TUTORIALS

else:
oled.text(“Disconnected”,0,0)
oled.show()
time.sleep(5)
Inside of a while True (forever) loop, we clear the
OLED display before taking a reading using the DHT11,
followed by a short pause:
while True:
oled.fill(0)
oled.show()
sensor.measure()
time.sleep(1)
Create two objects, temp and hum, and in them,
store the current temperature and humidity reading,
rounded to two decimal places:
temp = round(sensor.temperature(),2) message is told the name of the topic, and the data we The circuit has
hum = round(sensor.humidity(),2) wish to send (in this case the current temperature). The two parts: the
input (DHT11)
Print values to the Python shell for debug purposes: headers section is used to set the title, ‘FROST and the output
print(temp, hum) ALERT!’, and the priority (five being the highest). Tags (OLED display),
The OLED display displays the live data. Starting are used to inject an emoji into the message for easy with only seven
from the top-left, we print ‘Temperature’, then moving identification. Note that the temperature of 25 is used wires needed
ãČĨǏÆČĆĆÐÆijìČĆƧ
!,4+9>-&5")0n4"-/&+1| 2*&!&16}p for testing; set this lower for your trigger temperature:
oled.text(“Temperature: “,0,0) if temp < 25:
oled.text(“Humidity: “,0, 16) requests.post(“https://ntfy.sh/garden_shed”,
To insert the values, we use the oled.text() function, data=(str(temp)+”C”),
but pass the data as strings, not integers/floats as it headers={
causes errors. The position of data is passed using X, Y “Title”: “FROST ALERT!”,
coordinates. The temperature is on the first line, so we “Priority”: “5”,
set the Y value to zero, but the X value (horizontal) is “Tags”: “thermometer”,
95, giving it space from the ‘Temperature’ text. The })
same practice is applied to the humidity data: If there is no frost, the else condition uses pass to
oled.text((str(temp)+”C”), 95,0) ),,-n"#,/"1%" ,!"-20"0#,/,+"%,2/ƒ;n>88
oled.text((str(hum)+”%”), 85, 16) seconds). Then the process repeats itself.
oled.show() Save the code as main.py to the Pi Pico W. This
Now let’s add notifications on our smartphone using /2+01%" ,!"4%"+1%"& ,&0-,4"/"!2-o,4"/
Ntfy.sh. To use it we need an Android or Apple device. cycle the Pico and watch the OLED display. You should
Download the app from the app store and open it. We see ‘Wi-Fi Connected’ followed by the current
need to subscribe to a topic, so click on the + in the temperature and humidity. If you left the temperature
bottom-right. In the Subscribe To Topic dialog, set the at 25°C, the alert should appear on your phone.
topic name. We used ‘garden_shed’, but remember
Ntfy’s app is very
that this is a public topic, so anyone can see the output. easy to use and
Make the topic name unique and click Subscribe. The you will soon
topic page appears, where all the messages for our be sending data
topic are archived. Go back your phone’s home screen from your Pico W
ijČǏőČķĨǎĥéČĆÐƧ
– that way notifications appear when we test the code.
Back to the code on the Pico. A conditional test is
used to read the value stored in the temp object. If
1%"1"*-"/12/"!/,-0"),41%&03)2"n20&+$/".2"010
we construct a message that is sent to Ntfy.sh. The

HANDY NTFY.SH REFERENCE GUIDES


Ntfy.sh has become one of our go-to Raspberry Pi camera or webcam means to gain entry, but the door is locked. The
tools for notifications. Sure, we love we can send notifications if a sensor is Actions option in the header means we
MQTT, but Ntfy.sh is much easier to use. triggered. To attach an image, we add can trigger an event to happen. In this
The basic guide on how to publish a Attach to the headers and then pass the case, the dog is let in after calling the
message is at https://docs.ntfy.sh/ path to the image. Note that you need doorbell’s API via HTTP: https://docs.
publish/ and from there we can learn the absolute path, be it a local file or an ntfy.sh/publish/#action-buttons/.
how to send notifications via Python, image from the internet. Finally, if you want to use cool emoji,
JavaScript, Go and even cURL. We’ve What if we want to action something Ntfy.sh has a list that you can crib from.
even managed to use it with Node-RED! when a notification arrives? The Ntfy.sh Just copy the text to the project code
The guides also explain how to add example is a dog ringing a doorbell. The and the emoji will be sent with your
+&*$"n0,20&+$Ntfy.sh with the notification tells you that the dog wants message: https://docs.ntfy.sh/emojis/.

www.techradar.com/pro/linux June 2025 LXF328 47


IN DEPTH AMD DNA

The RX 9070
XT is based
on AMD’s
new RDNA 4
architecture.

Inside the

+"4$"+"/1&,+,# 0&0%"/"o*1"2/$"+"),$&01
Jarred Walton-& (0-/11%"#*&)6%"/&1$",#<o

MD’s brand new Radeon RX 9070 and "1}0 %" (,211%"0-" &#& 1&,+0#,/}0<

A A8?8,1%0%&--"!,+>1%/ %o
%"</ %&1" 12/"+!!",+
A888v0"/&"0 04"/"-/1&))6
0n1)(,21/ %&1" 12/)2-!1"0n+!!&$&+1,))
1%",1%"/!"1&)0o
,/#2))0-" 0 (see the table, page 51) 1%"A8?8
/"3")"!1:8:=n"5 "-11%"64"/"+}1-/1,# ,)2*+0%,2)!"#2))6 2/1"o"}/"/"0,+)602/"
}0("6+,1"o%"0"4&))$,2-$&+011%"3&!& 1%"/"4&))"1/&**"!v!,4+A8>820&+$1%"
) (4"))=8v0"/&"0 0+!1%" +1") 0*"3&<@!&"01%"A8?8 /!0n'2014&1%#"4"/
11)"*$"/ v0"/&"0 0o&("3&!&}0 0ƒ,*-21"+&10„+!*"*,/6 ,+1/,))"/0"+)"!o
=8v0"/&"0$/-%& 0 /!0n}0<)2+ % "),41%1n1%&+$0$"1*2/(6o
0""*01,%3"""+!")6"!n1%,2$%-"/%-0#,/ ,,(&+$11%"A8?8n&120"0#2))6"+)"!
!&##"/"+1/"0,+0o 3&<@!&"1%1&+ )2!"0><<0o,*&+"!
#6,2),,(1$/-%& 0 /!3&)&)&16/&$%1+,4n 4&1%:oA? 7,,01 ), (+!:=>v&1*"*,/6
4%1" ,*"0&**"!&1")6 )"/&01%13&/12))6 &+1"/# "4&1%:8 š0 >n1%",1%"/0-" 0
"3"/61%&+$&00,)!,21,/n11%"3"/6)"01n0"/&,20)6 *,01)6 ,*"#/,*01/&$%1*1%"*1& ) ) 2)1&,+0o
,3"/-/& "!o 10""*0 )"/"!1%"?888v0"/&"0 %"A8?8&0*,01)61%"0*" ,+#&$2/1&,+n'201
0#/,*0%,-0%")3"0&+" "*"/+! +2/6o 4&1%=>0+!:o=: 7,,01 ), (x0201+1&))6
+)61%"),4"/1&"/?>88+!?>88/"01&)) ),4"/1%+&10&$$"/0&)&+$n1%,2$%4"}))%3"1,4&1
&+01, (o%"/"02)1%0""+!/*1& ))6&+ /"0"! +!0""4%1/")v4,/)! ), (0 12))6),,()&("o
!"*+!#,/"3"/61%&+$#/,**&+01/"*1,%&$%v"+! 4 ,*-21"4,/(0,211,<@o?  ;:,+
$/-%& 0 /!0n+!3&!&}0=8A8n=8@8+! 1%"A8?8+!;>o9 ,+1%"A8?8o+--"/n
=8?8&))0,)!,21)*,01&+01+1)61)2+ %n0, 1%1*("01%"2-1,;=#01"/o +-/ 1& "n4"
4" +}10""02--)6 ,-&+$o21"+,2$%0!1)(o 020-" 11%"14, %&-04&))".2&1"&1 ),0"/+!1%1

48 LXF328 June 2025 www.linuxformat.com


AMD DNA IN DEPTH

1%" 12) ), (0&+*,01$*"0*6,+)6" ,2-)"


%2+!/"! 7-/1n!"0-&1"4%11%"0-" 002$$"01o
%0)0,$&3"+1%"6 ")"/1,/0+! 
 ")"/1,/0&+1%"0*00&3",3"/%2)o ,/ n
" % +!,14& "0*+6 9>,-"/1&,+0-"/ 6 )"
+!1%"6+,402--,/10-/0",-"/1&,+0o-/0&16 +
0(&-2-1,%)#,#1%"7"/,*2)1&-)6,-"/1&,+01,
-,1"+1&))6!,2)"-"/#,/*+ "n+!&1}0#"12/"
3&!&%002--,/1"!0&+ "&100" ,+!v$"+
;8v0"/&"0o%0)0,02--,/1"!0-/0",-"/1&,+0
,+&10#*&)6,# 0#,/0"3"/)6"/0o
%" 2+&10)0,02--,/1 @n @n @+! <
,-"/1&,+0n4&1%1%"@v&1 ) 2)1&,+0"&+$14& "0
#0109>v&1n+!<v&1&+1"$"/0!,2)"1%1$&+o21
&1))1,$"1%"/n+!6,2$"1;@A ,#0-/0" 9>
,*-21"+!9n==?,#0-/0" < ,*-21"o
""-&+*&+!1%11%"-/"3&,20$"+"/1&,+;
/ %&1" 12/"#"12/"! 04&1%2-1,A>0+!
;@<v&1*"*,/6&+1"/# ",+1%"?A88n0,
4%&)"< 0/"#01"/,+-"/v0&0n
!,"0+}1"5-" 11%"A8?81,"11%"?A88
&+))4,/(),!0o

Core architecture 1/3"/0)n1%",3"v*"+1&,+"!,21,#,/!"/*"*,/6 The new


01"/&01&,+-"/#,/*+ "0""01%"0*))"01$&+0n21 /"12/+0n+!"11"//6%/!4/"01 (*+$"*"+1o monolithic RDNA
4 die – no more
&1}001&)),21<8#01"/1%+; ,/!&+$1, ,01,#1%"&*-/,3"*"+10 ,*"#/,*1%"!,2)&+$ chiplets for you.
o61/ &+$-"/#,/*+ "&0!,2)"!n+!  ,#&+1"/0" 1&,+/1"0+!  ,*-/"00&,+n211%"
-"/#,/*+ "&0!,2)"!#,/!"+0" 9> ,*-21"n4&1% ,1%"/0-" 10 ,*&+"1,!")&3"/0,)&!&*-/,3"*"+1
),4"/-/" &0&,+#,/*10-"/#,/*&+$"3"+"11"/o 04"))o ,4!,"0< ,*-/"4&1%3&!&}0)1"01
%"!"1&)0,#1%"/01"/&01&,+&*-/,3"*"+10/" %/!4/"l%1}0+,1 )"/n21&1}0$,&+$1,!,"11"/
&1+"2),20o<02--,/10,21,#,/!"/*"*,/6 -"/1%+4%14"044&1%;+!:o 1
/".2"010n4%& %+,1"00"&+$%")-#2)#,//6 )&(")64,+}1*1 %) (4"))n21&1*&$%1""11"/
1/ &+$n21&1 +%")-/01"/&01&,+10(004"))x4" 1%+*-"/"+!1)"01 ),0"/1,!-"/#,/*+ "o
'201!,+}1%3"+6!"1&)0,+%,4*2 %o%",1%"/  n0)/"!6+,1"!n0""01%"&$$"01 %+$"0o
*',/ %+$"&+3,)3"0!6+*& /"$&01"/)), 1&,+o 3&!&%0""+&1"/1&+$,+&10 1"+0,/ ,/"00&+ "
;ƒ+!"/)&"/„)), 1"!/"$&01"/0#,/1%"4,/01 1%":8v0"/&"0n+!"3"+"#,/"1%11%",)1!1
0"#,/0%!"/0o6!6+*& ))6)), 1&+$"51/ "+1/" %!1"+0,/ ,/"0o,n3&!&&0,+&10#&#1%
/"$&01"/0,+)64%"++""!"!n-/,3&!"0+"5*-)" $"+"/1&,+,# *1/&5 ,/"04%&)"&0*,01)6,+
20" 0"4%"/"&1 ,2)!%3"+"51/43"&+#)&$%1o &100" ,+!$"+"/1&,+x*,01)6" 20"&1),,(0)&("
%"0)&!"00%,41%/""43"03"/020#,2/43"0n4%& % 1,,(),1,#1%"4,/(1%1}0""+%--"+&+$&+&10
4,2)!";;&+ /"0"n214"!,+}1(+,4&#1%1}0  0+!/,2$%1&1,3"/1,<o
/"-/"0"+11&3",#/")4,/(),!0,/'201&))201/1&3"o ;0 ,2)!!,=9: 9>,-"/1&,+0-"/
,3&+$,+1,/61/ &+$n1%&0&04%"/"0-"+1 6 )"n4&1%+,0-/0&1602--,/1n,/9n8:< <
0&$+&#& +1*,2+1,#"##,/1o 1!,2)"!1%"/6š1/&+$)" ,-"/1&,+0-"/ 6 )"o&1%<n!,2)"0
+!/6š,5&+1"/0" 1&,+/1"0-"/2+&1001/1o 1%"0")&+" 9>1%/,2$%-21#,/!"+0",-"/1&,+0n
%"+&1,##"/00,*""+%+ "*"+10&+ )2!&+$%/!4/" !,2)"01%1$&+#,/0-/0",-"/1&,+0n+!!,2)"0
&+01+ "1/+0#,/*0ƒ/1%"/1%+!,&+$),1,#4,/(3& 1%1$&+#,/ @4,/(),!0x4%& %/"-/,3&+$
0%!"/0„n,/&"+1"!,2+!&+$,5"0n+&*-/,3"! 20"#2)&+1%" 0- "o%1}02-1,"&$%11&*"0%&$%"/
 ƒ,2+!&+$3,)2*"%&"// %6„01/2 12/"+!  1%/,2$%-21#,/ @,+< ,*-/"!1, 9>

MONOLITHIC GPUS
+",#1%"&+1"/"01&+$ %+$"04&1%<&01%1&0n1)"01
#,/+,4n!&1 %&+$1%"  %&-)"10--/, %o 1*6 ,*" (1,
1%1&+1%"#212/"n211%"3&<@+!-/"02*)61%"/2*,2/"!
3&<<4&))"*,+,)&1%&  %&-0o&0)0,2-$/!&+$#/,*}0
=-/, "00+,!"20"!,+;1,1%"<+,!"#,/<o
&0+}1/"))61/6&+$1,1("!,4+3&!&}01,- 0o%") (,#
?*"*,/6,/)/$"/!"0&$+-/,3"1%&0o%"3&<@ %&-4&))
%,20"=;oA&))&,+1/+0&01,/0&+;=>o=**:!&"o3&!&}0 :8;
20"!&+1%"=8@8+!=8?8& ,+1&+0<=o>&))&,+1/+0&01,/0
&+;?@**:!&"o%& %*&$%102$$"01 12))6%002-"/&,/
-/, "00+,!"+!š,/!"0&$+o214" +}1/"))6 ,+ )2!"1%1o
AMD is finally offering the AI acceleration that’s being demanded.

www.techradar.com/pro/linux June 2025 LXF328 49


IN DEPTH AMD DNA

/ %&1" 12/"n+!0""*01,"1(&+$0&*&)/
--/, %o 1)&(")6!,"0+}1%")-))4,/(),!0".2))6n
21060&1!,2)"01%"9"+ ,!&+$1%/,2$%-21o
&+))6n< 04&))02--,/1 "=o8
&+1"/# "0o%1!,2)"01%"1%/,2$%-21,3"/1%"59>
)&+(n1%,2$%&+-/ 1& "*,014,/(),!0)&(")64,+}1
0""*2 %"+"#&1o *&+$!,"0+}11"+!1,+""!*,/"
1%+ ";o8n,/-"/%-0<o8n4%"+20&+$#2))59>
,++" 1&,+o ,4"3"/n +! "/1&+ ,+1"+1 /"1&,+
10(0 +"+"#&1#/,*1%"!!"!+!4&!1%o,+}1"
AMD’s RX 9070 02/-/&0"!&#1%"#212/"3&<@ %&-0+!-,00&)61%"
XT performed A8>8 211%"&+1"/# "!,4+1,5@,/"3"+5<o
nearly twice +"1%&+$1%1&0+}1 %+$&+$#/,*;&01%"
­ĬǏŋÐÿÿǎ­ĬǎijéÐǎ
*"*,/602--,/1o%&)"3&!&%0*,3"!)),#1%"
y ǏűųŪŪǎ ƒǎ
ŋìijéǏ}ij­ÅÿÐǎ ,+;n+!1%" <1%/,2$%-210""00&*&)/2- ++,2+ "!) (4"))=8v0"/&"00,)21&,+01,
Diffusion XL. 1,"&$%11&*"0&*-/,3"*"+1o ?n4&)) ,+1&+2"1,20" >n ), ("!1
$3"/")v4,/)!"5*-)",#%,41%&0##" 10 2-1,:8 š0o,2-)"!4&1%:=>v&1&+1"/# ",+1%"
 -"/#,/*+ "20&+$Stable Diffusion XL.%" A8?8+!A8?8 0n1%1/"02)10&+><8 š0,#
A8?84&1%><01,,(,+1%"?A884&1%@< *"*,/6+!4&!1%o%1}01%"0*" - &16
0o%1$&3"01%",)!"/ ;9!3+1$"&+0n 01%"?A88 +!?@88n+!)0,1%"
211%"A8?8"+!"!2-!")&3"/&+$ ),0"1,14& "1%" 0*"03&!&}0=8?8&+!<8?8&2-"/o
-"/#,/*+ "o%14&))-/,3"3"/6%")-#2)#,/,1%"/  %">< +#&+&16 %"4&))&*-/,3"1%""##" 1&3"
+!* %&+")"/+&+$4,/(),!0n&+ )2!&+$v0"! +!4&!1%n1%,2$%!&!+}1-/,3&!"+6"01&*1"0
2-0 )&+$+!#/*"$"+"/1&,+(see FSR 4, below). ,#  %"%&1/1"0o%"?A88 +!?@88
),+$0&!"1%"0" %+$"0n%0/"4,/("!0,*" ,1%%!>< +#&+&16 %"0n+!-/,3&!"!
,#1%"  %"+!*"*,/6%&"// %6o 1!&!+}1-/,3&!" "##" 1&3"+!4&!1%/1"01%14"/",21#,2/1&*"0
)"/!"1&)0n21+,1"01%11%&0&01%"1%&/!$"+"/1&,+ 1%"0"*"*,/6+!4&!1%4&1%1%,0" 0n0,4"
,# +#&+&16 %"o%" - &16/"*&+0><n1%" "5-" 11%"3&<@ 04&))0""0&*&)//"02)10o
0*"0,+1%":=>v&1?A88 +!?@88n21 1}0)0,-,00&)"1%1#2/1%"/&*-/,3"*"+101,1%"
+,41%"  %"&0$&+-/1,#1%"*,+,)&1%&  %&-n0,&1 +#&+&16 %"%3"*!"&1)"00 /&1& )#,/1,
)&(")6%0"11"/)1"+ &"0+!1%/,2$%-21o *,3"1, ?1-/"0"+1o,+0&!"/&+$1%13&!&
060&1%0&*-/,3"! o:><ƒ„.2)&1662- $"10<8&*-/,3"*"+1&+/4+!4&!1%#/,*
1,:=n o:>=ƒ „699n+!&*-/,3"!1%"9 :@ š0 ? ,*-/"!1,}0:8 š0 >n
"+ ,!&+$"##& &"+ 6o 1)0,%0"11"/02--,/1#,/9 1%1*&$%10""*)&("0&7")"!3+1$"o ,4"3"/n
+!A!" ,!&+$+!/"!2 "!*"*,/6 "00"0o "##" 1&3"+!4&!1%#1"/# 1,/&+$&+1%")/$"  %"0
"0&!"01%".2)&16&*-/,3"*"+10n<!!0 *6+,1"))1%1!&##"/"+1o
!2)*"!&"+$&+"o3&!&!&!1%&04&1%&10!
Super Resolution!
"0&!"01%"%/!4/"n%0)0,""+4,/(&+$
RX 9070 PERFORMANCE ,+3/&"16,##"12/"&*-/,3"*"+10o%"&$$"01
,+"&02+!,21"!)6&10,-"+0,2/ " <o%&0&01%"
2/"5&01&+$!1 ,*&+"!4&1%}0!102$$"0101%"A8?8 #,2/1%&1"/1&,+,#}0 &!")&16 2-"/"0,)21&,+
4&))"11%"=8?8&6-"/%-0>1<#,//01"/&01&,++!9: ƒ „)$,/&1%*n+!&14&))/"(4&1%1/!&1&,+&+
19<<8-o +/61/ &+$n%,4"3"/n3&!&--"/01,01&))%3"1%" ,2-)",#("6460o
"!$"+!"/,2+!:8#01"/1<+!9<<8-o" +}1" &/01n <4&)))"3"/$"1%"*,/"-,1"+1 
-/" &0"" 20"1%"/"/",1%"/# 1,/0&+-)6x!&##"/"+11"01&+$  ")"/1,/0&+1%"< 0o1)2+ %n&14&))
02&1"0n!&##"/"+1-)1#,/*0n+!14,)"3")0,#"51/-,)1&,+x21 /".2&/"+< o,4+1%"/,!#"4*,+1%0n
,3"/))&1--"/01%"A8?84&)))+!.2&1" ),0"1,1%"=8?8&o *61/6 (v-,/1&+$1%")$,/&1%*0,1%1&1 +
,&+$1%"0*" ) 2)1&,+0#,/1%"3+&))A8?8n&14,2)!" /2+,+;+!*6""3"+: 0x21&1
!" "+19:v9?-"/ "+10),4"/1%+1%"A8?8n4%& %4,2)!" 0""*02+)&(")6o
,214%"/"1%"<8?8&0&10&+,2/1"01&+$o214"!,+}1(+,4 +01"!n <4&))0& ))6 ,v"5&014&1% ;o9n,/
-/" &0")64%"/"1%"=8?84&)))+!6"1n0, +}1/"))6 ,*"1, /1%"/n1%"+,+v 2-0 )&+$4&)) ,+1&+2"1,",##"/"!o
+6 ,+ )20&,+o&1%,+)69: ,#,+1%"3&!&=8?8n 1}0+,1"+1&/")6 )"/"5 1)6%,41%&04&))-)6,21n21
%,4"3"/n&10""*0*,/")&(")61%11%"A8?84&))1("+,3"/)))"!o (""-&+$"3"/61%&+$2+&#&"!2+!"/,+"+*"*("0
%"A8?8 /!04"/"/")"0"!,+>1%/ %n21%0 *,/"0"+0"o%14"!,(+,4&01%1-)+01,
)0,1)"01-/1&))61"0"!+A8>8#*&)6,# 0o&))1%"/" )),4$*"/01,20"1%"*,/"-,1"+1 <)$,/&1%*
"*2)1&-)" /!0,/,+)6,+"l&))1%"/""),4"/v1&"/A8=8 ,+$*"01%1%3" ;o902--,/1o&))1%1%--"+
/!004"))l"}!$2"000,*"1&*""14""+6+!1%""+!,# 21,*1& ))6,//".2&/"!/&3"/0"11&+$01,$$)"l 1
1%"6"/n%,-"#2))60,,+"/1%+)1"/o 0""*0)&("1%")11"/n214"}))%3"1,4&1+!0""o
%"+*&+$0 %"*"#/,*02$$"0101%11%"A8>84&)) <&0+}1'201#,/2-0 )&+$n"&1%"/q&1)0,%0
,*-"1"4&1%1%"=8>8#*&)6o%14,2)!-"/%-0/".2&/" #/*"$"+"/1&,+o /,*,2/2+!"/01+!&+$n,1%
)/$"/ %&-1%+4%1}0&+!& 1"!o21?>88!,"01" %+& ))6 2-0 )&+$+!#/*"$"+4&))20"1%"  ")"/1,/0
,*-"1"4&1%1%"<8>8n+!1%"/"}0+,<8=8+!-/,)6 ,#1%"A888v0"/&"0 0o)0,060<
4,+}1"+=8=8o &0+"2/)/"+!"/&+$/"!6€4&1%,21/"))6$,&+$&+1,
#2/1%"/!"1&)o/"02*)6n1%1}0/")1"!1,& /,0,#1}0

50 LXF328 June 2025 www.linuxformat.com


AMD DNA IN DEPTH

RX 9070 RX 9070 XT RX 7900 XT RTX 5070 RTX 5070 Ti


Architecture 3&<@ 3&<@ 3&;9 :8= :8;
Process < < => < <
Transistors =;oA&))&,+ =;oA&))&,+ ==o>&))&,+ ;9&))&,+ <=o>&))&,+
Die size (mm )2
;=>o= ;=>o= ;88::= :>; ;?@
SMs/CUs => >< @< <@ 70
Shaders (ALUs) ;n=@< <n8A> =n;?> >n9<< @oA>8
AI cores 99: 9:@ 9>@ 9A: :@8
RT cores => >< @< <@ 70
Clock (MHz) :n=:8 :nA?8 :n<88 :n=9: :n<=:
VRAM Speed (Gb/s) :8 :8 :8 :@ :@
VRAM (GB) 9> 9> :8 9: 9>
VRAM bus :=> :=> ;:8 9A: :=>
L2 cache >< >< @8 <@ <@
ROP 9:@ 9:@ 9A: @8 A>
Texture units ::< ::< ;;> 9A: :@8
TFLOPS FP32 ;>o9 <@o? =9o> ;8oA <;oA
TFLOPS FP16 (FP4) :@Aƒ9n9=>„ ;@Aƒ9n==?„ 98;o: :<?ƒA@@„ ;=:ƒ9n<8>„
Bandwidth (GB/s) ><8 ><8 @88 >?: @A>
TBP (watts) ::8 ;8< ;9= :=8 ;88
Launch date / %:8:= / %:8:= " "*"/:8:: "/2/6:8:= "/2/6:8:=
RRP ^=:< ^=>A ^@>; ^=<A ^?:A

+"4,,-"/1&3"" 1,/0#"12/"n4%& %&00,*"1%&+$ 0&7"o3&<@&0;=?**:,+=+*v )00+,!"ƒ<„o


3&!&)0,1)("!,214&1%) (4"))o 3&;940;88**:,+=+*v )00+,!"ƒ=„n4&1%
")0,0("!&# <4020&+$1/+0#,/*"/0v +#&+&16 /& )&+(01,1%""51"/+)*"*,/6+!  %"
0"!+"14,/(,/ ,+3,)21&,+)+"2/)+"14,/(o %&-)"10o&-,211%,0")&+(0n/"4,/(1%" ,/"0n+!1%&0
<,##"/0"11"/&*$"#&!")&161%+;6 40))-,00&)"0"3"/)6"/0$,o%& %&0,3&,20n
20&+$1/+0#,/*"/0n+!*6%3"0(&--"!1%" " 20"3&!&)/"!6!&!1%1n21&1#")1)&(";
--/, %0&1}0)1"1,1%" v-,4"/"!2-0 )&+$ !,2)"!!,4+,+1%"/61/ &+$+! /"+}1/"))6
+!#/*"$"+-/16o ,4"3"/n4"%3"+}1%!!&/" 1 1%1&*-,/1+1€*/("1&+$+!$,1)"#1"%&+!o<
+04"/o"%3"%!&*$".2)&16 ,*-/&0,+0#/,* #&+))6/&$%101%1*&001"-n,/1)"0111"*-101,o,4
n+! <!"#&+&1")6),,(0"11"/1%+ ;o9o 4"'201+""!1,0""%,41%" 12)%/!4/"-"/#,/*0
04&1%3&!&}020",#-"/#,/*+ "*,!"2-0 )&+$ &+3/&"16,#10(0o
4&1%#/*"$"+n4"!,+}1$"+"/))6#, 20,+1%" %1}0 )"//&$%1+,4&01%1n0),+$0 
-/,*&0"!-"/#,/*+ "#1"/))1%"0""51/0o /*"$"+ ,+1&+2"01,$/,40+&+!201/6n$*&+$ 0/"
&+-/1& 2)/&03"/6%"36,+*/("1&+$o 1}0)"00 ),4"/-/&,/&16&1"*#,/*,01,#1%"&$$"01-)6"/0&+ It’s always hard
to spot quality
-/,)"*1& 4%"+6,2)/"!6%3"%&$%0"#/*" 1%"$/-%& 00- "o"1}0%,-"1%1n)&(" 6-1, 2//"+ 6 improvements,
/1"n211%"+&1}0)0,)"00+" "00/64%"+6,2}/" *&+&+$n1%&012/+0,211,"'201-00&+$-%0"o21 but the fine
)/"!6$"11&+$,3"/988#-0o060&14&))%3",3"/ 4"4,2)!+}1"11%"ƒAI?–Ed„#/*,+1%1o ÌÐij­ìÿǏìĬǎijéÐĨÐƧ
;8$*"04&1% <"+)"!#,/1%"A8?80"/&"0
)2+ %n4&1%*,/"1%+?=$*"0 ,*&+$&+:8:=o

The GPU landscape


/+()6n<#"")0)&("4%10%,2)!%3"
""+!,&+$4&1%;/1%"/1%+-2/02&+$1%"
+!,+"!v#,/v+,4  %&-)"10--/, %o%0
#&+))6!" &!"!1,-210"/&,20"##,/1&+1,/6v1/ &+$
%/!4/"+! &+&10 ,+02*"/-/,!2 1)&+"o" +
2+!"/01+!4%6:40) (&+$&+1%"0"/"0x
3&!&}0 " ,/ "#"12/"0"1-/,)6 2$%11%"
CREDIT:

,*-+6,##$2/!x214%"+;//&3"!&+
:8::n&1/"))6+""!"!1,!,*,/"+!"*,/"o
%1}0&+1"/"01&+$&01%1))1%"0"+"4%/!4/"
#"12/"0%3"+}1 20"!*00&3"),1&+1%"!&"

www.techradar.com/pro/linux June 2025 LXF328 51


TUTORIALS
EDDY
Credit: https://github.com/70sh1/eddy

Eddy encryption tool


Keeping files safe from prying eyes doesn’t need to be a Herculean trial.
Shashank Sharma knows of a utility that makes it a breeze.

ith great power may very well come great

W responsibility. But with a repository of


important files, there definitely comes a need
for security. Depending on the nature of the files, of
course. While one might certainly feel the need to
OUR safeguard the toddler’s attempts at drawing a green-
coloured snowman, you needn’t necessarily encrypt
EXPERT such musings. On the other hand, if you do have files
Shashank that need to be encrypted for safekeeping, Eddy is a
Sharma useful little utility with no learning curve.
is a trial lawyer A quarter way into the 21st century, computer tools
in Delhi, and an and apps shouldn’t require users to jump through
avid Arch user. hoops, or master new concepts and technologies to
He’s still on take advantage of them. One area where this is often
ʋǠơࢳǠʠȥʋljȶɭ lacking is encryption, because while there are tools
ŔljljȶɭƎŔŹȍơ 6,2 +20""0&)6"+,2$%n1%"601&))&+2+!1"20"/0 When you attempt to open any EDDY file, the file manager reports an
ƃȶȍȍơƃʋǫŹȍơɽȶlj with too much information that overwhelms them. error saying unknown file type.
the Terminator Thankfully, Eddy isn’t one of them. Released under the
ljɭŔȥƃǠǫɽơࡳ MIT licence, Eddy is a CLI file encryption tool that can stronger encryption. Should an encrypted file become
be used to quickly encrypt and decrypt files. It also corrupt or damaged, the tool offers the option to force-
features a passphrase generator that you can use for decrypt the contents. Eddy also stands out from other
tools for its reliance on ChaCha20 256-bit cipher
instead of the more widely used AES-256 algorithm.
NAVIGATING FROM THE CLI If you already have Go installed on your Linux distro,
run the go install github.com/70sh1/eddy@latest
We’ve spent plenty of time talking about various text-based file command to install it. Although you can install Go from
managers over the years. As useful as these are for directory your distro’s software repository, it’s better to install
navigation, we have a different type of navigation in mind. The kind the official latest version. Head over to the project’s
that requires maps and stars. website and grab the latest tarball (https://go.dev/dl/).
Starfetch is a nifty little tool that you can use to look up different Run the sudo tar -C /usr/local -xzf go1.24.1.linux-amd64.
constellations from the comfort of your terminal emulator. You can tar.gz command to extract the file in the /usr/local
use pip to install the Python package. The starfetch -l command directory. You next need to add /usr/local/go/bin to
can then be used for a list of all constellations. The starfetch -r your $PATH, so open the ~/.profile or the ~/.bashrc file
command displays information about a random constellation, or you in your favourite text editor and add the following line:
can specify the name of the constellation you’re curious about with export PATH=$PATH:/usr/local/go/bin
the starfetch -n <constellation> command. Save the file then run source <filename> . For
For even more fun, run the telnet mapscii.me command to access instance, if you added the export line to the ~/.bashrc
the entire world from your terminal. You can use the arrow keys to file, run the source ~/.bashrc command. Go is now
navigate and the a and z keys to zoom in or out. You can also use available for use, so you can install Eddy with the go
the mouse scroll wheel to zoom in, and drag the map to find the install github.com/70sh1/eddy@latest command.
locations and places you’re interested in. If you think this is too much effort to try a new tool,
If your system is configured for Node.js, and you have the npm you can use the prebuilt binary offered by the project.
package manager installed, you can install the utility with npm Grab the latest tarball from the project’s GitHub page
install -g mapscii or run sudo snap install mapscii if that’s more to (version 1.4.2 at the time of writing), and unpack the
your liking. Press q to exit when you’re done exploring. tarball with the tar xvf eddy-v1.4.2-linux-amd64.tar.gz
command. You can now move the comprising Eddy

52 LXF328 June 2025 www.linuxformat.com


Terminal TUTORIALS

executable into a directory in your $PATH such as


/usr/local/bin.

Encrypt anything
For the modern computer user, sensitive information
comes in all shapes and sizes, be it text or PDF files,
,/"3"+&*$"+!3&!",#&)"0o,2 +20"Eddy to
encrypt all manners of files with the eddy encrypt
<filename> command.
You’re prompted to provide a password and then
Eddy stores the encrypted file in the current working
directory as filename.eddy.
$ eddy enc Bus\ Ticket-Delhi-Jaipur-08Feb2025.pdf

Bus Ticket-Delhi-Jaipur-0...
(63.05 KiB) [---------------------------------]

Done in 380ms
$ ls Bus*

‘Bus Ticket-Delhi-Jaipur-08Feb2025.pdf’ ‘Bus Ticket- so the structure of the command should be eddy Although Eddy
offers to force-
Delhi-Jaipur-08Feb2025.pdf.eddy’ <flags> <command> .
decrypt a file,
You can run the eddy -h command for a quick When encrypting files, Eddy doesn’t delete, rename bypassing the
introduction to Eddy commands, but here are the or otherwise interfere in any way with the original files. password check,
useful ones that you’ll commonly use: So, make sure you safeguard the original files, too, the files so
otherwise the whole exercise of encrypting them decrypted were
not readable in
Command Function would be rendered moot. our tests.
encrypt, enc, e Encrypt the specified files
If you have several files to encrypt, you can use
Eddy to simultaneously encrypt all of them with
decrypt, dec, d Decrypt the specified files the eddy enc <filename> <2nd-file> <another-file>
Generate a passphrase command. Each of the files is individually encrypted as
generate, gen, g filename.eddy. That is, Eddy merely encrypts the files,
of specified length
and doesn’t club them together. You’ll have to create a
You’ll notice the use of emojis in the output tarball, and then feed it to Eddy if you want to make
generated by Eddy to denote the completion of 0&+$)6"+ /6-1"!#&)"1%1 ,*-/&0"00"3"/)#&)"0o
operations. Run all Eddy commands with the
--no-emoji or the -n flag option to disable the use of Decrypt away
colours and emojis in output. All files encrypted with Eddy have the EDDY extension,
Instead of being prompted for a password, you can which makes them easily identifiable. A unique feature
also get Eddy to use a generated passphrase for added of Eddy is that the encrypted files don’t need to retain
security. The command eddy -g <passphrase length> this EDDY extension. So, the encrypted circular.pdf.
enc <filename> uses a passphrase of specified length eddy file can be renamed as youcantopenthis.pdf and
to encrypt the file. If no number is specified, Eddy Eddy can still decrypt it when called upon to do so.
defaults to a passphrase of six. If you don’t specify an output directory with the -o
$ eddy -g 8 enc Bus\ Ticket-Delhi-Jaipur-08Feb2025. command flag, Eddy decrypts the file in the current
pdf working directory. The exercise fails if a file with the
same name already exists. To overcome this, you can
NOTE: using this passphrase: ‘proponent-calamari- use the -w or --overwrite command flags to overwrite
playhouse-modify-avid-radiated-cranial-dipper’ the existing file when decrypting. It might make
Run the eddy dec <filename.eddy> command sense to create
Bus Ticket-Delhi-Jaipur-0... 1,!" /6-1#&)""+ /6-1"!4&1%Eddy. To specify a a repository
(63.05 KiB) [---------------------------------] different output directory, you have to run the eddy -o of several
<output-dir> -w dec <encrypted-file> command. passphrases, of
Done in 383ms Here, we’ve specified the output directory with the varying lengths,
and save them
Take note of the passphrase used by Eddy to -o flag, and used the -w flag to overwrite any existing
in a text file,
encrypt your file. You’ll be prompted to enter it when file with the same name. itself encrypted
you decide to decrypt the file. For now, it’s not possible to provide a name for the with a strong
The passphrase generator can also be used decrypted file, which retains the original name of password.
independently. In other words, you can run the eddy 1%"#&)"4%"+&140"+ /6-1"!o%&0&04%66,2/,+)6 You can then
gen <passphrase length> command to generate a recourse is to either use the -w flag and overwrite an decrypt this file,
random passphrase of the specified length. You can existing file of the same name, or to always extract and look up the
then use it with any other tool or for any other purpose encrypted files to a new directory. passphrase you
of your choosing. Eddy is a straightforward utility that doesn’t have a might have used
Eddy is particular about the syntax of the command, vast dependency list and can be quickly installed and to encrypt any
given file.
and the flags must be specified before the command, put to use by anyone.

www.techradar.com/pro/linux June 2025 LXF328 53


TUTORIALS Music scores

MUSESCORE
Credit: https://github.com/musescore/MuseScore

Write and publish your


own music scores
Nick Peers shows you how to use the latest version of MuseScore to
transform your musical ideas into full-blown compositions.

f you’ve ever fancied yourself

I 0 ,*-,0"/n,/0&*-)64+1
1,-/ 1&0"4,/(&+$4&1%0%""1
music, there’s only one tool for the job.
MuseScore Studio 4.5 has just been
OUR released and builds on years of
development to add so many bells and
EXPERT whistles it’s hard to know where to start.
Nick Peers What is MuseScore? It’s professional
still can’t believe notation software that’s completely free
how reliable a and open source. You can use it with a
technology MIDI MIDI keyboard to simplify note entry or
has been over manually transcribe music using your
the decades. It’s mouse and keyboard. It supports standard
older than his formats like MusicXML, too, so you can
35-year-old easily import music from other sources – MuseScore’s New Score wizard ensures you have your score set up perfectly.
Yamaha PSS-790 it can even import from some PDF files.
keyboard (still the most recent of which dates back to 2022 (v3.6.2).
working). Making beautiful music Instead, head to the project’s www.musescore.org
A search for MuseScore in Ubuntu’s App Centre or where you’ll find a link to download the latest version
Mint’s Software Manager brings up several versions, as a portable AppImage. Other options can be found by
rolling your mouse over the Download shortcut above
and choosing Software from the drop-down menu, but
MUSESCORE AND THE CLOUD only one – Flatpak – offers the latest 4.5 release.
Beneath the link for MuseScore Studio is a further
When saving your score for the first time, you’re greeted by a pop-up link for Muse Sounds Manager – see the box (page 56)
dialog enabling you to choose between saving the file on your PC in for details on what this is and whether you need to
the usual way or storing it in the cloud through a free MuseScore install it for your individual needs.
account. The dialog stresses that all files are stored privately in your Once downloaded, make the AppImage executable
personal account, but you can also share drafts with others (great for – in Ubuntu, right-click the file, choose Properties, and
collaborative projects) and publish finished scores publicly, too. flick the Executable As Program switch on; Mint users
If you choose this option, you’re prompted to log into your need to switch to the Permissions tab and tick Allow
MuseScore account – do this to open a browser window and click Executing File As Program. Then simply double-click
Sign Up if you don’t yet have a free account. Once signed in, you’re the file to run the program.
given the opportunity to name your composition plus set its Visibility Alternatively, consider installing AppImageLauncher
– choose Private to ensure no one else can see it, or Unlisted if you (https://github.com/TheAssassin/AppImageLauncher
want to share it privately with others. You’re also prompted to create – choose the bionic_amd64.deb release in most cases)
an MP3 playback file of your composition for storing online – this is to integrate MuseScore (and other AppImages) into
based on your own user configuration, so includes any Muse Sound your desktop and shortcut menu.
instruments and effects you’ve applied through the Mixer panel.
Once saved, all future changes are automatically saved online. First score
You’ll also see lots of prompts to sign up for a PRO or PRO+ account When you first open MuseScore Studio, you’re greeted
– this isn’t necessary for solely using MuseScore for online backup, by a welcome dialog, enabling you to set a theme
but it does unlock more sharing, saving and publishing opportunities. (system, light or dark) plus your choice of highlight
colour on menu buttons. You’re invited to learn about

54 LXF328 June 2025 www.linuxformat.com


Music scores TUTORIALS

MuseHub and sound libraries – the sounds used when GO ON TOUR WITH MUSESCORE
playing back your scores through your PC. You’re then
directed to the Learn section of MuseScore’s Home
tab, where you’ll find a string of online tutorials
1
revealing how to use the program’s many features. 5
Switch back to Scores, where you’ll see a New
 ,/",-1&,+x )& (1%&01,,-"+1%""4 ,/"4&7/!n 4
2
which enables you to create scores from scratch or 6
3&1"*-)1"0o/"1&+$0 ,/"0#/,*0 /1 %&+3,)3"0
choosing the group you’re composing for (various
+!+!"+0"*)",-1&,+0 ,*-+6 %,&/,/
orchestra), then adding instruments to it in the order
they should appear on the score.
For small groups, selecting Create From Template
opens up pre-built templates – including options for
soloists as well as a General option for simple notation
involving a single treble clef or bass clef stave, or 3
Grand Staff (pair of treble and bass staves).
Make a choice and click Next. You’re prompted to
set key and time signatures, tempo and length in bars. Main notation
Note input
You can also add a title, subtitle and composer/lyricist 1 Use this toolbar to quickly insert and 4 Your score appears in this window – roll
credits, along with a copyright notice before clicking edit the notation on your score. your mouse over any element to select it.
Done to create the empty score, ready to be filled in.
Palettes Playback controls
2 You can add just about any element 5 Listen back to your composition using
Populate your score you want to your score from these a series of playback controls – including an
You’ll find yourself at MuseScore’s main window – the collapsible sections. optional metronome.
annotation (right) provides a quick tour. Let’s start by
discovering how to populate the staves with your Virtual piano Properties inspector
3 If you’re proficient with the piano, use 6 Customise just about every aspect of
music. The first bar and stave is highlighted in blue, the selected note, rest or bar from here.
this virtual keyboard to quickly enter notes.
indicating it’s been selected by default. To switch to
note entry, either click the pencil icon on the note input
toolbar above the main window or press N. button in the toolbar before adding your note as
Next, select the length of note you wish to insert normal. To convert a note to a sharp or flat, click the
from the selection on the toolbar and roll your mouse relevant toolbar button after entering (or selecting) the
over the stave – the note appears in blue as you move note. Tied notes are added automatically, but can also
the mouse – position it where you want it to go, then be added to an existing note by selecting the length of
click. You’ll hear the note get played for emphasis. You the following note, then clicking the tie button.
can then move on to the next note, or insert additional
notes for a chord under or over the original note. Use real instruments
As you enter notes, MuseScore automatically adds Entering notes in this way can quickly become tedious,
rests to fill the remaining space in each bar; however, but you can import scores from other sources plus It may seem
you can insert rests manually. To do this, click on the make use of keyboard shortcuts – A through G for note counter-
rest symbol on your score to select it – verify the rest pitches and 1 through 7 for note lengths – when in intuitive, but
MIDI cables
symbol is selected on the note input toolbar, then click Note Entry mode. There’s also a virtual piano – press P
should be
the note that corresponds to the length of the rest to bring it into focus, then simply tap on the keys with connected to
6,24+1o%"013"2-!1"04&1%6,2/ %,& ",#/"01 your mouse to input your notes. the ‘opposite’
followed by additional rests to fill the bar – these can You can also hook up a MIDI instrument if you have ports – so plug
then be replaced by notes as before. one. Connect it to your PC using a standard MIDI-to- the MIDI out
By default, only full-length notes are inserted – if USB cable, which can be had for as little as £6-7 online. cable into your
you’d like to add a dotted note, click the dotted note Verify the connection after plugging in the cables and instrument’s
switching on your MIDI instrument by opening a MIDI in port,
terminal window and issuing the following command: ­ĆÌǏŊìÆÐǎŊÐĨĬ­Ƨ
$ aplaymidi -l
You should see something like CH345 – CH345
MIDI 1 , confirming it’s been detected.
Now switch to MuseScore and choose Edit >
Preferences > Audio & MIDI. Click the MIDI Input
button and set it to CH345 (or whatever aplaymidi
displayed). If you’d like to hear your score played
through your keyboard, set MIDI Output to the same
device before clicking OK.
You should now be able to input notes using the
instrument when in note entry mode – however,
Sharing your compositions with others is easy thanks to MuseScore’s 6,2 +}10&*-)6-)612+"+!%3"&1*$& ))6
wide support for export formats (as well as online sharing options). transcribed in MuseScore; you literally use the

www.techradar.com/pro/linux June 2025 LXF328 55


TUTORIALS Music scores

keyboard to enter notes one at a time at the currently enough, MuseScore also makes it possible to
set duration on the note input toolbar. customise just about every notation element going
Support for
You can map other tools to your MIDI keyboard’s 3&&10 ,/*1–16)"*"+2x&+ )2!&+$!, 2*"+1v4&!"
VST effects is
controls (Edit > Preferences > MIDI Mappings), making settings such as musical symbol and text fonts.
coming, but
if you can’t it possible to map common controls including playback
wait that long, and duration-setting tools to your keyboard. Customise your workspace
download the If you’re looking to play an entire piece of music on While it’s easy enough to switch tabs between
MuseScore your MIDI instrument and have it converted to notation, Palettes, Layout and Properties, there might be times
LXVST fork a better bet is to combine MuseScore with a MIDI where you’d like to see them all on screen together,
from https:// sequencer like Rosegarden (www.rosegardenmusic. particularly on larger screens. The good news is that
github.com/ com). Record yourself with this, then export the file in each one can be undocked – simply click and drag on
diedeno/ MusicXML format, which can be opened in MuseScore. its title. This converts the panel to a floating window,
MuseScore –
where it can be left sitting on top of your main display
visit https://
musescore.
Working with palettes or docked to either the left or right edge of the screen,
org/en/ Should you need to add other elements to your scores, where it can sit above or below any existing elements
node/351813 the Palettes sidebar has your back – expand a section or be merged back into a single multi-tabbed panel.
for a detailed like Clefs, Time Signatures or Tempo Notation, then Other panels can be flicked on and off via the View
description of drag and drop the item into place on your score. Click menu – some of these take up residence at the bottom
the problem the Add Palettes button to add other palettes, from of the screen, where you’ll find the virtual piano and
and what this arpeggios and glissandos to guitar fretboard diagrams. percussion as well as the mixer (see step-by-step
ãČĨüǎãìŐÐĬƧ Whatever notation you’ve seen on other scores, there’s guide). %"0"%,/&7,+1)-+")0 +"-) "!,3",/
almost certainly a palette for it in MuseScore. below the main notation and can be grouped into tabs
Should you need to add new instruments (or staves), just like the sidebars. One panel worth adding if it’s not
switch to the Layout tab on the sidebar, then expand already present is the History tab, which makes it easy
an existing instrument to see its current staves. You’ll to review and undo multiple actions quickly and easily.
see options to hide/show elements, add new staves to Over time, you may find you want to configure
existing instruments, or add new instruments. You can different layouts for different tasks – click Workspace:
rearrange, edit (click the settings button) and remove Default at the bottom and you’ll open the Workspaces
elements, too. Use Ctrl+Z if you make a mistake. dialog, where you can create multiple workspaces, set
The final tab on the sidebar – Properties – is up each one, then switch quickly between them.
context-sensitive and enables you to edit the current
object (such as a note or rest) or selection (like a full Play back your music
bar). Options are split into three collapsible sections: MuseScore Studio enables you to listen back to
General, Bars and Note. And if all these tools weren’t 6,2/0 ,/"006,2 ,*-,0"1%"*x6,2 +0""1%"

MUSE SOUNDS MANAGER


When you listen to your compositions,
MuseScore plays the track using
synthesised versions of the instruments
you specify in your score. Some are
more realistic sounding than others –
compare the sound of the piano to
various string instruments, for example.
If you want to improve playback
quality, you can install more realistic
sounding instrument libraries called
Muse Sounds or MuseSounds,
depending on where you access them.
You’ll find a large library of these sounds
on www.musehub.com/muse-sounds
,/60")" 1&+$20",2+!0#/,*
Improve MuseScore’s playback
MuseScore’s Home tab. These can’t be quality by installing more
directly integrated into MuseScore; realistic-sounding instruments
instead, you need to first install Muse using Muse Sounds Manager.
Sounds Manager.
To do this, download the DEB or
#/,*https://musescore.org/en/ families. Click one to download it (some appears under MuseScore Basic, and is
download – double-click this to install can be large – 5.46GB for the strings currently inactive. Select Muse Sounds
&11%/,2$%6,2/!&01/,}0- ($" collection, for example). and click Activate This Profile to switch
manager. Once installed, open the app Once you’ve downloaded a library, to your new instruments. Click OK and
and you’ll see nine free libraries are switch to MuseScore and choose View > press play to hear the new instruments
available spanning a range of instrument Playback Setup. You’ll see Muse Sounds in action.

56 LXF328 June 2025 www.linuxformat.com


Music scores TUTORIALS

playback controls in the top-right corner of the are all stored when you save your file, so you can return
4&+!,4o&*-)"-)6+!/"4&+!/"',&+"!61,$$)" to them later.
loop playback control, plus an option to alter the MuseScore
playback speed using a beats-per-minute slider. The Print, publish and share publishes a
controls can be left fixed in place, or you can click and Once your composition is complete, MuseScore has comprehensive
drag them off the toolbar to convert them into a everything you need to produce the finished result. You online
floating window. can explore options via the File menu or switch to the handbook
to using the
When you click play, you’ll hear the music played Publish tab, where you’ll get a clean view of your score
program – it
back using whichever instruments you’ve allocated to as a double-page spread. Above this you’ll see Print
recently moved
them. These synthesised sounds are adequate, but and Export buttons, from which you can export the to a new home,
some (piano) are more realistic than others (strings). To entire composition or just selected parts in a variety of so bookmark
generate more realistic instruments, check out the box standard formats, including PDF, MIDI and MusicXML. https://
on Muse Sounds (opposite page). You’ll also see options to publish your score online handbook.
MuseScore also enables you to exhibit finer control at MuseScore.com as well as sharing any MP3 file musescore.
over playback through a built-in mixer, which makes it you’ve produced to Audio.com. You need to log into org for future
possible to assign individual channels to each 1%"/")"3+1,+)&+"0"/3& ""#,/"-/, ""!&+$o +"&1%"/ ĨÐãÐĨÐĆÆÐƧ
instrument and adjust their volume (and placement in event, you’re sharing your scores for free, so if they’re
01"/",*&5„,++&+!&3&!2)0&0x1%"01"-v6v01"- not your own composition, make sure you’re not
guide (below) reveals how to set this up. These settings breaching any copyright rules by doing so.

FINE-TUNE PLAYBACK WITH MUSESCORE’S MIXER

Access mixer Basic controls


1 The quickest way to open the mixing desk is to either 2 Each slider enables you to set that channel’s volume
press F10 or click the Mixer button above the main toolbar. This independently of the other instruments in the song. Above this
reveals a series of sliders and dials that represent the individual &0+(+,x14&011%&0)"#1,//&$%11,)1"/1%"&+01/2*"+1}0
instruments – each given its own dedicated channel – in your position in the stereo mix. You can use the M and S buttons at
score. You’ll also see a Master option on the right for making 1%",11,*,#1%"*&5&+$!"0(1,*21",/&0,)1"ƒ00,),„1%"
adjustments that affect the entire composition. channel during playback.

Change sound Add effects


3 By default, MuseScore uses the basic built-in soundfonts 4 MuseScore supports various audio effects – only one of
for each instrument – to change these to a more realistic which is currently available (Muse Reverb). Other audio effects
alternative, such as a Muse Sound file (see the boxout, opposite rely on VST support, which hasn’t yet been officially implemented
page), click Sound. Select MuseSound followed by the instrument in Linux – for a workaround, see the Quick Tip (opposite page).
family, and finally the specific instrument that you wish to assign Once any compatible effects are enabled, you can set their level
to that channel. using the dial.

www.techradar.com/pro/linux June 2025 LXF328 57


TUTORIALS Open documents
Part Two!
Missed an
OPEN DOCUMENTS issue?
Back issues

Generate ODF slides


page 62!

and spreadsheets
Marco Fioretti explains how to create the same office files you can
make with LibreOffice – but without LibreOffice.

his tutorial concludes

T ,2/0 /1 %&+$1%"02/# "


of the OpenDocument
Format (ODF), which makes it easy
1,21,*1& ))6 /"1"0*+6
OUR office files as you need, starting from
a basic template.
EXPERT Like last month, this tutorial will
Marco Fioretti not teach in detail how to write code
is a long-time in some language to accomplish
open source some specific, single-purpose task.
trainer and This is the final part of the proof that
writer, and complex texts, slideshows and
ŔȥࢳŔɽɢǫɭǫȥnj spreadsheets are not black magic
polymath, that only sophisticated office suites
writing about like LibreOffice or Microsoft Office
ŔȍȍࢳʋǠǫȥnjɽƎǫnjǫʋŔȍ can handle… As long as they are in
at https:// the right file format: ODF.
mfioretti.com That’s because, as we discussed
and in detail last time, while the internal
https:mfioretti. components of ODF files are actually
substack.com. verbose piles of text, they remain Figure 1: Unzipping an ODF spreadsheet (1) or slideshow (2), you always get the same three or
just that: plain text. Stuff that, four folders, plus seven files storing the doc’s content, metadata and information.
especially on Linux, anybody with
basic knowledge of the command line and a scripting we outline the main issues to consider when extending
language can generate automatically to fill every need that method to ODF slideshows and spreadsheets. As
they may have. Figure 1 shows, even those files are just zipped
The first tutorial explained the general flow to follow archives, where both the content and most metadata
The fastest, to automatically generate ODF text documents. Here, are in XML format, and images are in a subfolder called
most Pictures (for details on the other components, please
documented see the ODF Files Internals boxout, opposite).
and most
flexible way One template, many slideshows
to convert or Let’s start with slideshows. How can we create lots
resize images
,#!&##"/"+10)&!"0%,40#/,*1%"0*"1"*-)1"n21
on Linux inside
shell scripts
with unique content in each of them? As a practical
is using the example, let’s pretend to be teachers who need to
tools of the quickly create test or homework slideshows for lots
ImageMagick ,#012!"+10n))4&1%1%"0*"01/2 12/"n21" %4&1%
suite, which different questions and images, in a format that
is available in students could immediately edit in ordinary office
the standard suites. For simplicity, we will assume that those
repositories questions and images can be fetched from some
of almost all Figure 2: Creating the reference template for all the slideshows or
spreadsheets you need to generate is simple – just be sure to give database or text file, one at a time. Also for simplicity,
distributions.
each string or image the right amount of space. as the purpose here is to discuss the general approach,

58 LXF328 June 2025 www.linuxformat.com


Open documents TUTORIALS

we will use as reference template the


very simple layout of Figure 2: one slide
with a title (First Slide) and a short bullet
list, and another slide with almost the
same structure, plus an image.
So, how can we automatically create
lots of two-slide presentations like that,
each with different content? The solution
is simple if you read the first tutorial (see
the General ODF Creation Flow boxout,
page 61, for a recap). Of course, the
purpose and layout capabilities of
slideshows are quite different from those
of text documents, but with ODF, this
doesn’t matter much, and we have
already seen why in Figure 1: no matter
what the type of a document is, ODF
partitions and stores all its components
in the same ways and places.
The content of a document, as we saw
last month, is written or linked from the
file called content.xml. The central part of that file for the Tux placeholder image of Figure 2, which – as Figure 3: The
the slideshow of Figure 2 is visible in Figure 3. There visible in Figure 1 – is stored in the Pictures folder of central part of the
content.xml file of
you can see that the body of the presentation starts the ODF archive. the ODF slideshow
with the string <office:body><office:presentation> , This short analysis confirms that the way to solve of Figure 2 is an
+!" %0)&!"&0"*"!!"!"14""+14,1$0n our problem is the same as in the first tutorial: ugly wall of text,
<draw:page... > (1) and </draw:page> . All the strings of Create a reference slideshow, with placeholders such but much simpler
than it seems at
Figure 2 are inside tags called <draw:text-box> : First as TITLE_1, LIST_ITEM_1, FIGURE_1 and so on, for all
first sight, so stick
slide (2), Some item (3), Another item (4) and so on, the text strings or images you want to customise. with us as we talk
all the way down to the texts of the second slide, which Unzip that slideshow in a folder. you through it…
are marked 7 and 8 in Figure 3. Write a script that fetches new values for all those
The tag <draw:image xlink:href=”” ...> (9) says strings from some data source, and writes them in all
instead where to place the image. It contains the link to the right places inside content.xml.
Zip the result and save it with a unique name.
The only real difference from the text document
ODF FILE INTERNALS example of last month is that with slideshows you must
be very careful with the sizes of every blob of text that
In spite of their filename extension, ODF files has to go in every text box, and with the size of every
/"01+!/! / %&3"0,##,2/#,)!"/0+! picture. This means three things. First, if a sample
some plain text files in XML or RDF format. image in the reference template has a size of 300x500
,1%#,)!"/0+!#&)"0/"3&0&)"&+Figure 1. The pixels, all the images to insert in the same place in
folders, called Configurations2, META-INF, every clone of the template should be converted to
Pictures and Thumbnails, contain configuration that size before placing them in the ODF file.
information, a manifest that lists all the other Second, you should be sure to create a template
main components, all the images embedded in with placeholders that, instead of being as short as
the document, and their thumbnails. The images those in Figure 2, are as long as the longest strings
are not stored with their original names, but with 6,2*&$%1/"-) "1%"*4&1%o,&+$,1%"/4&0"4,2)!
unique alphanumerical identifiers that ODF apps mean, for example, that some of the slides you
create on the spot, with criteria that are not generate would have text that overwrites the image. Whenever you
relevant as far as this tutorial is concerned. Finally, if the clones of the template of Figure 2 need to write
The purpose of the files is as follows: manifest. might have bullet lists with a variable number of scripts that
rdf is another list of the main components of the &1"*0n6,2+""!1,#,)),41%"0*"01/1"$61%14&)) generate files in
document, while mimetype declares the file type, "!&0 200"!&+1%"+"51"5*-)"#,/0-/"!0%""10 the CSV format,
such as text, spreadsheet or slideshow; settings. with a variable number of non-empty rows. consider
using the pipe
xml lists all the configuration variables defined
character as
for the document, from how to print it to zoom Fixed layouts field delimiter,
levels; finally, all formatting information, such as The same general procedure outlined for texts and instead of
line spacing, text alignments, fonts and so on, slideshows can be applied to ODF spreadsheets, commas. That
goes in the styles.xml file. The actual content of 0),+$06,2-60-" &)11"+1&,+1, ,2-)",# will make your
the document is stored inside content.xml, as spreadsheet-specific issues, which don’t even depend code simpler,
explained in these pages, and the file meta.xml on the file format. because pipes
contains all the metadata that you can see and The first one is the very reason why spreadsheets never occur
edit manually in LibreOffice by clicking on File > were invented – that is, to have formulas that in normal
/,-"/1&"0–"0 /&-1&,+o automatically recalculate the content of the cell they sentences
ČĨǏĆķąÅÐĨĬƧ
are in, every time any of the cells that it references are

www.techradar.com/pro/linux June 2025 LXF328 59


TUTORIALS Open documents

Brown Team strings of Figure 4.


06,2 +0""&+Figure 6, ODF
describes the extension of such
cells in the spreadsheet grid with
attributes like table:number-
columns-spanned=”1” and
table:number-rows-spanned=”6 ,
which are the ODF way to tell
spreadsheet software to always
draw this cell one column wide and
six rows tall.
If you are sure that all the
spreadsheets you need to
$"+"/1"#/,*+61"*-)1")&("1%"
one in Figure 4 will have the same
number of rows and columns, you
can safely ignore those attributes.
%1&0n6,2 +$"+"/1"0*+6
spreadsheets you need from that
template, each with different texts
in each cell, by simply creating a
reference spreadsheet by hand,
with placeholders like TEAM_1,
TEAM_MEMBER_1 and so on in
))1%"/&$%1-) "0n+!1%"+4/&1"
0 /&-11%1/"-) "0))1%,0"
Figure 4: Bulk updated. The other is that cells whose extension is not strings with the right values and zips the result as one
generation of ODF spreadsheet.
defined properly may diminish the readability of their
spreadsheets
is as easy as spreadsheets even more than slideshow text boxes However, if teams might have different numbers
that of text filled with too much content. ,#*"*"/0n1%"0 /&-10%,2)! %+$"0201+1&))6o
documents… Figure 4 shows a spreadsheet without any formulas ,"$&+4&1%n"3"/6 ")) ,+1&+&+$1"*+*"
As long as all that a trainer could use to log which members of two should always span over all and only the rows that
copies have
exactly the
teams attend each training session, or have passed )&01*"*"/0,#1%11"*o,*("1%&0%--"+n1%"
same layout! certain tests. What could go wrong if we just used content.xml file should be modified manually, after
exactly the same procedure we already know to creating the initial spreadsheet template with
automatically generate lots of spreadsheets like that, LibreOffice. More precisely, you should replace any
each with different team names, and team members in definition of spanned rows or columns to something
the same cells? like table:number-rows-spanned=”MEMBERS_
The answer is in how ODF describes spreadsheet NUMBER_1” , and your code should replace that
cells. As you can see in Figure 5, each cell starts with placeholder with the correct value every time it
1$)&(" <table:table-cell...> that defines what its generates a new spreadsheet.
content is (in this case, a text string), and encloses In addition, instead of just replacing the name
another tag holding the visible content of that cell (for placeholders like TEAM_MEMBER_1 that are inside
example, <text:p>David</text:p> ). Other tags mark the some cells, your code should insert inside content.xml
beginning and end of each row. It’s really verbose, as is a whole row for each team member, that is all the text
anything ODF, but there’s nothing particularly difficult highlighted in blue in Figure 5, obviously with the actual
so far, right? name of that person. Ditto for the second team, of
However, things may quickly get more complicated course. Also, your code would need to generate the
when there are merged cells that span multiple rows or correct progressive numbers in column A.
columns, like the ones containing the Green Team and
The screenshots What about formulas?
in this tutorial The left-hand side of Figure 7 shows what end users
show ODF ,#0-/"!0%""1-/,$/*00""+!*201!,&+,/!"/1,
source code have cells whose content is dynamically updated by
inside the Kate
executing some formula each time any of the cells it
editor, which
is the default
points to changes: if cell B2 must contain the sum of
on the author’s cells A1, A2 and A3, we can just type =SUM(A1:A3)
computer. If inside it. When we do that, the description of that
you need to "))&+1%"content.xml file will still wrap a tag with
edit large XML 1%"20"/v3&0&)" ,+1"+1ƒ <text:p>67.87</text:p> ), as
files, however, &+1%"-/"3&,20"5*-)"o ,4"3"/n03&0&)"&+1%"
Emacs with right-hand side of Figure 7, the cell will also contain
proper syntax +11/&21"4&1%1%"#,/*2)1%1*201"20"!1,
colouring is a recalculate that value whenever it’s needed, that is
better choice. Figure 5: The cells containing the first two members of the Green
Team of Figure 4, David and Simon, are defined with this XML code. table:formula=”of:=SUM([.A1:.A3])” .

60 LXF328 June 2025 www.linuxformat.com


Open documents TUTORIALS

The good news is that, as


with everything else in ODF,
even spreadsheet formulas are
good old plain text that we can
easily insert or edit wherever
and however we want, as long
04"/"0-" 11%"&/06+15o%"
bad news is that automatic
generation of ODF spreadsheets
with formulas can get quite
complicated if the range of cells pointed to by a 23.45,=SUM(A1:A3) Figure 6: Any
cell that spans
formula can vary. 58.17
multiple rows
Taking Figure 7 as an example again, creating a -13.75 or columns,
thousand spreadsheets, each with three unique This is less than 30 bytes, versus the eight like the Green
numbers in cells A1 to A3, and the formula for their thousand-plus bytes of the ODF version. Team one of
sum in cell B2, would be another application of the What really matters here is that LibreOffice can also Figure 4, has
extra attributes
same method discussed multiple times so far. This is do the opposite – that is, load files like that and convert that define
because, while the script generating the spreadsheets them to fully functional spreadsheets, to which you can ìijĬǏÐŐijÐĆĬìČĆƧ
would have to place three different numbers in cells A1 add charts, macros and any advanced formatting you
to A3 each time, the formula attribute of cell B2 would want. Even better, it can do it automatically from inside
always be table:formula=”of:=SUM([.A1:.A3])” . But if a shell script, without starting the graphical interface:
the script had to generate spreadsheets with more or $ soffice --convert-to ods sample-file.csv
fewer than three numbers in the first column, it would In other words, if you have to generate multiple
also have to change the A3 index in the formula  0-/"!0%""104&1%#,/*2)01%10-+3/&)"
attribute accordingly. Things would get even more "))/+$"0n6,2 + /"1"1%"*0#&)"0o"&+$
complex if you wanted to generate spreadsheets with orders of magnitude smaller, these are much easier to
formulas that point to cells that contain other formulas. generate and debug, and you can still convert them
It is possible to avoid much of this complexity by 1,#2))6v#)"!$"! !, 2*"+104&1%'201,+""51/)&+"
generating the spreadsheets as plain text files in of code. Aren’t ODF and LibreOffice wonderful?
ƒ ,**v0"-/1"!3)2"0„#,/*1n+!1%"+
automatically converting them to ODF with LibreOffice.
Let’s look at Figure 8 to see why this strategy makes
sense. What you see there is that when you ask
LibreOffice to save a spreadsheet in CSV format, you
can tell it to copy to that file all the formulas, instead of
their results. Doing that conversion on the spreadsheet
of Figure 7 produces a CSV file like this:

Figure 8: Save any


spreadsheet in
CSV format, with
all its formulas.
This shows how
to automatically
create
spreadsheets in
a different, but
Figure 7: In ODF format, all formulas users write inside spreadsheet sometimes much
cells are stored inside the table:formula attribute of that cell. simpler way.

GENERAL ODF CREATION FLOW


Except the spreadsheet tutorial, and shortly Fetch all the texts to insert move them into the
discussed at the very end of summarised here for in the new ODF file from Pictures02#,)!"/,#
this tutorial, almost every set 6,2/ ,+3"+&"+ "p some data source. 1%"/"#"/"+ "#,)!"/o
of ODF documents with the Make a reference template Make a copy of the Zip the whole reference
same structure but different with LibreOffice, which reference folder of the first folder, which now contains all
data can be generated by contains text or graphic step, and replace all the the new content.
multiple runs of a script placeholders for all the text 1"51-) "%,)!"/0&+&10 Save the resulting file
1%1 +"4/&11"+&++6 and images you need to have content.xml file with the data 4&1%2+&.2"+*"+!1%"
programming language, as in your file. retrieved in the third step. right ODF extension (.odt for
long as it has the structure +- (1%1#&)"0  Make copies of all the texts, .ods for spreadsheets
discussed in detail in the first archive in a reference folder. images, resize them, and and .odp for presentations).

www.techradar.com/pro/linux June 2025 LXF328 61


BACK ISSUES

BACK ISSUES MISSED ONE?


ISSUE 327 ISSUE 326 ISSUE 325
May 2025 April 2025 March 2025

Product code: Product code: Product code:


LXFDB0327 LXFDB0326 LXFDB0325

In the magazine In the magazine In the magazine


Make Linux Join our Protect your
mobile by installing it on your Hacking Academy and discover all network with our in-depth guide to
phone. Plus, discover how you can the tools and techniques to get firewalling your home, and take a
draw in the terminal, secure your started. Plus, find out which power deep dive into Intel’s new Arc series
backups in the cloud, monitor your distro is the best, read our interview of GPUs. You can also discover how
health the open source way, and with the Wireshark founders, to up your password security,
choose the perfect 3D printer. Also, defend your network against AI contribute to OpenStreetMap,
read all about the best Ubuntu threats, run Android apps on Linux, stream audio with Auracast, relive
alternatives, dive into our brand- and learn about the hardware that the world of data punch cards, and
new hacking section, learn about made Linux great. You’ll also find upgrade your router. Plus, discover
Nvidia’s new GPUs, and catch up on our usual news and reviews, along the best screen recorder, catch up
the latest Linux and Pi news. with a packed Pi section and more. with open source news, and more.

ISSUE 324 ISSUE 323 ISSUE 322


February 2025 January 2025 December 2024

Product code: Product code: Product code:


LXFDB0324 LXFDB0323 LXFDB0322

In the magazine In the magazine In the magazine


Get inside open Follow our pick Power up the
AI and discover how to train your of Raspberry Pi projects and kick- latest version of Fedora, and join our
own chatbot, as well as find out start your maker hobby. Plus, learn meditation on AMD’s new Zen 5
which existing free chatbot we all about Fyne, the toolkit that architecture. Plus, find out which is
think is the best in our Roundup. makes it easy to build cross- the best big-name browser, code
Plus, take a step back in time with platform apps. We also take a look your own captcha, create a mesh
our look at plotters, build your own at five of the best IDEs, and some of VPN, manage your ebook library,
Steam Deck alternative, explore the the latest distro releases. And you capture infrared photos on your Pi,
new Pi 500, code your own Space can get stuck in with tutorials on upgrade your memory, and much
Invaders game, take a look at the rescuing deleted files, backing up more. And we also have our usual
latest distro releases, catch up on web pages, getting involved with packed news section with all the
open source news, and loads more. OpenStreetMap, and much more. latest from the open source world.

To order, visit www.magazinesdirect.com


Select Single Issues from the tab menu, then select Linux Format.

Or call the back issues hotline on 0330 333 1113


or +44 (0)330 333 1113 for overseas orders.
Quote the product code shown above and have your credit or debit card details ready.

62 LXF328 June 2025 www.linuxformat.com


0ɴȵǼ ǣ Ɏǝ ȸǣ Ƴ ɯǝ Ǹ ɀ ƺƏƬǝ ƺ ǔ ‫ټ‬ Ȓɖ‫ټ‬ǼǼ
Ȓ ǣ ِ Xǔ Ə ȇƺɯƬȒȅ ً Ȓǔ Ȓ ɀ ‫ٹي‬
Ƴ ƺȸ ɎȒ ǕȒ ƏǼȒȇƺً ƺ ‫ٺ‬

³ǝȒȵ ƺƏɀǣǼɵ ȒȇǼǣȇƺ ƏɎ‫ي‬


ƫǣɎِǼɵٖ‫ב‬ɴƫ Jæȷ
TUTORIALS Health tracking
Part two!
Missed an
issue?
Back issues

HEALTH MONITORING page 62!

Create custom health


tracking graphs
Everyone loves making custom graphs from their weird health glitches –
Michael Reed explains how he does it!

ast issue, we examined

L some applications that


+%")-6,2/" ,/!
information about your workouts,
sleep schedule and activity levels
OUR on your computer. This time, we’re
going to look at processing and
EXPERT visualising that data, mainly using
Michael Reed the Python programming language.
has a Many apps that record data can
neurological also plot the data, giving you an
condition that overview, but sometimes, you have
means he does niche requirements. This is where
it all night long Python comes in, as it gives you a
about 50% of great deal of manual control over
the time - how you handle the data and how Plotting a simple example with made-up data. Matplotlib works out optimal x and y axis labels.
programming, you plot it. Most logging software
that is. can export its data into a format such as CSV (comma- python3-matplotlib, python3-numpy, python3-
separated values), JSON (JavaScript Object Notation) scipy, python3-matplotlib and python3-dateutil.
or XML, and Python has modules that import these. We’ll assume that you’re using Visual Studio Code
You’d be amazed how easy it is to use Python to plot as your editor. You can add this in a number of ways,
data as a graph, once you’ve set it up and installed the but the most problem-free approach is to download
requisite modules. Often, visualisation allows you to the DEB or RPM file from the official website (https://
see patterns and trends that aren’t otherwise obvious. code.visualstudio.com) and install it manually.
Matplotlib is the library that handles the plotting, and
nearly every aspect of your plots can be customised. Plotting data
Once you know the basics, you might even find it easier Create a new text file in Visual Studio Code (File > New
than using a spreadsheet to plot data. Text File) and save it as PlotExample.py. When you
save a source code file in Visual Studio Code, it
Python environment guesses the language from the file extension and
Some distributions have the Python programming switches into the appropriate editing mode.
language installed by default, and if not, it’s possible It’s a good idea to test the setup before attempting
that it will have been installed as a dependency of something more complicated. Add the following as the
another package. The simplest way of determining if first line of code in the text file: print (“Hello world”)
&1&0&+01))"!&01,16-" python -V into a terminal. Run it (F5). If everything’s working, it should run and
Visual Studio
Code displays a It’s easy to install on most distributions by using the print ‘Hello World’ in the terminal panel at the bottom
pop-up offering package manager. Python 3 was released in 2008, but of Visual Studio Code’s window. This means you have a
to install Python because there were significant changes to how the working development environment.
language language worked, Python 2 hung around for quite a Plotting data in Python is extremely simple. The
extensions. We long time. As a result, you typically have to specifically #&/0101$"&01,&*-,/10,*"*,!2)"0n4%& %&0!,+"6
recommend install the Python 3 package using a command such as placing the following at the top of the source code file:
allowing this sudo apt install python3 (Ubuntu). import pandas as pd
because they In this case, we’re going to install the Python import matplotlib.pyplot as plt
are extremely
modules that we need, globally, to the entire system. These are two of the main modules used for data
helpful.
Use your package manager to install these packages: science programming in Python. Pandas is for handling

64 LXF328 June 2025 www.linuxformat.com


Health tracking TUTORIALS

data sets, and Matplotlib is for plotting data as graphs.


You access the functions in those libraries by using the
abbreviated forms (such as ‘pd’ for Pandas).
We’ll start by creating a data set by hand, just to
experiment with. The only limitation of what data you
can plot is that there has to be an equal number of
elements in the x and y axes. For now, we’ll generate
the y axis (height) data for a graph and let Python do
the rest. Add the following code: y= [2,4,6,10,15,19,34]
This is an example of one of Python’s built-in data
types, lists. You can examine this data by adding print
(y) underneath the list assignments. This should
output the following: [2, 4, 6, 10, 15, 19, 34]
To plot this data as a line graph, using Matplotlib,
add the following code to the bottom of the file:
plt.plot(y) This runner experienced an injury and gradually started to work his
plt.show() way back to fitness – times (blue), smoothed (orange).
This should pop up a Matplotlib window with a line
graph resembling the one in the illustration (opposite). structure, the dataframe. Think of dataframes as
This is an example of data visualisation. Matplotlib spreadsheets that exist inside your Python program.
+4,/(,211%&+$0)&("1%"/+$",#1%"5&0)")0 You can access columns within a dataframe just as
automatically for you, although you can override these easily as working with lists.
defaults if you need to. In addition, we didn’t create any Let’s say you wanted to display the content of a
x axis data as we let Matplotlib create it on the fly. jogging record. The format is CSV, and there are 78
entries. Column 0 (called Dates) contains the dates
Importing a data set +! ,)2*+9ƒ ))"!&*"0„ ,+1&+01%"!2/1&,+,#
You won’t typically be adding reams of data directly the run in hours, minutes and seconds. Create a new Visual Studio
into your Python scripts. Generally, you import the data Python source code file and import Pandas, Numpy Code’s Python
from a file or online resource, and Pandas makes this and Matplotlib as before. extensions
very easy. For example, CSV files are a common type of df = pd.read_csv(‘../datasets/jogging.csv’, usecols = make use of
data file and they can be imported and exported to and [‘Dates’, ‘Times’]) the IntelliSense
from most spreadsheet files. print (df) system,
Pandas provides the facilities that we’re looking This code loads a CSV file into a dataframe called df. providing code
#,/&#4"4+11,4,/(4&1%*,01 ,**,+16-"0,# Printing this out looks good, but there’s a problem as completion in
the form of a
data files, such as CSV, Excel and ODS. Pandas doesn’t CSV files like this tend to store the dates and times as
pop-up menu.
use Python’s list data type, instead using its own data strings rather than as numbers, and this means we

PYTHON FOR PERSONAL RESEARCH


To get personal for a moment, Python to visualise data and later and later, which is ,1%"/1%+9n<<8*&+21"0
the author of this article has a assist with research. interesting, but it’s difficult to ƒ:<%,2/0„o
circadian rhythm disorder, a If he uses a commercial search for patterns. With a 6!!&+$+"51/98:
neurological disorder that health tracker app to log script like the one that we’ve minutes, his sleep pattern
means his days are +!$/-%%&0!1n&10%,40 shown here, it’s easy to set flattens out and runs flat for
abnormally long. He uses subsequent days starting the day length to something as long as nine months at a
time. Apart from making
1%"!1"0&"/1,012!6#,/
patterns, doing this proves
something. Everyone with this
!&0,/!"/ƒ+,+v:<v%,2/0)""-
wake disorder) has a different
day length. The point of all
this is that if the pattern is
reasonably mathematically
consistent over long periods,
it’s impossible for there to be
a psychological or behavioural
component. This is the type
of discovery you can make as
a ‘citizen scientist’ armed with
a bit of knowledge of Python
and Matplotlib.
The author’s sleep pattern: five-year plot; 24-hour days (top); 25.7-hour days (bottom).

www.techradar.com/pro/linux June 2025 LXF328 65


TUTORIALS Health tracking

A sleep pattern as recorded by a mobile phone app. Data fitted to


1,440-minute days and plotted with Matplotlib

Plotting the have to do some conversions so we can convert this totalMinutes.append(int(minutes) + int
jogging data as a
bar graph instead.
into a total number of minutes for graphing. (hours))
Smoothed average
in black. Extracting the time Plotting the data
Thankfully, Python has a function for splitting strings You can then plot with:
separated by a delimiter. Let’s say that we assigned the plt.plot(totalMinutes)
time ‘0:36:00’ to a string variable called time. We can plt.show()
extract the individual parts of that time with: You can plot extra data by issuing another plot
time = ‘0:36:00’ command. Let’s say we want to superimpose a
hours, minutes, seconds = time.spit(‘:’) smoothed (averaged) version of these running times
This extracts the values that are stored in the string, over the top of the other plot. Create a list of smoothed
separated by the : character, to the variables hours, values using the uniform_filter1d function in Scipy by
minutes and seconds. These are still strings, but it’s adding the following at the top of the source file:
easy to convert between strings and numbers in from scipy.ndimage import uniform_filter1d
Python using the int() function. The total number of Add the following before the plot calls: smoothed =
minutes is: uniform_filter1d(totalMinutes, size = 10) to create a
totalMinutes = int(hours * 60) + int (minutes) smoothed version of the data set. After the first plot
In other words, the total number of minutes is the command, add the following line: plt.plot(smoothed)
total number of hours multiplied by 60 plus the number In languages such as Java, what we’ve done might
of minutes. We’ll leave off seconds for our purpose. require a lot of code for things like opening and closing
That small example extracts the values from a single the file. Python accomplishes importing the modules
time string. But, to be useful, our program must extract we need, loading data from a CSV file and plotting it on
the Times column into a Python list and then loop screen in several lines of code without dragging us into
around every entry to process it: the technicalities of how it all works at a low level.
times = df[‘Times’].tolist()
for counter in range(len(times)): Sleep data
totalTime = times[counter] Typical sleep data presents a few extra problems
hours, minutes,seconds = totalTime.split(‘:’) compared to the simple jogging data example. We’ll

R: AN EASIER ALTERNATIVE?
R is a statistical programming You can put together a
language. Python, on the great environment for data
other hand, is a general- analysis and visualisation by
purpose programming pairing R with RStudio. This
language. When learning data editor environment is in most
science programming, R is, distro repos, and it divides the
generally, easier to learn than screen into panels for source
Python. In most cases, R has code, variables and plots.
fewer ways of doing things If you’re working with data
than Python and much of processing and visualisation,
what you are likely to need you can probably get more
&02&)1&+6!"#2)1o%1}0 done, more quickly with R.
not to say that Python isn’t The downside is that it’s
popular with data scientists, +,1$"+"/)v-2/-,0" RStudio’s interface defaults to giving you panels for code, variables and plots.
but you’re constantly having language. For comparison, if
to learn how to work around you invest an hour in Python difficult, but you are and your programming skills
Python’s way of doing things. programming, it may be more improving your Python skills in general.

66 LXF328 June 2025 www.linuxformat.com


Health tracking TUTORIALS

use the exported output from a sleep monitoring app A spreadsheet like
(or a fitness band). We begin by importing the CSV file LibreOffice Calc is
often the easiest
into a dataframe that we can work with: tool for cleaning
df = pd.readCSV(‘sleep.csv’, usecols [‘From’,’To’ ]) and arranging the
Here is a line of data from the file: data before using it
Index ID 2540 1583846984157 in Python code.
From 10. 03. 2020 13:29
End 10. 03. 2020 17:40
We’re not interested in the index number or the ID
for the entry, but we do need to know the sleep event
start time (From) and the sleep event end time (End).
As before, the date and time data is stored as a string.
We can’t use the simple approach of splitting the
string up this time, but Python has a method to convert
a string to a datetime object. Data conversion is
another area in which Python has become popular as it
handles situations like this so easily.
The first thing we need to work out is the date dateformat = “%d. %m. %Y %H:%M”
format. In Python terms it’s: “%d. %m. %Y %H:%M”. daylength = 1440
Where there’s a space in the source string, there needs This first half of the code sets things up. It imports When it comes
to be a corresponding space in the format string. the four modules that we’re going to use. It imports the to working
date_obj = datetime.strptime(date_str, “%d. %m. %Y CSV file with the sleep data into a dataframe. It then out the date
format string,
%H:%M”) sets up four lists for the starts, ends and lengths of
an AI chat can
The above line of code extracts the date from each sleep event, and for the storage of each day
be extremely
1%"01/&+$ ))"! date_str and places it in a datetime number. Following this, it creates a string variable helpful. We
object called date_obj. You can work with any format containing the date format string (dateformat) and a gave ChatGPT
for times and dates, if you can come up with an variable containing the number of minutes in a day. an example
appropriate date format string. Storing these in variables is handy as we can make date time, and
Languages like Python store times as the number of changes to the entire program by simply changing the ìijǏÌìÌǎijéÐǎĨÐĬijƧ
0" ,+!00&+ "901 +2/69A?8n(+,4+01%"+&5 line containing the variable assignment.
Epoch. It might sound like these numbers are huge, for counter in range(len(df[‘From’])):
21*,!"/+;:,/><v&1 ,*-21"/0 +%+!)"1%"* StartString = df[‘From’].iloc[counter]
easily. You can extract this number from the datetime StartTime = datetime.timestamp((datetime.
object, and this is called a timestamp. Once we have strptime(StartString, dateformat)))
the numbers, we can start to do maths with them. StartTime /= 60
date_stamp = datetime.timestamp(date_obj) StartMinutesCorrected = StartTime %
day = int (date_stamp / 60) daylength
time = int (date_stamp / 60 % 1440) days.append(int(StartTime / daylength ))
We convert the timestamp from seconds to EndString = df[‘To’].iloc[counter]
minutes by dividing by 60. Although computers can EndTime = datetime.timestamp((datetime.
handle times as seconds since the Unix Epoch, for strptime(EndString, dateformat)))
humans, minutes are easier to deal with if we need to EndTime /= 60
inspect the data manually. We then use the modulo EndMinutesCorrected = EndTime %
operator. Once you have divided a timestamp by 60, if daylength
6,2!&3&!"&1$&+69n<<8ƒ1%"+2*"/,#*&+21"0&+ ends.append(EndMinutesCorrected)
day) and round it to a whole number, this gives you the starts.append(StartMinutesCorrected)
number of days since the Unix Epoch. The remainder lengths.append(EndTime - StartTime)
of the division is how far into the day the event is, in This sets up a loop that goes around the same
minutes, and the modulo operator (%) gives you this. number of times as there are entries in the From
When plotting as a bar graph, the day is the x axis of column of the data. We need to know three things
the graph, the sleep start is the bottom of a bar and the about each sleep event: its day, start time and length.
length of a sleep is the length of the bar. We can work out the length by subtracting the start
Here’s the finished program: time from the end time. Once we have calculated these
import numpy as np three bits of data, we append them to their lists.
import pandas as pd plt.bar (days, bottom=starts, height=lengths)
import matplotlib.pyplot as plt plt.show()
from datetime import datetime Finally, we plot the graph. We’re just scratching the
df = pd.read_csv(‘sleep.csv’) surface of what Matplotlib is capable of in terms of
starts = [] producing graphs for unusual situations. In this case,
ends = [] we use the optional parameter, bottom, to control the
lengths = [] bottom part of each bar, something that’s difficult to
days = [] do in a typical spreadsheet.

THINGS TO PUT YOU TO SLEEP: Get great deals at www.magazinesdirect.com

www.techradar.com/pro/linux June 2025 LXF328 67


TUTORIALS Linux hardware

Part Three!
LINUX HARDWARE Missed an
issue?

The hardware that


Back issues
page 62!

made Linux great


After the 8-bit computing boom of the ’80s, enthusiasts moved to more
capable 16-bit systems, able to run Linux. Mike Bedford investigates.

%""/)69A@80*/("!

T sea change in the world of


computers. Thanks to the
likes of the BBC Micro and the ZX
Spectrum, the dream of owning
OUR +!-/,$/**&+$ ,*-21"/
turned into a possibility. And that
EXPERT possibility became a reality for
Mike Bedford *&))&,+0o%"301*',/&16,#1%"0"
migrated home computers were based on
ljɭȶȟࢳŔȥࠇ࢛Źǫʋ 6502 or Z80 processors. Even if
Linux had been around at the time,

CREDIT: nv;o8n%11-0pšš ,**,+0o4&(&*"!&o,/$š4&(&š &)"p,1,/,)u>@8;8u;:v&1u*& /,-/, "00,/o'-$


þŔȥnjơɭǫȥơ
¡ǫƃɭȶʋŔȥʋȶŔ though, it wouldn’t have found its
ࠁࠇࠅ࢛ŹŔɽơƎá-࡬ way on to these machines because
ɽȶǠơȟǫɽɽơƎ of their 8-bit processors, minimal
ȶʠʋȶȥʋǠơ memory capacity, and lack of a There are several Amiga and Atari ST emulators online, like this one at
ȍŔʋơɭࢳǠȶȟơ %/!!&0(o01%"!" !"!/"41, éijijĥƩƴƴÐĬijőùĬƧ­řķĨÐŋÐÅĬìijÐĬƧĆÐijƨǎ­ÿijéČķäéǎąČĬijǎ­ĨÐǎä­ąÐĬǎČĨìÐĆij­ijÐÌƧ
ƃȶȟɢʠʋơɭɽࡳ close, though, new machines were
qȶˁơʽơɭ࡬ targeting the computer enthusiast. These machines end of this period, PCs started to be used in the home
Ǡơࢬɽࢳˁơȍȍ had what it took to support Linux, and that operating and, for some users, they filled the same niche as
ʽơɭɽơƎࢳǫȥʋǠơ system would soon become available. home computers. They were designed mainly to
ɢɭȶƃơɽɽȶɭɽʋǠŔʋ Here we look at how Linux migrated to the home, address the business market, though, so we’re not
ɢȶˁơɭơƎʋǠơȟࡳ 01/1&+$&+1%""/)6}A80n+!11%"0" ,+!$"+"/1&,+ going to discuss them here. However, we did look at
of home computers that facilitated that move. In the Linux on x86 processors, by far the most common chip
main, we’re looking at machines that were empowered to have been used in PCs, in the first part of this series.
The Motorola
68000 series by the Motorola 68000 family processors. However,
brought 16/32-bit these weren’t the only computers used in the home Introducing the Motorola 68000
computing to the that were able to run Linux. We’re mixing our The story of Intel’s progression from 4-bit through to
home and, with terminology here, though, so let’s explain. 32-bit and eventually 64-bit processors is well known.
the introduction
of the 68030, Our main theme in this article is home computers In fact, we examined the timeline in the first part of this
Linux became &+1%"&/%"6!6n211%1}0+,1+" "00/&)61%"0*" series to see where the 80386 fitted in, that being the
­ǏĥČĬĬìÅìÿìijőƧ 0 ,*-21"/01%1/"20"!&+1%"%,*"o%,*" processor that gave birth to Linux. But in those early
computer is one that was designed, days, there was another semiconductor manufacturer
first and foremost, for use in the that was following a somewhat similar path. And we’re
home by enthusiasts. And while not talking about AMD, because it mainly adhered to
some of them were used for the x86 approach, as pioneered by Intel. Instead, the
serious applications such as word company we have in mind didn’t follow Intel’s lead, but
processing, they were, in the main, developed its own ISA. That company was Motorola.
intended to help technically- Today we associate that name with mobile phones,
minded people learn about 21 (&+1%"}?80n}@80+!}A80n&140*',/
computers. These machines first manufacturer of microprocessors. In particular,
--"/"!&+1%"}?80214"/" alongside Intel, Motorola was one the two main
hugely expensive. They became supporters of the CISC (Complicated Instruction Set)
affordable in the ’80s, and largely philosophy. This, of course, differentiated Motorola
!&"!,21&+1%"}A80o,4/!01%" +! +1")#/,*1%"!3, 1"0,#1%" ƒ"!2 "!

68 LXF328 June 2025 www.linuxformat.com


Linux hardware TUTORIALS

Instruction Set) approach, which we delved into 4&1%'201#"4"5 "-1&,+0n ,*-1&&)&16 ,+1&+2"!
)01*,+1%o throughout the whole of the 68xxx family of chips.
Motorola processors first hit the market with the %")1"/0" ,+!v$"+"/1&,+>@8;8%!*"*,/6 There are
@v&1>@88n (&+9A?<n+!4" +1%&+(,#1%10 management unit. several
fulfilling the same niche as Intel’s 8080. The company We’re not going to give a detailed description of the emulators
*&$/1"!1,9>š;:v&14&1%1%">@888&+9A?An1%" continued development of the 68xxx, but here are the available for
the Amiga and
implication in the name, it’s been suggested, was that highlights. The third generation was heralded by the
Atari ST. For
&140981&*"0#01"/1%+1%">@88o%&0 %&-40 68040, which had a floating point unit, and clock
something
1," ,*"1%"#&/01,#0"/&"0,#>@555-/, "00,/0n 0-""!02-1,<8 7o+!1%"9AA<>@8>8n4%& % you’re only
,1%"/4&0"(+,4+0*>@(n'20101%" +1")@8@> 401%"#&/01#,2/1%v$"+"/1&,+-/, "00,/n*,01)6%! going to use
became the first of the x86 family of chips. Clock %+$"01%14"/"%&!!"+1,1%"20"/x#,/"5*-)"n on the odd
speeds from 4MHz to 20MHz were available. 98v01$"-&-")&+"+!/+ %-/"!& 1&,+x-)20 occasion,
What did 16/32-bit mean? A rather strange mix *5&*2*?= 7 ), (0-""!o"11%"0" %+$"0 we’d normally
really, and more of a mix than Intel had adopted. When certainly brought performance gains. The 68060 suggest you
it first introduced a 16-bit processor, and again when it 40--/,5&*1")6=8#01"/1%+1%">@8<811%" use an online
introduced a 32-bit chip, Intel offered variants with same clock speed. But when we take the maximum emulator, but
most of those
narrower external data buses than their internal data available clock speed into account, it was about three
only allow you
buses. This allowed cheaper external components and times as fast. And since the launch of the 68000,
to run games
memory to be used. The 68000 was much more of a users benefitted from a 30-fold speed increase. and demos.
mix than that, though. It had 32-bit registers and a When we looked the beginnings of Linux a couple However,
32-bit instruction set, but pretty much everything of months ago, we learned that Linux inventor Linus there are full
")0"x1%1}01%"!120"0n&+1"/+)+!"51"/+)n Torvalds considered the 80386 to have been the first emulators for
+!"3"+1%"x409>&104&!"o""!)"001, serious x86 processor. This, in turn, made it a suitable both platforms
06n1%,2$%n1%"!!/"0020404&!"/o1:<&10n&1 platform on which to that will run
allowed 16MB of memory to be accessed. develop and launch Linux. under Linux.
%">@8:8n)2+ %"!&+9A@<n401%"#&/01,# However, there are
1%"0" ,+!v$"+"/1&,+>@555-/, "00,/0n+!&1 indications that he held Starting in the
represented a significant milestone. There was no 68xxx processors in the Ì­őĬǏČãǎìijĬǎČĨìäìĆ­ÿǎ
and unique form
more confusing mixture of ‘bitness’; the 68020 was same regard. Indeed, it factor, the Apple
genuinely a 32-bit processor. In addition to having didn’t take long for Linux Mac has used no
;:v&1!120"0n&+1"/+))6+!"51"/+))6n+!;:v&1 to be ported to this ISA. fewer than four
n1%"!!/"0020&+ /"0"!1,;:&10n1%"/"6 After all, before they ĥĨČÆÐĬĬČĨǎã­ąìÿìÐĬƧǎ
increasing the addressable memory capacity to 4GB. migrated to the various
The clock speed increased, too, topping out at 33MHz.   %&-0,#1%"}@80n
CREDIT: Giovanni Cardona, CC BY 2.0, https://commons.wikimedia.org/wiki/File:Amiga_3000_(medley).JPG

Critically, these improvements weren’t only on offer to high-end


those users who were willing to rewrite their 68000 engineering
code. Because the 68000 had 32-bit instructions, workstations
software written for the 68000 could be used pretty %!*,01)6
much unchanged, yet still benefit from the improved standardised
performance that the new processor offered. Indeed, on the 68xxx

A 1982 HOME COMPUTER


The early ’80s might be known as the heyday of home computing,
but those were all 8-bit machines. Or were they? Alongside the
%,*"v$/,4+}@80 ,*-21"/0n1%"+!6v@840.2&1"
-,-2)/&+1%"n!"0-&1"&10%&$%"/-/& "1$o&("*+6,#&10
contemporaries, it used the 8-bit Zilog Z80 processor. However, that
40'2011%"01/1x01&*"4"+1,+n&1)0,"*/ "!,1,/,) %&-0o
%""01(+,4+,1,/,)v0"!v@8401%"v@8,),/
,*-21"/n4%& %20"!1%"@v&1>@8Ao21+!6/,2$%1,21#"4
v@83/&+100"!,+1%">@8880),+$$,09A@:o/+!"!
1%"v@8,!")9>+!9>n+!+!6>888n1%"0")0,&+ )2!"!
a Z80 processor, to provide compatibility with software written for
"/)&"/v@8 ,*-21"/0o +1%")1"}?80n1%")&+""14""+%,*"
+!20&+"00 ,*-21"/0400,*"4%1$/"6n+!v@8*,!")0
did attract some business users. With the 68000-based models,
business users became more prominent, but we assume they were
also used by well-heeled hobbyists. Despite the 68000 processor
family being one of the first to be supported by Linux, these Tandy
computers appeared almost a decade too early. The closest users
would have come to that in these pre-Linux days was Microsoft’s
Later Amiga models, including the 3000, were able to run Linux
ÅÐÆ­ķĬÐǎijéÐőǎé­ÌǎŰŲŪŭŪǎĥĨČÆÐĬĬČĨĬƧǎƒéÐǎĨÐÌǎ­ĆÌǎŋéìijÐǎÅ­ÿÿƨǎÅőǎijéÐǎ "+&53"/0&,+,#+&5n3&))",+1%"0"+!6 ,*-21"/0o
ŋ­őƨǎãČĨąÐÌǎĥ­ĨijǎČãǎ­ǎÿ­ijÐĨǎąìä­ǎÿČäČƧ

www.techradar.com/pro/linux June 2025 LXF328 69


TUTORIALS Linux hardware

home computer of the time to use


anything other than an audio
cassette tape for storage.
We should also point out how
the processor changed in the
Amiga range. After all, this had a
bearing on the introduction of
&+251,1%"-)1#,/*n04"}))0""
later. From the initial 68000,
20"!&+1%"*&$9888n:888
+!=88n1%":=8840".2&--"!
with a 68020 or 68030, the 3000
used a 68030, while the 4000
boasted a 68040, and with the
4000T, this became a 68060.
Commodore went out of
20&+"00&+9AA<n211%&0!&!+}1
mark an end for the Amiga. To cut
),+$+!-,1"+1&))6,/&+$01,/6
short, Amiga continued under the
AmigaOne brand from 2000, and
products are available to the
current day. These products
abandoned the m68k in favour
,#1%",4"/n,+",#1%" 
ǎƒé­ĆüĬǎijČǎìijĬǎķĬÐǎČãǎ7$VƨǎijéÐǎij­Ĩìǎ}ƒǎÅÐÆ­ąÐǎijéÐǎãìĨĬijǎą­ĬĬǎą­ĨüÐijǎÆČąĥķijÐĨǎijČǎãЭijķĨÐǎ­ǎäĨ­ĥéìÆ­ÿǎķĬÐĨǎìĆijÐĨã­ÆÐƧ processors that we looked at last
month. We will say that Linux is
processor. That must say something about its available for AmigaOne but, other than that, we’ll draw
reputation. From these lofty aspirations, though, 68xxx a line under it here. This is, after all, an article on the
processors also embraced the second generation of home computers of old.
%,*" ,*-21"/0n,2/02'" 1%"/"o The other main 68xxx-based range of machines
from the glory days of home computers was produced
68000 home computers by Atari. Initially known for its arcade games and
Amiga home computers, initially produced by games consoles, Atari’s best remembered 8-bit home
,**,!,/"n%&11%"01/""10&+9A@=o%"#&/01*,!") computers were probably the Atari 400 and the Atari
boasted a 16/32-bit Motorola 68000, at a time when @88n4%& %--"/"!&+9A?A+!20"!1%">=8:
most home computers were stuck with 8-bit chips. In -/, "00,/o%"0"4"/"#,)),4"!2-&+)1"9AA;6&10
fact even Commodore’s own hugely successful 8-bit XL series computers, but since we’re now closing in on
computer, the Commodore 64, was only three years the time Atari turned its attention to bigger and better
old, and it would have another nine years of life left. We things, let’s move straight on to those. These bigger
could look at the usual statistics like clock speeds and and better things were the Atari ST range, which made
memory capacities, but those figures aren’t really what &10!"21&+9A@=n+!4%& %#"12/"!1%",1,/,)
made the Amiga models stand out. 68000 processor. In fact, it appears that ST stood
At the time, most home computers had crude #,/0&51""+š1%&/16v14,€&+/"#"/"+ "1,1%">@888}0
graphics and sound systems capable of little more than 16/32-bit architecture.
You might be
surprised to bleeps. Amiga computers, on the other hand, had a The range comprised the Atari 520ST, 1040ST,
learn that Linux graphics accelerator and a sound chipset capable of Mega STE, TT030 and Falcon. Several of the
has been run on generating four-channel synthesised audio. As such, it *,!")0!&##"/"!,+)6&+!"1&)o,n#,/"5*-)"n1%",+)6
a Commodore carved out a niche among creative users interested in difference between the 520ST and the 1040ST was
64, an 8-bit animation, music, multimedia and more. These features 1%"-/,3&0&,+,#=9:,/9,#*"*,/6o%"0"14,
home computer also made it very popular among gamers. But despite it models also had variants with various suffixes that
that predated being a niche product, in some senses of that word, it denoted things such as the addition of an extra floppy
the 32-bit had huge commercial success. Over its nine-year disk drive or a modulator to allow a TV to be used as
machines we
lifetime, it sold almost five million units. Also playing a 1%"*,+&1,/o%""$n/")"0"!&+9AA9n40
feature in this
part in Amiga’s success were several other aspects more significant upgrade, offering 1MB, 2MB or 4MB
article. It wasn’t
all it seems, that were largely unheard of in the early days of home ,#n0"-/1"("6,/!n+!+&+1"/+)%/!!&0(
though. Linux, computers. For example, prior to the first Amiga, the in all but the 1MB version. However, it’s not until we
which supports 1000, the only mainstream computers to have boasted arrive at the TT030, actually released a year before the
the RISC-V *,20"4"/"1%" +!--)" &+1,0%9:@n "$n1%14"#&+!*',// %&1" 12/)!&##"/"+ "o #
architecture, which had gained a mouse in the previous two years. 4"1"))6,21%11%"01+!0#,/1%&/16v14,š1%&/16v
ran on a RISC-V Needless to say, that was because the Amiga 14,€n6,2}))-/,)6$2"001%11%&0401%"#&/01
CREDIT: GPL.

emulator on the ,-"/1&+$0601"*%!  n214"}))),,(11%" Atari to have a fully 32-bit 68xxx chip. In fact, it had a
C64. Oh, and it later. Then there was the matter of floppy disk drives. Motorola 68030 processor. That leaves the Falcon,
took 39 hours
Certainly, business computers had floppy drives in which was to become Atari’s last foray into personal
ijČǏÅČČijƧ
9A@=n214"01/2$$)"!1,#&+!*,/"1%+1%",!! computers. It, too, used the fully 32-bit 68030, but it

70 LXF328 June 2025 www.linuxformat.com


Linux hardware TUTORIALS

only that, but the specific


platform that was supported
back then was the Amiga. And Around the
&1--"/01%11%"1/& same time as
wasn’t far behind. So, although the Amiga and
production of the Amiga and Atari ST, Acorn
Atari ST ceased in the early days introduced the
Archimedes
of Linux, we can imagine that
home computer
these two platforms continued
as a successor
1,"20"!#,/.2&1"0,*"1&*" to its BBC
afterwards. And so we can but Micro. It didn’t
speculate that Linux would have take the world
played a part in these home by storm, but
computers as Linux started to the processor
gain wider recognition. that powered
But that’s rather missing it certainly
1%"-,&+1n+!4" +}1%")-21 did. That chip,
developed by
make a similar statement to the
Acorn, was the
one we made at the end of last
first ever ARM
month’s article. In particular, chip. Never
ƒéÐǎąìä­ǎìĬǎĬijìÿÿǎ­ÿìŊÐǎ­ĆÌǎŋÐÿÿǎķĆÌÐĨǎijéÐǎąìä­]ĆÐǎäķìĬÐƨǎĆČŋǎĥČŋÐĨÐÌǎÅőǎ­ǎvČŋÐĨvǎ although Linux probably didn’t has the saying
ÆéìĥƧǎ?ijǎĬéìĥĬǎŋìijéǎąìä­]}ƨǎÅķijǎìijǎÆ­Ćǎ­ÿĬČǎĨķĆǎPìĆķŐƧ make 68xxx-based home “from tiny
computers great, to any acorns mighty
,+)602/3&3"!#,/6"/#/,*&10)2+ %&+9AA:o meaningful extent, those machines, and the m68k ISA, oaks grow”
)1%,2$%1%"6!&!+}1))&+ )2!"1%")"11"/0€n#,/ did play an important role in making Linux great. The been more
simplicity, from now on, we’ll refer to the 68xxx-based 0" ,+!%)#,#1%10"+1"+ "!,"0/".2&/"&1,# appropriate.
Atari models as Atari ST. explanation, though. You might recall that, in the first
As contemporary machines, there was fierce part of this series, we referred to the criticism, aimed at
competition between Commodore and Atari. That &+25&+9AA:n6+!/"4+"+2*o +-/1& 2)/n
/&3)/6)0,"51"+!"!1,20"/0n4%,4"/"(""+1,'201&#6 he suggested that, by writing Linux for the 80386,
their purchase of either an Amiga or an Atari ST. From Linus Torvalds had produced an operating system that
the less biased reports of the time, though, it appears wouldn’t be portable. And that, in turn, would deny any
that the Amiga had better graphics and sound, while long-term future to the operating system. Today that
the Atari ST was a little faster and cheaper. So, while 00"/1&,+0""*0)2$%)"o ,4"3"/n (&+9AA:n
CREDIT:!*)& 7"(nv;o8n%11-0pšš ,**,+0o4&(&*"!&o,/$š4&(&š &)"p*&$+"u9888u8:o'-$

the Amiga was the go-to home computer for creative when the debate between Tanenbaum and Torvalds
applications, the Atari ST was, perhaps, more popular was in full swing, the Amiga and Atari ST were key to
as an all-rounder (,%/"))6lx). demonstrating that there genuinely was a potential
long-term future for Linux beyond the 80386.
Operating systems
Needless to say, with both the Amiga and Atari STs
//&3&+$,+1%"0 "+"&+9A@=n&+2540+}1+,-1&,+o APPLE MAC
In fact, Linux would only be a reality for the final four
years of the m68k-based Amigas, and only the final You might be surprised to see reference to the Apple Macintosh,
two years of the Atari ST. And we can imagine that, in since it wasn’t really a home computer, even though some hobbyists
the early days, when hardly anyone had heard of Linux, did use them. Even so, given that it was one of the first machines to
few Amiga or Atari ST users would have contemplated use Motorola 68000 series processors, we couldn’t ignore it.
shifting from their familiar operating systems. Launched three years after the IBM PC, the Macintosh became
Not an encouraging assessment, you might think, the main alternative to the PC, as it still is. It used the 6800 initially,
and in terms of revolutionising home computers of +!1%">@8;8#/,*9A@@o /,*9AA<n1%"-)1#,/**&$/1"!1,1%"
1%")1"}@80+!"/)6}A80n6,2}!"/&$%1o21n4"}! ,4"/ -/, "00,/n+!#/,*:88>n&11/+0&1&,+"!1,5@>o%"
suggest, these platforms did play a huge role in the latest move took place in 2020, when Apple started using its own
development of Linux in the early days. As we saw %&-0n0"!1%">< o&+25%0""+3&))"#,/))1%"0"
&+1%"#&/01-/1,#1%&00"/&"0n&+2540#&/014/&11"+ processor families; indeed, Linux was ported to Apple Macs of all
#,/1%" +1")@8;@>n+!)01*,+1%n4"),,("!1%,4 four generations. In fact, Linux appeared on an m68k Macintosh in
it very soon embraced the various up-and-coming 9AA>n*(&+$&1,+",#1%""/)&"01>@555-)1#,/*01,"02--,/1"!o
  %&-01%1--"/"!#/,*1%"*&!v}@80,+4/!0o However, it appears that it was one of the trickiest Linux ports, in no
But the 68000 series also got the Linux treatment small part because of Apple’s reluctance for third-party operating
&+1%"3"/6"/)6!60n0-" &#& ))6,+1%"0" ,+!v systems to run on its hardware. Whether that was the reason for the
generation 68030 and beyond, because of their built- lack of detailed hardware information we can only guess. However,
in memory management units. according to reports, this also contributed to making the porting
+-/1& 2)/n1%"*>@(40!!"!1,&+25&+9AA;n process somewhat less than the proverbial walk in the park.
making it probably only the second ISA supported. Not

IMPROVE YOUR LINUX SKILLS Get great deals at www.magazinesdirect.com

www.techradar.com/pro/linux June 2025 LXF328 71


TUTORIALS Upgrade it

MICE

Upgrade it: Get more


from your mouse
Look after your digits and treat them with a hand-picked
mouse selected by Saeed Wazir and Neil Mohr.

here are really three parts to

T picking (and using) a mouse for


 ,*-21"/0601"*p1%"*,20"
itself, the software it uses, and the
settings. Of course, as this is Linux, the
software side is more complicated, but
OUR that’s what makes it fun. Picking the
hardware side of the mouse isn’t that
EXPERT difficult – we’ll cover the options you
Neil Mohr should keep an eye out for later, and
remembers the there’s a huge range out there, with some
days of carpal eye-watering prices. The issue (as we saw
tunnel syndrome with keyboards) is that the customisation
and the claw software that many manufacturers tout is
ȶljࢳƎơŔʋǠ࡯ ,+)63&))",+&+!,40+! n
which seems a worse situation than with
keyboards. This means that any fancy
RGB lighting or custom buttons may not
be as readily available to Linux users. The basic controls leave a lot to be desired.
Thankfully, however, due to the general
plug and play Human Interface Devices driver, the basic third-party software from manufacturers, if you want
functions work without issue. to do anything fancy or take advantage of additional
Hopefully, you’re already aware of the default buttons, you need to configure that yourself – see the
If you’re a Gnome or KDE settings available with your existing boxout (opposite page) for solutions. We will say that
gaming type, a desktop. Under Ubuntu, that amounts to the barest while OpenRGB offers lighting control for a range of
high-sensitivity
sensor will be
,# ,+1/,)0#,/6,2/14,*,20"211,+0+!1%"0 /,)) mice, it doesn’t extend to button or wider input
­ijǏijéÐǎijČĥǎČãǎ wheel. To be fair, KDE isn’t much better, just offering a controls. As far as we understand.
your list. middle mouse button alternative mode. With a lack of
Buying a mouse
Mice are essential to any computer setup because they
determine how you interact with your system. The best
mice are comfortable for hours of use and can improve
your productivity with high-speed sensors, responsive
buttons, and lightweight designs for faster movement.
The first step to choosing a mouse is understanding
what differentiates the different types of mice.
,*"*& "n02 %01%"--)"$& ,20"+!
,$&1" %}0+64%"/";n/"$/"1#,/!&)620"
with good sensors and extra buttons, and they work via
Bluetooth or 2.4GHz wireless. Other mice offer high-
DPI sensors, in-depth customisation options, and other
features. Choosing a perfect mouse can be challenging
because countless options are available in various
shapes and sizes, which can be difficult to navigate.
,*"*& "/"0-" &#& ))6!"0&$+"!#,/ "/1&+
tasks, so it’s worth considering what you’ll be using

72 LXF328 June 2025 www.linuxformat.com


Upgrade it TUTORIALS

yours for before buying anything. For general


use, a standard mouse is often sufficient.
These mice are about reliability and
practicality. For more specialised tasks, a
mouse with extra buttons, like the
1"")"/&"0"/,5An +""+"#& &)o
These mice can be larger and heavier than
ordinary mice and tend to cost more.
The good news is that many mice, such
as the Logitech G502 X Plus, offer versatile
functionality for various tasks. They’re
available in most weights and sizes, and
include extra buttons that can be
programmed for your preferred uses.
The most important part of choosing a mouse is offer adequate performance for most uses, but those This is exactly
selecting the right size and shape. You’ll use it for hours wanting something faster can try other options. DPI what we
wanted to see
of work, and it must be comfortable in your hand and (dots per linear inch) measures mouse sensitivity and in a mouse
have all the buttons within easy reach. Most people use how fast your cursor travels across the screen. Modern configuration
their mouse for daily tasks like browsing and checking mice have adjustable DPIs, with high-end models tool.
emails, so it should feel pleasant for all-day use. offering high DPI.
Identifying your preferred grip goes a long way to Most people use a DPI between 600 and 4,000,
determining which mouse fits you best. Every person depending on the use case and display, and most never
has a unique hand size and preference, so you should use high DPI sensors at their maximum settings.
get what suits you best. Palm grip users often prefer Mouse buttons are actuated via mechanical or
longer, flatter mice to fit their whole hand, while claw optical switches. Older mechanical switches rely on
and fingertip users prefer shorter, more contoured 1%"211,+-20%&+$!,4+,+0-/&+$+!*(&+$
mice to get the best grip. contact with a metal plate to complete a circuit and
Picking the best shape can also come down to register a keypress. This system is effective but has
which hand you prefer. Ergonomic mice such as the slower response times and higher wear and tear due
Razer DeathAdder V3 Pro are known for their comfort 1,1%"*,3&+$-/10o
but only fit right-handed users because of their curved Newer optical switches are faster and have less
0%-"o6**"1/& )*& ")&(",/0&/}0?=&/")"00 wear and tear because they use a beam of light for
are ambidextrous, so ideal for left or right-handers. actuation rather than physical contact. Each press
interrupts the beam, signalling to the PC that the
Connection button is pressed. Both switch types are responsive
The best wireless mice are just as fast and responsive and work well for most uses. Choosing the best
as their wired counterparts, with no difference in depends on which one feels more comfortable for you.
performance. Brands often make wired and wireless Turn the page to find out what our top choices are!
3"/0&,+0,#1%"0*"*,20"n02 %0 }0 =9
series, and it comes down to personal taste, because
you can’t go wrong with either option. MOUSE CONFIGURATION
Wired mice are cheaper than their wireless
equivalents and have a simple plug-and-play design Rather than throw a bunch of possible solutions or terminal
with no batteries to charge or tiny dongles that can get remapping at you (though you might want to explore xdotool for
lost. However, the cable can be uncomfortable because +!ydotool for Wayland), we’ve stumbled upon one widely
of drag, and it’s also a weak point, prone to breaking. supported tool called Piper that seems to cover most situations
The cable length determines how far you can sit from alongside Wayland and X support. Head to https://github.com/
your PC, making wired mice a poor choice if your PC is libratbag/piper for the full documentation.
connected to your TV. Piper provides a GTK interface for mouse movement, button
Wireless mice are more comfortable and have a +!)&$%1&+$ ,+#&$2/1&,+o,2/!"3& "!,"0+""!1,"02--,/1"!
longer range than wired alternatives, because there’s for it to work, but our old Roccat Kone XTD gaming mouse was (it
no pesky cable getting in the way. 40+}12+!"/-"+ „o2)1&-)"-/,#&)"0#,/1%"0*"!"3& " +
Many offer multiple connection types and work with " /"1"!&#),10,#-",-)"20"1%"0601"*n1,,o
4&/")"00:o< 7n)2"1,,1%+! )"1, %/$" +01))1&,+&0"06#,/2+12:8o<š"&+99p sudo apt install
the battery while you work. On the other hand, they piper . For Fedora use dnf install piper ; in Arch use pacman -S piper .
usually cost more, have batteries that add extra weight There’s even a Flatpak. Just run and away you go! There is a huge list
to the overall design, and need charging. ,#02--,/1"!!"3& "0%"/"phttps://github.com/libratbag/libratbag/
tree/master/data/devices. Another tool we’ve not tried but looks
Sensors like it could be good for finer control is Input Remapper: https://
Mice offer varying sensors, polling rates and switches, github.com/sezanzeb/input-remapper.
making it challenging to find the right one. The polling "4"/")0,-)"0"!1,#&+!,)/ƒhttps://github.com/pwr-
rate refers to how often a mouse communicates with Solaar/Solaar) a fully open source implementation of the Logitech
6,2/+!&0*"02/"!&+ "/17ƒ 7„o1+!/!*& " control software for both mice and keyboards, which worked a treat
%3"9n888 7-,))&+$/1"n*"+&+$1%"6/"-,/1 #,/1%"01"/;o"120(+,4%,46,2$"1,+j
1%"&/-,0&1&,+9n8881&*"0-"/0" ,+!o%&00%,2)!

www.techradar.com/pro/linux June 2025 LXF328 73


TUTORIALS Upgrade it

Logitech MX Master 3S
Best wireless mouse for most.

SPECS
%",$&1" %01"/;&04,/1%"3"/6-"++6

Sensor:
T if you make use of all its features. It combines a
comfortable, sculpted design with useful
Logitech productivity features such as an electromagnetic scroll
Darkfield Laser wheel, a separate, side-scrolling thumb wheel, and a ton of
Comms: customisation options. It can also use Logi Flow through
Bluetooth LE or the Logi Options+ 0,#14/"n4%& %&0&+!,40+! 
Logi Bolt (Up to ,+)6o%"$,,!+"40&0,)/ƒhttps://github.com/pwr-
3 devices) Solaar/Solaar) is fully open source and can mostly replace
Battery: Up to the custom controls you need.
?8!60ƒv %"01"/;}0")" 1/,*$+"1& 0 /,))4%"")&0
charging) one of its most impressive features. It lets you toggle
Weight:9<9$ between a smooth, free-scrolling feel or a notched The MX Master 3S has twice the DPI of its predecessor.
Size (LxWxH): scrolling feel with the press of a button – or automatically,
9:<oA5@<o; based on how fast you spin it. It’s perfect for quickly %"01"/;%014,+,1& ")"&*-/,3"*"+10
5=9** scrolling through long documents, then switching to more ,3"/&10-/"!" "00,/n1%"01"/;p+2-$/!"!
precise tasks where you need that ratcheted precision. 0"+0,/1%1$,"02-1,@n888!-&n+!.2&"1"/04&1 %"0&+
The mouse also has a second thumb wheel on the left the main left/right-click buttons.
1%1)"106,2-"/#,/*10(002 %07,,*&+$n0 /,))&+$
horizontally in spreadsheets, and changing system volume.
The mouse has six configurable buttons (seven,
VERDICT
including the clickable scroll wheel), which you can set DEVELOPER: Logitech PRICE:^?AoAA
2-1,-"/#,/*!&##"/"+110(00"!,+1%"--6,2}/"
using. Logi Options+ tracks the app currently in use and Rating 9/10
automatically switches the mouse’s profile to match.

Logitech Lift
Best wireless ergonomic mouse
he Logitech Lift is an ergonomic wireless mouse
SPECS
Sensor: Not
T designed for people with small-to-medium-sized
hands – it’s not for everyone, but it’s nice to see
disclosed an option for those who might not find the larger Logitech
Comms: MX Vertical comfortable to use. The Lift also comes in
Type-A dongle both right-handed and left-handed versions, making it
or Bluetooth LE ,+",#1%",+)6"/$,+,*& *,20",-1&,+0#,/)"#1v%+!"!
Battery: people (though while the right-handed version comes in
Rechargeable pink, white and graphite, the left-handed version only
,3"/v comes in the latter).
Weight:99>o@$ The Lift has a vertical design, which puts your hand It may take you a while to get used to the ergonomic design.
Size (LxWxH): 1+,-1&*)=?v!"$/""+$)"x)0,(+,4+01%"
99Ao9;5?<o<: handshake angle. This angle is more natural than the does support the Lift model so you can take advantage its
5<:oA;** typical horizontal angle mice normally have, but the extended features.
!"0&$+!,"0)&#16,2/%+!46#/,*6,2/!"0(o #6,2}/" The Lift’s vertical design makes it less than ideal for
used to a regular mouse, it may take you some time to precision tasks, such as gaming – gamers who want an
grow accustomed to this new position (and you may never ergonomic mouse should check out the incredibly
get used to it, especially if you work with very precise comfortable Razer DeathAdder V3 Pro.
movements – it’s harder to be precise when your hand is
further from the desk).
VERDICT
CREDIT: Logitech

The Lift is a productivity mouse; it works with


Logitech’s Logi Options+ software (which isn’t supported DEVELOPER: Logitech PRICE:^=:oAA
under Linux) includes Logitech’s productivity features,
such as Logi Flow. The Lift will largely work out of the box, Rating 7/10
211%"$,,!+"40&01%",-"+0,2/ ",)/0,#14/"

74 LXF328 June 2025 www.linuxformat.com


Upgrade it TUTORIALS

Lenovo Go Wireless Vertical Mouse


Best budget vertical mouse.
he Lenovo Go Wireless Mouse is a cheaper
SPECS
Sensor: Ir
T 1(",+1%"3"/1& )*,20")6,211%+1%"
Logitech Lift and the Logitech MX Vertical, with
sensor -/& "1%1/+$"0#/,*^;8v^=8!"-"+!&+$,+0)"0
Comms: 2.4GHz (which Lenovo frequently has). Despite this, it’s got a
wireless strong luxury feel thanks to the comfortable, stylish
Its unusual finish
Battery:95 ,/(0&!"#&+&0%n+!&1)0,%0*+6,#1%"&#1}0+! makes the Go
alkaline AA "/1& )}001/"+$1%0o%"#"12/"1%14&))!/41%" Wireless stand
Weight:9:A$ *,01"6"))01,1%" ,&/")"00"/1& )n1%,2$%n&0 out visually.
(with 2x AA) 1%"v ,1"! ,/(1%1 ,3"/0*,01,#&10,!6o%&0
Size (LxWxH): material is meant to be resistant to liquids and easy to
>;598< clean, according to Lenovo. the vertical position tends to result in less accurate fine
x 62mm 1&+ )2!"01%"+12/)n=?v!"$/""%+!0%("-,0&1&,+ cursor movement).
angle and six programmable buttons (one less than you’ll The main drawback is the Go Wireless’s side buttons.
find on the MX Vertical). The Go Wireless mouse also Instead of being in the divot where your thumb rests – as on
#"12/"01%/""-/,$/**)" 01"-0ƒ@88v:n<88„n the MX Vertical – the side buttons are on the mouse’s top
which you can cycle through using the DPI switch button. edge. You’ll have to strain your thumb to reach them, which
The Lenovo Go Wireless mouse has a battery life of up to throws a wrench in its otherwise strong ergonomics.
9@*,+1%03&,+"11"/6o
If this is the first time you’re using a vertical mouse,
you’ll be pleased to know that it doesn’t take too long to
VERDICT
get used to it. You’ll find that it feels more natural, and DEVELOPER: Lenovo PRICE:^<AoA=
once you get the hang of it, you won’t want to go back
1,1/!&1&,+)*& "#,/4,/(ƒ3"/1& )*& "/"+}1&!")#,/ Rating 8/10
gaming, though, especially games that require aiming, as

Razer Pro Click Mini


Best premium productivity mouse.
ften, gaming gear is a cheap way to get your
SPECS
Sensor: Optical
O hands on a mouse with professional-level
features. Razer is known mainly for its gaming
Comms: Razer peripherals, but it’s also been dabbling in the productivity
Hyperspeed sphere by taking some of those gaming features and
2.4GHz translating them into a line specifically for productivity.
wireless, The Razer Pro Click Mini is the second productivity-
Bluetooth focused pointer from Razer, and it features quieter
Battery:95 switches and a smaller footprint than its predecessor.
,/:5 Unlike other productivity-focused mice, it’s got a decently
Weight:@@$ %&$%*5 ƒ9:n888„+!-,))&+$/1"ƒ9n888 7„n0"3"+
ƒ4&1%95„n programmable buttons, and low-latency 2.4GHz wireless
999$ƒ4&1% connectivity. It also has five onboard memory profiles and Razer poured its gaming mouse expertise into this productivity model.
2x AA) fully remappable buttons – including the four-way tilt
Size (LxWxH): wheel, with both infinite and ratcheted scrolling modes. The good news from a software point of view is that
988o:5>:o? That makes this an especially powerful contender for the OpenRazer project provides full support for the Razer
x 34.2mm the office – it’s versatile, highly responsive and totally Pro Click Mini – both this wireless model and the wired
customisable. Plus, its sleek grey and white chassis keeps version as well.
it from looking too much like a gaming mouse.
It’s a bit of a shame that it uses AA batteries instead of
just being rechargeable, especially since those batteries
VERDICT
do make it a touch heavier. But with a purported 465 DEVELOPER: Razer PRICE:^?AoAA
%,2/0,#11"/6)&#",3"/:o< 74&/")"00+!?:=%,2/0
over Bluetooth, it’s easy to just stuff this in your bag and Rating 8/10
forget about it for months on end.

www.techradar.com/pro/linux June 2025 LXF328 75


TUTORIALS Upgrade it

Microsoft Modern Mobile Mouse


The best small mouse.
he Microsoft Modern Mobile Mouse is a thin
SPECS
Sensor: Optical
T little credit card of a pointer that presumes
the most comfortable form factor is to have
Comms: as little mouse in your hand as possible. This makes it
Bluetooth 4.2 great for travel and style, especially with its eight
Battery: 3&))" ,),2/0+!)2"1,,1% ,++" 1&3&16o1?@$
2x AAA with batteries installed, it’s easy to carry with you. At
Weight:?@$ the same time, its sleek rectangular exterior makes it
(with 2x AAA) difficult to hold for certain grip types, and it doesn’t
Size (LxWxH): come with extra buttons or too much configurability.
98?o:5>8o; With just a left button, a right button and a clickable
5:=o@** scroll wheel (non-tilt), it isn’t meant for more than basic
work. The wheel’s push-in button can be remapped to The Modern Mobile Mouse is best for casual use or on the go.
input a key combination, open the screen snipping tool
or even input a macro, but that’s the most advanced much force to use, but it can feel bulky in the hands
usability you’ll get. Otherwise, all its software lets you thanks to its rectangular shape. That’s odd given how
do is swap the left and right click, change how fast the small the mouse is, and it doesn’t help that palm grip
wheel scrolls (and in which direction) and adjust its DPI. users don’t have much of a body to rest their palms on.
The max DPI is higher on this mouse than you’ll find
on other productivity-focused entries, though. The
*&+&*2* &0<88+!1%"*5&*2*&09n@88n4%& %
VERDICT
means you’ll be able to easily track your cursor across DEVELOPER: Microsoft PRICE:^<AoAA
all sorts of resolutions and monitor sizes.
There’s no doubt that the mouse’s lightweight Rating 7/10
nature lends it a level of comfort, as it doesn’t take

Microsoft Arc Mouse


Best travel-sized ergonomic mouse.
he Microsoft Arc Mouse is a more ergonomic
SPECS
Sensor: Optical
T take on the Microsoft Modern Mobile Mouse
that nonetheless loses some functionality in
Comms: the pursuit of greater comfort. It feels great in the
)2"1,,1%<o9 hands, so much so that it might convince you to
Battery: abandon a claw grip for a palm grip instead. However,
2x AAA its hair-trigger button (which doesn’t physically
Weight:@:o=$ distinguish between left and right click zones) and
(with 2x AAA) &10) (,#0 /,))4%"")*"+0&1}0+,1#,/"3"/6,+"o
Size (LxWxH): 1+"/)6^?8n1%"/ ,20"&0 ,+0&!"/)6*,/"
9;9o;95==o99 expensive than the Modern Mobile Mouse, but it is still The Arc Mouse’s lack of a scroll wheel may put some people off.
59<o::** affordable compared to other ergonomic mice. It also
//&"0,3"/0,*",#1%""+"#&10,#1%",!"/+,&)" highest sensitivity setting. Not only do you lose
Mouse – an uncomplicated, lightweight body, multiple precision with this, but you also lose comfort, which
colour options, and easy portability (it can bend flat to goes against the point of the mouse.
#&1&+1,$04&1%+,&002"„o ,*"-",-)"4&))),3"1%&0*,20"n"&1%"/0*&+
It also has the same weaknesses as the Modern pointer or as a backup while travelling. It’s a niche pick,
Mobile Mouse – and then some. Most noticeable and but so are most ergonomic mice.
egregious is the lack of a scroll wheel or separate left
and right-click buttons. Taking the Modern Mobile
Mouse’s lack of buttons a little further, the Arc Mouse
VERDICT
opts to have one clickable touchpad for its input. DEVELOPER: Microsoft PRICE:^>@o=8
Instead of a scroll wheel, the mouse wants you to
flick your finger to scroll. This results in stilted scrolling Rating 6/10
that requires a lot of extraneous flicks, even on the

76 LXF328 June 2025 www.linuxformat.com


Upgrade it TUTORIALS

Logitech Ergo M575 Mouse


The best trackball mouse option around.

SPECS
%",$&1" %/$,=?=,20"&01%"%"/,6,2/

Sensor:
T strained wrists have been waiting for. With it,
6,24,+}1+""!1,*,3"1%"*1))o 201)66,2/
Trackball hand on your mouse once, and you’re all set for eight hours
Comms: straight without needing to move it again. Of course, your
2.4GHz, thumb will be getting a workout the whole time.
Only got a small
Bluetooth Low That’s because this mouse uses a trackball to move space to work in?
Energy 1%" 2/0,/o 1}0+,1+"4--/, %n211^=8+!4&1% The M575 could
Battery:95 :o< 7+!)2"1,,1%02--,/1n1%"/$,=?=&0*,/" be the solution.
Weight:9<=$ !3+ "!1%+4%16,24,2)!%3"$,1&+1%"}A80o0&+$
ƒ4&1%95„ it takes some practice, of course, but it feels like a dream.
Size (LxWxH): It completely eliminates strain from repetitive motions, once you do, your wrists will thank you. Your desk might
9;<5988 and the wide body contorts to your hand shape. 1%+(6,2n1,,o%&)"1%"=?=&02)(6*,20"n&1)0,
5<@** Of course, not being able to move the mouse’s body paradoxically has a small footprint because you don’t need
itself does come with some struggles. For instance, while to move it when using it. It doesn’t even need a mouse
this isn’t supposed to be the best gaming mouse, let’s not pad, making it great for people with small desks or
kid ourselves. You’re probably not constantly swapping keyboard trays. If you like trackball mice, this is one of the
between a gaming and work mouse with your home setup. best modern options available.
Clicking and dragging also takes some rewiring if you’re
not used to using both your thumb and index finger when
doing so. It takes thought to remember to let go of your
VERDICT
&+!"5#&+$"/#1"/!/$$&+$n21+,16,2/1%2*o&*&)/)6n&1 DEVELOPER: Logitech PRICE:^<AoAA
can be hard to precisely highlight text with a trackball.
Most of these issues, aside from the mouse not being Rating 8/10
well suited to games, are easy to fix with practice. And

SteelSeries Rival 3
The best budget gaming mouse.
e’ve always maintained that a good gaming
SPECS
Sensor: Optical
W mouse is also a good computer mouse in
general, and that’s definitely the case with
Comms: 1%"1"")"/&"0&3);o%&00)""(n*"!&2*v0&7"!
Battery: 95,/ peripheral features a no-nonsense, semi-ambidextrous
2x AAA design with two programmable thumb buttons and a
Weight:??$n pretty LED strip on the bottom. The Rival 3 is the only
Size:9:85=@ mouse here with programmable RGB lighting, and
5:9** while that won’t make you any more productive, it will
make your desk look a whole lot prettier.
Overall, the Rival 3 performed well across multiple Add a little colour to your computing life with the Rival 3.
games, including Overwatch, Age of Empires II:
Definitive Edition, Thronebreaker: The Witcher because you’ll never need to set the DPI that high – but
)"0and World of Warcraft. We took a few minutes it does indicate that the sensor is less powerful.
beforehand to reprogram the thumb buttons for each There are no other modern gaming mice from major
title. Having suffered through the subpar performance manufacturers in this price range, as far as we know.
of some truly cheap gaming mice, it was an absolute ,n&#^:8,/0,&04%16,2}/"),,(&+$1,0-"+!n1%&0&0
pleasure to find that the Rival 3 (with the proper mouse the mouse to get.
-!„&0)*,010$,,!0+6,#1"")"/&"0}0%&$%"/v
CREDIT: 1"")0"/&"0

end models, at least for casual play.


The main reason the Rival 3 is so much cheaper
VERDICT
1%+,1%"/1"")"/&"0*& "&01%1&120"0/2",3" DEVELOPER:1"")"/&"0PRICE:^::oAA
Core optical sensor rather than a TrueMove 3. This
0"+0,/ -0,211/,2+!@n=88!-&n ,*-/"!4&1% Rating 9/10
9:n888!-&#,/1%"/2",3";o%1}0+,1-/,)"*n

www.techradar.com/pro/linux June 2025 LXF328 77


HACKING Prey

Nate Drake
is a technology Ubuntu suffers
namespace breach
journalist
specialising in
cybersecurity and
retro gaming.

NOT-SO-FREE Unprivileged escalation with user


PUBLIC WI-FI namespaces now patched.
sers should update Ubuntu 24.04

U
+9AAAn--)"&+1/,!2 "!
4&/")"00 ,++" 1&3&161,&10&,,( and 23.10 to secure their systems.
)-1,-0o 140"#,/"1%"1"/* The Qualys Threat Research Unit
&v &402&.2&1,20n0,--)" (TRU) recently disclosed three security
!2"!1%"+"4#"12/"&/-,/1o bypasses in Ubuntu’s unprivileged user
%" ,+3"+&"+ "1%&0,##"/"! namespace restrictions. Qualys responsibly
#,/-,/1)"!"3& "040 disclosed these vulnerabilities to the Ubuntu
obvious. Internet users no longer Security Team on 15th January.
needed to carry around cabling This exploit is restricted to local users
in the hope they could hook up 21"+)"01%"*1, /"1"20"/04&1%#2))
1, ,+3"+&"+11%"/+"1-,/1o admin privileges. While this exploit doesn’t The big brains at Qualys will keep you protected.
%"0"!60n&1}0 ,**,+#,/ &+&10")#"+)"#2))0601"*"5-),&11&,+n&1
public areas like uni campuses !,"0"+)"20"/01,1("!3+1$",# sandboxed applications. The issue is that
+!&/-,/101,,##"/|#/""&v }n ,1%"/32)+"/&)&1&"0o 4%"+("/+")32)+"/&)&1&"0/"!&0 ,3"/"!n
1,4%& %-",-)" + ,++" 1+! User namespaces are used in most distros 1%"0" +""5-),&1"!1%/,2$%+*"0- "0
02/#4&1%,21"1&+$&+1,1%"&/ to enable unprivileged users to create by unprivileged users.
-/" &,20*,&)"!1)),4+ "o +*"0- "01%1%3"#2))!*&+/&$%10o &+!,21*,/",21%,42)601/ ("!
1&))n1%"/&0",#4&/")"00 %"0"/"16-& ))620"!#,/ ,+1&+"/0+! 1%&0!,4+%"/"phttps://bit.ly/lxf328qualys
+"14,/(0%0)"!1,+2*"/,20
0" 2/&16 ,+ "/+0o +1%",/6n

Kernel update enhances


20"/0,+)6 ,++" 11,(+,4+
+"14,/(0n1%"+20"01/,+$
encryption and authentication to

IPv6 and key security


-/,1" 11%"&/1/##& o
+-/ 1& "n% ("/0,#1"+
exploit security holes in outdated
".2&-*"+11, ,*-/,*&0"!1o
%&0&0*!""0&"/61%"# 1 The key security and networking
that most providers use routers
02--)&"!61%"&/ n4%& % improvements are vital for sysadmins.
,*"4&1%01, (n,21!1"!
#&/*4/"o,1,+)6&01%&0!&##& 2)1 210&+ ":<1%/ %n1%"&+25("/+")>o9< secure connections.
1,2-$/!"n21&1,#1"+) (0 2-!1"!!/"00"0 /&1& )32)+"/&)&1&"0n %&0&0 /&1& )#,/ The Bluetooth stack
02--,/1#,/!3+ "!0" 2/&16 &+ )2!&+$20"v#1"/v#/""&002"0&+1%"("6 environments relying has been a constant
#"12/"0)&(" ,++" 1&3&16o *+$"*"+10601"*n"+%+ &+$0601"* ,+)2"1,,1%#,/ security headache.
%&0&04%64"}3"/"3&"4"!1%" stability and security. communication and
o&"1 v;888ƒ"/6)„ +",#1%"*,010&$+&#& +1#&5"0 ,*"0 !11/+0#"/o
Travel Router. This compact #/,*3&! ,4"))0n4%,/"0,)3"! 3>&*-/,3"*"+10n&*-)"*"+1"!6 ")&5
device runs the open-source vulnerability in the key_put()#2+ 1&,+o%&0 &"1(2n!!/"00 "+"/)"$*"+11&,+
-"+/1#&/*4/"n0,&0"061, -1 %-/"3"+1011 ("/0#/,*"5-),&1&+$ ##),!ƒ „&002"0&+"14,/(!!/"00
upgrade and supports a myriad #/""!*"*,/6n*&1&$1&+$/&0(0,# /+0)1&,+ƒ„"+3&/,+*"+10o6/"#&+&+$
,#0" 2/&16,-1&,+0n02 %0 unpredictable behaviour or malicious code 0"$*"+11&,+%+!)&+$n1%&0#&5"+%+ "0
+ /6-1"!+!0o execution. Strengthened key management +"14,/(01&)&16+!0" 2/&16n-/1& 2)/)6#,/
+ "6,2/+"14,/(&00" 2/"n "+02/"00#"/ /6-1,$/-%& ("6%+!)&+$n %&$%v-"/#,/*+ "0601"*0o
6,2})))0,)"/+%,41,)"3"/$" ,)01"/&+$0601"*!"#"+ "0o !!&1&,+))6n*"*,/6*+$"*"+1%0
Wifiphisher&+1%"0*"460 "14,/(&+$0" 2/&160""0*',/2-$/!"0n ""+"+%+ "!4&1%"11"/&+&1&)&01&,+
6"/ /&*&+)06 /"1&+$#(" -/1& 2)/)6&+)2"1,,1%+! 3>01&)&16o -/, "00n/"&+#,/ &+$-/,1" 1&,+$&+01
4&/")"00 "00-,&+10!"0&$+"! /(!&207,(,46}0#&5 ,//" 10-"/0&01"+1 unauthorised memory access. These
to harvest user credentials. &002""14""+,4+"/$6ƒ„+!+,+v /"#&+"*"+10&*-/,3",3"/))("/+")01&)&16
)2"1,,1%!-1,/0n"+02/&+$/")&)"+! 4%&)"01/"+$1%"+&+$0" 2/&16o

78 LXF328 June 2025 www.linuxformat.com


Wi-Fi router REVIEWS

GL.iNet Beryl AX (GL-MT3000)


Wi-Fi 6 Travel Router
Our resident nomad Nate Drake hooks up one of GL.iNet’s tinier
offerings to stay connected in uncharted territory.

f you’ve ever connected to the free


IN BRIEF
Say goodbye
I Wi-Fi in a hotel or Airbnb, you’ll no
doubt have found that your devices
1,), ("! aren’t supported or that vital websites are Despite its rather diminutive size, GL.iNet claims
that the GL-MT3000 can support up to 70
websites and blocked. If so, you could do with a travel router.
connected devices simultaneously.
sluggish This handy gizmo from GL.iNet is one such
connection router that you can use to take your wireless
speeds. This network wherever you go. This is down to its
lightweight extremely compact size (120 x 83 x 34mm),
travel router which while perhaps not minuscule enough to
uses the shove into your pocket, is sufficiently compact
/" "+1&v &> to fit inside a backpack. At 196 grams, it also
protocol. The won’t weigh you down too much.
OpenWrt The GL-MT3000 also supports the latest
firmware Wi-Fi 6 standard and runs OpenWrt. This is one
ensures it of its main advantages, given that this open also has a built-in VPN client for the OpenVPN and
)0,- (01%" source firmware offers many security advantages WireGuard protocols.
best security ,3"/1%1#,2+!&+01, (/,21"/0o Once set up correctly, any connected devices
features, One of these perks is regular updates. But when we automatically make use of the VPN. This both encrypts
including first connected to the router (http://192.168.8.1), the your traffic and lets you connect to a server in your
 )&"+10š automatic update repeatedly failed. However, we were home country, so you can see local website content.
servers and able to manually download the latest firmware to a The router has several other security-orientated
encrypted DNS. laptop, then upload it via the built-in interface. features, too. For instance, it supports TailScale for
During setup, the router also supports four different encrypted point-to-point connections across the world.
,++" 1&,+*"1%,!0p1%"/+"1n"-"1"/n"1%"/&+$ You can also enable AdGuard to block most ads and
and Cellular. The simplest option is to power on the trackers, eliminating the need for third-party products.
router via the accompanying USB-C cable, then The Applications section also contains a list of
SPECS connect to the wireless network using the name SSID downloadable plugins. These include popular tools like
CPU: MT7981B and key written on the bottom of the unit. You can also banip, which maintains blacklists of blocked IP
dual-core ,++" 1!&/" 1)61,1%"1%"/+"1-,/1o #6,24+1 addresses, and unbound for secure DNS.
1.3GHz to use an existing router’s internet connection, the The Network section also enables you to configure
RAM: 512MB GL-MT3000 also has a 2.5Gbit WAN port. encrypted DNS to protect your queries using
< Alternatively, once the admin panel loads, you can CloudFlare, NextDNS or ControlD. From here, you can
Storage: NAND click into the Internet section to tether a smartphone also change your network mode. For instance, if you
Flash 256MB or USB modem. From here, you can also set up the are connecting the travel router to another, you can
Compatibility: GL-MT3000 as a wireless repeater. configure it as a wireless access point only.
@8:o99š The Wireless section supports creating both
2.4GHz and 5GHz Wi-Fi networks. This is where you
š$š+š š5
can gain a real sense of what OpenWrt has to offer.
VERDICT
,/"5*-)"n6,2 +"+)"&v &+"14,/(04&1% DEVELOPER: GL.iNet
randomised BSSIDs. This means the access point uses WEB: www.gl-inet.com
a random hardware address each time it boots, making PRICE: £69.74
it harder for bad actors to link your identity to a specific
router or network. FEATURES 10/10 EASE OF USE 9/10
From here, you can also configure wireless security. PERFORMANCE 9/10 VALUE 9/10
The router supports the WPA3 protocol, which makes
20",#v #,/02-"/&,/21%"+1& 1&,++! The GL-MT3000 means you’ve never been safer when
encryption of data. surfing abroad. Its compact size belies some extremely
CREDIT: GL.iNet

Another huge feather in the GL-MT3000’s cap is powerful security features.


&1002--,/1#,/0,21,#1%",5o,2 +3&"4
configuration options via the VPN Dashboard. The Rating 9/10
router can act as a VPN server in its own right, but it

www.techradar.com/pro/linux June 2025 LXF328 79


TUTORIALS Wifiphisher

WIFIPHISHER
Credit: https://wifiphisher.org

Evil twins & honeypots


Nate Drake demonstrates how easy it is to set up rogue wireless
networks to trick users into connecting. Penetration testers beware!

#6,2}/"0"/&,20,21" ,*&+$-"+"1/1&,+

I tester or want to test the security of your own


0601"*0n6,20%,2)!-/ 1&0"/"!1"*1"01&+$o
%&0 6"/0" 2/&16-/ 1& "&+3,)3"00&*2)1&+$/")v
world cyberattacks against an organisation’s system
OUR 1, %" (%,44"))-/,1" 1"!&1&0o%"0"11 (0/"0
/")0-,00&)"n0,20"0&*&)/1,,)0+!".2&-*"+11,
EXPERT 1%,0"!"-),6"!6 6"/ /&*&+)0o
Nate Drake %"!&##"/"+ "&01%16,2!,&14&1%1%"-"/*&00&,+
is a technology of the network owner to find ways to fix flaws in their
journalist 0" 2/&160"12-x+,1"5-),&11%"*#,/6,2/,4+$&+o
specialising in Wifiphisher offers an excellent way to do this, as it By default, Wifiphisher lists available Wi-Fi networks, so you can select
cybersecurity. His +0"12-/,$2" "00-,&+10o! 1,/0,#1"+20" one and execute an evil twin attack.
latest hacking 1%"0"%,+"6-,1+"14,/(01, ,+3&+ "2+020-" 1&+$
attempt backfired users to connect, so their credentials can be harvested. makes it much more likely they will connect to the
spectacularly, +1%&0$2&!"n4"}))"5-),/"%,41,0"12-+!20" rogue AP.
when he Wifiphisher1,/2+-"+"1/1&,+1"010,+6,2/+"14,/(0o
accidentally To use Wifiphisher’s most basic features, you need a Spock’s beard
reprogrammed 4&/")"00!-1,/1%102--,/10ƒ "00,&+1„ While it can be useful to run Wifiphisher with the
his smart toaster *,!"o%"+!>88&v &!-1,/1%14" default settings, if you’re running security tests on
to burn bread to reviewed in LXF327&0-"/#" 1#,/1%&0-2/-,0"o 0-" &#& +"14,/(n&1}0#/"11"/1,-"/#,/**,/"
cinders. The Although Wifiphisher can run on most versions of targeted attacks.
ljǫɭơࢳɭǫɽơɽࡳ &+25n&1}0,-1&*&0"!#,/)&n0,4"/" ,**"+!6,2 +",#1%"*,01 ,**,+16-"0,#1%"0"&01%"
0"11%&02-&+!"!& 1"!3&/12)* %&+"#&/01 "3&)14&+11 (o,3"/0,#1%",/&$&+)Star Trek will
+ "1%&0&0!,+"n,-"+1"/*&+)+! ),+"1%" /"*"*"/1%""-&0,!"4%"/"1%"*&+ %/ 1"/0
latest version of the utility using Git: "+1"/*&//,/2+&3"/0"4&1%+"3&)3"/0&,+,#/-, (
$ git clone https://github.com/wifiphisher/wifiphisher.git 0-,/1&+$020-& &,20-,&+1"!$,1""o
Next, switch to the executable directory with: +"3&)14&+&v &+"14,/(,-"/1"0&+1%"0*"
$ cd /wifiphisher/bin way, as its SSID matches that of a legitimate network.
11%&0-,&+1n6,2 +'201)2+ %Wifiphisher with Wifiphisher can create such an evil twin network. Its
default settings by running: wifi_connect module also offers a way to create a
$ sudo ./wifiphisher )"$&1&*1"v),,(&+$ -1&3"-,/1)n&+1%"%,-",#)2/&+$
By default, it selects the most suitable network users into handing over the Wi-Fi security key.
&+1"/# "#,/'**&+$+!21%"+1& 1&,+11 (0o ,/&+01+ "n1,0"12-+"3&)14&+&*-"/0,+1&+$
Next, Wifiphisher enters interactive mode. From the Wi-Fi network ABC CAFE, run:
%"/"n6,2 + %,,0"#/,*"5&01&+$ 0ƒ4&/")"00 $ sudo ./wifiphisher -e ‘ABC CAFE’ -p wifi_connect
+"14,/(+*"0„1, %,,0"4%& %+"14,/(01,1/$"1o If you do this, Wifiphisher’s UI begins broadcasting
Naturally, you should only select networks from this list the rogue AP. If you look under Extensions Feed, you’ll
1%16,2,4+,/%3"-"/*&00&,+1, "00o see DEAUTH commands. As we’ve learned, these are
+ "+"14,/(&0 %,0"+n6,2}/"-/,*-1"!1, designed to force devices to disconnect and reconnect
%,,0"0-" &#& -%&0%&+$11 (0 "+/&,o ,/ from known Wi-Fi networks.
&+01+ "n1%"/,40"/-)2$&+11 (0%,40 If any users connect to your fake wireless network,
+,1&#& 1&,+1%120"/0*201!,4+),!02--,0"! 1%"!!/"00n +!16-",#1%"&/!"3& "&0)&01"!
2-!1"1, ,++" 11,1%"&+1"/+"1o,2 +1%"+ under Connected Victims. In this case, HTTP Requests
*+2))60"11%"-1%1,0-" &#& -6),!&#6,24&0%o indicate when a device has connected to the rogue
By default, Wifiphisher)0,0"102-/,$2" -1&3"-,/1)o
 "00-,&+120&+$1%"0*"+*"01%",+" Whichever site the so-called victim visits, they’re
6,2 %,0""/)&"/o 1)0, ,+1&+2"01,-"/#,/* /"!&/" 1"!1,),$&+-$""+ ,2/$&+$1%"*1,"+1"/
deauthentication attacks, to knock out the connection 1%"&v &-004,/!#,/1%"&/ %,0"++"14,/(o #1%"6!,
between devices and legitimate Wi-Fi networks. This 0,n1%&0!,"0+}121,*1& ))6--"/,+0 /""+o21&#

80 LXF328 June 2025 www.linuxformat.com


Wifiphisher TUTORIALS

)&01"!o%&0&0$/"1#,/-/,,#,# ,+ "-1n21&#6,2}/"
running serious security tests, you can configure
Wifiphisher1,01,/",1&+"! /"!"+1&)01,0-" &#&  Wifiphisher
file using --credential-log-pathx#,/&+01+ "p automatically
$ sudo ./wifiphisher -e ‘FREE WIFI’ -p oauth-login -kB selects the
--logging --credential-log-path /home/kali/credentials.txt best network
interface for
setting up rogue
Fake firmware access points
So far, we’ve used Wifiphisher to demonstrate how bad and capturing
 1,/0 + -12/"1%"&v &0" 2/&16("6#,/)"$&1&*1" credentials.
+"14,/(06&*-"/0,+1&+$1%"*o"}3")0, /"1"! However, if you
Any captured credentials are listed under HTTP Requests. You can also +2*"/,#-)20&)"v),,(&+$#/""&v &%,10-,101, want to specify
view them when you quit by pressing Esc. 0&*2)1"%,4% ("/0 +20"#(" -1&3"-,/1)1, a particular
1/& (-",-)"&+1,%+!&+$,3"/ /"!"+1&)0o adaptor or
6,2-/"001%"0 ("61,.2&11%"Wifiphisher interface, Wifiphisher has another attack scenario: firmware network card,
+6-004,/!0"+1"/"!/")&01"!&+1%"1"/*&+)o 2-$/!"o%&04,/(0&+0&*&)/461,1%""3&)14&+ you can do so
using the -i
By default, the rogue AP has no wireless attack in that users are fooled into connecting to a
parameter – for
authentication. However, once you’ve obtained the legitimate-looking network. However, instead of being
example: sudo
security key for a legitimate network, you can assign 1("+1,,$20 -1&3"-,/1)n1%"6}/"/"!&/" 1"!1, ./wifiphisher
1%"0*"-004,/!1,6,2/"3&)14&+20&+$1%"pK #("/,21"/),$&+-$"o%&0&+#,/*01%"*1%1+"4 -i wlan0 -e
-/*"1"/o ,/"5*-)"n&#1%"&v &("6#,/1%" version of the router firmware must be installed before ‘D AND F
legitimate network ABC CAFE is enjolras123, enter: 1%"6 +$,,+)&+"o+6,+"4%,0")" 101/1-$/!" FORTUNES’
$ sudo ./wifiphisher -e ‘ABC CAFE’ -p wifi_connect -PK must enter the wireless security key of the network. -p firmware-
enjolras123 %&016-",#11 (&0"5 "))"+1#,/,/$+&01&,+04%"/" upgrade .
1%"&v &+"14,/(+*"&0(+,4+x#,/"5*-)"p
Lighting the beacons $ sudo ./wifiphisher -e ‘D AND F FORTUNES’ -p
Wifiphisher)0,02--,/10-%&0%&+$11 (*,!" firmware-upgrade
))"!(+,4+" ,+0o +1%&00 "+/&,n&+01"!,#'201 Naturally, if someone enters their Wi-Fi network
&*-"/0,+1&+$(+,4+&v &+"14,/(n&1$"+"/1"0 credentials, this is recorded under HTTP Requests.
series of beacon frames containing common ESSIDs,
02 %0&/-,/12)& & &o Phishing precautions
These usually match the names of wireless As with all the hacking tools in this series, make sure
+"14,/(01,4%& %!"3& "0%3" ,++" 1"!&+1%"-01o 6,2%3"1%"+"14,/(,4+"/}0-"/*&00&,+"#,/"
%&016-",#11 ("5-),&101%"21, ,++" 1#"12/",# &*-"/0,+1&+$1%"&/,//2++&+$+6-"+1"010o
,-"/1&+$0601"*0)&("&+!,40n4%& %21,*1& ))6
,++" 11,02--,0"!)6(+,4+&v &+"14,/(o%&0
saves hackers the trouble of checking for legitimate
 +!0"11&+$2-1%"&/,4+"3&)14&+o PUSHING PAYLOADS
To launch a known beacons attack, run:
$ sudo ./wifiphisher -p wifi_connect -kB If you’ve already run Wifiphisher4&1%,21+6,1%"/-/*"1"/0n
#6,2-/"#"/n6,2 +)0, ,*&+"1%&011 (4&1% 6,2}))0""1%1&1,##"/01%"-)2$&+2-!1"11 (0 "+/&,o  ("/0
+"3&)14&+,#6,2/,4+x#,/"5*-)"p sometimes make use of rogue APs to convince victims that they
$ sudo ./wifiphisher -e ‘FREE WIFI’ -p wifi_connect -kB +""!1,&+01))+2-!1",/!!v,+#,/1%"&//,40"/1, ,+1&+2"o
0-",-)" ,++" 11,1%"0"/,$2"0n1%"&/!"3& "0 ,2 +/" /"1"1%&020&+$1%"-)2$&+u2-!1"*,!2)"o%&0&0"01
are again listed under Connected Victims. Currently, combined with a known beacons attack, as in real life, a hacker
the attack is still configured for the wifi_connect 4,2)!4+11,!")&3"/1%"-6),!1,0*+6* %&+"00-,00&)"o
*,!2)"n4%& %-/,*-101%"*#,/4&/")"00-004,/!o ,!"*,+01/1"1%&0n6,2+""!+"5" 21)"-/,$/*o" %,0"
%&0&0+}1"0-" &))6%")-#2)4%"+&*-"/0,+1&+$-2)&  -,/1)"&+01))"/,#Firefoxƒhttps://portableapps.com/apps/
&v &%,10-,10n01%"0"202))6/"+}10" 2/"!6 internet/firefox_portable„o"51n)2+ %Wifiphisher in known
("6o +01"!n1/61%",21%v),$&+*,!2)"x#,/"5*-)"p " ,+0*,!"4&1%/,$2"+*",#6,2/,4+n#,/"5*-)"p
$ sudo ./wifiphisher -e ‘FREE WIFI’ -p oauth-login -kB sudo ./wifiphisher -i wlan0 -e ‘FREE WIFI’ -p plugin_update -kB
If you do this, Wifiphisher generates not only the %"21&)&16+,4-/,*-106,21,"+1"/1%"#2))-1%,#1%"-6),!
fake wireless network FREE WIFI but a rogue’s gallery 6,24&0%1,0"/3"o+1"/1%&020&+$0&+$)".2,1"*/(0x#,/"5*-)"p
of alternate fake APs. If a user tries to connect to any ‘/home/kali/Downloads/paf.exe’
,#1%"0"n1%"6}/"/"!&/" 1"!1,-)20&)"v),,(&+$ + "1%"-6),!&0 %,0"+nWifiphisher generates the rogue AP.
-1&3"-,/1)1%1-/,*-101%"*1,"+1"/1%"&/ ,++" 1"!20"/0/"/"!&/" 1"!1,+"14,/(),$&+-$"1%11"))0
Facebook account credentials. If they do so, they 1%"*1%"6*2012-!1"1%"&/ )0%-)2$&+1, ,+1&+2"o+63& 1&*0
receive an error message stating that the engineers 4%, %,,0"-!1",4!,4+),!1%"-6),!6,2 ,+#&$2/"!o
/"4,/(&+$,+1" %+& )-/,)"*o %&01"*-)1"&0+,1*,&)"v#/&"+!)6n0,&#6,2}/"1"01&+$1%&0&++
In the meantime, Wifiphisher!&0-)601%" -12/"! organisation that uses mobile devices, you may need to customise
20"/+*"+!-004,/!2+!"/ ".2"010o0 &1o&0&1https://bit.ly/wifiphisherextensions #,/*,/"%")-4&1%1%&0o
"#,/"n&#6,2-/"000 n)) -12/"! /"!"+1&)0/"

IMPROVE YOUR HACKER SKILLS Get great deals at www.magazinesdirect.com

www.techradar.com/pro/linux June 2025 LXF328 81


GET ALL THE ESSENTIAL BREAKING
NEWS FOR THE TECH ENTHUSIAST!
No matter if you're building a PC,
buying a laptop or learning about
robots, Tom's Hardware has all the
comprehensive knowledge you need.

Scan & Subscribe


for free!

Make Python work for you with


tutorials on coding with Django,
Flask, Pygame and even more useful
third-party frameworks.
THE BEST NEW OPEN SOURCE SOFTWARE ON THE PLANET

Mayank Sharma
has never been to a
Thunderbird Clapper Media Player Bottles concert. His wife wanted
him to take her to a musical,
Exercise Timer KPhotoAlbum ProtonVPN but he refused. Nurturing a
broken tibia, he now has
Fastfetch Blinken KsirK Refine Qpdf Tools ample time to dig for apps.

EMAIL CLIENT

Thunderbird
Version: 136
Web: www.thunderbird.net

hunderbird is Mozilla’s popular feature-rich

T email client. The app was often criticised for


its slow release cycle, but has recently moved Thunderbird ships with three layouts that you can switch between by going
to spitting out new releases monthly in order to ferry to View > Layout. You can also show and hide different components, such as
the Folder pane.
fixes and new features to users faster than before.
The easiest way to grab the latest release is via its
official Flatpak with flatpak install flathub org. them. The app lists several recommended extensions,
mozilla.Thunderbird . such as a grammar and spell checker, translator and
On first launch, you’re asked to set up an email more, which you can add with a single click.
account. Enter your name, email address and password.
Thunderbird attempts to auto-configure the email LET’S EXPLORE THUNDERBIRD...
settings, otherwise you have to manually configure
1%"0"/3"/0"11&+$06("6&+$&+1%" +! 3
settings for your email provider. You also get the option
to connect any linked services, such as address books 5
and calendars.
Thunderbird supports multiple accounts. You can
!!*,/" ,2+10&+1%" ,2+1"11&+$02+!"/1%" 1 2
hamburger menu. You can manage each email account 4
separately and have them all appear on the left sidebar.
The app has an intuitive interface and using it
shouldn’t pose any challenges.
Thunderbird offers several ways to organise emails.
You can, for instance, file emails inside folders. Right-
click on your email account on the left sidebar and
select New Folder to create custom folders. You can
then drag and drop emails into folders.
Spaces toolbar accounts and folders. Any entered text is
You can also set up filters to automatically sort or 1 Use this toolbar to quickly jump from your matched against all fields, such as subject,
flag emails based on certain criteria, such as subject, inbox to view the address books, calendars, message body and more.
sender and more. Go to Tools > Message Filters, select tasks and your chat account. Use the gears icon
your account, and click New to define one. at the bottom to bring up the Settings window. Inbox pane
4 Here you can see all the messages under
Thunderbird also lets you use tags to categorise
Folder pane the selected folder. It also has the Quick Filter
emails. Right-click an email and select Tag to assign a 2 Here you get a list of your email accounts button to filter messages based on a text string
colour-coded tag. You can use one of the preset tags, and their folders, including default folders such or their state (unread, starred and such).
or create your own. as Sent and Trash, and others you have created
Much like Mozilla’s Firefox browser, Thunderbird to organise your messages. Reading pane
5 This is where you can view the content of
)0,%03/&,201%"*"0+!!!v,+01,"+%+ "1%" Global search bar the currently selected message, and can take
"*&) )&"+1}0#2+ 1&,+)&16o "!1,1%"!!v+0+! 3 You can use this search bar to filter all kinds of actions on the message, such as
Themes option under the hamburger menu to explore and narrow down the emails across all your reply to it, star it, tag it and more.

www.techradar.com/pro/linux June 2025 LXF328 83


HOTPICKS

MEDIA PLAYER

Clapper
Media Player
Version: 0.8.0
Web: https://rafostar.github.io/clapper/

lapper Media Player is a lightweight media

C player that can play all the popular media


formats. While it’s not as widely known as
while you can open multiple files, you can’t drag and
drop a folder inside the app.
Besides offline
media, Clapper
can also stream
some other media players, such as VLC, it’s got all Clapper lets you easily remove and rearrange tracks online media
1%"0& #2+ 1&,+)&166,2+""!#/,**"!&-)6"/n in the queue. By default, it runs through the queue ãĨČąǏŋÐÅĬìijÐĬǎ
which it exposes through a simple and easy-on-the- serially, but you can ask it to shuffle the list. You also such as YouTube.
eyes interface. get options to loop a single track or the entire queue.
The easiest way to install Clapper is via Flathub with When playing videos, unlike some media players,
flatpak install flathub com.github.rafostar.Clapper . Clapper!,"0+}1), (1%"0-" 1/1&,o #6,2/"0&7"1%"
Clapper works like any other media player. You can window enough, it adds black padding. Use the mouse
simply drag media files, whether audio or video, into middle click or Ctrl+r to play the video at its original
the player’s interface to start playing them. Files 0-" 1/1&,o$&+n)&("))$,,!-)6"/0n6,2 +04&1 %
dragged and dropped on the title bar begin playing audio tracks and enable/disable subtitles if available.
immediately, while ones dropped anywhere else are &*&)/)6n6,2 +)0,!'201-)6 (0-""!o%"
added to the queue. good thing about Clapper is that it tries its best to
,2 +)0, )& (!! &)"01,/,40"6,2/!&0(+! ensure the audio doesn’t become too distorted as
find the media files you want to play. Remember that 6,2 %+$"1%"-)6 (0-""!o

ǏČijijÿÐĬǎ
SOFTWARE EMULATOR makes it fairly
straightforward to

Bottles
run Windows apps
and games on
Linux, and offers
several ease-of-
use advantages
Version: 51.20 over Wine.

Web: https://usebottles.com

ottles offers one of the most convenient

B 4601,/2+&+!,400,#14/"1,-&+25
distros. The bulk of the heavy lifting is done
61%"Wine compatibility layer. On top of that, Bottles
helps create isolated environments that have all the
configurations and dependencies to ensure the
Windows app runs smoothly. Windows software you want to install and run. Then
Bottles is available on Flathub, and can be installed follow the installation wizard as you would on Windows.
with flatpak install flathub com.usebottles.bottles . ,2 +)0, )& (1%" +01))/,$/*0211,+1,
When you fire it up for the first time, it’ll take a few quickly install software curated by Bottles’ community.
minutes to configure itself. Once the software is installed, it appears in the
Click the + button to create a new bottle. Then give /,$/*00" 1&,+,#1%",11)"o)& (1%"2+211,+
your bottle a name and select from one of the three next to the program to launch it. You can also use the
environment types. There’s Gaming that’s optimised three-dot menu besides the app to rename the app,
#,//2++&+$$*"0n,#14/"#,//2++&+$--)& 1&,+0n add it to the library of installed apps, add the app to
and Custom that enables you to customise settings your distro’s applications menu, uninstall it, and more.
manually. Then click Create to generate the new Experienced campaigners can also adjust all kinds
environment, which could take a while. of settings related to Wine from inside a bottle. You
When it’s done, click the bottle to open it. You can, for instance, tweak the Wine version used for
++,4 )& (1%"2+5" 21)"211,+1,/,40" " %,11)"n),+$4&1%1%"&+!,403"/0&,+n&+01))
1%"#&)"0601"*n+!-,&+11%"--1,1%"#&)",#1%" additional dependencies, and a lot more.

84 LXF328 June 2025 www.linuxformat.com


HOTPICKS

Exercise Timer is
FITNESS APP a nifty little app
for anyone who

Exercise
wants a no-frills,
easy-to-use timer
for their workouts.
Use it to create a

Timer
workout plan and
stay healthy.

Version: 1.8.1 Web: https://github.


com/mfep/exercise-timer

xercise Timer is a simple app for managing

E %&$%v&+1"+0&16&+1"/3)1/&+&+$ƒ „4,/(,210o
You can use it to set up custom timers for routines in the main window, along with the total time
exercise intervals and rest periods, which essentially it’ll take to complete each workout.
makes it a good option for any timed exercise routine. To begin exercising, click the workout you wish to
The app is primarily designed for Gnome, but you do. The app counts down the preparation time, then
can install it on any Flatpak-enabled distro with flatpak guides you through the workout with visual and audio
install flathub xyz.safeworlds.hiit . cues. The timer alternates between work and rest
1%00&*-)"&+1"/# "o &11%"/"1"/&+&+$ periods, displaying the remaining time for each interval,
button to configure your workout. Begin by giving the ),+$4&1%1%"/"*&+&+$+2*"/,#0"10o0,2+!
routine a name, then use the sliders to set the duration plays five seconds before each interval’s start and end.
of each exercise interval in seconds, the length of each When all rounds are completed, the app notifies you
rest period, the number of sets or rounds you want to 1%11%"4,/(,21&0#&+&0%"!o2/&+$1%"4,/(,21n6,2
complete, and the preparation time. + )& (20"1,1"*-,//&)601,-1%"1&*"/n,/%&11%"
When you’ve configured your workout, press the Reset button to stop the timer and return to the setup
Create button to save it. You can press the + button to screen. You also get the option to tweak the volume of
create as many workouts as you want. The app lists all the audio cues, or mute the app completely.

PHOTO MANAGER

KPhotoAlbum
Version: 6.0.1
Web: www.kphotoalbum.org

illed as a photo management and organisation

B tool, KPhotoAlbum has an impressive list of


#"12/"0+! +%")-6,2 1),$2"n1$+!
0"/ %1%/,2$%6,2/-%,1, ,))" 1&,+"##& &"+1)6o 1}0
particularly useful for those with large photo libraries,
who want an efficient way to organise and find images.
KPhotoAlbum is available in the official repos of most by date. Zoom into the timeline to navigate your library While
!&01/,0o+!4%&)"&1}0-/1,#1%"02&1",#--0n6,2 by years, months and days to find specific images. KPhotoAlbum
might be overkill
can easily install it on any Flatpak-enabled distro with KPhotoAlbum’s most interesting feature is its
for casual
flatpak install flathub org.kde.kphotoalbum . &)&161,++,11"&*$"0o,2 +++,11"&*$"0 photographers,
When you first launch KPhotoAlbum, it prompts you &+!&3&!2))6,/0$/,2-o0"1%"++,11&,+4&+!,4 it’s a good option
to select a folder containing your photos. to add useful metadata, such as descriptions, to your for efficiently
Choose the directory where your photos are stored, images, and tag people, places and events to help organising a large
ÿìÅĨ­ĨőǎČãǏìą­äÐĬƧǎ
and KPhotoAlbum begins importing them into its organise your library.
database, which could take a while. You have to create the tags beforehand, by heading
+01"!,#!&0-)6&+$1%"&*$"0n1%"--}0 1,"11&+$0–$ /,2-0o "/"6,2 +!!1$01,
dashboard shows various options to help you find each of the three tag groups: events, people and places.
&*$"0n),+$4&1%1&*")&+"o,2)"v )& (,++,-1&,+ You can then use the search bar to find photos by tags,
1,3&"4&*$"0o ,/&+01+ "n%,4%2*+&)0!&0-)60 categories or dates.
))&*$"0n ",,0&1&,+-) "01%"*,+4,/)!*-n There’s a lot more you can do with KPhotoAlbum, so
and so on. You can also use the timeline or view photos refer to its documentation to make the most of it.

www.techradar.com/pro/linux June 2025 LXF328 85


HOTPICKS

VPN

ProtonVPN
Version: 4.9.4
Web: https://protonvpn.com

/,1,+ &03&/12)-/&31"+"14,/(ƒ„ logging in, the app shows you a

P 0"/3& "1%1}0-/1,#/,1,+}002&1",#-/&3 6v
"+1/& -/,!2 10n4%& %&+ )2!"0/,1,+&)n
list of servers from all over the
world. However, free users can
secure email service. only select one of three
/,1,+1& (0))1%"/&$%1,5"00$,,! countries, namely Japan,
privacy-enhancing service, thanks to features such as "1%"/)+!0+!1%"o
&10+,v),$0-,)& 6o 1&0,-"+0,2/ "+!&+!"-"+!"+1)6 Hit Connect next to a
audited, and in addition to its paid plans also offers an country’s name to route traffic
ad-free, unlimited volume/bandwidth free tier as well. through there. You can even
Begin by creating an account with the service, and use the pull-down to select a
1%"+$/&10 )&"+1o/,1,+%0,##& &)&+/6 )&"+10 specific server inside a country.
#,/,1%+!v0"!!&01/,0n),+$4&1% "/3"/0/")&01"!),+$4&1%1%"&/),!n)1%,2$%1%" The good thing
about the open
!"1&)"!&+01))1&,+&+01/2 1&,+0o #6,2!,+}14+1 ones with the least amount of load aren’t available to source ProtonVPN
1,20"1%"--n/,1,+ +)0,%")-6,2 ,+#&$2/" free users. You can also just hit the Quick Connect service is its
-"+,/&/" 2/!1,/,21"))&+1"/+"11/##&  button to delegate the server selection to the app. uncapped free-
1%/,2$%/,1,+o The app lets you know when it’s connected to a tier plan, and
the kill switch
That said, the most convenient mechanism is to use 0"/3"/o0"1%"&0 ,++" 1211,+1,0"3"/1%"
functionality.
the unofficial distro-agnostic Flatpak package with ,++" 1&,+o,2 +)0,%"!1,1%"--}0"11&+$0
flatpak install flathub com.protonvpn.www . 4&+!,4+!1,$$)"1%"&))4&1 %,-1&,+n4%& %
Now fire up the client and sign in with the login automatically disconnects you from the internet if
/"!"+1&)06,220"!1,/"$&01"/4&1%1%"0"/3& "o#1"/ 6,2),0"1%" ,++" 1&,+o

Fastfetch supports
SYSTEM INFORMATION a variety of ASCII
logos. Use

Fastfetch
fastfetch --list-
logos to list all
distros, and replace
your distro’s logo
with another with
Version: 2.38.0 Web: https://github. fastfetch --logo
com/fastfetch-cli/fastfetch <logo_name> .

astfetch&0+&#16)&11)" 1,,)1%1!&0-)60

F system information inside a terminal window


&+3&02))6--")&+$*++"/o 1}00&*&)/1,
Neofetch but focuses on performance and flexibility.
To fetch the latest version, head to the project’s
GitHub releases page, which has pre-compiled Fastfetch also ships with several presets, which
&+/&"0#,/,1%+!v0"!!&01/,0o#1"/ /" ,+#&$2/1&,+#&)"01%1 201,*&0"%,40601"*
downloading the relevant binary for your distro, use information is displayed. Use fastfetch --list-presets
sudo dnf install fastfetch-linux-amd64.rpm to install to view all the available presets. You can then load a
&1,+v0"!!&01/,0n,/ sudo apt install fastfetch- particular preset configuration using the -c option. For
linux-amd64.deb 1,&+01)),+v0"!!&01/,0o instance, use fastfetch -c all.jsonc to display all the
#1"/&+01))1&,+n0&*-)616-" fastfetch in the 02--,/1"!*,!2)"0o&*&)/)6n fastfetch -c neofetch.
1"/*&+)o%&0!&0-)601%" ),$,,#6,2/!&01/, jsonc makes Fastfetch look exactly like Neofetch.
along with lots of system information. Explore all the other presets, and once you find a
Fastfetch is easy to tweak and fine-tune, and you setup you like, make it the default by first generating a
can customise its output via command-line arguments. local config file with fastfetch --gen-config .
For instance, you can limit the details. Use fastfetch The config file is ~/.config/fastfetch/config.jsonc,
--list-modules to view the list of supported modules. 4%& %&0 #&)"4&1% ,**"+10o,4'201 ,-6
,!&0-)6,+)61%"n"/+")n ($"0n"*,/6+! 1%" ,+1"+10,#6,2/!"0&/"!-/"0"1 #&)"1,1%&0
, )"!"1&)0n0-" &#6*,!2)"04&1%1%"-s option, such local config. From now on when you run Fastfetch, it
as fastfetch -s OS:Kernel:Packages:Memory:Locale . shows the output of that preset.

86 LXF328 June 2025 www.linuxformat.com


Games HOTPICKS

Blinken is a digital
MEMORY GAME recreation of the
classic Simon

Blinken
electronic game,
where you have
to correctly repeat
a sequence of
button presses.
Version: 24.12.3
Web: https://apps.kde.org/blinken/

linken is a memory game that is part of the

B !2 1&,+/,'" 1o 1&0&+0-&/"!6


1%"9A?80 )00& ")" 1/,+& $*"&*,+o
%"$*" %))"+$"0-)6"/01,/"*"*"/+!
replicate sequences of lights and sounds, which makes
it a great way to enhance memory and concentration.
You can download the game on any Flatpak-enabled
distro with flatpak install flathub org.kde.blinken . Blinken. 11("01%"1&*&+$0#/,*"3"):n21
The game’s interface has a digital version of the randomises each sequence, rather than following
&*,+!"3& "n4&1%#,2/!&##"/"+1 ,),2/211,+0n" % ,+#/,*1%"-/"3&,200".2"+ "n0&+1%"01+!/!
with its own distinctive sound. game type.
/"001%"1/1211,+&+1%" "+1/",#1%"0 /""+ To play the game, watch and listen carefully as the
1,"$&+1%"$*"o%&0-,4"/0,+1%"!"3& "+! buttons light up in a specific order. Then repeat the
illuminates the score counter. You can then choose sequence by clicking the buttons in the same order.
which of the three different difficulty levels you want #6,24+1n6,2 +-)64&1%1%"("6,/!04"))o
to attempt. When a game is not in progress, pressing the Ctrl
"3")9&01%""0&"01n+!&1$&3"06,21%"),+$"01 key displays the keys for the four lights.
1&*"/"("14""+" %0".2"+ "-)6 (o"3"): Each correct sequence earns you points, and the
&01%"&+1"/*"!&1")"3")n4%& %-)60)&(""3")9n21 sequences grow longer as you progress. Each step
has a comparatively smaller time break between each &+1%"0".2"+ "&04,/1%,+"-,&+1o #6,2*("
0".2"+ "-)6 (o"3")l&01%"*,01!&##& 2)1)"3"),# mistake, the game ends and you can start over.

STRATEGY

KsirK
Version: 24.12.3
Web:

+,1%"/!&$&1)3"/0&,+,# )00& &0}0

A KsirK strategy game, which is based on the


Risk board game. The objective of the game
&01, ,+.2"/1%"4,/)!601/1"$& ))611 (&+$
neighbouring territories and managing your armies.
"0-&1"&10##&)&1&,+n6,2 +&+01))KsirK on You can play KsirK against the computer or with other players, and even over the network.
any desktop through Flathub with flatpak install
flathub org.kde.ksirk . Before you start a game, you additional armies to your territories. You can left-
can choose the number of players, from two to six, click on a country to deploy an army, and right-click
4%& % +"&1%"/"%2*+,/ o to remove it.
The default goal of the game is to conquer the #1"/))1%"-)6"/0%3"-) "!1%"&//*&"0n
"+1&/"4,/)!o21&#6,20")" 11%"" % ,),-1&,+n 6,2 +11 (/&3)}0 ,2+1/6620&+$1%"*,20"
the game sets a goal for you randomly, for instance, to drag from the attacking country and drop to the
conquering a specific number of countries. attacked one. You then choose how many armies
Then you need to name your players, and tag them 1,11 (4&1%o
1,,+",#1%"0&5)&01"! ,2+1/&"0o #6,2/"-)6&+$6 #1%"11 (&03)&!n1%"$*"1%"+)),401%"
6,2/0")#n6,2 +1,$$)"1%")6"/ 0,*-21"/,-1&,+ defender to choose the number of armies it wants
for the other player. 1,!"#"+!4&1%o%"11 (1%"+ ,**"+ "04&1%
When the game begins, it randomly distributes /,)),#!& "o%"-)6"/4%,/,))0%&$%"/+2*"/
territories among the players. Each territory has one on the dice wins. The game ends when a player
army by default. You then get the chance to deploy achieves the set objective or conquers all territories.

www.techradar.com/pro/linux June 2025 LXF328 87


HOTPICKS

Refine is a
TWEAK GNOME useful tool for
customising

Refine
the appearance
and default
ÅÐé­ŊìČķĨǏČãǎijéÐǎ
Gnome desktop.

Version: 0.5.2
Web: https://tesk.page/refine/

efine is a graphical configuration tool for the

R +,*"!"0(1,-"+3&/,+*"+1o 1)),4020"/0
to tweak some advanced and experimental
Gnome settings, through an intuitive graphical
interface. Refine aggregates settings that are often
hidden or difficult to find, which makes it a must-use
tool for Gnome users to help them tweak their desktop minimise the window instead. Refine also lets you
without manually editing configuration files. define actions for the middle and right-click, too.
Refine is distributed as a Flatpak and can be installed The most interesting options, though, are under
with flatpak install flathub page.tesk.Refine . 1%"%"))©,*-,0&1,/0" 1&,+o ,/01/1"/0n6,2 +
The app has a straightforward two-pane interface. %+$"1%"4&+!,4211,+)6,21o+!4"}/"+,1
")" 1#/,*,+",#1%" 1"$,/&"0)&01"!,+1%")"#11, talking about moving all three buttons from the
bring up the relevant settings on the right. right-hand side to the left, but rather repositioning
+!"/--"/+ "n6,2 +04&1 % 2/0,/+!& ,+0n them individually.
as well as change the fonts for the interface and more. Then there are the experimental features, such
Then there’s Mouse & Touchpad, from where you can 03/&)"/"#/"0%/1",-1&,+0+!#/ 1&,+)
disable the default middle-click action to paste text. 0 )&+$o%")11"/&0*"+1#,/%&$%v/"0,)21&,+ & 
)0,n6!"#2)1n!,2)"v )& (&+$,+ +,*" *,+&1,/0o+ ""+)"!n%"!1,1%"&0-)60" 1&,+
window’s header bar maximises it. You can disable this 2+!"/ +,*""11&+$0n#/,*4%"/"6,2 ++,4
action, or switch it to one of the other dozen options. %,,0"#/,*0 )&+$# 1,/002 %09:=n9=8
For instance, you can tweak the double-click action to +!9?=1,"11"/#&16,2/+""!0o

Qpdf Tools is a
PDF EDITOR no-frills graphical
interface for the

Qpdf Tools
qpdf CLI tool
ijé­ijǏőČķǎÆ­Ćǎ
ķĬÐǏijČǏÆČąĥĨÐĬĬƨǎ
split, merge and
rotate PDFs.
Version: 3.1.2 Web: https://github.
com/silash35/qpdftools

pdf Tools is a simple tool that’s designed for

Q +6,+"4%,/"$2)/)64,/(04&1% #&)"0o 1}0


based on the qpdf command-line tool and
)&//6n+!"5-,0"0/+$",# ,**,+ "!&1&+$
features, such as compressing, splitting, merging and
/,11&+$ 0n))1%/,2$%+&+12&1&3"&+1"/# "o
The app is officially distributed as a Flatpak and #2+ 1&,+%")-06,2/"(2-)/$" #&)"&+1,
+"&+01))"!4&1% flatpak install flathub br.eng. smaller chunks. You get two options for splitting
silas.qpdftools . 1%"#&)"o,2 +"&1%"/0-)&16-$"/+$"1,"51/ 1
The Qpdf Tools interface is composed of four big multiple contiguous pages from the file, or extract
buttons, one for each of its functions. For instance, ))-$"0&+!&3&!2))6&+0&!" #&)",#1%"&/,4+o
)& (,*-/"00  &)"1,-,&+11%"--1,  &+))6n1%"/"}01%",11"  &)",-1&,+n
#&)"n1%"+0")" 1#/,*,+",#1%"#,2/ ,*-/"00&,+ 4%& %6,2 +20"1,/,11"))-$"0&+0&!" 
options. These range from super-low resolution, which #&)" ), (4&0",/+1&v ), (4&0"o06,2-"/#,/*+6
&0,-1&*&0"!#,/3&"4&+$ 0,+1%"0 /""+n1,%&$%"/ of the operations, the app asks you to name the new
resolutions meant for printing.  !, 2*"+1+!1%"!"0&/"!), 1&,+o
%"+1%"/"}01%""/$"  &)"0,-1&,+n4%"/"6,2 #6,24+1*,/"!"51"/&16n6,2 +20"PDFSam
+!!*2)1&-)" #&)"0+! ,*&+"1%"*&+0&!" (LXF317, page 86). For instance, you can use it to split
+"4 o,2 +!!+!/"*,3" #&)"0n+! 0-" &#& -$"0n04"))0"3"/6"3"+,/,!!-$"o 1
reorder them to ensure they appear in the correct can also split files by size, and offers more options
,/!"/&+1%"#&+) o,+3"/0")61%"-)&1  &)" 4%"+*"/$&+$ 0o

88 LXF328 June 2025 www.linuxformat.com


CODING ACADEM

CODING ACADEMY
DJANGO
Create a web-based
reward system
Matt Holder wonders how difficult it would be to replace a card-and-
stamp-based reward system with something a little more modern.

hile standing in the queue at a local coffee

W shop, we wondered how hard it would be to


replace the card-and-stamp reward system
with something more modern. The brief was that it
must be simple to use and perform the task easily.
OUR The project began with the following spec. Reward
EXPERT accounts will be looked up via a unique alphanumeric
string, which the customer can remember or hand to
Matt Holder the café on a card. Customer data shouldn’t be stored
is an IT as it can cause data protection issues. There needs
professional of 1,"1%/"",-"/1&,+0p!!&+$-,&+10n ,+3"/1&+$
15 years, Linux points to rewards, and using rewards for free drinks. A
user for over 20 timeline of account operations should be stored, as Django has its own admin interface, which is incredibly powerful and
years, user of well as the current status and a total number of points can be used to cut down the amount of code that needs to be written.
plenty of home rewarded since the account was opened.
automation The next decision to be made was that of which the points. Django separates projects into apps, which
njơŔɭ࡬ࢳŔȥƎɽơȍlj࢛ programming language and framework to use. We is a necessity for more complicated code.
ɢɭȶljơɽɽơƎnjơơȇࡳ decided on Python and Django, which gives a web In your favourite editor or IDE, edit the pyproject.
browser interface to the software. Django operates toml file and update the name and/or description. The
using an MVC paradigm – this stands for Model, View, rest can be left alone, but note how the dependencies
Controller, where the Model describes how the data is and python version are stored in here.
stored, Views describe how the data is viewed and how In the settings.py file, find the LANGUAGE_CODE
the system is interacted with, and the Controller value and update it accordingly. If you are in the UK,
represents the program’s logic. change this to LANGUAGE_CODE = ‘en-gb’ . Finally, in
We will be using UV to provide a virtual environment settings.py add the following to INSTALLED_APPS.
for this project, which separates all dependencies from INSTALLED_APPS = [
the operating system’s main installation of Python. ‘Points’,
Open your terminal and run the following commands: ...
$ curl -LsSf https://astral.sh/uv/install.sh | sh ]
We now need to create the project, install With this setup done, let’s create our database
dependencies and create our templated Django models. Django has an included Object Relational
project. Head back to your terminal and run the Mapper, or ORM, which gives a Pythonic interface
following commands: 1, "001%"!10"o"%&+!1%"0 "+"0n,2/
Full code for $ uv init RewardSystem requests are converted to SQL statements to be
this tutorial can $ cd RewardSystem run on database tables.
be downloaded $ uv add django rich To allow us to have multiple accounts and to store
from GitHub, $ uv run django-admin startproject RewardSystem . %&01,/6,#" % ,2+1}01/+0 1&,+0n4",+)6+""!
using this $ rm hello.py a couple of models. The first is called Account and
link: https:// $ uv run django-admin startapp Points stores information about accounts, and the second is
github.com/ $ uv run manage.py migrate called AccountOperation and stores transactions that
mattmole/LXF $ uv run manage.py createsuperuser can then be viewed in a table, or similar format.
328-Coffee-
Once these commands have been run, you have a In your IDE, open the Points folder and then the
Rewards/
RewardSystem project with an app inside to manage models.py file. Within this, add the contents as follows:

90 LXF328 June 2025 www.linuxformat.com


Web-based rewards CODING ACADEMY

from django.utils import timezone the created models. In your IDE, navigate to the Points
from datetime import datetime directory and edit admin.py, with the settings below:
class Account(models.Model): from django.contrib import admin The Django
accountCode = models.CharField(verbose_ from .models import Account, AccountOperation tutorial is
an excellent
name=”Account Code”, max_length=30, unique=True, admin.site.register(Account)
resource for
default=””) admin.site.register(AccountOperation)
learning more:
dateTimeCreated = models.DateTimeField(verbose_ Now, in the terminal, run the following: https://docs.
name=”Date / Time Created”, default=timezone.now) $ uv run manage.py runserver djangoproject.
currentPoints = models.BigIntegerField(verbose_ This opens Django’s built-in web server, which you com/en/5.1/
name=”Current Points”, default=0) can then use to test your code. Open your web browser intro/
totalPoints = models.BigIntegerField(verbose_ and navigate to http://localhost:8000/admin. When tutorial01/
name=”Total Points Collected”, default=0) this loads, you will see a login screen and you can use
availableRewards = models.BigIntegerField(verbose_ the credentials you created when running the
name=”Available Rewards”, default=0) createsuperuser command earlier on.
rewardsUsed = models.BigIntegerField(verbose_ Once logged in, spend some time looking at the
name=”Rewards Used”, default=0) Accounts and AccountOperations links and create
lastModified = models.DateTimeField(verbose_ some accounts and account operations. When doing
name=”Last Modified”, editable=False, auto_now=True) so, note how you can select from the list of accounts
class AccountOperation(models.Model): when creating the account operation. This is an
account = models.ForeignKey(Account, on_ important concept to which we will return.
delete=models.CASCADE) The admin interface is excellent and a real ‘batteries
dateTimeOfOperation = models. included’ feature of Django. However, it wouldn’t be the
DateTimeField(verbose_name=”Date / Time of best tool to use for the staff of the coffee shop, who
Operation”, default=datetime.now) would need something a bit more streamlined. This is
operation = models.CharField(max_length=30, where we will start to develop our views and templates.
verbose_name=”Operation”) 21#&/01n)"1}01("01, (x0,#/4"%3"0"12-
pointsChange = models.BigIntegerField(verbose_ Django project, added an app, created our database
name=”Points Change”, default=0) models, and used the admin interface to investigate
The Account model contains seven fields to hold the database tables used for our app.
the information we need. Django automatically adds a A view will be developed to return all accounts from
numerical ID field to the database, which is the primary the database, pass them to a template, then they can
key and will always be unique. However, we want to be rendered as HTML. We will also develop a view to
ensure that account codes are also unique, so we provide buttons to interact with the accounts, so we
,2)!"&1%"/20"1%&0#&")!01%"-/&*/6("6n,/!, can add points, or allow customers to spend rewards.
what we have here by setting the unique attribute to "#,/"!"3"),-&+$3&"4n4"+""!1,0"12-,2/
true. We then store the date and time that the account URL mappings. This allows us to call a Python function
is created and add a field to store the last modification when a URL is called. In the RewardSystem directory,
date. Other than these fields, we add fields that store open the urls.py file and add the following:
the current number of points, total number of points from django.contrib import admin
earned, rewards currently available and rewards used. from django.urls import include, path
This is useful, but doesn’t give us any way to urlpatterns = [
understand what was earned or used and when. This path(‘admin/’, admin.site.urls),
&04%"/"1%"0" ,+!*,!") ,*"0&+1,&10,4+o +1%&0
model, we first use the ForeignKey function to create a
field that links back to the Account model. This means FRAMEWORKS AND FUNCTIONALITY
we have a database relationship that links the account
operations with the accounts themselves. Other than Django is not the only game in town – like lots of things in the open
this, we add fields to the model to store what the source world, multiple projects exist to scratch the same itch. This is
operation is (AddPoints, AddRewards and so on). generally a good thing, as friendly competition drives improvements
We need to commit these changes to the database. across the board. CherryPy, Pyramid and Flask are all frameworks
To do so, in the terminal at the bottom of your IDE, that can be used to create web applications. They do not come
make sure you are in the CoffeeShop directory, which bundled with their own database abstraction layer, or ORM (Object
contains manage.py, and run the following commands: Relational Mapper), so a separate solution needs to be used. The
$ uv run manage.py makemigrations Points SQL Alchemy project is a highly regarded framework, which can
$ uv run manage.py migrate provide the same functionality as Django’s built-in ORM.
The first command creates the set of SQL Deployment with all of the frameworks is largely the same, given
commands needed to construct the database, and the they all use the Web Server Gateway Interface (WSGI) standard,
second commits these changes. This feels like overkill which was developed for hosting web apps written in Python.
when creating such a simple model and creating from Further expansion of web apps can be carried out using projects
an empty database, but it is important if you ever such as Django-ninja, which allows easy creation of APIs within
needed to change the database schema throughout 6,2/--+!&1 +)0,$"+"/1"0 %"*0#/,*6,2/*,!")o #6,2
the dev process and wanted to commit the changes wanted to add QR codes to your application, this is simple to do
while hopefully keeping the data. using the segno library. Finally, Matplotlib can be used to embed
Next, we’ll look at the included admin interface, plots into your views.
which provides a way to interact with the database and

www.techradar.com/pro/linux June 2025 LXF328 91


CODING ACADEMY Web-based rewards

path(‘rewards/’, include(‘Points. <td><a href=”/rewards/timeline/{{account.


urls’)) accountCode}}”>Link</a></td>
] </tr>
Now, create a urls.py file in the {% endfor %}
Points folder and add the following: </table>
from django.urls import path </body>
from . import views The above code is largely standard HTML and adds
urlpatterns = [ some simple boiler plate to the page, then has a couple
path(‘points’, views.listAccounts, of Jinja2 style templates. Jinja2 templating allows
name=’listAccounts’), things like for loops and if statements to be carried out
path(‘points/’, views.listAccounts, before the HTML is rendered to your browser. In this
name=’listAccounts’), sample, each row of the table is built up from a record
] of the query set. We then reference elements using the
While splitting the files into two {{account.attributeName}} syntax.
is overkill in this case, it is good With that code written, ensure you have saved
practice as it means each app’s 6,2/#&)"0+!/"/2++&+$1%"4"0"/3"/o-"+6,2/
mappings are stored with the rest web browser and navigate to http://localhost:8000/
of their logic. What this allows us to rewards/points. If all has gone well, you will see a table
do, once the view has been written, containing details of all the accounts you added when
is to visit http://localhost:8000/ playing with the admin interface. If you didn’t create
rewards/points and this, in turn, any, do so now, then refresh the page you just visited.
The project’s
calls our view function, which is called listAccounts. So far so good, but we can’t easily interact with the
directory structure
should be as Note how we have two lines here, one to allow the account to add points or rewards or allow customers to
shown in this /points URL to be used and one to allow /points/. spend rewards. The next thing to do is to build the view
diagram. If your uv run manage.py runserver command is and page that allows us to see the current status of an
still running, you will see errors regarding a missing account and change the points/rewards balance.
function. Ignore this and we will put it right next. In your IDE, open the urls.py file from the Points
Now, in your IDE, open the Points directory and directory and ensure the file looks like the following:
open the views.py file. Add the following to your file: urlpatterns = [
from .models import Account, AccountOperation path(‘points’, views.listAccounts,
import math name=’listAccounts’),
def listAccounts(request): path(‘points/’, views.listAccounts,
accounts = Account.objects.all() name=’listAccounts’),
return render(request, “accounts.html”, {“accounts”: path(‘points/<str:accountId>’, views.pointsEntry,
accounts}) name=’pointsEntry’),
This simple function uses the ORM to return all ]
account rows from the database. This is a query set – This file now has an extra URL mapping, so that
)&01,# ,2+1,'" 10n4%"/"4" +/"#"/"+ "1%" &#6,23&0&1http://localhost:8000/rewards/points/
data for each row, using the .attributeName syntax. ACCOUNT_CODE, you can view details of this account
On the second line, we return from the function the and have controls to add points and change the
output of the render function, which takes the name of rewards balance. As with the previous code, we first
an HTML template file as the first argument and then a need to create a view and then the template HTML file.
dictionary containing any data we want to send to the Open views.py again and add the following function:
template. This could be query sets, strings, base64 def pointsEntry(request,accountId):
"+ ,!"!&*$"0n0&+$)",'" 10,/+2*"/0o"#,/"4" if accountId == “”:
can test this, we need to create the HTML template. In return render(request, “error.html”, {“error”: “No
your Points directory, create a templates directory and accountId sent!”})
a file within, called accounts.html. In this file, add: account = Account.objects.get(accountCode =
<body> accountId)
<h1>Account Listing</h1> return render(request, “points.html”, {“account”:
<table> account})
<thead> In this function, we expect two arguments. The
<tr> #&/01&01%"/".2"01+!1%"0" ,+!1("001/&+$n
<th>Account Name</th><th>Current Points</ representing an account’s code. If the accountCode
th><th>Available Rewards</th> &00,*"%,4)+(01/&+$n4"/"+!"/+"//,/-$"o
<th>Change Balance</th><th>View Record</th> #accountCode is not blank, we look it up from the
<tr> database, then render the HTML to be displayed, which
</thead> reads from the points.html template and passes the
{% for account in accounts %} returned account object to the template.
<tr> Next, in the Templates folder, create a file called
<td>{{account.accountCode}}</ points.html and add the following contents:
td><td>{{account.currentPoints}}</td><td>{{account. <body>
availableRewards}}</td> <h2>Points Balance</h2>
<td><a href=”/rewards/points/{{account. <form action=”/rewards/pointsBalanceUpdate”
accountCode}}”>Link</a></td> method=”post”>

92 LXF328 June 2025 www.linuxformat.com


Web-based rewards CODING ACADEMY

{% csrf_token %} account.availableRewards += rewardsToAdd


<input type=”hidden” id=”accountId” account.totalPoints += pointsToAdd
name=”accountId” value=”{{account.accountCode}}”> accountOperation = AccountOperation.objects. HTMX is an
<label for=”addPoints”>Add Points</label> create(account = account, pointsChange = pointsToAdd, interesting way
<select name=”addPoints” id=”addPoints”> operation=”PointsAdded”) to add AJAX
<option value=”0”>0</option> if rewardsToAdd > 0: and other
<option value=”1”>1</option> accountOperation = AccountOperation.objects. more modern
functionality
<option value=”2”>2</option> create(account = account, pointsChange =
to our projects.
</select> rewardsToAdd, operation=”RewardsAdded”)
See https://
<p> # Now process any used rewards htmx.org.
<label for=”useRewards”>Use Rewards</label> # ...
<select name=”useRewards” id=”useRewards”> if rewardsToUse > 0 or pointsToAdd > 0:
<option value=”0”>0</option> account.save()
<option value=”1”>1</option> return render(request, “success.html”, {“message”:
</select> “Points have been added and / or rewards have been
</p> used!”, “pointsAdded”: pointsToAdd, “rewardsUsed”:
<p> rewardsToUse })
<button type=”submit”>Submit form</button> First we grab three pieces of data from the POST
</p> request – accountId, pointsAdded and rewardsUsed.
</form> Then we create an account object using the accountId,
</body> which was sent through the POST request and stored
In this code, first we display some information about in the hidden field. This gives us an object that we can
the account, including points balance and number of use to increase the points balance and/or decrease the
available rewards. The important part, however, is the rewards. After changing the two attributes, we use the
form that we use to change the account’s balances. save method to write the updated values back to the
The form we configure first of all has a URL definition database. We also create an accountOperation object,
that is called when the form is submitted. Next we which we link to the account object and set the values
include a CSRF token, which is needed to stop cross- accordingly, whether points have been added, rewards
site vulnerabilities – this is all handled by Django. granted or rewards used. Logic is built in, so if the
The next things we need to add are combo boxes points equal 10, the reward counter is incremented and
that allow the balances to be updated. The first select 10 is taken off the points balance.
and linked options are hard-coded and allow the points There are two stanzas in this code for balance
balance to be kept the same or increased. We then add updates – one that handles points added and the other
a second combo box and an option for zero – which that handles rewards used. Finally, we return rendered
keeps the reward balance the same. A for loop is then HTML to show that the balance has been updated.
used to add options up to the current rewards balance. That’s all we have space for, but the functionality we
In this way, the UI doesn’t allow the rewards balance to are missing, such as viewing the transaction history,
be decreased by more than is available. We also have a will be available at GitHub – see Quick Tip (page 90).
hidden text field, which stores the accountCode, so The listing is missing simple HTML to render a success
that we know which account to update. message. This is left for you to try and it needs to be
The final thing to cover is what happens when added to success.html in the templates directory.
1%"#,/*4"'201 /"1"!&002*&11"!o"+""!1,
!!+"4"+1/6&+1,urls.py for the form data to be
submitted to, and then a view, which takes the data DJANGO EXTENSIONS
+!20"0&1 ,/!&+$)6o-"+ urls.py again and add:
urlpatterns = [... The Django Extensions project provides tools that are not included
path(‘pointsBalanceUpdate’, views. as standard in the core Django library. The more complicated your
pointsBalanceUpdate, name=’pointsBalanceUpdate’), app gets, the more complicated the data storage is likely to be. This
] is where the ability to graph your database model becomes useful,
Now, go back to views.py and add the following: which is one of the powerful features available with this extension.
def pointsBalanceUpdate(request): Another useful thing it can do is list details of your models at the
pointsToAdd = int(request.POST.get(‘addPoints’)) command line, which can be easier than navigating back to models.
rewardsToUse = int(request.POST.get(‘useRewards’)) py files. The library also includes support for advanced debugging,
accountId = request.POST.get(‘accountId’) from the web browser and a profile server, to work out inefficiencies
account = Account.objects.get(accountCode = in your code to ensure the system stays as snappy as possible.
accountId) Validation also exists for checking template files for errors, and it is
# Add the reward points possible to automatically generate admin.py files, too, to make best
if pointsToAdd > 0: use of the admin interface. Finally, an enhanced version of the shell
rewardsToAdd = math.floor((account.currentPoints functionality exists, where the library automatically loads models
+ pointsToAdd)/10) and other useful objects. This is just a portion of what the library
account.currentPoints = account.currentPoints + +!,x)"/+*,/"1https://django-extensions.readthedocs.io.
pointsToAdd - (10 * rewardsToAdd)

COFFEE AND CAKE ANYONE? Get great deals at www.magazinesdirect.com

www.techradar.com/pro/linux June 2025 LXF328 93


CODING ACADEMY Rust

RUST Part Three!


Catch up

Create a Simple
with previous
issues – see
page 64!

DirectMedia Layer app


David Bolton shows how to set up SDL2 with Rust and demonstrates it
with a fun 400-line program to pick a person at random.

"}3" ))"!,2/-/,$/*Choice,

W +!6,2 +0""%,4&14,/(0&+
the Logical Dice boxout (page 96).
%"+&1}0/2+n&1!"#2)101,#&3"-",-)"n21
&#6,2-00&++2*"/#/,*;v@01%"
OUR #&/01-/*"1"/n&120"01%1o +1%" VS Code
EXPERT 1"/*&+)n20"1%&01,/2+&1#,/0&5-",-)"p
$ cargo run 6
David Bolton ,2 +!,4+),!1%"-/,'" 1#/,*
has always been &1 2ƒhttps://github.com/David-H-
a bit of a maths Bolton/Projects/blob/main/rust_choice.
nerd and draws zip„o 1&+ )2!"0 launch.jsonn0,6,2 +/2+
upon a book &1&+VS Code,+!,+"/2"6-"#,+1n0,
ŹˊࢳŔȟŔʋǠɽ 1%"  ,!" +,21-211"51o%"+6,2
writer to find /2+&1n&1$"+"/1"0%,/&7,+1))&+"0"14""+
inspiration for 1%"*"*"/ ,)2*+0o,3"1%"*,20"
the program in ,3"/-"/0,++2*"/+!&1%&$%)&$%101%"
this article. -1%1,1%",11,*4&1%/"!)&+"o%")&+" The program when the mouse moves over 3.
0%,40!&##"/"+1-1%#,/" %-"/0,+o
%"-/,$/*%,)!01%"%,/&7,+1))&+"00 subsystem. We need the TTF subsystem to output
" •-,&+1–n4%"/"-,&+1%014,&+10 ))"!start 1%"-)6"/+2*"/211,+0n+!&120"01%"&*$"
+!endo,#,)),4-)6"/n'20101/14&1%1%"-)6"/ 020601"*1,,21-211"51o")0,+""!1, /"1"
+2*"/+!&1"/1"1%/,2$%1%"Veco #1%" 2//"+1 4&+!,41,!&0-)6"3"/61%&+$p
There’s a lot
-)6"/".2)01%"01/1,/1%""+!n %+$"&11,1%" let window = video_subsystem
of functions
in SDL2 and ,1%"/,+"o #1%" 2//"+1-"/0,+&09n+!start&09+! .window(“Choice”, 900, 600)
finding out what end&0;n1%" 2//"+1-"/0,+" ,*"0;o %-1% .position_centered()
you can call $,"01,!&##"/"+1"5&1n&+ )2!&+$1%",+"4&1%1%"o .build()
in Rust can be "1/&"!4&1%!&##"/"+1 ,),2/"!)&+"0n21" 20" .map_err(|e| e.to_string())?;
tricky. The best 1%"*&+),,-/2+01>8#/*"0-"/0" ,+!n2+)"001%" %"A88+!>88&+1%&0/"1%"4&+!,40&7"0
suggestion is to ,),2/ %+$&+$&0!,+"1%"0*"&+" %#/*"n&1'201 &+-&5")0ƒ%,/&7,+1)n3"/1& )„n-)201%"4&+!,41&1)"n
do a Ctrl-click %+$"0 ,),2/3"/6.2& ()6o |%,& "}n+!1%"4&+!,4}0-,0&1&,+n4%& %&0 "+1/"!
on a function’s ,+1%"0 /""+o
parameters
and get to the
Architecture of SDL ,4,/(4&1%1%"4&+!,4n4"20"*21)"n
)*,01))ƒ&*-)"&/" 1"!&6"/„--)& 1&,+0 Canvas<Window>o)),#1%"#2+ 1&,+0n02 %0draw_
source code.
%3"0&*&)// %&1" 12/"o vertical_line+!0,,+n,//,41%&0+!-00&10

For instance,
Ctrl-clicking on +&1&)&0"1%"0 /""+n),!+6 #,+1020"!n),! &mut canvas.
Canvas opens &*$"0&+1,02/# "0o
render.rs, which
is very well
•• $*"),,-o 1/"-"101%"0"1>8#-0o
"+!"/0 /""+,'" 10o
Drawing text
/4&+$1"51&0'201-211&+$-&5")0,+0 /""+o%"
commented
• ,,(#,/("60š*,20" )& (0o #2+ 1&,+ render_text,21-21001/&+$&+0-" &#&"!
and includes
examples in •  #0 -"&0-/"00"!n"5&1o
"+""!1,&+&1&)&0":n1%"+1%"3&!",
#,+1+! ,),2/11%"!"0&/"! ,,/!&+1"0o
,2+!"/01+!1%&0#2+ 1&,+n)"1}0$, (1,0& 0o
comments.
020601"*n1%"&*$"0020601"*+!1%"  :&03"/6$,,!10)--&+$-&5")0!,4+,+1%"

94 LXF328 June 2025 www.linuxformat.com


Rust CODING ACADEMY

A function showing
lifetimes.

0 /""+o +1%",/&$&+)9n&120"!01/2 12/"0&+ font: &Font<’a, ‘static>,


))"!02/# "0o:)0,20"01%,0"21&1)0,%0 texture_creator: &’a
01/2 12/"0&+3&!", ))"!1"512/"0o%"0"/" TextureCreator<WindowContext>,
*2 %#01"/n+!*,!"/+ 0 +!/4&))&,+0,# The <’a>&0 ))"!)&#"1&*"-/*"1"/o 1}020"!
-&5")0-"/0" ,+!o 61%" ,*-&)"/1,-/"3"+1/"#"/"+ "01,!1"&+$
%"+6,220"1%" 020601"*n&1!/401%" !/,--"!"#,/"1%" ,*-&)"/1/&"01,20"1%"*o "/"
1"5120&+$1%"#,+1&+1,02/# "&+*&+o 11%"+ 1%"#,+1+!texture_creator)0,%3"1%"0*" There’s an
,-&"01%102/# "&+1,1"512/"&+n4%"/"&1 )&#"1&*"o%"a!,"0+}10&$+&#6+61%&+$&+&10")#o #6,2 excellent
+1%"+ ,-6&1,+1,1%"0-" &#&"!), 1&,+o %!0" ,+!0"1,#)&#"1&*"0&+1%"0*"0 ,-"n6,2 extension for
%" ))"),4)&101%"1"512/",+1,1%"!"01&+1&,+o *&$%1 ))1%"*bnc+!0,,+o%&+(,#anb+!0,,+ VS Code called
Numbered
)&1&00%,/1#,/&1), (1/+0#"/o #1%"0" ,+! " %01%"+*",#$/,2-4&1%1%"0*")&#"1&*"0o
Bookmarks that
-/*"1"/&0+,+"n1%"+&1 ,-&"01%""+1&/"1"512/"n +1%",!6,#1%&0#2+ 1&,+n+,1%"/)&#"1&*"&020"!o
we recommend.
,1%"/4&0"6,2 +0-" &#6/" 1+$2)/-/1,#&11, %&0&0-/1,#1%"0,2/ " ,!"p Once installed,
,-6o" 1+$)"0&+:/"'201+5n6-)204&!1%+! let surface = font.render(text).blended(color). you can set
%"&$%1n))&+-&5")0o unwrap(); a bookmark
canvas.copy(&texture, None, text_rect).unwrap(); let texture = texture_creator with the right-
Unwrap&0+""!"!" 20"copy/"12/+0/"02)1o .create_texture_from_surface(&surface) click menu or
.unwrap(); Ctrl+Shift plus
What is <’a> for? But VS Code !&0-)604%16,2 +0""&+1%" a digit. It’s great
%"!"#&+&1&,+,#1%"render_text01/10p 0 /""+0%,1(above). for skipping
quickly around
fn render_text<’a>( VS Code4&1%1%"201+)67"/"51"+0&,+!!0
­Ǐÿ­ĨäÐǎãìÿÐƧǎ
canvas: &mut Canvas<Window>, $/"61"510%,4&+$&+#"//"!)&#"1&*"01,%")-6,2

USING SDL2 FOR RUST


201) (0  n0,:-/,3&!"0,+"o $ sudo apt install libsdl2-dev ,*-&)"+!/2+-/,$/*0o:&0
%"/"}0)0,ƒ"00"*)6„21 $ sudo apt install libsdl2-image-dev &$x),,(,+1%":4&(&ƒhttps://wiki.
4"})))"3"1%1#,/+,1%"/1&*"o: $ sudo apt install libsdl2-ttf-dev libsdl.org/SDL2/FrontPage„1,$"1#"")
-/,3&!"0$/-%& 04&1%&*$"0n/2"6-" ,+}1!, cargo add n" 20"1%"/201  #,/&1o)0,n4"}/"4,/(&+$&+201+,1o
#,+10+!0,2+!0o+"4"/3"/0&,+n ,*-&)"/4&)),'" 1o +01"!n#1"/6,2}3" 2 (&)6n1%"/"/"-)"+16,#:201
;n%0'201 ,*",2121 2//"+1)6 /"1"!+"4-/,'" 14&1% cargo new "5*-)"0n+!1%"2010,2/ " ,!"#,/
+""!01," ,*-&)"!#/,*0 /1 %o&1% project-name n"!&1Cargo.toml+!!! :&0-/,3&!"!o1/)v )& (,++301,
:n6,2 +&+01))&14&1%1%/"" sudo 1%"0")&+"0&+1%"!"-"+!"+ &"00" 1&,+p open render.rso,20%,2)!0""-1%1
apt ,**+!0o,n&1}0:#,/+,4o [dependencies] 1%"1,-phome/David/.cargo/registry/
,/,1%"/!&01/,0n#,)),41%",##& &) sdl2-sys = “*” src/<snipped>/sdl2/render.rs
&+01/2 1&,+01https://wiki.libsdl.org/ sdl2 = { version = “0.37”, features = + &)"0n )& (1%"1%/""v)&+"0& ,+n1%"+
SDL2/Installation. We need the [“image”,”ttf”] } ,+1%"-,-v2-*"+2n1& (%,4 &!!"+
!"3"),-*"+13"/0&,+0n0,/2+1%"0" &1%1%"/201v+)67"/"51"+0&,+ &)"0o,46,2 +3&"41%"#,)!"/
,**+!0&+1"/*&+)p &+01))"!n6,20%,2)!+,4")"1, +!1%"#&)"0&1 ,+1&+0o

www.techradar.com/pro/linux June 2025 LXF328 95


CODING ACADEMY Rust

"+)"!6!"#2)1„n )"/&+$1%"0 /""++!0,,+o 1}0


'201"0&"/1,!,1%&0"3"/61&*"&+1%"),,-o
•)"/1%"0 /""+q
•/41%")&+"0q
•/4+61%&+$")0"q
• +!)"("6-/"00"0+!*,20"o
+!!,1%&0"3"/6#/*"o"}))),,(11%"211,+0
&1#2/1%"/,+o

60fps or more?
%"+4" /"1"1%" +30n4" +0-" &#6&#1%"
Bugs can be 2+!"/01+!%,41%"201 ,*-&)"/&0&+1"/-/"1&+$6,2/ %/!4/"06+ 01,1%"3"/1& )/"1/ "n(306+ o%&0
squished and ,!"o%&0#"12/"&0 ))"!$%,011"51,/&+)6%&+10o &01%"1&*"4%"+6,2/*,+&1,/}0%/!4/"%0!/4+
explained by AI %"+6,24/&1"201 ,!"1%1&+3,)3"0/"#"/"+ "0 1%"0 /""++!&0/"12/+&+$1,1%"1,-,#1%"0 /""+1,
systems such
­ĬǏČĥìÿČijƧ 21!,"0+}1"5-)& &1)60-" &#6)&#"1&*"0n1%" ,*-&)"/ !/4&1$&+o #6,220"1%"#&/01)&+"n306+ &0!&0)"!
20"0)&#"1&*"")&0&,+/2)"01,21,*1& ))6!"1"/*&+" +!1%"0" ,+!%0&1"+)"!p
--/,-/&1")&#"1&*"0o%"$/"61"51&+ VS Code shows let mut canvas = window.into_canvas().build()….
1%"0"&*-)& &1)&#"1&*"01%11%" ,*-&)"/!!0"%&+! let mut canvas = window.into_canvas().present_
1%"0 "+"0o"!*,/",21)&#"1&*"")&0&,+1https:// vsync().build()….
doc.rust-lang.org/nomicon/lifetime-elision.html. #6,2"+)"306+ n6,2/-/,$/*&0)&*&1"!1,
>8#-0o%&0*"+06,2/ ,!"*201#2))6/2+#/*"&+
Why doesn’t it flicker? )"001%+9>o>>>*0o ,/1%"Choice--n1%&0&0+,1
2/3&!", /!&0 " ,/ ":8>84&1%> ,# -/,)"*o #6,2/ ,!""3"/1("0),+$"/1%+1%&0n1%"
o%"*&+4&+!,4&0A885>88-&5")0n4%& % #/*"/1"!/,-0+!+61%&+$*,3&+$*&$%1--"/
&0=<8n888n" %&+1%/"" ,),2/0ƒ8v:=>„o +;:v&1 &1'+(6o&1%,21306+ n6,2 +%3"3"/6%&$%#-0
,),2/n" %-&5")1("0<61"0n0,1%"0 /""+20"0 !"-"+!&+$,+%,4#016,2/-/,$/*/2+0o%1}0*,/"
'201,3"/:,#o:02--,/1014,0 /""+0n /")"3+11,$*"0o
+!4%"+4"-21&10,+1%"0 /""+n4"/"4/&1&+$ %"$*"),,-01/1011%" running:),,-
!&/" 1)61,1%"0 /""+1%1&0,##0 /""+x1%&0 011"*"+1o%"for event ),,-%+!)"0+6"3"+10
&0 ))"!1%" (2##"/o 02 %0("6-/"00"0n*,20"*,3"0+!*,20"
%"+4%"+"3"/61%&+$%0""+4/&11"+n4"#)&-1%" 211,+-/"00"0o)& (&+$*,20"211,++!/")"0&+$
 (2##"/0,&1&0+,4,+0 /""+n+!1%"1%1 &11/&$$"/014,"3"+10pMouseButtonDown+!
40,+0 /""+&0+,41%" (2##"/o%"#)&--&+$&0 MouseButtonUpo%"0"%3"""+)"#1&+21/"
!,+"6 ))&+$canvas.present()o 10%,2)!"1%")01 +,120"!o
If you want ))#1"/)),#1%" ))01,!/41"51n&*$"0+!0,,+ $,,!/2)"%"/"&01,0"1#)$0&+1%""3"+1
őČķĨǏĥĨČäĨ­ąǎijČǎ /"!,+"o %+!)"/0n1%"+ 1,+1%,0"#)$0)1"/,+&+0&!"1%"
halt early, use :)4604/&1"01,1%" (2##"/o #&14/,1" $*"),,-o%&0&0!,+"4%"+1%"*,20"&0*,3"!+!
std::process 1,1%"!&0-)6"!0 /""+n6,2}!$"13&0&)"#)& ("/o &1&0!"1" 1"!1%1&1*,3"!,3"/211,+o%"draw_
::exit(n); %"/"01,#1%"&03&))"#,/%,)!&+$ player -12/"01%"-)6"/#/,*1%"211,+n+!1%"
where n is a 1%"1"512/"0o draw_path()#2+ 1&,+&0 ))"!)1"/,+#1"/1%"3"/1& )
number from +!%,/&7,+1))&+"0%3"""+!/4+o
0-255; 0 usually Inside the game loop
means success
while 1-255 can
14,2)!%3"""+-,00&)"1,4/&1"1%&04&1%,21&1 The buttons
2-!1&+$1>8#-0n211%"+6,2%3"1,),,(,21#,/ &1%&+1%"),,-4" ))button.rendero%&0!/401%"
be error codes.
*+$&+$4%"+1,#)&-1%" (2##"/ƒ4%& %&0 1"5120&+$!&##"/"+1 ($/,2+! ,),2/#,/%,3"/+!

LOGICAL DICE
#6,2}/",214&1%*1"0+!!" &!"1%1 -/16!/4,+",/14,%,/&7,+1))&+"0
,+",#6,2&0$,&+$1,26-&77#,/1%" "14""++614,3"/1& ))&+"0o
/"01n6,2 ,2)!!/401/40n211/61%&0 +#,)!1%"4%,)"0%""1+!#,)),4
&+01"!o 1,/&$&+1"!&+1%"*1%"*1& ) -1%!,4+#/,*" %-"/0,++!0""
-$"0,#Scientific American,  (4%"+ 4%,"+!011%"o%"+6,2/" %,+"
/1&+ /!&+"/4/,1"1%"*o))6,2 "+!,#%,/&7,+1))&+"n$,1,1%",1%"/o #
+""!&0-"++!0%""1,#--"/o 6,2#,)),43"/1& ))&+"1,1%"*&!!)",#
/43"/1& ))&+"#,/" %-"/0,+o )&+"n&$+,/"&1+! //6,+!,4+o,n
- "1%"*,211,, 2-61%"--"/}0 **$,"0!,4+n /,001,,#&n!,4+n
4&!1%+!4/&1"1%"+*",#" %  /,001,3n!,4+n /,001,&*n
-"/0,+11%"1,-o ,)!&10,1%"+*"0 !,4+n1%"+ (1,%"/0")#o&*$,"0
/"%&!!"++!%3"0,*",+"/+!,*)6  /,001,,%n!,4+n,3"/1,**n
!!+11%",11,*,#,+")&+"o !,4+n /,001,&*n!,4+n1%"+"+!0
,4#,)!&10,,1%1%"+!+*"0 2-1,#&n/" %"01%"+!-60j
/"%&!!"+n+!)"1" %*"*"/,#1%" Logical dice to figure out who has to pay. %1}01%"-/,$/*4"}/"4/&1&+$o

96 LXF328 June 2025 www.linuxformat.com


Rust CODING ACADEMY

Files > Show


Hidden Files, plus
the location of
render.rs.

"5" 21"01%" ),02/"ƒ1%" ,!""14""+1%" 2/)6


/ "0„,+ "#,/" %")"*"+1&+1%"/+$"o%"|_|-/1
!"#&+"01%"-/*"1"/0#,/1%" ),02/"o%"_*"+0 If you want a bit
4"+""!-/*"1"/21!,+}1&+1"+!1,20"&103)2"n of AI assistance
'201)&("&+1%"for _ in),,-o for free, sign
Retrieving the error code from the terminal after running the program. +"!&##"/"+ ""14""+for),,-+!1%" ),02/" up to Copilot.
&01%16,220"/"(1,"5&11%"for),,-21+""! Then, when you
0,,+o 1,21-2101%"1"51&+1%"0*"460render_ "12/+1,"5&11%" ),02/"o get an error or
text+!)&101%"1"512/",+1,1%"0 /""+o +1%&0"5*-)"n1%"-/*"1"/p&0,//,4"!#/,* would like it to
+0&!"1%"$*"),,-n&1$"101%"*,20" 2/0,/ " %)&+"p suggest a fix,
just scroll down
,,/!&+1"0#/,*1%"MouseMotion"3"+1n1%"+),,-0 lines.iter().for_each(|p:&Point| {
to the bottom
1%/,2$%1%"211,+0n %" (&+$&#1%"*,20"&0,3"/+6 println!(“{} {}”, p.start, p.end);
of the pop-up
,#1%"211,+0+!&#1%"211,+&0 )& ("!o }); and click Quick
%"+1%"*,20"%,3"/0,3"/+2*"/n&10"10 The for in),,-&0"0&"/1,2+!"/01+!o Fix. Then you
draw_player+!)1"/&+1%"0*"#/*" ))0draw_ can have it
patho,*("&101+!,21n&1!/401%& ("//"!)&+"0o What exactly is a closure? explain or fix
%"/"}0+,"06461,!/4)&+"1%& (+"00&+:n 1}0++,+6*,20#2+ 1&,+x&+,1%"/4,/!0n&1%0+, the problem.
+!#,)),4&+$02$$"01&,+,+1 (3"/#),4n4"20"! +*"o%&+(,# ),02/"00 ,*- 1n&+)&+"#2+ 1&,+0
/" 1+$)"!/4&+$ ,!"1, /"1"1%"draw_thick_ 1%16,2 +-00/,2+!03/&)"0,//$2*"+101,
horizontal_line+!draw_thick_vertical_line#2+ 1&,+0n ,1%"/#2+ 1&,+0o),02/"020"1%"|params|06+15+!
,1%4&1%0-" &#&"!4&!1%,/%"&$%1o + -12/"3)2"0#/,*/,2+!1%"*o
// Define a simple closure that adds 5 to a number
How does draw_path work? let add_five = |x| x + 5;
120"01%"lines: " •,&+1–1%140$"+"/1"!6+
"/)&"/ ))1, add_lines()o%&02&)!0" ,#-,&+10n // Using the closure directly
" %%,)!&+$01/1+!"+!&+1/"-/"0"+1&+$-"/0,+o let result = add_five(10);
%"+1%"*,20" 2/0,/*,3"0,3"/-"/0,+ println!(“add_five(10) = {}”, result);
211,+ndraw_path&0 ))"!o 1&1"/1"01%/,2$%1%"
-,&+10n),,(&+$1,0""&#"&1%"/1%"01/1,/"+!&01%" What does std::thread::sleep do?
2//"+1-"/0,+o #&1&0n&1#&$2/"0,211%",1%"/"+!+! 0&)6*&00"!n0&1}0)*,0111%""+!,#1%"$*"
!/40)&+"1,&1o%"+4"4/,1"1%&0n1,%")-4&1% ),,-n1%&0)&+"-2101%" 2//"+11%/"!1,0)""-#,/
!"2$$&+$n4"!!"!println! * /,2+!"/" % 9š>81%,#0" ,+!" %#/*"p
)&+"!/4o"}3")"#11%"*&+21 ,**"+1"!,21o std::thread::sleep(Duration::new(0,
1_000_000_000u32 / 60));
Where are the for loops? 1}046,#20&+$0,#14/"1,0"11%"#/*"/1"1
%"/"/"3"/6#"4for),,-0o%1}06!"0&$+o%" /,2$%)6>8#-0o0&+$306+ &0"11"/46n2106+ &+$
#,)),4&+$)&+"04,/(1%"0*"46n211%"0" ,+!,+" 1,>8#-0#,/1%&0-/,$/*&0+,1&*-,/1+1o
&0*,/"#2+ 1&,+)p 2/1&,+0%3"14,3)2"0p0" ,+!0+!
for _ in 0..num_lines { ++,0" ,+!0o,n9u888u888u888&0&))&,+n+!
(0..num_lines).for_each(|_| { &))&,+++,0" ,+!0&0,+"0" ,+!o201)),406,2
%"0" ,+!)&+"0-" &#&"0/+$"#/,*81, 1,20"2+!"/0 ,/"0&+,/!"/1,*(")/$"+2*"/0
numlines-1. The .for_each(|_| { &0*"1%,!1%1 *,/"/"!)"o

IF YOU LIKE DEALS… We’ve got great deals here www.magazinesdirect.com

www.techradar.com/pro/linux June 2025 LXF328 97


NEXT MONTH

LXF3n2s9ale
The #1 open source mag
Future Publishing Limited, Quay House, The Ambury, Bath, BA1 1UA

will be o y
Email [email protected]
EDITORIAL

Tuesda
Editor-in-chief Neil Mohr
Art services Adequate Media Limited

27th May
Production editor Katharine Davies
Content director Marc Chacksfield

2025
Group art director Warren Brown
Editorial contributors
Paul Alcorn, Mike Bedford, David Bolton, Neil Bothwick,
Nate Drake, Marco Fioretti, Matt Holder, Jon Masters,
Nick Peers, Les Pounder, Michael Reed, Mayank Sharma,
Shashank Sharma, Mollie Taylor, Saeed Wazir
Cover illustration Magictorch.com
Raspberry Pi is a trademark of the Raspberry Pi Foundation.
Tux credit: Larry Ewing ([email protected]).
Content production Adequate Media Limited
ADVERTISING
Commercial sales director Clare Dove
[email protected]
Advertising director Lara Jaggon
[email protected]
Account director Andrew Tilbury
[email protected]
INTERNATIONAL LICENSING
Head of print licensing Rachel Shaw
Linux Format is available for licensing and syndication.
To find our more contact us at [email protected]
or view our content at www.futurecontenthub.com
NEW SUBSCRIPTIONS & PAST ISSUES
Web www.magazinesdirect.com
EXISTING SUBSCRIPTIONS
Web www.mymagazine.co.uk
Subscription delays: Please allow up to seven days before
contacting us about a late delivery to [email protected]

25 YEAR
MANAGE YOUR SUBSCRIPTION ONLINE WITH MYMAGAZINE
Visit www.mymagazine.co.uk/FAQ to view frequently asked questions
or log in at www.mymagazine.co.uk
CIRCULATION
Newstrade & retail category director Ben Oakden
PRODUCTION AND DISTRIBUTION
Group head of production Mark Constance
Production manager Nola Cokely
Senior ad production manager Jo Crosby
Digital editions manager Jason Hudson

ANNIVERSARY!
THE MANAGEMENT
Managing director technology group Paul Newman
Global head of design Rodney Dive
Commercial finance director Tania Brunning
Printed by William Gibbons & Sons
Distributed by Marketforce UK
121-141 Westbourne Terrace, London W2 6JR. www.marketforce.co.uk
For enquiries email: [email protected]

It feels a lot longer than that… Send us on our merry Order and access past issues: If you are an active subscriber, you have instant access to past issues through your iOS or
Android device/s. Your digital magazine entitlement is available at no additional cost and no further action is required.
Pocketmags library may not have access to the full archive of digital past issues. You will only be able to access the digital

way with a celebration of all things open source.


back issues as long as you are an active subscriber.
To purchase single past issues (print format only): Visit www.magazinesdirect.com (click on Single Issues tab)
or email [email protected]. Magazinesdirect.com is owned and operated by Future Publishing Limited.
BAR rates for Linux Format: £84.37 for UK, €171 for Europe, $194 for USA, £149 for rest of world.
Linux® is the registered trademark of Linus Torvalds in the US and other countries. GNU/Linux is abbreviated to Linux
throughout for brevity. Where applicable, code printed in this magazine is licensed under the GNU GPL v2 or later. See

Escape Windows 10
www.gnu.org/copyleft/gpl.html. All copyrights and trademarks are recognised and respected.
Disclaimer: All contents © 2025 Future Publishing Limited or published under licence. All rights reserved. No part of this
magazine may be used, stored, transmitted or reproduced in any way without the prior written permission of the publisher.
Future Publishing Limited (company number 2008885) is registered in England and Wales. Registered office: Quay
House, The Ambury, Bath BA1 1UA. All information contained in this publication is for information only and is, as far as we

Save all your old PCs from the scrap heap, annoy your are aware, correct at the time of going to press. Future Publishing Limited cannot accept any responsibility for errors or
inaccuracies in such information. You are advised to contact manufacturers and retailers directly with regard to the price of
products/services referred to in this publication. Apps and websites mentioned in this publication are not under our

friends and force them to run Linux instead! control. We are not responsible for their contents or any other changes or updates to them. This magazine is fully
independent and not affiliated in any way with the companies mentioned herein.
If you submit material to us, you warrant that you own the material and/or have the necessary rights/permissions
1,02--)61%"*1"/&)+!6,221,*1& ))6$/+1 212/"2)&0%&+$&*&1"!+!&10)& "+0""0)& "+ "1,-2)&0%6,2/
submission in whole or in part in any/all issues and/or editions of publications, in any format published worldwide and on

Rust code on the Pi


00, &1"!4"0&1"0n0, &)*"!& %++")0+!00, &1"!-/,!2 10o+6*1"/&)6,202*&1&00"+116,2/,4+/&0(+!n
although every care is taken, neither Future nor its employees, agents, subcontractors or licensees shall be liable for loss or
damage. We assume all unsolicited material is for publication unless otherwise stated, and reserve the right to edit, amend
and adapt all submissions. All contents in this magazine are used at your own risk. We accept no liability for any loss of data
or damage to your systems, peripherals or software through the use of any guide. Note: you ain’t seen nothing, right?

Taking our ongoing Rust coding series to single-board We are committed to only using magazine paper derived from responsibly managed, certified forestry and chlorine-free
manufacture. The paper in this magazine was sourced and produced from sustainable managed forests, conforming to
strict environmental and socioeconomic standards.

systems, we discover it runs as fast as on a desktop.

Digging up old editors Future is an award-winning international media group and


We talk to the old Linux Format team and discover what leading digital business. We reach more than 57 million
international consumers a month and create world-class
content and advertising solutions for passionate
amazing projects they’re up to at the moment. consumers online, on tablet & smartphone and in print.

Best distros ever!


CREDIT: Magictorch

We’re going with Linux Mint but there are more distros
under the sun than we have time to cover or even try.
Content of future issues subject to change. All change, everyone off!

98 LXF328 June 2025


9000 9001

You might also like