# feed_data

id: c7717b50-0ed6-4366-9511-c5b330dac1fd
url: http://fedoramagazine.org/feed/
title: Fedora Magazine
group_id: 5ba66bdc-22cd-4924-9389-104d85c2247e
feed_type: Rss_2_0
language: en-US
description:
Guides, information, and news about the Fedora operating system for users, developers, system administrators, and community members.

original_document:
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Fedora Magazine</title>
	<atom:link href="http://fedoramagazine.org/feed/" rel="self" type="application/rss+xml" />
	<link>https://fedoramagazine.org/</link>
	<description>Guides, information, and news about the Fedora operating system for users, developers, system administrators, and community members.</description>
	<lastBuildDate>Thu, 18 May 2023 23:36:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2</generator>
	<item>
		<title>The Community Platform Engineering F2F 2023 Experience – Part II</title>
		<link>https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-ii/</link>
					<comments>https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-ii/#comments</comments>
		
		<dc:creator><![CDATA[Akashdeep Dhar]]></dc:creator>
		<pubDate>Mon, 15 May 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[Fedora Project community]]></category>
		<category><![CDATA[CPE]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38357</guid>

					<description><![CDATA[20 Mar 2023 &#8211; 23 Mar 2023 &#8211; Barcelona, Spain Intro If you have not already &#8211; now is the best time to read through the first part of the event report before getting into the second part here. Day 2Wednesday, 22nd March 2023The team members decided to start a bit late on the second [&#8230;]]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote">
<p>20 Mar 2023 &#8211; 23 Mar 2023</p>
<cite>&#8211; Barcelona, Spain</cite></blockquote>



<span id="more-38357"></span>



<p><strong>Intro</strong></p>



<p>If you have not already &#8211; now is the best time to read through the <a href="https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-i/" target="_blank" rel="noreferrer noopener">first part</a> of the event report before getting into the second part here. </p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-scaled.jpg"><img decoding="async" width="1024" height="511" src="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-1024x511.jpg" alt="" class="wp-image-38362" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-1024x511.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-300x150.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-768x383.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-1536x766.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-2048x1021.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-816x407.jpg 816w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-400x200.jpg 400w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> &#8211; Actually, never mind &#8211; there are too many people there.</figcaption></figure>



<p><strong>Day 2</strong><br /><strong><em>Wednesday, 22nd March 2023<br /></em></strong>The team members decided to start a bit late on the second day to ensure that everyone gets enough rest after the adventurous first day. Once the joint breakfast was completed in the hotel restaurant, the members started heading off to the office by 10 in the morning. They were were gracefully served Catalonian snacks by <a href="https://accounts.fedoraproject.org/user/lenkaseg/" target="_blank" rel="noreferrer noopener">Lenka Segura</a>, Japanese souvenirs by <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a>, and German sweets by <a href="https://accounts.fedoraproject.org/user/jbley/" target="_blank" rel="noreferrer noopener">Julia Bley</a> for the duration of the meeting. <a href="https://accounts.fedoraproject.org/user/mattdm/" target="_blank" rel="noreferrer noopener">Matthew Miller</a> started the second day with his talk about the Fedora Project strategy and how <a href="https://docs.fedoraproject.org/en-US/cpe/" target="_blank" rel="noreferrer noopener">Community Platform Engineering</a> fits into the picture. This talk was followed by the one by <a href="https://accounts.fedoraproject.org/user/humaton/" target="_blank" rel="noreferrer noopener">Tomas Hrcka</a> about how the <a href="https://docs.pagure.org/releng/" target="_blank" rel="noreferrer noopener">Fedora Release Engineering team</a> addresses its responsibilities. The team took a short break after the first couple of sessions, before heading into the next set.</p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="768" src="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-1024x768.jpg" alt="" class="wp-image-38359" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-1024x768.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-300x225.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-768x576.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-1536x1152.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-2048x1536.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-816x612.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> &#8211; <a href="https://accounts.fedoraproject.org/user/lenkaseg/" target="_blank" rel="noreferrer noopener">Lenka Segura</a>  <a href="https://accounts.fedoraproject.org/user/mattdm/" target="_blank" rel="noreferrer noopener">Matthew Miller</a>  <a href="https://accounts.fedoraproject.org/user/asamalik/" target="_blank" rel="noreferrer noopener">Adam Samalik</a>  <a href="https://accounts.fedoraproject.org/user/tdawson/" target="_blank" rel="noreferrer noopener">Troy Dawson</a></figcaption></figure>



<p>After a short break, the team continued with three lightning talks delivered about <a href="https://www.redhat.com/en/technologies/cloud-computing/openshift" target="_blank" rel="noreferrer noopener">OpenShift</a> operators by <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a>, <a href="https://packit.dev/" target="_blank" rel="noreferrer noopener">Packit</a> by <a href="https://accounts.fedoraproject.org/user/lachmanfrantisek/" target="_blank" rel="noreferrer noopener">Frantisek Lachman</a> and <a href="https://accounts.fedoraproject.org/user/lbarczio/" target="_blank" rel="noreferrer noopener">Laura Barcziova</a>, and <a href="https://pulpproject.org/" target="_blank" rel="noreferrer noopener">Pulp</a> by <a href="https://accounts.fedoraproject.org/user/msuchy/" target="_blank" rel="noreferrer noopener">Miroslav</a><a href="https://accounts.fedoraproject.org/user/msuchy/"> Suchy</a>. Miroslav Suchy delivered a thought-provoking talk about the scope of tooling for the Community Platform Engineering team, and how it contributes to <a href="https://fedoraproject.org/" target="_blank" rel="noreferrer noopener">Fedora Linux</a>. With that, the folks dispersed into small groups for lunch. Once they were back in the office, <a href="https://accounts.fedoraproject.org/user/csomh/" target="_blank" rel="noreferrer noopener">Hunor Csomortáni</a> delivered a talk about revisiting source-git and the plans for unifying package sources in the pipeline. This was followed by a talk by <a href="https://accounts.fedoraproject.org/user/carlwgeorge/" target="_blank" rel="noreferrer noopener">Carl George</a> about the <a href="https://docs.fedoraproject.org/en-US/epel/" target="_blank" rel="noreferrer noopener">EPEL</a> 10 plans for improvements that would be coming very soon. The final interesting talk of the day was delivered by <a href="https://accounts.fedoraproject.org/user/bstinson/" target="_blank" rel="noreferrer noopener">Brian Stinson</a> about the expectations of <a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux" target="_blank" rel="noreferrer noopener">RHEL</a> from Fedora Linux and <a href="http://centosproject.org/" target="_blank" rel="noreferrer noopener">CentOS</a><a href="http://centosproject.org/"> Stream</a>.</p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-1024x576.jpg" alt="" class="wp-image-38360" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-1024x576.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-300x169.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-768x432.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-1536x864.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-2048x1152.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-816x459.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> &#8211; <a href="https://accounts.fedoraproject.org/user/ekidney" target="_blank" rel="noreferrer noopener">Emma Kidney</a>  <a href="https://accounts.fedoraproject.org/user/dfan/" target="_blank" rel="noreferrer noopener">David Fan</a>  <a href="https://accounts.fedoraproject.org/user/zlopez/" target="_blank" rel="noreferrer noopener">Michal Konecny</a>  <a href="https://accounts.fedoraproject.org/user/t0xic0der/" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a>  <a href="https://accounts.fedoraproject.org/user/jnsamyak/" target="_blank" rel="noreferrer noopener">Samyak Jain</a>  <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a></figcaption></figure>



<p>In the evening, at around 19:00, the team members left for a regional burger restaurant, <a href="https://www.tripadvisor.com/Restaurant_Review-g187497-d7223439-Reviews-Tio_Joe-Barcelona_Catalonia.html" target="_blank" rel="noreferrer noopener">Tio Joe’s</a>. This had been booked in advance and was near the hotel premises . With toasts made to the team members that were now united after a long time, they not only enjoyed the appetizing food that was served but also the company of the friends that they had bonded with over the course of the last couple days. </p>



<p>Once the dinner was over, at around 21:30, some folks headed back to the hotel for a respite. The remainder went to the <a href="https://trompokaraokebar.com/">Trompos </a><a href="https://trompokaraokebar.com/" target="_blank" rel="noreferrer noopener">Karaoke</a><a href="https://trompokaraokebar.com/"> Bar</a> to participate in the fun karaoke night session organized by <a href="https://accounts.fedoraproject.org/user/abompard/" target="_blank" rel="noreferrer noopener">Aurelien Bompard</a>. People queued up their songs and soon began to collaborate in performing their favorite songs in duos and in choirs.  This was a fitting end to the night, as late as 02:00, and a fun look at their singing preferences.</p>



<p><strong>Day 3</strong><strong><br /></strong><strong><em>Thursday, 23rd March 2023</em></strong></p>



<p>This was the day of departure for a lot of people. Since they would miss out on the sessions on this third day, it was incredibly light in terms of the agenda and activities. Many of the team members checked out of their hotel rooms after breakfast at 09:00 and left their luggage with the hotel before leaving for the office.</p>



<p> <a href="https://accounts.fedoraproject.org/user/smattejiet/" target="_blank" rel="noreferrer noopener">Stefan Mattejiet</a> started off the last day with his discussion session about CPE Futurespective, and understanding what direction the team should head in the coming times. The interesting discussion felt a lot inspired by the established logic model planning structure used for <a href="https://docs.fedoraproject.org/en-US/council/" target="_blank" rel="noreferrer noopener">Fedora Council</a> community initiatives. This structure starts off with planning the general objectives first and then going back to the implementation details later.&nbsp;</p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="768" src="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-1024x768.jpg" alt="" class="wp-image-38358" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-1024x768.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-300x225.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-768x576.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-1536x1152.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-2048x1536.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-816x612.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> &#8211; <a href="https://accounts.fedoraproject.org/user/arrfab" target="_blank" rel="noreferrer noopener">Fabian Arrotin</a>  <a href="https://accounts.fedoraproject.org/user/james/" target="_blank" rel="noreferrer noopener">James Antill</a>  <a href="https://accounts.fedoraproject.org/user/asaleh/" target="_blank" rel="noreferrer noopener">Adam Saleh</a>  <a href="https://accounts.fedoraproject.org/user/carlwgeorge/" target="_blank" rel="noreferrer noopener">Carl George</a>  <a href="https://accounts.fedoraproject.org/user/humaton/" target="_blank" rel="noreferrer noopener">Tomas Hrcka</a></figcaption></figure>



<p>The next session was hosted by <a href="https://accounts.fedoraproject.org/user/amoloney/" target="_blank" rel="noreferrer noopener">Aoife Moloney</a> who kicked off an interesting discussion about the limited-scope projects that the team undertakes and the maintainers for the applications that the team takes care of. The members participated in pointing out the things that currently work great and those that could use some improvements. This was the last planned session for the day and the group assembled to be a part of the “Community Platform Engineering family picture”. After that, they dispersed into small groups to have their lunches in their preferred places. </p>



<p>With no more planned talks after lunchtime, the team members were divided into smaller groups for breakout rooms to participate in more detailed discussions. <a href="https://accounts.fedoraproject.org/user/zlopez" target="_blank" rel="noreferrer noopener">Michal Konecny</a> lead the one for the infrastructure and release engineering team.&nbsp;</p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories.jpeg"><img decoding="async" loading="lazy" width="1024" height="653" src="https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-1024x653.jpeg" alt="" class="wp-image-38361" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-1024x653.jpeg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-300x191.jpeg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-768x490.jpeg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-816x520.jpeg 816w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories.jpeg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> &#8211; <a href="https://accounts.fedoraproject.org/user/zlopez/" target="_blank" rel="noreferrer noopener">Michal Konecny</a>  <a href="https://accounts.fedoraproject.org/user/carlwgeorge/" target="_blank" rel="noreferrer noopener">Carl George</a>  <a href="https://accounts.fedoraproject.org/user/t0xic0der/" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a>  <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a>  <a href="https://accounts.fedoraproject.org/user/nphilipp/" target="_blank" rel="noreferrer noopener">Nils Philippsen</a>  <a href="https://accounts.fedoraproject.org/user/arrfab/" target="_blank" rel="noreferrer noopener">Fabian Arrotin</a>  <a href="https://accounts.fedoraproject.org/user/tdawson/" target="_blank" rel="noreferrer noopener">Troy Dawson</a>  <a href="https://accounts.fedoraproject.org/user/dherrera/" target="_blank" rel="noreferrer noopener">Diego Herrera</a></figcaption></figure>



<p>The team started slowly thinning down even more in the late afternoon, with the members bidding farewell to each other in the office and returning to the hotel. Some members decided to stay longer to explore Barcelona a bit more. Others began collecting their luggage from the hotel and leaving for the airport. With “goodbyes” waved to teammates and “resolves” about the next thing, the members departed from the face-to-face meeting with a new zeal and energy to contribute in an even better way to the community. </p>



<p>Even with minor hiccups and some teammates not being able to join the event, the meeting event turned out to be a grand success &#8211; both in uniting the members and in strategizing the team&#8217;s efforts. The members of the team surely look forward to the next time they get together.&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-ii/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/05/Platform-Engrg-F2F-2023_pt-2-300x127.jpg" length="9768" type="image/jpg" />	</item>
		<item>
		<title>Make use of Btrfs snapshots to upgrade Fedora Linux with easy fallback</title>
		<link>https://fedoramagazine.org/make-use-of-btrfs-snapshots-to-upgrade-fedora-linux-with-easy-fallback/</link>
					<comments>https://fedoramagazine.org/make-use-of-btrfs-snapshots-to-upgrade-fedora-linux-with-easy-fallback/#comments</comments>
		
		<dc:creator><![CDATA[Stuart D Gathman]]></dc:creator>
		<pubDate>Fri, 12 May 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[FAQs and Guides]]></category>
		<category><![CDATA[btrfs]]></category>
		<category><![CDATA[snapshot]]></category>
		<category><![CDATA[system-upgrade]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38259</guid>

					<description><![CDATA[Use a Btrfs snapshot as a fallback in case of any problems with a system upgrade. Think of it as a "save game" for your computer!]]></description>
										<content:encoded><![CDATA[
<p>Back in 2018, a <a href="https://fedoramagazine.org/use-lvm-upgrade-fedora/" target="_blank" rel="noreferrer noopener">previous article</a> demonstrated how to use LVM to clone the root filesystem before upgrading Fedora Linux so as to have a fallback in the unlikely event that something goes wrong. Today, the default Fedora Workstation install uses Btrfs. Now you can use a Btrfs snapshot to make creating a bootable fallback much easier. Note that converting or migrating a system to Btrfs from another filesystem is outside the scope of this article.</p>



<span id="more-38259"></span>



<h2 class="wp-block-heading">Check that root filesystem is Btrfs</h2>



<p>This example uses a Pinebook aarch64 laptop. Before proceeding, first make sure that Btrfs is being used for the root (system) filesystem. Not every spin or image uses Btrfs by default.</p>



<pre class="wp-block-preformatted">$ df -T
Filesystem     Type     1K-blocks     Used Available Use% Mounted on
devtmpfs       devtmpfs      4096        0      4096   0% /dev
tmpfs          tmpfs       998992        0    998992   0% /dev/shm
tmpfs          tmpfs       399600     6360    393240   2% /run
/dev/mmcblk2p3 btrfs     56929280 39796116  15058348  73% /
tmpfs          tmpfs       998996       24    998972   1% /tmp
tmpfs          tmpfs      5242880        0   5242880   0% /var/lib/mock
/dev/mmcblk2p3 btrfs     56929280 39796116  15058348  73% /f34
/dev/mmcblk2p3 btrfs     56929280 39796116  15058348  73% /home
/dev/mmcblk2p2 ext4        996780   551888    376080  60% /boot
/dev/mmcblk2p1 vfat        194348    31648    162700  17% /boot/efi
tmpfs          tmpfs       199796      100    199696   1% /run/user/1000
tmpfs          tmpfs       199796       84    199712   1% /run/user/0</pre>



<h2 class="wp-block-heading">List the existing Btrfs subvolumes</h2>



<p>The above example output shows that the file system mounted on &#8220;root&#8221; (&#8220;/&#8221;) is type Btrfs. Notice that three mountpoints show the same backing device and the same <em>Used</em> and <em>Available</em> blocks. This is because they are parts (subvolumes) mounted from a single Btrfs filesystem. The <em>/f34</em> subvolume is my bootable snapshot from last year.</p>



<p>A default Fedora Btrfs install creates one Btrfs filesystem with two subvolumes &#8212; <em>root</em> and <em>home</em> &#8212; mounted on / and /home respectively. Let&#8217;s see what other subvolumes I&#8217;ve added:</p>



<pre class="wp-block-preformatted">$ sudo btrfs subvol list /
ID 272 gen 110428 top level 5 path root
ID 273 gen 110426 top level 5 path home
ID 300 gen 109923 top level 5 path f34
ID 301 gen 95852 top level 5 path home.22Jul26
ID 302 gen 95854 top level 5 path f36.22Jul26</pre>



<p>There is an <em>f34</em> subvol from the last system-upgrade and two readonly snapshots of <em>home</em> and <em>f36</em>. The easiest way to add and delete snapshots is to mount the Btrfs root. I will update the system and create a new snapshot of the current f36 <em>root</em> subvolume. If you have renamed your <em>root</em> subvolume, then you presumably know enough to adjust the following example accordingly for your system.</p>



<h2 class="wp-block-heading">Create the Btrfs fallback snapshot</h2>



<pre class="wp-block-preformatted">$ sudo dnf update --refresh
... lots of stuff updated (reboot if kernel updated)
$ sudo mkdir -p /mnt/root
$ sudo mount /dev/mmcblk2p3 /mnt/root
$ cd /mnt/root
$ ls
f34  f36.22Jul26  home  home.22Jul26  root
$ sudo btrfs subvol snapshot root f36
Create a snapshot of 'root' in './f36'</pre>



<p>Because Btrfs snapshots are filesystem based, it is not necessary to &#8220;sync&#8221; before the snapshot, as I recommended for LVM. To boot from the new subvol as a fallback, you will need to edit /mnt/root/f36/etc/fstab with your favorite editor. If you are a beginner, nano is a dirt simple text editor with minimal features. Here are some lines from my <em>fstab</em> file:</p>



<pre class="wp-block-preformatted">LABEL=PINE		/    btrfs   subvol=root,compress=zstd:1        1 1
UUID=e31667fb-5b6f-48d9-aa90-f2fd6aa5f005 /boot ext4    defaults        1 2
UUID=75DB-5832          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
LABEL=PINE		/home    btrfs   subvol=home,compress=zstd:1    1 1
LABEL=SWAP swap			swap	discard=once	0 0</pre>



<p>Change <em>subvol=root</em> to <em>subvol=f36</em>. This change is to the file in the snapshot, not your production <em>fstab</em>. You can compare them with <kbd>diff /etc/fstab /mnt/root/f36/etc/fstab</kbd>. In my case, I also deleted my <em>f34</em> snapshot from last year with <kbd>sudo btrfs subvol delete f34</kbd>.</p>



<h2 class="wp-block-heading">Test the Btrfs fallback snapshot</h2>



<p>Now you are ready to test the fallback. You could use <a href="https://fedoramagazine.org/setting-kernel-command-line-arguments-with-fedora-30/" target="_blank" rel="noreferrer noopener">grubby</a> or edit an entry in /boot/loader/entries to change <em>subvol=root</em> to <em>subvol=f36</em>. But in the interest of safety for beginners, I will have you edit the GRUB entry at boot time instead. Check out  <a href="https://fedoramagazine.org/boot-earlier-kernel/" target="_blank" rel="noreferrer noopener">this article on GRUB</a> for tips on getting to the GRUB menu.  Once you are there, press the <strong>e</strong> key to edit the default kernel entry. Don&#8217;t worry &#8212; your changes are in volatile memory only. If you mess up, reboot to start over. Just like with fstab, find <em>subvol=root</em> and change it to <em>subvol=f36</em>. Press <strong>F10</strong> or <strong>Ctrl</strong>+<strong>X</strong> to boot your modified entry. With these changes, the system should boot into your new snapshot. Look at /etc/fstab to make sure you are booting from the right subvol, or enter <kbd>mount | grep subvol</kbd> to see what subvolume is mounted on &#8220;/&#8221;. </p>



<h2 class="wp-block-heading">Do the Fedora Linux system upgrade</h2>



<p>If your fallback is working, reboot back to your normal root filesystem (and confirm as above). Then proceed with the standard system-upgrade outlined on the <a href="https://docs.fedoraproject.org/en-US/quick-docs/dnf-system-upgrade/" target="_blank" rel="noreferrer noopener">wiki page</a>. TIP: Before running <kbd>dnf system-upgrade reboot</kbd>, make another snapshot of root. Call it something like <em>root.dl</em>. That way, you don&#8217;t have to download five gigabytes of packages again should you discover that there wasn&#8217;t enough free space. The snapshot will not take up any additional space because all but the downloaded packages are shared with <em>root</em> and <em>f36</em>. About that sharing of disk blocks … <br /><br /><kbd>dnf system-upgrade</kbd> gets confused about free space as reported by Btrfs because the f36 files in the <em>root</em> subvolume use the same disk locations as the same files in the <em>f36</em> subvolume. So removing them from the <em>root</em> subvolume during the upgrade process doesn&#8217;t actually free up any space. If you run out of space, and you reboot &#8212; the graphical user interface (GUI) won&#8217;t start. Use <strong>Ctrl</strong>+<strong>Alt</strong>+<strong>F2</strong> to login on a text console and practice your command line interface skills. Figuring out what to remove to free up space or how to expand the root filesystem is beyond the scope of this article (mine is often on an LVM volume and can be expanded). Having more than 50% free for the upgrade is a safe bet.</p>



<h2 class="wp-block-heading">Recovery</h2>



<p>Should something go wrong, you can reboot and edit the GRUB entry to boot the fallback. If you are a beginner, you&#8217;ll want some hand holding if you do end up needing to change the GRUB entry on disk (so you don&#8217;t have to edit at each boot). It is straight forward to delete or rename the broken <em>root</em> subvol.  Snapshot the <em>f36</em> subvol (or the <em>root.dl</em> snapshot) to try the system-upgrade process again. Here is an example of starting over after booting into the fallback system on subvol f36:</p>



<pre class="wp-block-preformatted">$ mount | grep subvol
$ sudo mount /dev/mmcblk2p3 /mnt/root
$ cd /mnt/root
$ sudo mv root root.failed
$ sudo btrfs subvol snapshot f36 root
Create a snapshot of 'f36' in './root'

Don't forget to edit /mnt/root/root/etc/fstab to change the subvol mounted on "/" to "root".</pre>



<p>As it turns out, the new kernel-6.2.11 for f38 did not boot on my Pinebook after the system-upgrade!  (Don&#8217;t worry, ARM is an alternative CPU architecture for Fedora Linux &#8212; this is very unlikely to happen to you on a mainstream device.) I was indeed able to boot back to f36 by editing the GRUB entry for kernel-6.2.10 at boot time as described above. I am now using f38 again &#8212; but with kernel-6.2.10 from f36. </p>



<p><strong>Update</strong>: <em>kernel-6.2.12 is out and it works on the Pinebook.</em></p>



<h2 class="wp-block-heading">Expiration</h2>



<p>As you update the f38 system, it will eventually want to delete the last f36 kernel from /boot. That is normally not a problem, as by that time you have settled into f38, and the f36 snapshot is just an archive.  If you want to keep your fork (f36 snapshot) bootable indefinitely, you should preserve a working f36 kernel under /boot. The simplest way to do so is to set <em>installonly_limit=0</em> in /etc/dnf/dnf.conf and manually remove old kernels. It is simple and safe (but annoying).<br /><br />Outline of a more complex solution (not for beginners): Run <kbd>find /boot -name "*fc36*"</kbd> to list all the kernel and GRUB files for your f36 subvolume snapshot that are under /boot (which is not in the snapshot). Copy them to a backup location (I would mount the f36 subvolume and copy to a backup directory there). While booted from f38, for each f36 kernel version, use dnf to remove that specific kernel version (for example, <kbd>dnf remove kernel-core-5.19.11-200.fc36</kbd>).  Do not remove the f38 kernels! Now restore the f36 kernels you saved to /boot. The f38 system doesn&#8217;t know about f36 kernels anymore, and it will not remove them from /boot.<br /><br />The problem with that method is the danger of accidentally removing the running f38 kernel. If anyone has a better method, let me know in the comments.</p>



<h2 class="wp-block-heading">Future directions</h2>



<p>Those comfortable with modifying GRUB entries might consider creating a snapshot subvolume named <em>f38</em>, modifying the current GRUB entry to boot into that, rebooting, and running the system-upgrade in that subvolume. Then always name the subvol for the root filesystem after the Fedora Linux release it contains. I did not do that for this article for two reasons.</p>



<ol>
<li>Naming the current active subvolume <em>root</em> matches the Fedora Linux default.</li>



<li>Sticking with <em>root</em> for the current subvol does not require any permanent changes outside of the normal system-upgrade procedure.</li>
</ol>



<p>As this article has demonstrated, readonly snapsnots are useful as local restore points in case things go wrong when making significant system changes (such as a system release upgrade). These snapshots can also be sent to a remote backup using Btrfs&#8217; <em>send</em> subcommand. (And if the remote backup device already contains previous backups, Btrfs can do an incremental send that only transmits changed files to save time and space.) If you intend to archive these snapshots long term, the key to not getting confused about which ones are which and what order to restore them is to use a consistent naming convention. See the article on <a href="https://fedoramagazine.org/btrfs-snapshots-backup-incremental/" target="_blank" rel="noreferrer noopener">Btrfs snapshots for backup</a> for more information about using Btrfs&#8217; <em>send</em> command to create backups.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/make-use-of-btrfs-snapshots-to-upgrade-fedora-linux-with-easy-fallback/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/04/forkedtree-300x127.jpg" length="15234" type="image/jpg" />	</item>
		<item>
		<title>Use FIDO U2F security keys with Fedora Linux</title>
		<link>https://fedoramagazine.org/use-fido-u2f-security-keys-with-fedora-linux/</link>
					<comments>https://fedoramagazine.org/use-fido-u2f-security-keys-with-fedora-linux/#comments</comments>
		
		<dc:creator><![CDATA[Alexander Wellbrock]]></dc:creator>
		<pubDate>Wed, 10 May 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[FAQs and Guides]]></category>
		<category><![CDATA[CTAP]]></category>
		<category><![CDATA[CTAP1]]></category>
		<category><![CDATA[FIDO]]></category>
		<category><![CDATA[FIDO2]]></category>
		<category><![CDATA[Security Key]]></category>
		<category><![CDATA[U2F]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[WebAuthn]]></category>
		<category><![CDATA[YubiKey]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38200</guid>

					<description><![CDATA[A FIDO U2F security key is a small USB and/or NFC based device. It is a hardware security token with modules for many security related use-cases. There are several brands of FIDO compliant keys, including NitroKey, SoloKey v2, and YubiKey. FIDO, in contrast to proprietary protocols like Yubico OTP, is hardware token agnostic and the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>A FIDO U2F security key is a small USB and/or NFC based device. It is a hardware security token with modules for many security related use-cases. There are several brands of FIDO compliant keys, including NitroKey, SoloKey v2, and YubiKey. FIDO, in contrast to proprietary protocols like Yubico OTP, is hardware token agnostic and the tools used are manufacturer independent.</p>



<p>This post introduces the FIDO protocol(s) and shows how to install and enable a FIDO U2F security key as an alternative authentication factor for logging into a terminal, GDM, or authenticating for sudo.</p>



<span id="more-38200"></span>



<p>For YubiKeys, especially older ones <em>without</em> FIDO2/U2F support, see the previous post titled &#8220;<a href="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/">How to use a YubiKey with Fedora Linux</a>&#8220;.</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-fedora-magazine wp-block-embed-fedora-magazine"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="c3WsreIZcz"><a href="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/">How to use a YubiKey with Fedora Linux</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" title="&#8220;How to use a YubiKey with Fedora Linux&#8221; &#8212; Fedora Magazine" src="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/embed/#?secret=10dooDXm0Y#?secret=c3WsreIZcz" data-secret="c3WsreIZcz" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p>This post will not cover storing OpenPGP keys or X.509 certificates because those features are hardware dependent and not part of the FIDO U2F standard.</p>



<h2 class="wp-block-heading">Keep a backup security key</h2>



<p>As soon as you start working with security tokens you have to account for the potential to lock yourself out of accounts tied to these tokens. As hardware security tokens are unique and designed to be extremely hard to copy you cannot just make a backup of it like you can with software vaults like KeePass or AndOTP. Consequently, all registrations you make with your primary key you should immediately repeat with a second backup key that you will store in a secure location, maybe even a safe.</p>



<p>In practice this means you will need to register both hardware tokens with your Linux and web accounts, generate OpenSSH private keys twice, and upload both OpenSSH public keys to the servers and services you use (for example, GitHub).</p>



<p>Should you lose a key, you&#8217;ll want to use your second key to sign in on every service the keys are registered with, remove the lost key, and register a new one. This is especially true for password-less logins using a FIDO2 protocol.</p>



<h2 class="wp-block-heading">FIDO2, U2F and the FIDO Alliance</h2>



<p>FIDO2 is a collection of standards maintained by the <a href="https://fidoalliance.org" target="_blank" rel="noreferrer noopener">FIDO Alliance</a>. The FIDO Alliance hopes to eventually get rid of passwords altogether and instead provide procedures to authenticate users securely through multiple factors but without the need for passwords.</p>



<p>The standard consists of the World Wide Web Consortium&#8217;s (W3C) Web Authentication (WebAuthn) and the FIDO Alliance&#8217;s Client-to-Authenticator Protocol (CTAP). WebAuthn is a standard API to request and process public key challenges for authentication. With this, browsers send a challenge to a client which then produces a response with a private key that the challenger then verifies using a previously exchanged public key. How the challenge answer is produced is unknown to the service and it is controlled by the CTAP. The user might be prompted for several verification methods like biometrics, PIN, or presence check (or some combination of these methods). These checks are the same for authentication as they are when registering the key with the service.</p>



<p>A access PIN to protect any interaction with the hardware token is optional and it is unset by default. Most keys will self-invalidate after eight sequential failed attempts at entering the access PIN. The only way to recover an invalidated key and set a new PIN is to reset the key. However, when a key is reset, all its service registrations will be lost!</p>



<p>A FIDO2 key also supports the FIDO U2F protocol (now renamed CTAP1). This protocol is designed for second- or multi-factor (but not password-less) authentication. Linux&#8217;s PAM authentication system can also be configured to use the U2F protocol. Although FIDO U2F is not designed for password-less authentication, the U2F PAM module does allow password-less authentication.</p>



<h2 class="wp-block-heading">Security implications</h2>



<p>FIDO2 / U2F works by tying the security key to your user account. Most keys have a basic presence-check which is enabled / used by default. They typically perform a presence-check by lighting up and prompting you to touch the key. A FIDO2 PIN is optional and it will be unset by default. When the key is registered for signing in to your Linux account or for using sudo, it is sufficient to have the device and key physically present. A FIDO2 PIN is an important additional verification step to ensure that only you can use the key for authentication.</p>



<blockquote class="wp-block-quote">
<p>Wait! Now I have to keep track of an additional PIN? Isn&#8217;t this just a shorter password?</p>
<cite>The concerned reader</cite></blockquote>



<p>A FIDO2 PIN is not a password. It is a short, easy-to-remember phrase. This is not a problem because:</p>



<ol>
<li>You need physical access to the key <em>and</em> you need to know the PIN.</li>



<li>Failing to enter the PIN eight times will invalidate the key which makes it hard to brute-force.</li>
</ol>



<p>On the contrary, you can now use a secure password stored in a password manager that you don&#8217;t need to remember.</p>



<p>A 2016 case study by Google, titled &#8220;<em><a href="http://fc16.ifca.ai/preproceedings/25_Lang.pdf" target="_blank" rel="noreferrer noopener">Security Keys: Practical Cryptographic Second Factors for the Modern Web</a></em>&#8220;, shows security keys effectively protect users from password reuse, phishing and man-in-the-middle attacks.</p>



<h2 class="wp-block-heading">User authentication using PAM</h2>



<p>Local system authentication uses <a href="https://www.redhat.com/sysadmin/pluggable-authentication-modules-pam" target="_blank" rel="noreferrer noopener">Pluggable Authentication Modules (PAM)</a>. The PAM module for U2F devices (and hence authentication) is <em>pam_u2f</em>. Whether your key supports FIDO2 or FIDO U2F will depend on its firmware version and hardware model.</p>



<p>The setup is as follows:</p>



<ol>
<li>Install the PAM module.</li>



<li>Register a key with your user account.</li>



<li>Use <em>authselect</em> to activate smart card support in PAM.</li>
</ol>



<p><a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_authentication_and_authorization_in_rhel/configuring-user-authentication-using-authselect_configuring-authentication-and-authorization-in-rhel" target="_blank" rel="noreferrer noopener">Authselect</a> is a tool for configuring PAM with reproducible profiles. By using authselect&#8217;s profiles, manually altering configuration files under the /etc/pam.d directory can be avoided.</p>



<h2 class="wp-block-heading">Dependencies</h2>



<p>The required packages are available in the official repositories.</p>



<pre class="wp-block-preformatted">[…]$ sudo dnf install pam-u2f pamu2fcfg fido2-tools</pre>



<h3 class="wp-block-heading">Set a FIDO2 PIN on your key</h3>



<p>The FIDO2 standard defines an optional PIN for access protection. There is no PUK or other way to restore a lost or invalidated PIN so make sure you have a backup approach for authentication. If the PIN is invalidated through sequential entry of invalid PINs, the only way to recover is to reset the key. However, resetting your key removes all its credentials and disconnects it from all previously registered services.</p>



<p>The <em>fido2-tools</em> package contains a tool to set the FIDO2 PIN of your key: <em>fido2-token</em>. Get a list of currently connected FIDO2 devices with <kbd>fido2-token -L</kbd> and set a new pin with <kbd>fido2-token -C &lt;/path/to/device&gt;</kbd>:</p>



<pre class="wp-block-preformatted">[…]$ fido2-token -L
/dev/hidraw1: vendor=0x1050, product=0x0407 (Yubico YubiKey OTP+FIDO+CCID)
[…]$ fido2-token -C /dev/hidraw1
Enter current PIN for /dev/hidraw1: 
Enter new PIN for /dev/hidraw1:</pre>



<h3 class="wp-block-heading"><strong>Register the security key with your local account(s)</strong></h3>



<p>Use the tool <em>pamu2fcfg</em> to retrieve a configuration line that goes into ~/.config/Yubico/u2f_keys. <em>pam_u2f</em> is a Yubico-provided, generic module for U2F keys, hence the Yubico specific default configuration path. Each configuration line in this file consists of a username and a key-specific credential / config part separated by colons. Be sure to only use one line per user.</p>



<pre class="wp-block-preformatted">fedora-user:owBYtPIH2yzjlSQaRrVcxB...Pg==,es256,+presence+pin[:another key for this user]</pre>



<p>If the key is PIN protected you&#8217;ll be asked to enter the PIN for this operation. Use the following for the initial registration of your first key:</p>



<pre class="wp-block-preformatted">[…]$ mkdir -p ~/.config/Yubico
[…]$ pamu2fcfg --pin-verification &gt; ~/.config/Yubico/u2f_keys</pre>



<p>To add another key (for example, your backup key) to this single-user configuration, use the following command:</p>



<pre class="wp-block-preformatted">[…]$ pamu2fcfg --nouser --pin-verification &gt;&gt; ~/.config/Yubico/u2f_keys</pre>



<p><em>pam_u2f</em> also supports the use of a central authentication file. In that case, be sure to use one line per user and to keep all the keys of a given user on the same line. If two lines reference the same username only the last one will be used! Have a look at the <a href="https://manpages.org/pam_u2f/8" target="_blank" rel="noreferrer noopener">pam_u2f man page</a> for all available options.</p>



<h2 class="wp-block-heading">Configure PAM with authselect</h2>



<p><strong><a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_authentication_and_authorization_in_rhel/configuring-user-authentication-using-authselect_configuring-authentication-and-authorization-in-rhel" target="_blank" rel="noreferrer noopener">authselect</a></strong> is a tool for controling your system&#8217;s PAM configuration. It introduces profiles as an additional layer of abstraction. One authselect profile can change several PAM configuration files. Profiles have parameters that control additional features and behaviors like enabling FIDO U2F security keys. A detailed tour of <em>authselect</em> is planned for a future article.</p>



<p>Display the currently active <em>authselect</em> profile. With the SSSD (System Security Service Daemon) profile selected and U2F support enabled, the output might resemble the following:</p>



<pre class="wp-block-preformatted">[…]$ authselect current
Profile ID: sssd
Enabled features:
- with-pam-u2f</pre>



<p>Activate FIDO U2F support in PAM using <em>authselect</em> with the <em>with-pam-u2f</em> flag:</p>



<pre class="wp-block-preformatted">[…]$ sudo authselect select sssd with-pam-u2f</pre>



<p>If you also want to use your fingerprint reader you have to enable both features:</p>



<pre class="wp-block-preformatted">[…]$ sudo authselect select sssd with-pam-u2f with-fingerprint</pre>



<p>This activates the <em>sssd</em> profile with <em>pam_u2f</em> and fingerprint reader support. For example, when using sudo on a terminal with the above authselect profile configuration, you&#8217;ll first be asked for a fingerprint and if that fails for the U2F key. GDM, however, will use the U2F key first.</p>



<h2 class="wp-block-heading">Unlocking the GNOME keyring daemon</h2>



<p>When using biometrics, a U2F key, or any other method that does not require a passphrase to sign in to GNOME, the <em>Login</em> keyring cannot be unlocked automatically. This is because, by default, the keyring passphrase is set to the same value as your login passphrase. Normally, PAM passes your login passphrase to the keyring daemon. Since you are not entering a passphrase when authenticating via methods such as biometrics or U2F keys, there is no passphrase for PAM to pass to the keyring daemon. There is no straight forward solution to this problem.</p>



<p>If you use LUKS encryption for your home partition and operate a single-user system, you could remove the passphrase from your keyring. This will leave your gnome keyring unencrypted at the file level. But it will still be encrypted at the block level by LUKS. LUKS encryption is equivalent to the default file-based keyring encryption on a single-user system since the keyring&#8217;s encryption is only designed to protect its contents from offline access. The keyring will be decrypted / unlocked after login either way and any runtime application or malware can potentially access the keyring&#8217;s contents after it is unlocked. Since LUKS is also an offline protection mechanism, it can be considered an equivalent alternative to the keyring&#8217;s normal file-based encryption.</p>



<p>LUKS encryption and the keyring&#8217;s normal file-based encryption are not equivalent if your system is used by multiple users. In the case of a multi-user system with the keyrings protected only by LUKS, any user with authorization to decrypt the disk and boot the system will be able to access any other user&#8217;s keyring on that same system.</p>



<p>Removing the GNOME <em>Login</em> keyring passphrase is straight forward. Just set a new empty password and the keyring will be unlocked and it will be stored unencrypted at the file level. The graphical utility <em>seahorse</em> (also called <em>Passwords and Keys</em>) can be used to set a blank password on your GNOME <em>Login</em> keyring.</p>



<h2 class="wp-block-heading">Lookout and other use-cases</h2>



<p>Upcoming articles will explore how to use FIDO2/U2F keys for unlocking LUKS-encrypted disks using the U2F Dracut plugin.</p>



<p>OpenSSH 8.2+ supports the use of <em>ed25519-sk</em> security keys. This topic has already been touched upon in the previous article titled &#8220;<a href="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/">How to use a YubiKey with Fedora Linux</a>&#8220;.</p>



<p>Note that FIDO2/U2F is an authentication standard. There are other use-cases for security tokens (primarily established by Yubico) like (T)OTP, PIV (for x509 key management) or OpenPGP which are not covered in general but on a hardware by hardware basis.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/use-fido-u2f-security-keys-with-fedora-linux/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/05/FIDO_U2F_keys-1-300x127.jpg" length="17498" type="image/jpg" />	</item>
		<item>
		<title>Trying different desktop environments using &#8220;rpm-ostree rebase&#8221;</title>
		<link>https://fedoramagazine.org/trying-different-desktop-environments-using-rpm-ostree/</link>
					<comments>https://fedoramagazine.org/trying-different-desktop-environments-using-rpm-ostree/#comments</comments>
		
		<dc:creator><![CDATA[Jakub Sierżęga]]></dc:creator>
		<pubDate>Mon, 08 May 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[Fedora Project community]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38288</guid>

					<description><![CDATA[Fedora Linux Workstation features a GNOME desktop environment which is an easy to use, intuitive, and efficient desktop environment. But this is not the only option if you would like to use Fedora Linux. There are other spins that provide alternative desktop environments like KDE, XFCE, Cinnamon, etc. This article describes how you can try [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Fedora Linux Workstation features a GNOME desktop environment which is an easy to use, intuitive, and efficient desktop environment. But this is not the only option if you would like to use Fedora Linux. There are other spins that provide alternative desktop environments like KDE, XFCE, Cinnamon, etc. This article describes how you can try different desktop environments if you are using an OSTree based Fedora Linux spins.</p>



<span id="more-38288"></span>



<h2 class="wp-block-heading">Main version of Fedora Workstation</h2>



<p>If you installed a non-OSTree Fedora Workstation or one of the Spins and would like to try different desktop environment, you have some possibilities:</p>



<ul>
<li>install different desktop environment using <em>dnf</em></li>



<li>dual boot multiple spins of Fedora</li>
</ul>



<p>If you choose the first option, you have to install another desktop environment by using the <em>dnf install </em>command. This technique enables you to select which desktop environment you would like to use on the login screen after system boots. Using this method will pull in a lot of dependencies. This is  especially true when you have a GTK based desktop environment (like GNOME) and install a QT based (like KDE), or vice-versa. It can be difficult to completely uninstall one of the installed desktop environment if you are not satisfied with them.</p>



<p>Another issue with this is that system apps may be doubled in the application menu on each environment. For example, if you have installed GNOME and install KDE, you have Nautilus and Dolphin for browsing files, GNOME Terminal and Konsole for terminal emulation, etc. You have to remember which app to use on which environment, because apps from KDE behave worse on GNOME and vice-versa.</p>



<p>If you choose the second option, you have to make some free unpartitioned space on your hard drive to install another Fedora spin alongside one you are currently using. In this way, the systems are separated from each other and the system apps will not be doubled. You can decide to share the <em>/home</em> partition between them. This technique enables you select the system to use in the bootloader menu before system boots. But if you use this method, you have to maintain these systems separately (for example installing updates) and it consumes a lot of free space on the hard drive.</p>



<h2 class="wp-block-heading">OSTree based version of Fedora Workstation</h2>



<p>Some variants of Fedora Linux are OSTree based. OSTree provides immutability and transactional upgrades with the possibility of rollback in case something goes wrong. You can read more about it in <a href="https://fedoramagazine.org/pieces-of-fedora-silverblue/" target="_blank" rel="noreferrer noopener">this great article.</a> Right now, we have three OSTree based Fedora Workstation variants:</p>



<ul>
<li>Silverblue &#8211; provides GNOME desktop environment</li>



<li>Kinoite &#8211; provides KDE Plasma desktop environment</li>



<li>Sericea &#8211; provides Sway window manager (not recommended for beginners)</li>
</ul>



<p>If you are running one of these variants of Fedora Linux, you can easily switch your system to another OSTree compatible one to try different desktop environment. This process is similar to doing a system upgrade. OSTree guarantees that the operation is transactional (finishes successfully or nothing is changed) and you are able to rollback if you are not satisfied with the change. The operation does not consume much space on the hard drive, and system apps are not doubled.</p>



<h3 class="wp-block-heading">How to use OSTree rebase to switch to a new variant</h3>



<p>To start, I recommend executing the following command to pin the current deployment. This makes certain it will not be deleted automatically in the future and provides the ability to roll back to it. </p>



<pre class="wp-block-preformatted">$ sudo ostree admin pin 0</pre>



<p>If you have a pending update, the command may fail with the message:</p>



<pre class="wp-block-preformatted">error: Cannot pin staged deployment</pre>



<p>In this case, reboot your system to apply pending updates,  and try again.</p>



<p>After pinning the deployment, execute:</p>



<pre class="wp-block-preformatted">$ ostree remote refs fedora</pre>



<p>It outputs a list of all available branches that you can rebase into. Every branch has an architecture, version, and the name of the variant. Select carefully. In the following examples I assume you would like to rebase into the current stable version of Fedora for x86_64 (version 38). </p>



<ul>
<li>for Fedora Silverblue, use fedora:fedora/38/x86_64/silverblue</li>



<li>for Fedora Kinoite, use fedora:fedora/38/x86_64/kinoite</li>



<li>for Fedora Sericea, use fedora:fedora/38/x86_64/sericea</li>
</ul>



<p>Choose the branch you wish to rebase into and execute the following command (change the branch name provided in the example if necessary):</p>



<pre class="wp-block-preformatted">$ rpm-ostree rebase fedora:fedora/38/x86_64/kinoite</pre>



<p>When  this command succeeds, restart the system to begin using the new desktop environment. If it fails, the system should continue to work unmodified thanks to transactional updates provided by OSTree.  </p>



<h3 class="wp-block-heading">Undo the rebase into an OSTree variant</h3>



<p>If you are not satisfied with the new environment the following command will return you to your original variant:</p>



<pre class="wp-block-preformatted">rpm-ostree rollback</pre>



<p>Restart your system once again to switch back to the previous variant of Fedora.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/trying-different-desktop-environments-using-rpm-ostree/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/05/try_de_using_ostree_rebase-300x127.jpg" length="12932" type="image/jpg" />	</item>
		<item>
		<title>New AWS storage type for Fedora Linux</title>
		<link>https://fedoramagazine.org/new-aws-storage-type-for-fedora-linux/</link>
					<comments>https://fedoramagazine.org/new-aws-storage-type-for-fedora-linux/#comments</comments>
		
		<dc:creator><![CDATA[Major Hayden]]></dc:creator>
		<pubDate>Fri, 05 May 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[Fedora Project community]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Cloud]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38326</guid>

					<description><![CDATA[Fedora Linux now has a better performing default storage option at a lower cost on AWS.]]></description>
										<content:encoded><![CDATA[
<p>If you filter Fedora Linux AWS images using a script, you might notice a change in the image names. The Fedora Cloud SIG recently updated the image publishing configuration to use the latest generation storage option and simplify the image listings.</p>



<span id="more-38326"></span>



<p>This involves two changes:</p>



<ul>
<li>Replacing <em>gp2</em> storage with <em>gp3</em> storage by default for new images</li>



<li>Removing <em>standard</em> storage from new images</li>
</ul>



<h2 class="wp-block-heading">What&#8217;s the benefit of these changes?</h2>



<p>The <em>gp3</em> storage type appeared in 2020 and switching to that storage type for Fedora Linux users means more consistent performance for a lower cost. (For more details, read Corey Quinn&#8217;s <a href="https://www.lastweekinaws.com/blog/the-best-release-of-reinvent-2020/" target="_blank" rel="noreferrer noopener">helpful blog post</a>.)</p>



<p>Removing <em>standard</em> storage from new image uploads means we&#8217;re creating half the AMIs we created before and it reduces the number of images you need to review when launching an instance. Finding the right Fedora Linux image for your deployment should be a little easier.</p>



<h2 class="wp-block-heading">What if I really like the other storage types?</h2>



<p>When you launch your instance, you can choose any storage type that is compatible with your instance in your preferred region. Although Fedora Linux images will have <em>gp3</em> set as the default, you can choose from any other storage type at launch time.</p>



<h2 class="wp-block-heading">How should I adjust my scripts that look for Fedora Linux images on AWS?</h2>



<p>The format of the image names remains the same, but you&#8217;ll notice a new string in the storage type portion of the image name. As an example, here&#8217;s what you would see before the change was made:</p>



<pre class="wp-block-preformatted">Fedora-Cloud-Base-Rawhide-20230503.n.0.aarch64-hvm-us-east-1-standard-0
Fedora-Cloud-Base-Rawhide-20230503.n.0.aarch64-hvm-us-east-1-gp2-0
Fedora-Cloud-Base-Rawhide-20230503.n.0.x86_64-hvm-us-east-1-standard-0
Fedora-Cloud-Base-Rawhide-20230503.n.0.x86_64-hvm-us-east-1-gp2-0</pre>



<p>After the change, there is only one image per release and architecture:</p>



<pre class="wp-block-preformatted">Fedora-Cloud-Base-Rawhide-20230504.n.0.aarch64-hvm-us-east-1-gp3-0
Fedora-Cloud-Base-Rawhide-20230504.n.0.x86_64-hvm-us-east-1-gp3-0</pre>



<h2 class="wp-block-heading">Why was this change made?</h2>



<p>The Fedora Cloud SIG wants to make the Fedora Linux cloud experience the best it can possibly be on every public cloud platform. This change gives Fedora Linux a better performing default storage option at a lower cost, reduces the overhead from creating AMIs on AWS, and simplifies the Fedora Linux image listings.</p>



<p>Read the Fedora change proposals for <a href="https://fedoraproject.org/wiki/Changes/CloudEC2ImagesNoStandardStorage">removing standard storage</a> and <a href="https://fedoraproject.org/wiki/Changes/CloudEC2gp3">switching the default to gp3</a> for a lot more detail. As always, you can find members of the Fedora Cloud SIG and join our group on <a href="https://chat.fedoraproject.org/#/room/#cloud:fedoraproject.org">Fedora Matrix</a> or on Libera IRC in <kbd>#fedora-cloud</kbd>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/new-aws-storage-type-for-fedora-linux/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/05/clouds-300x127.jpg" length="9526" type="image/jpg" />	</item>
		<item>
		<title>Contribute at the Fedora Linux Test Week for Kernel 6.3</title>
		<link>https://fedoramagazine.org/contribute-at-the-fedora-linux-test-week-for-kernel-6-3/</link>
					<comments>https://fedoramagazine.org/contribute-at-the-fedora-linux-test-week-for-kernel-6-3/#comments</comments>
		
		<dc:creator><![CDATA[Sumantro Mukherjee]]></dc:creator>
		<pubDate>Wed, 03 May 2023 17:14:51 +0000</pubDate>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Fedora Contributor Community]]></category>
		<category><![CDATA[Fedora Project community]]></category>
		<category><![CDATA[Kernel test week]]></category>
		<category><![CDATA[testing]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38302</guid>

					<description><![CDATA[The kernel team is working on final integration for Linux kernel 6.3. This version was just recently released, and will arrive soon in Fedora Linux. As a result, the Fedora Linux kernel and QA teams have organized a test week from Sunday, May 07, 2023 to Sunday, May 14, 2023. Refer to the wiki page [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>The kernel team is working on final integration for Linux kernel 6.3. This version was just recently released, and will arrive soon in Fedora Linux. As a result, the Fedora Linux kernel and QA teams have organized a test week from Sunday, May 07, 2023 to Sunday, May 14, 2023. Refer to the wiki page in this article for links to the test images you’ll need to participate. Please continue reading for details.</p>



<span id="more-38302"></span>



<h2 class="wp-block-heading"><strong>How does a test week work?</strong></h2>



<p>A test week is an event where anyone can help make sure changes in Fedora Linux work well in an upcoming release. Fedora community members often participate, and the public is welcome at these events. If you’ve never contributed before, this is a perfect way to get started.</p>



<p>To contribute, you only need to be able to do the following things:</p>



<ul>
<li> Download test materials, which include some large files</li>



<li> Read and follow directions step by step</li>
</ul>



<p>The&nbsp;<a href="http://fedoraproject.org/wiki/Test_Day:2023-05-07_Kernel_6.3_Test_Week" target="_blank" rel="noreferrer noopener">wiki page</a>&nbsp;for the kernel test day has a lot of good information on what and how to test. After you’ve done some testing, you can log your results in the <a href="https://testdays.fedoraproject.org/events/157" target="_blank" rel="noreferrer noopener">test day&nbsp;web application</a>. If you’re available on or around the days of the event, please do some testing and report your results. We have <a href="https://docs.fedoraproject.org/en-US/quick-docs/kernel/howto-kernel-testday/" target="_blank" rel="noreferrer noopener">a document which provides&nbsp;all the necessary steps</a>.</p>



<p>Happy testing, and we hope to see you on one of the  test days.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/contribute-at-the-fedora-linux-test-week-for-kernel-6-3/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/03/Test_Days-300x127.jpg" length="8537" type="image/jpg" />	</item>
		<item>
		<title>Anaconda Installer Partitioning and Storage Survey Results</title>
		<link>https://fedoramagazine.org/anaconda-installer-partitioning-and-storage-survey-results/</link>
					<comments>https://fedoramagazine.org/anaconda-installer-partitioning-and-storage-survey-results/#comments</comments>
		
		<dc:creator><![CDATA[Flo Forno]]></dc:creator>
		<pubDate>Wed, 26 Apr 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[Fedora Project community]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38230</guid>

					<description><![CDATA[Back in late January, we distributed a survey focusing on partitioning preferences for Anaconda Installer (OS Installer for RHEL, CentOS, and Fedora). We were able to get 1269 responses! Thank you to all who participated. The data we collected will help the Anaconda team continue to provide an installer that best suits the majority’s needs. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Back in late January, we distributed a survey focusing on partitioning preferences for Anaconda Installer (OS Installer for RHEL, CentOS, and Fedora). We were able to get 1269 responses! Thank you to all who participated. The data we collected will help the Anaconda team continue to provide an installer that best suits the majority’s needs.</p>



<p>Given the high participation rate, we’re excited to share the main results and findings with you!</p>



<span id="more-38230"></span>



<h2 class="wp-block-heading">Who are our users?</h2>



<p>First, we wanted to understand who the users are. The most common answers to demographic-style questions gave us the following results:</p>



<ul>
<li>96% (of 1138 responses) are <em>desktop/workstation Linux users</em></li>



<li>Have <em>11+ years of experience</em> using Linux (50% of 1138 responses)</li>



<li>90% <em>use Fedora</em> (sometimes in combination with RHEL, CentOS, Ubuntu, or Debian)</li>
</ul>



<p>450 users identify as having an <em>Intermediate level of expertise</em> with Linux storage partitioning</p>



<figure class="wp-block-image"><a href="https://lh4.googleusercontent.com/Ll0JKMqRRkk27QDAkiVWSOKCtTw5WxEK_YcanAg4y4GQVSb1gy3mLzrFH1_3qz0pg9RfzZDQClWirxs_VktGYNJVmokeTCcnyVo5w1tl7ogQvppMVtzkA7va3E3viVjrTCVxRntmketBJIZYfEgbN-k"><img decoding="async" src="https://lh4.googleusercontent.com/Ll0JKMqRRkk27QDAkiVWSOKCtTw5WxEK_YcanAg4y4GQVSb1gy3mLzrFH1_3qz0pg9RfzZDQClWirxs_VktGYNJVmokeTCcnyVo5w1tl7ogQvppMVtzkA7va3E3viVjrTCVxRntmketBJIZYfEgbN-k" alt=""/></a></figure>



<p><em>n=1138</em></p>



<figure class="wp-block-image"><a href="https://lh6.googleusercontent.com/Kh84MgBt1ruL7EPpOvlMKjGXCr95src1RNIfIF0wUc8Mn0ToU1CK9AXlRlr9Z-DJQa0IYyLbtA7ccNr2Zm4B9PLEzjSKjloxRAOweYGZjPv7mDlNkAlZrP85iqEIzekLASZAeZLm2nzdqnHVW1oDCvs"><img decoding="async" src="https://lh6.googleusercontent.com/Kh84MgBt1ruL7EPpOvlMKjGXCr95src1RNIfIF0wUc8Mn0ToU1CK9AXlRlr9Z-DJQa0IYyLbtA7ccNr2Zm4B9PLEzjSKjloxRAOweYGZjPv7mDlNkAlZrP85iqEIzekLASZAeZLm2nzdqnHVW1oDCvs" alt=""/></a></figure>



<p><em>n=1109</em></p>



<p>These data points mean that most of you have been using Linux with Fedora (not exclusively) on a desktop/workstation for over a decade! That’s impressive! But when it comes to Linux storage partitioning there is still quite a bit to learn &#8211; and we are here to make that easier.&nbsp;</p>



<h2 class="wp-block-heading">What storage and partitioning is used?</h2>



<h3 class="wp-block-heading">Storage</h3>



<p>Once we got a better picture of who our participants were, we asked questions regarding your current storage and partitioning set up. For example, we uncovered that when it comes to identifying the disks you will use for your installation, most of you are mainly interested in the disk name, size, and the sizes of partitions. This helps the team decide which data is more helpful to present on the disk selection screen.&nbsp;</p>



<figure class="wp-block-image"><a href="https://lh3.googleusercontent.com/gK84djPSEqq1uUdpyOd6u_EsvyRtmFXoK142g8WtM9EJa-TGEFUGxKmNuo1Lq82Xcs-yivZWaen8jaBoDGBL7q2Bf16eL4Bo3Plk3mYnPhXC9-gvYfrIajZ7TcZE0_qZTuQYtd0C16cCYP5jt94lf0Q"><img decoding="async" src="https://lh3.googleusercontent.com/gK84djPSEqq1uUdpyOd6u_EsvyRtmFXoK142g8WtM9EJa-TGEFUGxKmNuo1Lq82Xcs-yivZWaen8jaBoDGBL7q2Bf16eL4Bo3Plk3mYnPhXC9-gvYfrIajZ7TcZE0_qZTuQYtd0C16cCYP5jt94lf0Q" alt=""/></a></figure>



<p><em>n=969</em></p>



<h3 class="wp-block-heading">Partitioning</h3>



<p>Then, we asked questions about your preferences and expectations regarding partitioning. From studies in the past, we kept seeing an almost even preference for auto-partitioning and custom partitioning because of the different needs they each fulfill. However, this survey clarified that there is a slightly stronger preference for auto-partitioning, but many of you made it clear that you need the Installer to allow <em>some </em>customizations to partitioning. The team is certainly keeping this in mind. In fact, we asked you “How do you prefer to create partitions (storage layout) during the installation process?” and most of the multiple-choice responses were split between “Installer creates the partitions for me”, “Installer creates partitions based on my set preferences”, or “I modify the partitions proposed by the installer”. These three options indicate some form of auto-partition, leading to the combined 70% of 964 responses preferring auto-partitioning.&nbsp;</p>



<figure class="wp-block-image"><a href="https://lh6.googleusercontent.com/JBiUci5JMpnxIwmqTzUBt465-REV36IjuzcIRciJRpunKLMlbHdiWigTDiQQpFxBY2Gkby0pA9HZE4OT3oKtpaYytndbgu2ZsiRjzJNZpaJ_a8YkA526btuLhtaDgfp56-uNuzlwSkb4WbjgsVXF37I" rel="noreferrer noopener"><img decoding="async" src="https://lh6.googleusercontent.com/JBiUci5JMpnxIwmqTzUBt465-REV36IjuzcIRciJRpunKLMlbHdiWigTDiQQpFxBY2Gkby0pA9HZE4OT3oKtpaYytndbgu2ZsiRjzJNZpaJ_a8YkA526btuLhtaDgfp56-uNuzlwSkb4WbjgsVXF37I" alt=""/></a></figure>



<h2 class="wp-block-heading">Next steps for Anaconda</h2>



<p>Finally, we wanted your input on what the next steps for Anaconda should be. The team has been considering a few different approaches, and most of you ranked the “Ability to select pre-defined partitioning configuration options with streamlined steps” as your #1 choice, closely followed by “Ability to customize details of partitioning”. This tells us that you are expecting a more guided experience for partitioning, especially given that most of you also feel there is a lot left to learn about Linux storage partitioning. Be on the lookout for what’s next with Anaconda!</p>



<h2 class="wp-block-heading">Thanks to all who participated</h2>



<p>Again, thank you to all who took the time to fill out the survey. You have provided the team with plenty of data to consider for the future of Anaconda Installer.&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/anaconda-installer-partitioning-and-storage-survey-results/feed/</wfw:commentRss>
			<slash:comments>23</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/04/anaconda-survey-results-300x127.jpg" length="13127" type="image/jpg" />	</item>
		<item>
		<title>The Community Platform Engineering F2F 2023 Experience – Part I</title>
		<link>https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-i/</link>
					<comments>https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-i/#comments</comments>
		
		<dc:creator><![CDATA[Akashdeep Dhar]]></dc:creator>
		<pubDate>Mon, 24 Apr 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[CPE]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38177</guid>

					<description><![CDATA[Are you curious about who is on Fedora's Community Platform Engineering team and what they do? If so, read this post to find out!]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote"><p><em>20 Mar 2023 &#8211; 23 Mar 2023</em></p><cite><em>Barcelona, Spain</em></cite></blockquote>



<h2 class="wp-block-heading">Intro</h2>



<p>The <a href="https://docs.fedoraproject.org/en-US/cpe/" target="_blank" rel="noreferrer noopener">Community Platform Engineering team</a> is a Red Hat-sponsored team dedicated to the <a href="https://fedoraproject.org/" target="_blank" rel="noreferrer noopener">Fedora Project</a> and <a href="https://centosproject.org/" target="_blank" rel="noreferrer noopener">CentOS Project</a> that contributes to developing limited-scoped projects called initiatives, maintaining the community infrastructure, and helping manage releases of our offerings. As a remote-only team, the members were unable to get many opportunities to strategize the next big thing as a team and to bond with their fellow teammates beyond the scope of the designated work. Owing to the fact that the last team face-to-face meeting took place in Waterford City, Ireland in 2019, it became necessary for the team to meet up again when the travel restrictions started loosening up. After all, the popular saying “absence makes the heart grow fonder” applies to everyone &#8212; even to community members and teammates, right?</p>



<p>Barcelona, Spain was selected as the destination for the team face-to-face meeting and the duration was picked to be from 20th March 2023 to 23rd March 2023. As this was going to be one of the first times that people started embarking on travels again after a long spell of inactivity during COVID-19, the management made sure to begin the travel planning and event management well in advance to account for everyone in the team. This was no small feat to achieve considering the fact that the team had grown significantly since the last team face-to-face meeting; both in terms of member counts and scope diversity. The common accommodation point was chosen to be <a href="https://www.abbahoteles.com/en/destinations/hotel-balmoral/hotel.html" target="_blank" rel="noreferrer noopener">Hotel Abba Balmoral, Barcelona</a> for the entire team, which is located at the very heart of the city and around a walking distance from the nearest <a href="https://www.redhat.com/en/about/office-locations?tab=emea" target="_blank" rel="noreferrer noopener">Red Hat office</a>.</p>



<h2 class="wp-block-heading">Day 0</h2>



<p>Whilst a few team members flew into Barcelona on Sunday, many flew in throughout the day and took a cab to the hotel on Monday. As nothing was planned on the agenda for the day, it was spent by the teammates mostly getting to know each other, snacking on regional delicacies, and resting after the long flights people had gone through to get here. It was surprising to see just how many team members were getting to meet each other for the first time here and could not before, either because they were new to the team or were working on greatly different things. Some members decided to recce the Red Hat office located close by to the hotel at Travessera de Garcia, Barcelona, and snacking joints while others decided to rest up during the afternoon before heading together to the planned dinner at 1930 in a local Indian restaurant.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="768" src="https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-1024x768.jpg" alt="" class="wp-image-38181" srcset="https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-1024x768.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-300x225.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-768x576.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-1536x1152.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-2048x1536.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230320_225257-816x612.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>From left to right &#8211; <a href="https://accounts.fedoraproject.org/user/dherrera/" target="_blank" rel="noreferrer noopener">Diego Herrera</a>, <a href="https://accounts.fedoraproject.org/user/nphilipp/" target="_blank" rel="noreferrer noopener">Nils Philippsen</a>, <a href="https://accounts.fedoraproject.org/user/zlopez/" target="_blank" rel="noreferrer noopener">Michal Konecny</a>, <a href="https://accounts.fedoraproject.org/user/tdawson/" target="_blank" rel="noreferrer noopener">Troy Dawson</a>, <a href="https://accounts.fedoraproject.org/user/phsmoura/" target="_blank" rel="noreferrer noopener">Pedro Moura</a>, Stefan Mattejiet, and <a href="https://accounts.fedoraproject.org/user/t0xic0der/" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a></figcaption></figure></div>


<p>With the evening finding its way into the day, the team united at the hotel lobby at 1900 and started heading over to the authentic Indian restaurant called <a href="https://bar-bar.es/" target="_blank" rel="noreferrer noopener">Bar Bar</a>, which was again a walking distance from the hotel. Being a cuisine that most of the teammates did not try previously, <a href="https://fedoraproject.org/wiki/User:T0xic0der" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a> volunteered to guide folks through the menu &#8211; suggesting delicacies to try (or avoid) based on their preferences of flavor. For a team consisting of members hailing from across a variety of time zones and countries, having food and sharing anecdotes was indeed a magically unifying experience. After the dinner got over, some people stayed back to click pictures with the friends they made, some headed off for some more snacks in a nearby cafe and the remaining folks returned back to the hotel to get some much-needed respite.</p>



<h2 class="wp-block-heading">Day 1</h2>



<p>After the team had a joint breakfast from around 0700 to 0900, the members started heading off to the office in small groups to start off with the first (official) day of the event. Once all members settled down in a meeting room, the face-to-face meeting started off with the opening delivered by Stefan Mattejiet, following which a fun session was conducted to understand how well the members know each other by drawing each other’s faces. The next session was conducted by <a href="https://fedoraproject.org/wiki/User:T0xic0der" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a> where he talked about the importance of mentorship within the team as well as in the community and organized an activity where the team, divided into multiple subteams, were asked to enact different scenarios of mentor-mentee interactions. Following that they dispersed into small groups and headed to their preferred places for lunch.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="768" src="https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-1024x768.jpg" alt="" class="wp-image-38180" srcset="https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-1024x768.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-300x225.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-768x576.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-1536x1152.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-2048x1536.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/04/20230321_135355-1-816x612.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>From left to right &#8211; <a href="https://fedoraproject.org/wiki/User:Sgallagh" target="_blank" rel="noreferrer noopener">Stephen Gallagher</a>, <a href="https://fedoraproject.org/wiki/User:Abompard" target="_blank" rel="noreferrer noopener">Aurelien Bompard</a>, <a href="https://accounts.fedoraproject.org/user/ekidney/" target="_blank" rel="noreferrer noopener">Emma Kidney</a>, <a href="https://fedoraproject.org/wiki/User:T0xic0der" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a>, <a href="https://fedoraproject.org/wiki/User:Zlopez" target="_blank" rel="noreferrer noopener">Michal Konecny</a>, <a href="https://fedoraproject.org/wiki/User:Jnsamyak" target="_blank" rel="noreferrer noopener">Samyak Jain</a>, <a href="https://accounts.fedoraproject.org/user/dfan/" target="_blank" rel="noreferrer noopener">David Fan</a> and <a href="https://accounts.fedoraproject.org/user/arrfab" target="_blank" rel="noreferrer noopener">Fabian Arrotin</a></figcaption></figure></div>


<p>Once the team members were back in the office, <a href="https://fedoraproject.org/wiki/User:Zlopez" target="_blank" rel="noreferrer noopener">Michal Konecny</a> started off the next session about how knowledge can be effectively shared in the team, which proved to be really helpful. This was added to by the next session conducted jointly by <a href="https://accounts.fedoraproject.org/user/amoloney/" target="_blank" rel="noreferrer noopener">Aoife Moloney</a>, <a href="https://fedoraproject.org/wiki/User:Kevin" target="_blank" rel="noreferrer noopener">Kevin Fenzi</a>, and <a href="https://accounts.fedoraproject.org/user/jbley/?" target="_blank" rel="noreferrer noopener">Julia Bley</a>, around understanding what the team skills are and what their interests lie in. The members were lining up their creative thoughts as sticky notes that were grouped under a certain focus topic. As we moved on to the later parts of the day, <a href="https://fedoraproject.org/wiki/User:Tdawson" target="_blank" rel="noreferrer noopener">Troy Dawson</a> organized a group story session where we came together to come up with fun stories and it was really surprising to see how creative people could get using just one or two words. Finally, <a href="https://fedoraproject.org/wiki/User:Mattdm" target="_blank" rel="noreferrer noopener">Matthew Miller</a> gave us a brief yet interesting run through the history of 35 Fedora Linux releases in around 35 minutes.&nbsp;</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><a href="https://fedoramagazine.org/wp-content/uploads/2023/04/image2.jpeg"><img decoding="async" loading="lazy" src="https://fedoramagazine.org/wp-content/uploads/2023/04/image2-768x1024.jpeg" alt="" class="wp-image-38178" width="767" height="1023" srcset="https://fedoramagazine.org/wp-content/uploads/2023/04/image2-768x1024.jpeg 768w, https://fedoramagazine.org/wp-content/uploads/2023/04/image2-225x300.jpeg 225w, https://fedoramagazine.org/wp-content/uploads/2023/04/image2-1152x1536.jpeg 1152w, https://fedoramagazine.org/wp-content/uploads/2023/04/image2-816x1088.jpeg 816w, https://fedoramagazine.org/wp-content/uploads/2023/04/image2.jpeg 1200w" sizes="(max-width: 767px) 100vw, 767px" /></a><figcaption><a href="https://accounts.fedoraproject.org/user/mattdm/" target="_blank" rel="noreferrer noopener">Matthew Miller</a> giving a run-through of 35 releases of Fedora Linux in 35 minutes</figcaption></figure></div>


<p>With the last talk having been completed, the team members headed back to the hotel for a brief respite before they reunited again for a touring walk at 1630. When the team got to <a href="https://en.wikipedia.org/wiki/Pla%C3%A7a_de_Catalunya" target="_blank" rel="noreferrer noopener">Plaça de Catalunya</a>, the members were divided into two groups and were provided with a couple of tour guides who took them through the famous historical structures of Barcelona. It was an enriching experience to get to know about the history that led to the creation of these fascinating architectural creations and the team members took plenty of photographs to retain the memories. The tour got over by around 1930 after which the team members went to a local restaurant, <a href="https://www.tripadvisor.es/Restaurant_Review-g187497-d814881-Reviews-Taller_de_Tapas_Rambla_Catalunya-Barcelona_Catalonia.html" target="_blank" rel="noreferrer noopener">Taller de Tapas</a> to enjoy regional Spanish cuisine. A wide variety of mouth-watering <a href="https://en.wikipedia.org/wiki/Tapas" target="_blank" rel="noreferrer noopener">Tapas delicacies</a> were served with drinks, culminating the first day of the meeting on a high note.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-i/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/04/barcelona-city-beach-300x127.jpg" length="9244" type="image/jpg" />	</item>
		<item>
		<title>Changes to the ELN kernel RPM NVR</title>
		<link>https://fedoramagazine.org/changes-eln-kernel-rpm-nvr/</link>
					<comments>https://fedoramagazine.org/changes-eln-kernel-rpm-nvr/#comments</comments>
		
		<dc:creator><![CDATA[Prarit Bhargava]]></dc:creator>
		<pubDate>Fri, 21 Apr 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[Fedora Project community]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38157&#038;preview=true&#038;preview_id=38157</guid>

					<description><![CDATA[Red Hat is excited to announce significant changes to ELN (Enterprise Linux Next) kernel RPM NVR (Name, Version, Release) in the kernel-ark project.  This change will be to limited to the kernel-ark ELN RPMs and does not impact Fedora.  If you don’t use Fedora ELN builds you can likely stop reading as this change won’t [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Red Hat is excited to announce significant changes to ELN (Enterprise Linux Next) kernel RPM NVR (Name, Version, Release) in the kernel-ark project.  This change will be to limited to the kernel-ark ELN RPMs and <strong>does not impact Fedora</strong>.  If you don’t use Fedora ELN builds  you can likely stop reading as this change won’t affect you. </p>



<span id="more-38157"></span>



<h2 class="wp-block-heading">What is the kernel-ark project?</h2>



<p>The <a href="https://gitlab.com/cki-project/kernel-ark" target="_blank" rel="noreferrer noopener">kernel-ark project</a> is an upstream kernel-based repository from which the Fedora kernel RPMs are built (<a href="https://cki-project.gitlab.io/kernel-ark/" target="_blank" rel="noreferrer noopener">contributions welcomed!</a>).&nbsp; This project is also used by the Centos Stream and Red Hat Enterprise Linux (RHEL) maintainers to implement, test, and verify code that is destined to be used in Centos Stream and RHEL. In other words, the kernel-ark repository contains code that is enabled to build several different kernels which may contain unique code for different use cases.&nbsp; The kernel RPMs used for CentOS Stream and RHEL are commonly referred to as the ‘ELN’ (Enterprise Linux Next) RPMs.</p>



<h2 class="wp-block-heading">Why are there ELN RPMs?&nbsp; Why can’t Centos Stream and Red Hat use Fedora RPMs?</h2>



<p>While Fedora Linux is the source of a lot of code that lands in CentOS Stream and later RHEL, the kernel configuration used in each operating system is unique.&nbsp; Fedora Linux is configured to achieve its specific goals and targets.&nbsp; CentOS Stream and RHEL do the same but for a slightly different set of goals and targets.</p>



<p>The differences are significant enough that the Fedora Linux, Centos Stream, and RHEL kernel maintainers recognized the need for separate RPMs targeted for Fedora and those targeted for Centos Stream and RHEL.&nbsp; Examples of these differences are <a href="https://cki-project.gitlab.io/kernel-ark/faq.html#i-am-booting-an-eln-rhel-kernel-on-fedora-or-vice-versa-and-the-kernel-won-t-boot-what-do-i-do-now" target="_blank" rel="noreferrer noopener">BTRFS is enabled in Fedora Linux but not in ELN</a> and there are some <a href="https://gitlab.com/cki-project/kernel-ark/-/blob/os-build/drivers/message/fusion/mptsas.c#L5391" target="_blank" rel="noreferrer noopener">specific devices</a> that are disabled in ELN but are enabled in Fedora Linux.</p>



<p>Red Hat uses kernel-ark’s ELN RPMs to continuously test upstream changes with a Red Hat specific configuration.&nbsp; This enables Red Hat to monitor performance and resolve issues before they make it into a Red Hat Enterprise Linux (RHEL) release.&nbsp; In accordance with Red Hat’s long established ‘upstream first’ policy, all fixes and suggestions for improvements are sent back to the upstream kernel community.&nbsp; This benefits the entire Linux community with improvements due to issues resolved in ELN.</p>



<p>This structure also allows Red Hat to test and make changes without affecting the Fedora Linux kernel except in a positive or desired way, such as through bug fixes.&nbsp; Fedora Linux,  CentOS Stream, and RHEL have the opportunity to accept or reject changes easily.</p>



<h2 class="wp-block-heading">What ELN NVR changes are being made?</h2>



<p>Before explaining the changes to the ELN kernel rpm NVR, it is important to understand what an NVR is.&nbsp; All RPMs have <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/packaging_and_distributing_software/packaging-software_packaging-and-distributing-software#ref_spec-file-preamble-items_assembly_what-a-spec-file-is" target="_blank" rel="noreferrer noopener"><strong>N</strong>ame, <strong>V</strong>ersion, and <strong>R</strong>elease (NVR) directives</a> that describe the RPM package.&nbsp; In the case of the Fedora Linux kernel RPMs the Name is ‘kernel’ and the Version is the kernel’s uname (aka UTSNAME or the kernel version).&nbsp; The last field, the Release, contains additional upstream tagging information (release candidate tags), a monotonically increasing build number, and a distribution tag.&nbsp; The NVR is separate from the kernel’s uname and the uname is not generated from it.&nbsp; Instead, we have traditionally generated the NVR from the uname.</p>



<p>For example, for a recent Fedora Linux kernel build,</p>



<pre class="wp-block-preformatted">$ rpm -qi kernel-6.3.0-0.rc5.42.fc39.src.rpm</pre>



<p>Name: kernel<br />Version: 6.3.0<br />Release: 0.rc5.42.fc39</p>



<p>In the next few weeks, the Centos Stream and RHEL maintainers will introduce <strong>ELN RPMs that have new kernel Name, Version, and Release (NVR) directives that are unique to the ELN builds. </strong>&nbsp;<strong>This change has no impact on the kernel uname.</strong>&nbsp; The net result of the change is that the version number will have more meaning to CentOS Stream and RHEL builds, instead of being solely based on the kernel uname.&nbsp; For example, an ELN kernel may have NVR kernel-redhat-1.0.39.eln which packages a kernel with a kernel uname of 6.3.0-39.eln.</p>



<p><strong>We have already decided that the new ‘Name’ directive for the ELN kernel NVR will be changed from ‘kernel’ to ‘kernel-redhat’</strong>. More information on the Version and Release directive changes will be released in the following months as they are finalized by the Centos Stream and RHEL kernel maintainers.&nbsp; You can follow these discussions on the <a href="https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org/" target="_blank" rel="noreferrer noopener">Fedora Kernel Mailing List</a>.</p>



<h2 class="wp-block-heading">Why is the ELN NVR being changed?</h2>



<p>The new ELN NVR will allow for better coordination of feature introduction, bug fixes, and CVE resolutions in future versions of Centos Stream and RHEL.&nbsp; More information on these improvements to the Centos Stream and RHEL ecosystems will be released in the upcoming months.&nbsp;</p>



<h2 class="wp-block-heading">How is Fedora Linux impacted?</h2>



<p><strong>Fedora Linux is not impacted by these changes.</strong>&nbsp;&nbsp;</p>



<p>Since the inception of the kernel-ark project, the Fedora Linux, Centos Stream, and RHEL maintainers have been extraordinarily careful to ensure that Fedora Linux kernel builds are not impacted by ELN kernel builds (and vice-versa) in the kernel-ark project.&nbsp; The commitment to prevent cross-OS issues is strictly enforced by the maintainers.&nbsp; Due to the maintainers continued diligence, there is no impact to Fedora Linux.</p>



<h2 class="wp-block-heading">How can I obtain Fedora Linux or ELN kernels?</h2>



<p>Fedora Linux and ELN kernels can be downloaded from <a href="https://koji.fedoraproject.org/koji/packageinfo?packageID=8" target="_blank" rel="noreferrer noopener">Fedora Project’s koji instance</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/changes-eln-kernel-rpm-nvr/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2023/04/ELN-Kernel-RPM-NVR-300x127.jpg" length="16412" type="image/jpg" />	</item>
		<item>
		<title>How to rebase to Fedora Linux 38 on Silverblue</title>
		<link>https://fedoramagazine.org/how-to-rebase-to-fedora-linux-38-on-silverblue/</link>
					<comments>https://fedoramagazine.org/how-to-rebase-to-fedora-linux-38-on-silverblue/#comments</comments>
		
		<dc:creator><![CDATA[Michal Konečný]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 08:00:00 +0000</pubDate>
				<category><![CDATA[New in Fedora]]></category>
		<category><![CDATA[Using Software]]></category>
		<category><![CDATA[fedora 38]]></category>
		<category><![CDATA[rebase]]></category>
		<category><![CDATA[silverblue]]></category>
		<guid isPermaLink="false">https://fedoramagazine.org/?p=38204</guid>

					<description><![CDATA[Fedora Silverblue is&#160;an operating system for your desktop built&#160;on Fedora Linux. It’s excellent for daily use, development, and container-based workflows. It offers&#160;numerous advantages&#160;such as being able to roll back in case of any problems. If you want to update or rebase to Fedora Linux 38 on your Fedora Silverblue system (these instructions are similar for [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Fedora Silverblue is&nbsp;<a href="https://docs.fedoraproject.org/en-US/fedora-silverblue/" target="_blank" rel="noreferrer noopener">an operating system for your desktop built&nbsp;on Fedora Linux</a>. It’s excellent for daily use, development, and container-based workflows. It offers&nbsp;<a href="https://fedoramagazine.org/give-fedora-silverblue-a-test-drive/" target="_blank" rel="noreferrer noopener">numerous advantages</a>&nbsp;such as being able to roll back in case of any problems. If you want to update or rebase to Fedora Linux 38 on your Fedora Silverblue system (these instructions are similar for Fedora Kinoite), this article tells you how. It not only shows you what to do, but also how to revert things if something unforeseen happens.</p>



<span id="more-38204"></span>



<h2 class="wp-block-heading">Update your existing system</h2>



<p>Prior to actually doing the rebase to Fedora Linux 38, you should apply any pending updates. Enter the following in the terminal:</p>



<pre class="wp-block-preformatted">$ rpm-ostree update</pre>



<p>or install updates through GNOME Software and reboot.</p>



<h2 class="wp-block-heading">Rebasing using GNOME Software</h2>



<p>GNOME Software shows you that there is new version of Fedora Linux available on the Updates screen.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="680" src="https://fedoramagazine.org/wp-content/uploads/2023/04/image-1024x680.png" alt="" class="wp-image-38205" srcset="https://fedoramagazine.org/wp-content/uploads/2023/04/image-1024x680.png 1024w, https://fedoramagazine.org/wp-content/uploads/2023/04/image-300x199.png 300w, https://fedoramagazine.org/wp-content/uploads/2023/04/image-768x510.png 768w, https://fedoramagazine.org/wp-content/uploads/2023/04/image-816x542.png 816w, https://fedoramagazine.org/wp-content/uploads/2023/04/image.png 1203w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Fedora 38 update available</figcaption></figure>



<p>First thing you need to do is download the new image, so click on the&nbsp;<em>Download</em>&nbsp;button. This will take some time. When it’s done you will see that the update is ready to install.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="680" src="https://fedoramagazine.org/wp-content/uploads/2023/04/image-1-1024x680.png" alt="" class="wp-image-38206" srcset="https://fedoramagazine.org/wp-content/uploads/2023/04/image-1-1024x680.png 1024w, https://fedoramagazine.org/wp-content/uploads/2023/04/image-1-300x199.png 300w, https://fedoramagazine.org/wp-content/uploads/2023/04/image-1-768x510.png 768w, https://fedoramagazine.org/wp-content/uploads/2023/04/image-1-816x542.png 816w, https://fedoramagazine.org/wp-content/uploads/2023/04/image-1.png 1203w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Fedora 38 update ready to install</figcaption></figure>



<p>Click on the&nbsp;<em>Restart &amp; Upgrade</em>&nbsp;button. This step will take only a few moments and the computer will be restarted when the update is completed. After the restart you will end up in new and shiny release of Fedora Linux 38. Easy, isn’t it?</p>



<h2 class="wp-block-heading">Rebasing using terminal</h2>



<p>If you prefer to do everything in a terminal, then this part of the guide is for you.</p>



<p>Rebasing to Fedora Linux 38 using the terminal is easy. First, check if the 38 branch is available:</p>



<pre class="wp-block-preformatted">$ ostree remote refs fedora</pre>



<p>You should see the following in the output:</p>



<pre class="wp-block-preformatted">fedora:fedora/38/x86_64/silverblue</pre>



<p>If you want to pin the current deployment (meaning that this deployment will stay as an option in GRUB until you remove it), you can do it by running:</p>



<pre class="wp-block-preformatted"># 0 is entry position in rpm-ostree status
$ sudo ostree admin pin 0</pre>



<p>To remove the pinned deployment use the following command:</p>



<pre class="wp-block-preformatted"># 2 is entry position in rpm-ostree status
$ sudo ostree admin pin --unpin 2</pre>



<p>Next, rebase your system to the Fedora Linux 38 branch.</p>



<pre class="wp-block-preformatted">$ rpm-ostree rebase fedora:fedora/38/x86_64/silverblue</pre>



<p>Finally, the last thing to do is restart your computer and boot to Fedora Linux 38.</p>



<h2 class="wp-block-heading">How to roll back</h2>



<p>If anything bad happens—for instance, if you can’t boot to Fedora Linux 38 at all—it’s easy to go back. At boot time, pick the entry in the GRUB menu for the version prior to Fedora Linux 38 and your system will start in that previous version rather than Fedora Linux 38. If you don’t see the GRUB menu, try to press ESC during boot. To make the change to the previous version permanent, use the following command:</p>



<pre class="wp-block-preformatted">$ rpm-ostree rollback</pre>



<p>That’s it. Now you know how to rebase Fedora Silverblue to Fedora Linux 38 and roll back. So why not do it today?</p>



<h2 class="wp-block-heading">FAQ</h2>



<p>Because there are similar questions in comments for each article about rebasing to newer version of Silverblue I will try to answer them in this section.</p>



<p><strong>Question: Can I skip versions during rebase of Fedora? For example from Fedora 36 Silverblue to Fedora 38 Silverblue?</strong></p>



<p>Answer: Although it could be sometimes possible to skip versions during rebase, it is not recommended. You should always update to one version above (37-&gt;38 for example) to avoid unnecessary errors.</p>



<p><strong>Question: I have&nbsp;<a href="https://rpmfusion.org/">rpm-fusion</a>&nbsp;layered and I got errors during rebase. How should I do the rebase?</strong></p>



<p>Answer: If you have&nbsp;<a href="https://rpmfusion.org/">rpm-fusion</a>&nbsp;layered on your Silverblue installation, you should do the following before rebase:</p>



<p>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">rpm-ostree update --uninstall rpmfusion-free-release --uninstall rpmfusion-nonfree-release --install rpmfusion-free-release --install rpmfusion-nonfree-release</div></div>

</p>
]]></content:encoded>
					
					<wfw:commentRss>https://fedoramagazine.org/how-to-rebase-to-fedora-linux-38-on-silverblue/feed/</wfw:commentRss>
			<slash:comments>37</slash:comments>
		
		
		<enclosure url="https://fedoramagazine.org/wp-content/uploads/2021/04/silverblue-rebase-300x127.jpg" length="6958" type="image/jpg" />	</item>
	</channel>
</rss>


id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
url: https://www.nasa.gov/rss/dyn/breaking_news.rss
title: NASA Breaking News
group_id: 5ba66bdc-22cd-4924-9389-104d85c2247e
feed_type: MediaRss
description: A RSS news feed containing the latest NASA news articles and press releases.
language: en-us
original_document:
<?xml version="1.0" encoding="utf-8" ?> <rss version="2.0" xml:base="http://www.nasa.gov/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/"> <channel> <title>NASA Breaking News</title>
 <description>A RSS news feed containing the latest NASA news articles and press releases.</description>
 <link>http://www.nasa.gov/</link>
 <atom:link rel="self" href="http://www.nasa.gov/rss/dyn/breaking_news.rss" />
 <language>en-us</language>
 <managingEditor>jim.wilson@nasa.gov</managingEditor>
 <webMaster>brian.dunbar@nasa.gov</webMaster>
 <docs>http://blogs.harvard.edu/tech/rss</docs>
 <item> <title>NASA to Provide Live Coverage of Space Station Cargo Launch, Docking</title>
 <link>http://www.nasa.gov/press-release/nasa-to-provide-live-coverage-of-space-station-cargo-launch-docking-2</link>
 <description>NASA will provide live launch and docking coverage of the Roscosmos Progress 84 cargo spacecraft carrying about three tons of food, fuel, and supplies for the Expedition 69 crew aboard the International Space Station.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/iss068e046973large.jpeg?itok=EiGLMy_n" length="82424" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/nasa-to-provide-live-coverage-of-space-station-cargo-launch-docking-2</guid>
 <pubDate>Mon, 22 May 2023 10:34 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487301</dc:identifier>
</item>
 <item> <title>Axiom Space Private Astronauts Headed to International Space Station</title>
 <link>http://www.nasa.gov/press-release/axiom-space-private-astronauts-headed-to-international-space-station</link>
 <description>Four private astronauts are in orbit following the successful launch of Axiom Mission 2 (Ax-2), the second all private astronaut mission to the International Space Station. Axiom Space astronauts lifted off at 5:37 p.m. EDT on Sunday, May 21, from Launch Complex 39A at NASA’s Kennedy Space Center in Florida.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/axiom_2_launch_1.jpg?itok=gtf445OG" length="139958" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/axiom-space-private-astronauts-headed-to-international-space-station</guid>
 <pubDate>Sun, 21 May 2023 16:37 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487296</dc:identifier>
</item>
 <item> <title>NASA Extends Nancy Grace Roman Space Telescope Science Operations</title>
 <link>http://www.nasa.gov/press-release/nasa-extends-nancy-grace-roman-space-telescope-science-operations</link>
 <description>NASA has awarded a contract extension to the Association of Universities for Research in Astronomy Space Telescope Science Institute in Baltimore for the support services required for the agency’s Nancy Grace Roman Space Telescope Science Operations.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/nasa_meatball_1_2.jpeg?itok=0sWmrdS3" length="85798" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/nasa-extends-nancy-grace-roman-space-telescope-science-operations</guid>
 <pubDate>Fri, 19 May 2023 15:24 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487290</dc:identifier>
</item>
 <item> <title>NASA Selects Winners, Announces Final Phase of Space Food Challenge</title>
 <link>http://www.nasa.gov/press-release/nasa-selects-winners-announces-final-phase-of-space-food-challenge</link>
 <description>NASA has announced eight winning teams and awarded $750,000 in prizes in the second phase of the agency&#039;s Deep Space Food Challenge. The winning teams will move on to compete in the third and final phase of the challenge.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/img_0011.jpg?itok=prgBEdxN" length="3457148" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/nasa-selects-winners-announces-final-phase-of-space-food-challenge</guid>
 <pubDate>Fri, 19 May 2023 12:59 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487287</dc:identifier>
</item>
 <item> <title>NASA Selects Blue Origin as Second Artemis Lunar Lander Provider</title>
 <link>http://www.nasa.gov/press-release/nasa-selects-blue-origin-as-second-artemis-lunar-lander-provider</link>
 <description>To develop a human landing system for the agency’s Artemis V mission to the Moon, NASA has selected Blue Origin of Kent, Washington. Through Artemis, NASA will explore more of the Moon than ever before, uncovering more scientific discoveries, and preparing for future astronaut missions to Mars.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/bluemoon_nasa_option_2023-05-19_01.29.31_0.jpg?itok=pbyv8VUf" length="17922495" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/nasa-selects-blue-origin-as-second-artemis-lunar-lander-provider</guid>
 <pubDate>Fri, 19 May 2023 10:40 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487283</dc:identifier>
</item>
 <item> <title>NASA, Rocket Lab Announce Coverage for Second TROPICS Launch</title>
 <link>http://www.nasa.gov/press-release/nasa-rocket-lab-announce-coverage-for-second-tropics-launch</link>
 <description>After successfully launching the first pair of small satellites earlier this month from New Zealand, NASA and Rocket Lab are now targeting no earlier than 1:30 a.m. EDT Monday, May 22 (5:30 p.m. NZST), to launch the second pair of storm tracking CubeSats into orbit.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/tropicslaunch_0.jpg?itok=inJsR953" length="1298401" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/nasa-rocket-lab-announce-coverage-for-second-tropics-launch</guid>
 <pubDate>Tue, 16 May 2023 15:38 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487231</dc:identifier>
</item>
 <item> <title>NASA to Select Second Lunar Lander Partner for Artemis Moon Mission</title>
 <link>http://www.nasa.gov/press-release/nasa-to-select-second-lunar-lander-partner-for-artemis-moon-mission</link>
 <description>During an event at 10 a.m. EDT Friday, May 19, at NASA Headquarters in Washington, the agency will announce the company selected to develop a sustainable human landing system for the Artemis V Moon mission. The human landing system will take astronauts to and from Gateway in lunar orbit to the surface and back to the lunar space station as part of</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/taking_in_the_view_surface_from_hls_0.jpg?itok=4hfmfnal" length="162415" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/nasa-to-select-second-lunar-lander-partner-for-artemis-moon-mission</guid>
 <pubDate>Tue, 16 May 2023 10:33 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487215</dc:identifier>
</item>
 <item> <title>Smithsonian Latino Museum Students to Hear from NASA Station Astronaut</title>
 <link>http://www.nasa.gov/press-release/smithsonian-latino-museum-students-to-hear-from-nasa-station-astronaut</link>
 <description>Frank Rubio, a NASA astronaut aboard the International Space Station, will speak to students associated with the Smithsonian Institution’s National Museum of the American Latino.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/iss068e015480.jpeg?itok=je1h54f8" length="3356424" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/smithsonian-latino-museum-students-to-hear-from-nasa-station-astronaut</guid>
 <pubDate>Tue, 16 May 2023 00:15 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487211</dc:identifier>
</item>
 <item> <title>NASA’s Artemis II Moon Crew Available for Interviews in Washington</title>
 <link>http://www.nasa.gov/press-release/nasa-s-artemis-ii-moon-crew-available-for-interviews-in-washington</link>
 <description>The four astronauts who will fly around the Moon on NASA’s Artemis II will visit Washington Wednesday, May 17, through Friday, May 19, to discuss their upcoming mission and are available for a limited number of in-person media opportunities.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/artemis_ii_crew_for_advisory.jpg?itok=xAbKQNVS" length="706522" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/nasa-s-artemis-ii-moon-crew-available-for-interviews-in-washington</guid>
 <pubDate>Mon, 15 May 2023 14:04 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487199</dc:identifier>
</item>
 <item> <title>Media, Public Invited to Meet Solvers in NASA Space Food Challenge</title>
 <link>http://www.nasa.gov/press-release/media-public-invited-to-meet-solvers-in-nasa-space-food-challenge</link>
 <description>NASA will announce the second phase winners of its Deep Space Food Challenge, a global competition to help develop innovative food systems for future spacefarers on long-term exploration missions, on Friday, May 19.</description>
 <enclosure url="http://www.nasa.gov/sites/default/files/styles/1x1_cardfeed/public/thumbnails/image/space_station_fresh_fruit_goodies_food_main_0.jpg?itok=1QGHKbRH" length="3030952" type="image/jpeg" />
 <guid isPermaLink="false">http://www.nasa.gov/press-release/media-public-invited-to-meet-solvers-in-nasa-space-food-challenge</guid>
 <pubDate>Fri, 12 May 2023 15:58 EDT</pubDate>
 <source url="http://www.nasa.gov/rss/dyn/breaking_news.rss">NASA Breaking News</source>
 <dc:identifier>487183</dc:identifier>
</item>
</channel>
</rss>


id: 57db369e-3f86-4e01-a122-6026940a1b7f
url: https://journals.plos.org/plosone/feed/atom
title: PLOS ONE
group_id: 5ba66bdc-22cd-4924-9389-104d85c2247e
feed_type: Atom
copyright: All PLOS articles are Open Access.
image_url: https://journals.plos.org/plosone/resource/img/favicon.ico
original_document:
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>PLOS ONE</title>
  <link rel="alternate" href="https://journals.plos.org/plosone/" />
  <author>
    <name>PLOS</name>
    <uri>https://journals.plos.org/plosone/</uri>
    <email>webmaster@plos.org</email>
  </author>
  <subtitle type="text">accelerating the publication of peer-reviewed science</subtitle>
  <id>https://journals.plos.org/plosone/feed/atom</id>
  <rights>All PLOS articles are Open Access.</rights>
  <icon>https://journals.plos.org/plosone/resource/img/favicon.ico</icon>
  <logo>https://journals.plos.org/plosone/resource/img/favicon.ico</logo>
  <updated>2023-05-22T17:02:19Z</updated>
  <entry>
    <title>Exploring the perception of barriers to a dual career by student-athletes with/out disabilities</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286152" title="Exploring the perception of barriers to a dual career by student-athletes with/out disabilities" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286152.PDF" title="(PDF) Exploring the perception of barriers to a dual career by student-athletes with/out disabilities" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286152.XML" title="(XML) Exploring the perception of barriers to a dual career by student-athletes with/out disabilities" />
    <author>
      <name>Raquel Vaquero-Cristóbal</name>
    </author>
    <author>
      <name>María J. Maciá-Andreu</name>
    </author>
    <author>
      <name>Álvaro Díaz-Aroca</name>
    </author>
    <author>
      <name>Lourdes Meroño</name>
    </author>
    <author>
      <name>Juan Alfonso García-Roca</name>
    </author>
    <author>
      <name>Lucía Abenza-Cano</name>
    </author>
    <author>
      <name>Francisco J. Cánovas-Álvarez</name>
    </author>
    <author>
      <name>Antonio Sánchez-Pato</name>
    </author>
    <author>
      <name>Alejandro Leiva-Arcas</name>
    </author>
    <id>10.1371/journal.pone.0286152</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Raquel Vaquero-Cristóbal, María J. Maciá-Andreu, Álvaro Díaz-Aroca, Lourdes Meroño, Juan Alfonso García-Roca, Lucía Abenza-Cano, Francisco J. Cánovas-Álvarez, Antonio Sánchez-Pato, Alejandro Leiva-Arcas&lt;/p&gt;

In recent years, there has been an increase in knowledge about the barriers experienced by people with disabilities in the education system or sports. However, no studies have analyzed the barriers for those who try to succeed in both disciplines (dual career). The purpose of this study was to examine the barriers faced by student-athletes with/out disability to a dual career combining studies and sport. Two groups were involved in the study (n = 162): student-athletes with disabilities (n = 79) and student-athletes without disabilities (n = 83). Data collected included: (a) socio-demographic aspects; and (b) barriers towards achieving a good balance between sport and academics during the dual career, through the "Perceptions of dual career student-athletes" (ESTPORT) questionnaire. The results showed that student-athletes with disabilities were more likely to perceive in a greater extent the barriers, &lt;i&gt;the university is far from my home&lt;/i&gt; (p = 0.007) and &lt;i&gt;the university is far from my training site&lt;/i&gt; (p = 0.006), &lt;i&gt;I find myself unable to balance study and training time&lt;/i&gt; (p = 0.030), &lt;i&gt;I have to take care of my family&lt;/i&gt; (p&lt;0.001), and &lt;i&gt;my current job does not allow me to study enough&lt;/i&gt; (p&lt;0.001). The MANOVA analysis showed that the factors gender, competitive level, and employment status had an influence on the perception of some barriers between groups. In conclusion, student-athletes with disabilities perceived barriers more strongly than those without disabilities, and measures are needed to ensure their inclusion in the education system.</content>
  </entry>
  <entry>
    <title>Nest attendance, incubation constancy, and onset of incubation in dabbling ducks</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286151" title="Nest attendance, incubation constancy, and onset of incubation in dabbling ducks" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286151.PDF" title="(PDF) Nest attendance, incubation constancy, and onset of incubation in dabbling ducks" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286151.XML" title="(XML) Nest attendance, incubation constancy, and onset of incubation in dabbling ducks" />
    <author>
      <name>C. Alex Hartman</name>
    </author>
    <author>
      <name>Joshua T. Ackerman</name>
    </author>
    <author>
      <name>Sarah H. Peterson</name>
    </author>
    <author>
      <name>Brady Fettig</name>
    </author>
    <author>
      <name>Mike Casazza</name>
    </author>
    <author>
      <name>Mark P. Herzog</name>
    </author>
    <id>10.1371/journal.pone.0286151</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by C. Alex Hartman, Joshua T. Ackerman, Sarah H. Peterson, Brady Fettig, Mike Casazza, Mark P. Herzog&lt;/p&gt;

In birds, parents must provide their eggs with a safe thermal environment suitable for embryonic development. Species with uniparental incubation must balance time spent incubating eggs with time spent away from the nest to satisfy self-maintenance needs. Patterns of nest attendance, therefore, influence embryonic development and the time it takes for eggs to hatch. We studied nest attendance (time on the nest), incubation constancy (time nests were at incubation temperatures), and variation in nest temperature of 1,414 dabbling duck nests of three species in northern California. Daily nest attendance increased from only 1–3% on the day the first egg was laid to 51–57% on the day of clutch completion, and 80–83% after clutch completion through hatch. Variation in nest temperature also decreased gradually during egg-laying, and then dropped sharply (33–38%) between the day of and the day after clutch completion because increased nest attendance, particularly at night, resulted in more consistent nest temperatures. During the egg-laying stage, nocturnal nest attendance was low (13–25%), whereas after clutch completion, nest attendance was greater at night (≥87%) than during the day (70–77%) because most incubation recesses occurred during the day. Moreover, during egg-laying, nest attendance and incubation constancy increased more slowly among nests with larger final clutch sizes, suggesting that the number of eggs remaining to be laid is a major driver of incubation effort during egg-laying. Although overall nest attendance after clutch completion was similar among species, the average length of individual incubation bouts was greatest among gadwall (&lt;i&gt;Mareca strepera&lt;/i&gt;; 779 minutes), followed by mallard (&lt;i&gt;Anas platyrhynchos&lt;/i&gt;; 636 minutes) and then cinnamon teal (&lt;i&gt;Spatula cyanoptera&lt;/i&gt;; 347 minutes). These results demonstrate that dabbling ducks moderate their incubation behavior according to nest stage, nest age, time of day, and clutch size and this moderation likely has important implications for egg development and overall nest success.</content>
  </entry>
  <entry>
    <title>Introducing an &lt;i&gt;rbc&lt;/i&gt;L and a &lt;i&gt;trn&lt;/i&gt;L reference library to aid in the metabarcoding analysis of foraged plants from two semi-arid eastern South African savanna bioregions</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286144" title="Introducing an &lt;i&gt;rbc&lt;/i&gt;L and a &lt;i&gt;trn&lt;/i&gt;L reference library to aid in the metabarcoding analysis of foraged plants from two semi-arid eastern South African savanna bioregions" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286144.PDF" title="(PDF) Introducing an &lt;i&gt;rbc&lt;/i&gt;L and a &lt;i&gt;trn&lt;/i&gt;L reference library to aid in the metabarcoding analysis of foraged plants from two semi-arid eastern South African savanna bioregions" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286144.XML" title="(XML) Introducing an &lt;i&gt;rbc&lt;/i&gt;L and a &lt;i&gt;trn&lt;/i&gt;L reference library to aid in the metabarcoding analysis of foraged plants from two semi-arid eastern South African savanna bioregions" />
    <author>
      <name>Danielle Botha</name>
    </author>
    <author>
      <name>Mornè du Plessis</name>
    </author>
    <author>
      <name>Frances Siebert</name>
    </author>
    <author>
      <name>Sandra Barnard</name>
    </author>
    <id>10.1371/journal.pone.0286144</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Danielle Botha, Mornè du Plessis, Frances Siebert, Sandra Barnard&lt;/p&gt;

Success of a metabarcoding study is determined by the extent of taxonomic coverage and the quality of records available in the DNA barcode reference database used. This study aimed to create an &lt;i&gt;rbc&lt;/i&gt;L and a &lt;i&gt;trn&lt;/i&gt;L (UAA) DNA barcode sequence reference database of plant species that are potential herbivore foraging targets and commonly found in semi-arid savannas of eastern South Africa. An area-specific species list of 765 species was compiled according to plant collection records available and areas comparable to an eastern semi-arid South African savanna. Thereafter, &lt;i&gt;rbc&lt;/i&gt;L and &lt;i&gt;trn&lt;/i&gt;L sequences of species from this list were mined from GenBank and BOLD sequence databases according to specific quality criteria to ensure accurate taxonomic coverage and resolution. These were supplemented with sequences of 24 species sequenced for this study. A phylogenetic approach, employing Neighbor-Joining, was used to verify the topology of the reference libraries to known angiosperm phylogeny. The taxonomic reliability of these reference libraries was evaluated by testing for the presence of a barcode gap, identifying a data-appropriate identification threshold, and determining the identification accuracy of reference sequences via primary distance-based criteria. The final &lt;i&gt;rbc&lt;/i&gt;L reference dataset consisted of 1238 sequences representing 318 genera and 562 species. The final &lt;i&gt;trn&lt;/i&gt;L dataset consisted of 921 sequences representing 270 genera and 461 species. Barcode gaps were found for 76% of the taxa in the &lt;i&gt;rbc&lt;/i&gt;L barcode reference dataset and 68% of the taxa in the &lt;i&gt;trn&lt;/i&gt;L barcode reference dataset. The identification success rate, calculated with the &lt;i&gt;k&lt;/i&gt;-nn criterion was 85.86% for the &lt;i&gt;rbc&lt;/i&gt;L dataset and 73.72% for the &lt;i&gt;trn&lt;/i&gt;L dataset. The datasets for &lt;i&gt;rbc&lt;/i&gt;L and &lt;i&gt;trn&lt;/i&gt;L combined during this study are not presented as complete DNA reference libraries, but rather as two datasets that should be used in unison to identify plants present in the semi-arid eastern savannas of South Africa.</content>
  </entry>
  <entry>
    <title>A quantitative PCR assay for the detection and quantification of &lt;i&gt;Septoria pistaciarum&lt;/i&gt;, the causal agent of pistachio leaf spot in Italy</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286130" title="A quantitative PCR assay for the detection and quantification of &lt;i&gt;Septoria pistaciarum&lt;/i&gt;, the causal agent of pistachio leaf spot in Italy" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286130.PDF" title="(PDF) A quantitative PCR assay for the detection and quantification of &lt;i&gt;Septoria pistaciarum&lt;/i&gt;, the causal agent of pistachio leaf spot in Italy" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286130.XML" title="(XML) A quantitative PCR assay for the detection and quantification of &lt;i&gt;Septoria pistaciarum&lt;/i&gt;, the causal agent of pistachio leaf spot in Italy" />
    <author>
      <name>Mounira Inas Drais</name>
    </author>
    <author>
      <name>Giorgio Gusella</name>
    </author>
    <author>
      <name>Angelo Mazzaglia</name>
    </author>
    <author>
      <name>Giancarlo Polizzi</name>
    </author>
    <id>10.1371/journal.pone.0286130</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Mounira Inas Drais, Giorgio Gusella, Angelo Mazzaglia, Giancarlo Polizzi&lt;/p&gt;

Septoria leaf spot is one of the most widespread diseases affecting pistachio (&lt;i&gt;Pistacia vera&lt;/i&gt;) in countries of the Mediterranean region. &lt;i&gt;Septoria pistaciarum&lt;/i&gt; was recently confirmed as the causal agent of this disease in Italy. Currently, the detection of &lt;i&gt;S&lt;/i&gt;. &lt;i&gt;pistaciarum&lt;/i&gt; relies on isolation techniques. These require significant amounts of labor, and time for completion. Also, a reliable identification requires the sequencing of at least two housekeeping genes, in addition to the morphological observations. To accurately detect the presence and quantify &lt;i&gt;S&lt;/i&gt;. &lt;i&gt;pistaciarum&lt;/i&gt; in pistachio tissues, a molecular tool was necessary. We designed applicable primers that allow reliable amplification of the β-tubulin gene. The amplification of target DNA was highly efficient, with a 100% success rate, and the assay was able to detect as little as 100 fg/rxn of pure fungal DNA. When tested in artificial mixtures of plant and pathogen DNAs, the assay was able to detect the pathogen consistently at a limit of detection of 1 pg/rxn. The assay was also effective in identifying the pathogen in naturally infected samples, providing rapid detection in all symptomatic specimens. The resulting qPCR assay is an improved detection tool for accurate diagnosis of &lt;i&gt;S&lt;/i&gt;. &lt;i&gt;pistaciarum&lt;/i&gt; that can also contribute to better understand the population dynamics of the pathogen in the orchard.</content>
  </entry>
  <entry>
    <title>Engagement with life and psychological well-being in late adulthood: Findings from community-based programs in Portugal</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286115" title="Engagement with life and psychological well-being in late adulthood: Findings from community-based programs in Portugal" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286115.PDF" title="(PDF) Engagement with life and psychological well-being in late adulthood: Findings from community-based programs in Portugal" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286115.XML" title="(XML) Engagement with life and psychological well-being in late adulthood: Findings from community-based programs in Portugal" />
    <author>
      <name>Alice Bastos</name>
    </author>
    <author>
      <name>Joana Monteiro</name>
    </author>
    <author>
      <name>Raquel Barbosa</name>
    </author>
    <author>
      <name>Helena Pimentel</name>
    </author>
    <author>
      <name>Sofia Silva</name>
    </author>
    <author>
      <name>Carla Faria</name>
    </author>
    <id>10.1371/journal.pone.0286115</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Alice Bastos, Joana Monteiro, Raquel Barbosa, Helena Pimentel, Sofia Silva, Carla Faria&lt;/p&gt;
Objectives &lt;p&gt;Human aging is a multidirectional, multidimensional, and multicausal process that reflects biological, psychological, and sociocultural influences, which act in distinct combinations throughout the life-span. Proactivity towards avoiding the usual aging process is needed. This study analyses the long-term effects of participation in Community-Based Programs on psychological well-being.&lt;/p&gt; Method &lt;p&gt;A sample of 150 community-dwelling participants enrolled in Community-Based Programs, aged 55 to 84 years and living in three Portuguese localities were matched by age (55–64, 65–74, 75–84 years), gender, and locality with a comparison group of non-participants. We administered a multidimensional gerontological protocol which included socio-demographic information, measures of health/disease, functional ability, social network, cognitive performance and psychological well-being. Hierarchical regression models were used to test the effects of Community-Based Programs on psychological well-being adjusting for remaining variables.&lt;/p&gt; Results &lt;p&gt;Overall, psychological well-being is positively associated with household income and satisfaction with health. Nevertheless, in participants, psychological well-being builds predominantly upon social network and is not associated with a moderate inability or cognitive deficits, contrasting with psychological well-being in non-participants. After adjusting for background variables, psychological well-being was positively associated with health satisfaction and social network and negatively related to moderate inability. Further, a significant interaction of participation in Community-Based Programs with age, points out higher levels of psychological well-being in participants contrasting with a downward trend in non-participants. After stratification by age, psychological well-being increases with time attending Community-Based Programs in the oldest (75–84 years) contrasting with the remainder.&lt;/p&gt; Conclusions &lt;p&gt;Participation in Community-Based Programs may improve the negative effects of the aging process on psychological well-being. This positive effect as age increases may be linked to a reinforcement of social network, valued more by participants in Community-Based Programs. Furthermore, the programs may act as a healing/maintenance strategy in persons with moderate inability and/or cognitive deficits.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Assessing the effects of ROO and tariff margin on China-ASEAN free trade agreement utilization</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286106" title="Assessing the effects of ROO and tariff margin on China-ASEAN free trade agreement utilization" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286106.PDF" title="(PDF) Assessing the effects of ROO and tariff margin on China-ASEAN free trade agreement utilization" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286106.XML" title="(XML) Assessing the effects of ROO and tariff margin on China-ASEAN free trade agreement utilization" />
    <author>
      <name>Yahui Qu</name>
    </author>
    <author>
      <name>Ruxu Zhang</name>
    </author>
    <id>10.1371/journal.pone.0286106</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Yahui Qu, Ruxu Zhang&lt;/p&gt;

This study investigates the effects of rule of origin (ROOs) and tariff margin on China-ASEAN Free Trade Agreement (CAFTA) utilization. Using a sample of 40,474 product-level observations with China’s imports from ASEAN countries during the period 2015 to 2021 and adopting the Logit model estimation methods, we found that larger tariff margin positively affects the use of CAFTA, whereas, the rules of origin show a negative effect on the CAFTA utilization. In order to assess the specific impact of two effects, we also calculate the relative contribution of these two effects to the CAFTA utilization by ASEAN countries, and the results show that the rules of origin play a more important role on the CAFTA utilization by each ASEAN country. Moreover, based on heterogeneity analysis, we also find that ROOs play an important role in the use of FTA by lower middle-income countries and the tariff margin play an important role in the use of FTA by upper middle-income and high-income countries. Based on the above findings, the study proposes some policy recommendations on how to increase the CAFTA utilization by reducing the ROO costs and accelerating tariff reductions.</content>
  </entry>
  <entry>
    <title>Summation of activation at the branch-stem transition of &lt;i&gt;Mimosa pudica&lt;/i&gt;; a comparison with summation in cardiac tissue</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286103" title="Summation of activation at the branch-stem transition of &lt;i&gt;Mimosa pudica&lt;/i&gt;; a comparison with summation in cardiac tissue" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286103.PDF" title="(PDF) Summation of activation at the branch-stem transition of &lt;i&gt;Mimosa pudica&lt;/i&gt;; a comparison with summation in cardiac tissue" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286103.XML" title="(XML) Summation of activation at the branch-stem transition of &lt;i&gt;Mimosa pudica&lt;/i&gt;; a comparison with summation in cardiac tissue" />
    <author>
      <name>Jacques M. T. de Bakker</name>
    </author>
    <author>
      <name>Ruben Coronel</name>
    </author>
    <id>10.1371/journal.pone.0286103</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Jacques M. T. de Bakker, Ruben Coronel&lt;/p&gt;

In &lt;i&gt;Mimosa pudica&lt;/i&gt; plants, local and global responses to environmental stimuli are associated with different types of electrical activity. Non-damaging stimuli (e.g. cooling) generate action potentials (APs), whereas damaging stimuli (e.g. heating) are associated with variation potentials (VPs). Local cooling of &lt;i&gt;Mimosa&lt;/i&gt; branches resulted in APs that propagated up to the branch-stem interface and caused drooping of the branch (local response). This electrical activation did not pass the interface. If the branch was triggered by heat, however, a VP was transferred to the stem and caused activation of the entire plant (global response). VPs caused by heat were always preceded by APs and summation of the two types of activation appeared to be necessary for the activation to pass the branch-stem interface. Mechanical cutting of leaves also resulted in VPs preceded by APs, but in those cases a time delay was present between the two activations, which prevented adequate summation and transmission of activation. Simultaneous cold-induced activation of a branch and the stem below the interface occasionally resulted in summation sufficient to activate the stem beyond the interface. To investigate the effect of activation delay on summation, a similar structure of excitable converging pathways, consisting of a star-shaped pattern of neonatal rat heart cells, was used. In this model, summation of activation was not hindered by a small degree of asynchrony. The observations indicate that summation occurs in excitable branching structures and suggest that summation of activation plays a role in the propagation of nocuous stimuli in &lt;i&gt;Mimosa&lt;/i&gt;.</content>
  </entry>
  <entry>
    <title>Offloading under cognitive load: Humans are willing to offload parts of an attentionally demanding task to an algorithm</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286102" title="Offloading under cognitive load: Humans are willing to offload parts of an attentionally demanding task to an algorithm" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286102.PDF" title="(PDF) Offloading under cognitive load: Humans are willing to offload parts of an attentionally demanding task to an algorithm" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286102.XML" title="(XML) Offloading under cognitive load: Humans are willing to offload parts of an attentionally demanding task to an algorithm" />
    <author>
      <name>Basil Wahn</name>
    </author>
    <author>
      <name>Laura Schmitz</name>
    </author>
    <author>
      <name>Frauke Nora Gerster</name>
    </author>
    <author>
      <name>Matthias Weiss</name>
    </author>
    <id>10.1371/journal.pone.0286102</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Basil Wahn, Laura Schmitz, Frauke Nora Gerster, Matthias Weiss&lt;/p&gt;

In the near future, humans will increasingly be required to offload tasks to artificial systems to facilitate daily as well as professional activities. Yet, research has shown that humans are often averse to offloading tasks to algorithms (so-called “algorithmic aversion”). In the present study, we asked whether this aversion is also present when humans act under high cognitive load. Participants performed an attentionally demanding task (a multiple object tracking (MOT) task), which required them to track a subset of moving targets among distractors on a computer screen. Participants first performed the MOT task alone (Solo condition) and were then given the option to offload an unlimited number of targets to a computer partner (Joint condition). We found that participants significantly offloaded some (but not all) targets to the computer partner, thereby improving their individual tracking accuracy (Experiment 1). A similar tendency for offloading was observed when participants were informed beforehand that the computer partner’s tracking accuracy was flawless (Experiment 2). The present findings show that humans are willing to (partially) offload task demands to an algorithm to reduce their own cognitive load. We suggest that the cognitive load of a task is an important factor to consider when evaluating human tendencies for offloading cognition onto artificial systems.</content>
  </entry>
  <entry>
    <title>Inflorescences of &lt;i&gt;Cuscuta&lt;/i&gt; (Convolvulaceae): Diversity, evolution and relationships with breeding systems and fruit dehiscence modes</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286100" title="Inflorescences of &lt;i&gt;Cuscuta&lt;/i&gt; (Convolvulaceae): Diversity, evolution and relationships with breeding systems and fruit dehiscence modes" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286100.PDF" title="(PDF) Inflorescences of &lt;i&gt;Cuscuta&lt;/i&gt; (Convolvulaceae): Diversity, evolution and relationships with breeding systems and fruit dehiscence modes" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286100.XML" title="(XML) Inflorescences of &lt;i&gt;Cuscuta&lt;/i&gt; (Convolvulaceae): Diversity, evolution and relationships with breeding systems and fruit dehiscence modes" />
    <author>
      <name>Morgan Glofcheskie</name>
    </author>
    <author>
      <name>Tristan Long</name>
    </author>
    <author>
      <name>Anna Ho</name>
    </author>
    <author>
      <name>Mihai Costea</name>
    </author>
    <id>10.1371/journal.pone.0286100</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Morgan Glofcheskie, Tristan Long, Anna Ho, Mihai Costea&lt;/p&gt;

&lt;i&gt;Cuscuta&lt;/i&gt; (dodder) includes ca. 200 species of plant obligate stem parasites with enormous ecological and economical significance. Inflorescences have been historically used in &lt;i&gt;Cuscuta&lt;/i&gt; for species descriptions and identification keys, but no comprehensive study exists to date. The main objectives of this study were to survey the diversity and evolution of inflorescences and to uncover their possible form-function relationships. The inflorescence architecture of 132 &lt;i&gt;Cuscuta&lt;/i&gt; taxa was analysed using herbarium specimens and eight species were grown to study their inflorescence development. Inflorescence traits were mapped into a genus phylogeny obtained from a combined analysis of nuclear ITS and plastid trnL-F sequences. To test the hypothesis that inflorescence architecture is connected to sexual reproduction, correlations between inflorescence traits (using Principal Components), sexual reproductive traits (pollen/ovule ratios, corolla length and diameter), fruit charaters (fruit length and width), and the modes of dehiscence were analyzed. Based on their development, three major types of inflorescences were observed: “&lt;i&gt;Cuscuta type&lt;/i&gt;”, a simple, monochasial scorpioid cyme; “&lt;i&gt;Monogynella type&lt;/i&gt;”, a compound monochasial scorpioid cymes with the longest primary axes having prolonged vegetative growth and giving the appearance of thyrses; and “&lt;i&gt;Grammica type&lt;/i&gt;”, a compound monochasial scorpiod cymes with up to five orders of axes. Maximum likelihood analyses suggested &lt;i&gt;Monogynella&lt;/i&gt; as the ancestral type, while &lt;i&gt;Cuscuta&lt;/i&gt; and &lt;i&gt;Grammica&lt;/i&gt; were derived. Overall, the total length of axes exhibited a reduction trend throughout the genus evolution, but it was not correlated with the pedicels length. Inflorescences with similar architectures may exhibit contrasting pollen-ovule ratios. Positive significant correlations were noted between the size of the flower traits and pollen-ovule ratios. Several modes of dehiscence had statistically significant different total axes lengths, suggesting that the infructescence architecture is connected to the modes of dehiscence in &lt;i&gt;Cuscuta&lt;/i&gt; and therefore seed dispersal.</content>
  </entry>
  <entry>
    <title>Comparison of the safety between propylthiouracil and methimazole with hyperthyroidism in pregnancy: A systematic review and meta-analysis</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286097" title="Comparison of the safety between propylthiouracil and methimazole with hyperthyroidism in pregnancy: A systematic review and meta-analysis" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286097.PDF" title="(PDF) Comparison of the safety between propylthiouracil and methimazole with hyperthyroidism in pregnancy: A systematic review and meta-analysis" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286097.XML" title="(XML) Comparison of the safety between propylthiouracil and methimazole with hyperthyroidism in pregnancy: A systematic review and meta-analysis" />
    <author>
      <name>Yue Liu</name>
    </author>
    <author>
      <name>Qianqian Li</name>
    </author>
    <author>
      <name>Yang Xu</name>
    </author>
    <author>
      <name>Yixin Chen</name>
    </author>
    <author>
      <name>Yanyan Men</name>
    </author>
    <id>10.1371/journal.pone.0286097</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Yue Liu, Qianqian Li, Yang Xu, Yixin Chen, Yanyan Men&lt;/p&gt;
Objective &lt;p&gt;The purpose of this meta-analysis was to assess the safety of the anti-thyroid drugs (ATDs) propylthiouracil (PTU) and methimazole (MMI) in the treatment of hyperthyroidism during pregnancy.&lt;/p&gt; Method &lt;p&gt;From inception until June 2, 2022, all available studies were searched in PubMed, Web of Science, Cochrane, EBSCO, Embase, Scopus, and CNKI.&lt;/p&gt; Result &lt;p&gt;Thirteen articles satisfying the inclusion criteria were examined. Our meta-analysis indicated that pregnant women treated with MMI had a higher risk of congenital anomalies than those treated with PTU (OR 0.80, 95%CI 0.69–0.92, &lt;i&gt;P&lt;/i&gt; = 0.002, I&lt;sup&gt;2&lt;/sup&gt; = 41.9%). Shifting between MMI and PTU during pregnancy did not reduce the risk of birth defects compared to PTU alone (OR 1.18, CI 1.00 to 1.40, &lt;i&gt;P&lt;/i&gt; = 0.061, I&lt;sup&gt;2&lt;/sup&gt; = 0.0%). There were no statistically significant differences in hepatotoxicity (OR 1.54, 95%CI 0.77–3.09, &lt;i&gt;P&lt;/i&gt; = 0.221, I&lt;sup&gt;2&lt;/sup&gt; = 0.0%) or miscarriage (OR 0.89, 95%CI 0.72–1.11, &lt;i&gt;P&lt;/i&gt; = 0.310, I&lt;sup&gt;2&lt;/sup&gt; = 0.0%) between PTU and MMI exposure.&lt;/p&gt; Conclusion &lt;p&gt;The study confirmed propylthiouracil is a safer alternative to methimazole for treating hyperthyroidism in pregnant women, and it is appropriate to treat maternal thyroid disease with PTU during the first trimester of pregnancy. However, it is not clear whether switching between propylthiouracil and methimazole is a better option than treating PTU alone during pregnancy. Further studies on this matter may be needed to develop new evidence-based guidelines for the treatment of pregnant women with hyperthyroidism.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Aphid facultative symbionts confer no protection against the fungal entomopathogen &lt;i&gt;Batkoa apiculata&lt;/i&gt;</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286095" title="Aphid facultative symbionts confer no protection against the fungal entomopathogen &lt;i&gt;Batkoa apiculata&lt;/i&gt;" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286095.PDF" title="(PDF) Aphid facultative symbionts confer no protection against the fungal entomopathogen &lt;i&gt;Batkoa apiculata&lt;/i&gt;" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286095.XML" title="(XML) Aphid facultative symbionts confer no protection against the fungal entomopathogen &lt;i&gt;Batkoa apiculata&lt;/i&gt;" />
    <author>
      <name>Rose A. Inchauregui</name>
    </author>
    <author>
      <name>Keertana Tallapragada</name>
    </author>
    <author>
      <name>Benjamin J. Parker</name>
    </author>
    <id>10.1371/journal.pone.0286095</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Rose A. Inchauregui, Keertana Tallapragada, Benjamin J. Parker&lt;/p&gt;

Fungi in the family &lt;i&gt;Entomophthoraceae&lt;/i&gt; are prevalent pathogens of aphids. Facultative symbiotic bacteria harbored by aphids, including &lt;i&gt;Spiroplasma sp&lt;/i&gt;. and &lt;i&gt;Regiella insecticola&lt;/i&gt;, have been shown to make their hosts more resistant to infection with the fungal pathogen &lt;i&gt;Pandora neoaphidis&lt;/i&gt;. How far this protection extends against other species of fungi in the family &lt;i&gt;Entomophthoraceae&lt;/i&gt; is unknown. Here we isolated a strain of the fungal pathogen &lt;i&gt;Batkoa apiculata&lt;/i&gt; infecting a natural population of pea aphids (&lt;i&gt;Acyrthosiphon pisum&lt;/i&gt;) and confirmed its identity by sequencing the 28S rRNA gene. We then infected a panel of aphids each harboring a different species or strain of endosymbiotic bacteria to test whether aphid symbionts protect against &lt;i&gt;B&lt;/i&gt;. &lt;i&gt;apiculata&lt;/i&gt;. We found no evidence of symbiont-mediated protection against this pathogen, and our data suggest that some symbionts make aphids more susceptible to infection. This finding is relevant to our understanding of this important model of host-microbe interactions, and we discuss our results in the context of aphid-microbe ecological and evolutionary dynamics.</content>
  </entry>
  <entry>
    <title>Biochemical characterization of an alkaline and detergent-stable Lipase from &lt;i&gt;Fusarium annulatum&lt;/i&gt; Bugnicourt strain CBS associated with olive tree dieback</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286091" title="Biochemical characterization of an alkaline and detergent-stable Lipase from &lt;i&gt;Fusarium annulatum&lt;/i&gt; Bugnicourt strain CBS associated with olive tree dieback" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286091.PDF" title="(PDF) Biochemical characterization of an alkaline and detergent-stable Lipase from &lt;i&gt;Fusarium annulatum&lt;/i&gt; Bugnicourt strain CBS associated with olive tree dieback" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286091.XML" title="(XML) Biochemical characterization of an alkaline and detergent-stable Lipase from &lt;i&gt;Fusarium annulatum&lt;/i&gt; Bugnicourt strain CBS associated with olive tree dieback" />
    <author>
      <name>Ahlem Dab</name>
    </author>
    <author>
      <name>Ismail Hasnaoui</name>
    </author>
    <author>
      <name>Sondes Mechri</name>
    </author>
    <author>
      <name>Fawzi Allala</name>
    </author>
    <author>
      <name>Khelifa Bouacem</name>
    </author>
    <author>
      <name>Alexandre Noiriel</name>
    </author>
    <author>
      <name>Amel Bouanane-Darenfed</name>
    </author>
    <author>
      <name>Ennouamane Saalaoui</name>
    </author>
    <author>
      <name>Abdeslam Asehraou</name>
    </author>
    <author>
      <name>Fanghua Wang</name>
    </author>
    <author>
      <name>Abdelkarim Abousalham</name>
    </author>
    <author>
      <name>Bassem Jaouadi</name>
    </author>
    <id>10.1371/journal.pone.0286091</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Ahlem Dab, Ismail Hasnaoui, Sondes Mechri, Fawzi Allala, Khelifa Bouacem, Alexandre Noiriel, Amel Bouanane-Darenfed, Ennouamane Saalaoui, Abdeslam Asehraou, Fanghua Wang, Abdelkarim Abousalham, Bassem Jaouadi&lt;/p&gt;

This work describes a novel extracellular lipolytic carboxylester hydrolase named FAL, with lipase and phospholipase A&lt;sub&gt;1&lt;/sub&gt; (PLA&lt;sub&gt;1&lt;/sub&gt;) activity, from a newly isolated filamentous fungus &lt;i&gt;Ascomycota&lt;/i&gt; CBS strain, identified as &lt;i&gt;Fusarium annulatum&lt;/i&gt; Bunigcourt. FAL was purified to about 62-fold using ammonium sulphate precipitation, Superdex&lt;sup&gt;®&lt;/sup&gt; 200 Increase gel filtration and Q-Sepharose Fast Flow columns, with a total yield of 21%. The specific activity of FAL was found to be 3500 U/mg at pH 9 and 40°C and 5000 U/mg at pH 11 and 45°C, on emulsions of triocanoin and egg yolk phosphatidylcholine, respectively. SDS-PAGE and zymography analysis estimated the molecular weight of FAL to be 33 kDa. FAL was shown to be a PLA&lt;sub&gt;1&lt;/sub&gt; with a regioselectivity to the &lt;i&gt;sn&lt;/i&gt;-1 position of surface-coated phospholipids esterified with α-eleostearic acid. FAL is a serine enzyme since its activity on triglycerides and phospholipids was completely inhibited by the lipase inhibitor Orlistat (40 μM). Interestingly, compared to &lt;i&gt;Fusarium graminearum&lt;/i&gt; lipase (GZEL) and the &lt;i&gt;Thermomyces lanuginosus&lt;/i&gt; lipase (Lipolase&lt;sup&gt;®&lt;/sup&gt;), this novel fungal (phospho)lipase showed extreme tolerance to the presence of non-polar organic solvents, non-ionic and anionic surfactants, and oxidants, in addition to significant compatibility and stability with some available laundry detergents. The analysis of washing performance showed that it has the capability to efficiently eliminate oil-stains. Overall, FAL could be an ideal choice for application in detergents.</content>
  </entry>
  <entry>
    <title>Evaluating factors influencing customers’ intention to eat Korean cuisine “Samgyeopsal” in the Philippines: A structural equation model forest classifier approach</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286077" title="Evaluating factors influencing customers’ intention to eat Korean cuisine “Samgyeopsal” in the Philippines: A structural equation model forest classifier approach" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286077.PDF" title="(PDF) Evaluating factors influencing customers’ intention to eat Korean cuisine “Samgyeopsal” in the Philippines: A structural equation model forest classifier approach" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286077.XML" title="(XML) Evaluating factors influencing customers’ intention to eat Korean cuisine “Samgyeopsal” in the Philippines: A structural equation model forest classifier approach" />
    <author>
      <name>Ardvin Kester S. Ong</name>
    </author>
    <author>
      <name>Yogi Tri Prasetyo</name>
    </author>
    <author>
      <name>Atheena Rhezelle B. Manguray</name>
    </author>
    <author>
      <name>E. J. Meinard G. Moral</name>
    </author>
    <author>
      <name>Andrea Lorraine M. Maun</name>
    </author>
    <author>
      <name>Josh Gasty F. Diaz</name>
    </author>
    <author>
      <name>Charlotte N. Monteiro</name>
    </author>
    <author>
      <name>Venice Cristine C. Dangaran</name>
    </author>
    <author>
      <name>Satria Fadil Persada</name>
    </author>
    <author>
      <name>Reny Nadlifatin</name>
    </author>
    <author>
      <name>Irene Dyah Ayuwati</name>
    </author>
    <id>10.1371/journal.pone.0286077</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Ardvin Kester S. Ong, Yogi Tri Prasetyo, Atheena Rhezelle B. Manguray, E. J. Meinard G. Moral, Andrea Lorraine M. Maun, Josh Gasty F. Diaz, Charlotte N. Monteiro, Venice Cristine C. Dangaran, Satria Fadil Persada, Reny Nadlifatin, Irene Dyah Ayuwati&lt;/p&gt;

Samgyeopsal has become a widely popular cuisine in the Philippines since 2014. The rise of Samgyeopsal is evident worldwide as it is available in countries such as the United States, Northern, and Southern Asia. This study aimed to explore the intention to eat Samgyeopsal during the COVID-19 pandemic utilizing structural equation modeling and random forest classifier. With a total of 1014 responses collected online, the result showed that utilitarian and hedonic motivation, Korean influence, and attitude led to very high actual behavior in east Samgyeopsal in the Philippines. Moreover, subjective norm, perceived behavioral control, and intention led to significant results influencing intention to actual behavior. Lastly, the COVID-19 safety protocol showed the least significant result. This study is the first study that evaluated the intention of consumers to eat Samgyeopsal in the Philippines during the COVID-19 pandemic. The results of this study would be beneficial to Korean BBQ restaurateurs and the further development of their marketing strategies even in other countries. Finally, the model construct of this study can be extended and applied in evaluating the consumers’ eating intention toward other varieties of food or cuisines worldwide.</content>
  </entry>
  <entry>
    <title>The microbiome and gene expression of honey bee workers are affected by a diet containing pollen substitutes</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286070" title="The microbiome and gene expression of honey bee workers are affected by a diet containing pollen substitutes" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286070.PDF" title="(PDF) The microbiome and gene expression of honey bee workers are affected by a diet containing pollen substitutes" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286070.XML" title="(XML) The microbiome and gene expression of honey bee workers are affected by a diet containing pollen substitutes" />
    <author>
      <name>J. Elijah Powell</name>
    </author>
    <author>
      <name>Pierre Lau</name>
    </author>
    <author>
      <name>Juliana Rangel</name>
    </author>
    <author>
      <name>Ryan Arnott</name>
    </author>
    <author>
      <name>Tyler De Jong</name>
    </author>
    <author>
      <name>Nancy A. Moran</name>
    </author>
    <id>10.1371/journal.pone.0286070</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by J. Elijah Powell, Pierre Lau, Juliana Rangel, Ryan Arnott, Tyler De Jong, Nancy A. Moran&lt;/p&gt;

Pollen is the primary source of dietary protein for honey bees. It also includes complex polysaccharides in its outer coat, which are largely indigestible by bees but can be metabolized by bacterial species within the gut microbiota. During periods of reduced availability of floral pollen, supplemental protein sources are frequently provided to managed honey bee colonies. The crude proteins in these supplemental feeds are typically byproducts from food manufacturing processes and are rarely derived from pollen. Our experiments on the impact of different diets showed that a simplified pollen-free diet formulated to resemble the macronutrient profile of a monofloral pollen source resulted in larger microbial communities with reduced diversity, reduced evenness, and reduced levels of potentially beneficial hive-associated bacteria. Furthermore, the pollen-free diet sharply reduced the expression of genes central to honey bee development. In subsequent experiments, we showed that these shifts in gene expression may be linked to colonization by the gut microbiome. Lastly, we demonstrated that for bees inoculated with a defined gut microbiota, those raised on an artificial diet were less able to suppress infection from a bacterial pathogen than those that were fed natural pollen. Our findings demonstrate that a pollen-free diet significantly impacts the gut microbiota and gene expression of honey bees, indicating the importance of natural pollen as a primary protein source.</content>
  </entry>
  <entry>
    <title>Factors associated with long-term gastrointestinal symptoms in colorectal cancer survivors in the women’s health initiatives (WHI study)</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286058" title="Factors associated with long-term gastrointestinal symptoms in colorectal cancer survivors in the women’s health initiatives (WHI study)" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286058.PDF" title="(PDF) Factors associated with long-term gastrointestinal symptoms in colorectal cancer survivors in the women’s health initiatives (WHI study)" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286058.XML" title="(XML) Factors associated with long-term gastrointestinal symptoms in colorectal cancer survivors in the women’s health initiatives (WHI study)" />
    <author>
      <name>Claire J. Han</name>
    </author>
    <author>
      <name>Kerryn W. Reding</name>
    </author>
    <author>
      <name>Matthew F. Kalady</name>
    </author>
    <author>
      <name>Rachel Yung</name>
    </author>
    <author>
      <name>Heather Greenlee</name>
    </author>
    <author>
      <name>Electra D. Paskett</name>
    </author>
    <id>10.1371/journal.pone.0286058</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Claire J. Han, Kerryn W. Reding, Matthew F. Kalady, Rachel Yung, Heather Greenlee, Electra D. Paskett&lt;/p&gt;
Purpose &lt;p&gt;Colorectal cancer (CRC) survivors often experience long-term symptoms after cancer treatments. But gastrointestinal (GI) symptom experiences are under-investigated in CRC survivors. We described persistent GI symptoms after cancer treatments in female CRC survivors and assessed GI symptoms’ risk and life-impact factors.&lt;/p&gt; Methods &lt;p&gt;A cross-sectional study utilized data from the Women’s Health Initiative (WHI) Life and Longevity After Cancer (LILAC) study that recruited postmenopausal women. Correlation analyses and multivariable linear regression models were used.&lt;/p&gt; Results &lt;p&gt;CRC survivors after cancer treatments were included (N = 413, mean age 71.2 years old, mean time since diagnosis = 8.1 years). 81% of CRC survivors experienced persistent GI symptoms. Bloating/gas was the most prevalent (54.2%± 0.88) and severe GI symptom, followed by constipation (44.1%±1.06), diarrhea (33.4%±0.76), and abdominal/pelvic pain (28.6%±0.62). Significant risk factors for GI symptoms include time since cancer diagnosis (&lt;5 years), advanced cancer stage, high psychological distress, poor dietary habits, and low physical activity. Fatigue and sleep disturbance were the most significant risk factors for long-term GI symptoms (β = 0.21, t = 3.557; β = 0.20, t = 3.336, respectively, &lt;i&gt;Ps&lt;/i&gt; &lt; .001). High severity of GI symptoms was positively associated with poor quality of life (QOL), increased daily life interferences (social and physical functions), and low body image satisfaction (&lt;i&gt;Ps&lt;/i&gt; &lt; .001).&lt;/p&gt; Conclusions &lt;p&gt;Women CRC survivors experience a high GI symptom burden, highlighting the need to inform policy and improve the QOL of cancer survivors. Our findings will aid in identifying those more vulnerable to symptoms, and inform future survivorship care interventions (i.e., community-based cancer symptom management) by considering multiple risk factors (e.g., psychological distress).&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Charitable donations and the theory of planned behaviour: A systematic review and meta-analysis</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286053" title="Charitable donations and the theory of planned behaviour: A systematic review and meta-analysis" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286053.PDF" title="(PDF) Charitable donations and the theory of planned behaviour: A systematic review and meta-analysis" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286053.XML" title="(XML) Charitable donations and the theory of planned behaviour: A systematic review and meta-analysis" />
    <author>
      <name>Katherine M. White</name>
    </author>
    <author>
      <name>Louise C. Starfelt Sutton</name>
    </author>
    <author>
      <name>Xiang Zhao</name>
    </author>
    <id>10.1371/journal.pone.0286053</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Katherine M. White, Louise C. Starfelt Sutton, Xiang Zhao&lt;/p&gt;

Given the predominance of the theory of planned behaviour (TPB) to represent the psychological determinants underlying people’s charitable decisions, the present study synthesised the model’s key relationships, using meta-analysis, and tested the predictive utility of the model for charitable giving encompassing donations of blood, organs, time, and money. Given its relevance to altruistic decisions, the impact of moral norm was assessed also. A systematic literature review identified 117 samples (from 104 studies) examining donation intentions and/or prospective behaviour using TPB measures. The sample-weighted average effects for all associations were moderate-to-strong with perceived behavioural control (PBC) most strongly associated with intention (&lt;i&gt;r&lt;/i&gt;+ = 0.562), followed by moral norm (&lt;i&gt;r&lt;/i&gt;+ = 0.537), attitude (&lt;i&gt;r&lt;/i&gt;+ = 0.507), and subjective norm (&lt;i&gt;r&lt;/i&gt;+ = 0.472). Intention (&lt;i&gt;r&lt;/i&gt;+ = 0.424) showed stronger associations with prospective behaviour than PBC (&lt;i&gt;r&lt;/i&gt;+ = 0.301). The standard TPB predictors explained 44% of variance in intention (52% including moral norm). Intention and PBC explained 19% of variance in behaviour. A number of TPB associations showed differences when analysed for moderator variables such as length of follow-up for prospective behaviour and type of target behaviour. Stronger associations were found for the (subjective and moral) norm-intention associations among some of the different types of giving behaviours, especially for donating organs and time. Overall, the large proportion of variance explained by the TPB predictors especially for intention highlights those cognitions associated with people’s plans to give, informative for charities reliant on people’s propensity to give.</content>
  </entry>
  <entry>
    <title>Identifying essential genes in genome-scale metabolic models of consensus molecular subtypes of colorectal cancer</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286032" title="Identifying essential genes in genome-scale metabolic models of consensus molecular subtypes of colorectal cancer" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286032.PDF" title="(PDF) Identifying essential genes in genome-scale metabolic models of consensus molecular subtypes of colorectal cancer" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286032.XML" title="(XML) Identifying essential genes in genome-scale metabolic models of consensus molecular subtypes of colorectal cancer" />
    <author>
      <name>Chao-Ting Cheng</name>
    </author>
    <author>
      <name>Jin-Mei Lai</name>
    </author>
    <author>
      <name>Peter Mu-Hsin Chang</name>
    </author>
    <author>
      <name>Yi-Ren Hong</name>
    </author>
    <author>
      <name>Chi-Ying F. Huang</name>
    </author>
    <author>
      <name>Feng-Sheng Wang</name>
    </author>
    <id>10.1371/journal.pone.0286032</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Chao-Ting Cheng, Jin-Mei Lai, Peter Mu-Hsin Chang, Yi-Ren Hong, Chi-Ying F. Huang, Feng-Sheng Wang&lt;/p&gt;

Identifying essential targets in the genome-scale metabolic networks of cancer cells is a time-consuming process. The present study proposed a fuzzy hierarchical optimization framework for identifying essential genes, metabolites and reactions. On the basis of four objectives, the present study developed a framework for identifying essential targets that lead to cancer cell death and evaluating metabolic flux perturbations in normal cells that have been caused by cancer treatment. Through fuzzy set theory, a multiobjective optimization problem was converted into a trilevel maximizing decision-making (MDM) problem. We applied nested hybrid differential evolution to solve the trilevel MDM problem to identify essential targets in genome-scale metabolic models for five consensus molecular subtypes (CMSs) of colorectal cancer. We used various media to identify essential targets for each CMS and discovered that most targets affected all five CMSs and that some genes were CMS-specific. We obtained experimental data on the lethality of cancer cell lines from the DepMap database to validate the identified essential genes. The results reveal that most of the identified essential genes were compatible with the colorectal cancer cell lines obtained from DepMap and that these genes, with the exception of EBP, LSS, and SLC7A6, could generate a high level of cell death when knocked out. The identified essential genes were mostly involved in cholesterol biosynthesis, nucleotide metabolisms, and the glycerophospholipid biosynthetic pathway. The genes involved in the cholesterol biosynthetic pathway were also revealed to be determinable, if a cholesterol uptake reaction was not induced when the cells were in the culture medium. However, the genes involved in the cholesterol biosynthetic pathway became non-essential if such a reaction was induced. Furthermore, the essential gene CRLS1 was revealed as a medium-independent target for all CMSs.</content>
  </entry>
  <entry>
    <title>Binaural beats to entrain the brain? A systematic review of the effects of binaural beat stimulation on brain oscillatory activity, and the implications for psychological research and intervention</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286023" title="Binaural beats to entrain the brain? A systematic review of the effects of binaural beat stimulation on brain oscillatory activity, and the implications for psychological research and intervention" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286023.PDF" title="(PDF) Binaural beats to entrain the brain? A systematic review of the effects of binaural beat stimulation on brain oscillatory activity, and the implications for psychological research and intervention" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286023.XML" title="(XML) Binaural beats to entrain the brain? A systematic review of the effects of binaural beat stimulation on brain oscillatory activity, and the implications for psychological research and intervention" />
    <author>
      <name>Ruth Maria Ingendoh</name>
    </author>
    <author>
      <name>Ella S. Posny</name>
    </author>
    <author>
      <name>Angela Heine</name>
    </author>
    <id>10.1371/journal.pone.0286023</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Ruth Maria Ingendoh, Ella S. Posny, Angela Heine&lt;/p&gt;

&lt;i&gt;Binaural beats&lt;/i&gt; are an auditory phenomenon that occurs when two tones of different frequencies, which are presented separately to each ear, elicit the sensation of a third tone oscillating at the difference frequency of the two tones. Binaural beats can be perceived in the frequency range of about 1–30 Hz, a range that coincides with the main human EEG frequency bands. The &lt;i&gt;brainwave entrainment hypothesis&lt;/i&gt;, which assumes that external stimulation at a certain frequency leads to the brain’s electrocortical activity oscillating at the same frequency, provides the basis for research on the effects of binaural beat stimulation on cognitive and affective states. Studies, particularly in more applied fields, usually refer to neuroscientific research demonstrating that binaural beats elicit systematic changes in EEG parameters. At first glance, however, the available literature on brainwave entrainment effects due to binaural beat stimulation appears to be inconclusive at best. The aim of the present systematic review is, thus, to synthesize existing empirical research. A sample of fourteen published studies met our criteria for inclusion. The results corroborate the impression of an overall inconsistency of empirical outcomes, with five studies reporting results in line with the brainwave entrainment hypothesis, eight studies reporting contradictory, and one mixed results. What is to be noticed is that the fourteen studies included in this review were very heterogeneous regarding the implementation of the binaural beats, the experimental designs, and the EEG parameters and analyses. The methodological heterogeneity in this field of study ultimately limits the comparability of research outcomes. The results of the present systematic review emphasize the need for standardization in study approaches so as to allow for reliable insight into brainwave entrainment effects in the future.</content>
  </entry>
  <entry>
    <title>‘Microincisional trabeculectomy for glaucoma”</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286020" title="‘Microincisional trabeculectomy for glaucoma”" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286020.PDF" title="(PDF) ‘Microincisional trabeculectomy for glaucoma”" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286020.XML" title="(XML) ‘Microincisional trabeculectomy for glaucoma”" />
    <author>
      <name>Aparna Rao</name>
    </author>
    <author>
      <name>Sardar Khan</name>
    </author>
    <author>
      <name>Sujoy Mukherjee</name>
    </author>
    <id>10.1371/journal.pone.0286020</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Aparna Rao, Sardar Khan, Sujoy Mukherjee&lt;/p&gt;
Purpose &lt;p&gt;To evaluate the short-term clinical outcomes of microincisional trabeculectomy (MIT), a new technique of ab-interno trabeculectomy.&lt;/p&gt; Methods &lt;p&gt;Consecutive patients with open-angle glaucoma identified from the hospital database that underwent MIT with or without cataract surgery between September 2021 to June 2022 at a tertiary eye centre in East India, were screened. Those with a follow-up of &lt; 6 months or with incomplete data were excluded. MIT was done ab-interno using microscissors and microforceps in 2–4 clock hours of the nasal angle via a temporal incision. The intraocular pressure (IOP) reduction at 6 months, and reduction in the number of medications after surgery were analysed. Surgical success (IOP&gt;6 and &lt;22 mm Hg), complications, angle features on anterior segment optical coherence tomography (ASOCT), and the need for additional surgeries were analysed.&lt;/p&gt; Results &lt;p&gt;We included thirty-two eyes of 32 patients with open-angle glaucoma (including n = 9 eyes that underwent concurrent cataract surgery) with a preoperative mean IOP of 22 ±11.1 mm Hg and visual field index of 47±37.9%. All eyes achieved &gt;30% IOP reduction, with a final IOP of 14±6.9 mm Hg at 6 months. Surgical success in 31 of 32 eyes with complete success seen in 28 eyes with none of the eyes requiring &gt;1 medication for IOP control. Hyphema was seen in 4 eyes, while transient IOP spikes at 1 day-1 month were seen in 5 eyes, none of which required any additional interventions. One eye with persistent raised IOP at 1 month required incisional trabeculectomy for uncontrolled IOP with 2 medications.&lt;/p&gt; Conclusion &lt;p&gt;MIT, a new technique of ab-interno trabeculectomy, is effective in terms of IOP control and reduction in the number of medications while having fewer complications. Long-term studies comparing the efficacy of MIT with incisional trabeculectomy, or other procedures are warranted in the future.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Spiny mice (&lt;i&gt;Acomys&lt;/i&gt;) cells fail to engraft in NOD scid gamma</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286000" title="Spiny mice (&lt;i&gt;Acomys&lt;/i&gt;) cells fail to engraft in NOD scid gamma" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286000.PDF" title="(PDF) Spiny mice (&lt;i&gt;Acomys&lt;/i&gt;) cells fail to engraft in NOD scid gamma" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0286000.XML" title="(XML) Spiny mice (&lt;i&gt;Acomys&lt;/i&gt;) cells fail to engraft in NOD scid gamma" />
    <author>
      <name>Janak Gaire</name>
    </author>
    <author>
      <name>Valentina Supper</name>
    </author>
    <author>
      <name>Darrice Montgomery</name>
    </author>
    <author>
      <name>Chelsey S. Simmons</name>
    </author>
    <id>10.1371/journal.pone.0286000</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Janak Gaire, Valentina Supper, Darrice Montgomery, Chelsey S. Simmons&lt;/p&gt;

Immune cells and stromal cells regulate wound healing and regeneration through complex activation patterns with spatiotemporal variation. The scarless regeneration of Spiny mice (&lt;i&gt;Acomys&lt;/i&gt; species) is no exception; differential activation of immune and stromal cell populations seems to play a role in its remarkable regenerative capacity. To elucidate the role and interplay of Acomys immune cells in mammalian regeneration, we sought to create &lt;i&gt;Acomys&lt;/i&gt;-&lt;i&gt;Mus&lt;/i&gt; chimeras by transplanting bone marrow (BM) from &lt;i&gt;Acomys&lt;/i&gt; into NOD Scid Gamma (NSG), a severely immunodeficient mouse line often used in creating humanized mice. Here, we report that &lt;i&gt;Acomys&lt;/i&gt; BM cells fail to reconstitute and differentiate when transferred to irradiated NSG adults and neonates. In addition, we did not detect the presence of donor cells nor observe the onset of Graft versus Host Disease (GvHD)-like pathology, even after transplanting &lt;i&gt;Acomys&lt;/i&gt; splenocytes in &lt;i&gt;Acomys&lt;/i&gt;-&lt;i&gt;Mus&lt;/i&gt; chimeras suggesting early graft failure. Overall, these results demonstrate the adoptive transfer of &lt;i&gt;Acomys&lt;/i&gt; BM alone is not sufficient to establish &lt;i&gt;Acomys&lt;/i&gt; hematopoietic system in NSG mouse.</content>
  </entry>
  <entry>
    <title>Revisiting flow augmentation bypass for cerebrovascular atherosclerotic vaso-occlusive disease: Single-surgeon series and review of the literature</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285982" title="Revisiting flow augmentation bypass for cerebrovascular atherosclerotic vaso-occlusive disease: Single-surgeon series and review of the literature" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285982.PDF" title="(PDF) Revisiting flow augmentation bypass for cerebrovascular atherosclerotic vaso-occlusive disease: Single-surgeon series and review of the literature" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285982.XML" title="(XML) Revisiting flow augmentation bypass for cerebrovascular atherosclerotic vaso-occlusive disease: Single-surgeon series and review of the literature" />
    <author>
      <name>Jihad Abdelgadir</name>
    </author>
    <author>
      <name>Aden P. Haskell-Mendoza</name>
    </author>
    <author>
      <name>Amanda R. Magno</name>
    </author>
    <author>
      <name>Alexander D. Suarez</name>
    </author>
    <author>
      <name>Prince Antwi</name>
    </author>
    <author>
      <name>Alankrita Raghavan</name>
    </author>
    <author>
      <name>Patricia Nelson</name>
    </author>
    <author>
      <name>Lexie Zidanyue Yang</name>
    </author>
    <author>
      <name>Sin-Ho Jung</name>
    </author>
    <author>
      <name>Ali R. Zomorodi</name>
    </author>
    <id>10.1371/journal.pone.0285982</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Jihad Abdelgadir, Aden P. Haskell-Mendoza, Amanda R. Magno, Alexander D. Suarez, Prince Antwi, Alankrita Raghavan, Patricia Nelson, Lexie Zidanyue Yang, Sin-Ho Jung, Ali R. Zomorodi&lt;/p&gt;
Objective &lt;p&gt;Despite advances in the nonsurgical management of cerebrovascular atherosclerotic steno-occlusive disease, approximately 15–20% of patients remain at high risk for recurrent ischemia. The benefit of revascularization with flow augmentation bypass has been demonstrated in studies of Moyamoya vasculopathy. Unfortunately, there are mixed results for the use of flow augmentation in atherosclerotic cerebrovascular disease. We conducted a study to examine the efficacy and long term outcomes of superficial temporal artery to middle cerebral artery (STA-MCA) bypass in patients with recurrent ischemia despite optimal medical management.&lt;/p&gt; Methods &lt;p&gt;A single-institution retrospective review of patients receiving flow augmentation bypass from 2013–2021 was conducted. Patients with non-Moyamoya vaso-occlusive disease (VOD) who had continued ischemic symptoms or strokes despite best medical management were included. The primary outcome was time to post-operative stroke. Time from cerebrovascular accident to surgery, complications, imaging results, and modified Rankin Scale (mRS) scores were aggregated.&lt;/p&gt; Results &lt;p&gt;Twenty patients met inclusion criteria. The median time from cerebrovascular accident to surgery was 87 (28–105.0) days. Only one patient (5%) had a stroke at 66 days post-op. One (5%) patient had a post-operative scalp infection, while 3 (15%) developed post-operative seizures. All 20 (100%) bypasses remained patent at follow-up. The median mRS score at follow up was significantly improved from presentation from 2.5 (1–3) to 1 (0–2), P = .013.&lt;/p&gt; Conclusions &lt;p&gt;For patients with high-risk non-Moyamoya VOD who have failed optimal medical therapy, contemporary approaches to flow augmentation with STA-MCA bypass may prevent future ischemic events with a low complication rate.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Root microbiome diversity and structure of the Sonoran desert buffelgrass (&lt;i&gt;Pennisetum ciliare&lt;/i&gt; L.)</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285978" title="Root microbiome diversity and structure of the Sonoran desert buffelgrass (&lt;i&gt;Pennisetum ciliare&lt;/i&gt; L.)" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285978.PDF" title="(PDF) Root microbiome diversity and structure of the Sonoran desert buffelgrass (&lt;i&gt;Pennisetum ciliare&lt;/i&gt; L.)" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285978.XML" title="(XML) Root microbiome diversity and structure of the Sonoran desert buffelgrass (&lt;i&gt;Pennisetum ciliare&lt;/i&gt; L.)" />
    <author>
      <name>Angélica Jara-Servin</name>
    </author>
    <author>
      <name>Adán Silva</name>
    </author>
    <author>
      <name>Hugo Barajas</name>
    </author>
    <author>
      <name>Rocío Cruz-Ortega</name>
    </author>
    <author>
      <name>Clara Tinoco-Ojanguren</name>
    </author>
    <author>
      <name>Luis D. Alcaraz</name>
    </author>
    <id>10.1371/journal.pone.0285978</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Angélica Jara-Servin, Adán Silva, Hugo Barajas, Rocío Cruz-Ortega, Clara Tinoco-Ojanguren, Luis D. Alcaraz&lt;/p&gt;

Buffelgrass (&lt;i&gt;Pennisetum ciliare&lt;/i&gt;) is an invasive plant introduced into Mexico’s Sonoran desert for cattle grazing and has converted large areas of native thorn scrub. One of the invasion mechanisms buffelgrass uses to invade is allelopathy, which consists of the production and secretion of allelochemicals that exert adverse effects on other plants’ growth. The plant microbiome also plays a vital role in establishing invasive plants and host growth and development. However, little is known about the buffelgrass root-associated bacteria and the effects of allelochemicals on the microbiome. We used 16S rRNA gene amplicon sequencing to obtain the microbiome of buffelgrass and compare it between samples treated with root exacknudates and aqueous leachates as allelochemical exposure and samples without allelopathic exposure in two different periods. The Shannon diversity values were between &lt;i&gt;H’&lt;/i&gt; = 5.1811–5.5709, with 2,164 reported bacterial Amplicon Sequence Variants (ASVs). A total of 24 phyla were found in the buffelgrass microbiome, predominantly &lt;i&gt;Actinobacteria&lt;/i&gt;, &lt;i&gt;Proteobacteria&lt;/i&gt;, and &lt;i&gt;Acidobacteria&lt;/i&gt;. At the genus level, 30 different genera comprised the buffelgrass core microbiome. Our results show that buffelgrass recruits microorganisms capable of thriving under allelochemical conditions and may be able to metabolize them (&lt;i&gt;e&lt;/i&gt;.&lt;i&gt;g&lt;/i&gt;., &lt;i&gt;Planctomicrobium&lt;/i&gt;, &lt;i&gt;Aurantimonas&lt;/i&gt;, and &lt;i&gt;Tellurimicrobium&lt;/i&gt;). We also found that the community composition of the microbiome changes depending on the developmental state of buffelgrass (&lt;i&gt;p&lt;/i&gt; = 0.0366; ANOSIM). These findings provide new insights into the role of the microbiome in the establishment of invasive plant species and offer potential targets for developing strategies to control buffelgrass invasion.</content>
  </entry>
  <entry>
    <title>Impact of the internet use on informal workers’ wages: Evidence from China</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285973" title="Impact of the internet use on informal workers’ wages: Evidence from China" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285973.PDF" title="(PDF) Impact of the internet use on informal workers’ wages: Evidence from China" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285973.XML" title="(XML) Impact of the internet use on informal workers’ wages: Evidence from China" />
    <author>
      <name>Xiaofei Si</name>
    </author>
    <author>
      <name>Maishou Li</name>
    </author>
    <id>10.1371/journal.pone.0285973</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Xiaofei Si, Maishou Li&lt;/p&gt;

Based on the data from the China Family Panel Studies (CFPS) in 2018, the relationship between internet use and informal workers’ wages and its internal mechanism were empirically discussed using the ordinary least squares and endogenous switching regression(ESR) model. The study found that internet use could significantly raise the level of wages of informal workers, and this conclusion still holds after the endogenous problem was solved through the endogenous switching regression model. Further research found that the influences of the internet use on informal workers’ wages was heterogeneous. In other words, internet use has a more obvious impact on the wages of informal workers aged 31 to 40, 41 to 50, and 51 to 60 with the educational level of university and above in cities and towns, while it has a significant negative impact on wages of informal workers aged 16 to 20.</content>
  </entry>
  <entry>
    <title>Ginsenoside 24-OH-PD from red ginseng inhibits acute T-lymphocytic leukaemia by activating the mitochondrial pathway</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285966" title="Ginsenoside 24-OH-PD from red ginseng inhibits acute T-lymphocytic leukaemia by activating the mitochondrial pathway" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285966.PDF" title="(PDF) Ginsenoside 24-OH-PD from red ginseng inhibits acute T-lymphocytic leukaemia by activating the mitochondrial pathway" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285966.XML" title="(XML) Ginsenoside 24-OH-PD from red ginseng inhibits acute T-lymphocytic leukaemia by activating the mitochondrial pathway" />
    <author>
      <name>Qingmiao Li</name>
    </author>
    <author>
      <name>Yongfu Chen</name>
    </author>
    <author>
      <name>Xiaolin Zhao</name>
    </author>
    <author>
      <name>Bocheng Lu</name>
    </author>
    <author>
      <name>Tingli Qu</name>
    </author>
    <author>
      <name>Li Tang</name>
    </author>
    <author>
      <name>Qian Zheng</name>
    </author>
    <id>10.1371/journal.pone.0285966</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Qingmiao Li, Yongfu Chen, Xiaolin Zhao, Bocheng Lu, Tingli Qu, Li Tang, Qian Zheng&lt;/p&gt;

Ginsenoside 24-hydroxy-ginsengdiol (24-OH-PD), extracted from red ginseng, is a novel diol-type ginsenoside, strongly inhibits the growth of human T-cell acute lymphoblastic leukaemia (T-ALL) CCRF-CEM cells. Our research aimed at investigating the mechanism underlying this inhibition. Cell viability was determined using the cell counting kit-8 (CCK-8) assay, and NOD/SCID mice bearing CCRF-CEM cells were used to verify the therapeutic effect of 24-OH-PD on T-ALL &lt;i&gt;in vivo&lt;/i&gt;. We equally analysed pathways related to 24-OH-PD in CCRF-CEM cells using RNA-Seq analysis. Cell apoptosis, reactive oxygen species (ROS), mitochondrial membrane potential (ΔΨm), and mitochondrial permeability transition pore (mPTP) levels were detected by flow cytometry. The activity of caspase3 and caspase9 was detected by enzyme activity detection kits. The expression levels of apoptosis-related proteins and mRNA were determined through western blotting and quantitative reverse-transcription PCR assays (qRT-PCR). CCK-8 assay and animal xenograft experiments confirmed that 24-OH-PD significantly inhibited T-ALL in a dose-dependent manner, both &lt;i&gt;in vivo&lt;/i&gt; and &lt;i&gt;in vitro&lt;/i&gt;. RNA-Seq results suggest that mitochondria-mediated apoptosis pathway plays an important role in this process. Furthermore, intracellular ROS levels increased, mPTP opened, and ΔΨm decreased following 24-OH-PD treatment. Pretreatment with the antioxidant, NAC, reversed the effects of 24-OH-PD on apoptosis and ROS generation. Moreover, 24-OH-PD treatment increased the expression of Bax and caspase family members, thereby releasing cytochrome c (Cytc) and inducing apoptosis. Our findings showed that, 24-OH-PD induces apoptosis in CCRF-CEM cells by activating the mitochondrial-dependent apoptosis pathway through ROS accumulation. This inhibitory effect implies that 24-OH-PD could be further developed as treatment of T-ALL.</content>
  </entry>
  <entry>
    <title>Impact of the COVID-19 pandemic on Ukrainian mortality, 2020–2021</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285950" title="Impact of the COVID-19 pandemic on Ukrainian mortality, 2020–2021" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285950.PDF" title="(PDF) Impact of the COVID-19 pandemic on Ukrainian mortality, 2020–2021" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285950.XML" title="(XML) Impact of the COVID-19 pandemic on Ukrainian mortality, 2020–2021" />
    <author>
      <name>Neil K. Mehta</name>
    </author>
    <author>
      <name>Ihor Honchar</name>
    </author>
    <author>
      <name>Olena Doroshenko</name>
    </author>
    <author>
      <name>Khrystyna Pak</name>
    </author>
    <author>
      <name>Mariia Daniuk</name>
    </author>
    <author>
      <name>Pavlo Polikarchuk</name>
    </author>
    <id>10.1371/journal.pone.0285950</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Neil K. Mehta, Ihor Honchar, Olena Doroshenko, Khrystyna Pak, Mariia Daniuk, Pavlo Polikarchuk&lt;/p&gt;

The mortality impact of the COVID-19 pandemic in Ukraine has remained incomplete. We estimated excess deaths associated with the pandemic in Ukraine during 2020 and 2021. Excess deaths may be attributed directly to SARS-CoV-2 infection or indirectly to deaths associated with social and economic upheavals resulting from the pandemic. Data on all deaths registered in government-controlled Ukraine from 2016–2021 (N = 3,657,475) were utilized. Using a model-based approach, we predicted monthly excess deaths in 2020 and 2021. We estimated 47,578 excess deaths in 2020 as a whole (7.71% of all recorded deaths). This figure reflects both positive (higher than expected) excess deaths from June-December and negative (lower than expected) deaths in January and March-May. From June-December 2020, we estimated 59,363 excess deaths (15.75% of all recorded deaths in those months). In 2021, we estimated 150,049 excess deaths (21.01% of all recorded deaths). Positive excess deaths were detected across age groups even groups younger than 40 years. The number of excess deaths exceeded that of deaths with COVID-19 coded on the death certificate by more than two-fold in 2020, but that difference narrowed in 2021. We furthermore provide provisional estimates of the effect of low vaccine coverage on excess deaths in 2021 drawing from European cross-national evidence and provisional estimates of the hypothetical evolution of the pandemic in 2022 to serve as a rough basis for future studies analyzing the joint impacts of the COVID-19 pandemic and the Russian invasion on Ukrainian demography.</content>
  </entry>
  <entry>
    <title>Quantification of a shelter cat population: Trends in intake, length of stay and outcome data of cats in seven Dutch shelters between 2006 and 2021</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285938" title="Quantification of a shelter cat population: Trends in intake, length of stay and outcome data of cats in seven Dutch shelters between 2006 and 2021" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285938.PDF" title="(PDF) Quantification of a shelter cat population: Trends in intake, length of stay and outcome data of cats in seven Dutch shelters between 2006 and 2021" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285938.XML" title="(XML) Quantification of a shelter cat population: Trends in intake, length of stay and outcome data of cats in seven Dutch shelters between 2006 and 2021" />
    <author>
      <name>W. J. R. van der Leij</name>
    </author>
    <author>
      <name>J. C. M. Vernooij</name>
    </author>
    <author>
      <name>C. M. Vinke</name>
    </author>
    <author>
      <name>R. J. Corbee</name>
    </author>
    <author>
      <name>J. W. Hesselink</name>
    </author>
    <id>10.1371/journal.pone.0285938</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by W. J. R. van der Leij, J. C. M. Vernooij, C. M. Vinke, R. J. Corbee, J. W. Hesselink&lt;/p&gt;

Shelter metrics can be used by shelters for self-assessment to optimise the health of their animal population and to identify risk factors for disease outbreaks. However, there is a need for a wider scope of these shelter metrics, as evidenced by the interest from shelters in the benchmarking of shelter progress and the development of national best practices. For the first time, Dutch shelter data were used retrospectively to signal trends using potentially reliable metrics for the analysis of shelter data. The aims of this study were to apply relevant metrics describing the different phases of shelter management for shelter cats (i.e., intake, stay and outcome) and a retrospective analysis of shelter data over the period between 2006 and 2021. Seven of the approximately 120 Dutch animal shelters participated in this study. Quantitative data on the intake of more than 74,000 shelter cats (e.g., stray cats, cats surrendered by their owners and cats obtained from other sources) and their outcomes (i.e., cats rehomed, returned to their owners, deceased, or otherwise lost) have been analysed. Metrics such as rehoming rate, return to owner rate, rates for mortality and euthanasia, length of stay and risk-based live release rate were determined. The main findings of the study during this 16-year period were that, over time, the number of cats per 1000 residents admitted to Dutch shelters was reduced by 39%, the number of feline euthanasia cases decreased by approximately 50%, the length of stay showed a reducing trend, while the return to owner and the risk-based live release rate increased. The shelter metrics examined in this study could be helpful in monitoring and evaluating the management, consequent health, and well-being of cats in shelters and eventually measuring progress of shelters both in the Netherlands and at a European level.</content>
  </entry>
  <entry>
    <title>HIV infection and cardiovascular disease have both shared and distinct monocyte gene expression features: Women’s Interagency HIV study</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285926" title="HIV infection and cardiovascular disease have both shared and distinct monocyte gene expression features: Women’s Interagency HIV study" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285926.PDF" title="(PDF) HIV infection and cardiovascular disease have both shared and distinct monocyte gene expression features: Women’s Interagency HIV study" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285926.XML" title="(XML) HIV infection and cardiovascular disease have both shared and distinct monocyte gene expression features: Women’s Interagency HIV study" />
    <author>
      <name>Juan Lin</name>
    </author>
    <author>
      <name>Erik Ehinger</name>
    </author>
    <author>
      <name>David B. Hanna</name>
    </author>
    <author>
      <name>Qibin Qi</name>
    </author>
    <author>
      <name>Tao Wang</name>
    </author>
    <author>
      <name>Yanal Ghosheh</name>
    </author>
    <author>
      <name>Karin Mueller</name>
    </author>
    <author>
      <name>Kathryn Anastos</name>
    </author>
    <author>
      <name>Jason M. Lazar</name>
    </author>
    <author>
      <name>Wendy J. Mack</name>
    </author>
    <author>
      <name>Phyllis C. Tien</name>
    </author>
    <author>
      <name>Joan W. Berman</name>
    </author>
    <author>
      <name>Mardge H. Cohen</name>
    </author>
    <author>
      <name>Igho Ofotokun</name>
    </author>
    <author>
      <name>Stephen Gange</name>
    </author>
    <author>
      <name>Chenglong Liu</name>
    </author>
    <author>
      <name>Sonya L. Heath</name>
    </author>
    <author>
      <name>Russell P. Tracy</name>
    </author>
    <author>
      <name>Howard N. Hodis</name>
    </author>
    <author>
      <name>Alan L. Landay</name>
    </author>
    <author>
      <name>Klaus Ley</name>
    </author>
    <author>
      <name>Robert C. Kaplan</name>
    </author>
    <id>10.1371/journal.pone.0285926</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Juan Lin, Erik Ehinger, David B. Hanna, Qibin Qi, Tao Wang, Yanal Ghosheh, Karin Mueller, Kathryn Anastos, Jason M. Lazar, Wendy J. Mack, Phyllis C. Tien, Joan W. Berman, Mardge H. Cohen, Igho Ofotokun, Stephen Gange, Chenglong Liu, Sonya L. Heath, Russell P. Tracy, Howard N. Hodis, Alan L. Landay, Klaus Ley, Robert C. Kaplan&lt;/p&gt;

Persistent inflammation contributes to the development of cardiovascular disease (CVD) as an HIV-associated comorbidity. Innate immune cells such as monocytes are major drivers of inflammation in men and women with HIV. The study objectives are to examine the contribution of circulating non-classical monocytes (NCM, CD14&lt;sup&gt;dim&lt;/sup&gt;CD16&lt;sup&gt;+&lt;/sup&gt;) and intermediate monocytes (IM, CD14&lt;sup&gt;+&lt;/sup&gt;CD16&lt;sup&gt;+&lt;/sup&gt;) to the host response to long-term HIV infection and HIV-associated CVD. Women with and without chronic HIV infection (H) were studied. Subclinical CVD (C) was detected as plaques imaged by B-mode carotid artery ultrasound. The study included H-C-, H+C-, H-C+, and H+C+ participants (23 of each, matched on race/ethnicity, age and smoking status), selected from among enrollees in the Women’s Interagency HIV Study. We assessed transcriptomic features associated with HIV or CVD alone or comorbid HIV/CVD comparing to healthy (H-C-) participants in IM and NCM isolated from peripheral blood mononuclear cells. IM gene expression was little affected by HIV alone or CVD alone. In IM, coexisting HIV and CVD produced a measurable gene transcription signature, which was abolished by lipid-lowering treatment. In NCM, versus non-HIV controls, women with HIV had altered gene expression, irrespective of whether or not they had comorbid CVD. The largest set of differentially expressed genes was found in NCM among women with both HIV and CVD. Genes upregulated in association with HIV included several potential targets of drug therapies, including LAG3 (CD223). In conclusion, circulating monocytes from patients with well controlled HIV infection demonstrate an extensive gene expression signature which may be consistent with the ability of these cells to serve as potential viral reservoirs. Gene transcriptional changes in HIV patients were further magnified in the presence of subclinical CVD.</content>
  </entry>
  <entry>
    <title>Plasma proteome perturbation for CMV DNAemia in kidney transplantation</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285870" title="Plasma proteome perturbation for CMV DNAemia in kidney transplantation" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285870.PDF" title="(PDF) Plasma proteome perturbation for CMV DNAemia in kidney transplantation" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285870.XML" title="(XML) Plasma proteome perturbation for CMV DNAemia in kidney transplantation" />
    <author>
      <name>Tara K. Sigdel</name>
    </author>
    <author>
      <name>Patrick Boada</name>
    </author>
    <author>
      <name>Maggie Kerwin</name>
    </author>
    <author>
      <name>Priyanka Rashmi</name>
    </author>
    <author>
      <name>David Gjertson</name>
    </author>
    <author>
      <name>Maura Rossetti</name>
    </author>
    <author>
      <name>Swastika Sur</name>
    </author>
    <author>
      <name>Dane Munar</name>
    </author>
    <author>
      <name>James Cimino</name>
    </author>
    <author>
      <name>Richard Ahn</name>
    </author>
    <author>
      <name>Harry Pickering</name>
    </author>
    <author>
      <name>Subha Sen</name>
    </author>
    <author>
      <name>Rajesh Parmar</name>
    </author>
    <author>
      <name>Benoit Fatou</name>
    </author>
    <author>
      <name>Hanno Steen</name>
    </author>
    <author>
      <name>Joanna Schaenman</name>
    </author>
    <author>
      <name>Suphamai Bunnapradist</name>
    </author>
    <author>
      <name>Elaine F. Reed</name>
    </author>
    <author>
      <name>Minnie M. Sarwal</name>
    </author>
    <author>
      <name>CMV Systems Immunobiology Group</name>
    </author>
    <id>10.1371/journal.pone.0285870</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Tara K. Sigdel, Patrick Boada, Maggie Kerwin, Priyanka Rashmi, David Gjertson, Maura Rossetti, Swastika Sur, Dane Munar, James Cimino, Richard Ahn, Harry Pickering, Subha Sen, Rajesh Parmar, Benoit Fatou, Hanno Steen, Joanna Schaenman, Suphamai Bunnapradist, Elaine F. Reed, Minnie M. Sarwal, CMV Systems Immunobiology Group &lt;/p&gt;
Background &lt;p&gt;Cytomegalovirus (CMV) infection, either &lt;i&gt;de novo&lt;/i&gt; or as reactivation after allotransplantation and chronic immunosuppression, is recognized to cause detrimental alloimmune effects, inclusive of higher susceptibility to graft rejection and substantive impact on chronic graft injury and reduced transplant survival. To obtain further insights into the evolution and pathogenesis of CMV infection in an immunocompromised host we evaluated changes in the circulating host proteome serially, before and after transplantation, and during and after CMV DNA replication (DNAemia), as measured by quantitative polymerase chain reaction (QPCR).&lt;/p&gt; Methods &lt;p&gt;LC-MS-based proteomics was conducted on 168 serially banked plasma samples, from 62 propensity score-matched kidney transplant recipients. Patients were stratified by CMV replication status into 31 with CMV DNAemia and 31 without CMV DNAemia. Patients had blood samples drawn at protocol times of 3- and 12-months post-transplant. Additionally, blood samples were also drawn before and 1 week and 1 month after detection of CMV DNAemia. Plasma proteins were analyzed using an LCMS 8060 triple quadrupole mass spectrometer. Further, public transcriptomic data on time matched PBMCs samples from the same patients was utilized to evaluate integrative pathways. Data analysis was conducted using R and Limma.&lt;/p&gt; Results &lt;p&gt;Samples were segregated based on their proteomic profiles with respect to their CMV Dnaemia status. A subset of 17 plasma proteins was observed to predict the onset of CMV at 3 months post-transplant enriching platelet degranulation (FDR, 4.83E-06), acute inflammatory response (FDR, 0.0018), blood coagulation (FDR, 0.0018) pathways. An increase in many immune complex proteins were observed at CMV infection. Prior to DNAemia the plasma proteome showed changes in the anti-inflammatory adipokine vaspin (SERPINA12), copper binding protein ceruloplasmin (CP), complement activation (FDR = 0.03), and proteins enriched in the humoral (FDR = 0.01) and innate immune responses (FDR = 0.01).&lt;/p&gt; Conclusion &lt;p&gt;Plasma proteomic and transcriptional perturbations impacting humoral and innate immune pathways are observed during CMV infection and provide biomarkers for CMV disease prediction and resolution. Further studies to understand the clinical impact of these pathways can help in the formulation of different types and duration of anti-viral therapies for the management of CMV infection in the immunocompromised host.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Protocol for a scoping review study on the prevalence and public health consequences of non-medical use (NMU) of tramadol in Africa</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285809" title="Protocol for a scoping review study on the prevalence and public health consequences of non-medical use (NMU) of tramadol in Africa" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285809.PDF" title="(PDF) Protocol for a scoping review study on the prevalence and public health consequences of non-medical use (NMU) of tramadol in Africa" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285809.XML" title="(XML) Protocol for a scoping review study on the prevalence and public health consequences of non-medical use (NMU) of tramadol in Africa" />
    <author>
      <name>Saidou Sabi Boun</name>
    </author>
    <author>
      <name>Olumuyiwa Omonaiye</name>
    </author>
    <author>
      <name>Sanni Yaya</name>
    </author>
    <id>10.1371/journal.pone.0285809</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Saidou Sabi Boun, Olumuyiwa Omonaiye, Sanni Yaya&lt;/p&gt;
Background &lt;p&gt;Tramadol is one of the most prescribed painkillers in the world. It is a synthetic opioid that is an excellent alternative to morphine and its derivatives in African countries. It is an essential drug due to its low cost and constant availability. However, the health consequences of tramadol use due to illicit trafficking, like those caused by fentanyl and methadone in North America, are poorly documented. This scoping review aims to understand the nature and extent of the use and health consequences of the Non-Medical Use (NMU) of tramadol in Africa to guide future research.&lt;/p&gt; Methods &lt;p&gt;Due to the perceived lack of African literature on the subject, our search strategy is based on the simultaneous use of the keywords "tramadol" and Medical Subject Heading (MeSH), such as "Drug abuse," "illicit drugs," or "Prescription Drug Misuse," combined with the term "Africa" and Boolean operators (and, or not) to form our search equations. Two researchers will independently select studies from literature searched in several databases such as Medline, Embase, the Scopus database, Web of Science, the African Journals online database, and for grey literature Google Scholar without any time restriction. All research, in various formats, conducted in Africa, will be included in our study on the prevalence of use in different African population groups or on evidence of addiction, intoxication, seizures and mortality related to NMU of tramadol.&lt;/p&gt; Results &lt;p&gt;Through this study, we aim to map consumers and identify risk factors, health consequences, and prevalence of the NMU of tramadol in African countries.&lt;/p&gt; Discussion &lt;p&gt;We are conducting the first scoping review study to investigate the prevalence and consequences of NMU of tramadol in Africa. Upon completion, our findings will be published in a peer-reviewed journal and presented at relevant conferences and workshops. However, since health is not limited to the lack of disease, our study is likely incomplete without incorporating the studies of the social impact of NMU of tramadol.&lt;/p&gt; Systematic review registration &lt;p&gt;Open Science Framework: https://osf.io/ykt25/.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>A lower canal fill rate and unreestablished vertical femoral offset may increase the risk of the postoperative periprosthetic fractures after cementless bipolar hemiarthroplasty for femoral neck fractures in elderly patients</title>
    <link rel="alternate" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285789" title="A lower canal fill rate and unreestablished vertical femoral offset may increase the risk of the postoperative periprosthetic fractures after cementless bipolar hemiarthroplasty for femoral neck fractures in elderly patients" />
    <link rel="related" type="application/pdf" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285789.PDF" title="(PDF) A lower canal fill rate and unreestablished vertical femoral offset may increase the risk of the postoperative periprosthetic fractures after cementless bipolar hemiarthroplasty for femoral neck fractures in elderly patients" />
    <link rel="related" type="text/xml" href="https://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0285789.XML" title="(XML) A lower canal fill rate and unreestablished vertical femoral offset may increase the risk of the postoperative periprosthetic fractures after cementless bipolar hemiarthroplasty for femoral neck fractures in elderly patients" />
    <author>
      <name>Xiaoxiao Zhou</name>
    </author>
    <author>
      <name>Houlin Ji</name>
    </author>
    <author>
      <name>Jiajun Wu</name>
    </author>
    <author>
      <name>Haixiao Chen</name>
    </author>
    <author>
      <name>Yang Yang</name>
    </author>
    <id>10.1371/journal.pone.0285789</id>
    <updated>2023-05-19T14:00:00Z</updated>
    <published>2023-05-19T14:00:00Z</published>
    <content type="html">&lt;p&gt;by Xiaoxiao Zhou, Houlin Ji, Jiajun Wu, Haixiao Chen, Yang Yang&lt;/p&gt;
Background &lt;p&gt;Periprosthetic fractures (PPFs) is one of the major causes of failure of hip arthroplasty with cementless stem; however, studies on the incidence and risk factors of PPFs after cementless hemiarthroplasty for femoral neck fractures (FNFs) are lacking.&lt;/p&gt; Methods &lt;p&gt;This retrospective study included patients who underwent cementless bipolar hemiarthroplasty for displaced intracapsular FNFs. The demographic data were reviewed, Dorr classification was used to describe morphology of the femur, radiological parameters were measured including stem-shaft angle, canal fill ratio (CFR), canal flare index (CFI), morphologic cortical index (MCI), canal calcar ratio (CCR), and vertical and horizontal femoral offset.&lt;/p&gt; Results &lt;p&gt;The sample comprised 10 men and 46 women (affected hip: left, 38; right, 18). The mean patient age was 82.82±10.61 (range, 69–93) years, and the mean hemiarthroplasty to PPFs time was 26.28±14.04 (range, 6.54–47.77) months. Seven (12.28%) patients had PPFs. A significant relationship was found between the incidence of PPF and CFR (p = 0.012), patients had a significantly smaller femoral stem CFR (0.76%±0.11%) than controls (0.85%±0.09%). The PPFs group had a significant shorter and unreestablished vertical femoral offset (p = 0.048).&lt;/p&gt; Conclusions &lt;p&gt;A smaller femoral stem CFR associated with a potentially unacceptably high PPFs risk in uncemented hemiarthroplasty for displaced FNFs may result from mismatched prosthesis and bone dimensions in the elderly population, especially when accompanied by a poorly reestablished vertical femoral offset. With increasing evidence of the benefits of cemented fixation, a cemented stem for the treatment of displaced intracapsular FNFs is recommended for such a elderly frail population.&lt;/p&gt;</content>
  </entry>
</feed>


id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
url: https://itsfoss.com/feed
title: It's FOSS
group_id: 5ba66bdc-22cd-4924-9389-104d85c2247e
feed_type: MediaRss
description: Making You a Better Linux User
image_url: https://itsfoss.com/favicon.png
original_document:
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[It's FOSS]]></title><description><![CDATA[Making You a Better Linux User]]></description><link>https://itsfoss.com/</link><image><url>https://itsfoss.com/favicon.png</url><title>It&apos;s FOSS</title><link>https://itsfoss.com/</link></image><generator>Ghost 5.49</generator><lastBuildDate>Mon, 22 May 2023 17:02:20 GMT</lastBuildDate><atom:link href="https://itsfoss.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More]]></title><description><![CDATA[Introducing FOSSverse, concluding Rust Basics series and looking at the upcoming KDE Plasma 6 features.]]></description><link>https://itsfoss.com/newsletter/foss-weekly-23-20/</link><guid isPermaLink="false">6465a1e35859950507d48347</guid><category><![CDATA[Newsletter]]></category><dc:creator><![CDATA[Abhishek Prakash]]></dc:creator><pubDate>Thu, 18 May 2023 07:10:03 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/foss-weekly-23-20.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/foss-weekly-23-20.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><p>FOSSverse? What&apos;s that?</p><p>It&apos;s basically the idea of unifying all things It&apos;s FOSS with a single member account. When logged in to It&apos;s FOSS, you can automatically log in to the comment section with the same profile. That was the first part.</p><p>The same member account is now valid on the <a href="https://itsfoss.community/?ref=itsfoss.com">It&apos;s FOSS Community</a>. You don&apos;t have to manage a separate account for the Community anymore. Pro members also get &apos;Pro&apos; badge on their profile in the Community.</p><p>Still not part of the It&apos;s FOSS Community? That&apos;s the place where you can ask your questions and clear your doubts. <a href="https://itsfoss.community/?ref=itsfoss.com">Do join</a>.</p><p>In the last step towards FOSSverse, the same member account will also be valid on It&apos;s FOSS News. Pro member accounts are already synced between the portals.</p><p>Eventually, you will have the same identity across the FOSSverse (all It&apos;s FOSS web portals). I am super excited about it &#x1F929; and I welcome your feedback on this idea.</p><p><strong>&#x1F4AC; Let&apos;s see what you have in this edition of FOSS Weekly:</strong></p><ul><li>First look at Fedora-based risiOS Linux distro</li><li>Concluding the Rust series</li><li>Linux Mint update guide</li><li>And other Linux news, videos, puzzles and, of course, memes!</li></ul><hr><h2 id="%F0%9F%93%B0-linux-news">&#x1F4F0; Linux News</h2><ul><li>GNOME is <a href="https://news.itsfoss.com/gnome-terminal-console/?ref=itsfoss.com">considering to bring back the old Terminal application</a> to replace the new Console.</li><li>At the same time, GNOME is all <a href="https://news.itsfoss.com/loupe-image-viewer/?ref=itsfoss.com">set to replace the default image viewer</a> with the new Loupe app.</li><li><a href="https://news.itsfoss.com/ubuntu-riscv-visionfive-2/?ref=itsfoss.com">Ubuntu is now available on StarFive VisionFive 2</a>, a high-performance RISC-V single-board computer.</li><li>Ubuntu 23.10 is bringing the <a href="https://news.itsfoss.com/ubuntu-23-10-ppa/?ref=itsfoss.com">much-required change in the PPA mechanism</a>.</li></ul><p>The upcoming KDE Plasma 6 has some interesting features in the bag.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/kde-plasma-6-dev/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">KDE Plasma 6 Plans Revealed: Includes 5 New Exciting Default Settings</div><div class="kg-bookmark-description">KDE Plasma 6 sounds impressive. Learn what&#x2019;s in store for you.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/kde-plasma-6-defaults.jpg" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><hr><h2 id="%F0%9F%A7%A0-what-we%E2%80%99re-thinking-about">&#x1F9E0; What we&#x2019;re thinking about</h2><p>Modern problems require modern solutions (not in the meme sense).</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.phoronix.com/news/Asahi-Linux-Stop-X.Org?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Asahi Linux To Users: Please Stop Using X.Org</div><div class="kg-bookmark-description">Asahi Linux lead developer Hector Martin issued a lengthy post encouraging users of this Apple Silicon focused Linux distribution to stop using X.Org as Wayland is the future.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.phoronix.com/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">Phoronix</span><span class="kg-bookmark-publisher">Michael Larabel</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.phoronix.net/image.php?id=apple-m2-december&amp;image=m2_december_1" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><hr><h2 id="%F0%9F%9B%8D%EF%B8%8F-interesting-offers-for-linux-users">&#x1F6CD;&#xFE0F; Interesting offers for Linux users</h2><p>Linux Foundation is running a limited-time offer which should be helpful for people looking to make a career in Linux and DevOps. Check the <a href="https://shareasale.com/r.cfm?b=2339200&amp;u=747593&amp;m=59485&amp;urllink=&amp;afftrack=&amp;ref=itsfoss.com">details here</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://shareasale.com/r.cfm?b=2339200&amp;u=747593&amp;m=59485&amp;urllink=&amp;afftrack=&amp;ref=itsfoss.com"><img src="https://itsfoss.com/content/images/2023/05/Training_Promo-Graphics_May23_1200x62_01.png" class="kg-image" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More" loading="lazy" width="1200" height="628" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Training_Promo-Graphics_May23_1200x62_01.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Training_Promo-Graphics_May23_1200x62_01.png 1000w, https://itsfoss.com/content/images/2023/05/Training_Promo-Graphics_May23_1200x62_01.png 1200w" sizes="(min-width: 720px) 720px"></a><figcaption>Affiliate Link</figcaption></figure><p>The folks over at No Starch Press have yet another useful bundle, this time for learning Python programming. Be sure to check it out; a portion of the proceeds go to the <a href="https://www.python.org/psf-landing/?ref=itsfoss.com">Python Software Foundation</a>.</p><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://www.humblebundle.com/books/python-no-starch-books?partner=itsfoss&amp;ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Humble Tech Book Bundle: Python by No Starch</div><div class="kg-bookmark-description">We&#x2019;ve teamed up with No Starch Press for our newest bundle. Get books like Python for Kids and Beyond the Basic Stuff with Python. Plus, pay what you want &amp; support charity!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.humblebundle.com/static/hashed/03df0490a53d595fd930f9fff52038366d60a05d.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">Humble Bundle</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hb.imgix.net/75e1c3e16619e8c9f5ef6ddb93f3bbc0c3b098e1.png?auto=compress,format&amp;h=630&amp;w=1200&amp;s=d4c213287d9081c0d63c17f1eef0f4a8" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a><figcaption>Last 4 days to get it</figcaption></figure><hr><h2 id="%F0%9F%A7%AE-tutorials">&#x1F9EE; Tutorials</h2><p>The Rust Basics Series comes to an end. The last chapter consists of a relatively complex program that covers most of the concepts you learned in the earlier chapters of the series.</p><p>A new Rust series for intermediate users will be published after a pause. Stay Rusty.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/milestone-rust-program/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Rust Basics Series #8: Write the Milestone Rust Program</div><div class="kg-bookmark-description">In the final chapter of the Rust Basics Series, recall the concepts you learned and write a somewhat complex Rust program.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Pratham Patel</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/sample-program-in-rust.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><p>While the Updater tool is straightforward, it may still seem overwhelming to absolutely new Linux Mint users. And hence this guide.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/linux-mint-update/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Beginner&#x2019;s Guide to System Updates in Linux Mint</div><div class="kg-bookmark-description">New to Linux Mint? It has an excellent system updater tool. Learn about this tool and the best practices you should follow.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sagar Sharma</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/system-updates-in-linux-mint.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><p>On a distrohopping spree? Be good and avoid these &apos;sins&apos;.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/distrohopping-issues/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">7 Deadly Sins of Linux Distrohopping</div><div class="kg-bookmark-description">What are you doing wrong with distro-hopping? Can you do it better? Yes, you can. Here, we tell you how.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/7-deadly-sins-of-distrohopping.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><h2 id="%F0%9F%93%B9-what-we-are-watching">&#x1F4F9; What we are watching</h2><p>Or more like what we are showing because we have a new video on our YouTube channel after a long time :)</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/DpFU4MRBCm4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Rhino Linux review"></iframe></figure><hr><h2 id="%E2%9C%A8-project-highlights">&#x2728; Project highlights</h2><p>New week, new Linux distro. It&apos;s not that I try to introduce you to a new distro each week. It just happens involuntarily. Trust me &#x1F609;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/risi-os/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">risiOS: An Easy-to-Use Fedora-based Linux Distribution</div><div class="kg-bookmark-description">Are you a fan of Fedora? You might like risiOS for its tweaks and out-of-the-box utilities.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/risiOS-first-look.jpg" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><p>Just a reminder that a new reminder app is in works &#x1F638;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/reminders/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Reminders: A Nifty Open-Source Linux App To Help You Get Things Done</div><div class="kg-bookmark-description">You&#x2019;re doing the best you can, but reminders can still help!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/reminders-first-look.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><hr><h2 id="%F0%9F%A4%A3-meme-of-the-week">&#x1F923; Meme of the week</h2><p>The meme complements the Distrohopping article :)</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/memes-2.png" class="kg-image" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More" loading="lazy" width="1080" height="1080" srcset="https://itsfoss.com/content/images/size/w600/2023/05/memes-2.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/memes-2.png 1000w, https://itsfoss.com/content/images/2023/05/memes-2.png 1080w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%97%93%EF%B8%8F-tech-trivia">&#x1F5D3;&#xFE0F; Tech Trivia</h2><p>On May 13, 1980, Digital Equipment Corporation, Intel, and Xerox jointly announced the Ethernet network specification. Ethernet is still the predominant networking standard.</p><hr><h2 id="%F0%9F%A7%A9-puzzle-for-pro-members-only">&#x1F9E9; Puzzle (for Pro members only)</h2><p>A new crossword that challenges you to identify computing legends.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/puzzle/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Puzzle of The Week</div><div class="kg-bookmark-description">Exercise those &#x2018;little gray cells&#x2019; of yours and solve this puzzle.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/puzzle-of-the-week.png" alt="FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More"></div></a></figure><hr><h2 id="%E2%9D%A4%EF%B8%8F-enjoying-foss-weekly">&#x2764;&#xFE0F; Enjoying FOSS Weekly?</h2><p><strong>Forward it to Linux-using friends</strong> and encourage them to subscribe (hint: <a href="https://itsfoss.com/signup/">it&apos;s here</a>).</p><p>Become a Pro member and show your support &#x1F64F;</p><p>Share the newsletter and the articles in Linux communities on Reddit and other platforms.</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Enjoy FOSSverse :)</p>]]></content:encoded></item><item><title><![CDATA[Beginner's Guide to System Updates in Linux Mint]]></title><description><![CDATA[New to Linux Mint? It has an excellent system updater tool. Learn about this tool and the best practices you should follow.]]></description><link>https://itsfoss.com/linux-mint-update/</link><guid isPermaLink="false">645dbde969df0b089126721d</guid><category><![CDATA[Linux Mint]]></category><dc:creator><![CDATA[Sagar Sharma]]></dc:creator><pubDate>Tue, 16 May 2023 15:36:20 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/system-updates-in-linux-mint.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/system-updates-in-linux-mint.png" alt="Beginner&apos;s Guide to System Updates in Linux Mint"><p>Keeping your system updated is essential for any operating system. Linux Mint is no different.</p><p>Linux Mint has a robust update system. It provides timely security patches for the kernel and other software packages. That&apos;s not it. You also get updates on the applications you installed using the Software Manager tool.</p><p>Basically, apart from security patches, your system receives new features, bug fixes, improved hardware support, performance enhancement, and a lot more.</p><p>While the Updater tool is straightforward, it may still seem overwhelming if you are new to Linux Mint. </p><p>This is why we at It&apos;s FOSS came up with this beginner&apos;s guide idea. It will give you some ideas about using this tool and the best practices you should follow.</p><p>So in this guide, I will explain how you can perform the system updates in Linux Mint and will walk you through the following:</p><ul><li>Create backups using Timeshift <strong>(optional yet recommended)</strong></li><li>Prioritizing and installing updates (know the different types of updates)</li><li>Restore from the Timeshift backup (if the update messed up the system)</li><li>Adding the fastest mirrors<strong> (</strong>optional but good to know<strong>)</strong></li></ul><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">While you can use the apt command, the focus of this tutorial is on the GUI tool.</div></div><h2 id="linux-mint-update-manager">Linux Mint Update Manager</h2><p>When there are updates available for your system, you&apos;ll notice a &apos;secure&apos; symbol with red dot on it in the bottom right corner of the screen (notification area).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/linux-mint-update-notification.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="658" height="246" srcset="https://itsfoss.com/content/images/size/w600/2023/05/linux-mint-update-notification.png 600w, https://itsfoss.com/content/images/2023/05/linux-mint-update-notification.png 658w"><figcaption>Linux Mint system update notification</figcaption></figure><p>If you click on it, you&apos;ll see the available system updates. By default, all updates are selected to be installed. You can deselect some (if you know what you are doing).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/linux-mint-update-manager.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="812" height="610" srcset="https://itsfoss.com/content/images/size/w600/2023/05/linux-mint-update-manager.png 600w, https://itsfoss.com/content/images/2023/05/linux-mint-update-manager.png 812w" sizes="(min-width: 720px) 720px"><figcaption>Linux Mint Update Manager</figcaption></figure><p>Before you learn more about the types of updates and their installation, I would like to talk about backups.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">This article is about updating the Linux Mint system. It is not about <a href="https://itsfoss.com/upgrade-linux-mint-version/">upgrading Mint to a newer version</a>. That is a different topic.</div></div><h2 id="create-timeshift-backup-optional-yet-recommended">Create Timeshift backup (optional yet recommended)</h2><p>Linux Mint is a stable distro as it is based on the long-term support version of Ubuntu. Updates you install will rarely create problems.</p><p>Rarely but possible. Say you forced power off the system while it was installing package updates. It is possible that it may mess up the perfectly working system. </p><p>Precaution is better than cure. So I recommend making regular backups. If nothing else, make a backup before applying updates.</p><p>Linux Mint comes preinstalled with <a href="https://itsfoss.com/backup-restore-linux-timeshift/">Timeshift backup application</a>. It is a third-party tool but is highly recommended by Mint developers. </p><p>To create a backup, start the Timeshift from the system menu:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/open-timeshift-in-Linux-Mint.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="847" height="591" srcset="https://itsfoss.com/content/images/size/w600/2023/05/open-timeshift-in-Linux-Mint.png 600w, https://itsfoss.com/content/images/2023/05/open-timeshift-in-Linux-Mint.png 847w" sizes="(min-width: 720px) 720px"></figure><p>If you haven&apos;t used it before, it will ask you several questions before allowing you to create a backup.</p><p>First, it will ask you which type of backup you want to create. There are two options: RSYNC and BTRFS.</p><p>RSYNC is based upon hard links and can work on any filesystem, whereas BTRFS is only used for the <a href="https://itsfoss.com/btrfs/">BTRFS filesystem</a>.</p><p>If you don&apos;t know what to choose, <strong>select RSYNC</strong> as it would work just fine:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Choose-type-of-snapshot-in-timeshift.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="1111" height="674" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Choose-type-of-snapshot-in-timeshift.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Choose-type-of-snapshot-in-timeshift.png 1000w, https://itsfoss.com/content/images/2023/05/Choose-type-of-snapshot-in-timeshift.png 1111w" sizes="(min-width: 720px) 720px"></figure><p>Next, it will ask you where you want to store the snapshots. </p><p>If you have multiple drives, it would show multiple options but for most users, there will be a single option. In my case, it was vda3:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/select-location-to-store-snapshots.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="1111" height="674" srcset="https://itsfoss.com/content/images/size/w600/2023/05/select-location-to-store-snapshots.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/select-location-to-store-snapshots.png 1000w, https://itsfoss.com/content/images/2023/05/select-location-to-store-snapshots.png 1111w" sizes="(min-width: 720px) 720px"></figure><p>Now, it will ask you to choose the directories that need backing up. </p><p>By default, it will exclude all the files inside the home directory and I recommend you do the same.</p><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-emoji">&#x1F6A7;</div><div class="kg-callout-text">Timeshift is primarily used for backing up system settings. Using it to backup personal files in home directory will take up a huge amount of disk space and is impractical. Use DejaDup for personal file backups on an external disk.</div></div><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/select-directories-that-needs-to-be-included-in-the-backup-1.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="876" height="662" srcset="https://itsfoss.com/content/images/size/w600/2023/05/select-directories-that-needs-to-be-included-in-the-backup-1.png 600w, https://itsfoss.com/content/images/2023/05/select-directories-that-needs-to-be-included-in-the-backup-1.png 876w" sizes="(min-width: 720px) 720px"><figcaption>Exclude home directories</figcaption></figure><p>Once done, it will show you a page informing the setup is complete.</p><p>Now, you can create a backup by clicking on the <code>Create</code> button:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/click-on-create-snapshot.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="968" height="542" srcset="https://itsfoss.com/content/images/size/w600/2023/05/click-on-create-snapshot.png 600w, https://itsfoss.com/content/images/2023/05/click-on-create-snapshot.png 968w" sizes="(min-width: 720px) 720px"></figure><p>It may take a while, based on your choices during the setup.</p><p>Once done, the snapshot will reflect in the Timeshift:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Listing-created-backup-in-Timeshift.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="968" height="542" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Listing-created-backup-in-Timeshift.png 600w, https://itsfoss.com/content/images/2023/05/Listing-created-backup-in-Timeshift.png 968w" sizes="(min-width: 720px) 720px"></figure><p>Great! So now you have created the backup. Let&apos;s go back to the system updater.</p><h2 id="installing-updates">Installing updates </h2><p>First, open the update manager from the system menu:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/open-update-manager-in-Linux-Mint.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="847" height="593" srcset="https://itsfoss.com/content/images/size/w600/2023/05/open-update-manager-in-Linux-Mint.png 600w, https://itsfoss.com/content/images/2023/05/open-update-manager-in-Linux-Mint.png 847w" sizes="(min-width: 720px) 720px"></figure><p>Here, you will find a list of packages that need to be updated and all of them will be selected by default (I would recommend you go with the same).</p><p>But if you want, you can uncheck software updates or kernel updates if you want to stick to that specific version only.</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/List-outdated-packages-in-Linux-Mint.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="937" height="612" srcset="https://itsfoss.com/content/images/size/w600/2023/05/List-outdated-packages-in-Linux-Mint.png 600w, https://itsfoss.com/content/images/2023/05/List-outdated-packages-in-Linux-Mint.png 937w" sizes="(min-width: 720px) 720px"></figure><p>To make things simple, in Linux Mint, the updates are divided into three categories:</p><ul><li>Security patches <strong>(Highest priority and indicated by</strong> <code><strong>&#x1F6E1;</strong></code><strong> ): </strong>You are supposed to install the security patches immediately as it is supposed to save you from your system&apos;s current vulnerability.</li><li>Kernel updates <strong>(Medium priority and indicated by </strong><code>&#x1F5F2;</code><strong>):</strong> New kernel brings hardware support for new hardware, bug fixes for your current kernel, and may also have performance improvement.</li><li>Software updates <strong>(Lowest priority and indicated by </strong><code>&#x2B06;</code><strong>): </strong>These updates are meant to roll out new features and bug fixes in your software.</li></ul><p><strong>Again, I will advise you to go with the defaults!</strong></p><p>Once you are done selecting, click on the <code>Install Updates</code> button, enter the password and it will start the installation of new packages:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Update-Linux-Mint-using-Update-Manager.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="1458" height="814" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Update-Linux-Mint-using-Update-Manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Update-Linux-Mint-using-Update-Manager.png 1000w, https://itsfoss.com/content/images/2023/05/Update-Linux-Mint-using-Update-Manager.png 1458w" sizes="(min-width: 720px) 720px"></figure><p>That&apos;s it! The system is updated!</p><h2 id="rollback-if-the-system-crashed-after-the-update-backup-required">Rollback if the system crashed after the update (Backup required)</h2><p>If you can access the GUI, you can easily roll back to the previous state using the Timeshift backup you had created earlier.</p><p>First, open the Timeshift from the system menu and it will show the created snapshots backup you took in the past:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/List-available-snapshots-in-timeshift.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="980" height="604" srcset="https://itsfoss.com/content/images/size/w600/2023/05/List-available-snapshots-in-timeshift.png 600w, https://itsfoss.com/content/images/2023/05/List-available-snapshots-in-timeshift.png 980w" sizes="(min-width: 720px) 720px"></figure><p>To restore to the previous state, select the snapshot and click on the <code>Restore</code> button:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/select-and-restore-the-snapshot.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="980" height="617" srcset="https://itsfoss.com/content/images/size/w600/2023/05/select-and-restore-the-snapshot.png 600w, https://itsfoss.com/content/images/2023/05/select-and-restore-the-snapshot.png 980w" sizes="(min-width: 720px) 720px"></figure><p>Next, it will ask you to select the targeted devices. I would recommend going with the selected options:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/select-target-device-to-restore-to.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="903" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/select-target-device-to-restore-to.png 600w, https://itsfoss.com/content/images/2023/05/select-target-device-to-restore-to.png 903w" sizes="(min-width: 720px) 720px"></figure><p>Click on the next button and it will start the restoration process!</p><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If your system does not boot, you can use a live Linux Mint USB, boot from it and install Timeshift in the live environment. Run Timeshift and it should detect the Timeshift backups present on the hard disk. You can restore it from here.</div></div><h2 id="add-the-fastest-mirrors-to-speed-up-the-download-optional">Add the fastest mirrors to speed up the download (optional)</h2><p>Selecting the fastest mirror is nothing but choosing the closest server to you, which will eventually reduce the latency and get you a faster experience.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">That&apos;s how it should work in theory. But sometimes, sticking to the main server is more reliable because the closest server may not always perform the best continuously. This is why this is an optional step.</div></div><p>To add the fastest mirror, first, open the software sources from the system menu and enter the password when asked:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Open-software-sources-in-Linux-Mint-1.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="1329" height="798" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Open-software-sources-in-Linux-Mint-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Open-software-sources-in-Linux-Mint-1.png 1000w, https://itsfoss.com/content/images/2023/05/Open-software-sources-in-Linux-Mint-1.png 1329w" sizes="(min-width: 720px) 720px"></figure><p>Once you do that, you&apos;d have to do the following:</p><ol><li>Select the first mirror (labeled as Main)</li><li>Wait for some seconds and choose the fastest mirror</li><li>Click on apply </li><li>Now, choose the second mirror (labeled as Base)</li><li>Choose the fastest mirror and click on the apply button</li></ol><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Select-fastest-mirrors-to-download-packages-faster-in-Linux-Mint.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="1739" height="1155" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Select-fastest-mirrors-to-download-packages-faster-in-Linux-Mint.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Select-fastest-mirrors-to-download-packages-faster-in-Linux-Mint.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/05/Select-fastest-mirrors-to-download-packages-faster-in-Linux-Mint.png 1600w, https://itsfoss.com/content/images/2023/05/Select-fastest-mirrors-to-download-packages-faster-in-Linux-Mint.png 1739w" sizes="(min-width: 720px) 720px"></figure><p>Once done, it will show the message saying, &quot;Your configuration changed, click OK to update your APT cache.&quot; </p><p>Click on the OK button and it will start updating the cache and will activate the fastest mirrors you chose recently:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Enable-the-fastest-mirrors-for-Linux-Mint.png" class="kg-image" alt="Beginner&apos;s Guide to System Updates in Linux Mint" loading="lazy" width="822" height="567" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Enable-the-fastest-mirrors-for-Linux-Mint.png 600w, https://itsfoss.com/content/images/2023/05/Enable-the-fastest-mirrors-for-Linux-Mint.png 822w" sizes="(min-width: 720px) 720px"></figure><p>That&apos;s it! </p><h2 id="update-everything-at-once-for-intermediate-to-advanced-users">Update everything at once (for intermediate to advanced users)</h2><p>The Update Manager works on the deb packages through the apt command line utility.</p><p>But Linux packages are also fragmented. There are Snap, Flatpaks and AppImages. Using multiple package managers means updating each type of package manually.</p><p>This is where you can use a terminal utility called Topgrade which will update everything at once. Sounds interesting? Here&apos;s the detailed guide:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/topgrade/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Upgrade Various Kinds of Packages in Linux at Once With Topgrade</div><div class="kg-bookmark-description">Here&#x2019;s how you can upgrade various packages in Linux at once, using a nifty tool i.e topgrade.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="Beginner&apos;s Guide to System Updates in Linux Mint"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sagar Sharma</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/09/topgrade-cli-tool-ubuntu.png" alt="Beginner&apos;s Guide to System Updates in Linux Mint"></div></a></figure><p>Now, you should have a good idea about the system update process in Linux Mint.</p><p><em>&#x1F5E8; Please let me know if you learned something new in this tutorial. Also, if I missed something you think I should have mentioned, please mention it in the comments.</em></p>]]></content:encoded></item><item><title><![CDATA[Rust Basics Series #8: Write the Milestone Rust Program]]></title><description><![CDATA[In the final chapter of the Rust Basics Series, recall the concepts you learned and write a somewhat complex Rust program.]]></description><link>https://itsfoss.com/milestone-rust-program/</link><guid isPermaLink="false">63f61b626f09afb69b01b77f</guid><category><![CDATA[Rust]]></category><dc:creator><![CDATA[Pratham Patel]]></dc:creator><pubDate>Mon, 15 May 2023 05:27:52 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/sample-program-in-rust.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/sample-program-in-rust.png" alt="Rust Basics Series #8: Write the Milestone Rust Program"><p>So long, we have covered a handful of fundamental topics about programming in Rust. Some of these topics are <a href="https://itsfoss.com/rust-variables">variables, mutability, constants</a>, <a href="https://itsfoss.com/rust-data-types-01">data types</a>, <a href="https://itsfoss.com/rust-functions">functions</a>, <a href="https://itsfoss.com/rust-conditional-statements">if-else statements</a> and <a href="https://itsfoss.com/rust-loops">loops</a>.</p><p>In the final chapter of the Rust Basics series, let us now write a program in Rust that uses these topics so their real-world use can be better understood. Let&apos;s work on a <em>relatively simple</em> program to order fruits from a fruit mart.</p><h2 id="the-basic-structure-of-our-program">The basic structure of our program</h2><p>Let us first start by greeting the user and informing them about how to interact with the program.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    println!(&quot;Welcome to the fruit mart!&quot;);
    println!(&quot;Please select a fruit to buy.\n&quot;);
    
    println!(&quot;\nAvailable fruits to buy: Apple, Banana, Orange, Mango, Grapes&quot;);
    println!(&quot;Once you are done purchasing, type in &apos;quit&apos; or &apos;q&apos;.\n&quot;);
}
</code></pre></section><!--kg-card-end: html--><h2 id="getting-user-input">Getting user input</h2><p>The above code is very simple. At the moment, you do not know what to do next because you do not know what the user wants to do next. </p><p>So let&apos;s add code that accepts the user input and stores it somewhere to parse it later, and take the appropriate action based on the user input.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>use std::io;

fn main() {
    println!(&quot;Welcome to the fruit mart!&quot;);
    println!(&quot;Plase select a fruit to buy.\n&quot;);
    
    println!(&quot;Available fruits to buy: Apple, Banana, Orange, Mango, Grapes&quot;);
    println!(&quot;Once you are done purchasing, type in &apos;quit&apos; or &apos;q&apos;.\n&quot;);
    
    // get user input
    let mut user_input = String::new();
    io::stdin()
        .read_line(&amp;mut user_input)
        .expect(&quot;Unable to read user input.&quot;);
}</code></pre></section><!--kg-card-end: html--><p>There are three new elements that I need to tell you about. So let&apos;s take a shallow dive into each of these new elements.</p><h3 id="1-understanding-the-use-keyword">1. Understanding the &apos;use&apos; keyword</h3><p>On the first line of this program, you might have noticed the use (haha!) of a new keyword called <code>use</code>. The <code>use</code> keyword in Rust is similar to the <code>#include</code> directive in C/C++ and the <code>import</code> keyword in Python. Using the <code>use</code> keyword, we &quot;import&quot; the <code>io</code> (input output) module from the Rust standard library <code>std</code>.</p><p>You might be wondering why importing the <em>io</em> module was necessary when you could use the <code>println</code> macro to <em>output</em> something to STDOUT. Rust&apos;s standard library has a module called <code>prelude</code> that gets automatically included. The prelude module contains all the commonly used functions that a Rust programmer might need to use, like the <code>println</code> macro. (You can read more about <code>std::prelude</code> module <a href="https://doc.rust-lang.org/std/prelude/index.html?ref=itsfoss.com">here</a>.)</p><p>The <code>io</code> module from the Rust standard library <code>std</code> is necessary to accept user input. Hence, a <code>use</code> statement was added to the 1<sup>st</sup> line of this program.</p><h3 id="2-understanding-the-string-type-in-rust">2. Understanding the String type in Rust</h3><p>On line 11, I create a new mutable variable called <code>user_input</code> that, as its name suggests, will be used to store the user input down the road. But on the same line, you might have noticed something new (haha, again!).</p><p>Instead of declaring an empty string using double quotes with nothing between them (<code>&quot;&quot;</code>), I used the <code>String::new()</code> function to create a new, empty string.</p><p>The difference between using <code>&quot;&quot;</code> and <code>String::new()</code> is something that you will learn later in the Rust series. For now, know that, with the use of the <code>String::new()</code> function, you can create a String that is <strong><em>mutable</em></strong> and lives on the <strong><em>heap</em></strong>.</p><p>If I had created a string with <code>&quot;&quot;</code>, I would get something called a &quot;String slice&quot;. The String slice&apos;s contents are on the heap too, but the string itself is <strong>immutable</strong>. So, even if the variable itself is mutable, the actual data stored as a string is immutable and needs to be <em>overwritten</em> instead of modification.</p><h3 id="3-accepting-the-user-input">3. Accepting the user input</h3><p>On line 12, I call the <code>stdin()</code> function that is part of <code>std::io</code>. If I had not included the <code>std::io</code> module in the beginning of this program, this line would be <code>std::io::stdin()</code> instead of <code>io::stdin()</code>.</p><p>The <code>stdin()</code> function returns an input handle of the terminal. The <code>read_line()</code> function grabs onto that input handle and, as its name suggests, reads a line of input. This function takes in a reference to a mutable string. So, I pass in the <code>user_input</code> variable by preceding it with <code>&amp;mut</code>, making it a mutable reference.</p><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">The <code>read_line()</code> function has a <em>quirk</em>. This function stops reading the input <strong><em>after</em></strong> the user presses the Enter/Return key. Therefore, this function also records that newline character (<code>\n</code>) and a trailing newline is stored in the mutable string variable that you passed in.<br><br>So please, either account for this trailing newline when dealing with it or remove it.</div></div><h2 id="a-primer-on-error-handling-in-rust">A primer on error handling in Rust</h2><p>Finally, there is an <code>expect()</code> function at the end of this chain. Let&apos;s divert a bit to understand why this function is called.</p><p>The <code>read_line()</code> function returns an Enum called <code>Result</code>. I will get into Enums in Rust later on but know that Enums are very powerful in Rust. This <code>Result</code> Enum returns a value that informs the programmer if an error occurred when the user input was being read.</p><p>The <code>expect()</code> function takes this <code>Result</code> Enum and checks if the result was okay or not. If no error occurs, nothing happens. But if an error did occur, the message that I passed in (<code>&quot;Unable to read user input.&quot;</code>) will be printed to STDERR and <em>the program will exit</em>.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text"><strong>All the new concepts that I have briefly touched on will be covered in a new Rust series later.</strong></div></div><p>Now that you hopefully understand these newer concepts, let&apos;s add more code to increase the functionality.</p><h2 id="validating-user-input">Validating user input</h2><p>I surely accepted the user&apos;s input but I have not validated it. In the current context, validation means that the user inputs some &quot;command&quot; that <em>we expect to handle</em>. At the moment, the commands are of two &quot;categories&quot;.</p><p>The first category of the command that the user can input is the name of fruit that the user wishes to buy. The second command conveys that the user wants to quit the program.</p><p>So our task now is to make sure that the input from the user does not diverge from the <em>acceptable commands</em>.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>use std::io;

fn main() {
    println!(&quot;Welcome to the fruit mart!&quot;);
    println!(&quot;Plase select a fruit to buy.\n&quot;);
    
    println!(&quot;Available fruits to buy: Apple, Banana, Orange, Mango, Grapes&quot;);
    println!(&quot;Once you are done purchasing, type in &apos;quit&apos; or &apos;q&apos;.\n&quot;);
    
    // get user input
    let mut user_input = String::new();
    io::stdin()
        .read_line(&amp;mut user_input)
        .expect(&quot;Unable to read user input.&quot;);
        
    // validate user input
    let valid_inputs = [&quot;apple&quot;, &quot;banana&quot;, &quot;orange&quot;, &quot;mango&quot;, &quot;grapes&quot;, &quot;quit&quot;, &quot;q&quot;];
    user_input = user_input.trim().to_lowercase();
    let mut input_error = true;
    for input in valid_inputs {
        if input == user_input {
            input_error = false;
            break;
        }
    }
}</code></pre></section><!--kg-card-end: html--><p>To make validation easier, I created an array of string slices called <code>valid_inputs</code> (on line 17). This array contains the names of all the fruits that are available for purchase, along with the string slices <code>q</code> and <code>quit</code> to let the user convey if they wish to quit.</p><p>The user may not know how we expect the input to be. The user may type &quot;Apple&quot; or &quot;apple&quot; or &quot;APPLE&quot; to tell that they intend to purchase Apples. It is our job to handle this correctly. </p><p>On line 18, I trim the trailing newline from the <code>user_input</code> string by calling the <code>trim()</code> function on it. And to handle the previous problem, I convert all the characters to lowercase with the <code>to_lowercase()</code> function so that &quot;Apple&quot;, &quot;apple&quot; and &quot;APPLE&quot; all end up as &quot;apple&quot;.</p><p>Now on line 19, I create a mutable boolean variable called <code>input_error</code> with the initial value of <code>true</code>. Later on line 20, I create a <code>for</code> loop that iterates over all the elements (string slices) of the <code>valid_inputs</code> array and stores the iterated pattern inside the <code>input</code> variable.</p><p>Inside the loop, I check if the user input is equal to one of the valid strings, and if it is, I set the value of <code>input_error</code> boolean to <code>false</code> and break out of the for loop.</p><h2 id="dealing-with-invalid-input">Dealing with invalid input</h2><p>Now is time to deal with an invalid input. This can be done by moving some of the code inside an infinite loop and <em>continuing</em> said infinite loop if the user gives an invalid input.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>use std::io;

fn main() {
    println!(&quot;Welcome to the fruit mart!&quot;);
    println!(&quot;Plase select a fruit to buy.\n&quot;);
    
    let valid_inputs = [&quot;apple&quot;, &quot;banana&quot;, &quot;orange&quot;, &quot;mango&quot;, &quot;grapes&quot;, &quot;quit&quot;, &quot;q&quot;];
    
    &apos;mart: loop {
        let mut user_input = String::new();

        println!(&quot;\nAvailable fruits to buy: Apple, Banana, Orange, Mango, Grapes&quot;);
        println!(&quot;Once you are done purchasing, type in &apos;quit&apos; or &apos;q&apos;.\n&quot;);

        // get user input
        io::stdin()
            .read_line(&amp;mut user_input)
            .expect(&quot;Unable to read user input.&quot;);
        user_input = user_input.trim().to_lowercase();

        // validate user input
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // handle invalid input
        if input_error {
            println!(&quot;ERROR: please enter a valid input&quot;);
            continue &apos;mart;
        }
    }
}</code></pre></section><!--kg-card-end: html--><p>Here, I moved some of the code inside the loop and re-structured the code a bit to better deal with this introduction of the loop. Inside the loop, on line 31, I <code>continue</code> the <code>mart</code> loop if the user entered an invalid string.</p><h2 id="reacting-to-users-input">Reacting to user&apos;s input</h2><p>Now that everything else is handled, time to actually write code about purchasing fruits from the fruit market and quit when the user wishes.</p><p>Since you also know which fruit the user chose, let&apos;s ask how much they intend to purchase and inform them about the format of entering the quantity.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>use std::io;

fn main() {
    println!(&quot;Welcome to the fruit mart!&quot;);
    println!(&quot;Plase select a fruit to buy.\n&quot;);
    
    let valid_inputs = [&quot;apple&quot;, &quot;banana&quot;, &quot;orange&quot;, &quot;mango&quot;, &quot;grapes&quot;, &quot;quit&quot;, &quot;q&quot;];
    
    &apos;mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

        println!(&quot;\nAvailable fruits to buy: Apple, Banana, Orange, Mango, Grapes&quot;);
        println!(&quot;Once you are done purchasing, type in &apos;quit&apos; or &apos;q&apos;.\n&quot;);

        // get user input
        io::stdin()
            .read_line(&amp;mut user_input)
            .expect(&quot;Unable to read user input.&quot;);
        user_input = user_input.trim().to_lowercase();

        // validate user input
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // handle invalid input
        if input_error {
            println!(&quot;ERROR: please enter a valid input&quot;);
            continue &apos;mart;
        }
        
        // quit if user wants to
        if user_input == &quot;q&quot; || user_input == &quot;quit&quot; {
            break &apos;mart;
        }

        // get quantity
        println!(
            &quot;\nYou choose to buy \&quot;{}\&quot;. Please enter the quantity in Kilograms.
(Quantity of 1Kg 500g should be entered as &apos;1.5&apos;.)&quot;,
            user_input
        );
        io::stdin()
            .read_line(&amp;mut quantity)
            .expect(&quot;Unable to read user input.&quot;);
    }
}</code></pre></section><!--kg-card-end: html--><p>On line 11, I declare another mutable variable with an empty string and on line 48, I accept input from the user, but this time the quantity of said fruit that the user intends to buy.</p><h3 id="parsing-the-quantity">Parsing the quantity</h3><p>I just added code that takes in quantity in a known format, but that data is stored as a string. I need to extract the float out of that. Lucky for us, it can be done with the <code>parse()</code> method.</p><p>Just like the <code>read_line()</code> method, the <code>parse()</code> method returns the <code>Result</code> Enum. The reason why the <code>parse()</code> method returns the <code>Result</code> Enum can be easily understood with what we are trying to achieve.</p><p>I am accepting a string from users and trying to convert it to a float. A float has two possible values in it. One is the floating point itself and the second is a decimal number.</p><p>While a String can have alphabets, a float does not. So, if the user entered something <em>other</em> than the [optional] floating point and the decimal number(s), the <code>parse()</code> function will return an error.</p><p>Hence, this error needs to be handled too. We will use the <code>expect()</code> function to deal with this.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>use std::io;

fn main() {
    println!(&quot;Welcome to the fruit mart!&quot;);
    println!(&quot;Plase select a fruit to buy.\n&quot;);
    
    let valid_inputs = [&quot;apple&quot;, &quot;banana&quot;, &quot;orange&quot;, &quot;mango&quot;, &quot;grapes&quot;, &quot;quit&quot;, &quot;q&quot;];
    
    &apos;mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

        println!(&quot;\nAvailable fruits to buy: Apple, Banana, Orange, Mango, Grapes&quot;);
        println!(&quot;Once you are done purchasing, type in &apos;quit&apos; or &apos;q&apos;.\n&quot;);

        // get user input
        io::stdin()
            .read_line(&amp;mut user_input)
            .expect(&quot;Unable to read user input.&quot;);
        user_input = user_input.trim().to_lowercase();

        // validate user input
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // handle invalid input
        if input_error {
            println!(&quot;ERROR: please enter a valid input&quot;);
            continue &apos;mart;
        }
        
        // quit if user wants to
        if user_input == &quot;q&quot; || user_input == &quot;quit&quot; {
            break &apos;mart;
        }

        // get quantity
        println!(
            &quot;\nYou choose to buy \&quot;{}\&quot;. Please enter the quantity in Kilograms.
(Quantity of 1Kg 500g should be entered as &apos;1.5&apos;.)&quot;,
            user_input
        );
        io::stdin()
            .read_line(&amp;mut quantity)
            .expect(&quot;Unable to read user input.&quot;);

        let quantity: f64 = quantity
            .trim()
            .parse()
            .expect(&quot;Please enter a valid quantity.&quot;);

    }
}</code></pre></section><!--kg-card-end: html--><p>As you can see, I store the parsed float in the variable <code>quantity</code> by making use of variable shadowing. To inform the <code>parse()</code> function that the intention is to parse the string into <code>f64</code>, I manually annotate the type of the variable <code>quantity</code> as <code>f64</code>.</p><p>Now, the <code>parse()</code> function will parse the String and return a <code>f64</code> or an error, that the <code>expect()</code> function will deal with.</p><h2 id="calculating-the-price-final-touch-ups">Calculating the price + final touch ups</h2><p>Now that we know which fruit the user wants to buy and its quantity, it is time to perform those calculations now and let the user know about the results/total.</p><p>For the sake of realness, I will have two prices for each fruit. The first price is the retail price, which we pay to fruit vendors when we buy in small quantities. The second price for fruit will be the wholesale price, when someone buys fruits in bulk.</p><p>The wholesale price will be determined if the order is greater than the minimum order quantity to be considered as a wholesale purchase. This minimum order quantity varies for every fruit. The prices for each fruit will be in Rupees per Kilogram.</p><p>With that logic in mind, down below is the program in its final form.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>use std::io;

const APPLE_RETAIL_PER_KG: f64 = 60.0;
const APPLE_WHOLESALE_PER_KG: f64 = 45.0;

const BANANA_RETAIL_PER_KG: f64 = 20.0;
const BANANA_WHOLESALE_PER_KG: f64 = 15.0;

const ORANGE_RETAIL_PER_KG: f64 = 100.0;
const ORANGE_WHOLESALE_PER_KG: f64 = 80.0;

const MANGO_RETAIL_PER_KG: f64 = 60.0;
const MANGO_WHOLESALE_PER_KG: f64 = 55.0;

const GRAPES_RETAIL_PER_KG: f64 = 120.0;
const GRAPES_WHOLESALE_PER_KG: f64 = 100.0;

fn main() {
    println!(&quot;Welcome to the fruit mart!&quot;);
    println!(&quot;Please select a fruit to buy.\n&quot;);

    let mut total: f64 = 0.0;
    let valid_inputs = [&quot;apple&quot;, &quot;banana&quot;, &quot;orange&quot;, &quot;mango&quot;, &quot;grapes&quot;, &quot;quit&quot;, &quot;q&quot;];

    &apos;mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

        println!(&quot;\nAvailable fruits to buy: Apple, Banana, Orange, Mango, Grapes&quot;);
        println!(&quot;Once you are done purchasing, type in &apos;quit&apos; or &apos;q&apos;.\n&quot;);

        // get user input
        io::stdin()
            .read_line(&amp;mut user_input)
            .expect(&quot;Unable to read user input.&quot;);
        user_input = user_input.trim().to_lowercase();

        // validate user input
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // handle invalid input
        if input_error {
            println!(&quot;ERROR: please enter a valid input&quot;);
            continue &apos;mart;
        }

        // quit if user wants to
        if user_input == &quot;q&quot; || user_input == &quot;quit&quot; {
            break &apos;mart;
        }

        // get quantity
        println!(
            &quot;\nYou choose to buy \&quot;{}\&quot;. Please enter the quantity in Kilograms.
(Quantity of 1Kg 500g should be entered as &apos;1.5&apos;.)&quot;,
            user_input
        );
        io::stdin()
            .read_line(&amp;mut quantity)
            .expect(&quot;Unable to read user input.&quot;);
        let quantity: f64 = quantity
            .trim()
            .parse()
            .expect(&quot;Please enter a valid quantity.&quot;);

        total += calc_price(quantity, user_input);
    }

    println!(&quot;\n\nYour total is {} Rupees.&quot;, total);
}

fn calc_price(quantity: f64, fruit: String) -&gt; f64 {
    if fruit == &quot;apple&quot; {
        price_apple(quantity)
    } else if fruit == &quot;banana&quot; {
        price_banana(quantity)
    } else if fruit == &quot;orange&quot; {
        price_orange(quantity)
    } else if fruit == &quot;mango&quot; {
        price_mango(quantity)
    } else {
        price_grapes(quantity)
    }
}

fn price_apple(quantity: f64) -&gt; f64 {
    if quantity &gt; 7.0 {
        quantity * APPLE_WHOLESALE_PER_KG
    } else {
        quantity * APPLE_RETAIL_PER_KG
    }
}

fn price_banana(quantity: f64) -&gt; f64 {
    if quantity &gt; 4.0 {
        quantity * BANANA_WHOLESALE_PER_KG
    } else {
        quantity * BANANA_RETAIL_PER_KG
    }
}

fn price_orange(quantity: f64) -&gt; f64 {
    if quantity &gt; 3.5 {
        quantity * ORANGE_WHOLESALE_PER_KG
    } else {
        quantity * ORANGE_RETAIL_PER_KG
    }
}

fn price_mango(quantity: f64) -&gt; f64 {
    if quantity &gt; 5.0 {
        quantity * MANGO_WHOLESALE_PER_KG
    } else {
        quantity * MANGO_RETAIL_PER_KG
    }
}

fn price_grapes(quantity: f64) -&gt; f64 {
    if quantity &gt; 2.0 {
        quantity * GRAPES_WHOLESALE_PER_KG
    } else {
        quantity * GRAPES_RETAIL_PER_KG
    }
}
</code></pre></section><!--kg-card-end: html--><p>Compared to the previous iteration, I made some changes...</p><p>The fruit prices may fluctuate, but for the lifecycle of our program, these prices will not fluctuate. So I store the retail and wholesale prices of each fruit in constants. I define these constants outside the <code>main()</code> functions (i.e. globally) because I will not calculate the prices for each fruit inside the <code>main()</code> function. These constants are declared as <code>f64</code> because they will be multiplied with <code>quantity</code> which is <code>f64</code>. Recall, Rust doesn&apos;t have implicit type casting ;)</p><p>After storing the fruit name and the quantity that the user wants to purchase, the <code>calc_price()</code> function is called to calculate the price of said fruit in the user provided quantity. This function takes in the fruit name and the quantity as its parameters and returns the price as <code>f64</code>.</p><p>Looking inside the <code>calc_price()</code> function, it is what many people call a wrapper function. It is called a wrapper function because it calls other functions to do its dirty laundry.</p><p>Since each fruit has a different minimum order quantity to be considered as a wholesale purchase, to ensure that the code can be maintained easily in the future, the actual price calculation for each fruit is split in separate functions for each individual fruit.</p><p>So, all that the <code>calc_price()</code> function does is to determine which fruit was chosen and call the respective function for chosen fruit. These fruit-specific functions accept only one argument: quantity. And these fruit-specific functions return the price as <code>f64</code>.</p><p>Now, <code>price_*()</code> functions do only one thing. They check if the order quantity is greater than the minimum order quantity to be considered as a wholesale purchase for said fruit. If it is such, <code>quantity</code> is multiplied by the fruit&apos;s wholesale price per Kilogram. Otherwise, <code>quantity</code> is multiplied by the fruit&apos;s retail price per Kilogram.</p><p>Since the line with multiplication does not have a semi-colon at the end, the function returns the resulting product.</p><p>If you look closely at the function calls of the fruit-specific functions in the <code>calc_price()</code> function, these function calls do not have a semi-colon at the end. Meaning, the value returned by the <code>price_*()</code> functions will be returned by the <code>calc_price()</code> function to its caller.</p><p>And there is only one caller for <code>calc_price()</code> function. This is at the end of the <code>mart</code> loop where the returned value from this function is what is used to increment the value of <code>total</code>.</p><p>Finally, when the <code>mart</code> loop ends (when the user inputs <code>q</code> or <code>quit</code>), the value stored inside the variable <code>total</code> gets printed to the screen and the user is informed about the price he/she has to pay.</p><h2 id="conclusion">Conclusion</h2><p>With this post, I have used all the previously explained topics about the Rust programming language to create a simple program that still somewhat demonstrates a real-world problem.</p><p>Now, the code that I wrote can definitely be written in a more idiomatic way that best uses Rust&apos;s loved features but I haven&apos;t covered them yet! </p><p>So stay tuned for follow-up <strong>Take Rust to The Next Level series</strong> and learn more of the Rust programming language!</p><p>The Rust Basics series concludes here. I welcome your feedback.</p>]]></content:encoded></item><item><title><![CDATA[7 Deadly Sins of Distrohopping]]></title><description><![CDATA[What are you doing wrong with distro-hopping? Can you do it better? Yes, you can. Here, we tell you how.]]></description><link>https://itsfoss.com/distrohopping-issues/</link><guid isPermaLink="false">6458eed869df0b089125eeec</guid><category><![CDATA[List]]></category><dc:creator><![CDATA[Ankush Das]]></dc:creator><pubDate>Fri, 12 May 2023 04:00:57 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/7-deadly-sins-of-distrohopping.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/7-deadly-sins-of-distrohopping.png" alt="7 Deadly Sins of Distrohopping"><p>Distro hopping is the habit of regularly trying new Linux distributions to explore for fun or to find the perfect distro for you. </p><p>After all, there are <a href="https://itsfoss.com/what-is-linux/">hundreds of Linux distributions</a> and new ones are released regularly. Your FOMO (fear of missing out) kicks in and you go on to try the latest buzz of the Linux town.</p><p>No matter why you do it, whether you hate it or like it, people make a few mistakes, which makes the experience of distro hopping hellish.</p><p>What can those be? Let me take you through it:</p><h2 id="1-not-taking-backups">1. Not Taking Backups</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/backup-distro.png" class="kg-image" alt="7 Deadly Sins of Distrohopping" loading="lazy" width="800" height="450" srcset="https://itsfoss.com/content/images/size/w600/2023/05/backup-distro.png 600w, https://itsfoss.com/content/images/2023/05/backup-distro.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Well, you thought of changing the distro, and because of the excitement, you did it.</p><p>But, if you do not have a backup of your important/frequently accessible stuff, you might have to configure things and organize the data you need on your system.</p><p>So, if you have a backup, no matter what you do, the data you need always stays accessible and helps you quickly hop from one distro to another.</p><h2 id="2-not-checking-graphics-driver-support">2. Not Checking Graphics Driver Support</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/graphics-card-distro.png" class="kg-image" alt="7 Deadly Sins of Distrohopping" loading="lazy" width="800" height="450" srcset="https://itsfoss.com/content/images/size/w600/2023/05/graphics-card-distro.png 600w, https://itsfoss.com/content/images/2023/05/graphics-card-distro.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Users often forget about the compatibility of a distro with the GPU on their system and end up complaining about the distro.</p><p>You must ensure that your distro has out-of-the-box support for your graphics card. </p><p>If you have an Nvidia graphics card like me, you should only prefer distributions that offer an ISO with Nvidia support or have the support built-in and available in the boot menu.</p><p>For instance, you need to <a href="https://itsfoss.com/nvidia-linux-mint/">install Nvidia drivers on Linux Mint</a>. While it is an easy and hassle-free process for the most part, not everyone would want to make an effort. You could go with <a href="https://pop.system76.com/?ref=itsfoss.com">Pop!_OS</a> or <a href="https://itsfoss.com/getting-started-with-ubuntu/">Ubuntu</a>, which works well with Nvidia graphics cards by default.</p><h2 id="3-hoping-things-to-be-better">3. Hoping Things to be Better </h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/hoping-distro.png" class="kg-image" alt="7 Deadly Sins of Distrohopping" loading="lazy" width="800" height="450" srcset="https://itsfoss.com/content/images/size/w600/2023/05/hoping-distro.png 600w, https://itsfoss.com/content/images/2023/05/hoping-distro.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Nobody else can perfectly pick what you need and what you might like.</p><p>So, do not go with anyone&apos;s suggestion. Do your research, and pick the distro you want to try next.</p><p>Even though you know what you want, do not expect the experience to be better than your current distro. The distributions differ in many aspects. </p><p><strong>Your next distribution can solve a problem you had and add issues you did not. </strong>It is better to assume that you might have troubles you did not anticipate. </p><p>So, fasten your seatbelt if you distro hop.</p><h2 id="4-installing-distros-on-bare-metal">4. Installing Distros on Bare Metal</h2><p><strong>Do not install the distro</strong> and <strong>replace your current distro.</strong></p><p>If you directly change the distro on your workstation, things might break, and you might spend time fixing them first, even before learning or experiencing the best parts of the Linux distribution.</p><p>Instead, you should try the distro using the <strong>live environment </strong>or <strong>a virtual machine</strong>.</p><p>Usually, you get a live environment from the boot menu or a &quot;Try&quot; option to test things before installing a Linux distribution.</p><p>Also, you can try <a href="https://itsfoss.com/why-linux-virtual-machine/">Linux distros using a virtual machine</a>. With a VM, you can learn about the distro and test things without hassle.</p><p>With that option, you do not need to change your host. You can test all the essentials like <strong>network connectivity, app availability, pre-installed utilities</strong>, and more without needing to ditch the current distro.</p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/why-linux-virtual-machine/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">10 Reasons to Run Linux in Virtual Machines</div><div class="kg-bookmark-description">You can run any operating system as a virtual machine to test things out or for a particular use case. When it comes to Linux, it is usually a better performer as a virtual machine when compared to other operating systems. Even if you hesitate to install Linux on bare</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Deadly Sins of Distrohopping"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/04/reasons-to-install-linux-in-virtualmachines.jpg" alt="7 Deadly Sins of Distrohopping"></div></a></figure><h2 id="5-ignoring-your-use-case">5. Ignoring Your Use-Case</h2><p>The choices of distros available can make things confusing.</p><p>One part or feature of a distro could have had your attention, leading you to think that the rest suits you.</p><p>Any distribution you want to try next should perfectly suit your requirements. If it offers something more or different, it may not necessarily be a bonus for you.</p><p>For instance, a distro could offer more customizability, which is always good. But if you do not need that control, the options included could be overwhelming or seem like bloatware to you soon enough.</p><p>You can explore the <a href="https://itsfoss.com/best-linux-distributions/">best Linux distros</a> and analyze them based on their specialties mentioned in the article.</p><p>One example is a specific use case of looking for a <a href="https://itsfoss.com/lightweight-linux-beginners/">lightweight distro</a> that runs well on old computers:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/lightweight-linux-beginners/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">16 Best Lightweight Linux Distributions for Older Computers</div><div class="kg-bookmark-description">Don&#x2019;t throw your old computer just yet. Use a lightweight Linux distro and revive that decades-old system.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Deadly Sins of Distrohopping"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2015/08/light-linux-distros.jpg" alt="7 Deadly Sins of Distrohopping"></div></a></figure><p>Or are you looking for something secure, reliable, and future-proof?</p><p><a href="https://itsfoss.com/immutable-linux-distros/">Immutable Linux distributions</a> should serve you well.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/immutable-linux-distros/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">11 Future-Proof Immutable Linux Distributions</div><div class="kg-bookmark-description">Immutability is a concept in trend. Take a look at what are the options you have for an immutable Linux distribution.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Deadly Sins of Distrohopping"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/03/list-of-immutable-linux-distros--1-.png" alt="7 Deadly Sins of Distrohopping"></div></a></figure><p>Or...</p><p>Do you want to play games? There are options for that too!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/linux-gaming-distributions/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best Distributions for Gaming on Linux</div><div class="kg-bookmark-description">If you are a hardcore PC gamer, Linux might not be your first choice. That&#x2019;s fair because Linux isn&#x2019;t treated as a first-class citizen when it comes to gaming. You won&#x2019;t find the most awaited games of the year available on Linux natively. Not to forget that</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Deadly Sins of Distrohopping"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/10/best-linux-gaming-distributions.png" alt="7 Deadly Sins of Distrohopping"></div></a></figure><p>In a nutshell, do not pick a distro that does not suit to your use cases.</p><h2 id="6-changing-your-daily-driving-tools">6. Changing Your Daily Driving Tools</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/daily-drivers-distro.png" class="kg-image" alt="7 Deadly Sins of Distrohopping" loading="lazy" width="800" height="450" srcset="https://itsfoss.com/content/images/size/w600/2023/05/daily-drivers-distro.png 600w, https://itsfoss.com/content/images/2023/05/daily-drivers-distro.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Along with the distro, some users change the tools they use to get work daily.</p><p>Considering the tools affect your user experience significantly, it will eventually change your workflow. You may have done it to experiment with new things. But you should stick to the tools that always work for you.</p><p>Maybe you are already using the <a href="https://itsfoss.com/essential-linux-applications/">best essential apps</a> available, why change?</p><p>If the tool does not work as intended with the new distro, only then you should look for alternatives.</p><h2 id="7-not-picking-a-desktop-environment">7. Not Picking a Desktop Environment</h2><p>There are a couple of things that can help you narrow down the choices you have for installing Linux distros on your system.</p><p>And the <a href="https://itsfoss.com/what-is-desktop-environment/">desktop environment</a> is a big one.</p><p>Of course, you should explore the <a href="https://itsfoss.com/best-linux-desktop-environments/">best desktop environments</a> available before making a favorite. Once you select one, you do not have to distro hop much compared to when you wanted to try distro with any desktop environment.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/best-linux-desktop-environments/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">8 Best Desktop Environments For Linux</div><div class="kg-bookmark-description">A list of the best Linux Desktop Environments with their pros and cons. Have a look and see which desktop environment you should use.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Deadly Sins of Distrohopping"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2016/04/best-linux-desktop-environments.jpg" alt="7 Deadly Sins of Distrohopping"></div></a></figure><h2 id="should-you-stop-distrohopping">Should You Stop Distrohopping?</h2><p>It is not bad that you want to explore options and see what fits you best.</p><p>However, how you hop from one distro to another could make the process troublesome, and you may end up complaining.</p><p>You should <strong>follow the above pointers</strong> mentioned in this article and try distros using a <strong>virtual machine</strong> before you want to switch.</p><p>Now, you should have a seamless experience with the distro hopping journey. </p><p><em>&#x1F4AC; Share your distro-hopping adventures in the comments below. Do you do it or not?</em></p>]]></content:encoded></item><item><title><![CDATA[FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More]]></title><description><![CDATA[There is a new distro in the town, again. Learn about it in this edition of FOSS Weekly newsletter.]]></description><link>https://itsfoss.com/newsletter/foss-weekly-23-19/</link><guid isPermaLink="false">645b4a9369df0b089125f5df</guid><category><![CDATA[Newsletter]]></category><dc:creator><![CDATA[Abhishek Prakash]]></dc:creator><pubDate>Thu, 11 May 2023 05:59:26 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/foss-weekly-23-19.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/foss-weekly-23-19.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><p>A few readers have notified me that they end up with Cloudflare errors while visiting It&apos;s FOSS webpages on Google Chrome. I have investigated the issue and cleaned up the cache. Nothing conclusive was found. </p><p>So, I doubled up the CPU strength to 8-core. This should guard against a sudden influx of traffic which increases the CPU load and prevents the site from being inaccessible momentarily.</p><p>However, if you still encounter this issue, please let me know. </p><p><strong>&#x1F4AC; Let&apos;s see what else you have in this edition of FOSS Weekly:</strong></p><ul><li>First look at Zinc, an Ubuntu-based distro</li><li>Continuation of the Rust series and beautiful font suggestions</li><li>More Linux news, videos, and of course, memes!</li></ul><hr><h2 id="%F0%9F%93%B0-linux-news">&#x1F4F0; Linux News</h2><p>Open source project management tool Mattermost has <a href="https://news.itsfoss.com/mattermost-ai/?ref=itsfoss.com">revealed its plans to power AI-enhanced collaboration</a>.</p><p>GNOME Files is set to <a href="https://news.itsfoss.com/gnome-column-chooser/?ref=itsfoss.com">drop the old-school column chooser</a> and replace it with a modern rework.</p><p>It seems that the <a href="https://news.itsfoss.com/roblox-linux-end/?ref=itsfoss.com">time of Roblox has come to an abrupt end on Linux</a>, it was already never officially supported, but now even the workarounds won&apos;t work.</p><hr><h2 id="%F0%9F%A7%A0-what-we%E2%80%99re-thinking-about">&#x1F9E0; What we&#x2019;re thinking about</h2><p>Some developers are not happy that people upload their open source projects on GitHub, which is then used to train Microsoft&apos;s GitHub Copilot AI.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://nogithub.codeberg.page/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Please don&#x2019;t upload my code on GitHub</div><div class="kg-bookmark-description">This is a call to open source developers to not upload the work of others on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://nogithub.codeberg.page/favicon.svg" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">No GitHub</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://nogithub.codeberg.page/icon-color.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%9B%8D%EF%B8%8F-interesting-offer">&#x1F6CD;&#xFE0F; Interesting offer</h2><p>The folks over at No Starch Press have yet another useful bundle, this time for learning Python programming. Be sure to check it out; a portion of the proceeds go to the <a href="https://www.python.org/psf-landing/?ref=itsfoss.com">Python Software Foundation</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.humblebundle.com/books/python-no-starch-books?partner=itsfoss&amp;ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Humble Tech Book Bundle: Python by No Starch</div><div class="kg-bookmark-description">We&#x2019;ve teamed up with No Starch Press for our newest bundle. Get books like Python for Kids and Beyond the Basic Stuff with Python. Plus, pay what you want &amp; support charity!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.humblebundle.com/static/hashed/03df0490a53d595fd930f9fff52038366d60a05d.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">Humble Bundle</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hb.imgix.net/75e1c3e16619e8c9f5ef6ddb93f3bbc0c3b098e1.png?auto=compress,format&amp;h=630&amp;w=1200&amp;s=d4c213287d9081c0d63c17f1eef0f4a8" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%A7%AE-tutorials">&#x1F9EE; Tutorials</h2><p>The Rust Basics Series has nearly reached its end. This is the penultimate chapter of the series.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/rust-loops/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Rust Basics Series #7: Using Loops in Rust</div><div class="kg-bookmark-description">Loops are another way of handling control flow of your programs. Learn about for, while and &#x2018;loop&#x2019; loops in Rust.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Pratham Patel</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/loops-in-rust-programming-language.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><p>Explore some alternative fonts and customize your terminal.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/fonts-linux-terminal/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">10 Best Fonts for Linux Terminal</div><div class="kg-bookmark-description">Get the best font for your terminal to improve the look, and readability, and have a fun experience with the terminal.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/best-fonts-for-terminal.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><p>This tool may interest you if you have a simple need for trimming and merging video clips.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/vidcutter-video-editor-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Easily Trim Videos With VidCutter in Linux</div><div class="kg-bookmark-description">Learn how to install and use VidCutter, a simple open source tool for trimming and merging videos in Linux.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/vidcutter-video-trimmer-linux-app.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><h2 id="%F0%9F%93%B9-what-we-are-watching">&#x1F4F9; What we are watching</h2><p>Of course, it is.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/499jqHWZ-Ts?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Is Linux Mint BETTER Than Windows?"></iframe></figure><hr><h2 id="%E2%9C%A8-project-highlights">&#x2728; Project highlights</h2><p>We also looked at a new Ubuntu-based distro that doesn&apos;t offer Snap out-of-the-box! Yes, that is a feature these days.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/zinc-distro/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Zinc: A New Ubuntu-Based Distro With Nemo File Manager and XFCE Desktop</div><div class="kg-bookmark-description">An Ubuntu-based distro with some default twists that you might like. What do you think?</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/zinc-first-look.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><p>Want an ad-free music player for your smartphone? Well, then, this can be your daily driver!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/blackhole-music-app/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Upgrade Your Music Experience with This Spotify-like Open Source Mobile Music Player</div><div class="kg-bookmark-description">BlackHole is an interesting open-source music player for mobile phones.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/blackhole-music-app.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%A4%A3-meme-of-the-week">&#x1F923; Meme of the week</h2><p>The brain is one of the most important parts of a human body, after all.</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/memes1.png" class="kg-image" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More" loading="lazy" width="1080" height="1080" srcset="https://itsfoss.com/content/images/size/w600/2023/05/memes1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/memes1.png 1000w, https://itsfoss.com/content/images/2023/05/memes1.png 1080w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%97%93%EF%B8%8F-linux-trivia">&#x1F5D3;&#xFE0F; Linux Trivia</h2><p>On May 9, 1996, Linus Torvalds <a href="https://lkml.iu.edu/hypermail/linux/kernel/9605/0855.html?ref=itsfoss.com">described in a mailing list</a> his conception of what he believes should be the logo for Linux.</p><blockquote>So when you think &quot;penguin&quot;, you should be imagining a slighly overweight penguin (*), sitting down after having gorged itself, and having just burped. It&apos;s sitting there with a beatific smile - the world is a good place to be when you have just eaten a few gallons of raw fish and you can feel another &quot;burp&quot; coming. </blockquote><p>Yeah! That&apos;s the <a href="https://itsfoss.com/tux-trivia/">story behind the Linux logo Tux</a>. Here are some more.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/tux-trivia/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Some Incredible Stories Around Tux: Our Lovable Linux Mascot!</div><div class="kg-bookmark-description">We&#x2019;ve all heard about our favorite Linux Mascot! In this Linux trivia series, I&#x2019;ve scoured every nook and corner of the web I could reach out to, to dig up some old archives to gather some interesting trivia about our cute and friendly penguin, starting from its early</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Avimanyu Bandyopadhyay</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2019/02/history-of-linux-logo-mascot.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%A7%A9-puzzle-for-pro-members-only">&#x1F9E9; Puzzle (for Pro members only)</h2><p>There is a different kind of puzzle this way. It may not be as time taking as a crossword, though.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/puzzle/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Puzzle of The Week</div><div class="kg-bookmark-description">Exercise those &#x2018;little gray cells&#x2019; of yours and solve this puzzle.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/puzzle-of-the-week.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%E2%9D%A4%EF%B8%8F-enjoying-foss-weekly">&#x2764;&#xFE0F; Enjoying FOSS Weekly?</h2><p><strong>Forward it to Linux-using friends</strong> and encourage them to subscribe (hint: <a href="https://itsfoss.com/signup/">it&apos;s here</a>).</p><p>Become a Pro member and show your support &#x1F64F;</p><p>Share the newsletter and the articles in Linux communities on Reddit and other platforms.</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Keep loving Linux :)</p>]]></content:encoded></item><item><title><![CDATA[Rust Basics Series #7: Using Loops in Rust]]></title><description><![CDATA[Loops are another way of handling control flow of your programs. Learn about for, while and 'loop' loops in Rust.]]></description><link>https://itsfoss.com/rust-loops/</link><guid isPermaLink="false">63f5f2e96f09afb69b01b586</guid><category><![CDATA[Rust]]></category><dc:creator><![CDATA[Pratham Patel]]></dc:creator><pubDate>Sun, 07 May 2023 04:43:32 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/loops-in-rust-programming-language.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/loops-in-rust-programming-language.png" alt="Rust Basics Series #7: Using Loops in Rust"><p>In the <a href="https://itsfoss.com/rust-if-else/">previous article</a> of the Rust series, I went over the use of if and else keywords to handle the control flow of your Rust program. </p><p>That is one way of handling the control flow of your program. The other way you can do this is by using loops. So let us look at loops in this follow-up article.</p><h2 id="loops-available-in-rust">Loops available in Rust</h2><p>The Rust programming language has three different loops based on what you want to achieve and what is available:</p><ul><li>for</li><li>while</li><li>loop</li></ul><p>I presume that you are familiar with <code>for</code> and <code>while</code> but <code>loop</code> might be new here. Let&apos;s start with familiar concepts first.</p><h2 id="the-for-loop">The for loop</h2><p>The <code>for</code> loop is primarily used to iterate over something called an iterator.</p><p>This iterator can be made from anything, from an array, a vector (will be covered soon!), a range of values, or anything custom. The sky is the limit here.</p><p>Let us look at the syntax of the <code>for</code> loop.</p><pre><code class="language-rust">for iterating_variable in iterator {
    &lt;statement(s)&gt;;
}</code></pre><p>The <code>iterating_variable</code> is more generally known as <code>i</code> in most other programming language tutorials ;)</p><p>And an <code>iterator</code>, as I said, can be really anything that tells what the next value is, if any.</p><p>Let&apos;s understand this using a program.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let my_arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

    println!(&quot;iteration over an array&quot;);
    for element in my_arr {
        println!(&quot;{}&quot;, element);
    }

    println!(&quot;\niteration over a real iterator&quot;);
    for element in my_arr.iter() {
        println!(&quot;{}&quot;, element);
    }

    println!(&quot;\nPython-style range&quot;);
    for element in 0..10 {
        println!(&quot;{}&quot;, element);
    }
}</code></pre></section><!--kg-card-end: html--><p>Here, I have declared an array that holds 10 numbers, from 0 to 9. On the <code>for</code> loop that is on line 5, I simply specify this array as the iterator and Rust automatically handles iteration over all the elements of this array for me. No fancy <code>my_arr[i]</code> magic is needed.</p><p>But on line 10, I call the <code>.iter()</code> function on the array. This is an explicit mention of getting an iterator based on the values that <code>my_arr</code> consists of. The only difference between this loop and the loop on line 5 is that here you are being explicit by calling the <code>.iter()</code> function on the array.</p><p>Calling the <code>.iter()</code> function on a data type, <em>in this context,</em> isn&apos;t strictly necessary. Since this is an array, which is a data type provided by the language itself, Rust already knows how to handle it. But you <em>will</em> need it with custom data types.</p><p>Finally, on line 15, we have a for loop that loops over a range. Well sort of. If you look closely, this range will look very similar to the Slice &quot;type&quot;. Rust knows about this too and handles iteration <em>for</em> you (haha, get it?).</p><p>The output looks like following:</p><pre><code>iteration over an array
0
1
2
3
4
5
6
7
8
9

iteration over a real iterator
0
1
2
3
4
5
6
7
8
9

Python-style range
0
1
2
3
4
5
6
7
8
9</code></pre><h2 id="the-while-loop">The while loop</h2><p>The <code>while</code> loop can be thought to be very similar to an <code>if</code> conditional statement. With the <code>if</code> statement, provided that the user-provided condition evaluates to <code>true</code>, the code in the <code>if</code> statement&apos;s body is executed <em>once</em>.</p><p>But with the <code>while</code> loop, if the condition evaluates to <code>true</code>, the loop starts looping over the loop body. The loop will continue its iteration as long as the condition keeps on evaulating to <code>true</code>.</p><p>The <code>while</code> loop stops only when the loop has completed the execution of all statements in the current iteration and upon checking the condition, it evaluates to <code>false</code>.</p><p>Let&apos;s look at the syntax of a while loop...</p><pre><code class="language-rust">while condition {
    &lt;statement(s)&gt;;
}</code></pre><p>See? Very similar to an <code>if</code> conditional statement! No <code>else</code> blocks though ;)</p><p>Let&apos;s look at a program to understand this better.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let mut var = 0;

    while var &lt; 3 {
        println!(&quot;{var}&quot;);
        var += 1;
    }
}
</code></pre></section><!--kg-card-end: html--><p>I have a mutable variable, <code>var</code>, with an initial value of 0. The <code>while</code> loop will loop as long as the value stored in the mutable variable <code>var</code> is less than 3.</p><p>Inside the loop, <code>var</code>&apos;s value gets printed and later on, its value gets incremented by 1.</p><p>Below is the output of the code written above:</p><pre><code>0
1
2</code></pre><h2 id="the-loop">The loop </h2><p>Rust has an infinite loop. Yes, one with no condition for starting and no condition to stop. It just continues looping over and over again till infinity. But of course, has triggers to stop the loop execution from the code itself.</p><p>The syntax for this infinite loop is as follows:</p><pre><code class="language-rust">loop {
    &lt;statement(s)&gt;;
}</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">These loops are mostly used in GUI software where exiting is an <em>explicit</em> operation.</div></div><p>Before I even give you an example, since this loop is quite special, let&apos;s first look at how to <em>exit</em> it :p</p><p>To stop the execution of an infinite loop, the <code>break</code> keyword is used inside the loop.</p><p>Let&apos;s look at an example where only whole numbers between 0 and 3 (inclusive) are printed to the program output.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let mut var = 0;

    loop {
        if var &gt; 3 {
            break;
        }

        println!(&quot;{}&quot;, var);
        var += 1;
    }
}
</code></pre></section><!--kg-card-end: html--><p>The best way to interpret this particular example is to look at it as an unnecessarily expanded form of a <code>while</code> loop ;)</p><p>You have a mutable variable <code>var</code> with an initial value of 0 that is used as an iterator, kind of. The infinite loop starts with an <code>if</code> condition that <em>should </em><code><em>var</em></code><em>&apos;s value be greater than 3, the </em><code><em>break</em></code><em> keyword should be executed</em>. Later on, like the previous example of the <code>while</code> loop, <code>var</code>&apos;s value is printed to the stdout and then its value is incremented by 1.</p><p>It produces the following output:</p><pre><code>0
1
2
3</code></pre><h2 id="labelled-loops">Labelled loops</h2><p>Let&apos;s say there are two infinite loops, one nested in the other. For some reason, the exit condition is checked in the innermost loop but this exit condition is for exiting out of the outermost loop.</p><p>In such a case, labelling the loop(s) might be beneficial.</p><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">The use of labels <code>break</code> and <code>continue</code> keywords are not exclusive to the infinite loop. They can be used with all three loops that the Rust language offers.</div></div><p>Following is how to label a loop.</p><pre><code class="language-rust">&apos;label: loop {}</code></pre><p>To tell the compiler that a loop is being labelled, start with a single quote character, type the label for it, and follow it with a colon. Then, continue with how you regularly define a loop.</p><p>When you need to break certain loop, simply specify the loop label like so:</p><pre><code class="language-rust">    break &apos;label;</code></pre><p>Let&apos;s take a look at an example to better understand this.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let mut a = 0;
    let mut b = 0;

    &apos;parent: loop {
        a += 1;

        loop {
            println!(&quot;a: {}, b: {}&quot;, a, b);
            b += 1;

            if a + b == 10 {
                println!(&quot;\n{} + {} = 10&quot;, a, b);
                break &apos;parent;
            }
        }
    }
}</code></pre></section><!--kg-card-end: html--><p>Here, I took two mutable variables <code>a</code> and <code>b</code> with the initial values set to 0 for both.</p><p>Later down, the outer-most loop is labelled <code>parent</code>. The &apos;parent&apos; loop increments the value of varaible <code>a</code> by 1 and has an inner/child loop.</p><p>This child loop (on line 8) prints the values of variables <code>a</code> and <code>b</code>. Inside this loop, the value of <code>b</code> gets incremented by 1. And the exit condition is that <code>a + b == 10</code>. Meaning whenever the values stored in variables <code>a</code> and <code>b</code>, when added together, result in 10, the <code>parent</code> loop is broken. Even though the <code>break</code> condition on line 14 &quot;belongs&quot; to the inner loop, it breaks the <code>parent</code> loop.</p><p>Let&apos;s look at the program output now.</p><pre><code>a: 1, b: 0
a: 1, b: 1
a: 1, b: 2
a: 1, b: 3
a: 1, b: 4
a: 1, b: 5
a: 1, b: 6
a: 1, b: 7
a: 1, b: 8

1 + 9 = 10
</code></pre><p>As evident from the program output, the loop stops as soon as <code>a</code> and <code>b</code> have the values 1 and 9 respectively.</p><h2 id="the-continue-keyword">The continue keyword</h2><p>If you have already used loops in any other programming language like C/C++/Java/Python, you might already know the use of the <code>continue</code> keyword.</p><p>While the <code>break</code> keyword is to stop the loop execution completely, the <code>continue</code> keyword is used to &quot;skip&quot; the <strong>current iteration</strong> of loop execution and start with the next iteration (if the conditions permit).</p><p>Let&apos;s look at an example to understand how the <code>continue</code> keyword works.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    for i in 0..10 {
        if i % 2 == 0 {
            continue;
        }
        println!(&quot;{}&quot;, i)
    }
}</code></pre></section><!--kg-card-end: html--><p>In the code above, I have a <code>for</code> loop that iterates over whole numbers between 0 and 9 (inclusive). As soon as the loop starts, I put a conditional check to see if the number is even or not. If the number is even, the <code>continue</code> keyword is executed.</p><p>But if the number is odd, the number gets printed to the program output.</p><p>Let&apos;s first look at the output of this program.</p><pre><code>1
3
5
7
9
</code></pre><p>As you can see, the loop appears to have been &quot;going on&quot; even though there clearly are even numbers between 0 and 9. But because I used the <code>continue</code> keyword, the loop execution stopped when that keyword was encountered.</p><p>The loop skipped whatever was under it and continued with the next iteration. That&apos;s why even numbers are not printed, but all odd numbers between 0 and 9 are printed to the proogram output.</p><h2 id="conclusion">Conclusion</h2><p>To conclude this long article, I demonstrated the use of 3 different loops: <code>for</code>, <code>while</code> and <code>loop</code>. I also discussed two keywords that affect the control flow of these loops: <code>break</code> and <code>continue</code>. </p><p>I hope that you now understand the appropriate use case for each loop. Please let me know if you have any questions.</p>]]></content:encoded></item><item><title><![CDATA[10 Beautiful Fonts for Your Linux Terminal]]></title><description><![CDATA[Get the best font for your terminal to improve the look, and readability, and have a fun experience with the terminal.]]></description><link>https://itsfoss.com/fonts-linux-terminal/</link><guid isPermaLink="false">6451f84b71e1e408c0cee4c5</guid><category><![CDATA[Terminal]]></category><category><![CDATA[Customization]]></category><dc:creator><![CDATA[Ankush Das]]></dc:creator><pubDate>Fri, 05 May 2023 05:34:09 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/best-fonts-for-terminal.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/best-fonts-for-terminal.png" alt="10 Beautiful Fonts for Your Linux Terminal"><p>Picking the perfect font is crucial for many things, whether you are a programmer, system administrator, or a Linux user fond of the terminal.</p><p><a href="https://itsfoss.com/change-terminal-font-ubuntu/">Changing the terminal font</a> helps you achieve the following:</p><ul><li><strong>An aesthetically pleasing look of your terminal</strong></li><li><strong>Enhances readability</strong></li><li><strong>Reduces eye strain</strong></li></ul><p>Sounds good. But how can you choose the perfect font? There are hundreds and thousands of options out there.</p><p>For starters, you can select a <strong>font optimized for technical documents or coding</strong> because those have good readability. Next, you can filter <strong>foss projects</strong> (if that matters to you) and check if those <strong>fonts scale well</strong> with high-resolution monitors (per your requirements).</p><p>Fret not; to give you a head start, we have picked some of the best fonts fit for coding, offering good readability while also looking good at the same time.</p><h2 id="1-cascadia">1. Cascadia</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/cascadia.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/cascadia.png 600w, https://itsfoss.com/content/images/2023/05/cascadia.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/microsoft/cascadia-code?ref=itsfoss.com">Cascadia</a> is a font by Microsoft, used by default for Visual Studio Code, one of the <a href="https://itsfoss.com/best-modern-open-source-code-editors-for-linux/">best open-source code editors</a>.</p><p>It includes coding ligature support and offers three variants: standard, mono, and a version supporting embedded powerline symbols.</p><h2 id="2-fira-code">2. Fira Code</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/fira-code.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/fira-code.png 600w, https://itsfoss.com/content/images/2023/05/fira-code.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/tonsky/FiraCode?ref=itsfoss.com">Fira Code</a> is a monospaced font with programming ligature and ASCII support. </p><p>It is regularly fine-tuned to support letter pairs and better punctuation output.</p><h2 id="3-hack">3. Hack</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/hack.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/hack.png 600w, https://itsfoss.com/content/images/2023/05/hack.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/source-foundry/Hack?ref=itsfoss.com">Hack</a> is another monospaced font tailored for source codes. </p><p>You get ASCII, powerline support, and the usual styles for <strong>bold, italic, and bold italic.</strong></p><p>If you notice its GitHub page, they provide instructions to improve the font rendering for certain Linux distributions.</p><h2 id="4-inconsolata">4. Inconsolata</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/inconsolata.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/inconsolata.png 600w, https://itsfoss.com/content/images/2023/05/inconsolata.png 822w" sizes="(min-width: 720px) 720px"></figure><p><br><a href="https://fonts.google.com/specimen/Inconsolata?ref=itsfoss.com">Inconsolata</a> is a clear monospace font tailored for great readability. You can find it as one of the options in the Google Font family.</p><p>The font offers several styles useful for <a href="https://itsfoss.com/linux-terminal-emulators/">terminal emulators</a> and coding purposes.</p><h2 id="5-iosevka">5. Iosevka</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Iosevka-.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Iosevka-.png 600w, https://itsfoss.com/content/images/2023/05/Iosevka-.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/be5invis/Iosevka?ref=itsfoss.com">Iosevka</a> is a clean-looking versatile open-source font built to write code and use in terminals and technical documents.</p><p>You can get installation instructions from its GitHub page for other platforms, including Linux.</p><h2 id="6-jetbrains-mono">6. JetBrains mono</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/jetbrains-mono.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/jetbrains-mono.png 600w, https://itsfoss.com/content/images/2023/05/jetbrains-mono.png 822w" sizes="(min-width: 720px) 720px"></figure><p>The free and open-source typeface is tailored for developers, i.e., <a href="https://github.com/JetBrains/JetBrainsMono?ref=itsfoss.com">JetBrains Mono</a>.</p><p>As the name suggests, it is the default font used by the popular developer tools under <a href="https://www.jetbrains.com/?ref=itsfoss.com">JetBrains</a>.</p><h2 id="7-meslo-nf">7. Meslo NF</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/mesloNF.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/mesloNF.png 600w, https://itsfoss.com/content/images/2023/05/mesloNF.png 822w" sizes="(min-width: 720px) 720px"></figure><p>Meslo NF is a font that supports ASCII and icons well in the terminal. </p><p>A part of &quot;<a href="https://github.com/ryanoasis/nerd-fonts/?ref=itsfoss.com">Nerd Fonts</a>&quot; collection on GitHub, which features good-looking fonts for coding and terminal. You can find the font among the assets in its <a href="https://github.com/ryanoasis/nerd-fonts/releases/tag/v3.0.0?ref=itsfoss.com">GitHub releases</a> section.</p><p>It looks excellent in shells like Zsh, fish, and others. You can check out our article on lesser-known <a href="https://itsfoss.com/shells-linux/">Linux shells</a> to explore others.</p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/shells-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Beyond Bash: 9 Lesser-Known Linux Shells and Their Capabilities</div><div class="kg-bookmark-description">You probably already know about the popular shells like bash and zsh. Let us explore some interesting and unique shells.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sreenath</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/01/lesser-known-shells.png" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><h2 id="8-monoid">8. Monoid</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/moniosome.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="876" height="665" srcset="https://itsfoss.com/content/images/size/w600/2023/05/moniosome.png 600w, https://itsfoss.com/content/images/2023/05/moniosome.png 876w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://larsenwork.com/monoid/?ref=itsfoss.com">Monoid</a> is another open-source font that aims to be useful for coding. With the usual ligature support and light-dark variants, it should be a nice choice for terminals.</p><h2 id="9-ubuntu-monospace">9. Ubuntu Monospace</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/ubuntu-monospace.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/ubuntu-monospace.png 600w, https://itsfoss.com/content/images/2023/05/ubuntu-monospace.png 822w" sizes="(min-width: 720px) 720px"></figure><p>We all love Ubuntu&apos;s default font, i.e., <a href="https://design.ubuntu.com/font?ref=itsfoss.com">Ubuntu Monospace</a>. It is optimized for many languages, high-resolution screens, and good readability.</p><p>You do not need to install it if you already use Ubuntu.</p><h2 id="10-sourcecode-pro">10. SourceCode Pro</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/source-code-pro.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/source-code-pro.png 600w, https://itsfoss.com/content/images/2023/05/source-code-pro.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/adobe-fonts/source-code-pro?ref=itsfoss.com">Source Code Pro</a> is a good mix of everything. While it is optimized for coding environments and developed by Adobe, it offers good readability and look-for terminals.</p><p><strong>Recommended Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/linux-terminal-emulators/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Top 14 Terminal Emulators for Linux (With Extra Features or Amazing Looks)</div><div class="kg-bookmark-description">Want a terminal that looks cool or has extra features? Here are the best Linux terminal emulators you can get.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/03/best-terminal-emulators.png" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><h2 id="how-to-install-these-fonts">How to Install These Fonts?</h2><p>You can easily install a font by downloading the TTF or OTF file and then double-clicking on them to open it using Font Viewer to install. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/image-6.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="800" height="463" srcset="https://itsfoss.com/content/images/size/w600/2023/05/image-6.png 600w, https://itsfoss.com/content/images/2023/05/image-6.png 800w" sizes="(min-width: 720px) 720px"><figcaption>Double click on the ttf file to install it</figcaption></figure><p>To install multiple fonts simultaneously, you can make a new <code>.fonts</code> folder in the home directory and put the font files there. You can check out our guide on <a href="https://itsfoss.com/install-fonts-ubuntu/"><strong>installing new fonts</strong></a> for more detailed information.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/install-fonts-ubuntu/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Install New Fonts in Ubuntu and Other Linux Distros</div><div class="kg-bookmark-description">Wondering how to install additional fonts in Ubuntu Linux? Here is a screenshot tutorial to show you how to easily install new fonts.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2015/01/Install-new-fonts-ubuntu.png" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><h2 id="more-ways-to-customize-terminal">More ways to customize terminal</h2><p>Here are a few more ways to customize the look and feel of your terminal.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/customize-linux-terminal/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">5 Tweaks to Customize the Look of Your Linux Terminal</div><div class="kg-bookmark-description">Want a beautiful-looking Linux terminal? Here are several ways to tweak the look and feel of your current terminal and make it look beautiful.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/02/linux-terminal-customization.jpg" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><p>Another interesting tool that automatically changes the color scheme of the terminal based on your desktop wallpaper. How cool is that!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/pywal/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Automatically Change Color Scheme of Your Linux Terminal Based on Your Wallpaper</div><div class="kg-bookmark-description">If you are It&#x2019;s FOSS newsletter subscriber, you already know that we have started a new &#x2018;Terminal Tuesday&#x2019; series. In this, you&#x2019;ll get to read about command line tools or tips/tricks to help you in the terminal. Terminal is not all about serious work, it can be</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2020/08/pywal-linux.jpg" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><p>&#x1F4AC;<em>What is your favorite on the list? Do you have better suggestions? Do share your thoughts in the comments below.</em></p>]]></content:encoded></item><item><title><![CDATA[FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More]]></title><description><![CDATA[Ubuntu 18.04 is ending soon and Debian 12 is coming soon. And the puzzles make a comeback on It's FOSS but with a twist.]]></description><link>https://itsfoss.com/newsletter/foss-weekly-23-18/</link><guid isPermaLink="false">64522bab71e1e408c0cee55e</guid><category><![CDATA[Newsletter]]></category><dc:creator><![CDATA[Abhishek Prakash]]></dc:creator><pubDate>Thu, 04 May 2023 06:37:46 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/foss-weekly-23-18.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/foss-weekly-23-18.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><p>Ubuntu 18.04 LTS is reaching its end of life by the end of the month. What to do now? We have a <a href="https://news.itsfoss.com/ubuntu-18-04-eol/?ref=itsfoss.com">few suggestions</a>. Debian 12 is gearing up for next month&apos;s launch. Time to <a href="https://news.itsfoss.com/debian-12-features/?ref=itsfoss.com">check its features</a>.</p><p>The motto of It&apos;s FOSS is to educate on Linux and open source. And this is why I don&apos;t want to restrict access to educational content. However, I also want to give &apos;something extra&apos; to our Pro members to thank them for their support.</p><p>For that, <a href="https://itsfoss.com/puzzle/">we have created a puzzles section</a>. Pro members can log in with their accounts and play the puzzles (crossword, find the word, etc.) online. This is fun content. So the paying supporters get extra, and everyone gets to read and learn from the educational content. </p><p>Win-win&#x1F918;</p><p><strong>&#x1F4AC; Let&apos;s see what else you have in this edition of FOSS Weekly:</strong></p><ul><li>We continue our Rust Basics series</li><li>An early look at GNOME&apos;s new camera app</li><li>Interview with Stu Keroff, a teacher who built Linux-based computer lab</li><li>More Linux news, videos, and of course, memes!</li></ul><hr><h2 id="%F0%9F%93%B0-linux-news">&#x1F4F0; Linux News</h2><p>Linux Mint 21.02 <a href="https://news.itsfoss.com/linux-mint-21-2-tooltips/?ref=itsfoss.com">to feature</a> revamped tooltips and notifications.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/ubuntu-18-04-eol/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Ubuntu 18.04 is Reaching End of Life: Here&#x2019;s What You Can Do</div><div class="kg-bookmark-description">Ubuntu 18.04 is reaching end of life soon. Here&#x2019;s what you need to know.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/ubuntu-18-04-eol.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/debian-12-features/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Debian 12 &#x2018;Bookworm&#x2019; New Features and Release Date</div><div class="kg-bookmark-description">Debian 12 is due for release soon. Learn more about its features and the release date.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/04/debian-12-new-features.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%8E%99%EF%B8%8Finterview-with-stu-keroff">&#x1F399;&#xFE0F;Interview With Stu Keroff</h2><p>Meet the teacher who makes learning Linux cool and exciting for students.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/interview-stu-keroff/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">&#x201C;Meet the Techs of Tomorrow Where They Are Today&#x201D;: A Conversation With Stu Keroff</div><div class="kg-bookmark-description">Meet the teacher who makes learning Linux cool and exciting for students.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/04/interview-with-stu-teacher.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><h2 id="%F0%9F%A7%AE-tutorials">&#x1F9EE; Tutorials</h2><p>Learn how to use conditional statements effectively in the sixth edition of our Rust Basics series.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/rust-if-else/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Rust Basics Series #6: Using If Else</div><div class="kg-bookmark-description">You can control the flow of your program by using conditional statements. Learn to use if-else in Rust.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Pratham Patel</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/conditonal-statements-in-rust-programming-language.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><p>Qemu is one of the fastest hypervisors out there for Linux. Learn to use it on Ubuntu (and perhaps other Linux distributions).</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/qemu-ubuntu/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Install and Use Qemu on Ubuntu</div><div class="kg-bookmark-description">Learn how to properly install Qemu in Ubuntu and then configure a Linux distro in VM.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sagar Sharma</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/install-qemu-on-ubuntu.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%93%B9-what-we-are-watching">&#x1F4F9; What we are watching</h2><p>If you recently installed Ubuntu 23.04, you could benefit from this video.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/n265uqEqCIg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="10 Essential Things to Do After Installing Ubuntu 23.04 Lunar Lobster"></iframe></figure><hr><h2 id="%E2%9C%A8-application-highlights">&#x2728; Application highlights</h2><p>GNOME is working on revamping another of its core tool.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/gnome-snapshot/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Say Cheese to the Future: Snapshot is GNOME&#x2019;s Next-Gen Camera App</div><div class="kg-bookmark-description">A new GNOME camera app starts sailing to replace the classic Cheese utility.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/snapshot-gnome-app.jpg" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><p>Control your Linux machine remotely using these tools! &#x1F5A5;&#xFE0F;&#x1F427;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/remote-desktop-tools/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">8 Best Remote Desktop Tools for Linux</div><div class="kg-bookmark-description">Here, we list the best remote desktop tools for Linux along with their pros and cons.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/list-of-remote-desktop-tools.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%9B%8D%EF%B8%8F-interesting-offer">&#x1F6CD;&#xFE0F; Interesting offer</h2><p>The folks over at No Starch Press have yet another useful bundle, this time for learning Python programming.</p><p>Be sure to check it out; a portion of the proceeds go to the <a href="https://www.python.org/psf-landing/?ref=itsfoss.com">Python Software Foundation</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.humblebundle.com/books/python-no-starch-books?partner=itsfoss&amp;ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Humble Tech Book Bundle: Python by No Starch</div><div class="kg-bookmark-description">We&#x2019;ve teamed up with No Starch Press for our newest bundle. Get books like Python for Kids and Beyond the Basic Stuff with Python. Plus, pay what you want &amp; support charity!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.humblebundle.com/static/hashed/03df0490a53d595fd930f9fff52038366d60a05d.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">Humble Bundle</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hb.imgix.net/75e1c3e16619e8c9f5ef6ddb93f3bbc0c3b098e1.png?auto=compress,format&amp;h=630&amp;w=1200&amp;s=d4c213287d9081c0d63c17f1eef0f4a8" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%A4%A3-meme-of-the-week">&#x1F923; Meme of the week</h2><p>There is an impostor among us! Ubuntu users will understand :)</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/memes-1.png" class="kg-image" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More" loading="lazy" width="1080" height="1080" srcset="https://itsfoss.com/content/images/size/w600/2023/05/memes-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/memes-1.png 1000w, https://itsfoss.com/content/images/2023/05/memes-1.png 1080w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%97%93%EF%B8%8F-trivia">&#x1F5D3;&#xFE0F; Trivia</h2><p>The 4th of May is observed as Star Wars Day. The date originates from the pun &quot;May the Fourth be with you&quot;, a variant of the famous Star Wars catchphrase &quot;May the Force be with you&quot;. </p><p>We, FOSSers, could rephrase it as &apos;May the FOSS be with you&apos;?</p><hr><h2 id="%F0%9F%A7%A9-puzzle-for-pro-members-only">&#x1F9E9; Puzzle (for Pro members only)</h2><p>This week&apos;s puzzle is a crossword consisting of popular open source applications for Linux.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/puzzle/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Puzzle of The Week</div><div class="kg-bookmark-description">Exercise those &#x2018;little gray cells&#x2019; of yours and solve this puzzle.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/puzzle-of-the-week.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%E2%9D%A4%EF%B8%8F-enjoying-foss-weekly">&#x2764;&#xFE0F; Enjoying FOSS Weekly?</h2><p><strong>Forward it to Linux-using friends</strong> and encourage them to subscribe (hint: <a href="https://itsfoss.com/signup/">it&apos;s here</a>).</p><p>Become a Pro member and show your support &#x1F64F;</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Keep on learning with It&apos;s FOSS :)</p>]]></content:encoded></item><item><title><![CDATA[8 Best Remote Desktop Tools for Linux]]></title><description><![CDATA[Here, we list the best remote desktop tools for Linux along with their pros and cons.]]></description><link>https://itsfoss.com/remote-desktop-tools/</link><guid isPermaLink="false">63a95b043f0e45a074ffb9c7</guid><category><![CDATA[Software Recommendation]]></category><dc:creator><![CDATA[Ankush Das]]></dc:creator><pubDate>Wed, 03 May 2023 07:42:05 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/list-of-remote-desktop-tools.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/list-of-remote-desktop-tools.png" alt="8 Best Remote Desktop Tools for Linux"><p>Remotely connecting to a computer has several advantages. Maybe you want to help troubleshoot an issue on your friend&apos;s desktop, or maybe you want to use another desktop session remotely for work.</p><p>Whatever your use case is, remote desktop tools on Linux allow you to connect easily. Of course, every tool is built differently. So, you can pick the one that suits your personal or professional requirements.</p><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x270B;</div><div class="kg-callout-text"><strong>Non-FOSS Warning!</strong> Some applications mentioned here are not open source. They have been included in the context of Linux usage. Such applications are duly marked.</div></div><p>Here are the best remote desktop tools for Linux:</p><h2 id="1-remmina">1. Remmina</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/remmina.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="1481" height="681" srcset="https://itsfoss.com/content/images/size/w600/2023/04/remmina.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/remmina.png 1000w, https://itsfoss.com/content/images/2023/04/remmina.png 1481w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://remmina.org/?ref=itsfoss.com">Remmina</a> is a versatile free and open-source remote desktop client with <strong>support for various protocols</strong> that include RDP, VNC, SPICE, X2GO, SSH, and HTTP(S). </p><p>If you want a capable open-source remote desktop tool, you cannot go wrong with it. </p><p>Along with the protocol support, it has features to let you easily take screenshots, resume connection, scale quality, configure resolutions, and more.</p><p>Moreover, the features can be extended with the help of plugins.</p><p><strong>Pros:</strong></p><ul><li>Written in GTK, providing native support to Linux distributions.</li><li>Quick connections are set up through the server address.</li><li>Ability to save connection profiles</li><li>Support for multiple protocols</li><li>Plugin to extend functionalities like Kiosk mode, Proxy support, terminal emulator, and more.</li></ul><p><strong>Cons:</strong></p><ul><li>Available only for Linux</li><li>It may not be very easy to use for new users</li></ul><p><strong>Installation </strong>&#x1F4E5; </p><p>Reminna is available in most of the distribution repositories. However, to ensure you get the latest version, you can install it as a Flatpak via <a href="https://flathub.org/apps/org.remmina.Remmina?ref=itsfoss.com">Flathub</a> or Snap, as you prefer. </p><p>For Flatpak, you can use the following command (if not using the software center) or follow our <a href="https://itsfoss.com/flatpak-guide/">Flatpak guide</a> to set it up.</p><pre><code>flatpak install flathub org.remmina.Remmina</code></pre><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/set-up-ssh-ubuntu/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Complete Guide to Configuring SSH in Ubuntu</div><div class="kg-bookmark-description">SSH has become the default method of accessing a remote Linux server these days. SSH stands for Secure Shell and it&#x2019;s a powerful, efficient, and popular network protocol used to establish communication between two computers in a remote fashion. And let&#x2019;s not forget the secure part of its</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Chris Patrick Carias Stas</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/05/set-up-ssh-ubuntu.jpg" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="2-gnome-connections">2. GNOME Connections</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/gnome-connections.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="1025" height="737" srcset="https://itsfoss.com/content/images/size/w600/2023/04/gnome-connections.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/gnome-connections.png 1000w, https://itsfoss.com/content/images/2023/04/gnome-connections.png 1025w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://apps.gnome.org/en-GB/app/org.gnome.Connections/?ref=itsfoss.com">GNOME Connections</a> is a <strong>straightforward app</strong> that lets you quickly connect to a remote desktop using RDP/VNC protocol.</p><p>It does not support other protocols or any fancy features. You get a simple one-click app with support for scaling, bandwidth tweaks, and a couple more options.</p><p><strong>Pros:</strong></p><ul><li>Easy to use and simple</li><li>Tailored for GNOME but can work on other desktop environments</li></ul><p><strong>Cons:</strong></p><ul><li>It does not support many protocols</li><li>It may not offer all kinds of functionalities for most, and no plugin support</li></ul><p><strong>Installation </strong>&#x1F4E5; </p><p>You can install GNOME Connections through <a href="https://flathub.org/apps/org.gnome.Connections?ref=itsfoss.com">Flathub</a> on any distro of your choice.</p><p>If you already have Flatpak setup, use the command below to install it via the terminal:</p><pre><code>flatpak install flathub org.gnome.Connections</code></pre><h2 id="3-x2go">3. X2Go</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/x2go-client.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="844" height="682" srcset="https://itsfoss.com/content/images/size/w600/2023/05/x2go-client.png 600w, https://itsfoss.com/content/images/2023/05/x2go-client.png 844w" sizes="(min-width: 720px) 720px"><figcaption>x2go screenshot</figcaption></figure><p><a href="https://wiki.x2go.org/doku.php/start?ref=itsfoss.com">X2Go</a> is an open-source, cross-platform remote desktop client with a client-server architecture. The remote machine must have an X2Go server installed, which should be a Linux system. And you can have X2Go client installed on any platform of your choice and then connect using it to the Linux remote system.</p><p>You can connect to Windows as well, using the client software, because you do not have the server available to be installed for other platforms.</p><p>So, X2Go is an excellent choice for users frequently connecting to Linux computers.</p><p><strong>Pros:</strong></p><ul><li>Linux server support</li><li>Cross-platform clients</li><li>SSH access, printer sharing, clipboard mode, and sound support</li></ul><p><strong>Cons:</strong></p><ul><li>It uses a modified <a href="https://en.wikipedia.org/wiki/NX_technology?ref=itsfoss.com">NX 3 protocol</a> and does not support other protocols</li></ul><p><strong>Installation </strong>&#x1F4E5; </p><p>X2Go client is available in the software center for Ubuntu. Alternatively, you can use the below command in Debian-based Linux distribution.</p><pre><code>sudo get install x2goclient</code></pre><p>To install the x2go server, use the below command:</p><pre><code>sudo add-apt-repository ppa:x2go/stable
sudo apt update
sudo apt install x2goserver x2goserver-xsession</code></pre><p>You can explore more on its <a href="https://wiki.x2go.org/doku.php/doc:installation:x2goserver?ref=itsfoss.com">official documentation</a>. </p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/improve-privacy/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">11 Ways to Improve Your Privacy</div><div class="kg-bookmark-description">Bring your A game to improve your privacy online, whether you are a Linux user or not. Follow these tips for a secure experience!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/ways-to-enhance-your-privacy.png" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="4-krdc">4. KRDC</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/krdc.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="985" height="542" srcset="https://itsfoss.com/content/images/size/w600/2023/05/krdc.png 600w, https://itsfoss.com/content/images/2023/05/krdc.png 985w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://apps.kde.org/krdc/?ref=itsfoss.com">KRDC</a> is a <strong>free and open-source remote desktop tool built by KDE</strong>. You can find it pre-installed in some KDE-powered distributions and install it on any distribution.</p><p>It supports two protocols that include RDP and VNC. You have all the essential options like scaling and remote session management.</p><p><strong>Pros:</strong></p><ul><li>Easy to use</li><li>Remember connection history</li><li>Native Linux support</li><li>Scaling support</li></ul><p><strong>Cons:</strong></p><ul><li>No cross-platform availability; Linux only</li></ul><p><strong>Installation </strong>&#x1F4E5; </p><p>You can find KRDC from KDE&apos;s Discover Center or install it using <a href="https://flathub.org/apps/org.kde.krdc?ref=itsfoss.com">Flathub</a> or Snap.</p><p>If you want to install the Flatpak via the terminal, use the command below:</p><pre><code>flatpak install flathub org.kde.krdc</code></pre><h2 id="5-tigervnc">5. TigerVNC</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/tigervnc-viewer.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="688" height="361" srcset="https://itsfoss.com/content/images/size/w600/2023/05/tigervnc-viewer.png 600w, https://itsfoss.com/content/images/2023/05/tigervnc-viewer.png 688w"></figure><p>TigerVNC is a free and open-source remote computer connection tool with a client-server architecture.</p><p>In other words, you need to install the server on the remote computer and the client program to connect from.</p><p>The client program is pretty simple, with essential options like display settings and multiple tweaks for compression. TigerVNC manages to <strong>provide you with a fast experience</strong> for the remote connection compared to some other options.</p><p><strong>Pros:</strong></p><ul><li>Cross-platform</li><li>Fast performance</li></ul><p><strong>Cons:</strong></p><ul><li>GUI feels dated</li><li>It does not support multiple protocols</li></ul><p><strong>Installation </strong>&#x1F4E5; </p><p>You can find packages from its <a href="https://github.com/TigerVNC/tigervnc/releases?ref=itsfoss.com">GitHub releases section</a> or grab the binaries on <a href="https://sourceforge.net/projects/tigervnc/files/stable/1.13.1/?ref=itsfoss.com">SourceForge</a>. Refer to our <a href="https://itsfoss.com/install-deb-files-ubuntu/">deb file installation</a> article if you need help with it.</p><h2 id="6-teamviewer-not-foss-">6. TeamViewer (Not FOSS)</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/teamviewer-linux.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="648" height="541" srcset="https://itsfoss.com/content/images/size/w600/2023/05/teamviewer-linux.png 600w, https://itsfoss.com/content/images/2023/05/teamviewer-linux.png 648w"></figure><p><a href="https://www.teamviewer.com/en/products/teamviewer/?ref=itsfoss.com">TeamViewer</a> is a <strong>popular tool </strong>available cross-platform, even with the option to connect through mobile devices. Interestingly, there&apos;s <strong>a web client available. So, to connect to other systems, you do not need the client installed on your computer.</strong></p><p>It is one of the oldest remote desktop-sharing tools out there. While it mentions <strong>experimental Wayland support exists, TeamViewer recommends an Xorg session</strong>.</p><p>Users frequently use TeamViewer for remote support and collaboration. While it is free for personal use cases, it needs a commercial license for businesses and enterprises.</p><p>Unlike some other options, you do not need an IP address. With TeamViewer installed on the remote computer, you get a <strong>unique ID</strong>, share it with the user you want to authorize connecting remotely, and that&apos;s it!</p><p><strong>Pros:</strong></p><ul><li>Intuitive user experience</li><li>Good for beginners</li><li>Mobile support</li></ul><p><strong>Cons:</strong></p><ul><li>Need to create an account to enable desktop sharing</li><li>Not a lightweight tool</li><li>Not open-source</li></ul><p><strong>Installation </strong>&#x1F4E5; </p><p>TeamViewer provides binaries for Linux distributions for easy installation. You can grab the .deb package for Ubuntu or refer to our <a href="https://itsfoss.com/teamviewer-linux/">TeamViewer guide</a> for help.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/teamviewer-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Install and Use TeamViewer on Linux [Complete Guide]</div><div class="kg-bookmark-description">Brief: Step-by-step beginner&#x2019;s guide to installing TeamViewer on Linux. It also explains how to use TeamViewer on Linux. TeamViewer is a remote desktop application primarily used to connect to a different system quickly and securely. It lets you remotely connect to someone&#x2019;s desktop, transfer f&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sreenath</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2017/11/install-teamviewer-on-linux.png" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="7-anydesk-not-foss-">7. AnyDesk (Not FOSS)</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/anydesk-linux.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="1245" height="763" srcset="https://itsfoss.com/content/images/size/w600/2023/05/anydesk-linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/anydesk-linux.png 1000w, https://itsfoss.com/content/images/2023/05/anydesk-linux.png 1245w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://anydesk.com/?ref=itsfoss.com">AnyDesk</a> is one of the industry-leading remote desktop tools with a nice feature set and secure access.</p><p>You can use it for free, along with mobile support for Android and iOS. You will need to purchase a license to unlock all of its features.</p><p><strong>Pros:</strong></p><ul><li>Cross-platform support</li><li>Mobile support</li></ul><p><strong>Cons:</strong></p><ul><li>Limited functionality for free</li><li>Not open-source</li></ul><p><strong>Installation </strong>&#x1F4E5; </p><p>You can find binaries for all kinds of Linux distributions on its <a href="https://anydesk.com/en/downloads/linux?ref=itsfoss.com">download page</a>, supporting Ubuntu, openSUSE, and RHEL.</p><h2 id="8-apache-guacamole">8. Apache Guacamole</h2><p><a href="https://guacamole.apache.org/?ref=itsfoss.com">Apache Guacamole</a> is a special remote desktop tool for cloud systems (or servers).</p><p>If your server runs an operating system, you can install Apache Guacamole and access it from any other platform via the web browser. Hence, it pitches itself as a clientless remote desktop gateway.</p><p><strong>Pros:</strong></p><ul><li>Tailored for cloud computing</li><li>Free and open-source</li></ul><p><strong>Cons:</strong></p><ul><li>A specialized tool not fit for everyone</li></ul><p><strong>Recommended Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/essential-linux-applications/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best Linux Software: 39 Essential Linux Apps [2023]</div><div class="kg-bookmark-description">What are the must-have applications for Linux? The answer is subjective. Here, we&#x2019;ve listed some of the best options.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/essential-linux-apps.png" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="wrapping-up">Wrapping Up</h2><p>There are some more open-source options like <a href="https://www.freerdp.com/?ref=itsfoss.com">FreeRDP</a> and <a href="http://www.xrdp.org/?ref=itsfoss.com">XRDP</a>. FreeRDP did not work for me, but it is actively maintained. So, you can give it a try.</p><p>XRDP needs to be installed from the source. Feel free to look at it if you want to go through the hassle of <a href="https://itsfoss.com/install-software-from-source-code/">compiling from source</a>.</p><p><strong>&#x1F5E8; <em>Let us know which one prefer from the list or if you have something else to suggest. We might update the list with your suggestion.</em></strong></p>]]></content:encoded></item><item><title><![CDATA[Rust Basics Series #6: Conditional Statements]]></title><description><![CDATA[You can control the flow of your program by using conditional statements. Learn to use if-else in Rust.]]></description><link>https://itsfoss.com/rust-if-else/</link><guid isPermaLink="false">63eb248f07eb195c59be7d21</guid><category><![CDATA[Rust]]></category><dc:creator><![CDATA[Pratham Patel]]></dc:creator><pubDate>Mon, 01 May 2023 04:38:35 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/conditonal-statements-in-rust-programming-language.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/conditonal-statements-in-rust-programming-language.png" alt="Rust Basics Series #6: Conditional Statements"><p>In the <a href="https://itsfoss.com/rust-functions">previous article</a> in this series, you looked at Functions. In this article, let&apos;s look at managing the control flow of our Rust program using conditional statements.</p><h2 id="what-are-conditional-statements">What are conditional statements?</h2><p>When writing some code, one of the most common tasks is to perform a check for certain conditions to be <code>true</code> or <code>false</code>. &quot;If the temperature is higher than 35&#xB0;C, turn on the air conditioner.&quot;</p><p>By using keywords like <code>if</code> and <code>else</code> (sometimes in combination), a programmer can change what the program does based on conditions like the number of arguments provided, the options passed from the command line, the names of files, error occurrence, etc.</p><p>So it is critical for a programmer to know control flow in any language, let alone in Rust.</p><h3 id="conditional-operators">Conditional operators</h3><p>The following table shows all the frequently used operators for an individual condition:</p><!--kg-card-begin: html--><table>
<thead>
<tr>
<th><strong>Operator</strong></th>
<th><strong>Example</strong></th>
<th><strong>Interpretation</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>&gt;</code></td>
<td><code>a &gt; b</code></td>
<td><code>a</code> is <strong>greater</strong> than <code>b</code></td>
</tr>

    <tr>
<td><code>&lt;</code></td>
<td><code>a &lt; b</code></td>
<td><code>a</code> is <strong>less</strong> than <code>b</code></td>
</tr>

<tr>
<td><code>==</code></td>
<td><code>a == b</code></td>
<td><code>a</code> is <strong>equal</strong> to <code>b</code></td>
</tr>
<tr>
<td><code>!=</code></td>
<td><code>a != b</code></td>
<td><code>a</code> is <strong>not equal</strong> to <code>b</code></td>
</tr>
<tr>
<td><code>&gt;=</code></td>
<td><code>a &gt;= b</code></td>
<td><code>a</code> is <strong>greater than</strong> OR <strong>equal</strong> to <code>b</code></td>
</tr>
<tr>
<td><code>&lt;=</code></td>
<td><code>a &lt;= b</code></td>
<td><code>a</code> is <strong>less than</strong> OR <strong>equal</strong> to <code>b</code></td>
</tr>
</tbody>
</table><!--kg-card-end: html--><p>And following is the table for logical operators, they are used between one or more conditions:</p><!--kg-card-begin: html--><table>
<thead>
<tr>
<th>Operator</th>
<th>Example</th>
<th>Interpretation</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>||</code> (Logical OR)</td>
<td><code>COND1 || COND2</code></td>
<td>At least one of the condition <code>COND1</code> or <code>COND2</code> evaluates to <code>true</code></td>
</tr>
<tr>
<td><code>&amp;&amp;</code> (Logical AND)</td>
<td><code>COND1 &amp;&amp; COND2</code></td>
<td><strong>All</strong> conditions evaluate to <code>true</code></td>
</tr>
<tr>
<td><code>!</code> (Logical NOT)</td>
<td><code>!COND</code></td>
<td>Opposite boolean value of what <code>COND</code> evaluates to</td>
</tr>
</tbody>
</table><!--kg-card-end: html--><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">Like in Mathematics, you can use parentheses (round brackets) to specify the precedence of an operation compared to others.</div></div><h2 id="using-if-else">Using if else</h2><p>To handle the basic flow of Rust code, two keywords are used: <code>if</code> and <code>else</code>. This helps you create two &quot;execution paths&quot; based on the state of the provided condition.</p><p>The syntax of a simple if block with an alternative execution path is as follows:</p><pre><code class="language-rust">if condition {
    &lt;statement(s)&gt;;
} else {
    &lt;statement(s)&gt;;
}</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">When only one condition is provided, enclosing it in round brackets is not compulsory. The use of round brackets is optional, according to the syntax. You should still use them to specify precedence and for better readability.</div></div><p>Let&apos;s look at an example.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let a = 36;
    let b = 25;

    if a &gt; b {
        println!(&quot;a is greater than b&quot;);
    } else {
        println!(&quot;b is greater than a&quot;);
    }
}</code></pre></section><!--kg-card-end: html--><p>Here, I have declared two integer variables <code>a</code> and <code>b</code> with the values &apos;36&apos; and &apos;25&apos;. On line 5, I check if the value stored in variable <code>a</code> is greater than the value stored in variable <code>b</code>. If the condition evaluates to <code>true</code>, the code on line 6 will be executed. If the condition evaluates to <code>false</code>, due to the fact that we have an <code>else</code> block (which is optional), the code on line 8 will get executed.</p><p>Let&apos;s verify this by looking at the program output.</p><pre><code>a is greater than b</code></pre><p>Perfect!</p><p>Let&apos;s modify the value of variable <code>a</code> to be less than value of variable <code>b</code> and see what happens. I will change <code>a</code>&apos;s value to &apos;10&apos;. Following is the output after this modification:</p><pre><code>b is greater than a</code></pre><p>But, what if I store the same value in variables <code>a</code> and <code>b</code>? To see this, I will set both variables&apos; value to be &apos;40&apos;. Following is the output after this particular modification:</p><pre><code>b is greater than a</code></pre><p>Huh? Logically, this doesn&apos;t make any sense... :(</p><p>But this can be improved! Continue reading.</p><h2 id="using-else-if-conditional">Using &apos;else if&apos; conditional</h2><p>Like any other programming language, you can put an <code>else if</code> block to provide more than two execution paths. The syntax is as follows:</p><pre><code class="language-rust">if condition {
    &lt;statement(s)&gt;;
} else if condition {
    &lt;statement(s)&gt;;
} else {
    &lt;statement(s)&gt;;
}</code></pre><p>Now, with the use of an <code>else if</code> block, I can improve the logic of my program. Following is the modified program.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let a = 40;
    let b = 40;

    if a == b {
        println!(&quot;a and b are equal&quot;);
    } else if a &gt; b {
        println!(&quot;a is greater than b&quot;);
    } else {
        println!(&quot;b is greater than a&quot;);
    }
}</code></pre></section><!--kg-card-end: html--><p>Now, the logic of my program is correct. It has handled all edge cases (that I can think of). The condition where <code>a</code> is equal to <code>b</code> is handled on line 5. The condition where <code>a</code> might be greater than <code>b</code> is handled on line 7. And, the condition where <code>a</code> is less than <code>b</code> is intrinsically handled by the <code>else</code> block on line 9.</p><p>Now, when I run this code, I get the following output:</p><pre><code>a and b are equal</code></pre><p>Now that&apos;s perfect!</p><h2 id="example-find-the-greatest">Example: Find the greatest</h2><p>I know that the use of <code>if</code> and <code>else</code> is easy, but let us look at one more program. This time, let&apos;s compare three numbers. I will also make use of a logical operator in this instance!</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let a = 73;
    let b = 56;
    let c = 15;

    if (a != b) &amp;&amp; (a != c) &amp;&amp; (b != c) {
        if (a &gt; b) &amp;&amp; (a &gt; c) {
            println!(&quot;a is the greatest&quot;);
        } else if (b &gt; a) &amp;&amp; (b &gt; c) {
            println!(&quot;b is the greatest&quot;);
        } else {
            println!(&quot;c is the greatest&quot;);
        }
    }
}</code></pre></section><!--kg-card-end: html--><p>This might look complicated at first sight, but fear not; I shall explain this!</p><p>Initially, I declare three variables <code>a</code>, <code>b</code> and <code>c</code> with random values that I could think of at that time. Then, on line 6, I check for the condition where no variable&apos;s value is same as any other variable. First, I check the values of <code>a</code> and <code>b</code>, then <code>a</code> and <code>c</code> and then <code>b</code> and <code>c</code>. This way I can be sure that there are no duplicate values stored in either variable.</p><p>Then, on line 7, I check if the value stored in variable <code>a</code> is the greatest. If that condition evaluates to <code>true</code>, code on line 8 gets executed. Otherwise the execution path on line 9 is checked.</p><p>On line 9, I check if the value stored in variable <code>b</code> is the greatest. If this condition evaluates to <code>true</code>, code on line 10 gets executed. If this condition is also <code>false</code>, then it means only one thing. Neither variable <code>a</code>, nor variable <code>b</code> is the greatest among all 3.</p><p>So naturally, in the <code>else</code> block, I print that the variable <code>c</code> holds the greatest value.</p><p>Let&apos;s verify this with the program output:</p><pre><code>a is the greatest</code></pre><p>And this is as expected. Try and modify the values assigned to each variable and test it out yourself! :)</p><h2 id="conclusion">Conclusion</h2><p>You learned to use if and else statements. Before you go on making your own AI with lost of if else-if statements (haha), let&apos; learn about loops in Rust in the next chapter of the series.</p><p>Stay tuned.</p>]]></content:encoded></item><item><title><![CDATA[11 Ways to Improve Your Privacy]]></title><description><![CDATA[Bring your A game to improve your privacy online, whether you are a Linux user or not. Follow these tips for a secure experience!]]></description><link>https://itsfoss.com/improve-privacy/</link><guid isPermaLink="false">6434f11315fc7e086e74c353</guid><category><![CDATA[Privacy]]></category><category><![CDATA[Guides]]></category><dc:creator><![CDATA[Ankush Das]]></dc:creator><pubDate>Sun, 30 Apr 2023 06:17:31 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/04/ways-to-enhance-your-privacy.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/04/ways-to-enhance-your-privacy.png" alt="11 Ways to Improve Your Privacy"><p>Slowly, users are moving to privacy-focused solutions instead of convenient options.</p><p>Why? Simply because many have realized the worth of their personal data.</p><p>Of course, protecting your privacy does not mean staying anonymous. But, taking control of privacy means that you do not share essential information with unauthorized parties while keeping your sensitive data private from everyone.</p><p>You can improve privacy on all kinds of devices you use. Here, I shall provide some proven methods to enhance privacy easily. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">The tips mentioned can be followed for every type of device and OS, not just Linux. You don&apos;t necessarily need to follow each and every point. These are mere suggestions. See, what works for you.</div></div><h2 id="1-secure-hide-your-email">1. Secure &amp; Hide Your Email </h2><p>Your email address is connected to everything online, whether banking or a cloud storage platform.</p><p>If your email remains private, you get less spam and fewer attempts to take over your account or trick you into downloading a malicious file from your email.</p><p>I think you get what I mean &#x1F643;</p><p>But&#x2026; you share your email address with every essential app/service you use. </p><p><strong>So, how can you not share them but still use them?</strong></p><p>You can use <strong>email aliases</strong> to keep your actual email address private. We have a list of <a href="https://itsfoss.com/protect-email-address/">tools to help protect your email address</a>. Choose any options like SimpleLogin or use the email alias addresses your email provider allows creating.</p><p>Also, try using <a href="https://itsfoss.com/secure-private-email-services/">secure email services</a> like Tutanota or <a href="https://itsfoss.click/protonmail?ref=itsfoss.com">ProtonMail</a> for the best experience.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">This article includes affiliate links, which give us a small commission if you purchase some services like Proton VPN, at no extra cost to you.</div></div><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/secure-private-email-services/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best Secure Email Services For Privacy Concerned People</div><div class="kg-bookmark-description">Can you call Gmail, Outlook, YahooMail etc secure email services? Well, they&#x2019;re definitely secure in the way that your data is (usually) safe from outside attackers. But when we talk of secure email service, the focus is on data security and privacy. Most of these free email services snoop</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2019/08/secure-email-services.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="2-secure-your-internet">2. Secure Your Internet</h2><p>With an exposed or insecure internet connection, an attacker can snoop on your web activity and potentially use it to gain vital information or affect your device data.</p><p>So, it is essential to keep your internet secure.</p><p>To achieve that, you can do a few things like:</p><ul><li>Use a secure or encrypted DNS like <a href="https://nextdns.io/?ref=itsfoss.com">NextDNS</a> or <a href="https://controld.com/?ref=itsfoss.com">ControlD</a></li><li>Use a VPN to encrypt your internet connection</li></ul><p><a href="https://go.getproton.me/aff_c?offer_id=10&amp;aff_id=1173&amp;ref=news.itsfoss.com">ProtonVPN</a> and Mullvad VPN would be two excellent options, offering open-source clients and Linux support.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/best-vpn-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best VPN Services for Privacy Minded Linux Users</div><div class="kg-bookmark-description">No matter whether you use Linux or Windows, ISPs spy all the time. Also, it is often your Internet Service Provider who enforces annoying restrictions, and throttles speed while tracking your online activity. I&#x2019;m not sure what might be the cause of a privacy breach for you &#x2013; but when</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2019/05/best-vpn-linux.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="3-secure-your-search-activity">3. Secure Your Search Activity</h2><p>Everyone utilizes a search engine to find what they are looking for.</p><p>For most of them, it is Google. It is the most popular website on the planet as of now.</p><p>But, it collects some of your data to improve its searchability and may also personalize the search results per your likes and other factors.</p><p>However, if you want an entirely private search experience and non-personalized results, <a href="https://itsfoss.com/privacy-search-engines/">privacy-friendly search engines</a> should be helpful.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/privacy-search-engines/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">10 Privacy Oriented Alternative Search Engines To Google</div><div class="kg-bookmark-description">Brief: In this age of the internet, you can never be too careful with your privacy. Use these alternative search engines that do not track you. Google &#x2014; unquestionably the best search engine out there (for most)- uses powerful and intelligent algorithms (including A.I. implementations) to let u&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2017/11/privacy-search-engine.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="4-use-a-privacy-focused-browser">4. Use a Privacy-Focused Browser</h2><p>Just like you use search engines, the browser is a vital means of the interaction process.</p><p>A browser with solid privacy and security features should help you enhance your browsing experience.</p><p>Personally, I could point you to <strong>Vivaldi, Firefox, and Brave</strong>. If you are keen to explore more options, look at our list of the <a href="https://itsfoss.com/best-browsers-ubuntu-linux/">best browsers for Linux</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/best-browsers-ubuntu-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Top 10 Best Browsers for Ubuntu Linux</div><div class="kg-bookmark-description">What are your options when it comes to web browsers for Linux? Here are the best web browsers you can pick for Ubuntu and other Linux distros.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/09/web-browser-ubuntu.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="5-do-not-install-a-program-you-dont-know">5. Do Not Install a Program You Don&apos;t Know</h2><p>Whether you use Linux or any other operating system, you should not install anything you are unaware of. Not all programs are privacy-friendly.</p><p>Some do not collect any data at all, and some do.</p><p>Yes, there are certain green flags that you can look for before picking a new software to install. Some of them include:</p><ul><li>It has a decent number of users (not entirely new).</li><li>It is incredibly popular.</li><li>It is open source and has a stable release.</li></ul><p>Some other pointers that you can keep in mind:</p><ul><li>Even if the program is proprietary, you should check out its popularity and privacy policy. </li><li>Usually, best to avoid new software tools.</li><li>Do not download email attachments without separately verifying them.</li><li>Download software from its official channels. Do not use third-party distribution websites to download packages unless they officially recommend it.</li></ul><h2 id="6-utilize-all-privacy-tweaks-and-options">6. Utilize All Privacy Tweaks and Options</h2><p>Every app, every operating system, and every service that you use provides some amount of privacy control.</p><p>For instance, you can hide your Instagram account from the public and only accept followers you know/want.</p><p>Similarly, when possible, I recommend you head to &#x201C;<strong>Privacy settings</strong>&#x201D; on your mobile phone, Linux desktop, and everything else.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/ubuntu-privacy.png" class="kg-image" alt="11 Ways to Improve Your Privacy" loading="lazy" width="1006" height="627" srcset="https://itsfoss.com/content/images/size/w600/2023/04/ubuntu-privacy.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/ubuntu-privacy.png 1000w, https://itsfoss.com/content/images/2023/04/ubuntu-privacy.png 1006w" sizes="(min-width: 720px) 720px"><figcaption>Privacy settings on Ubuntu Linux</figcaption></figure><p>It can be anything, deleting your old files, disabling diagnostics information sharing, and so on. If it sounds feasible to you, use the available option to your advantage.</p><h2 id="7-use-secure-password-managers">7. Use Secure Password Managers</h2><p>Passwords and credentials are at the center of everything. If you need to ensure they are well-protected and organized, use a good password manager.</p><p>I usually suggest <a href="https://bitwarden.com/?ref=itsfoss.com">Bitwarden</a> and KeePassXC for all kinds of users. </p><p>If you prefer keeping things offline, <a href="https://keepassxc.org/?ref=itsfoss.com">KeePassXC</a> is available cross-platform. And, if you want a cloud-based solution, Bitwarden should not disappoint.</p><p>You can also explore some <a href="https://itsfoss.com/password-managers-linux/">password managers for Linux users</a>.</p><h2 id="8-keep-your-notes-secure">8. Keep Your Notes Secure</h2><p>Taking notes can be a habit for some, and it can be a good/bad one.</p><p>Why do I say that? Well, notes often have sensitive information, sometimes passwords or PINs.</p><p>So, if you make sure that your notes are secure, it is one of the easiest ways to boost your privacy game.</p><p>Recommendations will include <a href="https://standardnotes.com/?ref=itsfoss.com">Standard Notes</a> and <a href="https://cryptpad.fr/?ref=itsfoss.com">CryptPad</a>. You can explore other options with end-to-end encryption or a variety of features:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/note-taking-apps-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Looking for Some Good Note Taking Apps on Linux? Here are the Best Notes Apps we Found for You</div><div class="kg-bookmark-description">No matter what you do &#x2014; taking notes is always a good habit. Yes, there are a lot of note taking apps to help you achieve that. But, what about some open-source note taking apps for Linux? Fret not, you don&#x2019;t need to endlessly search the Internet to find the</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2020/05/Note-Taking-Apps-linux.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="9-store-or-backup-on-a-private-cloud-platform">9. Store or Backup on a Private Cloud Platform</h2><p>Not everyone has the time or patience to maintain/configure a RAID setup to store/backup data at home.</p><p>So, cloud storage services are the usual solution.</p><p>My personal recommendations include <a href="https://mega.nz/aff=cGWF0mqjBJ0?ref=itsfoss.com">Mega</a> (end-to-end encryption), and <a href="https://partner.pcloud.com/r/1935?ref=itsfoss.com">pCloud</a>. But I suggest you check out our <a href="https://itsfoss.com/cloud-services-linux/">list of cloud storage services</a> to explore better options.</p><p>Additionally, you can encrypt your files before uploading them to the cloud thanks to solutions like <a href="https://cryptomator.org/?ref=itsfoss.com">Cryptomator</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/cloud-services-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Top 10 Best Free Cloud Storage Services for Linux</div><div class="kg-bookmark-description">Which cloud service is the best for Linux? Check out this list of free cloud storage services that you can use in Linux.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2016/02/Linux-cloud-services.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="10-use-private-messengers">10. Use Private Messengers</h2><p>You can always utilize open-source and encrypted messengers like <a href="https://www.signal.org/?ref=itsfoss.com">Signal</a> (cross-platform) to secure your communications.</p><p>There are <a href="https://itsfoss.com/private-whatsapp-alternatives/">multiple WhatsApp alternatives</a> that you can explore for personal use.</p><p>If it is for your business, <a href="https://itsfoss.com/open-source-slack-alternative/">open source Slack alternatives</a> should help.</p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/best-matrix-clients/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">9 Best Matrix Clients for Decentralized Messaging</div><div class="kg-bookmark-description">Matrix is an open network standard tailored for secure decentralized real-time communication. It is published and maintained by a non-profit, Matrix.org Foundation. They aim to create an open, independent, and evolving communication platform. If an application supports the Matrix protocol,&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/06/best-matrix-clients.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="11-specialized-distributions">11. Specialized Distributions </h2><p>If you are adventurous and want to try an entirely different operating system tailored to give you a private experience, you can pick <a href="https://tails.boum.org/?ref=itsfoss.com">Tails OS</a>, <a href="https://www.whonix.org/?ref=itsfoss.com">Whonix</a>, and similar options.</p><p>Some are built to erase your activity as soon as you finish it. And some of them feature special security features, which could be overwhelming for daily usage. </p><p>If you are curious, explore the <a href="https://itsfoss.com/privacy-focused-linux-distributions/">best privacy-focused Linux distributions</a>.</p><p>&#x1F928; <strong>Still, confused about what you want to do? </strong></p><p>I have a separate article listing some of the best browsers, VPNs, messengers, etc., for privacy-focused users. You can always refer to that if you cannot decide what you want to pick to take control of your privacy.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/privacy-tools"><div class="kg-bookmark-content"><div class="kg-bookmark-title">12 Simple Tools to Protect Your Privacy</div><div class="kg-bookmark-description">Quick ways to enhance online privacy? Use these simple tools to take control of your data easily.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/02/privacy-tools-ft.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Install and Use Qemu on Ubuntu]]></title><description><![CDATA[Learn how to properly install Qemu in Ubuntu and then configure a Linux distro in VM.]]></description><link>https://itsfoss.com/qemu-ubuntu/</link><guid isPermaLink="false">643632e70e8d58f1afef844c</guid><category><![CDATA[Tutorial]]></category><category><![CDATA[Ubuntu]]></category><dc:creator><![CDATA[Sagar Sharma]]></dc:creator><pubDate>Sat, 29 Apr 2023 10:07:17 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/04/install-qemu-on-ubuntu.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/04/install-qemu-on-ubuntu.png" alt="Install and Use Qemu on Ubuntu"><p>If you need to run Linux virtual machines, Qemu is one of the fastest hypervisors out there, if not the fastest.</p><p>Along with the speed, you also get excellent configuration options. Even if you are not an advanced user, it gives you enough room for tweaks.</p><p>In this tutorial, I will walk you through:</p><ul><li>Installing Qemu and KVM on Ubuntu </li><li>Installing another distro on Qemu</li><li>Enabling shared folder, auto-resize, and copy-paste in Qemu (optional but makes your VM experience smoother)</li></ul><p>So let&apos;s start with the installation.</p><h2 id="installing-qemu-and-kvm-on-ubuntu">Installing Qemu and KVM on Ubuntu</h2><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-emoji">&#x270B;</div><div class="kg-callout-text">Before jumping to the installation, let&apos;s check whether your machine supports the virtualization or not.&#xA0;</div></div><p>To do so, use the following command:</p><pre><code>LC_ALL=C lscpu | grep Virtualization</code></pre><p>If you have an intel processor, it should bring the following output:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/check-where-the-computer-supports-hardware-based-virtualization-or-not.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="837" height="141" srcset="https://itsfoss.com/content/images/size/w600/2023/04/check-where-the-computer-supports-hardware-based-virtualization-or-not.png 600w, https://itsfoss.com/content/images/2023/04/check-where-the-computer-supports-hardware-based-virtualization-or-not.png 837w" sizes="(min-width: 720px) 720px"></figure><p>And if you have an AMD processor, it should get you the following output:</p><pre><code>Virtualization:                  AMD-V</code></pre><p>Also, <a href="https://linuxhandbook.com/check-cpu-info-linux/?ref=itsfoss.com">make sure your system has multiple cores</a> so that you can allocate some to your VM and still have enough to power the host machine. </p><p>And if you&apos;re not sure, use the following command and the<strong> output should be more than zero:</strong></p><pre><code>egrep -c &apos;(vmx|svm)&apos; /proc/cpuinfo</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Check-total-number-of-cores-and-threads-of-system-in-linux.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="837" height="141" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Check-total-number-of-cores-and-threads-of-system-in-linux.png 600w, https://itsfoss.com/content/images/2023/04/Check-total-number-of-cores-and-threads-of-system-in-linux.png 837w" sizes="(min-width: 720px) 720px"></figure><p>Once you are all set, you can install Qemu and KVM on Ubuntu using the following command:</p><pre><code>sudo apt install qemu qemu-kvm virt-manager bridge-utils</code></pre><p><strong>Reboot your system </strong>once the installation is over.</p><h3 id="add-user-to-appropriate-groups">Add user to appropriate groups</h3><p>To make Qemu work, you&apos;d have to <a href="https://learnubuntu.com/add-user-group/?ref=itsfoss.com">add your user to two groups</a>: <code>libvirt-kvm</code> and <code>libvirt</code>.</p><p>To do so, use the following commands one by one:</p><pre><code>sudo useradd -g $USER libvirt</code></pre><pre><code>sudo useradd -g $USER libvirt-kvm</code></pre><p>Next, enable and start the <code>libvirt</code> service:</p><pre><code>sudo systemctl enable libvirtd.service &amp;&amp; sudo systemctl start libvirtd.service</code></pre><p>That&apos;s it! The installation of Qemu is done. </p><h2 id="installing-another-linux-virtually-with-qemu">Installing another Linux virtually with Qemu</h2><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">Please download the ISO file of the Linux distro you want to install in Qemu VM.</div></div><p>First, open the Virtual Machine Manager from the system menu:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Start-Qemu-from-the-system-menu-1.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1070" height="236" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Start-Qemu-from-the-system-menu-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Start-Qemu-from-the-system-menu-1.png 1000w, https://itsfoss.com/content/images/2023/04/Start-Qemu-from-the-system-menu-1.png 1070w" sizes="(min-width: 720px) 720px"></figure><p>Next, click on the File menu and choose the <code>New Virtual Machine</code> option:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Create-new-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="794" height="312" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Create-new-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Create-new-VM-in-Qemu.png 794w" sizes="(min-width: 720px) 720px"><figcaption>Click File -&gt; New Virtual Machine</figcaption></figure><p>From here, choose the first option <code>Local install media</code> which will allow you to choose the ISO from your file manager:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Choose-the-local-ISO-file-to-create-new-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="523" height="560"><figcaption>Select Local Install Media</figcaption></figure><p>Next, you will be asked to add the ISO file. Here, <strong>click on the Browse button; it</strong> will open a new prompt, and there, <strong>click on the browse local.</strong></p><p>It will open the file manager and from there, select the ISO file:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Import-the-ISO-file-in-QEMU.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1108" height="816" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Import-the-ISO-file-in-QEMU.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Import-the-ISO-file-in-QEMU.png 1000w, https://itsfoss.com/content/images/2023/04/Import-the-ISO-file-in-QEMU.png 1108w" sizes="(min-width: 720px) 720px"></figure><p><strong>In most cases, the ISO file will be detected but if you find a situation where it does not detect it automatically, follow the given steps:</strong></p><ol><li>Uncheck the Automatically detect from the source option</li><li>Choose the <code>Generic Linux</code> option </li></ol><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Deal-with-ISO-not-detected-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="938" height="560" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Deal-with-ISO-not-detected-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Deal-with-ISO-not-detected-in-Qemu.png 938w" sizes="(min-width: 720px) 720px"></figure><p>Next, you will be asked to allocate memory and storage as per your needs. I would recommend going with a minimum of 2 cores, 4 GB of RAM, and 25 GB of storage for the desktop version:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Allocate-RAM--cores-and-storage-space-to-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="816" height="831" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Allocate-RAM--cores-and-storage-space-to-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Allocate-RAM--cores-and-storage-space-to-VM-in-Qemu.png 816w" sizes="(min-width: 720px) 720px"><figcaption>Allocate resources to VM</figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">Except for the disk space, system resources like CPU and RAM are only used when running the OS in VM.</div></div><p>And finally, give the appropriate name to your VM; once done, click on the finish button:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Name-your-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="603" height="560" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Name-your-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Name-your-VM-in-Qemu.png 603w"><figcaption>Name your VM</figcaption></figure><p>It will load the ISO, so you can start the installation from here. </p><p>That&apos;s done. You may enjoy your VM but you&apos;ll even enjoy it better if you enable shared folder, clipboard sharing, etc. The following few sections show how to do that.</p><h2 id="enabling-shared-folders-in-qemu-optional">Enabling shared folders in Qemu (optional)</h2><p>In this section, I will show you how you can share the existing directory of the host machine with the VM. </p><p>To do so, you&apos;d have to perform the following:</p><ul><li>Adding a shared filesystem through VM settings in Qemu</li><li>Mounting the FS in the VM </li></ul><p>So first, open the Virtual Machine Manager from the system menu, select the VM, and click the <code>Open</code> button to manage the console:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/open-the-settings-for-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1153" height="360" srcset="https://itsfoss.com/content/images/size/w600/2023/04/open-the-settings-for-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/open-the-settings-for-VM-in-Qemu.png 1000w, https://itsfoss.com/content/images/2023/04/open-the-settings-for-VM-in-Qemu.png 1153w" sizes="(min-width: 720px) 720px"></figure><p>Now, click on the info button, select the <code>Memory</code> and enable the shared memory:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/enable-shared-memory-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1024" height="718" srcset="https://itsfoss.com/content/images/size/w600/2023/04/enable-shared-memory-in-Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/enable-shared-memory-in-Qemu.png 1000w, https://itsfoss.com/content/images/2023/04/enable-shared-memory-in-Qemu.png 1024w" sizes="(min-width: 720px) 720px"></figure><p>Next, click on the <code>Add Hardware</code> button, select the <code>Filesystem</code> option.</p><p>Here, you&apos;d have to do the following:</p><ul><li>Add a path to the directory you want to share in the <code>Source path</code> section</li><li>Add the name of the directory in the <code>Target path</code> section</li></ul><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/enable-shared-directory-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1477" height="801" srcset="https://itsfoss.com/content/images/size/w600/2023/04/enable-shared-directory-in-Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/enable-shared-directory-in-Qemu.png 1000w, https://itsfoss.com/content/images/2023/04/enable-shared-directory-in-Qemu.png 1477w" sizes="(min-width: 720px) 720px"></figure><p>Once done, click on the Finish button and start the VM. <a href="https://itsfoss.com/make-directories/">Create a directory</a> in the same location with the same name and location in the VM</p><p>In VM, open the terminal and use the following syntax to mount the shared directory:</p><pre><code>sudo mount -t virtiofs sharename path/to/shared/directory</code></pre><p>In my case, it was the <code>Downloads</code> directory, so I will be using the following:</p><pre><code>sudo mount -t virtiofs Downloads /home/sagar/Downloads</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/use-shared-folders-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="837" height="130" srcset="https://itsfoss.com/content/images/size/w600/2023/04/use-shared-folders-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/use-shared-folders-in-Qemu.png 837w" sizes="(min-width: 720px) 720px"></figure><p>That&apos;s it! </p><p><strong>But that&apos;s a temporary solution.</strong> </p><p>To make it permanent, you&apos;d have to make create an entry in <code>/etc/fstab</code> In the VM.</p><p>To do so, first, open the <code>/etc/fstab</code> config file using the following:</p><pre><code>sudo nano /etc/fstab</code></pre><p><a href="https://linuxhandbook.com/beginning-end-file-nano/?ref=itsfoss.com">Go to the end of the file in the nano text editor</a> using <code>Alt + /</code> and use the following syntax to create an entry:</p><pre><code>sharename           path/to/shared/directory    virtiofs    defaults        0       0</code></pre><p>Here&apos;s what my config looks like:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Make-shared-folders-in-Qemu-permenent.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="989" height="220" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Make-shared-folders-in-Qemu-permenent.png 600w, https://itsfoss.com/content/images/2023/04/Make-shared-folders-in-Qemu-permenent.png 989w" sizes="(min-width: 720px) 720px"></figure><p>Once done, <a href="https://linuxhandbook.com/nano-save-exit/?ref=itsfoss.com">save changes and exit from the nano</a> text editor.</p><p>Here I&apos;ve shown how I created a new file in my host machine in the <code>Downloads</code> directory and the changes were reflected in my VM:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/use-shared-folder-in-Qemu.gif" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1063" height="507" srcset="https://itsfoss.com/content/images/size/w600/2023/04/use-shared-folder-in-Qemu.gif 600w, https://itsfoss.com/content/images/size/w1000/2023/04/use-shared-folder-in-Qemu.gif 1000w, https://itsfoss.com/content/images/2023/04/use-shared-folder-in-Qemu.gif 1063w" sizes="(min-width: 720px) 720px"></figure><p>So now you can use this shared folder to transfer files between the host and VM without any issues!</p><h2 id="enabling-shared-clipboard-in-qemu-optional">Enabling shared clipboard in Qemu (optional)</h2><p>To enable the shared clipboard, all you have to do is install the &#xA0;<code>spice-vdagent</code> utility in the VM.</p><p>So if your VM is Ubuntu/Debian based, you can use the following:</p><pre><code>sudo apt install spice-vdagent</code></pre><p>For Arch base:</p><pre><code>sudo pacman -S spice-vdagent</code></pre><p>For Fedora-based distros:</p><pre><code>sudo yum install spice-vdagent</code></pre><p>Once you are done with the installation, <strong>reboot your VM</strong>, and the clipboard should work as intended!</p><h2 id="enabling-auto-resize-in-qemu-optional">Enabling auto-resize in Qemu (optional)</h2><p>The auto-resize feature is nothing but when you resize the VM window, the VM display will adapt to the change in size immediately:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Auto-resize-in-Qemu-1.gif" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1114" height="881" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Auto-resize-in-Qemu-1.gif 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Auto-resize-in-Qemu-1.gif 1000w, https://itsfoss.com/content/images/2023/04/Auto-resize-in-Qemu-1.gif 1114w" sizes="(min-width: 720px) 720px"></figure><p>To enable the auto-resize in Qemu, you will have to follow 2 simple steps:</p><ol><li>Click on the <code>View</code> (from top menubar)</li><li>Select the <code>Scale Display</code> option and choose the <code>Always</code> option</li></ol><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Enable_auto-resize_in_Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1121" height="791" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Enable_auto-resize_in_Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Enable_auto-resize_in_Qemu.png 1000w, https://itsfoss.com/content/images/2023/05/Enable_auto-resize_in_Qemu.png 1121w" sizes="(min-width: 720px) 720px"></figure><p>That&apos;s it from my side.</p><h2 id="want-to-use-a-plug-and-play-version-of-qemu">Want to use a plug-and-play version of Qemu?</h2><p>In this tutorial, I went through how you can manually install a VM in Qemu but what if I tell you that you can automate the whole process, like allocating storage, RAM, etc?</p><p>Yes, it gives the same efficiency but comes in handy when you want to create a new VM ASAP! The tool is called Quickgui and we have a dedicated tutorial for the installation:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/quickgui/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Create Virtual Machines Easily With QEMU-based Quickgui</div><div class="kg-bookmark-description">Quickgui aims to be a simpler alternative to VirtualBox and help create virtual machines quickly. Let us take a look at it.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="Install and Use Qemu on Ubuntu"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/11/Quickgui.png" alt="Install and Use Qemu on Ubuntu"></div></a></figure><p>I hope you will find this guide helpful. And if you have any queries, feel free to ask in the comments.</p>]]></content:encoded></item><item><title><![CDATA[7 Super Lightweight Linux Distros]]></title><description><![CDATA[Light as a feather! These super small, lightweight Linux distributions should be interesting to try.]]></description><link>https://itsfoss.com/super-lightweight-distros/</link><guid isPermaLink="false">6447a75ac1891068af3a22b6</guid><category><![CDATA[Distros]]></category><dc:creator><![CDATA[Ankush Das]]></dc:creator><pubDate>Fri, 28 Apr 2023 06:04:22 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/04/super-lightweight-distros.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/04/super-lightweight-distros.png" alt="7 Super Lightweight Linux Distros"><p>The variety of Linux distributions available is not a disadvantage but a helpful trait.</p><p>There is something for everyone. And here, we want to address the options tailored for users who wish to run Linux on dated hardware and systems with shallow storage space.</p><p>Or maybe, you want the operating system to occupy the least space while you can carry out specific tasks on your computer?</p><p>So, let me highlight some super lightweight Linux distros for such use cases.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">A distribution with minimal system requirements and storage may not be able to provide a convenient desktop experience for everyone. You might have to adjust to certain things when using such distros.</div></div><h2 id="1-tiny-core">1. Tiny Core</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/tiny-core-linux.png" class="kg-image" alt="7 Super Lightweight Linux Distros" loading="lazy" width="1024" height="768" srcset="https://itsfoss.com/content/images/size/w600/2023/04/tiny-core-linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/tiny-core-linux.png 1000w, https://itsfoss.com/content/images/2023/04/tiny-core-linux.png 1024w" sizes="(min-width: 720px) 720px"></figure><p><a href="http://tinycorelinux.net/?ref=itsfoss.com">Tiny Core</a>, aka The Core x86 Project, is a modular Linux distribution offering different super small ISO files featuring the distro variants.</p><p>The smallest is the &quot;<strong>Core</strong>&quot; edition (<strong>17 MB</strong>), which provides a command line interface and some tools without any graphical desktop environment. The second is <strong>TinyCore</strong> (<strong>23 MB</strong>), which includes the base system and GUI extensions for a graphical desktop environment.</p><p>Ultimately, a <strong>CorePlus ISO</strong> (<strong>248 MB</strong>) is tailored for new users, with support for wireless networks, a choice for window managers, and some other GUI tools to help install the distro.</p><p>The size of the distro has grown over the years. However, it is still something impressive.</p><h2 id="2-puppy-linux">2. Puppy Linux</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/puppy-linux.jpg" class="kg-image" alt="7 Super Lightweight Linux Distros" loading="lazy" width="795" height="595" srcset="https://itsfoss.com/content/images/size/w600/2023/04/puppy-linux.jpg 600w, https://itsfoss.com/content/images/2023/04/puppy-linux.jpg 795w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://puppylinux-woof-ce.github.io/?ref=itsfoss.com">Puppy Linux</a> is a popular name known for its minimal file size and ease of use. It is the oldest option in this list here, all the way back from <strong>2003</strong>.</p><p>The ISO file sizes range from 300-400 MB, depending on your chosen variant.</p><p>Yes, Puppy Linux is not a single Linux distro. The project uses other distros and rebuilds them using its system builder, adds its applications, and configures so that the ISO usually ends up less than 500 MB in size.</p><p>You can find puppy variants of <strong>Ubuntu, Raspbian, and Slackware in 32-bit and 64-bit editions.</strong></p><h2 id="3-slitaz">3. SliTaz</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/slitaz.jpg" class="kg-image" alt="7 Super Lightweight Linux Distros" loading="lazy" width="532" height="333"></figure><p><a href="https://www.slitaz.org/en/?ref=itsfoss.com">SliTaz</a> is an interesting <a href="https://itsfoss.com/rolling-release/">rolling-release distribution</a> with all the essentials for a usable desktop experience.</p><p>All of this is in just <strong>43 MB</strong> ISO. Surprising, isn&apos;t it? Unlike TinyCore, you get a GUI while saving much storage space. </p><p>It is entirely built from scratch, making it an independent distribution. SliTaz may not be suitable for beginners, but it does include utilities that help you install the essentials and get started with a minimal learning curve.</p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/independent-linux-distros/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">13 Independent Linux Distros That are Built From Scratch</div><div class="kg-bookmark-description">Unique and independent Linux distributions that are totally built from scratch. Sounds interesting? Check out the list here.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Super Lightweight Linux Distros"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sreenath</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/08/independent-linux-distros.png" alt="7 Super Lightweight Linux Distros"></div></a></figure><h2 id="4-bodhi-linux">4. Bodhi Linux</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/bodhi-linux-6.jpg" class="kg-image" alt="7 Super Lightweight Linux Distros" loading="lazy" width="1200" height="675" srcset="https://itsfoss.com/content/images/size/w600/2023/04/bodhi-linux-6.jpg 600w, https://itsfoss.com/content/images/size/w1000/2023/04/bodhi-linux-6.jpg 1000w, https://itsfoss.com/content/images/2023/04/bodhi-linux-6.jpg 1200w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://www.bodhilinux.com/?ref=itsfoss.com">Bodhi Linux</a> is one of the popular <a href="https://itsfoss.com/lightweight-linux-beginners/">lightweight Linux distributions</a> based on Ubuntu. If you want a lightweight option and a convenient user experience, Bodhi Linux, with its Moksha desktop, is the answer.</p><p>The ISO size is less than 900 MB. So, yes, it may not be the lightest among the alternatives, but you cannot go wrong if you do not want to compromise your experience.</p><h2 id="5-antix-linux">5. AntiX Linux</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/antix.jpg" class="kg-image" alt="7 Super Lightweight Linux Distros" loading="lazy" width="1357" height="758" srcset="https://itsfoss.com/content/images/size/w600/2023/04/antix.jpg 600w, https://itsfoss.com/content/images/size/w1000/2023/04/antix.jpg 1000w, https://itsfoss.com/content/images/2023/04/antix.jpg 1357w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://antixlinux.com/?ref=itsfoss.com">AntiX Linux</a> is built on top of Debian&apos;s stable branch. It is one of the <a href="https://itsfoss.com/32-bit-linux-distributions/">distros that support 32-bit systems</a>.</p><p>It offers different variants that include: <strong>Full, Base, Core, and net</strong>. The full version is a little over 1 GB, packed with many pre-installed applications. The base is around 800 MB with a GUI (window manager). </p><p>The other editions do not offer a GUI, which is less than 500 MB.</p><p>If you did not know, AntiX Linux supports two different init systems SysVinit or runit. So, AntiX Linux is one of the <a href="https://itsfoss.com/systemd-free-distros/">Systemd-free distros</a> as well.</p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/32-bit-linux-distributions/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Top 15 Linux Distros That Still Support 32 Bit Systems</div><div class="kg-bookmark-description">If you have vintage hardware with 32-bit processor and you would like to keep on using it, here are the best choices of Linux distros with 32-bit support.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Super Lightweight Linux Distros"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2020/11/32-bit-linux.png" alt="7 Super Lightweight Linux Distros"></div></a></figure><h2 id="6-porteus">6. Porteus</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/porteus-linux.jpg" class="kg-image" alt="7 Super Lightweight Linux Distros" loading="lazy" width="1345" height="765" srcset="https://itsfoss.com/content/images/size/w600/2023/04/porteus-linux.jpg 600w, https://itsfoss.com/content/images/size/w1000/2023/04/porteus-linux.jpg 1000w, https://itsfoss.com/content/images/2023/04/porteus-linux.jpg 1345w" sizes="(min-width: 720px) 720px"></figure><p><a href="http://www.porteus.org/?ref=itsfoss.com">Porteus Linux</a> is a distro optimized for minimal hardware featuring an ISO image less than 300 MB in size.</p><p>It supports both 32-bit and 64-bit systems. Porteus is based on Slackware and offers two editions, one for desktops and the other for kiosks (web terminals).</p><p>You get different desktop flavors with Porteus that include GNOME and KDE. So, you can have a familiar desktop experience in such a tiny package.</p><h2 id="7-archbang-linux">7. ArchBang Linux</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/archbang-linux.jpg" class="kg-image" alt="7 Super Lightweight Linux Distros" loading="lazy" width="1275" height="800" srcset="https://itsfoss.com/content/images/size/w600/2023/04/archbang-linux.jpg 600w, https://itsfoss.com/content/images/size/w1000/2023/04/archbang-linux.jpg 1000w, https://itsfoss.com/content/images/2023/04/archbang-linux.jpg 1275w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://archbang.org/?ref=itsfoss.com">ArchBang</a> is an Arch-based distro that uses the i3 window manager to offer a lightweight experience under a 1 GB ISO file size.</p><p>If you want to use a minimal Arch Linux experience with some added convenience, ArchBang is a good option.</p><p>You can follow our <a href="https://itsfoss.com/install-archbang/">ArchBang installation guide</a> to get started. </p><p>Additionally, you can refer to our <a href="https://itsfoss.com/i3-customization/">i3 customization guide</a> if you want to customize the look of ArchBang Linux.</p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/i3-customization/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">The Ultimate Guide to i3 Customization in Linux</div><div class="kg-bookmark-description">Learn about customizing your system&#x2019;s look and feel with i3 window manager in this super-detailed guide.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Super Lightweight Linux Distros"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sagar Sharma</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/i3-customisation-guide.png" alt="7 Super Lightweight Linux Distros"></div></a></figure><h2 id="save-your-system-resources-for-a-fast-experience">Save Your System Resources for a Fast Experience</h2><p>These distributions are some of your best options to install if you want to save system resources and still be able to carry out basic tasks.</p><p>Considering the lack of pre-installed applications and utilities, you may not be able to do everything on some of these distros. However, our handpicked choices should give you a usable desktop experience.</p><p><strong>Recommended Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/lightweight-linux-beginners/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">16 Best Lightweight Linux Distributions for Older Computers</div><div class="kg-bookmark-description">Don&#x2019;t throw your old computer just yet. Use a lightweight Linux distro and revive that decades-old system.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="7 Super Lightweight Linux Distros"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2015/08/light-linux-distros.jpg" alt="7 Super Lightweight Linux Distros"></div></a></figure><p>Have you ever used such a distribution? How&apos;s your experience with it?</p>]]></content:encoded></item><item><title><![CDATA[FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More]]></title><description><![CDATA[An in-depth i3 customization guide, Opera's new browser and a real open source chatGPT alternative are the highlights of this edition.]]></description><link>https://itsfoss.com/newsletter/foss-weekly-23-17/</link><guid isPermaLink="false">6449019fc1891068af3a2792</guid><category><![CDATA[Newsletter]]></category><dc:creator><![CDATA[Abhishek Prakash]]></dc:creator><pubDate>Thu, 27 Apr 2023 07:05:58 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/04/foss-weekly-23-17.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/04/foss-weekly-23-17.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><p>Last week you saw a slew of Ubuntu 23.04-based releases; this week, we get the Linux kernel 6.3.</p><p>This week also sees the continuation of our Rust Basics series!</p><p><strong>&#x1F4AC; Let&apos;s see what else you have in this edition of FOSS Weekly:</strong></p><ul><li>A super detailed guide to i3 window manager customization</li><li>Opera&apos;s new web browser in making</li><li>Open source chatGPT alternative</li><li>More Linux news, videos, and of course, memes!</li></ul><hr><h2 id="%F0%9F%93%B0-linux-news">&#x1F4F0; Linux News</h2><ul><li>Proton launched an <a href="https://news.itsfoss.com/proton-pass/?ref=itsfoss.com">open-source password manager</a>, set to compete against the likes of Bitwarden and LastPass.</li><li>Solus Linux is <a href="https://news.itsfoss.com/solus-revival/?ref=itsfoss.com">going through major changes</a>, to be rebased on SerpentOS.</li><li>Opera One is the <a href="https://news.itsfoss.com/opera-one-browser/?ref=itsfoss.com">next evolution</a> in Opera&apos;s browser lineup, with a dedicated Linux version.</li><li>Manjaro 22.1 &apos;Talos&apos; was <a href="https://forum.manjaro.org/t/manjaro-22-1-talos-released/139155?ref=itsfoss.com">recently released</a> with many improvements.</li><li>Ubuntu Cinnamon &apos;23.04&apos; was also released <a href="https://ubuntucinnamon.org/ubuntu-cinnamon-23-04-lunar-lobster-released/?ref=itsfoss.com">earlier this week</a>.</li></ul><p>Linux Kernel 6.3 was released with prep work for Intel Arrow Lake and more.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/linux-kernel-6-3/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Linux Kernel 6.3 Release Preps for Future Intel Hardware and Enhances AMD Chip Support</div><div class="kg-bookmark-description">Linux Kernel 6.3 lands right on schedule looking ahead to the future!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/04/linux-kernel-6-3-release.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><h2 id="%F0%9F%A7%A0-what-we%E2%80%99re-thinking-about">&#x1F9E0; What we&#x2019;re thinking about</h2><p>IBM has been giving mixed signals lately; on one hand, they are letting go of people, and on the other, they are hiring new employees. </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://wraltechwire.com/2023/04/20/ibm-keeps-hiring-despite-layoffs-ceo-krishna-says-earnings-report-boosts-stock/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">IBM keeps hiring despite layoffs, CEO Krishna says; earnings report boosts stock | WRAL TechWire</div><div class="kg-bookmark-description">Big Blue made headlines with recent plans to cut 3,900 workers but it turns out the tech giant is actually adding more talent even with the number of job cuts growing.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://wraltechwire.com/wp-content/uploads/2017/11/cropped-WRALTechWire-SiteIcon-270x270.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><span class="kg-bookmark-author">WRAL TechWire</span><span class="kg-bookmark-publisher">WRAL TechWire</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://wraltechwire.com/wp-content/uploads/2020/04/Arvind_Krishna-135-e1586173008504.jpg" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><p>So, what gives? Especially when their subsidiary, Red Hat, just announced major job cuts.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/red-hat-layoffs/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Red Hat Announces Major Job Cuts, Hundreds to Be Affected</div><div class="kg-bookmark-description">Even Red Hat cannot escape from the recession wave.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><span class="kg-bookmark-author">It&apos;s FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/04/redhat-layoffs.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><h2 id="%F0%9F%A7%AE-tutorials">&#x1F9EE; Tutorials</h2><p>Here&apos;s our ultimate guide to customizing your Linux experience using the i3 Window Manager.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/i3-customization/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">The Ultimate Guide to i3 Customization in Linux</div><div class="kg-bookmark-description">Learn about customizing your system&#x2019;s look and feel with i3 window manager in this super-detailed guide.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sagar Sharma</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/i3-customisation-guide.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><p>The fifth tutorial in the Rust Basics series covers the use of functions in Rust.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/rust-functions/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Rust Basics Series #5: Functions in Rust</div><div class="kg-bookmark-description">In this chapter of the Rust Basics series, learn to use functions and return values from them with the help of examples.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Pratham Patel</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/functions-in-rust-programming-language.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><hr><h2 id="%F0%9F%93%B9-what-we-are-watching">&#x1F4F9; What we are watching</h2><p>Here&apos;s a good video showing how to install Linux OS on Microsoft Surface device.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/BreV6N0GApk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Installing Linux on my Microsoft Surface Laptop 3 (Ubuntu 22.04 | Linux-Surface Kernel)"></iframe></figure><hr><h2 id="%E2%9C%A8-application-highlights">&#x2728; Application highlights</h2><p>Want suggestions on apps? Here&apos;s a list for you.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/essential-linux-applications/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best Linux Software: 39 Essential Linux Apps [2023]</div><div class="kg-bookmark-description">What are the must-have applications for Linux? The answer is subjective. Here, we&#x2019;ve listed some of the best options.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/essential-linux-apps.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><p>Though nowhere close to &apos;essential&apos;, here&apos;s an actual open-source ChatGPT alternative, called &apos;HuggingChat&apos; &#x1F4A9;&#x1F372;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://huggingface.co/chat/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">HuggingChat</div><div class="kg-bookmark-description">The first open source alternative to ChatGPT. &#x1F4AA;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://huggingface.co/chat/favicon.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></div><div class="kg-bookmark-thumbnail"><img src="https://hf.co/chat/thumbnail.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><hr><h2 id="%F0%9F%9B%8D%EF%B8%8Finteresting-offer">&#x1F6CD;&#xFE0F;Interesting offer</h2><p>Explore the cutting-edge world of ChatGPT and generative AI with this ebook bundle&#x2014;ideal for software developers, product managers, and everyone interested in the potential of this transformational technology.</p><p>Deepen your AI knowledge, and help support Code for America with your purchase!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.humblebundle.com/books/ultimate-guide-to-chatgpt-ai-chat-bots-books?partner=itsfoss&amp;ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Ultimate Guide to ChatGPT &amp; AI Chat Bots</div><div class="kg-bookmark-description">We&#x2019;ve teamed up with Packt for our newest bundle. Get books like The AI Product Manager&#x2019;s Handbook &amp; Exploring GPT-3. Plus, pay what you want &amp; support charity!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.humblebundle.com/static/hashed/03df0490a53d595fd930f9fff52038366d60a05d.png" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"><span class="kg-bookmark-author">Humble Bundle</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hb.imgix.net/09171c7b6a7fb85ba91b7939fa5bf412b27004ac.jpg?auto=compress,format&amp;h=630&amp;w=1200&amp;s=1425805e12bbd4feb95ede8ce78d07c4" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More"></div></a></figure><hr><h2 id="%F0%9F%A4%A3-meme-of-the-week">&#x1F923; Meme of the week</h2><p>Will those Windows users ever learn?</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/unwritten_rule.png" class="kg-image" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More" loading="lazy" width="1080" height="1080" srcset="https://itsfoss.com/content/images/size/w600/2023/04/unwritten_rule.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/unwritten_rule.png 1000w, https://itsfoss.com/content/images/2023/04/unwritten_rule.png 1080w" sizes="(min-width: 720px) 720px"></figure><h2 id="%F0%9F%97%93%EF%B8%8F-tech-trivia">&#x1F5D3;&#xFE0F; Tech Trivia</h2><p>On April 26, 1999, the <a href="https://en.wikipedia.org/wiki/CIH_(computer_virus)?ref=itsfoss.com">Chernobyl virus</a> started impacting its victims. It was one of the most destructive viruses in computer history. Though originally named CIH after its creator, the virus trigger date matched with Chernobyl disaster date and hence it was named Chernobyl by the media. </p><hr><h2 id="%F0%9F%92%AC-in-case-you-missed-it">&#x1F4AC; In case you missed it</h2><p>That&apos;s the name of the new section I added to the homepage.</p><p>We have more than 1600+ tutorials and we regularly update them. You may not always notice the updated tutorials and hence this section is created to highlight the majorly updated articles for you. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/image-1.png" class="kg-image" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More" loading="lazy" width="1519" height="566" srcset="https://itsfoss.com/content/images/size/w600/2023/04/image-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/image-1.png 1000w, https://itsfoss.com/content/images/2023/04/image-1.png 1519w" sizes="(min-width: 720px) 720px"><figcaption>The new &apos;In case you missed it&apos; section on It&apos;s FOSS homepage</figcaption></figure><p><strong>To leave a comment, you can now click on the login button and sign in with your It&apos;s FOSS account.</strong></p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/itsfoss-comment-dark-mode.png" class="kg-image" alt="FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More" loading="lazy" width="801" height="548" srcset="https://itsfoss.com/content/images/size/w600/2023/04/itsfoss-comment-dark-mode.png 600w, https://itsfoss.com/content/images/2023/04/itsfoss-comment-dark-mode.png 801w" sizes="(min-width: 720px) 720px"></figure><p>Also, <a href="https://itsfoss.com/#/portal/account">please visit your account details</a> and ensure that you have correctly entered your name.</p><hr><h2 id="%E2%9D%A4%EF%B8%8F-enjoying-foss-weekly">&#x2764;&#xFE0F; Enjoying FOSS Weekly?</h2><p><strong>Forward it to Linux-using friends</strong> and encourage them to subscribe (hint: <a href="https://itsfoss.com/signup/">it&apos;s here</a>).</p><p>Become a Pro member and show your support &#x1F64F;</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Keep on learning with It&apos;s FOSS :)</p>]]></content:encoded></item><item><title><![CDATA[The Ultimate Guide to i3 Customization in Linux]]></title><description><![CDATA[Learn about customizing your system's look and feel with i3 window manager in this super-detailed guide.]]></description><link>https://itsfoss.com/i3-customization/</link><guid isPermaLink="false">642a535e0b20e022ee3fa91b</guid><category><![CDATA[Customization]]></category><category><![CDATA[Guides]]></category><dc:creator><![CDATA[Sagar Sharma]]></dc:creator><pubDate>Tue, 25 Apr 2023 05:44:43 GMT</pubDate><media:content url="https://itsfoss.com/content/images/2023/05/i3-customisation-guide.png" medium="image"/><content:encoded><![CDATA[<img src="https://itsfoss.com/content/images/2023/05/i3-customisation-guide.png" alt="The Ultimate Guide to i3 Customization in Linux"><p>You might have come across dope screenshots (especially via <code>r/unixporn</code> Subreddit), where users customize their desktops to their heart&apos;s desire and share it with the world. Linux lets you customize every aspect of your desktop experience, which is why it is possible.</p><p>And, the result? Something that<strong> feels and looks way better than any Mac or Windows system.</strong></p><p>Just look at this &#x1F60C;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/linux-mint-i3.jpg" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1530" height="857" srcset="https://itsfoss.com/content/images/size/w600/2023/04/linux-mint-i3.jpg 600w, https://itsfoss.com/content/images/size/w1000/2023/04/linux-mint-i3.jpg 1000w, https://itsfoss.com/content/images/2023/04/linux-mint-i3.jpg 1530w" sizes="(min-width: 720px) 720px"><figcaption>Image Credits: <a href="https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/?ref=itsfoss.com">Reddit</a></figcaption></figure><p><strong>Does it look like a Linux Mint system? </strong>&#x1F632;</p><p>But how can you achieve something like that? <strong>It is tough to customize</strong> the look of your Linux desktop.</p><p>The answer to your questions lies in the<strong> window manager. </strong>If you can configure a window manager, you can customize the look.</p><p>For this guide, I will walk you through a basic configuration you can do with the <strong>i3 window manager. </strong>It is one of the <a href="https://itsfoss.com/best-window-managers/">best window managers for Linux</a>.</p><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">&quot;Rice&quot; is a word commonly used to refer to making visual improvements and customizations on one&apos;s desktop.<br><br><strong>Via</strong> <a href="https://www.reddit.com/r/unixporn?ref=itsfoss.com" rel="nofollow">/r/unixporn</a></div></div><p>Things you should know before following this guide:</p><ul><li>In this guide,<strong> I will use Arch Linux</strong> to demonstrate the steps, but you can use any of your preferred distros and have the same result.</li><li>Remember, this guide will be a basic foundation for the <strong>i3 ricing</strong>.</li></ul><p>And here&apos;s the result of what you should expect after following this guide:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/How-to-configure-i3-window-manager-with-i3blocks-and-i3gaps-in-linux.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1102" srcset="https://itsfoss.com/content/images/size/w600/2023/04/How-to-configure-i3-window-manager-with-i3blocks-and-i3gaps-in-linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/How-to-configure-i3-window-manager-with-i3blocks-and-i3gaps-in-linux.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/How-to-configure-i3-window-manager-with-i3blocks-and-i3gaps-in-linux.png 1600w, https://itsfoss.com/content/images/2023/04/How-to-configure-i3-window-manager-with-i3blocks-and-i3gaps-in-linux.png 1942w" sizes="(min-width: 720px) 720px"><figcaption>(Click to enlarge image)</figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x1F4E5;</div><div class="kg-callout-text">To save you time, I have uploaded all the i3 config files related to the article on <a href="https://github.com/itsfoss/text-files/tree/master/i3_config_files?ref=itsfoss.com">GitHub</a>, with which you can achieve the final look of what we intend from this article.</div></div><div class="kg-card kg-button-card kg-align-center"><a href="https://github.com/itsfoss/text-files/tree/master/i3_config_files?ref=itsfoss.com" class="kg-btn kg-btn-accent">Download i3 Config Files</a></div><p><strong>First,</strong> let&apos;s start with installing the <strong>i3 window manager</strong>.</p><h2 id="install-i3-window-manager-on-linux">Install i3 Window Manager on Linux</h2><p>For <strong>Ubuntu/Debian</strong> base:</p><pre><code>sudo apt install xorg lightdm lightdm-gtk-greeter i3-wm i3lock i3status i3blocks dmenu terminator</code></pre><p>For <strong>Arch Linux</strong>:</p><pre><code>sudo pacman -S xorg lightdm lightdm-gtk-greeter i3-wm i3lock i3status i3blocks dmenu terminator</code></pre><p>Once you are done with the installation, enable the lightdm service using the following command:</p><pre><code>sudo systemctl enable lightdm.service</code></pre><p>And start the lightdm service:</p><pre><code>sudo systemctl start lightdm.service</code></pre><p>That will start the lightdm greeter that will ask you to enter the password for your username.</p><p>And if you have multiple desktop environments installed, you can choose i3 from the selection menu:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/use-lightdm-to-use-the-i3-wm-in-arch.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="820" height="638" srcset="https://itsfoss.com/content/images/size/w600/2023/04/use-lightdm-to-use-the-i3-wm-in-arch.png 600w, https://itsfoss.com/content/images/2023/04/use-lightdm-to-use-the-i3-wm-in-arch.png 820w" sizes="(min-width: 720px) 720px"></figure><p>Once you log in to your first i3 instance, it will ask you whether you want to create an i3 config file.</p><p>Press <code>Enter</code> to create a new i3 config file:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/create-configuration-file-for-i3.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="902" height="644" srcset="https://itsfoss.com/content/images/size/w600/2023/04/create-configuration-file-for-i3.png 600w, https://itsfoss.com/content/images/2023/04/create-configuration-file-for-i3.png 902w" sizes="(min-width: 720px) 720px"><figcaption>Click to enlarge the image</figcaption></figure><p>Next, it will ask you to choose between <code>Win</code> and <code>Alt</code> key, which should behave as <code>mod</code> key.</p><p>I would recommend you go with the <code>Win</code> (or the Super) key as most of the users are already used to it for shortcuts:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/choose-the-mod-key-in-i3.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="902" height="644" srcset="https://itsfoss.com/content/images/size/w600/2023/04/choose-the-mod-key-in-i3.png 600w, https://itsfoss.com/content/images/2023/04/choose-the-mod-key-in-i3.png 902w" sizes="(min-width: 720px) 720px"></figure><p>And your i3 window manager is ready to use. </p><p>But before we jump to the customization part, let me walk you through how you can use the i3 in the first place.</p><h2 id="keybindings-of-i3-window-manager">Keybindings of i3 Window Manager </h2><p>So let&apos;s start with the basics. </p><p>The basic functionality of the window manager is to frame multiple windows horizontally and vertically, so you can monitor multiple processes simultaneously.</p><p>And the result looks like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Using-I3-on-arch-linux.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1101" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Using-I3-on-arch-linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Using-I3-on-arch-linux.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/Using-I3-on-arch-linux.png 1600w, https://itsfoss.com/content/images/2023/04/Using-I3-on-arch-linux.png 1942w" sizes="(min-width: 720px) 720px"></figure><p>You can do a lot more than this using the following keybindings:</p><!--kg-card-begin: html--><table>
<thead>
<tr>
<th>Keybiding</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Mod + Enter</code></td>
<td>Open terminal.</td>
</tr>
<tr>
<td><code>Mod + &#x2190;</code></td>
<td>Focus left.</td>
</tr>
<tr>
<td><code>Mod + &#x2192;</code></td>
<td>Focus right.</td>
</tr>
<tr>
<td><code>Mod + &#x2191;</code></td>
<td>Focus up.</td>
</tr>
<tr>
<td><code>Mod + &#x2193;</code></td>
<td>Focus down.</td>
</tr>
<tr>
<td><code>Mod + Shift + &#x2190;</code></td>
<td>Move the window to the left side.</td>
</tr>
<tr>
<td><code>Mod + Shift + &#x2192;</code></td>
<td>Move the window to the right side.</td>
</tr>
<tr>
<td><code>Mod + Shift + &#x2191;</code></td>
<td>Move the window up.</td>
</tr>
<tr>
<td><code>Mod + Shift + &#x2193;</code></td>
<td>Move the window down.</td>
</tr>
<tr>
<td><code>Mod + f</code></td>
<td>Toggle the focused window to full-screen.</td>
</tr>
<tr>
<td><code>Mod + v</code></td>
<td>The next window will be placed vertically.</td>
</tr>
<tr>
<td><code>Mod + h</code></td>
<td>The next window will be placed horizontally.</td>
</tr>
<tr>
<td><code>Mod + s</code></td>
<td>Enables the stacked window layout.</td>
</tr>
<tr>
<td><code>Mod + w</code></td>
<td>Enables the tabbed window layout.</td>
</tr>
<tr>
<td><code>Mod + Shift + Space</code></td>
<td>Enables the floating window (for focused window).</td>
</tr>
<tr>
<td><code>Mod + Left-mouse-click</code></td>
<td>Drag the entire window using the mouse.</td>
</tr>
<tr>
<td><code>Mod + 0-9</code></td>
<td>Switch to another workspace.</td>
</tr>
<tr>
<td><code>Mod + Shift + 0-9</code></td>
<td>Move the window to another workspace.</td>
</tr>
<tr>
<td><code>Mod + d</code></td>
<td>Open the application launcher (D menu).</td>
</tr>
<tr>
<td><code>Mod + Shift + q</code></td>
<td>Kills the focused window.</td>
</tr>
<tr>
<td><code>Mod + Shift + c</code></td>
<td>Reloads the I3 config file.</td>
</tr>
<tr>
<td><code>Mod + Shift + r</code></td>
<td>Restart the I3 WM.</td>
</tr>
<tr>
<td><code>Mod + Shift + e</code></td>
<td>Exit I3 WM.</td>
</tr>
</tbody>
</table><!--kg-card-end: html--><p>I know an overwhelming number of keybindings are available, but if you practice them daily, you&apos;ll get used to them in no time.</p><p>And if you are wondering, you can change the keybindings at your convenience, which I will share in the later part of this guide.</p><p>Now, let&apos;s have a look at the configuration part.</p><h2 id="enable-aur-in-arch-linux">Enable AUR in Arch Linux</h2><p>So if you have a fresh installation of Arch Linux, you may not have enabled the AUR. </p><p>This means you are missing out on the most crucial feature of the Arch.</p><p>To <a href="https://itsfoss.com/aur-arch-linux/">enable the AUR</a>, you&apos;d need AUR to utilize the AUR package helper. Here, I will be using the yay. </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/aur-arch-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">What is Arch User Repository (AUR)? How to Use AUR on Arch and Manjaro Linux?</div><div class="kg-bookmark-description">What is AUR in Arch Linux? How do I use AUR? Is it safe to use? This article explains it all.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="The Ultimate Guide to i3 Customization in Linux"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Dimitrios</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2020/04/what-is-aur.png" alt="The Ultimate Guide to i3 Customization in Linux"></div></a></figure><p>First, install the git:</p><pre><code>sudo pacman -S git</code></pre><p>Now, clone the yay repository and change your directory to yay:</p><pre><code>git clone https://aur.archlinux.org/yay-git.git &amp;&amp; cd yay</code></pre><p>And finally, build the package:</p><pre><code>makepkg -si</code></pre><p>There are some other <a href="https://itsfoss.com/best-aur-helpers/">AUR package helpers</a> like Paru, so if you want to use something else apart from yay, you can proceed, or explore other options.</p><h2 id="change-resolution-of-i3-wm">Change resolution of i3 WM</h2><p>You will face issues, especially if you are using a virtual machine for window manager where the display resolution may be locked at <code>1024x768</code>, as is in my case.</p><p>So you will have to execute the following command by specifying the desired display resolution:</p><pre><code>xrandr --output [Display_name] --mode [resolution]</code></pre><p>To find the name of the connected display, you will have to use the xrandr command in the following manner:</p><pre><code>xrandr | grep -w &apos;connected&apos;</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/find-connected-display-in-I3.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1004" height="148" srcset="https://itsfoss.com/content/images/size/w600/2023/04/find-connected-display-in-I3.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/find-connected-display-in-I3.png 1000w, https://itsfoss.com/content/images/2023/04/find-connected-display-in-I3.png 1004w" sizes="(min-width: 720px) 720px"></figure><p>In my case, it is <code>Virtual-1</code>.</p><p>So if I want to change the resolution to <code>1920*1080</code>, I will have to execute the following:</p><pre><code>xrandr --output Virtual-1 --mode 1920x1080</code></pre><p><strong>But this will only work temporarily</strong>. To make it permanent, you will have to make changes in the i3 config file. </p><p>First, open the config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p><a href="https://linuxhandbook.com/beginning-end-file-nano/?ref=itsfoss.com">Go to the end of the file in nano</a> by pressing <code>Alt + /</code> and use the following syntax to change the display resolution permanently:</p><pre><code># Display Resolution
exec_always xrandr --output [Display_name] --mode [Resolution]</code></pre><p>The result should look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/change-display-resolution-in-I3-permanently.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1097" height="215" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-display-resolution-in-I3-permanently.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/change-display-resolution-in-I3-permanently.png 1000w, https://itsfoss.com/content/images/2023/04/change-display-resolution-in-I3-permanently.png 1097w" sizes="(min-width: 720px) 720px"></figure><p>Once done, <a href="https://linuxhandbook.com/nano-save-exit/?ref=itsfoss.com">save changes and exit from the nano</a> text editor. </p><p>Now, restart the i3 WM using the <code>Mod + Shift + r</code> to take effect from the changes you&apos;ve made to the config file and that&apos;s it!</p><h2 id="change-wallpaper-in-the-i3-window-manager">Change wallpaper in the i3 Window manager </h2><p>By default, i3 will look dated, and you may want to switch back to your previous desktop environment.</p><p>But by changing the wallpaper itself, you can start changing the whole vibe of the system.</p><p>And there are various ways to change the wallpaper in i3, but here, I will be showing you how you can use the <strong><code>feh</code> utility.</strong></p><p>First, let&apos;s start with the installation itself:</p><p>For <strong>Arch-based distros:</strong></p><pre><code>sudo pacman -S feh</code></pre><p>For <strong>Ubuntu/Debian based-distros:</strong></p><pre><code>sudo apt install feh</code></pre><p>Once done, you can download your favorite wallpaper from the internet. Next, <strong>open the i3 config file:</strong></p><pre><code>nano ~/.config/i3/config</code></pre><p>Go to the end of the file and use the feh command as mentioned:</p><pre><code># Display Wallpaper
exec_always feh --bg-fill /path/to/wallpaper</code></pre><p>In my case, the wallpaper was in the <code>Downloads</code> directory, so my command would look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Use-feh-utility-to-change-background-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="823" height="216" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Use-feh-utility-to-change-background-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/2023/04/Use-feh-utility-to-change-background-in-I3-window-manager.png 823w" sizes="(min-width: 720px) 720px"></figure><p>Save changes and exit from the nano text editor.</p><p>To take effect from the changes you made to the config file, restart the i3 window manager using <code>Mod + Shift + r</code>.</p><p>Mine looks like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/change-wallpaper-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1101" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-wallpaper-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/change-wallpaper-in-I3-window-manager.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/change-wallpaper-in-I3-window-manager.png 1600w, https://itsfoss.com/content/images/2023/04/change-wallpaper-in-I3-window-manager.png 1942w" sizes="(min-width: 720px) 720px"></figure><h2 id="customize-i3-lock-screen">Customize i3 lock screen </h2><p>By default, if you want to lock the system, you will have to execute the following command:</p><pre><code>i3lock </code></pre><p>And the lock screen looks like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/how-to-lock-the-I3-window-manager.gif" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1207" height="822" srcset="https://itsfoss.com/content/images/size/w600/2023/04/how-to-lock-the-I3-window-manager.gif 600w, https://itsfoss.com/content/images/size/w1000/2023/04/how-to-lock-the-I3-window-manager.gif 1000w, https://itsfoss.com/content/images/2023/04/how-to-lock-the-I3-window-manager.gif 1207w" sizes="(min-width: 720px) 720px"></figure><p>So here, I will show you:</p><ul><li><strong>How to create a custom shortcut to lock the i3 session</strong></li><li><strong>How to change the lock screen wallpaper </strong></li></ul><p>To make the lock screen beautiful, you&apos;d have to use the <code>i3lock-color</code> package.</p><p>But first, you&apos;d have to remove the existing <code>i3lock</code> as it will conflict with the <code>i3lock-color</code>:</p><p>To remove it from Arch:</p><pre><code>sudo pacman -R i3lock</code></pre><p>For Ubuntu/Debian users:</p><pre><code>sudo apt remove i3lock</code></pre><p>Once done, you can install the <code>i3lock-color</code> using the AUR helper:</p><pre><code>yay i3lock-color</code></pre><p>And if you&apos;re on an Ubuntu base, you&apos;d have to build it from scratch. You can find <a href="https://github.com/Raymo111/i3lock-color?ref=itsfoss.com">detailed instructions on their GitHub page</a>.</p><p>Once you are done with the installation, let&apos;s create a new directory and make a new file to store the configuration for the lock screen:</p><pre><code>mkdir ~/.config/scripts &amp;&amp; nano ~/.config/scripts/lock</code></pre><p>And paste the following file contents to define the lock screen styling:</p><pre><code>#!/bin/sh

BLANK=&apos;#00000000&apos;
CLEAR=&apos;#ffffff22&apos;
DEFAULT=&apos;#00897bE6&apos;
TEXT=&apos;#00897bE6&apos;
WRONG=&apos;#880000bb&apos;
VERIFYING=&apos;#00564dE6&apos;

i3lock \
--insidever-color=$CLEAR     \
--ringver-color=$VERIFYING   \
\
--insidewrong-color=$CLEAR   \
--ringwrong-color=$WRONG     \
\
--inside-color=$BLANK        \
--ring-color=$DEFAULT        \
--line-color=$BLANK          \
--separator-color=$DEFAULT   \
\
--verif-color=$TEXT          \
--wrong-color=$TEXT          \
--time-color=$TEXT           \
--date-color=$TEXT           \
--layout-color=$TEXT         \
--keyhl-color=$WRONG         \
--bshl-color=$WRONG          \
\
--screen 1                   \
--blur 9                     \
--clock                      \
--indicator                  \
--time-str=&quot;%H:%M:%S&quot;        \
--date-str=&quot;%A, %Y-%m-%d&quot;       \
--keylayout 1                \</code></pre><p>Save changes and exit from the text editor.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">You can find a variety of bash scripts online for different i3 lock screen styles. This is just an example, which should be a minimal option for most.</div></div><p>Now, make this file executable <a href="https://linuxhandbook.com/chmod-command/?ref=itsfoss.com">using the chmod command</a>:</p><pre><code>sudo chmod +x .config/scripts/lock</code></pre><p>Next, you&apos;d have to introduce some changes to the config file to add the path to this config file to make it work.</p><p>Furthermore, here&apos;s where I will show you how you can use the custom keyboard shortcut for the lock screen.</p><p>First, open the config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>Jump to the end of the line using <code>Alt + /</code> and paste the following lines:</p><pre><code># Shortcut for Lockscreen
bindsym $mod+x exec /home/$USER/.config/scripts/lock</code></pre><p>In the above, I have used <code>mod + x</code> as a shortcut to lock the screen, you can use any of your preferred ones.</p><p>And the end would look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/how-to-use-i3lock-color-in-arch-linux-1.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1102" srcset="https://itsfoss.com/content/images/size/w600/2023/04/how-to-use-i3lock-color-in-arch-linux-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/how-to-use-i3lock-color-in-arch-linux-1.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/how-to-use-i3lock-color-in-arch-linux-1.png 1600w, https://itsfoss.com/content/images/2023/04/how-to-use-i3lock-color-in-arch-linux-1.png 1942w" sizes="(min-width: 720px) 720px"></figure><p>Pretty neat. Isn&apos;t it?</p><h2 id="change-theme-and-icons-in-the-i3-window-manager">Change theme and icons in the i3 Window manager</h2><p>I know what you might be thinking. </p><p>Why would you need icons in the first place? But you don&apos;t need only to be using CLI tools with the window manager.</p><p>There are times when opting for GUI is more convenient, such as using a file manager. So, when dealing with such utilities, you want to make it look better (and prettier?)</p><p>So in this section, I will show you:</p><ul><li><strong>How to change the theme in i3</strong></li><li><strong>How to change the icons in i3</strong></li></ul><p>Let&apos;s start with the installation of the theme.</p><p>Here, I will be using the <code>materia-gtk-theme</code> and <code>papirus</code> icons. But you can use any of your preferred ones.</p><p>To install the theme in Arch, use the following:</p><pre><code>sudo pacman -S materia-gtk-theme papirus-icon-theme</code></pre><p>For Ubuntu/Debian base:</p><pre><code>sudo apt install materia-gtk-theme papirus-icon-theme</code></pre><p>But installing won&apos;t get the job done. <strong>You&apos;d have to apply the theme as you use the GNOME tweaks to change the theme.</strong></p><p><strong>In i3, you can use the lxappearance utility</strong> to change the theme and icons. </p><p>To install lxappearance in Arch, use the following:</p><pre><code>sudo pacman -S lxappearance</code></pre><p>For Ubuntu/Debian base:</p><pre><code>sudo apt install lxappearance</code></pre><p>Once you are done with the installation, start the dmenu using <code>Mod + d</code> and type <strong>lxappearance, </strong>and hit enter on the first result.</p><p>Here, choose the theme of your liking. I&apos;m going with the <code>Materia-dark</code> here.</p><p>Select the theme and click on the apply button to apply the changes:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Change-theme-in-I3-window-manager-using-lxappearance.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="759" height="580" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Change-theme-in-I3-window-manager-using-lxappearance.png 600w, https://itsfoss.com/content/images/2023/04/Change-theme-in-I3-window-manager-using-lxappearance.png 759w" sizes="(min-width: 720px) 720px"></figure><p>Similarly, to change the icon, select the <code>Icon Theme</code>, choose the icon theme and hit the apply button:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Change-icons-in-I3-window-manager-using-lxappearance.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="759" height="580" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Change-icons-in-I3-window-manager-using-lxappearance.png 600w, https://itsfoss.com/content/images/2023/04/Change-icons-in-I3-window-manager-using-lxappearance.png 759w" sizes="(min-width: 720px) 720px"></figure><p>After applying the theme and icons, my file manager looks like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/change-theme-and-icon-in-i3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="867" height="413" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-theme-and-icon-in-i3-window-manager.png 600w, https://itsfoss.com/content/images/2023/04/change-theme-and-icon-in-i3-window-manager.png 867w" sizes="(min-width: 720px) 720px"></figure><h2 id="set-icons-for-workspaces-in-the-i3-window-manager">Set icons for workspaces in the i3 window manager</h2><p>By default, the workspaces are indicated by numbers only, which is not the most ideal way you want to use the workspace.</p><p>So in this section, I will walk you through how you can change the name of the workspaces with appropriate icons.</p><p>To use the icons in the config file, first, you will have to install new fonts named <code>Awesome</code>:</p><p>For Arch-based distros:</p><pre><code>sudo pacman -S ttf-font-awesome</code></pre><p>For Ubuntu/Debian base:</p><pre><code>sudo apt install fonts-font-awesome</code></pre><p>Once done, open the i3 config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>In this config file, look for the workspace section where you will be given variables for each workspace:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/workspace-variables-in-I3-config-file.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="828" height="493" srcset="https://itsfoss.com/content/images/size/w600/2023/04/workspace-variables-in-I3-config-file.png 600w, https://itsfoss.com/content/images/2023/04/workspace-variables-in-I3-config-file.png 828w" sizes="(min-width: 720px) 720px"></figure><p>In this section, you must interchange the number given to the workspace with what you want to name it. </p><p>I will be naming it as programs as <strong>in the later part of this tutorial, I will show how you can allocate the specific workspace to the specific application. </strong></p><p>I mostly use the first 5 workspaces, so I will name them accordingly:</p><pre><code># Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 &quot;1: Terminal&quot;
set $ws2 &quot;2: Firefox&quot;
set $ws3 &quot;3: VMWare&quot;
set $ws4 &quot;4: Spotify&quot;
set $ws5 &quot;5: Shutter&quot;
set $ws6 &quot;6&quot;
set $ws7 &quot;7&quot;
set $ws8 &quot;8&quot;
set $ws9 &quot;9&quot;
set $ws10 &quot;10&quot;
</code></pre><p>Now let&apos;s add the icons for each application mentioned in the config file.</p><p>You can <a href="https://fontawesome.com/v5/cheatsheet?ref=itsfoss.com">refer to the cheatsheet of the awesome font</a> to find the appropriate icon.</p><p>Copy and paste the icons in front of the name: </p><pre><code># Define names for default workspaces for which we configure key bindings later&gt;
# We use variables to avoid repeating the names in multiple places.
set $ws1 &quot;1: &#xF120;Terminal&quot;
set $ws2 &quot;2: &#xF269;Firefox&quot;
set $ws3 &quot;3: &#xF17C;VMWare&quot;
set $ws4 &quot;4: &#xF1BC;Spotify&quot;
set $ws5 &quot;5: &#xF030;Shutter&quot;
set $ws6 &quot;6&quot;
set $ws7 &quot;7&quot;
set $ws8 &quot;8&quot;
set $ws9 &quot;9&quot;
set $ws10 &quot;10&quot;</code></pre><p>Don&apos;t worry if it looks horrific!</p><p>Once done, exit i3 using the <code>Mod + e</code> and log back in again to take effect from the changes you&apos;ve just made.</p><p>Mine looks like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/workspace-icons.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="642" height="172" srcset="https://itsfoss.com/content/images/size/w600/2023/04/workspace-icons.png 600w, https://itsfoss.com/content/images/2023/04/workspace-icons.png 642w"></figure><p>Do fonts look too small? It&apos;s time to address this!</p><h2 id="change-the-font-of-the-title-window-and-bar-in-the-i3">Change the font of the title window and bar in the i3 </h2><p>First, let&apos;s install new fonts. (I will be using Ubuntu fonts here).</p><p>To install the Ubuntu fonts in Arch, use the following:</p><pre><code>sudo pacman -S ttf-ubuntu-font-family</code></pre><p>And if you are on Ubuntu, you already have them installed!</p><p>Once done, open the config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>In the config file, look for the <code>font pango:monospace 8</code> line as this is the default font.</p><p>Once you find that line, add the name of the font and size as shown:</p><pre><code>font pango:Ubuntu Regular 14</code></pre><p>Now, restart the window manager using the <code>Mod + Shift + r</code> and that should do the job:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/change-font-of-the-workspace-and-titlebar-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1101" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-font-of-the-workspace-and-titlebar-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/change-font-of-the-workspace-and-titlebar-in-I3-window-manager.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/change-font-of-the-workspace-and-titlebar-in-I3-window-manager.png 1600w, https://itsfoss.com/content/images/2023/04/change-font-of-the-workspace-and-titlebar-in-I3-window-manager.png 1942w" sizes="(min-width: 720px) 720px"><figcaption>Click to enlarge image</figcaption></figure><h2 id="allocate-applications-to-workspaces-in-the-i3-window-manager">Allocate applications to workspaces in the i3 window manager </h2><p>After naming the workspaces, you will want to allocate specific software to that workspace.</p><p>Such as, if I named my second workspace Firefox then I would want to use Firefox only inside that workspace.</p><p>So how do you do that?</p><p>To do so, you must find the name of the class of each application you want to allocate.</p><p><strong>Sounds complex?</strong> Let me tell you how to do so.</p><p>First, run start the application and terminal side by side. For example, here, I opened the Firefox and terminal side by side:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/open-application-and-terminal-side-by-side.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1725" height="571" srcset="https://itsfoss.com/content/images/size/w600/2023/04/open-application-and-terminal-side-by-side.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/open-application-and-terminal-side-by-side.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/open-application-and-terminal-side-by-side.png 1600w, https://itsfoss.com/content/images/2023/04/open-application-and-terminal-side-by-side.png 1725w" sizes="(min-width: 720px) 720px"></figure><p>Now, execute the xprop command in the terminal, and it will change the cursor shape:</p><pre><code>xprop</code></pre><p>Next, hover the cursor on the application and click anywhere inside the application window as shown:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/find-the-class-name-in-i3-window-manager.gif" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1696" height="538" srcset="https://itsfoss.com/content/images/size/w600/2023/04/find-the-class-name-in-i3-window-manager.gif 600w, https://itsfoss.com/content/images/size/w1000/2023/04/find-the-class-name-in-i3-window-manager.gif 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/find-the-class-name-in-i3-window-manager.gif 1600w, https://itsfoss.com/content/images/2023/04/find-the-class-name-in-i3-window-manager.gif 1696w" sizes="(min-width: 720px) 720px"></figure><p>The class name will be found in the last sting of characters in the following line:</p><pre><code>WM_CLASS(STRING) = &quot;Navigator&quot;, &quot;firefox&quot;</code></pre><p>In my case, the class name for the Firefox browser will be <code>firefox</code>.</p><p>Repeat the process for all the applications you want to allocate to workspaces.</p><p><strong>Once you know the class names for every application you want to allocate a workspace, open the configuration file:</strong></p><pre><code>nano ~/.config/i3/config</code></pre><p>Go to the end of the file in the nano using <code>Alt + /</code> and use the following syntax to allocate the applications to the workspace:</p><pre><code># Allocate applications to workspaces
for_window [class=&quot;class_name&quot;] move to workspace $[workspace_variable]</code></pre><p>For reference, here&apos;s how my config looks like after allocating 4 workspaces to different applications:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Allocate-specific-applications-to-specific-workspaces-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="901" height="278" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Allocate-specific-applications-to-specific-workspaces-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/2023/04/Allocate-specific-applications-to-specific-workspaces-in-I3-window-manager.png 901w" sizes="(min-width: 720px) 720px"></figure><p>And now, if you open any application from any workspace, it will be placed in to configured workspace automatically. Pretty handy! &#x1F60A;</p><h2 id="make-the-terminal-transparent-in-the-i3-window-manager">Make the terminal transparent in the i3 window manager</h2><p>To enable transparency, you must install a picom compositor and make a few changes to the config file.</p><p>So let&apos;s start with the installation. </p><p>For Arch-based distro:</p><pre><code>sudo pacman -S picom</code></pre><p>For Ubuntu/Debian base:</p><pre><code>sudo apt install picom</code></pre><p>After the installation, you&apos;d need to instruct the system to use the picom.</p><p>So open the config file first:</p><pre><code>nano ~/.config/i3/config</code></pre><p>Go to the end of the line in the config file and paste the following line:</p><pre><code># Transparency with picom compositor
exec_always picom -f</code></pre><p>Here, I have used the <code>-f</code> flag is used to enable the fading effect while switching between workspaces, opening new applications, etc.</p><p>Save and exit from the text editor.</p><p>Now, restart i3 using <code>Mod + Shift + r</code>.</p><p>Next, open the terminal, open Preference, and now, click on the Profiles, select Background, and select the <code>Transparent background</code> option.</p><p>From here, you can choose the transparency:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/change-terminal-background-transperency-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1014" height="805" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-terminal-background-transperency-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/change-terminal-background-transperency-in-I3-window-manager.png 1000w, https://itsfoss.com/content/images/2023/04/change-terminal-background-transperency-in-I3-window-manager.png 1014w" sizes="(min-width: 720px) 720px"></figure><h2 id="customize-the-status-bar-in-the-i3-wm">Customize the status bar in the i3 WM</h2><p>By default, the status bar shows all sorts of information with no icons.</p><p>So in this section, I will be showing how you can remove some elements from the status bar and how you can add icons to them.</p><p>But here, I will be creating a copy of the original status bar available in <code>/etc/i3status.conf</code> as if you make any mistake, you can always roll back to the default one.</p><p>First, create a new directory inside the <code>.config</code> using the following:</p><pre><code>mkdir .config/i3status</code></pre><p>In the following command, I&apos;ve used <a href="https://linuxhandbook.com/cp-command/?ref=itsfoss.com">the cp command to copy files</a>:</p><pre><code>sudo cp /etc/i3status.conf ~/.config/i3status/i3status.conf</code></pre><p>Next, <a href="https://linuxhandbook.com/chown-command/?ref=itsfoss.com">change the ownership using the chown command</a> which will allow you to make desired changes:</p><pre><code>sudo chown $USER:$USER ~/.config/i3status/i3status.conf</code></pre><p>Now, you must instruct the window manager to use the new i3status config file by modifying the i3 config. So first, open the config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>In this config file look for the <code>status_command i3status</code> line. This is the line where you will be providing the path to the new status config file.</p><p>Once you find that line, make the following changes:</p><pre><code>bar {
        status_command i3status -c /home/$USER/.config/i3status/i3status.conf
}</code></pre><p>So, the end result should look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/change-the-path-of-the-i3-status-config-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="896" height="201" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-the-path-of-the-i3-status-config-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/2023/04/change-the-path-of-the-i3-status-config-in-I3-window-manager.png 896w" sizes="(min-width: 720px) 720px"></figure><p>Save changes and exit from the text editor.</p><p>Now, let&apos;s remove the unnecessary indicators from the status bar.</p><p>To do so, first, open the i3status config file:</p><pre><code>nano .config/i3status/i3status.conf</code></pre><p>Here, you can comment out the names starting with &quot;order&quot; which are nothing but variables for the indicator.</p><p><strong>For example, here</strong>, I disabled <code>ipv6</code>, <code>wireless _first_</code>, <code>battery all</code> and <code>load</code> as they were unnecessary for me:</p><pre><code>#order += &quot;ipv6&quot;
#order += &quot;wireless _first_&quot;
order += &quot;ethernet _first_&quot;
#order += &quot;battery all&quot;
order += &quot;disk /&quot;
#order += &quot;load&quot;
order += &quot;memory&quot;
order += &quot;tztime local&quot;</code></pre><p>Now, <a href="https://fontawesome.com/v5/cheatsheet?ref=itsfoss.com">open the awesome font cheat sheet</a> in the browser and find relevant icons for the items that are listed in the status bar.</p><p>In my setup, I have removed the following:</p><ul><li>Removed line indicating available RAM</li><li>Removed line showing &#xA0;speed for my ethernet connection</li></ul><p>And in the end, my bar looks like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Customize-the-status-bar-in-the-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1101" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Customize-the-status-bar-in-the-I3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Customize-the-status-bar-in-the-I3-window-manager.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/Customize-the-status-bar-in-the-I3-window-manager.png 1600w, https://itsfoss.com/content/images/2023/04/Customize-the-status-bar-in-the-I3-window-manager.png 1942w" sizes="(min-width: 720px) 720px"></figure><h2 id="change-the-color-scheme-in-the-i3-window-manager">Change the color scheme in the i3 window manager</h2><p>This is the most crucial section of this guide, as the most attractive thing in the window manager is the colors you choose to decorate windows.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">I will be declaring variables for each color, so it will be easy for you just to change the value of the variable itself, and you&apos;d have a new color scheme in no time.</div></div><p>So first, open the I3 config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>And go to the end of the file by using <code>Alt + /</code> and use the following syntax to add variables to store colors:</p><pre><code># Color shemes for windows 
set $bgcolor    #523d64
set $in-bgcolor #363636
set $text       #ffffff
set $u-bgcolor  #ff0000
set $indicator  #a8a3c1
set $in-text    #969696
#                       border          background      text            indicator (a line which shows where the next window will be placed)     
client.focused          $bgcolor        $bgcolor        $text           $indicator
client.unfocused        $in-bgcolor     $in-bgcolor     $in-text        $in-bgcolor
client.focused_inactive $in-bgcolor     $in-bgcolor     $in-text        $in-bgcolor
client.urgent           $u-bgcolor      $u-bgcolor      $text           $u-bgcolor </code></pre><p>Here, </p><ul><li><code>bgcolor</code> indicates the background color.</li><li><code>in-bgcolor</code> indicates background color for inactive windows.</li><li><code>text</code> is for the text color.</li><li><code>u-bgcolor</code> indicates the background for urgent action.</li><li><code>indicator</code> is color for the line, which indicates where the next window will be placed.</li><li><code>in-text</code> text color when inactive.</li></ul><p>And for this guide, I have only used 4 basic classes which are:</p><ul><li><code>client.focused</code> defines colors for the focused windows.</li><li><code>client.unfocused</code> decides how to decorate windows when not focused.</li><li><code>client.focused_inactive</code> shows colors when one of the containers is focused but does not have the focus at the moment.</li><li><code>client.urgent</code> defines colors when urgent action is needed.</li></ul><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">There are more classes than these four; you can refer to the <a href="https://i3wm.org/docs/userguide.html?ref=itsfoss.com#client_colors">official i3 configuration manual</a> to learn more.</div></div><p>Once you make changes to the config file, restart the I3 using <code>Mod + Shift + r</code>.</p><p>And if you followed my color scheme, the setup should look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/change-window-colors-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1101" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-window-colors-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/change-window-colors-in-I3-window-manager.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/change-window-colors-in-I3-window-manager.png 1600w, https://itsfoss.com/content/images/2023/04/change-window-colors-in-I3-window-manager.png 1942w" sizes="(min-width: 720px) 720px"></figure><p>But what about the changing colors for the status bar? Why not!</p><h3 id="changing-the-color-scheme-for-the-status-bar-in-i3">Changing the color scheme for the status bar in i3 </h3><p>In this section, you&apos;d realize why I used variables to store colors, as I will use the same variables to color my status bar!</p><p>To use colors in the status bar, you will have to make changes in the <code>bar {...}</code> section of the I3 config file.</p><p>First, open the configuration file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>In the configuration file, look for the <code>bar {...}</code> section.</p><p>Once you find the section, create a color section and define colors and classes for the status bar as the same you did for Windows:</p><pre><code>bar {
        status_command i3status -c /home/$USER/.config/i3status/i3status.conf
        colors {
                background $bgcolor
                separator #191919
                #                       border          background      text
                focused_workspace       $bgcolor        $bgcolor        $text
                inactive_workspace      $in-bgcolor     $in-bgcolor     $text
                urgent_workspace        $u-bgcolor      $u-bgcolor      $text   

        }
}
</code></pre><p>Here, I have used 3 classes: <code>focused_workspace</code>, <code>inactive_workspace</code>, and <code>urgent_workspace</code> which will define the colors accordingly.</p><p>Once you make changes, save them and restart the I3 and the status bar will have colors too.</p><h2 id="make-i3-bar-transparent">Make i3 bar transparent </h2><p>This section will show you how to make the i3 bar transparent. </p><p>But before that, let&apos;s change the fonts for the i3 bar. </p><p>Here, I will use the droid fonts to make it look clean and with a nerdy theme.</p><p>To install droid fonts in Arch, use the following:</p><pre><code>sudo pacman -S ttf-droid</code></pre><p>And for Ubuntu/Debian base:</p><pre><code>sudo apt install fonts-droid-fallback</code></pre><p>Once done, open the config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>And go to the <code>bar {...}</code> section and enter the font name with the size as shown:</p><pre><code>font pango: Droid Sans Mono 11</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/change-fonts-in-i3-status-bar.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="840" height="239" srcset="https://itsfoss.com/content/images/size/w600/2023/04/change-fonts-in-i3-status-bar.png 600w, https://itsfoss.com/content/images/2023/04/change-fonts-in-i3-status-bar.png 840w" sizes="(min-width: 720px) 720px"></figure><p>Once done, restart the i3, and the fonts will be changed!</p><p>To make the bar transparent, you can use the extra two digits in the existing hexadecimal code to define the transparency.</p><p>And if you want to control transparency, I would recommend you check out this <a href="https://gist.github.com/lopspower/03fb1cc0ac9f32ef38f4?ref=itsfoss.com">guide which gives codes ranging from 0 to 100% transparency</a>.</p><p>For this purpose, I will use two new variables in the config file. So first, open the config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>Here, I changed and added a transparency of 60% to the background color and added 30% transparency to the inactive background color:</p><pre><code>set $bgcolor    #523d6499
set $in-bgcolor #3636364D</code></pre><p>If you notice closely, I&apos;ve added two-digit numbers in the existing hex color code defining transparency. Such as <code>99</code> is used for <code>60%</code> transparency whereas <code>4D</code> is used for the <code>30%</code> transparency.</p><p>Also, I added two new variables with different transparency and the same color as a background to make it look better:</p><pre><code>set $focused-ws #523d6480
set $bar-color  #523d640D</code></pre><p>Once you do so, let&apos;s change the bar section to apply transparency.</p><p>Here, you&apos;d have to add two new lines in the <code>bar {...}</code>:</p><pre><code>i3bar_command i3bar --transparency
tray_output none</code></pre><p>Remember, using the <code>tray_output none</code> line, it won&apos;t show any icons in the tray so if you don&apos;t want this behavior, skip this and only add the 1st line for transparency.</p><p>Once done, change the color scheme for the bar such as changing the background color, &#xA0;border, and background for the focused workspace.</p><p>After making changes, the config should look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/config-file-to-make-the-I3-bar-transparent-in-I3-window-manager-1.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="908" height="481" srcset="https://itsfoss.com/content/images/size/w600/2023/04/config-file-to-make-the-I3-bar-transparent-in-I3-window-manager-1.png 600w, https://itsfoss.com/content/images/2023/04/config-file-to-make-the-I3-bar-transparent-in-I3-window-manager-1.png 908w" sizes="(min-width: 720px) 720px"></figure><p>To take effect from the changes you&apos;ve made, restart the i3 and you&apos;d have transparent windows and bar:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/make-I3-status-bar-and-windows-transparent-in-I3-window-manager-3.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1102" srcset="https://itsfoss.com/content/images/size/w600/2023/04/make-I3-status-bar-and-windows-transparent-in-I3-window-manager-3.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/make-I3-status-bar-and-windows-transparent-in-I3-window-manager-3.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/make-I3-status-bar-and-windows-transparent-in-I3-window-manager-3.png 1600w, https://itsfoss.com/content/images/2023/04/make-I3-status-bar-and-windows-transparent-in-I3-window-manager-3.png 1942w" sizes="(min-width: 720px) 720px"></figure><h2 id="use-i3-blocks-in-the-window-manager">Use i3 Blocks in the window manager</h2><p>The default bar you get with i3 is useless (in my opinion); how about making it functional?</p><p>In this part, I will explain how you can add:</p><ul><li><strong>Package updates </strong></li><li><strong>Memory usage </strong></li><li><strong>Disk usage </strong></li><li><strong>Volume indicator </strong></li><li><strong>Spotify indicator</strong></li></ul><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">To do so, you will have to use some scripts that will allow you to add desired actions to your bar. Don&apos;t worry; I won&apos;t ask you to type scripts manually; various scripts are available on GitHub, covering almost every aspect you&apos;d ever want.</div></div><p>But before that, you&apos;d have to make some arrangements to store scripts and instruct i3 to use the configuration of i3block instead of i3bar.</p><p>If you followed the given instructions at the beginning of this guide, the i3blocks is already installed, and the config file is located at <code>/etc/i3blocks.conf</code>.</p><p><em>Want to download the block config files to quickly set them up without reading the rest? Considering you know what you are doing by now, you can download them here:</em></p><div class="kg-card kg-button-card kg-align-center"><a href="https://github.com/itsfoss/text-files/tree/master/i3_config_files?ref=itsfoss.com" class="kg-btn kg-btn-accent">i3 Config Files</a></div><p>For this tutorial, I will create a copy and use that instead of the original config file so let&apos;s create a directory first to store the copy of the config file:</p><pre><code>mkdir ~/.config/i3blocks</code></pre><p>Now, create a copy for the original config file:</p><pre><code>sudo cp /etc/i3blocks.conf ~/.config/i3blocks/</code></pre><p>And finally, use the chown command to change the owner of the file which will let you make the desired changes:</p><pre><code>sudo chown $USER:$USER ~/.config/i3blocks/i3blocks.conf</code></pre><p>To enable the i3blocks, you have to make some changes to the i3 config file: </p><pre><code>nano ~/.config/i3/config</code></pre><p>Go to the <code>bar {...}</code> section and here, you&apos;d have to change the status_command with <code>i3blocks</code> and add the path to the i3blocks config file as shown:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/enable-i3blocks-in-i3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="861" height="232" srcset="https://itsfoss.com/content/images/size/w600/2023/04/enable-i3blocks-in-i3-window-manager.png 600w, https://itsfoss.com/content/images/2023/04/enable-i3blocks-in-i3-window-manager.png 861w" sizes="(min-width: 720px) 720px"></figure><p>Once done, restart the I3 window manager using <code>Mod + Shift + r</code> and the entire status bar will be changed and look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/the-default-look-of-the-i3blocks-in-i3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1941" height="46" srcset="https://itsfoss.com/content/images/size/w600/2023/04/the-default-look-of-the-i3blocks-in-i3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/the-default-look-of-the-i3blocks-in-i3-window-manager.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/the-default-look-of-the-i3blocks-in-i3-window-manager.png 1600w, https://itsfoss.com/content/images/2023/04/the-default-look-of-the-i3blocks-in-i3-window-manager.png 1941w" sizes="(min-width: 720px) 720px"></figure><p>Don&apos;t worry; you will make it more valuable and good-looking than your previous i3bar in no time.</p><h3 id="adding-disk-block">Adding disk block </h3><p>Add this block if you want to display the space left on the disk.</p><p>Here, I will use the nano to create and open the config file for the disk block.</p><pre><code>nano ~/.config/scripts/disk</code></pre><p>And paste the following lines:</p><pre><code>#!/usr/bin/env sh
DIR=&quot;${DIR:-$BLOCK_INSTANCE}&quot;
DIR=&quot;${DIR:-$HOME}&quot;
ALERT_LOW=&quot;${ALERT_LOW:-$1}&quot;
ALERT_LOW=&quot;${ALERT_LOW:-10}&quot; # color will turn red under this value (default: 10%)

LOCAL_FLAG=&quot;-l&quot;
if [ &quot;$1&quot; = &quot;-n&quot; ] || [ &quot;$2&quot; = &quot;-n&quot; ]; then
    LOCAL_FLAG=&quot;&quot;
fi

df -h -P $LOCAL_FLAG &quot;$DIR&quot; | awk -v label=&quot;$LABEL&quot; -v alert_low=$ALERT_LOW &apos;
/\/.*/ {
	# full text
	print label $4
	# short text
	print label $4
	use=$5
	# no need to continue parsing
	exit 0
}
END {
	gsub(/%$/,&quot;&quot;,use)
	if (100 - use &lt; alert_low) {
		# color
		print &quot;#FF0000&quot;
	}
}
&apos;</code></pre><p>Save changes and exit from the text editor.</p><p>Now, make this file executable:</p><pre><code>sudo chmod +x ~/.config/scripts/disk</code></pre><p>Next, open the I3blocks config file :</p><pre><code>nano ~/.config/i3blocks/i3blocks.conf</code></pre><p>And paste the following lines according to whether you want to place the disk block:</p><pre><code>[disk]
command=/home/$USER/.config/scripts/disk
LABEL=&#xF0A0;
#DIR=$HOME
#ALERT_LOW=10
interval=30</code></pre><p>Once done, save the changes and restart the I3 using <code>Mod + Shift + r</code> and the available disk space will reflect with the disk icon in the status bar.</p><p><strong>Suggested Read &#x1F4D6;</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/properly-theme-kde-plasma/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Properly Theme KDE Plasma [An in-depth Guide]</div><div class="kg-bookmark-description">If you have been using Linux for some time, you know about KDE Plasma, the desktop environment. Many distributions ship KDE Plasma as the default (or flagship) desktop environment. Hence, it is not surprising to find it among the best desktop environments. KDE Plasma desktop is famous&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="The Ultimate Guide to i3 Customization in Linux"><span class="kg-bookmark-author">It&apos;s FOSS</span><span class="kg-bookmark-publisher">Sreenath</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/09/theming-kde.png" alt="The Ultimate Guide to i3 Customization in Linux"></div></a></figure><h3 id="adding-memory-block">Adding memory block</h3><p>This will be a block in the status bar indicating the memory used in the system. </p><p>First, create and open a new file for a new block:</p><pre><code>nano ~/.config/scripts/memory</code></pre><p>And paste the following line in the new file:</p><pre><code>#!/usr/bin/env sh
TYPE=&quot;${BLOCK_INSTANCE:-mem}&quot;
PERCENT=&quot;${PERCENT:-true}&quot;

awk -v type=$TYPE -v percent=$PERCENT &apos;
/^MemTotal:/ {
	mem_total=$2
}
/^MemFree:/ {
	mem_free=$2
}
/^Buffers:/ {
	mem_free+=$2
}
/^Cached:/ {
	mem_free+=$2
}
/^SwapTotal:/ {
	swap_total=$2
}
/^SwapFree:/ {
	swap_free=$2
}
END {
	if (type == &quot;swap&quot;) {
		free=swap_free/1024/1024
		used=(swap_total-swap_free)/1024/1024
		total=swap_total/1024/1024
	} else {
		free=mem_free/1024/1024
		used=(mem_total-mem_free)/1024/1024
		total=mem_total/1024/1024
	}
	pct=0
	if (total &gt; 0) {
		pct=used/total*100
	}
	# full text
	if (percent == &quot;true&quot; ) {
		printf(&quot;%.1fG/%.1fG (%.f%%)\n&quot;, used, total, pct)
	} else {
		printf(&quot;%.1fG/%.1fG\n&quot;, used, total)
	}
	# short text
	printf(&quot;%.f%%\n&quot;, pct)
	# color
	if (pct &gt; 90) {
		print(&quot;#FF0000&quot;)
	} else if (pct &gt; 80) {
		print(&quot;#FFAE00&quot;)
	} else if (pct &gt; 70) {
		print(&quot;#FFF600&quot;)
	}
}
&apos; /proc/meminfo</code></pre><p>Save changes and exit from the text editor.</p><p>Now, to make this work, you&apos;d have to make this file executable using the following command:</p><pre><code>sudo chmod +x ~/.config/scripts/memory</code></pre><p>Next, open the I3blocks config file:</p><pre><code>nano ~/.config/i3blocks/i3blocks.conf</code></pre><p>And paste the following at the place where you want to show the RAM consumption in the status bar:</p><pre><code>[memory]
command=/home/$USER/.config/scripts/memory
label=&#xF538;
interval=30</code></pre><p>Save changes and exit from the text editor. Restart i3 to take effect from the changes!</p><h3 id="adding-the-update-indicator-block">Adding the update indicator block</h3><p>This is the most helpful indicator, as it shows the number of old packages that need to be updated.</p><p>First, install use the following command to install dependencies to make this work:</p><pre><code>sudo pacman -S pacman-contrib</code></pre><p>Now, create a new file that will be used to store the script:</p><pre><code>nano ~/.config/scripts/arch-update</code></pre><p>And paste the following:</p><pre><code>#!/usr/bin/env python3
import subprocess
from subprocess import check_output
import argparse
import os
import re


def create_argparse():
    def _default(name, default=&apos;&apos;, arg_type=str):
        val = default
        if name in os.environ:
            val = os.environ[name]
        return arg_type(val)

    strbool = lambda s: s.lower() in [&apos;t&apos;, &apos;true&apos;, &apos;1&apos;]
    strlist = lambda s: s.split()

    parser = argparse.ArgumentParser(description=&apos;Check for pacman updates&apos;)
    parser.add_argument(
        &apos;-b&apos;,
        &apos;--base_color&apos;,
        default = _default(&apos;BASE_COLOR&apos;, &apos;green&apos;),
        help=&apos;base color of the output(default=green)&apos;
    )
    parser.add_argument(
        &apos;-u&apos;,
        &apos;--updates_available_color&apos;,
        default = _default(&apos;UPDATE_COLOR&apos;, &apos;yellow&apos;),
        help=&apos;color of the output, when updates are available(default=yellow)&apos;
    )
    parser.add_argument(
        &apos;-a&apos;,
        &apos;--aur&apos;,
        action = &apos;store_const&apos;,
        const = True,
        default = _default(&apos;AUR&apos;, &apos;False&apos;, strbool),
        help=&apos;Include AUR packages. Attn: Yaourt must be installed&apos;
    )
    parser.add_argument(
        &apos;-y&apos;,
        &apos;--aur_yay&apos;,
        action = &apos;store_const&apos;,
        const = True,
        default = _default(&apos;AUR_YAY&apos;, &apos;False&apos;, strbool),
        help=&apos;Include AUR packages. Attn: Yay must be installed&apos;
    )
    parser.add_argument(
        &apos;-q&apos;,
        &apos;--quiet&apos;,
        action = &apos;store_const&apos;,
        const = True,
        default = _default(&apos;QUIET&apos;, &apos;False&apos;, strbool),
        help = &apos;Do not produce output when system is up to date&apos;
    )
    parser.add_argument(
        &apos;-w&apos;,
        &apos;--watch&apos;,
        nargs=&apos;*&apos;,
        default = _default(&apos;WATCH&apos;, arg_type=strlist),
        help=&apos;Explicitly watch for specified packages. &apos;
        &apos;Listed elements are treated as regular expressions for matching.&apos;
    )
    return parser.parse_args()


def get_updates():
    output = &apos;&apos;
    try:
        output = check_output([&apos;checkupdates&apos;]).decode(&apos;utf-8&apos;)
    except subprocess.CalledProcessError as exc:
        # checkupdates exits with 2 and no output if no updates are available.
        # we ignore this case and go on
        if not (exc.returncode == 2 and not exc.output):
            raise exc
    if not output:
        return []

    updates = [line.split(&apos; &apos;)[0]
               for line in output.split(&apos;\n&apos;)
               if line]

    return updates


def get_aur_yaourt_updates():
    output = &apos;&apos;
    try:
        output = check_output([&apos;yaourt&apos;, &apos;-Qua&apos;]).decode(&apos;utf-8&apos;)
    except subprocess.CalledProcessError as exc:
        # yaourt exits with 1 and no output if no updates are available.
        # we ignore this case and go on
        if not (exc.returncode == 1 and not exc.output):
            raise exc
    if not output:
        return []

    aur_updates = [line.split(&apos; &apos;)[0]
                   for line in output.split(&apos;\n&apos;)
                   if line.startswith(&apos;aur/&apos;)]

    return aur_updates

def get_aur_yay_updates():
    output = check_output([&apos;yay&apos;, &apos;-Qua&apos;]).decode(&apos;utf-8&apos;)
    if not output:
        return []

    aur_updates = [line.split(&apos; &apos;)[0] for line in output.split(&apos;\n&apos;) if line]

    return aur_updates


def matching_updates(updates, watch_list):
    matches = set()
    for u in updates:
        for w in watch_list:
            if re.match(w, u):
                matches.add(u)

    return matches


label = os.environ.get(&quot;LABEL&quot;,&quot;&quot;)
message = &quot;{0}&lt;span color=&apos;{1}&apos;&gt;{2}&lt;/span&gt;&quot;
args = create_argparse()

updates = get_updates()
if args.aur:
    updates += get_aur_yaourt_updates()
elif args.aur_yay:
    updates += get_aur_yay_updates()

update_count = len(updates)
if update_count &gt; 0:
    if update_count == 1:
      info = str(update_count) + &apos; update available&apos;
      short_info = str(update_count) + &apos; update&apos;
    else:
      info = str(update_count) + &apos; updates available&apos;
      short_info = str(update_count) + &apos; updates&apos;

    matches = matching_updates(updates, args.watch)
    if matches:
        info += &apos; [{0}]&apos;.format(&apos;, &apos;.join(matches))
        short_info += &apos;*&apos;
    print(message.format(label, args.updates_available_color, info))
    print(message.format(label, args.updates_available_color, short_info))
elif not args.quiet:
    print(message.format(label, args.base_color, &apos;system up to date&apos;))</code></pre><p>Save changes and exit from the text editor.</p><p>Now, make this file executable using the following:</p><pre><code>sudo chmod +x ~/.config/scripts/arch-update</code></pre><p>Next, open the i3blocks config file:</p><pre><code>nano ~/.config/i3blocks/i3blocks.conf</code></pre><p>And paste the following lines at desired space:</p><pre><code>[arch-update]
command=/home/$USER/.config/scripts/arch-update
interval=3600
markup=pango
LABEL=&#xF35B;</code></pre><p>Save the changes and reload the i3 window manager, and it will show the number of packages that need to be updated.</p><p>And if you are using Ubuntu, you can <a href="https://github.com/vivien/i3blocks-contrib/tree/master/apt-upgrades?ref=itsfoss.com">follow these instructions on the GitHub page</a>.</p><h3 id="adding-volume-indicator-block">Adding volume indicator block</h3><p>Adding a volume indicator block takes a little bit more effort as you want to behave as you would expect. So, the things that you need to achieve with the block are:</p><ul><li><strong>Adding key bindings to manage volume with media control keys </strong></li><li><strong>Adding a volume block indicating the volume </strong></li></ul><p>But to do so, first, you&apos;d have to install some dependencies.</p><p>So if you are using Arch, &#xA0;use the following:</p><pre><code>sudo pacman -S pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack alsa-utils playerctl</code></pre><p>And if you&apos;re using Ubuntu/Debian base, use the following:</p><pre><code>sudo apt install pulseaudio-module-bluetooth pulseaudio-equalizer pulseaudio-module-jack alsa-utils playerctl</code></pre><p>Now, let&apos;s look at how you can enable the media control keys in the i3 window manager.</p><p>First, open the i3 config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>Go to the end of the file and paste the following:</p><pre><code># Key bindings for Media control keys
bindsym XF86AudioPlay exec playerctl play
bindsym XF86AudioPause exec playerctl pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous</code></pre><p>Now, let&apos;s create a new file for this block:</p><pre><code>nano ~/.config/scripts/volume</code></pre><p>And paste the following:</p><pre><code>#!/usr/bin/env bash
if [[ -z &quot;$MIXER&quot; ]] ; then
    MIXER=&quot;default&quot;
    if command -v pulseaudio &gt;/dev/null 2&gt;&amp;1 &amp;&amp; pulseaudio --check ; then
        # pulseaudio is running, but not all installations use &quot;pulse&quot;
        if amixer -D pulse info &gt;/dev/null 2&gt;&amp;1 ; then
            MIXER=&quot;pulse&quot;
        fi
    fi
    [ -n &quot;$(lsmod | grep jack)&quot; ] &amp;&amp; MIXER=&quot;jackplug&quot;
    MIXER=&quot;${2:-$MIXER}&quot;
fi
if [[ -z &quot;$SCONTROL&quot; ]] ; then
    SCONTROL=&quot;${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
                      sed -n &quot;s/Simple mixer control &apos;\([^&apos;]*\)&apos;,0/\1/p&quot; |
                      head -n1
                    )}&quot;
fi

# The first parameter sets the step to change the volume by (and units to display)
# This may be in in % or dB (eg. 5% or 3dB)
if [[ -z &quot;$STEP&quot; ]] ; then
    STEP=&quot;${1:-5%}&quot;
fi

NATURAL_MAPPING=${NATURAL_MAPPING:-0}
if [[ &quot;$NATURAL_MAPPING&quot; != &quot;0&quot; ]] ; then
    AMIXER_PARAMS=&quot;-M&quot;
fi

#------------------------------------------------------------------------

capability() { # Return &quot;Capture&quot; if the device is a capture device
  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL |
    sed -n &quot;s/  Capabilities:.*cvolume.*/Capture/p&quot;
}

volume() {
  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL $(capability)
}
</code></pre><p>Save changes and exit from the config file. </p><p>Next, open the I3blocks config file:</p><pre><code>nano ~/.config/i3blocks/i3blocks.conf</code></pre><p>And paste the following:</p><pre><code>[volume]
command=/home/$USER/.config/scripts/volume
LABEL=&#x266A;
#LABEL=VOL 
interval=1
signal=10
#STEP=5%
MIXER=default
#SCONTROL=[determined automatically]
#NATURAL_MAPPING=0</code></pre><p>Save changes and reload the I3 and from now on, the volume shortcuts will work and the indicator will work as expected!</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If you face issues like audio/video not working, use this command and it should solve the problem: <code>systemctl --user disable --now pipewire.{socket,service} &amp;&amp; systemctl --user mask pipewire.socket</code></div></div><h3 id="adding-spotify-block">Adding Spotify block </h3><p>I will be using a script from <a href="https://github.com/firatakandere?ref=itsfoss.com" rel="author">firatakandere</a> to add this. You can check it out before going through it.</p><p>First, create and open a new file for the Spotify block:</p><pre><code>nano ~/.config/scripts/spotify.py</code></pre><p>And paste the following:</p><pre><code>#!/usr/bin/python

import dbus
import os
import sys


try:
    bus = dbus.SessionBus()
    spotify = bus.get_object(&quot;org.mpris.MediaPlayer2.spotify&quot;, &quot;/org/mpris/MediaPlayer2&quot;)


    if os.environ.get(&apos;BLOCK_BUTTON&apos;):
        control_iface = dbus.Interface(spotify, &apos;org.mpris.MediaPlayer2.Player&apos;)
        if (os.environ[&apos;BLOCK_BUTTON&apos;] == &apos;1&apos;):
            control_iface.Previous()
        elif (os.environ[&apos;BLOCK_BUTTON&apos;] == &apos;2&apos;):
            control_iface.PlayPause()
        elif (os.environ[&apos;BLOCK_BUTTON&apos;] == &apos;3&apos;):
            control_iface.Next()

    spotify_iface = dbus.Interface(spotify, &apos;org.freedesktop.DBus.Properties&apos;)
    props = spotify_iface.Get(&apos;org.mpris.MediaPlayer2.Player&apos;, &apos;Metadata&apos;)

    if (sys.version_info &gt; (3, 0)):
        print(str(props[&apos;xesam:artist&apos;][0]) + &quot; - &quot; + str(props[&apos;xesam:title&apos;]))
    else:
        print(props[&apos;xesam:artist&apos;][0] + &quot; - &quot; + props[&apos;xesam:title&apos;]).encode(&apos;utf-8&apos;)
    exit
except dbus.exceptions.DBusException:
    exit</code></pre><p>Once done, use the following command to make it executable:</p><pre><code>sudo chmod +x ~/.config/scripts/spotify.py</code></pre><p>Now, open the I3blocks config file:</p><pre><code>nano ~/.config/i3blocks/i3blocks.conf</code></pre><p>And paste the following lines (I would recommend you paste them at the beginning of the block):</p><pre><code>[spotify]
label=&#xF1BC;
command=/home/$USER/.config/scripts/spotify.py
color=#81b71a
interval=5</code></pre><p>Save changes, exit from the config file, and restart the I3.</p><p>Once you added the blocks I mentioned, the bar will look like this:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/blocks-i3.jpg" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="919" height="70" srcset="https://itsfoss.com/content/images/size/w600/2023/04/blocks-i3.jpg 600w, https://itsfoss.com/content/images/2023/04/blocks-i3.jpg 919w" sizes="(min-width: 720px) 720px"></figure><p>You can take a look at my home screen with the blocks (by clicking on the image below).</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Customize-the-I3blocks-in-I3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1102" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Customize-the-I3blocks-in-I3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Customize-the-I3blocks-in-I3-window-manager.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/Customize-the-I3blocks-in-I3-window-manager.png 1600w, https://itsfoss.com/content/images/2023/04/Customize-the-I3blocks-in-I3-window-manager.png 1942w" sizes="(min-width: 720px) 720px"></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4CB;</div><div class="kg-callout-text">If you&apos;re confused about where those default blocks (documentation and greetings) are, it took me several comments to disable them to achieve the shown look!</div></div><h2 id="use-i3-gaps-in-linux">Use I3 gaps in Linux</h2><p>If you want to have gaps between the windows, you can use <code>i3gaps</code> and after color schemes, <code>I3gaps</code> is the most crucial element in this guide. </p><p>To use the gaps, you must make some changes in the i3 config file.</p><p>So open the I3 config file:</p><pre><code>nano ~/.config/i3/config</code></pre><p>Go to the end of the file and paste the following:</p><pre><code># default gaps
gaps inner 15
gaps outer 5

# gaps
set $mode_gaps Gaps: (o)uter, (i)nner, (h)orizontal, (v)ertical, (t)op, (r)ight, (b)ottom, (l)eft
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_horiz Horizontal Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_verti Vertical Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_top Top Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_right Right Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_bottom Bottom Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_left Left Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym $mod+Shift+g mode &quot;$mode_gaps&quot;

mode &quot;$mode_gaps&quot; {
        bindsym o      mode &quot;$mode_gaps_outer&quot;
        bindsym i      mode &quot;$mode_gaps_inner&quot;
        bindsym h      mode &quot;$mode_gaps_horiz&quot;
        bindsym v      mode &quot;$mode_gaps_verti&quot;
        bindsym t      mode &quot;$mode_gaps_top&quot;
        bindsym r      mode &quot;$mode_gaps_right&quot;
        bindsym b      mode &quot;$mode_gaps_bottom&quot;
        bindsym l      mode &quot;$mode_gaps_left&quot;
        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}

mode &quot;$mode_gaps_outer&quot; {
        bindsym plus  gaps outer current plus 5
        bindsym minus gaps outer current minus 5
        bindsym 0     gaps outer current set 0

        bindsym Shift+plus  gaps outer all plus 5
        bindsym Shift+minus gaps outer all minus 5
        bindsym Shift+0     gaps outer all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}
mode &quot;$mode_gaps_inner&quot; {
        bindsym plus  gaps inner current plus 5
        bindsym minus gaps inner current minus 5
        bindsym 0     gaps inner current set 0

        bindsym Shift+plus  gaps inner all plus 5
        bindsym Shift+minus gaps inner all minus 5
        bindsym Shift+0     gaps inner all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}
mode &quot;$mode_gaps_horiz&quot; {
        bindsym plus  gaps horizontal current plus 5
        bindsym minus gaps horizontal current minus 5
        bindsym 0     gaps horizontal current set 0

        bindsym Shift+plus  gaps horizontal all plus 5
        bindsym Shift+minus gaps horizontal all minus 5
        bindsym Shift+0     gaps horizontal all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}
mode &quot;$mode_gaps_verti&quot; {
        bindsym plus  gaps vertical current plus 5
        bindsym minus gaps vertical current minus 5
        bindsym 0     gaps vertical current set 0

        bindsym Shift+plus  gaps vertical all plus 5
        bindsym Shift+minus gaps vertical all minus 5
        bindsym Shift+0     gaps vertical all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}
mode &quot;$mode_gaps_top&quot; {
        bindsym plus  gaps top current plus 5
        bindsym minus gaps top current minus 5
        bindsym 0     gaps top current set 0

        bindsym Shift+plus  gaps top all plus 5
        bindsym Shift+minus gaps top all minus 5
        bindsym Shift+0     gaps top all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}
mode &quot;$mode_gaps_right&quot; {
        bindsym plus  gaps right current plus 5
        bindsym minus gaps right current minus 5
        bindsym 0     gaps right current set 0

        bindsym Shift+plus  gaps right all plus 5
        bindsym Shift+minus gaps right all minus 5
        bindsym Shift+0     gaps right all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}
mode &quot;$mode_gaps_bottom&quot; {
        bindsym plus  gaps bottom current plus 5
        bindsym minus gaps bottom current minus 5
        bindsym 0     gaps bottom current set 0

        bindsym Shift+plus  gaps bottom all plus 5
        bindsym Shift+minus gaps bottom all minus 5
        bindsym Shift+0     gaps bottom all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}
mode &quot;$mode_gaps_left&quot; {
        bindsym plus  gaps left current plus 5
        bindsym minus gaps left current minus 5
        bindsym 0     gaps left current set 0

        bindsym Shift+plus  gaps left all plus 5
        bindsym Shift+minus gaps left all minus 5
        bindsym Shift+0     gaps left all set 0

        bindsym Return mode &quot;$mode_gaps&quot;
        bindsym Escape mode &quot;default&quot;
}</code></pre><p>Save changes and exit from the config file.</p><p>Reload i3 using <code>Mod + Shift + r</code> and you&apos;d see the gaps between windows:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/use-i3gaps-in-i3-window-manager.png" class="kg-image" alt="The Ultimate Guide to i3 Customization in Linux" loading="lazy" width="1942" height="1102" srcset="https://itsfoss.com/content/images/size/w600/2023/04/use-i3gaps-in-i3-window-manager.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/use-i3gaps-in-i3-window-manager.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/04/use-i3gaps-in-i3-window-manager.png 1600w, https://itsfoss.com/content/images/2023/04/use-i3gaps-in-i3-window-manager.png 1942w" sizes="(min-width: 720px) 720px"></figure><p>But what if you want to resize the gaps? It is quite simple and can be done in simple steps:</p><ol><li>Press <code>Mod + Shift + g</code> to enter the gaps mode</li><li>Choose what you want to change by using the given options</li><li>Use <code>+</code> or <code>-</code> to increase/decrease gaps </li><li>Once done, press the <code>Esc</code> key to exit the gaps mode</li></ol><p>And that&apos;s it!</p><h2 id="did-we-forget-to-customize-the-terminal">Did we forget to customize the Terminal?</h2><p>Fret not; you can <a href="https://itsfoss.com/zsh-ubuntu/">switch to ZSH</a>, a different shell, to make the terminal look different or explore some lesser-known <a href="https://itsfoss.com/shells-linux/">Linux shells</a>.</p><p>Either way, you can <a href="https://itsfoss.com/customize-linux-terminal/">customize the existing terminal</a> or pick different <a href="https://itsfoss.com/linux-terminal-emulators/">terminal emulators</a>. </p><p><strong>I hope you will no longer fear ricing! </strong>&#x1F60E;</p><p><em>If you have any suggestions or want to show off your setup, please do so in the comments section.</em></p>]]></content:encoded></item></channel></rss>


