# feed_item_data

feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: Smithsonian Latino Museum Students to Hear from NASA Station Astronaut
id:
http://www.nasa.gov/press-release/smithsonian-latino-museum-students-to-hear-from-nasa-station-astronaut

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.

link:
http://www.nasa.gov/press-release/smithsonian-latino-museum-students-to-hear-from-nasa-station-astronaut


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA’s Artemis II Moon Crew Available for Interviews in Washington
id:
http://www.nasa.gov/press-release/nasa-s-artemis-ii-moon-crew-available-for-interviews-in-washington

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.

link:
http://www.nasa.gov/press-release/nasa-s-artemis-ii-moon-crew-available-for-interviews-in-washington


id: http://www.nasa.gov/press-release/media-public-invited-to-meet-solvers-in-nasa-space-food-challenge
feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: Media, Public Invited to Meet Solvers in NASA Space Food Challenge
link: http://www.nasa.gov/press-release/media-public-invited-to-meet-solvers-in-nasa-space-food-challenge
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.


id: 10.1371/journal.pone.0286152
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Exploring the perception of barriers to a dual career by student-athletes with/out disabilities
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286152
author: Raquel Vaquero-Cristóbal
content:
<p>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</p>

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, <i>the university is far from my home</i> (p = 0.007) and <i>the university is far from my training site</i> (p = 0.006), <i>I find myself unable to balance study and training time</i> (p = 0.030), <i>I have to take care of my family</i> (p<0.001), and <i>my current job does not allow me to study enough</i> (p<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.


id: 10.1371/journal.pone.0286151
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Nest attendance, incubation constancy, and onset of incubation in dabbling ducks
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286151
author: C. Alex Hartman
content:
<p>by C. Alex Hartman, Joshua T. Ackerman, Sarah H. Peterson, Brady Fettig, Mike Casazza, Mark P. Herzog</p>

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 (<i>Mareca strepera</i>; 779 minutes), followed by mallard (<i>Anas platyrhynchos</i>; 636 minutes) and then cinnamon teal (<i>Spatula cyanoptera</i>; 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.


id: 10.1371/journal.pone.0286144
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286144
author: Danielle Botha
title:
Introducing an <i>rbc</i>L and a <i>trn</i>L reference library to aid in the metabarcoding analysis of foraged plants from two semi-arid eastern South African savanna bioregions

content:
<p>by Danielle Botha, Mornè du Plessis, Frances Siebert, Sandra Barnard</p>

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 <i>rbc</i>L and a <i>trn</i>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, <i>rbc</i>L and <i>trn</i>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 <i>rbc</i>L reference dataset consisted of 1238 sequences representing 318 genera and 562 species. The final <i>trn</i>L dataset consisted of 921 sequences representing 270 genera and 461 species. Barcode gaps were found for 76% of the taxa in the <i>rbc</i>L barcode reference dataset and 68% of the taxa in the <i>trn</i>L barcode reference dataset. The identification success rate, calculated with the <i>k</i>-nn criterion was 85.86% for the <i>rbc</i>L dataset and 73.72% for the <i>trn</i>L dataset. The datasets for <i>rbc</i>L and <i>trn</i>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.


id: 10.1371/journal.pone.0286130
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286130
author: Mounira Inas Drais
title:
A quantitative PCR assay for the detection and quantification of <i>Septoria pistaciarum</i>, the causal agent of pistachio leaf spot in Italy

content:
<p>by Mounira Inas Drais, Giorgio Gusella, Angelo Mazzaglia, Giancarlo Polizzi</p>

Septoria leaf spot is one of the most widespread diseases affecting pistachio (<i>Pistacia vera</i>) in countries of the Mediterranean region. <i>Septoria pistaciarum</i> was recently confirmed as the causal agent of this disease in Italy. Currently, the detection of <i>S</i>. <i>pistaciarum</i> 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 <i>S</i>. <i>pistaciarum</i> 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 <i>S</i>. <i>pistaciarum</i> that can also contribute to better understand the population dynamics of the pathogen in the orchard.


id: 10.1371/journal.pone.0286115
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286115
author: Alice Bastos
title:
Engagement with life and psychological well-being in late adulthood: Findings from community-based programs in Portugal

content:
<p>by Alice Bastos, Joana Monteiro, Raquel Barbosa, Helena Pimentel, Sofia Silva, Carla Faria</p>
Objectives <p>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.</p> Method <p>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.</p> Results <p>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.</p> Conclusions <p>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.</p>


id: 10.1371/journal.pone.0286106
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Assessing the effects of ROO and tariff margin on China-ASEAN free trade agreement utilization
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286106
author: Yahui Qu
content:
<p>by Yahui Qu, Ruxu Zhang</p>

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.


id: 10.1371/journal.pone.0286103
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286103
author: Jacques M. T. de Bakker
title:
Summation of activation at the branch-stem transition of <i>Mimosa pudica</i>; a comparison with summation in cardiac tissue

content:
<p>by Jacques M. T. de Bakker, Ruben Coronel</p>

In <i>Mimosa pudica</i> 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 <i>Mimosa</i> 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 <i>Mimosa</i>.


id: 10.1371/journal.pone.0286102
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286102
author: Basil Wahn
title:
Offloading under cognitive load: Humans are willing to offload parts of an attentionally demanding task to an algorithm

content:
<p>by Basil Wahn, Laura Schmitz, Frauke Nora Gerster, Matthias Weiss</p>

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.


id: 10.1371/journal.pone.0286100
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286100
author: Morgan Glofcheskie
title:
Inflorescences of <i>Cuscuta</i> (Convolvulaceae): Diversity, evolution and relationships with breeding systems and fruit dehiscence modes

content:
<p>by Morgan Glofcheskie, Tristan Long, Anna Ho, Mihai Costea</p>

<i>Cuscuta</i> (dodder) includes ca. 200 species of plant obligate stem parasites with enormous ecological and economical significance. Inflorescences have been historically used in <i>Cuscuta</i> 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 <i>Cuscuta</i> 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: “<i>Cuscuta type</i>”, a simple, monochasial scorpioid cyme; “<i>Monogynella type</i>”, a compound monochasial scorpioid cymes with the longest primary axes having prolonged vegetative growth and giving the appearance of thyrses; and “<i>Grammica type</i>”, a compound monochasial scorpiod cymes with up to five orders of axes. Maximum likelihood analyses suggested <i>Monogynella</i> as the ancestral type, while <i>Cuscuta</i> and <i>Grammica</i> 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 <i>Cuscuta</i> and therefore seed dispersal.


id: 10.1371/journal.pone.0286097
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286097
author: Yue Liu
title:
Comparison of the safety between propylthiouracil and methimazole with hyperthyroidism in pregnancy: A systematic review and meta-analysis

content:
<p>by Yue Liu, Qianqian Li, Yang Xu, Yixin Chen, Yanyan Men</p>
Objective <p>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.</p> Method <p>From inception until June 2, 2022, all available studies were searched in PubMed, Web of Science, Cochrane, EBSCO, Embase, Scopus, and CNKI.</p> Result <p>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, <i>P</i> = 0.002, I<sup>2</sup> = 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, <i>P</i> = 0.061, I<sup>2</sup> = 0.0%). There were no statistically significant differences in hepatotoxicity (OR 1.54, 95%CI 0.77–3.09, <i>P</i> = 0.221, I<sup>2</sup> = 0.0%) or miscarriage (OR 0.89, 95%CI 0.72–1.11, <i>P</i> = 0.310, I<sup>2</sup> = 0.0%) between PTU and MMI exposure.</p> Conclusion <p>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.</p>


id: 10.1371/journal.pone.0286095
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286095
author: Rose A. Inchauregui
title:
Aphid facultative symbionts confer no protection against the fungal entomopathogen <i>Batkoa apiculata</i>

content:
<p>by Rose A. Inchauregui, Keertana Tallapragada, Benjamin J. Parker</p>

Fungi in the family <i>Entomophthoraceae</i> are prevalent pathogens of aphids. Facultative symbiotic bacteria harbored by aphids, including <i>Spiroplasma sp</i>. and <i>Regiella insecticola</i>, have been shown to make their hosts more resistant to infection with the fungal pathogen <i>Pandora neoaphidis</i>. How far this protection extends against other species of fungi in the family <i>Entomophthoraceae</i> is unknown. Here we isolated a strain of the fungal pathogen <i>Batkoa apiculata</i> infecting a natural population of pea aphids (<i>Acyrthosiphon pisum</i>) 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 <i>B</i>. <i>apiculata</i>. 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.


id: 10.1371/journal.pone.0286091
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286091
author: Ahlem Dab
title:
Biochemical characterization of an alkaline and detergent-stable Lipase from <i>Fusarium annulatum</i> Bugnicourt strain CBS associated with olive tree dieback

content:
<p>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</p>

This work describes a novel extracellular lipolytic carboxylester hydrolase named FAL, with lipase and phospholipase A<sub>1</sub> (PLA<sub>1</sub>) activity, from a newly isolated filamentous fungus <i>Ascomycota</i> CBS strain, identified as <i>Fusarium annulatum</i> Bunigcourt. FAL was purified to about 62-fold using ammonium sulphate precipitation, Superdex<sup>®</sup> 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<sub>1</sub> with a regioselectivity to the <i>sn</i>-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 <i>Fusarium graminearum</i> lipase (GZEL) and the <i>Thermomyces lanuginosus</i> lipase (Lipolase<sup>®</sup>), 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.


id: 10.1371/journal.pone.0286077
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286077
author: Ardvin Kester S. Ong
title:
Evaluating factors influencing customers’ intention to eat Korean cuisine “Samgyeopsal” in the Philippines: A structural equation model forest classifier approach

content:
<p>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</p>

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.


id: 10.1371/journal.pone.0286070
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286070
author: J. Elijah Powell
title:
The microbiome and gene expression of honey bee workers are affected by a diet containing pollen substitutes

content:
<p>by J. Elijah Powell, Pierre Lau, Juliana Rangel, Ryan Arnott, Tyler De Jong, Nancy A. Moran</p>

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.


id: 10.1371/journal.pone.0286058
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286058
author: Claire J. Han
title:
Factors associated with long-term gastrointestinal symptoms in colorectal cancer survivors in the women’s health initiatives (WHI study)

content:
<p>by Claire J. Han, Kerryn W. Reding, Matthew F. Kalady, Rachel Yung, Heather Greenlee, Electra D. Paskett</p>
Purpose <p>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.</p> Methods <p>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.</p> Results <p>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 (<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, <i>Ps</i> < .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 (<i>Ps</i> < .001).</p> Conclusions <p>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).</p>


id: 10.1371/journal.pone.0286053
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Charitable donations and the theory of planned behaviour: A systematic review and meta-analysis
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286053
author: Katherine M. White
content:
<p>by Katherine M. White, Louise C. Starfelt Sutton, Xiang Zhao</p>

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 (<i>r</i>+ = 0.562), followed by moral norm (<i>r</i>+ = 0.537), attitude (<i>r</i>+ = 0.507), and subjective norm (<i>r</i>+ = 0.472). Intention (<i>r</i>+ = 0.424) showed stronger associations with prospective behaviour than PBC (<i>r</i>+ = 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.


id: 10.1371/journal.pone.0286032
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286032
author: Chao-Ting Cheng
title:
Identifying essential genes in genome-scale metabolic models of consensus molecular subtypes of colorectal cancer

content:
<p>by Chao-Ting Cheng, Jin-Mei Lai, Peter Mu-Hsin Chang, Yi-Ren Hong, Chi-Ying F. Huang, Feng-Sheng Wang</p>

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.


id: 10.1371/journal.pone.0286023
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286023
author: Ruth Maria Ingendoh
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

content:
<p>by Ruth Maria Ingendoh, Ella S. Posny, Angela Heine</p>

<i>Binaural beats</i> 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 <i>brainwave entrainment hypothesis</i>, 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.


id: 10.1371/journal.pone.0286020
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: ‘Microincisional trabeculectomy for glaucoma”
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286020
author: Aparna Rao
content:
<p>by Aparna Rao, Sardar Khan, Sujoy Mukherjee</p>
Purpose <p>To evaluate the short-term clinical outcomes of microincisional trabeculectomy (MIT), a new technique of ab-interno trabeculectomy.</p> Methods <p>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 < 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>6 and <22 mm Hg), complications, angle features on anterior segment optical coherence tomography (ASOCT), and the need for additional surgeries were analysed.</p> Results <p>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 >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 >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.</p> Conclusion <p>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.</p>


id: 10.1371/journal.pone.0286000
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Spiny mice (<i>Acomys</i>) cells fail to engraft in NOD scid gamma
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286000
author: Janak Gaire
content:
<p>by Janak Gaire, Valentina Supper, Darrice Montgomery, Chelsey S. Simmons</p>

Immune cells and stromal cells regulate wound healing and regeneration through complex activation patterns with spatiotemporal variation. The scarless regeneration of Spiny mice (<i>Acomys</i> 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 <i>Acomys</i>-<i>Mus</i> chimeras by transplanting bone marrow (BM) from <i>Acomys</i> into NOD Scid Gamma (NSG), a severely immunodeficient mouse line often used in creating humanized mice. Here, we report that <i>Acomys</i> 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 <i>Acomys</i> splenocytes in <i>Acomys</i>-<i>Mus</i> chimeras suggesting early graft failure. Overall, these results demonstrate the adoptive transfer of <i>Acomys</i> BM alone is not sufficient to establish <i>Acomys</i> hematopoietic system in NSG mouse.


id: 10.1371/journal.pone.0285982
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285982
author: Jihad Abdelgadir
title:
Revisiting flow augmentation bypass for cerebrovascular atherosclerotic vaso-occlusive disease: Single-surgeon series and review of the literature

content:
<p>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</p>
Objective <p>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.</p> Methods <p>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.</p> Results <p>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.</p> Conclusions <p>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.</p>


id: 10.1371/journal.pone.0285978
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285978
author: Angélica Jara-Servin
title:
Root microbiome diversity and structure of the Sonoran desert buffelgrass (<i>Pennisetum ciliare</i> L.)

content:
<p>by Angélica Jara-Servin, Adán Silva, Hugo Barajas, Rocío Cruz-Ortega, Clara Tinoco-Ojanguren, Luis D. Alcaraz</p>

Buffelgrass (<i>Pennisetum ciliare</i>) 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 <i>H’</i> = 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 <i>Actinobacteria</i>, <i>Proteobacteria</i>, and <i>Acidobacteria</i>. 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 (<i>e</i>.<i>g</i>., <i>Planctomicrobium</i>, <i>Aurantimonas</i>, and <i>Tellurimicrobium</i>). We also found that the community composition of the microbiome changes depending on the developmental state of buffelgrass (<i>p</i> = 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.


id: 10.1371/journal.pone.0285973
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Impact of the internet use on informal workers’ wages: Evidence from China
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285973
author: Xiaofei Si
content:
<p>by Xiaofei Si, Maishou Li</p>

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.


id: 10.1371/journal.pone.0285966
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285966
author: Qingmiao Li
title:
Ginsenoside 24-OH-PD from red ginseng inhibits acute T-lymphocytic leukaemia by activating the mitochondrial pathway

content:
<p>by Qingmiao Li, Yongfu Chen, Xiaolin Zhao, Bocheng Lu, Tingli Qu, Li Tang, Qian Zheng</p>

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 <i>in vivo</i>. 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 <i>in vivo</i> and <i>in vitro</i>. 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.


id: 10.1371/journal.pone.0285950
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Impact of the COVID-19 pandemic on Ukrainian mortality, 2020–2021
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285950
author: Neil K. Mehta
content:
<p>by Neil K. Mehta, Ihor Honchar, Olena Doroshenko, Khrystyna Pak, Mariia Daniuk, Pavlo Polikarchuk</p>

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.


id: 10.1371/journal.pone.0285938
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285938
author: W. J. R. van der Leij
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

content:
<p>by W. J. R. van der Leij, J. C. M. Vernooij, C. M. Vinke, R. J. Corbee, J. W. Hesselink</p>

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.


id: 10.1371/journal.pone.0285926
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285926
author: Juan Lin
title:
HIV infection and cardiovascular disease have both shared and distinct monocyte gene expression features: Women’s Interagency HIV study

content:
<p>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</p>

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<sup>dim</sup>CD16<sup>+</sup>) and intermediate monocytes (IM, CD14<sup>+</sup>CD16<sup>+</sup>) 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.


id: 10.1371/journal.pone.0285870
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Plasma proteome perturbation for CMV DNAemia in kidney transplantation
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285870
author: Tara K. Sigdel
content:
<p>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 </p>
Background <p>Cytomegalovirus (CMV) infection, either <i>de novo</i> 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).</p> Methods <p>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.</p> Results <p>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).</p> Conclusion <p>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.</p>


id: 10.1371/journal.pone.0285809
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285809
author: Saidou Sabi Boun
title:
Protocol for a scoping review study on the prevalence and public health consequences of non-medical use (NMU) of tramadol in Africa

content:
<p>by Saidou Sabi Boun, Olumuyiwa Omonaiye, Sanni Yaya</p>
Background <p>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.</p> Methods <p>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.</p> Results <p>Through this study, we aim to map consumers and identify risk factors, health consequences, and prevalence of the NMU of tramadol in African countries.</p> Discussion <p>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.</p> Systematic review registration <p>Open Science Framework: https://osf.io/ykt25/.</p>


id: 10.1371/journal.pone.0285789
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0285789
author: Xiaoxiao Zhou
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

content:
<p>by Xiaoxiao Zhou, Houlin Ji, Jiajun Wu, Haixiao Chen, Yang Yang</p>
Background <p>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.</p> Methods <p>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.</p> Results <p>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).</p> Conclusions <p>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.</p>


id: 6447a75ac1891068af3a22b6
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: 7 Super Lightweight Linux Distros
link: https://itsfoss.com/super-lightweight-distros/
categories: Distros
description:
Light as a feather! These super small, lightweight Linux distributions should be interesting to try.

content:
<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">📋</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 "<strong>Core</strong>" 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'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 📖</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'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'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 📖</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'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 📖</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’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'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 📖</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’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'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's your experience with it?</p>


id: 6449019fc1891068af3a2792
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: FOSS Weekly #23.17: i3 Guide, Kernel 6.3, Essential Linux Apps and More
link: https://itsfoss.com/newsletter/foss-weekly-23-17/
categories: Newsletter
description:
An in-depth i3 customization guide, Opera's new browser and a real open source chatGPT alternative are the highlights of this edition.

content:
<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>💬 Let'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'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">📰 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's browser lineup, with a dedicated Linux version.</li><li>Manjaro 22.1 'Talos' 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 '23.04' 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'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">🧠 What we’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'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">🧮 Tutorials</h2><p>Here'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’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'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'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">📹 What we are watching</h2><p>Here'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">✨ Application highlights</h2><p>Want suggestions on apps? Here'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’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'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 'essential', here's an actual open-source ChatGPT alternative, called 'HuggingChat' 💩🍲</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. 💪</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">🛍️Interesting offer</h2><p>Explore the cutting-edge world of ChatGPT and generative AI with this ebook bundle—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&ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Ultimate Guide to ChatGPT & AI Chat Bots</div><div class="kg-bookmark-description">We’ve teamed up with Packt for our newest bundle. Get books like The AI Product Manager’s Handbook & Exploring GPT-3. Plus, pay what you want & 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&h=630&w=1200&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">🤣 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">🗓️ 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">💬 In case you missed it</h2><p>That'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 'In case you missed it' section on It'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'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">❤️ 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's here</a>).</p><p>Become a Pro member and show your support 🙏</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Keep on learning with It's FOSS :)</p>


id: 642a535e0b20e022ee3fa91b
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: The Ultimate Guide to i3 Customization in Linux
link: https://itsfoss.com/i3-customization/
categories: Customization,Guides
description:
Learn about customizing your system's look and feel with i3 window manager in this super-detailed guide.

content:
<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'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 😌</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>😲</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">💡</div><div class="kg-callout-text">"Rice" is a word commonly used to refer to making visual improvements and customizations on one'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'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">📥</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'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'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 + ←</code></td>
<td>Focus left.</td>
</tr>
<tr>
<td><code>Mod + →</code></td>
<td>Focus right.</td>
</tr>
<tr>
<td><code>Mod + ↑</code></td>
<td>Focus up.</td>
</tr>
<tr>
<td><code>Mod + ↓</code></td>
<td>Focus down.</td>
</tr>
<tr>
<td><code>Mod + Shift + ←</code></td>
<td>Move the window to the left side.</td>
</tr>
<tr>
<td><code>Mod + Shift + →</code></td>
<td>Move the window to the right side.</td>
</tr>
<tr>
<td><code>Mod + Shift + ↑</code></td>
<td>Move the window up.</td>
</tr>
<tr>
<td><code>Mod + Shift + ↓</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'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'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'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'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 && 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 'connected'</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've made to the config file and that'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'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'd have to use the <code>i3lock-color</code> package.</p><p>But first, you'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're on an Ubuntu base, you'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's create a new directory and make a new file to store the configuration for the lock screen:</p><pre><code>mkdir ~/.config/scripts && 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='#00000000'
CLEAR='#ffffff22'
DEFAULT='#00897bE6'
TEXT='#00897bE6'
WRONG='#880000bb'
VERIFYING='#00564dE6'

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="%H:%M:%S"        \
--date-str="%A, %Y-%m-%d"       \
--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">📋</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'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'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'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'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'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't get the job done. <strong>You'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'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 "1: Terminal"
set $ws2 "2: Firefox"
set $ws3 "3: VMWare"
set $ws4 "4: Spotify"
set $ws5 "5: Shutter"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
</code></pre><p>Now let'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>
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1: Terminal"
set $ws2 "2: Firefox"
set $ws3 "3: VMWare"
set $ws4 "4: Spotify"
set $ws5 "5: Shutter"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"</code></pre><p>Don'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'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'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'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) = "Navigator", "firefox"</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="class_name"] move to workspace $[workspace_variable]</code></pre><p>For reference, here'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! 😊</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'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'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'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'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 "order" 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 += "ipv6"
#order += "wireless _first_"
order += "ethernet _first_"
#order += "battery all"
order += "disk /"
#order += "load"
order += "memory"
order += "tztime local"</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  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">📋</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'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">💡</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'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'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'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's change the bar section to apply transparency.</p><p>Here, you'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't show any icons in the tray so if you don'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,  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've made, restart the i3 and you'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">📋</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't worry; I won't ask you to type scripts manually; various scripts are available on GitHub, covering almost every aspect you'd ever want.</div></div><p>But before that, you'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'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'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'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="${DIR:-$BLOCK_INSTANCE}"
DIR="${DIR:-$HOME}"
ALERT_LOW="${ALERT_LOW:-$1}"
ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%)

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

df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW '
/\/.*/ {
	# full text
	print label $4
	# short text
	print label $4
	use=$5
	# no need to continue parsing
	exit 0
}
END {
	gsub(/%$/,"",use)
	if (100 - use < alert_low) {
		# color
		print "#FF0000"
	}
}
'</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=
#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 📖</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…</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'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="${BLOCK_INSTANCE:-mem}"
PERCENT="${PERCENT:-true}"

awk -v type=$TYPE -v percent=$PERCENT '
/^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 == "swap") {
		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 > 0) {
		pct=used/total*100
	}
	# full text
	if (percent == "true" ) {
		printf("%.1fG/%.1fG (%.f%%)\n", used, total, pct)
	} else {
		printf("%.1fG/%.1fG\n", used, total)
	}
	# short text
	printf("%.f%%\n", pct)
	# color
	if (pct > 90) {
		print("#FF0000")
	} else if (pct > 80) {
		print("#FFAE00")
	} else if (pct > 70) {
		print("#FFF600")
	}
}
' /proc/meminfo</code></pre><p>Save changes and exit from the text editor.</p><p>Now, to make this work, you'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=
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='', arg_type=str):
        val = default
        if name in os.environ:
            val = os.environ[name]
        return arg_type(val)

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

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


def get_updates():
    output = ''
    try:
        output = check_output(['checkupdates']).decode('utf-8')
    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(' ')[0]
               for line in output.split('\n')
               if line]

    return updates


def get_aur_yaourt_updates():
    output = ''
    try:
        output = check_output(['yaourt', '-Qua']).decode('utf-8')
    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(' ')[0]
                   for line in output.split('\n')
                   if line.startswith('aur/')]

    return aur_updates

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

    aur_updates = [line.split(' ')[0] for line in output.split('\n') 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("LABEL","")
message = "{0}<span color='{1}'>{2}</span>"
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 > 0:
    if update_count == 1:
      info = str(update_count) + ' update available'
      short_info = str(update_count) + ' update'
    else:
      info = str(update_count) + ' updates available'
      short_info = str(update_count) + ' updates'

    matches = matching_updates(updates, args.watch)
    if matches:
        info += ' [{0}]'.format(', '.join(matches))
        short_info += '*'
    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, 'system up to date'))</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=</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'd have to install some dependencies.</p><p>So if you are using Arch,  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'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'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'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 "$MIXER" ]] ; then
    MIXER="default"
    if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then
        # pulseaudio is running, but not all installations use "pulse"
        if amixer -D pulse info >/dev/null 2>&1 ; then
            MIXER="pulse"
        fi
    fi
    [ -n "$(lsmod | grep jack)" ] && MIXER="jackplug"
    MIXER="${2:-$MIXER}"
fi
if [[ -z "$SCONTROL" ]] ; then
    SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
                      sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" |
                      head -n1
                    )}"
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 "$STEP" ]] ; then
    STEP="${1:-5%}"
fi

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

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

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

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=♪
#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">💡</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} && 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("org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2")


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

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

    if (sys.version_info > (3, 0)):
        print(str(props['xesam:artist'][0]) + " - " + str(props['xesam:title']))
    else:
        print(props['xesam:artist'][0] + " - " + props['xesam:title']).encode('utf-8')
    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=
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">📋</div><div class="kg-callout-text">If you'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 "$mode_gaps"

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

mode "$mode_gaps_outer" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_horiz" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_verti" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_top" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_right" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_bottom" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_left" {
        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 "$mode_gaps"
        bindsym Escape mode "default"
}</code></pre><p>Save changes and exit from the config file.</p><p>Reload i3 using <code>Mod + Shift + r</code> and you'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'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>😎</p><p><em>If you have any suggestions or want to show off your setup, please do so in the comments section.</em></p>


id: https://fedoramagazine.org/?p=38288
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: Trying different desktop environments using “rpm-ostree rebase”
link: https://fedoramagazine.org/trying-different-desktop-environments-using-rpm-ostree/
categories: Fedora Project community
description:
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;]

content:
<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 – provides GNOME desktop environment</li>



<li>Kinoite – provides KDE Plasma desktop environment</li>



<li>Sericea – 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>


id: https://fedoramagazine.org/?p=38326
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: New AWS storage type for Fedora Linux
description: Fedora Linux now has a better performing default storage option at a lower cost on AWS.
link: https://fedoramagazine.org/new-aws-storage-type-for-fedora-linux/
categories: Fedora Project community,AWS,Cloud
content:
<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’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’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’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’ll notice a new string in the storage type portion of the image name. As an example, here’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>


id: https://fedoramagazine.org/?p=38302
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: Contribute at the Fedora Linux Test Week for Kernel 6.3
link: https://fedoramagazine.org/contribute-at-the-fedora-linux-test-week-for-kernel-6-3/
categories: Events,Fedora Contributor Community,Fedora Project community,Kernel test week,testing
description:
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;]

content:
<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 <a href="http://fedoraproject.org/wiki/Test_Day:2023-05-07_Kernel_6.3_Test_Week" target="_blank" rel="noreferrer noopener">wiki page</a> 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 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 all the necessary steps</a>.</p>



<p>Happy testing, and we hope to see you on one of the  test days.</p>


id: https://fedoramagazine.org/?p=38230
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: Anaconda Installer Partitioning and Storage Survey Results
link: https://fedoramagazine.org/anaconda-installer-partitioning-and-storage-survey-results/
categories: Fedora Project community
description:
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;]

content:
<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 – and we are here to make that easier. </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. </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. </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. </p>


id: https://fedoramagazine.org/?p=38177
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: The Community Platform Engineering F2F 2023 Experience – Part I
link: https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-i/
categories: Events,CPE
description:
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!

content:
<blockquote class="wp-block-quote"><p><em>20 Mar 2023 – 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 — 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 – <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 – 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 – <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. </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>


id: https://fedoramagazine.org/?p=38157&preview=true&preview_id=38157
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: Changes to the ELN kernel RPM NVR
link: https://fedoramagazine.org/changes-eln-kernel-rpm-nvr/
categories: Fedora Project community
description:
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;]

content:
<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>).  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.  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?  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.  Fedora Linux is configured to achieve its specific goals and targets.  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.  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.  This enables Red Hat to monitor performance and resolve issues before they make it into a Red Hat Enterprise Linux (RHEL) release.  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.  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.  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.  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.  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).  The last field, the Release, contains additional upstream tagging information (release candidate tags), a monotonically increasing build number, and a distribution tag.  The NVR is separate from the kernel’s uname and the uname is not generated from it.  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> <strong>This change has no impact on the kernel uname.</strong>  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.  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.  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.  More information on these improvements to the Centos Stream and RHEL ecosystems will be released in the upcoming months. </p>



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



<p><strong>Fedora Linux is not impacted by these changes.</strong>  </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.  The commitment to prevent cross-OS issues is strictly enforced by the maintainers.  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>


id: https://fedoramagazine.org/?p=38204
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: How to rebase to Fedora Linux 38 on Silverblue
link: https://fedoramagazine.org/how-to-rebase-to-fedora-linux-38-on-silverblue/
categories: New in Fedora,Using Software,fedora 38,rebase,silverblue
description:
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;]

content:
<p>Fedora Silverblue is <a href="https://docs.fedoraproject.org/en-US/fedora-silverblue/" target="_blank" rel="noreferrer noopener">an operating system for your desktop built on Fedora Linux</a>. It’s excellent for daily use, development, and container-based workflows. It offers <a href="https://fedoramagazine.org/give-fedora-silverblue-a-test-drive/" target="_blank" rel="noreferrer noopener">numerous advantages</a> 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 <em>Download</em> 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 <em>Restart & Upgrade</em> 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->38 for example) to avoid unnecessary errors.</p>



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



<p>Answer: If you have <a href="https://rpmfusion.org/">rpm-fusion</a> 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>


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: Florida Students to Hear from NASA Astronauts Aboard Space Station
id:
http://www.nasa.gov/press-release/florida-students-to-hear-from-nasa-astronauts-aboard-space-station-0

description:
NASA astronauts aboard the International Space Station will speak to students from St. Mark’s Episcopal School in Palm Beach Gardens, Florida.

link:
http://www.nasa.gov/press-release/florida-students-to-hear-from-nasa-astronauts-aboard-space-station-0


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA, Department of Education Partnership Strengthens STEM Education
id:
http://www.nasa.gov/press-release/nasa-department-of-education-partnership-strengthens-stem-education

description:
NASA and the U.S. Department of Education signed a memorandum of understanding on Wednesday, strengthening the collaboration between the two agencies, including efforts to increase access to high-quality STEM and space education to students and schools across the nation.

link:
http://www.nasa.gov/press-release/nasa-department-of-education-partnership-strengthens-stem-education


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA Mission to Study Ice Clouds, Help Observe Our Dynamic Atmosphere
id:
http://www.nasa.gov/press-release/nasa-mission-to-study-ice-clouds-help-observe-our-dynamic-atmosphere

description:
NASA has selected a new mission to help humanity better understand Earth’s dynamic atmosphere – specifically, ice clouds that form at high altitudes throughout tropical and sub-tropical regions. The PolSIR instrument – short for Polarized Submillimeter Ice-cloud Radiometer – will study such ice clouds to determine how and why they change throughout

link:
http://www.nasa.gov/press-release/nasa-mission-to-study-ice-clouds-help-observe-our-dynamic-atmosphere


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA to Provide Live Coverage of Space Station Cargo Launch, Docking
id:
http://www.nasa.gov/press-release/nasa-to-provide-live-coverage-of-space-station-cargo-launch-docking-2

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.

link:
http://www.nasa.gov/press-release/nasa-to-provide-live-coverage-of-space-station-cargo-launch-docking-2


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: Axiom Space Private Astronauts Headed to International Space Station
id:
http://www.nasa.gov/press-release/axiom-space-private-astronauts-headed-to-international-space-station

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.

link:
http://www.nasa.gov/press-release/axiom-space-private-astronauts-headed-to-international-space-station


id: http://www.nasa.gov/press-release/nasa-extends-nancy-grace-roman-space-telescope-science-operations
feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA Extends Nancy Grace Roman Space Telescope Science Operations
link: http://www.nasa.gov/press-release/nasa-extends-nancy-grace-roman-space-telescope-science-operations
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.


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA Selects Winners, Announces Final Phase of Space Food Challenge
id:
http://www.nasa.gov/press-release/nasa-selects-winners-announces-final-phase-of-space-food-challenge

description:
NASA has announced eight winning teams and awarded $750,000 in prizes in the second phase of the agency's Deep Space Food Challenge. The winning teams will move on to compete in the third and final phase of the challenge.

link:
http://www.nasa.gov/press-release/nasa-selects-winners-announces-final-phase-of-space-food-challenge


id: http://www.nasa.gov/press-release/nasa-selects-blue-origin-as-second-artemis-lunar-lander-provider
feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA Selects Blue Origin as Second Artemis Lunar Lander Provider
link: http://www.nasa.gov/press-release/nasa-selects-blue-origin-as-second-artemis-lunar-lander-provider
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.


id: http://www.nasa.gov/press-release/nasa-rocket-lab-announce-coverage-for-second-tropics-launch
feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA, Rocket Lab Announce Coverage for Second TROPICS Launch
link: http://www.nasa.gov/press-release/nasa-rocket-lab-announce-coverage-for-second-tropics-launch
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.


feed_id: 7a7ce68a-1dec-4cb0-ba14-cc7f3f0c3316
title: NASA to Select Second Lunar Lander Partner for Artemis Moon Mission
id:
http://www.nasa.gov/press-release/nasa-to-select-second-lunar-lander-partner-for-artemis-moon-mission

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

link:
http://www.nasa.gov/press-release/nasa-to-select-second-lunar-lander-partner-for-artemis-moon-mission


id: 10.1371/journal.pone.0286555
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286555
author: The PLOS ONE Editors
content: <p>by The PLOS ONE Editors </p>
title:
Retraction: A Novel Copper Chelate Modulates Tumor Associated Macrophages to Promote Anti-Tumor Response of T Cells


id: 10.1371/journal.pone.0286445
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286445
author: The PLOS ONE Editors
content: <p>by The PLOS ONE Editors </p>
title:
Expression of Concern: MiRNAs Predict the Prognosis of Patients with Triple Negative Breast Cancer: A Meta-Analysis


id: 10.1371/journal.pone.0286400
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286400
author: Tadesse Guangul Alemayehu
title:
Occupational radiation exposure dose and associated factors among radiology personnel in Eastern Amhara, Ethiopia

content:
<p>by Tadesse Guangul Alemayehu, Getahun Gebre Bogale, Getaw Walle Bazie</p>
Background <p>Ionizing radiation is being used more frequently in medicine, which has been linked to recognized biological effects such as cancer and mortality. Radiology services are becoming more widely available in Ethiopian health facilities but there is no compiled record of worker’s radiation dose. So, assessing the magnitude and identifying the associated factors of occupational radiation exposure dose among radiology personnel help to design strategies for radiation protection.</p> Objective <p>The study was designed to assess the occupational radiation exposure dose and associated factors among radiology personnel in eastern Amhara, northeast Ethiopia, 2021.</p> Methods <p>Cross-sectional study was conducted from March 25 to April 30, 2021, in 57 health institutions among 198 radiology personnel. The study comprised all eligible radiology personnel. The data were collected using an electronic-based (Google form) self-administered questionnaire, and document review. The data were entered into an excel spread sheet and then, exported to Stata 14 software. Linear regression model was used to analyse the data after checking its assumptions. Variables with a p-value < 0.25 were entered into a multiple linear regression analysis, and those with a p-value < 0.05 were judged significant. VIF was used to check for multi-collinearity. Coefficient of determination was used to check the model fitness.</p> Results <p>The mean (± SD) annual shallow and deep dose equivalents of radiology personnel were 1.20 (± 0.75) and 1.02 (± 0.70) mSv, respectively. Body mass index (β = 0.104, 95% CI: 0.07, 0.14), practice of timing (β = -0.43, 95% CI: -0.73, -0.13), working experience (β = -0.04, 95% CI: -0.048, -0.032), and practice of distancing (β = -0.26, 95% CI: -0.49, -0.17) were found to be statistically significant factors of annual deep dose equivalent. In addition, body mass index (β = 0.113, 95% CI: 0.08, 0.15), practice of timing (β = -0.62 95% CI: -0.93, -0.31) and, working experience (β = -0.044, 95% CI: -0.053, -0.036 had statistically significant associations with annual shallow dose equivalent.</p> Conclusion <p>The annual dose equivalents were two times higher than the global average of annual per caput effective dose due to medical exposure. Body mass index, practice of timing, working experience, and practice of distancing were factors of occupational radiation exposure dose. Strategies focusing on increasing the skill, experience, and lifestyle of radiology personnel would be supreme important means to reduce occupational radiation exposure dose.</p>


id: 10.1371/journal.pone.0286390
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286390
author: Pranav Maddali
title:
Induction of pro-inflammatory genes by fibronectin DAMPs in three fibroblast cell lines: Role of TAK1 and MAP kinases

content:
<p>by Pranav Maddali, Anthony Ambesi, Paula J. McKeown-Longo</p>

Changes in the organization and structure of the fibronectin matrix are believed to contribute to dysregulated wound healing and subsequent tissue inflammation and tissue fibrosis. These changes include an increase in the EDA isoform of fibronectin as well as the mechanical unfolding of fibronectin type III domains. In previous studies using embryonic foreskin fibroblasts, we have shown that fibronectin’s EDA domain (FnEDA) and the partially unfolded first Type III domain (FnIII-1c) function as Damage Associated Molecular Pattern (DAMP) molecules to stimulate the induction of inflammatory cytokines by serving as agonists for Toll-Like Receptor-4 (TLR4). However, the role of signaling molecules downstream of TLR-4 such as TGF-β Activated Kinase 1 (TAK1) and Mitogen activated protein kinases (MAPK) in regulating the expression of fibronectin DAMP induced inflammatory genes in specific cell types is not known. In the current study, we evaluate the molecular steps regulating the fibronectin driven induction of inflammatory genes in three human fibroblast cell lines: embryonic foreskin, adult dermal, and adult kidney. The fibronectin derived DAMPs each induce the phosphorylation and activation of TAK1 which results in the activation of two downstream signaling arms, IKK/NF-κB and MAPK. Using the specific inhibitor 5Z-(7)-Oxozeanol as well as siRNA, we show TAK1 to be a crucial signaling mediator in the release of cytokines in response to fibronectin DAMPs in all three cell types. Finally, we show that FnEDA and FnIII-1c induce several pro-inflammatory cytokines whose expression is dependent on both TAK1 and JNK MAPK and highlight cell-type specific differences in the gene-expression profiles of the fibroblast cell-lines.


id: 10.1371/journal.pone.0286346
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286346
author: Kyuwoong Kim
title:
Association of dietary sodium intake with impaired fasting glucose in adult cancer survivors: A population-based cross-sectional study

content:
<p>by Kyuwoong Kim, Hamee Kim, Tae Joon Jun, Young-Hak Kim</p>
Background <p>Dietary sodium intake is a crucial lifestyle factor that should be assessed in adult cancer survivors due to their increased risk of adverse health outcomes compared to the general population. However, its with impaired fasting glucose (IFG) in adult cancer survivors remains unclear. This study aimed to investigate the association of dietary sodium intake categorized by the American Heart Association (AHA) recommendation with IFG in the community-dwelling adult cancer survivors.</p> Methods <p>A total of 1,052 adult cancer survivors without diabetes were identified from the sixth and seventh Korea National Health and Nutrition Examination Survey (KNHANES), 2013–2018. Data on dietary sodium intake was categorized as <1,500 mg/day, 1,500–2,999 mg/day, 2,300–3,999 mg/day, and ≥4,000 mg/day according to the AHA recommendation. A multiple logistic regression model adjusted for demographic, lifestyle, and health status was used to compute odds ratios (OR) and 95% confidence intervals (95% CI) for IFG according to dietary sodium intake categories.</p> Results <p>After adjusting for confounding variables identified in the KNHANES, the adjusted OR among the adult cancer survivors who consumed 1,500–2,999 mg/day, 2,300–3,999 mg/day, and ≥4,000 mg/day of dietary sodium were 1.16 (95% CI: 0.25–5.27), 1.93 (95% CI: 0.40–9.37), and 2.67 (95% CI: 0.59–12.18), respectively, as compared to those who consumed <1,500 mg/day (<i>P</i> value for trend = 0.036).</p> Conclusion <p>Among community-dwelling adult cancer survivors, high dietary sodium intake was marginally associated with increased odds of IFG. Well-designed cohort studies or randomized clinical trials are needed to establish more epidemiologic evidence on this association in adult cancer survivors.</p>


id: 10.1371/journal.pone.0286337
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286337
author: Ayesha P. Ng
title:
Sociodemographic disparities in concomitant left atrial appendage occlusion during cardiac valve operations

content:
<p>by Ayesha P. Ng, Nikhil Chervu, Yas Sanaiha, Amulya Vadlakonda, Elsa Kronen, Peyman Benharash</p>
Background <p>Sociodemographic disparities in atrial fibrillation (AF) management and thromboembolic prophylaxis have previously been reported, which may involve inequitable access to left atrial appendage occlusion (LAAO) during cardiac surgery. The present study aimed to evaluate the association of LAAO utilization with sex, race, and hospital region among patients with AF undergoing heart valve operations.</p> Methods <p>Adults with AF undergoing valve replacement/repair in the 2012–2019 National Inpatient Sample were identified and stratified based on concurrent LAAO. Multivariable linear and logistic regressions were developed to identify factors associated with LAAO utilization. Mortality, complications including stroke and thromboembolism, hospitalization costs and length of stay (LOS) were secondarily assessed.</p> Results <p>Of 382,580 patients undergoing valve operations, 18.7% underwent concomitant LAAO. Over the study period, the proportion of female patients receiving LAAO significantly decreased from 44.8% to 38.9% (p<0.001). Upon risk adjustment, female (AOR 0.93 [95% CI 0.89–0.97]) and Black patients (0.91 [0.83–0.99]) had significantly reduced odds of undergoing LAAO compared to males and Whites, respectively. Additionally, hospitals in the Midwest (1.38 [1.24–1.51]) and West (1.26 [1.15–1.36]) had increased likelihood of LAAO whereas Northeast hospitals (0.85 [0.77–0.94)] had decreased odds relative to the South. Furthermore, LAAO was associated with decreased stroke (0.71 [0.60–0.84]) and thromboembolism (0.68 [0.54–0.86]), $4,200 reduction in costs and 1-day decrement in LOS.</p> Conclusions <p>Female and Black patients had significantly lower odds while Midwest and Western hospitals had greater odds of LAAO utilization. Enhancing access to LAAO during valvular surgery is warranted to improve clinical and financial outcomes for patients with AF.</p>


id: 10.1371/journal.pone.0286327
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286327
author: Stephanie R. Valdez
title:
Variable responses to top-down and bottom-up control on multiple traits in the foundational plant, <i>Spartina alterniflora</i>

content:
<p>by Stephanie R. Valdez, Pedro Daleo, David S. DeLaMater III, Brian R. Silliman</p>

While the effects of top-down and bottom-up forces on aboveground plant growth have been extensively examined, less is known about the relative impacts of these factors on other aspects of plant life history. In a fully-factorial, field experiment in a salt marsh in Virginia, USA, we manipulated grazing intensity (top-down) and nutrient availability (bottom-up) and measured the response in a suite of traits for smooth cordgrass (<i>Spartina alterniflora</i>). The data presented within this manuscript are unpublished, original data that were collected from the same experiment presented in Silliman and Zieman 2001. Three categories of traits and characteristics were measured: belowground characteristics, litter production, and reproduction, encompassing nine total responses. Of the nine response variables measured, eight were affected by treatments. Six response variables showed main effects of grazing and/ or fertilization, while three showed interactive effects. In general, fertilization led to increased cordgrass belowground biomass and reproduction, the former of which conflicts with predictions based on resource competition theory. Higher grazing intensity had negative impacts on both belowground biomass and reproduction. This result contrasts with past studies in this system that concluded grazer impacts are likely relegated to aboveground plant growth. In addition, grazers and fertilization interacted to alter litter production so that litter production disproportionately increased with fertilization when grazers were present. Our results revealed both predicted and unexpected effects of grazing and nutrient availability on understudied traits in a foundational plant and that these results were not fully predictable from understanding the impacts on aboveground biomass alone. Since these diverse traits link to diverse ecosystem functions, such as carbon burial, nutrient cycling, and ecosystem expansion, developing future studies to explore multiple trait responses and synthesizing the ecological knowledge on top-down and bottom-up forces with trait-based methodologies may provide a promising path forward in predicting variability in ecosystem function.


id: 10.1371/journal.pone.0286325
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286325
author: Yueqian Shen
title:
Prediction of university fund revenue and expenditure based on fuzzy time series with a periodic factor

content:
<p>by Yueqian Shen, Xiaoxia Ma, Yajing Sun, Sheng Du</p>

Financial management and decision-making of universities play an essential role in their development. Predicting fund revenue and expenditure of universities can provide a necessary basis for funds risk prevention. For the lack of solid data reference for financial management and funds risk prevention in colleges and universities, this paper presents a prediction model of University fund revenue and expenditure based on fuzzy time series with a periodic factor. Combined with the fuzzy time series, this prediction method introduces the periodic factor of university funds. The periodic factor is used to adjust the proportion of the predicted value of the fuzzy time series and the periodic observation value. A fund revenue prediction model and a fund expenditure prediction model are constructed, and an experiment is carried out with the actual financial data of a university in China. The experimental result shows the effectiveness of the proposed model, which can provide solid references for financial management and funds risk prevention in universities.


id: 10.1371/journal.pone.0286317
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286317
author: Yuichiro Mori
title:
Patterns and predictors of adherence to follow-up health guidance invitations in a general health check-up program in Japan: A cohort study with an employer-sponsored insurer database

content:
<p>by Yuichiro Mori, Kunihiro Matsushita, Kosuke Inoue, Shingo Fukuma</p>
Background <p>Japan has conducted a nationwide annual health check-up program since 2008, focusing on metabolic syndrome and subsequent health guidance in individuals at high risk for cardiovascular disease. However, the adherence rate to health guidance invitations was assumed to be low in previous reports. Therefore, this study aimed to characterize adherence patterns in the program and identify major predictors of adherence to health guidance invitations.</p> Methods <p>We studied 186,316 adults (aged 40–74 years) who were included in a nationwide employer-sponsored insurer’s database in Japan at the beginning of the fiscal year 2017. We first described adherence to health check-ups, the proportion of individuals with high cardiovascular risk, and adherence to health guidance invitations. Predictors of adherence to the invitation were then identified among eligible high-risk individuals.</p> Results <p>In 2017, 71.7% of the study population (n = 133,573) underwent health check-ups, among whom 23.2% (n = 30,979) were invited for health guidance because of their high cardiovascular risk. Among those individuals, 35.2% (n = 10,614) received health guidance. Predictors of improved adherence to health guidance invitation were older age, more concerning blood pressure or laboratory data results, and self-reported motivation for a lifestyle change.</p> Conclusion <p>Though 70% of eligible adults attended Japan’s annual cardiovascular risk check-ups, only 35% of individuals with high cardiovascular risk adhered to health guidance invitations. Future policy reforms to improve adherence to this program should target younger individuals and those with mild stages of hypertension, diabetes, or dyslipidemia.</p>


id: 10.1371/journal.pone.0286316
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Microanatomical organization of hepatic venous lymphatic system in humans
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286316
author: Kotaro Umemura
content:
<p>by Kotaro Umemura, Hiroshi Shimoda, Keinosuke Ishido, Norihisa Kimura, Taiichi Wakiya, Takuji Kagiya, Kentaro Sato, Yuto Mitsuhashi, Seiji Watanabe, Hirokazu Narita, Tomohiro Chiba, Kenichi Hakamada</p>

Lymphatic fluid drains from the liver via the periportal lymphatic, hepatic venous lymphatic, and superficial lymphatic systems. We performed a postmortem study to clarify the three-dimensional structure and flow dynamics of the human hepatic venous lymphatic system, as it still remains unclear. Livers were excised whole from three human cadavers, injected with India ink, and sliced into 1-cm sections from which veins were harvested. The distribution of lymphatic vessels was observed in 5 μm sections immunostained for lymphatic and vascular markers (podoplanin and CD31, respectively) using light microscopy. Continuity and density of lymphatic vessel distribution were assessed in en-face whole-mount preparations of veins using stereomicroscopy. The structure of the external hepatic vein wall was assessed with scanning electron microscopy (SEM). The lymphatic dynamics study suggested that lymphatic fluid flows through an extravascular pathway around the central and sublobular veins. A lymphatic vessel network originates in the wall of sublobular veins, with a diameter greater than 110 μm, and the peripheral portions of hepatic veins and continues to the inferior vena cava. The density distribution of lymphatic vessels is smallest in the peripheral portion of the hepatic vein (0.03%) and increases to the proximal portion (0.22%, p = 0.012) and the main trunk (1.01%, p < 0.001), correlating positively with increasing hepatic vein diameter (Rs = 0.67, p < 0.001). We revealed the three-dimensional structure of the human hepatic venous lymphatic system. The results could improve the understanding of lymphatic physiology and liver pathology.


id: 10.1371/journal.pone.0286313
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286313
author: Yaoyu Qiu
title:
The analysis of infrared high-speed motion capture system on motion aesthetics of aerobics athletes under biomechanics analysis

content:
<p>by Yaoyu Qiu, Yingrong Guan, Shuang Liu</p>

This paper uses an infrared high-speed motion capture system based on deep learning to analyze difficult movements, which helps aerobics athletes master difficult movements more accurately. Firstly, changes in joint angle, speed of movement, and ground pressure are used to analyze the impact and role of motion fluency and completion based on a biomechanical perspective. Moreover, based on the existing infrared high-speed motion capture systems, the Restricted Boltzmann Machine (RBM) model is introduced to construct an unsupervised similarity framework model. Next, the motion data is reorganized based on three-dimensional information to adapt to the model’s input. Then, the framework performs similar frame matching to obtain a set of candidate frames that can be used as motion graph nodes. After the infrared high-speed motion capture system and inertial sensors are simultaneously applied to subjects, the multi-correlation coefficients (CMC) values of the hip, knee, and ankle angles are 0.94 ± 0.06, 0.98 ± 0.01, and 0.87 ± 0.09, respectively. The two systems show a high degree of correlation in the measurement results, and the knee joint is the most significant correlation. Finally, a motion graph is constructed to control its trajectory and adjust its motion pattern. The infrared high-speed motion capture system optimized for deep learning can extract features from human bone data and capture motion more accurately, helping trainers to fully understand difficult movements.


id: 10.1371/journal.pone.0286310
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286310
author: Suchandrima Chakraborty
title:
Validating midwifery professionals’ scope of practice and competency: A multi-country study comparing national data to international standards

content:
<p>by Suchandrima Chakraborty, Niranjan Saggurti, Richard Adanu, Delia A. B. Bandoh, Mabel Berrueta, Jewel Gausman, Ernest Kenu, Nizamuddin Khan, Ana Langer, Carolina Nigri, Magdalene A. Odikro, Veronica Pingray, Sowmya Ramesh, Paula Vázquez, Caitlin R. Williams, Charlotte E. Warren, R. Rima Jolivet</p>
Background <p>There is a global shortage of midwives, whose services are essential to meet the healthcare needs of pregnant women and newborns. Evidence suggests that if enough midwives, trained and regulated to global standards, were deployed worldwide, maternal, and perinatal mortality would decline significantly. Health workforce planning estimates the number of midwives needed to achieve population coverage of midwifery interventions. However, to provide a valid measure of midwifery care coverage, an indicator must consider not only the raw number of midwives, but also their scope and competency. The tasks midwives are authorized to deliver and their competency to perform essential skills and behaviors provide crucial information for understanding the availability of safe, high-quality midwifery services. Without reliable estimates for an adequate midwifery workforce, progress toward ending preventable maternal and perinatal mortality will continue to be uneven. The International Labor Organization (ILO) and the International Confederation of Midwives (ICM) suggest standards for midwifery scope of practice and competencies. This paper compares national midwifery regulations, scope, and competencies in three countries to the ILO and ICM standards to validate measures of midwife density. We also assess midwives’ self-reported skills/behaviors from the ICM competencies and their acquisition.</p> Methods and findings <p>We compared midwives’ scope of practice in Argentina, Ghana, and India to the ILO Tasks and ICM Essential Competencies for Midwifery Practice. We compared midwives self-reported skills/behaviors with the ICM Competencies. Univariate and bivariate analysis was conducted to describe the association between midwives’ skills and selected characteristics. National scopes of practice matched two ILO tasks in Argentina, four in India, and all in Ghana. National standards partially reflected ICM skills in Categories 2, 3, and 4 (pre-pregnancy and antenatal care; care during labor and birth; and ongoing care of women and newborns, respectively) in Argentina (range 11% to 67%), mostly in India (range 74% to 100%) and completely in Ghana (100% match). 1,266 midwives surveyed reported considerable variation in competency for skills and behaviors across ICM Category 2, 3, and 4. Most midwives reported matching skills and behaviors around labor and childbirth (Category 2). Higher proportions of midwives reported gaining basic skills through in-service training and on-job-experience than in pre-service training.</p> Conclusion <p>Estimating the density of midwives needed for an adequate midwifery workforce capable of providing effective population coverage is predicated on a valid numerator. A reliable and valid count of midwives to meet population needs assumes that each midwife counted has the authority to exercise the same behaviors and reflects the ability to perform them with comparable competency. Our results demonstrate variation in midwifery scopes of practice and self-reported competencies in comparison to global standards that pose a threat to the reliability and validity of the numerator in measures of midwife density, and suggest the potential for expanded authorization and improved education and training to meet global reference standards for midwifery practice has not been fully realized. Although the universally recognized standard, this study demonstrates that the complex, composite descriptions of skills and behaviors in the ICM competencies make them difficult to use as benchmark measures with any precision, as they are not defined or structured to serve as valid measures for assessing workforce competency. A simplified, content-validated measurement system is needed to facilitate evaluation of the competency of the midwifery workforce.</p>


id: 10.1371/journal.pone.0286308
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286308
author: Rosalind Adam
title:
Treatment burden in individuals living with and beyond cancer: A systematic review of qualitative literature

content:
<p>by Rosalind Adam, Revathi Nair, Lisa F. Duncan, Esyn Yeoh, Joanne Chan, Vaselisa Vilenskaya, Katie I. Gallacher</p>
Background <p>Individuals with cancer are being given increasing responsibility for the self-management of their health and illness. In other chronic diseases, individuals who experience treatment burden are at risk of poorer health outcomes. Less is known about treatment burden and its impact on individuals with cancer. This systematic review investigated perceptions of treatment burden in individuals living with and beyond cancer.</p> Methods and findings <p>Medline, CINAHL and EMBASE databases were searched for qualitative studies that explored treatment burden in individuals with a diagnosis of breast, prostate, colorectal, or lung cancer at any stage of their diagnostic/treatment trajectory. Descriptive and thematic analyses were conducted. Study quality was assessed using a modified CASP checklist. The review protocol was registered on PROSPERO (CRD42021145601). Forty-eight studies were included. Health management after cancer involved cognitive, practical, and relational work for patients. Individuals were motivated to perform health management work to improve life-expectancy, manage symptoms, and regain a sense of normality. Performing health care work could be empowering and gave individuals a sense of control. Treatment burden occurred when there was a mismatch between the resources needed for health management and their availability. Individuals with chronic and severe symptoms, financial challenges, language barriers, and limited social support are particularly at risk of treatment burden. For those with advanced cancer, consumption of time and energy by health care work is a significant burden.</p> Conclusion <p>Treatment burden could be an important mediator of inequities in cancer outcomes. Many of the factors leading to treatment burden in individuals with cancer are potentially modifiable. Clinicians should consider carefully what they are asking or expecting patients to do, and the resources required, including how much patient time will be consumed.</p>


id: 10.1371/journal.pone.0286296
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286296
author: David S. Kushner
title:
Predictors of discharge to home/community following inpatient-rehabilitation in a US national sample of Guillain-Barre-Syndrome patients

content:
<p>by David S. Kushner, Doug Johnson-Greene, Elizabeth R. Felix, Cheryl Miller, Maite K. Cordero, Stacy A. Thomashaw</p>
Background <p>Guillain-Barre-Syndrome (GBS), an autoimmune polyneuropathy causing acute flaccid paralysis, is a rare condition with1-2 cases per 100,000 annually (approximately 5000 cases/year) in the United States (US). There is a paucity of published data regarding patient outcomes in association with discharge destinations following inpatient-rehabilitation (IR) in this patient population, thus this study.</p> Objectives <p>To analyze IR efficacy, and possible predictors of discharge to home/community in a US-national-sample of GBS patients.</p> Methods <p>Retrospective-observational-cohort study of 1304 GBS patients admitted to IR comparing discharge disposition destinations (community/home, skilled-nursing-facility [SNF], or return to acute-care) by demographic (age, gender) and clinical variables (length-of-stay [LOS], case-mix-index [CMI], and Functional-Independence-Measure [FIM] score changes). Multinomial-logistic-regression and discriminant-function-analysis were performed to determine model fit in predicting discharge destination.</p> Results <p>81.8% were discharged to home/community- average LOS 19-days, total-FIM-gain 43.2; 9.8% discharged to SNFs- average LOS 27.5-days, total-FIM-gain 27.2; and 8.4% discharged to acute-care- average LOS 15.4-days and total-FIM-gain 16.5, (F = 176, p < .001). Stepwise-linear-regression for prediction of community discharge showed change in FIM-Bed/chair/wheelchair-Transfers was the most significant predictor (Wald = 42.2; p < .001), followed by CMI (Wald = 26.9; p < .001), change in FIM-walking/wheelchair (Wald = 14.9; p < .001), and age (Wald = 9.5; p < .002). Using discriminant-function-analysis to test model validity for predicting discharge disposition, FIM-change for Bed/chair/wheelchair Transfers, Walking, and Self-Care as predictors resulted in a classification rate of 78.1%, 92% of variance explained, and Eigenvalue of .53 (p < .001).</p> Conclusions <p>Total-FIM scores improved in all groups, and most patients were discharged to home/community suggesting IR efficacy. The ability to transfer bed/chair/wheelchair was the most important predictive factor associated with discharge destination.</p>


id: 10.1371/journal.pone.0286293
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286293
author: Benjamin D. Young
title:
Different disease inoculations cause common responses of the host immune system and prokaryotic component of the microbiome in <i>Acropora palmata</i>

content:
<p>by Benjamin D. Young, Stephanie M. Rosales, Ian C. Enochs, Graham Kolodziej, Nathan Formel, Amelia Moura, Gabrielle L. D’Alonso, Nikki Traylor-Knowles</p>

Reef-building corals contain a complex consortium of organisms, a holobiont, which responds dynamically to disease, making pathogen identification difficult. While coral transcriptomics and microbiome communities have previously been characterized, similarities and differences in their responses to different pathogenic sources has not yet been assessed. In this study, we inoculated four genets of the Caribbean branching coral <i>Acropora palmata</i> with a known coral pathogen (<i>Serratia marcescens</i>) and white band disease. We then characterized the coral’s transcriptomic and prokaryotic microbiomes’ (prokaryiome) responses to the disease inoculations, as well as how these responses were affected by a short-term heat stress prior to disease inoculation. We found strong commonality in both the transcriptomic and prokaryiomes responses, regardless of disease inoculation. Differences, however, were observed between inoculated corals that either remained healthy or developed active disease signs. Transcriptomic co-expression analysis identified that corals inoculated with disease increased gene expression of immune, wound healing, and fatty acid metabolic processes. Co-abundance analysis of the prokaryiome identified sets of both healthy-and-disease-state bacteria, while co-expression analysis of the prokaryiomes’ inferred metagenomic function revealed infected corals’ prokaryiomes shifted from free-living to biofilm states, as well as increasing metabolic processes. The short-term heat stress did not increase disease susceptibility for any of the four genets with any of the disease inoculations, and there was only a weak effect captured in the coral hosts’ transcriptomic and prokaryiomes response. Genet identity, however, was a major driver of the transcriptomic variance, primarily due to differences in baseline immune gene expression. Despite genotypic differences in baseline gene expression, we have identified a common response for components of the coral holobiont to different disease inoculations. This work has identified genes and prokaryiome members that can be focused on for future coral disease work, specifically, putative disease diagnostic tools.


id: 10.1371/journal.pone.0286291
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286291
author: Mathangi Madhavan
title:
Electron microscopy imaging and mechanical characterization of T47D multicellular tumor spheroids–Older spheroids reduce interstitial space and become stiffer

content:
<p>by Mathangi Madhavan, Devina Jaiswal, Sarah Karlberg, Alexis Duggan, Hassan A. Almarshad, Kevin P. Claffey, Kazunori Hoshino</p>

Multicellular cancer spheroids are an <i>in vitro</i> tissue model that mimics the three-dimensional microenvironment. As spheroids grow, they develop the gradients of oxygen, nutrients, and catabolites, affecting crucial tumor characteristics such as proliferation and treatment responses. The measurement of spheroid stiffness provides a quantitative measure to evaluate such structural changes over time. In this report, we measured the stiffness of size-matched day 5 and day 20 tumor spheroids using a custom-built microscale force sensor and conducted transmission electron microscopy (TEM) imaging to compare the internal structures. We found that older spheroids reduce interstitial spaces in the core region and became significantly stiffer. The measured elastic moduli were 260±100 and 680±150 Pa, for day 5 and day 20 spheroids, respectively. The day 20 spheroids showed an optically dark region in the center. Analyzing the high-resolution TEM images of spheroid middle sections across the diameter showed that the cells in the inner region of the day 20 spheroids are significantly larger and more closely packed than those in the outer regions. On the other hand, the day 5 spheroids did not show a significant difference between the inner and outer regions. The observed reduction of the interstitial space may be one factor that contributes to stiffer older spheroids.


id: 10.1371/journal.pone.0286265
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Dyspnea induced by inspiratory loading limits dual-tasking in healthy young adults
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286265
author: Stephanie R. Chauvin
content:
<p>by Stephanie R. Chauvin, Jessica Otoo-Appiah, Anna Zheng, Chris H. Ibrahim, James E. Ma, Dmitry Rozenberg, W. Darlene Reid</p>
Objectives <p>Dyspnea is a common and multidimensional experience of healthy adults and those with respiratory disorders. Due to its neural processing, it may limit or interfere with cognition, which may be examined with a dual-task paradigm. The aim of this study was to compare single-task performance of Stroop Colour and Word Test (SCWT) or inspiratory threshold loading (ITL) to their combined dual-task performance. Secondly, whether mood was related to dyspnea or cognitive performance was also evaluated.</p> Materials & methods <p>A virtual pre-post design examined single (SCWT and ITL) and dual-task (SCWT+ITL) performance. For ITL, a Threshold Trainer™ was used to elicit a “somewhat severe” rating of dyspnea. The SCWT required participants to indicate whether a colour-word was congruent or incongruent with its semantic meaning. The Depression, Anxiety and Stress Scale-21 (DASS-21) was completed to assess mood. Breathing frequency, Borg dyspnea rating, and breathing endurance time were ascertained.</p> Results <p>Thirty young healthy adults (15F, 15M; median age = 24, IQR [23–26] years) completed the study. SCWT+ITL had lower SCWT accuracy compared to SCWT alone (98.6%, [97.1–100.0] vs 99.5%, [98.6–100.0]; p = 0.009). Endurance time was not different between ITL and SCWT+ITL (14.5 minutes, [6.9–15.0]) vs 13.7 minutes, [6.1–15.0]; p = 0.59). DASS-21 scores positively correlated with dyspnea scores during ITL (rho = 0.583, p<0.001) and SCWT+ITL (rho = 0.592, p<0.001).</p> Conclusions <p>ITL significantly reduced dual-task performance in healthy young adults. Lower mood was associated with greater perceived dyspnea during single and dual-task ITL. Considering the prevalence of dyspnea in respiratory disorders, the findings of this dual task paradigm warrant further exploration to inform dyspnea management during daily activities.</p>


id: 10.1371/journal.pone.0286263
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286263
author: S. Alexander Haslam
title:
Developing engaged and ‘teamful’ leaders: A randomized controlled trial of the 5R identity leadership program

content:
<p>by S. Alexander Haslam, Jordan Reutas, Sarah V. Bentley, Blake McMillan, Madison Lindfield, Mischel Luong, Kim Peters, Niklas K. Steffens</p>

The social identity approach to leadership argues that leaders’ capacity to influence and inspire others is grounded in a shared sense of social identity (or ‘us-ness’) that those leaders create, advance, represent, and embed for the groups they lead. The approach therefore argues that a key task for leaders is to develop insights and skills of (social) identity leadership that allow them to motivate and mobilize groups and transform them into a potent social and organizational force. In contrast to other approaches and programs which focus on leaders’ leader identity (their ‘I-ness’), the 5R leadership development program supports the development of leaders’ social identity by raising awareness of the importance of social identity (‘we-ness’) for leadership and taking leaders through structured activities that help them build engaged and inclusive teams. The present research assessed the benefits of facilitated and learner self-directed versions of the 5R program (<i>N</i>s = 27, 22 respectively) relative to a no-treatment control (<i>N</i> = 27). Results (including those of an intention-to-treat analysis; <i>N</i> = 76) indicated that, relative to leaders in the control condition, those who participated in both forms of 5R reported large increases in identity leadership knowledge, as well as medium-sized increases in both team engagement (a compound factor comprised of team identification, team OCB, team efficacy, and work engagement) and ‘teamfulness’ (comprised of team reflexivity, team psychological safety, team goal clarity, and inclusive team climate). We reflect on the importance of teamfulness for leadership and team functioning and on the value of programs that help leaders develop this.


id: 10.1371/journal.pone.0286257
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: A new NASH model in aged mice with rapid progression of steatohepatitis and fibrosis
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286257
author: Xuecheng Li
content:
<p>by Xuecheng Li, Yi Lu, Xiaoshuang Liang, Xiaofei Zhou, Dirui Li, Zan Zhang, Yunchao Niu, Shuaishuai Liu, Ling Ye, Rufeng Zhang</p>

Non-alcoholic fatty liver disease (NAFLD) has a high prevalence worldwide, with a significant proportion of patients progressing into non-alcoholic steatohepatitis (NASH) and further into cirrhosis and hepatocellular carcinoma (HCC). Most of the current animal models of NASH have limitations, such as incompatibility with human pathogenesis characteristics or long induction periods, which severely limit the development of new drugs and preclinical studies for NASH. We investigated the progression of NASH and fibrosis, as well as metabolic indicators, at different time points in aged mice induced by the Gubra Amylin NASH (GAN) diet, a high-fat, high-sugar, high-cholesterol diet, and attempted to establish a rapid and useful mouse model of NASH. Young and aged C57BL/6 mice were induced on a normal chow or GAN diet for 12 and 21 weeks, respectively. After 12 weeks of induction, aged mice developed NASH, including hepatic steatosis, lobular inflammation and hepatic ballooning, and the phenotype was more severe compared with young mice. After 21 weeks of induction, aged mice developed hepatic fibrosis, which greatly shortened the induction time compared with young mice. Furthermore, analysis of immune cell infiltration in the liver by flow cytometry elucidated the changes of multiple immune cells during the pathogenesis of NASH. These findings suggest that aged mice may develop NASH and fibrosis more rapidly under GAN diet induction, which may significantly shorten the period for preclinical studies of NASH.


id: 10.1371/journal.pone.0286255
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286255
author: Daisuke Muramatsu
title:
Effects of heat degradation of betanin in red beetroot (<i>Beta vulgaris</i> L.) on biological activity and antioxidant capacity

content:
<p>by Daisuke Muramatsu, Hirofumi Uchiyama, Hideaki Higashi, Hiroshi Kida, Atsushi Iwai</p>

Betanin is a red pigment of red beetroot (<i>Beta vulgaris</i> L.), providing the beneficial effects to maintain human health. Betanin is involved in the characteristic red color of red beetroot, and used as an edible dye. Betanin is known to be a highly unstable pigment, and water solutions of betanin are nearly fully degraded after heating at 99°C for 60 min in the experimental conditions of this study. The present study investigated the effects of red beetroot juice (RBJ) and betanin on immune cells, and found that stimulation with RBJ and betanin induces interleukin (IL)-1β, IL-8, and IL-10 mRNA in a human monocyte derived cell line, THP-1 cells. This mRNA induction after stimulation with RBJ and betanin was not significantly changed after heat treatment when attempting to induce degradation of the betanin. Following these results, the effects of heat degradation of betanin on the inhibition of lipopolysaccharide (LPS) induced nitric oxide (NO) production in RAW264 cells and the antioxidant capacity were investigated. The results showed that the inhibition activity of RBJ and betanin with the LPS induced NO production is not altered after heat degradation of betanin. In addition, the results of FRAP (ferric reducing antioxidant power) and DPPH (1,1-Diphenyl-2-picrylhydrazyl) assays indicate that a not inconsiderable degree of the antioxidant capacity of RBJ and betanin remained after heat degradation of betanin. These results suggest that it is important to consider the effects of degradation products of betanin in the evaluation of the beneficial effects of red beetroot on health.


id: 10.1371/journal.pone.0286251
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286251
author: Farhad Mohammadi
title:
Development and characterization of a copolymeric micelle containing soluble and insoluble model drugs

content:
<p>by Farhad Mohammadi, Alireza Moradi, Fatemeh Tavakoli, Samaneh Rahmati, Rashin Giti, Vahid Ramezani</p>
Objectives <p>Micelles are nano-sized particles with a core-shell structure that are made by natural or synthetic polymers or copolymers. The aim of this study was to develop and characterize a copolymeric micelle using two polymers loaded with hydrophilic and lipophilic drugs.</p> Methods <p>Poly(ethylene glycol) and poly(ε-caprolactone) (PEG-PCL) were used to form a copolymeric micelle which was further loaded with either moxifloxacin or clarithromycin as hydrophilic and lipophilic drug samples, respectively. Characterization tests were done including fourier transform-infrared (FT-IR) spectroscopy, proton nuclear magnetic resonance (<sup>1</sup>H NMR) spectroscopy, encapsulation efficiency, particle size, zeta potential, polydispersity index, transmission electron microscopy, and <i>in-vitro</i> release test.</p> Results <p>The construction of the copolymer was confirmed by the results of FT-IR and <sup>1</sup>H NMR spectroscopy tests. The encapsulation efficiency test exhibited that loading was about 50% for twelve formulations. Particle size, zeta potential, polydispersity index, and transmission electron microscopy confirmed the formation of monodispersed, uniform, and nano-sized micelles with a few negative charges. The kinetic model of release was fitted to the Higuchi model.</p> Conclusions <p>Polymeric micelles consisting of PEG-PCL copolymer were loaded with adequate concentrations of hydrophilic (moxifloxacin) and lipophilic (clarithromycin) model drugs, with a mean particle size under 300 nm. Therefore, copolymeric micelles can be used as a suitable drug delivery system for mucous membranes and skin.</p>


id: 10.1371/journal.pone.0286247
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: New insights into the recent collapse of Eastern Baltic cod from historical data on stock health
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286247
author: Margit Eero
content:
<p>by Margit Eero, Keith Brander, Tatjana Baranova, Uwe Krumme, Krzysztof Radtke, Jane W. Behrens</p>

The Eastern Baltic cod (<i>Gadus morhua</i>) stock is currently in a very poor state, with low biomass and adverse trends in several life history and demographic parameters. This raises concern over whether and to what level recovery is possible. Here, we look for new insights from a historical perspective, extending the time series of various stock health indicators back to the 1940s, i.e. to the beginning of intensive exploitation of the Eastern Baltic cod. The historical data confirm that the stock deterioration in recent years is unprecedented, as all indicators are presently in their worst states on record. Cod body condition and energy reserves were equally low in the 1940s–1950s, accompanied by high parasitic liver worm infection, comparable to that measured in recent years. However, other stock parameters (size structure, size at maturity, stock distribution) are currently in their worst states over the past 80 years. In contrast, the state of cod in the 1970s to early 1990s that is often perceived as a desirable target, was exceptional, with the most favorable indicator levels in the time series. Long-term observation data reveal concurrent or asynchronous trends in different indicators of stock health and to what extent these have coincided with changes in possible external drivers. In this way, the extended time series contribute to ongoing research on understanding the collapse of the cod and its recovery potential.


id: 10.1371/journal.pone.0286246
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286246
author: Hyunmyung Park
title:
Assessment of severity scoring systems for predicting mortality in critically ill patients receiving continuous renal replacement therapy

content:
<p>by Hyunmyung Park, Jihyun Yang, Byung Chul Chun</p>

The incidence of acute kidney injury (AKI) is increasing every year and many patients with AKI admitted to the intensive care unit (ICU) require continuous renal replacement therapy (CRRT). This study compared and analyzed severity scoring systems to assess their suitability in predicting mortality in critically ill patients receiving CRRT. Data from 612 patients receiving CRRT in four ICUs of the Korea University Medical Center between January 2016 and November 2018 were retrospectively collected. The mean age of all patients was 67.6 ± 14.8 years, and the proportion of males was 59.6%. The endpoints were in-hospital mortality and 7-day mortality from the day of CRRT initiation to the date of death. The Program to Improve Care in Acute Renal Disease (PICARD), Demirjian’s, Acute Physiology and Chronic Health Evaluation (APACHE) II, Simplified Acute Physiology Score (SAPS) 3, Sequential Organ Failure Assessment (SOFA), Multiple Organ Dysfunction Score (MODS), and Liano’s scores were used to predict mortality. The in-hospital and 7-day mortality rates in the study population were 72.7% and 45.1%, respectively. The area under the receiver operator characteristic curve (AUROC) revealed the highest discrimination ability for Demirjian’s score (0.770), followed by Liano’s score (0.728) and APACHE II (0.710). The AUROC curves for the SAPS 3, MODS, and PICARD were 0.671, 0.665, and 0.658, respectively. The AUROC of Demirjian’s score was significantly higher than that of the other scores, except for Liano’s score. The Hosmer-Lemeshow test on Demirjian’s score showed a poor fit in our analysis; however, it was more acceptable than general severity scores. Kidney-specific severity scoring systems showed better performance in predicting mortality in critically ill patients receiving CRRT than general severity scoring systems.


id: 10.1371/journal.pone.0286244
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286244
author: Joseph Day
title:
Mapping the cultural divides of England and Wales: Did the geographies of ‘Belonging’ act as a brake on British Urbanisation, 1851–1911?

content:
<p>by Joseph Day</p>

Although both the analysis of regional culture and urbanisation are long-standing preoccupations in geography, few studies have considered the relationship between the two, the former traditionally being a topic in cultural geography, while the latter is usually interpreted and analysed as a process in economic geography. Taking evidence from the 1851–1911 censuses of England and Wales, this article analyses individual migration paths to identify stable regions of human interaction by applying a sophisticated community-detection algorithm. By accurately mapping the regions within which the majority of migration occurred between 1851 and 1911 and arguing that the stability of these geographies is evidence of more than just mutable communities but rather of persistent regional cultures, this article responds to previous studies that have sought to identify the cultural provinces of England and Wales. Indeed, by demonstrating that the regions bear a striking resemblance to those that have long been hypothesised as being distinct cultural provinces of England and Wales, this article empirically corroborates their existence. In order to further demonstrate that the regions constitute cultural provinces, this paper incorporates these boundaries into a spatial interaction model (SIM). The results of the SIM not only shows that the boundaries between the regions limited the number of migrants that crossed them–over and above that explained by control variables–and therefore represented the boundaries of cultural provinces, demarcating discrete regions of human interaction–but that such boundaries disproportionately restricted rural-urban migrants, thereby slowing the pace at which England and Wales urbanised. This paper therefore demonstrates that urbanisation should not only be interpreted as only an economic phenomenon, but a cultural one also, and that if urbanisation is to be fully understood, individuals’ attachment to place as a component of their identity, ought to be formally incorporated into models of migration.


id: 10.1371/journal.pone.0286241
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Children’s suggestibility for neutral arbitrary actions in the context of norm violations
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286241
author: Elena Vaporova
content:
<p>by Elena Vaporova, Norbert Zmyj</p>

This study investigated children’s false memories for neutral arbitrary actions. Five- to six-year-olds (<i>N</i> = 32) were taught four arbitrary actions, each following specific rules. The children then watched a televised adult performing eight actions: the four familiar actions while violating one aspect of each rule script and four unfamiliar actions. Suggestive and non-suggestive questions about all witnessed actions were asked, followed by forced-choice test questions to measure the false memory effect. The likelihood of forming false memories was higher in the suggestive condition than in the non-suggestive condition. There was no effect of previously acquired knowledge about the rules of the actions and no interaction between rule knowledge and suggestion. The results are discussed in light of previous findings in related fields of false memory research.


id: 10.1371/journal.pone.0286215
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: A novel privacy-preserving biometric authentication scheme
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286215
author: Xuechun Mao
content:
<p>by Xuechun Mao, Ying Chen, Cong Deng, Xiaqing Zhou</p>

Most existing secure biometric authentication schemes are server-centric, and users must fully trust the server to store, process, and manage their biometric data. As a result, users’ biometric data could be leaked by outside attackers or the service provider itself. This paper first constructs the EDZKP protocol based on the inner product, which proves whether the secret value is the Euclidean distance of the secret vectors. Then, combined with the Cuproof protocol, we propose a novel user-centric biometric authentication scheme called BAZKP. In this scheme, all the biometric data remain encrypted during authentication phase, so the server will never see them directly. Meanwhile, the server can determine whether the Euclidean distance of two secret vectors is within a pre-defined threshold by calculation. Security analysis shows BAZKP satisfies completeness, soundness, and zero-knowledge. Based on BAZKP, we propose a privacy-preserving biometric authentication system, and its evaluation demonstrates that it provides reliable and secure authentication.


id: 10.1371/journal.pone.0286214
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
title: Cardiac RNase Z edited via CRISPR-Cas9 drives heart hypertrophy in <i>Drosophila</i>
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286214
author: Ekaterina Migunova
content:
<p>by Ekaterina Migunova, Saathvika Rajamani, Stefania Bonanni, Fei Wang, Chao Zhou, Edward B. Dubrovsky</p>

Cardiomyopathy (CM) is a group of diseases distinguished by morphological and functional abnormalities in the myocardium. It is etiologically heterogeneous and may develop via cell autonomous and/or non-autonomous mechanisms. One of the most severe forms of CM has been linked to the deficiency of the ubiquitously expressed RNase Z endoribonuclease. RNase Z cleaves off the 3’-trailer of both nuclear and mitochondrial primary tRNA (pre-tRNA) transcripts. Cells mutant for RNase Z accumulate unprocessed pre-tRNA molecules. Patients carrying RNase Z variants with reduced enzymatic activity display a plethora of symptoms including muscular hypotonia, microcephaly and severe heart hypertrophy; still, they die primarily due to acute heart decompensation. Determining whether the underlying mechanism of heart malfunction is cell autonomous or not will provide an opportunity to develop novel strategies of more efficient treatments for these patients. In this study, we used CRISPR-TRiM technology to create <i>Drosophila</i> models that carry cardiomyopathy-linked alleles of <i>RNase Z</i> only in the cardiomyocytes. We found that this modification is sufficient for flies to develop heart hypertrophy and systolic dysfunction. These observations support the idea that the <i>RNase Z</i> linked CM is driven by cell autonomous mechanisms.


id: 10.1371/journal.pone.0286204
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286204
author: Joyce Gyamfi
title:
Implementation outcomes and strategies for delivering evidence-based hypertension interventions in lower-middle-income countries: Evidence from a multi-country consortium for hypertension control

content:
<p>by Joyce Gyamfi, Juliet Iwelunmor, Shivani Patel, Vilma Irazola, Angela Aifah, Ashlin Rakhra, Mark Butler, Rajesh Vedanthan, Giang Nguyen Hoang, Monicah Nyambura, Hoa Nguyen, Cuc Nguyen, Kwaku Poku Asante, Solomon Nyame, Kwame Adjei, John Amoah, Kingsley Apusiga, Kezia Gladys Amaning Adjei, Manuel Ramierz-Zea, Diego Hernandez, Meredith Fort, Hanspria Sharma, Prashant Jarhyan, Emmanuel Peprah, Gbenga Ogedegbe</p>

Guidance on contextually tailored implementation strategies for the prevention, treatment, and control of hypertension is limited in lower-middle income countries (Lower-MIC). To address this limitation, we compiled implementation strategies and accompanying outcomes of evidence-based hypertension interventions currently being implemented in five Lower-MIC. The Global Research on Implementation and Translation Science (GRIT) Coordinating Center (CC) (GRIT-CC) engaged its global network sites at Ghana, Guatemala, India, Kenya, and Vietnam. Purposively sampled implementation science experts completed an electronic survey assessing implementation outcomes, in addition to implementation strategies used in their ongoing hypertension interventions from among 73 strategies within the Expert Recommendations for Implementing Change (ERIC). Experts rated the strategies based on highest priority to their interventions. We analyzed the data by sorting implementation strategies utilized by sites into one of the nine domains in ERIC and summarized the data using frequencies, proportions, and means. Seventeen implementation experts (52.9% men) participated in the exercise. Of Proctor’s implementation outcomes identified across sites, all outcomes except for appropriateness were broadly assessed by three or more countries. Overall, 59 out of 73 (81%) strategies were being utilized in the five countries. The highest priority implementation strategies utilized across all five countries focused on evaluative and iterative strategies (e.g., identification of context specific barriers and facilitators) to delivery of patient- and community-level interventions, while the lowest priority was use of financial and infrastructure change strategies. More capacity building strategies (developing stakeholder interrelationships, training and educating stakeholders, and supporting clinicians) were incorporated into interventions implemented in India and Vietnam than Ghana, Kenya, and Guatemala. Although robust implementation strategies are being used in Lower -MICs, there is minimum use of financial and infrastructure change strategies. Our study contributes to the growing literature that demonstrates the use of Expert Recommendations for Implementing Change (ERIC) implementation strategies to deliver evidence-based hypertension interventions in Lower-MICs and will inform future cross-country data harmonization activities in resource-constrained settings.


id: 10.1371/journal.pone.0286202
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286202
author: Valerian Mwenda
title:
Integrating human papillomavirus testing as a point-of care service using GeneXpert platforms: Findings and lessons from a Kenyan pilot study (2019–2020)

content:
<p>by Valerian Mwenda, Joan-Paula Bor, Mary Nyangasi, James Njeru, Sharon Olwande, Patricia Njiri, Marc Arbyn, Steven Weyers, Philippe Tummers, Marleen Temmerman</p>
Background <p>Globally, cervical cancer is a major public health problem, with about 604,000 new cases and over 340,000 deaths in 2020. In Kenya, it is the leading cause of cancer deaths, with over 3,000 women dying in 2020 alone. Both the Kenyan cancer screening guidelines and the World Health Organization’s Global Cervical Cancer Elimination Strategy recommend human papillomavirus (HPV) testing as the primary screening test. However, HPV testing is not widely available in the public healthcare system in Kenya. We conducted a pilot study using a point of care (POC) HPV test to inform national roll-out.</p> Methods <p>The pilot was implemented from October 2019 to December 2020, in nine health facilities across six counties. We utilized the GeneXpert platform (Cepheid, Sunnyvale, CA, USA), currently used for TB, Viral load testing and early infant diagnosis for HIV, for HPV screening. Visual inspection with acetic acid (VIA) was used for triage of HPV-positive women, as recommended in national guidelines. Quality assurance (QA) was performed by the National Oncology Reference Laboratory (NORL), using the COBAS 4800 platform (Roche Molecular System, Pleasanton, CF, USA). HPV testing was done using either self or clinician-collected samples. We assessed the following screening performance indicators: screening coverage, screen test positivity, triage compliance, triage positivity and treatment compliance. Test agreement between local GeneXpert and central comparator high-risk HPV (hrHPV) testing for a random set of specimens was calculated as overall concordance and kappa value. We conducted a final evaluation and applied the Nominal Group Technique (NGT) to identify implementation challenges and opportunities.</p> Key findings <p>The screening coverage of target population was 27.0% (4500/16,666); 52.8% (2376/4500) were between 30–49 years of age. HPV positivity rate was 22.8% (1027/4500). Only 10% (105/1027) of HPV positive cases were triaged with VIA/VILI; 21% (22/105) tested VIA/VILI positive, and 73% (16/22) received treatment (15 received cryotherapy, 1 was referred for biopsy). The median HPV testing turnaround time (TAT) was 24 hours (IQR 2–48 hours). Invalid sample rate was 2.0% (91/4500). Concordance between the Cepheid and COBAS was 86.2% (kappa value = 0.71). Of 1042 healthcare workers, only 5.6% (58/1042) were trained in cervical cancer screening and treatment, and only 69% (40/58) of those trained were stationed at service provision areas. Testing capacity was identifed as the main challenge, while the community strategy was the main opportunity.</p> Conclusion <p>HPV testing can be performed on GeneXpert as a near point of care platform. However, triage compliance and testing TAT were major concerns. We recommend strengthening of the screening-triage-treatment cascade and expansion of testing capacity, before adoption of a GeneXpert-based HPV screening among other near point of care platforms in Kenya.</p>


id: 10.1371/journal.pone.0286200
feed_id: 57db369e-3f86-4e01-a122-6026940a1b7f
link: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0286200
author: Kristina Vingrys
title:
Socio-ecological predictors of dietary inflammatory scores and associations with childhood and adolescent adiposity: A protocol for a rapid scoping review of observational studies

content:
<p>by Kristina Vingrys, Helen McCarthy, Ricardo Segurado, James R. Hébert, Catherine M. Phillips</p>
Introduction <p>Diet-related inflammation is associated with adiposity. Obesity and inflammation in early life may have adverse health outcomes in later life; however, the socio-ecological predictors of a pro-inflammatory diet in childhood and adolescence are not well understood. This rapid scoping review aims to summarise the current state of research from observational studies investigating socio-ecological predictors (childhood, parental, familial, demographic and chronobiological risk factors) and their association with diet-associated inflammation and adiposity in children and adolescents.</p> Methods <p>This scoping review will be conducted using the frameworks based on the Joanna Briggs Institute and Arksey and O’Malley and the Population, Concept and Context (PCC) mnemonic. Searches were conducted in OVID Medline, Cinahl and Embase, with adaptations as required. The piloted study selection process will utilise two reviewers for study selection, with reference lists checked for included studies. A third reviewer will moderate disagreements. Data will be extracted by one reviewer and calibrated by a second reviewer.</p> Results <p>The results will be reported using the Preferred Reporting Items for Systematic reviews and Meta-Analyses extension for Scoping Reviews (PRISMA-ScR) checklist and PRISMA-ScR flow diagram. The main findings will be synthesised into themes and concepts narratively. Tables and graphs will present frequencies, study details and categorical descriptions.</p> Discussion <p>This scoping review will provide an overview of the research conducted to date regarding predictors of diet-related inflammation in childhood and their associations with adiposity. Better understanding of the factors associated with a more inflammatory diet in childhood may be useful for clinicians and policy makers when designing and implementing health interventions.</p>


id: 646c7d0f86dbb1af91231cec
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff
link: https://itsfoss.com/newsletter/foss-weekly-23-21/
categories: Newsletter
description:
Changes to Pip mechanism, stress testing CPU and other Linux tips and tutorials in this edition of FOSS Weekly.

content:
<img src="https://itsfoss.com/content/images/2023/05/FOSS-WEEKLY-23-21.png" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><p>It seems like Pip is changing its behavior to avoid conflicts with native Linux packages. The change is now present in Ubuntu 23.10 and Fedora 38, where you'll <a href="https://itsfoss.com/externally-managed-environment/">run into an error while using Pip</a>.</p><p>And we have new badges for Pro members 🤘</p><p><strong>💬 Let's see what else you have in this edition of FOSS Weekly:</strong></p><ul><li>Addressing the Pip issue in Ubuntu 23.10</li><li>Stress testing CPU</li><li>And other Linux news, videos, puzzles and, of course, memes!</li></ul><hr><h2 id="%F0%9F%93%B0-linux-news">📰 Linux news</h2><ul><li>Lightweight distro Bodhi Linux <a href="https://www.bodhilinux.com/release/7-0-0/?ref=itsfoss.com">released version 7.0 beta</a>.</li><li>Fedora 36 has reached end of life. Existing users should <a href="https://itsfoss.com/upgrade-fedora-version/">upgrade to a newer version</a>.</li><li>Cloudflare has launched a <a href="https://news.itsfoss.com/cloudflare-open-source-sponsorship/?ref=itsfoss.com">new sponsorship program for OSS projects</a>.</li></ul><p>Twitter's original co-founder Jack Dorsey's Bluesky recently open-sourced their Web, Android, and iOS applications.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/bluesky-social-open-source/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Bluesky Social: A Decentralized Twitter Alternative Takes an Open-Source Approach</div><div class="kg-bookmark-description">A Twitter replacement in the works with better fundamentals and approach in place?</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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">It'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/bluesky-open-source-twitter-alternative.jpg" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><hr><h2 id="%F0%9F%A7%A0-what-we%E2%80%99re-thinking-about">🧠 What we’re thinking about</h2><p>This is going to resonate with many long-time Ubuntu users.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://hackaday.com/2023/05/22/dear-ubuntu/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Dear Ubuntu…</div><div class="kg-bookmark-description">Dear Ubuntu, I hope this letter finds you well. I want to start by saying that our time together has been one of creativity and entertainment, a time in which you gave me the tools to develop a new…</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://hackaday.com/wp-content/themes/hackaday-2/img/hackaday-logo_1024x1024.png?v=3" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">Hackaday</span><span class="kg-bookmark-publisher">Jenny List</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hackaday.com/wp-content/uploads/2023/05/dear-ubuntu-featured-e1684772890716.jpg" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><hr><h2 id="%F0%9F%A7%AE-tutorials">🧮 Tutorials</h2><p>You cannot use Pip for installing Python packages in Ubuntu 23.10. At least not directly. Here's why and what you can do about it.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/externally-managed-environment/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Externally Managed Environment Error With Pip in Ubuntu 23.10</div><div class="kg-bookmark-description">Seeing an “externally managed environment” error while using Pip in Ubuntu 23.10? Here’s what you can do about this error.</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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">It'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/handling-externally-managed-env-pip.png" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><p>When building a new system, stress testing the CPU is a way to check your processor's performance capabilities under heavy load.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/stress-test-cpu-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Stress Test CPU in Linux</div><div class="kg-bookmark-description">Want to stress test your CPU in Linux? Here’s how you can do it effortlessly.</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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">It'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/cpu-stress-test.png" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><p>Brave has the picture-in-picture mode. It's just not obvious like Firefox. Here's how to use it.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/picture-in-picture-brave/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Use Picture in Picture Mode in Brave Browser</div><div class="kg-bookmark-description">Brave has picture-in-picture mode but it’s so hidden that you feel like there is no PIP support at all. Here’s how to enable and use 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="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">It'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/2022/09/enable-pip-mode-in-brave.png" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><h2 id="%F0%9F%93%B9-what-we-are-watching">📹 What we are watching</h2><p>2 videos in 2 weeks... now we are rolling ⛹️</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/lZ_0NSJHa0k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="10 ASCII Games You Can Play in Linux Terminal [For Retro Arcade Game Lovers]"></iframe></figure><hr><h2 id="%E2%9C%A8-application-highlights">✨ Application highlights</h2><p>VidCutter is a nifty tool for trimming and merging videos on Linux. That's it. No fancy video editing features here.</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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">It'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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><hr><h2 id="%F0%9F%92%A1quick-linux-tip">💡Quick Linux tip</h2><p>The usual way of hiding files from normal view is to add dot (.) before the filenames.</p><p>In Nautilus and perhaps some other file managers, you can <a href="https://itsfoss.com/hide-files-folders-linux/">hide multiple files and folders without renaming them</a>.</p><p>All you have to do is to create a text file named <code>.hidden</code> and add the names of the folders and files you want to hide to this file.</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/image-13.png" class="kg-image" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff" loading="lazy" width="795" height="417" srcset="https://itsfoss.com/content/images/size/w600/2023/05/image-13.png 600w, https://itsfoss.com/content/images/2023/05/image-13.png 795w" sizes="(min-width: 720px) 720px"></figure><p>Now, <strong>close your file explorer and start it again</strong>. The files and directories mentioned in the <code>.hidden</code> file will be hidden and can only be viewed with Ctrl+H keys.</p><hr><h2 id="%F0%9F%A7%A9-puzzle-for-pro-members-only">🧩 Puzzle (for Pro members only)</h2><p>This week you have scrambled e̶g̶g̶s̶ words. The puzzle is composed of various Linux-related terms and applications.</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: Scrambled Words Puzzle #1</div><div class="kg-bookmark-description">Exercise those ‘little gray cells’ 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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">It'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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><hr><h2 id="%F0%9F%9B%8D%EF%B8%8F-interesting-offer">🛍️ Interesting offer</h2><p>Unleash the creative power of Blender, the free and open-source software tool for 3D artists, with this bundle of books from Packt.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.humblebundle.com/books/blender-animation-and-games-packt-books?partner=itsfoss&ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Humble Tech Book Bundle: Blender Animation and Games by Packt</div><div class="kg-bookmark-description">We’ve teamed up with Packt for our newest bundle. Get books like Game Development with Blender and Godot. Plus, pay what you want & 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.21: Pip Issue, CPU Stress Testing and More Linux Stuff"><span class="kg-bookmark-author">Humble Bundle</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hb.imgix.net/7f272b3fc868b9d190ad8e9da7031f7c69b960d3.jpg?auto=compress,format&h=630&w=1200&s=1ea5184912b92c0fa0ffd93b722adbea" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></a></figure><hr><h2 id="%F0%9F%A4%A3-meme-of-the-week">🤣 Meme of the week</h2><p>Linux can be very welcoming to new users!</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/wholesomm.png" class="kg-image" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff" loading="lazy" width="1080" height="1080" srcset="https://itsfoss.com/content/images/size/w600/2023/05/wholesomm.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/wholesomm.png 1000w, https://itsfoss.com/content/images/2023/05/wholesomm.png 1080w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%97%93%EF%B8%8F-tech-trivia">🗓️ Tech Trivia</h2><p>On May 24, 1844, Samuel Morse sent the first telegraph over a line from Washington, D.C. to Baltimore. He sent 'What hath God wrought' to his partner Alfred Vail, who retransmitted the same message back to Morse. </p><p>The famous Morse code is named after Samuel Morse.</p><hr><h2 id="%F0%9F%86%95-fossverse-updates">🆕 FOSSverse updates</h2><p>Now the Pro members get honor badges displayed with their names in both Community and the Comments sections.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://itsfoss.com/content/images/2023/05/itsfoss-pro-member-badge.png" width="515" height="117" loading="lazy" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div><div class="kg-gallery-image"><img src="https://itsfoss.com/content/images/2023/05/itsfoss-pro-member-badges.png" width="421" height="114" loading="lazy" alt="FOSS Weekly #23.21: Pip Issue, CPU Stress Testing and More Linux Stuff"></div></div></div><figcaption>Pro members get special badges in comments and community</figcaption></figure><p>I guess that gives you one more reason to <a href="https://itsfoss.com/signup/">upgrade to It's FOSS Pro membership</a> 😉 </p><hr><h2 id="%E2%9D%A4%EF%B8%8F-enjoying-foss-weekly">❤️ 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's here</a>).</p><p><a href="https://itsfoss.com/#/portal/signup">Become a Pro member</a> and show your support 🙏</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Keep on Linux-ing with It's FOSS :)</p>


id: 6461c03c1679c31c16e80895
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: How to Stress Test CPU in Linux
description: Want to stress test your CPU in Linux? Here's how you can do it effortlessly.
link: https://itsfoss.com/stress-test-cpu-linux/
categories: Tutorial
content:
<img src="https://itsfoss.com/content/images/2023/05/cpu-stress-test.png" alt="How to Stress Test CPU in Linux"><p>Stress testing your CPU is one of the best ways to check your processor's performance capabilities under heavy load and the system's temperature when that happens.</p><p>When you stress test the CPU, you can monitor the system's resources to see how they behave with the CPU at its peak workload. While the performance will not change compared to what the processor is capable of, the temperature may affect its operation if it is not well-equipped.</p><p><strong>Stress testing is essential for enthusiasts when building a new system</strong>, especially if you plan to overclock the CPU later.</p><p>For instance, if your CPU gets too hot too quickly during the stress test. You need a better cooling solution by changing the CPU cooler, using a better airflow cabinet, etc.</p><p>Now that you have an idea about the benefits, I will walk you through the following ways to stress test the CPU in Linux:</p><ul><li><strong>Using GtkStressTesting (GUI method)</strong></li><li><strong>Using stress and s-tui utility (CLI method)</strong></li></ul><p>So let's start with the first one.</p><h2 id="stress-test-linux-cpu-using-gui-method-%F0%9F%96%A5%EF%B8%8F">Stress test Linux CPU using GUI method 🖥️</h2><p>If you prefer using a GUI solution over the terminal, I have just the easiest method for you to stress-test your system.   </p><p>There is a GUI utility <strong>GtkStressTesting, </strong>which helps you stress test and monitor temperature simultaneously. It provides various presets to stress-test the system and provides an ability to choose how many cores you want to work with during the test.</p><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-emoji">🚧</div><div class="kg-callout-text">This tool is no more actively maintained on <a href="https://gitlab.com/leinardi/gst?ref=itsfoss.com">GitLab</a>. But it works as expected.</div></div><p>GtkStressTesting is available as a Flatpak, so if you haven't already enabled Flatpak support, refer to our <a href="https://itsfoss.com/flatpak-guide/">Flatpak setup guide</a>.</p><p>Once you have enabled Flatpak support, the GtkStressTesting utility can be installed using the following via the terminal (if not software center)</p><pre><code>flatpak install flathub com.leinardi.gst</code></pre><p>After the installation, you can start the GtkStressTesting utility from the system menu. </p><p>Here, I would recommend you click on the <code>Read all</code> button and enter the sudo password so the utility can fetch all the information of your system:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Allow-read-all-premissions-for-GtkStressTesting.png" class="kg-image" alt="How to Stress Test CPU in Linux" loading="lazy" width="1423" height="815" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Allow-read-all-premissions-for-GtkStressTesting.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Allow-read-all-premissions-for-GtkStressTesting.png 1000w, https://itsfoss.com/content/images/2023/05/Allow-read-all-premissions-for-GtkStressTesting.png 1423w" sizes="(min-width: 720px) 720px"></figure><p>From here, you can choose how long you want to stress test your system (you can always stop the process if the temp gets too high) and choose the max number available in the <code>Workers: Auto</code>.</p><p>I went for <strong>12 cores and 5 mins of stress testing</strong>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/choose-time-and-cores-to-stress-test-the-CPU-in-linux.png" class="kg-image" alt="How to Stress Test CPU in Linux" loading="lazy" width="1173" height="670" srcset="https://itsfoss.com/content/images/size/w600/2023/05/choose-time-and-cores-to-stress-test-the-CPU-in-linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/choose-time-and-cores-to-stress-test-the-CPU-in-linux.png 1000w, https://itsfoss.com/content/images/2023/05/choose-time-and-cores-to-stress-test-the-CPU-in-linux.png 1173w" sizes="(min-width: 720px) 720px"><figcaption>(Click to enlarge image)</figcaption></figure><p>Once you are done, click on the start button and monitor the temperatures, and if they reach beyond 90, stop the stress testing.</p><p>My system went to 85 max during stress testing:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/stress-test-Linux-CPU-usng-GUI-1.png" class="kg-image" alt="How to Stress Test CPU in Linux" loading="lazy" width="1308" height="1052" srcset="https://itsfoss.com/content/images/size/w600/2023/05/stress-test-Linux-CPU-usng-GUI-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/stress-test-Linux-CPU-usng-GUI-1.png 1000w, https://itsfoss.com/content/images/2023/05/stress-test-Linux-CPU-usng-GUI-1.png 1308w" sizes="(min-width: 720px) 720px"></figure><p>Pretty easy way to stress test the CPU. Isn't it? 😉</p><h2 id="stress-test-linux-cpu-using-the-terminal">Stress test Linux CPU using the Terminal </h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/stress-test.gif" class="kg-image" alt="How to Stress Test CPU in Linux" loading="lazy" width="1042" height="642" srcset="https://itsfoss.com/content/images/size/w600/2023/05/stress-test.gif 600w, https://itsfoss.com/content/images/size/w1000/2023/05/stress-test.gif 1000w, https://itsfoss.com/content/images/2023/05/stress-test.gif 1042w" sizes="(min-width: 720px) 720px"></figure><p>You'd need two utilities to stress test using a terminal: <strong><a href="https://itsfoss.com/stress-terminal-ui/">s-tui</a></strong> and <strong>stress</strong>. </p><p>You can get these tools installed from the default repositories or <a href="https://itsfoss.com/install-pip-ubuntu/">using pip</a>. It is easier with default repositories if you are okay with using an older version of the tool (a tad bit).</p><p>Here are the commands that will help you install them on popular Linux distros:</p><p><strong>For Ubuntu/Debian base:</strong></p><pre><code>sudo apt install s-tui stress </code></pre><p><strong>For Arch Linux:</strong></p><pre><code>sudo pacman -S s-tui stress</code></pre><p><strong>For Fedora/RHEL:</strong></p><pre><code>sudo dnf install s-tui stress</code></pre><p><strong>If you want to use pip </strong>for the latest version, here is the command:</p><pre><code>pip install s-tui --user</code></pre><p>Once you are done with the installation, launch the s-tui utility in the terminal:</p><pre><code>s-tui</code></pre><p>And you would be met with the following:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/monitor-clock-speed--load-and-CPU-utilization-in-Linux.png" class="kg-image" alt="How to Stress Test CPU in Linux" loading="lazy" width="1803" height="1006" srcset="https://itsfoss.com/content/images/size/w600/2023/05/monitor-clock-speed--load-and-CPU-utilization-in-Linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/monitor-clock-speed--load-and-CPU-utilization-in-Linux.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/05/monitor-clock-speed--load-and-CPU-utilization-in-Linux.png 1600w, https://itsfoss.com/content/images/2023/05/monitor-clock-speed--load-and-CPU-utilization-in-Linux.png 1803w" sizes="(min-width: 720px) 720px"></figure><p>You can use the mouse or keyboard arrow keys to navigate through the menu, so click on the <code>Stres options</code> and choose how long you want to stress test the system<strong> (in seconds):</strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/set-time-for-how-long-to-stress-test-CPU-in-Linux.png" class="kg-image" alt="How to Stress Test CPU in Linux" loading="lazy" width="1683" height="886" srcset="https://itsfoss.com/content/images/size/w600/2023/05/set-time-for-how-long-to-stress-test-CPU-in-Linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/set-time-for-how-long-to-stress-test-CPU-in-Linux.png 1000w, https://itsfoss.com/content/images/size/w1600/2023/05/set-time-for-how-long-to-stress-test-CPU-in-Linux.png 1600w, https://itsfoss.com/content/images/2023/05/set-time-for-how-long-to-stress-test-CPU-in-Linux.png 1683w" sizes="(min-width: 720px) 720px"><figcaption>(Click to enlarge image)</figcaption></figure><p>And finally, select the <code>Stress</code> option, and it will start the stress testing for a specified period:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/stress-test-Linux-CPU-using-terminal.png" class="kg-image" alt="How to Stress Test CPU in Linux" loading="lazy" width="1578" height="983" srcset="https://itsfoss.com/content/images/size/w600/2023/05/stress-test-Linux-CPU-using-terminal.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/stress-test-Linux-CPU-using-terminal.png 1000w, https://itsfoss.com/content/images/2023/05/stress-test-Linux-CPU-using-terminal.png 1578w" sizes="(min-width: 720px) 720px"><figcaption>(Click to enlarge image)</figcaption></figure><p>And if the temperature gets out of control, you can click on the <code>Quit</code> button to stop the stress test manually. Additionally, if you want to store the data in the <code>.csv</code> format, the tool gives you the feature.</p><p>To store the data, all you have to do is append the <code>-c</code> flag while starting the s-tui utility as shown:</p><pre><code>s-tui -c</code></pre><p>And if you want to save the file with a name to your liking, you'd have to use the <code>--csv-file</code> flag as shown:</p><pre><code>s-tui --csv-file <name of file>.csv</code></pre><p>For example, here, I named the file <code>Hello.scv</code>:</p><pre><code>s-tui --csv-file Hello.scv</code></pre><p>You can explore more about the tool on its <a href="https://github.com/amanusk/s-tui?ref=itsfoss.com">GitHub page</a>.</p><p><strong>Suggested Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/linux-system-monitoring-tools/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">7 System Monitoring Tools for Linux That are Better Than Top</div><div class="kg-bookmark-description">Top command is good but there are better alternatives. Take a look at these system monitoring tools that are similar to top, but better than 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="How to Stress Test CPU in Linux"><span class="kg-bookmark-author">It'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/08/system-monitoring-tools-linux.jpg" alt="How to Stress Test CPU in Linux"></div></a></figure><h2 id="happy-system-happy-life-%F0%9F%98%81">Happy System, Happy Life 😁</h2><p>Not every user realizes the benefits of a stress test. Sometimes it scares them off with the idea of their system reaching its limits for no reason.</p><p>However, the test will help you quickly evaluate and monitor your system's condition. Things like <strong>abnormal temperature spikes</strong> and CPU being unable to handle what it is should help you identify hardware issues early on.</p><p>In either case, you can refer to our temperature monitoring resource if you want to <a href="https://itsfoss.com/check-laptop-cpu-temperature-ubuntu/">keep your CPU monitor in check</a> without performing stress tests.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/check-laptop-cpu-temperature-ubuntu/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How To Check CPU Temperature in Ubuntu Linux</div><div class="kg-bookmark-description">This quick tutorial shows you how to check the CPU temperature on Ubuntu and other Linux distributions with a help of a tool called Psensor. Overheating of laptops is a common issue one faces these days. Monitoring hardware temperature may help you diagnose why your laptop is getting overh…</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="How to Stress Test CPU in Linux"><span class="kg-bookmark-author">It'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/05/check-cpu-temp.jpeg" alt="How to Stress Test CPU in Linux"></div></a></figure><p>You can also check out some of the <a href="https://itsfoss.com/linux-system-monitoring-tools/">system monitoring tools</a> or <a href="https://itsfoss.com/htop-alternatives/">htop alternatives</a> for Linux to keep an eye on your system resources.</p><p>💬 <em>What do you think about stress testing your CPU in Linux? Do you think we should do it? Share your thoughts on it in the comments below.</em></p>


id: 646b63a486dbb1af912316d1
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: Handling Externally Managed Environment Error With Pip in Ubuntu 23.04
link: https://itsfoss.com/externally-managed-environment/
categories: Troubleshoot
description:
Seeing an "externally managed environment" error while using Pip in Ubuntu 23.04? Here's what you can do about this error.

content:
<img src="https://itsfoss.com/content/images/2023/05/handling-externally-managed-env-pip.png" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04"><p>I recently upgraded to Ubuntu 23.04. Things are mostly smooth. However, recently I encountered an issue that was not present in the previous version.</p><p>I was trying to install a package using Pip, a command line based Python package manager. It works great usually but it threw an error this time:</p><p><strong>error: externally-managed-environment</strong></p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/externally-managed-environment.png" class="kg-image" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04" loading="lazy" width="928" height="679" srcset="https://itsfoss.com/content/images/size/w600/2023/05/externally-managed-environment.png 600w, https://itsfoss.com/content/images/2023/05/externally-managed-environment.png 928w" sizes="(min-width: 720px) 720px"></figure><p>Here's the complete error message if you want to read it:</p><pre><code>× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
</code></pre><p>And if you read the details, you'll understand why you see this error.</p><h2 id="reason-behind-the-externally-managed-environment-error">Reason behind the 'Externally Managed Environment' Error</h2><p>Ubuntu 23.04, Fedora 38 and probably other recent distribution versions are implementing this enhancement on the use of Python packages.</p><p>The change has been done to avoid the "conflict between OS package managers and Python-specific package management tools like pip. These conflicts include both Python-level API incompatibilities and conflicts over file ownership."</p><p>More details can be find on <a href="https://peps.python.org/pep-0668?ref=itsfoss.com">this page</a>. </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://peps.python.org/pep-0668?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">PEP 668 – Marking Python base environments as “externally managed” | peps.python.org</div><div class="kg-bookmark-description">Python Enhancement Proposals (PEPs)</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://peps.python.org/_static/py.png" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04"><span class="kg-bookmark-author">peps.python.org</span></div></div></a></figure><h2 id="what-are-your-options">What are your options?</h2><p>You can do three things when you try to install a Python package and see this error. </p><ol><li>Install the native package</li><li>Create virtual environments in Python</li><li>Use Pipx (recommended)</li></ol><p>Let's see them one by one.</p><h3 id="option-1-go-for-native-package">Option 1: Go for native package</h3><p>I understand that Pip gives a comfortable way of installing Python packages. However, some Python applications are also packaged as APT or other native packages. Search for it in your distribution's repositories and install it from there if it is available.</p><p>For example, I was trying to install WoeUSB-ng. If I was using Arch Linux, the same package is available from AUR.</p><h3 id="option-2-use-python-virtual-environment">Option 2: Use Python virtual environment</h3><p>If you must use a Python package, you have to isolate it in <a href="https://itsfoss.com/python-setup-linux/">Python virtual environment</a>.</p><p>With the help of virtual environments, you can use different versions of package dependencies and Python. This way, you avoid any conflicts between the packages.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">This method is suitable for software developers and programmers working on Python projects.</div></div><p>Let's quickly see how you do it. Usually, Python should already have the tool for creating virtual environments.</p><p>Use the command below to create a virtual environment for your project. Replace <code>project_name</code> with your project's name, of course.</p><pre><code>python3 -m venv .venv/project_name</code></pre><p><strong>If you see venv errors related</strong>, you may have to install it.</p><pre><code>sudo apt install python3-venv
</code></pre><p>Now, you'll see a directory named <code>.env</code> in your home directory and inside the .env, you'll have the project directory.  </p><p>Here's the exciting part. Each project directory will have its own copy of Python and Pip in it. </p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/python-virtual-env-example.png" class="kg-image" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04" loading="lazy" width="872" height="366" srcset="https://itsfoss.com/content/images/size/w600/2023/05/python-virtual-env-example.png 600w, https://itsfoss.com/content/images/2023/05/python-virtual-env-example.png 872w" sizes="(min-width: 720px) 720px"></figure><p>That's your virtual Python environment. You can use this 'local binary' for installing Python packages using Pip inside this virtual environment like this:</p><pre><code>.venv/project_name/bin/pip install package_name</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/use-pip-in-python-virtual-environment.png" class="kg-image" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04" loading="lazy" width="872" height="462" srcset="https://itsfoss.com/content/images/size/w600/2023/05/use-pip-in-python-virtual-environment.png 600w, https://itsfoss.com/content/images/2023/05/use-pip-in-python-virtual-environment.png 872w" sizes="(min-width: 720px) 720px"></figure><p>Remember that the installed Python package won't be available system wide. </p><p>This was only a brief example of virtual environments in Python. Here's a detailed guide if you want to learn more on it.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://realpython.com/python-virtual-environments-a-primer/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Python Virtual Environments: A Primer – Real Python</div><div class="kg-bookmark-description">In this tutorial, you’ll learn how to use a Python virtual environment to manage your Python projects. You’ll also dive deep into the structure of virtual environments built using the venv module, as well as the reasoning behind using virtual environments.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://realpython.com/static/favicon.68cbf4197b0c.png" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04"><span class="kg-bookmark-author">Real Python</span><span class="kg-bookmark-publisher">Real Python</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://files.realpython.com/media/Python-Virtual-Environments_Watermarked.4c787192d42f.jpg" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04"></div></a></figure><h3 id="3-use-pipx-tool-recommended">3. Use Pipx tool (recommended)</h3><p>What you saw above involves manual work. Pipx automates it. </p><p>It automatically creates a new virtual environment for each app you install. Not only that. It also creates a link to it in <code>.local/bin</code>. This way, the user who installed the package can run it from anywhere in the command line.</p><p>I guess that's what most desktop Linux users want here.</p><p>Install pipx on Ubuntu using this command:</p><pre><code>sudo apt install pipx</code></pre><p>It will probably install a huge number of dependencies:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/install-pipx.png" class="kg-image" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04" loading="lazy" width="1198" height="763" srcset="https://itsfoss.com/content/images/size/w600/2023/05/install-pipx.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/install-pipx.png 1000w, https://itsfoss.com/content/images/2023/05/install-pipx.png 1198w" sizes="(min-width: 720px) 720px"></figure><p>Now <a href="https://itsfoss.com/add-directory-to-path-linux/">add it to the PATH</a> so that you can run from anywhere.</p><pre><code>pipx ensurepath
</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/pipx-ensurepath.png" class="kg-image" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04" loading="lazy" width="996" height="409" srcset="https://itsfoss.com/content/images/size/w600/2023/05/pipx-ensurepath.png 600w, https://itsfoss.com/content/images/2023/05/pipx-ensurepath.png 996w" sizes="(min-width: 720px) 720px"></figure><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-emoji">✋</div><div class="kg-callout-text">You must close the terminal and log back in for the changes to occur.</div></div><p>Great! Now you can install Python packages using Pipx instead of Pip:</p><pre><code>pipx install package_name</code></pre><p>Here's an example.</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/pipx-install-example.png" class="kg-image" alt="Handling Externally Managed Environment Error With Pip in Ubuntu 23.04" loading="lazy" width="858" height="330" srcset="https://itsfoss.com/content/images/size/w600/2023/05/pipx-install-example.png 600w, https://itsfoss.com/content/images/2023/05/pipx-install-example.png 858w" sizes="(min-width: 720px) 720px"></figure><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">To remove a package installed with pipx, use <code>pipx uninstall package_name</code> command.</div></div><h2 id="conclusion">Conclusion</h2><p>Pip is a good tool for getting Python packages on the system. I think it was always meant for Python programmers, not for the end users. Clearly, it cannot be used as a replacement for the native distribution packages and the Python devs have made it clear.</p><p>The good thing is that alternatives exist for both programmers and end users.</p><p>I hope this tutorial helped you understand and overcome the externally-managed-environment error with Pip in Linux.</p><p>Please let me know if you have questions or suggestions.</p>


id: 6465a1e35859950507d48347
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: FOSS Weekly #23.20: risiOS Distro, Plasma 6, Distrohopping, FOSSverse and More
link: https://itsfoss.com/newsletter/foss-weekly-23-20/
categories: Newsletter
description:
Introducing FOSSverse, concluding Rust Basics series and looking at the upcoming KDE Plasma 6 features.

content:
<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's that?</p><p>It's basically the idea of unifying all things It's FOSS with a single member account. When logged in to It'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's FOSS Community</a>. You don't have to manage a separate account for the Community anymore. Pro members also get 'Pro' badge on their profile in the Community.</p><p>Still not part of the It's FOSS Community? That'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'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's FOSS web portals). I am super excited about it 🤩 and I welcome your feedback on this idea.</p><p><strong>💬 Let'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">📰 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’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'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">🧠 What we’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&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">🛍️ 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&u=747593&m=59485&urllink=&afftrack=&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&u=747593&m=59485&urllink=&afftrack=&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&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’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 & 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&h=630&w=1200&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">🧮 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'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’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'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 'sins'.</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'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">📹 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">✨ Project highlights</h2><p>New week, new Linux distro. It's not that I try to introduce you to a new distro each week. It just happens involuntarily. Trust me 😉</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'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 😸</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’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'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">🤣 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">🗓️ 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">🧩 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 ‘little gray cells’ 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'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">❤️ 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's here</a>).</p><p>Become a Pro member and show your support 🙏</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>


id: 645dbde969df0b089126721d
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: Beginner's Guide to System Updates in Linux Mint
link: https://itsfoss.com/linux-mint-update/
categories: Linux Mint
description:
New to Linux Mint? It has an excellent system updater tool. Learn about this tool and the best practices you should follow.

content:
<img src="https://itsfoss.com/content/images/2023/05/system-updates-in-linux-mint.png" alt="Beginner'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'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's FOSS came up with this beginner'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">📋</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'll notice a 'secure' 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'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'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'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">📋</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'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'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'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'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'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">🚧</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'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'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'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'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'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'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>🛡</strong></code><strong> ): </strong>You are supposed to install the security patches immediately as it is supposed to save you from your system's current vulnerability.</li><li>Kernel updates <strong>(Medium priority and indicated by </strong><code>🗲</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>⬆</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'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'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'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'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'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">💡</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">📋</div><div class="kg-callout-text">That'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'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'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'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, "Your configuration changed, click OK to update your APT cache." </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'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'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'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’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's Guide to System Updates in Linux Mint"><span class="kg-bookmark-author">It'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'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>🗨 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>


id: 63f61b626f09afb69b01b77f
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: Rust Basics Series #8: Write the Milestone Rust Program
link: https://itsfoss.com/milestone-rust-program/
categories: Rust
description:
In the final chapter of the Rust Basics Series, recall the concepts you learned and write a somewhat complex Rust program.

content:
<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'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!("Welcome to the fruit mart!");
    println!("Please select a fruit to buy.\n");
    
    println!("\nAvailable fruits to buy: Apple, Banana, Orange, Mango, Grapes");
    println!("Once you are done purchasing, type in 'quit' or 'q'.\n");
}
</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'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!("Welcome to the fruit mart!");
    println!("Plase select a fruit to buy.\n");
    
    println!("Available fruits to buy: Apple, Banana, Orange, Mango, Grapes");
    println!("Once you are done purchasing, type in 'quit' or 'q'.\n");
    
    // get user input
    let mut user_input = String::new();
    io::stdin()
        .read_line(&mut user_input)
        .expect("Unable to read user input.");
}</code></pre></section><!--kg-card-end: html--><p>There are three new elements that I need to tell you about. So let's take a shallow dive into each of these new elements.</p><h3 id="1-understanding-the-use-keyword">1. Understanding the 'use' 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 "import" 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'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>""</code>), I used the <code>String::new()</code> function to create a new, empty string.</p><p>The difference between using <code>""</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>""</code>, I would get something called a "String slice". The String slice'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>&mut</code>, making it a mutable reference.</p><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-emoji">⚠️</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'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>"Unable to read user input."</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">📋</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's add more code to increase the functionality.</p><h2 id="validating-user-input">Validating user input</h2><p>I surely accepted the user's input but I have not validated it. In the current context, validation means that the user inputs some "command" that <em>we expect to handle</em>. At the moment, the commands are of two "categories".</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!("Welcome to the fruit mart!");
    println!("Plase select a fruit to buy.\n");
    
    println!("Available fruits to buy: Apple, Banana, Orange, Mango, Grapes");
    println!("Once you are done purchasing, type in 'quit' or 'q'.\n");
    
    // get user input
    let mut user_input = String::new();
    io::stdin()
        .read_line(&mut user_input)
        .expect("Unable to read user input.");
        
    // validate user input
    let valid_inputs = ["apple", "banana", "orange", "mango", "grapes", "quit", "q"];
    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 "Apple" or "apple" or "APPLE" 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 "Apple", "apple" and "APPLE" all end up as "apple".</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!("Welcome to the fruit mart!");
    println!("Plase select a fruit to buy.\n");
    
    let valid_inputs = ["apple", "banana", "orange", "mango", "grapes", "quit", "q"];
    
    'mart: loop {
        let mut user_input = String::new();

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

        // get user input
        io::stdin()
            .read_line(&mut user_input)
            .expect("Unable to read user input.");
        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!("ERROR: please enter a valid input");
            continue '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'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'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!("Welcome to the fruit mart!");
    println!("Plase select a fruit to buy.\n");
    
    let valid_inputs = ["apple", "banana", "orange", "mango", "grapes", "quit", "q"];
    
    'mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

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

        // get user input
        io::stdin()
            .read_line(&mut user_input)
            .expect("Unable to read user input.");
        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!("ERROR: please enter a valid input");
            continue 'mart;
        }
        
        // quit if user wants to
        if user_input == "q" || user_input == "quit" {
            break 'mart;
        }

        // get quantity
        println!(
            "\nYou choose to buy \"{}\". Please enter the quantity in Kilograms.
(Quantity of 1Kg 500g should be entered as '1.5'.)",
            user_input
        );
        io::stdin()
            .read_line(&mut quantity)
            .expect("Unable to read user input.");
    }
}</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!("Welcome to the fruit mart!");
    println!("Plase select a fruit to buy.\n");
    
    let valid_inputs = ["apple", "banana", "orange", "mango", "grapes", "quit", "q"];
    
    'mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

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

        // get user input
        io::stdin()
            .read_line(&mut user_input)
            .expect("Unable to read user input.");
        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!("ERROR: please enter a valid input");
            continue 'mart;
        }
        
        // quit if user wants to
        if user_input == "q" || user_input == "quit" {
            break 'mart;
        }

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

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

    }
}</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!("Welcome to the fruit mart!");
    println!("Please select a fruit to buy.\n");

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

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

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

        // get user input
        io::stdin()
            .read_line(&mut user_input)
            .expect("Unable to read user input.");
        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!("ERROR: please enter a valid input");
            continue 'mart;
        }

        // quit if user wants to
        if user_input == "q" || user_input == "quit" {
            break 'mart;
        }

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

        total += calc_price(quantity, user_input);
    }

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

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

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

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

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

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

fn price_grapes(quantity: f64) -> f64 {
    if quantity > 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'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's wholesale price per Kilogram. Otherwise, <code>quantity</code> is multiplied by the fruit'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's loved features but I haven'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>


id: 6458eed869df0b089125eeec
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: 7 Deadly Sins of Distrohopping
link: https://itsfoss.com/distrohopping-issues/
categories: List
description:
What are you doing wrong with distro-hopping? Can you do it better? Yes, you can. Here, we tell you how.

content:
<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'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 "Try" 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 📖</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'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’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'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'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’s fair because Linux isn’t treated as a first-class citizen when it comes to gaming. You won’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'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'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>💬 Share your distro-hopping adventures in the comments below. Do you do it or not?</em></p>


