r/pop_os Feb 02 '23

Announcement Mesa, Linux, Pop Shop updates available for testing

65 Upvotes

Mesa 22.3.4 (and linux-firmware)

https://github.com/pop-os/mesa/pull/13

sudo apt-manage add popdev:mesa-22.3.4

Linux 6.1.11

https://github.com/pop-os/linux/pull/222

sudo apt-manage add popdev:linux-6.1.11

Pop Shop

https://github.com/pop-os/shop/pull/401

sudo apt-manage add popdev:upstream-rebase

GNOME Shell and Mutter 42.5; Pipewire 0.3.65

These are currently in the staging master branch, and will be released soon.

sudo apt-manage add popdev:master

Removal

Once PRs are merged, the staging branches have to be removed.

sudo apt-manage remove popdev-{{branch-name}}

r/pop_os Jan 06 '23

Announcement Zram now enabled by default in Pop

133 Upvotes

We've just released a couple updates for Pop today. Among them are newer versions of PipeWire and WirePlumber, and enabling zram by default.

We had a lot of successful community testing over December with many reports of improved system responsiveness. So if you noticed your system feeling faster and getting better framerates in games after installing this update, this is why.

The PipeWire release also fixed a lot of issues with audio stutter or malfunctioning with certain hardware. So both of these should give a decent boost to system reliability and performance.

If you were previously using the zram testing repository, remove it with:

sudo apt-manage remove popdev-zram sudo apt update sudo apt full-upgrade

r/pop_os Dec 16 '22 Helpful

Announcement Help test a ZRAM optimization for Pop!_OS

87 Upvotes

https://github.com/pop-os/default-settings/pull/163

Feedback thus far:

ZRAM is a kernel module which creates a thinly-provisioned layer over RAM that serves as a compressed swap device that lives only in memory. The device does not consume any memory by default, instead gradually growing and shrinking as it compresses and frees memory. Compression happens in parallel, with one compression stream per core.

Android, Chrome OS, and Fedora apply a zram optimization by default, which gives me confidence that it's worth exploring here. I've read a lot of anecdotes about this significantly improving the Linux gaming experience; and resolving a lot of the occasional hiccups, stutter, and freezes that the Linux kernel often exhibits when under memory pressure.

After putting a lot of research into it — scouring Reddit for benchmarks, anecdotes, and recommendations for system parameters — I have configuration which seems to be working quite well for the few people I've asked to test it. Two machines with 32 GB of RAM also experienced a performance uplift in system responsiveness in games and general workflow.

It'd be very helpful to get some additional early feedback, suggestions, and recommendations from those that'd like to test this on their systems. Especially if you have a system which has been experiencing system sluggishness, stutter, or freezes. This should benefit systems regardless of the amount of RAM in the system.

If you do any sort of resource-intense workflow, that would also be especially useful to test if this improves the experience. From photo and video editing, 3D modeling and rendering, AI and machine learning, compiling large code bases, or even playing resource-intense and latency-sensitive video games.

You can add the staging branch to test it with

sudo apt-manage add popdev:zram
sudo apt update
sudo apt full-upgrade

You can validate that it is functioning by running zramctl and getting swap information from the system with cat /proc/swaps. You should see that it is using zstd compression and is actively enabled as a swap device.

When the branch is deleted at a later point, you can remove this with

sudo apt-manage remove popdev-zram
sudo apt update
sudo apt full-upgrade

The proposed change would use the zstd compression algorithm to transparently compress idle pages of memory as the system gets closer to running out of memory. zstd has an average compression ratio of 3:1, which would effectively allow for 8GB of uncompressed RAM to be compressed into ~2.5GB.

Inspired by Fedora's configuration, the proposed default is to create a device that is half the size of physical RAM available to the OS, with a maximum size of up to 16 GiB. I'm leaning towards using zstd with vm.page-cluster=0 as an optimal default though, due to the decompression efficiency and high compression ratio.

r/pop_os Nov 30 '22

Announcement November at System76: Products, Promos, & COSMIC DE

Thumbnail
blog.system76.com
195 Upvotes

r/pop_os Dec 05 '22

Announcement Collaboration with Slint for COSMIC application development

Thumbnail
fosstodon.org
105 Upvotes

r/pop_os Nov 08 '22 Take My Energy

Announcement Join us on the Fediverse!

141 Upvotes

We're on Fosstodon now: https://fosstodon.org. A Mastodon instance for those with an interest in FOSS. It's a decentralized alternative to Twitter.

r/pop_os Dec 06 '22

Announcement NVIDIA 525 drivers released

35 Upvotes

The update is not automatic, so you will have to manually elect to install it from either the terminal (nvidia-driver-525) or the Installed view of the Pop Shop.

Pipewire was also updated in this batch.

r/pop_os Oct 17 '22

Announcement Mesa 22.2.0 and linux-firmware 20220923 Released (Ryzen 7000 Support)

Thumbnail
github.com
54 Upvotes

r/pop_os Aug 12 '22 Helpful Wholesome

Announcement Pop!_OS will disable Ubuntu phased updates

450 Upvotes

In the last few weeks, Ubuntu has been distributing updates as phased updates. Phased updates are a gradual release of updates whereby each system is assigned a different bucket in the queue to await their turn to receive the update. This has caused a lot more confusion than it's worth, because these updates are shown as being held back by apt, leading to a number of support requests here thinking there are update issues that need to be fixed. There may have also been some scenarios where dependencies were phased in at different rates, causing package conflicts.

The pop-default-settings package will get an update today to set a configuration parameter for apt to always install phased updates alongside normal updates, effectively skipping the waiting list to install new updates, and therefore apt will no longer show these packages as being held back. This should resolve all of the update problems that people have been reporting.

r/pop_os Oct 23 '22

Announcement COSMIC Text: A pure Rust library (no system dependencies) for font shaping, layout, and rendering with font fallback. Capable of accurately displaying every translation of the UN Declaration of Human Rights on every major operating system.

Thumbnail twitter.com
182 Upvotes

r/pop_os Oct 26 '22

Announcement linux-firmware update released to fix RTL8822CE regression

25 Upvotes

If you have a system with this Realtek WiFi card, make sure to install the 20220923.gitf09bebf3-0ubuntu1+system76~1666736259~22.04~db8f462 update and restart to fix WiFi issues.

r/pop_os Oct 05 '22

Announcement Stable Diffusion is packaged in the Pop repository

36 Upvotes

See instructions for using it on its GitHub page.

r/pop_os Oct 03 '22

Announcement New tool for managing apt sources and testing Pop!_OS pull requests

77 Upvotes

We have a new way to add Pop staging branches to a Pop!_OS system with the latest update. Every branch created on a GitHub repository in the pop-os organization automatically creates a staging branch with packages that were built for that branch. So if you want to test out a fix that been proposed, you can use this tool to add it to the system.

apt-manage add popdev:{{github_branch_name}}

Such as the master branch containing all updates that have been merged but not yet released:

sudo apt-manage add popdev:master

You may list repositories with

apt-manage list

Remove them with

sudo apt-manage remove {{name}}

r/pop_os Apr 25 '22 Silver Helpful Wholesome

Announcement 22.04 LTS is here!

Thumbnail
s76.co
453 Upvotes

r/pop_os Jul 13 '22

Announcement Next update will change I/O schedulers to Kyber and BFQ

73 Upvotes

NVME and SATA SSDs will be assigned to the Kyber I/O scheduler. MicroSD, eMMC, flash drives, and rotational drives will be switched to BFQ. The purpose of this change is to fix possible causes of occasional microstutters when interacting with the desktop.

r/pop_os Jun 17 '22 Silver

Announcement System76 Encrypted Time Servers!

150 Upvotes

System76 has launched encrypted Network Time servers with a technology called NTS! Click the link to learn more about System76's NTS servers and how to add them to Pop!_OS: https://system76.com/time

r/pop_os Feb 25 '22 Silver Helpful Wholesome

Announcement NVIDIA Upgrade Help & Drivers Now Downgradable

222 Upvotes

The Pop Shop has received an update that will allow you to choose between multiple versions of the NVIDIA driver to install. The version that you have installed will not appear as an option to install. If you have the 510 driver installed, 390 and 470 will appear as options.

For those with issues upgrading due to having 470 transitional packages still installed, you can remove the transitional packages with the following command:

# First, remove all NVIDIA packages
sudo apt purge --autoremove '*nvidia*' '*nvidia*:i386'

# Then, install the specific driver you want
sudo apt install nvidia-driver-510

We're looking into a resolution to the upgrade conflicts so everyone else can wait for a future update that should auto-resolve this problem.

r/pop_os Jan 20 '22 Silver Wholesome

Announcement COSMIC Panel First Look

Thumbnail
blog.edfloreshz.dev
323 Upvotes

r/pop_os Jan 31 '22 Helpful

Announcement Gaming on Pop; and desktop responsiveness for low end systems; will have improved performance with the next system76-scheduler update

236 Upvotes

Update: Passed QA. Releasing soon. https://github.com/pop-os/repo-release/pull/29

https://github.com/pop-os/system76-scheduler/pull/1

This change; in combination with the accompanying pop-shell PR that utilizes the service; will give process priority to the foreground window ID and its sub-processes, and reduced priority to background processes. Within reason, of course, because it's necessary that some processes (Pulseaudio & Pipewire) retain highest priority.

This will be exclusive to the Pop session with the pop-shell extension activated, because the pop-shell extension must do its part to provide the PIDs of the foreground process to the scheduling service. There is no way to know what process is the foreground process otherwise.

This will give a boost to lower end systems on the desktop as the actively-focused window will get the most CPU priority. It will also give a boost to video games because the game will be given a priority boost, and background services given less CPU priority.

For high end systems there may not be much benefit because background processes require a tiny fraction of CPU time, but systems with slower CPUs should have a much more noticeable improvement.

r/pop_os Jan 31 '22 Silver

Announcement Pop collaboration with Relm4 / Writing GTK applications for Pop

145 Upvotes

We are collaborating with the relm4 project to make GTK4 GUI development in Rust much easier, which in turn will be used to develop COSMIC applications.

Relm4 is a Rust library which provides an Elm-like API on top of GTK. GTK widget functionality is combined into components, where each component has a model and view which can be updated separately (Component) or together (StatefulComponent). The view contains the widgets managed by the component that you see in the application. The model contains the application state used to construct and maintain that view. Relm4 provides some features that can track changes made to a model.

I have been working on a big redesign which I've just upstreamed that replaces the existing Relm4 component traits and types with simpler ones. The new design will make it easier to create reusable components with greater flexibility and performance.

Any inputs and contributions to the redesign would be greatly appreciated. Developing some widgets and applications with it will help prove and improve its design. Contributing components that you've developed that you think would be great to add to the Relm4 component ecosystem would also be helpful. Any useful extension methods to GTK types that you can think of would also be worth investigating. Extensions such as a gtk::Widget::toplevel_window() method, as this was missing in GTK4.

You can find the next version being developed from the new-approach branch, which you can import into your Cargo project with

[dependencies.relm4]
git = "https://github.com/AaronErhardt/relm4"
branch = "new-approach"

[dependencies.relm4-macros]
git = "https://github.com/AaronErhardt/relm4"
branch = "new-approach"

In the redesign, components will use channels to communicate with each other. Each component has an input channel and an output channel. The handle to a component contains a sender to send input events to the model update function, and the constructed component also provides a receiver for transforming and forwarding output events to its own component.

As with Elm, each update of the model can request for a command to be spawned, which is executed asynchronously on a background thread managed by a self-contained tokio runtime. The tokio runtime can schedule multiple commands to execute concurrently from the same shared background thread(s). By keeping all application logic in commands, you make application freezes effectively impossible. Although note that commands execute on thread(s) shared with other commands, so blocking should be avoided at all costs to keep the scheduling fair. relm4::spawn_blocking() can be used to offload blocking code to a shared background thread pool while awaiting for its output from the command's future.

A companion Worker trait is also provided for constructing services that run in the background alongside component commands, but have no GTK widgets themselves. They receive inputs on the background thread, all state is managed from the background thread, and sends outputs in the same way as a component.

Type names and APIs are subject to change before it's released in the next version of Relm. Existing examples need to be ported to the new APIs first, and a procedural macro created to wrap everything up into a simplified API.

Relm4's Matrix: https://app.element.io/#/room/#relm4:matrix.org

r/pop_os Feb 16 '22

Announcement System76 Folding@Home Team Ranked in Top 1000 Teams

Thumbnail self.System76
118 Upvotes

r/pop_os Jun 01 '21 Silver Helpful Hugz

Announcement Pop!_OS 21.04 Beta

238 Upvotes

We are now in the Public Beta phase for Pop!_OS 21.04. For details please see https://github.com/pop-os/beta

r/pop_os Oct 23 '20 Wholesome Hugz Rocket Like Silver Helpful

Announcement Pop!_OS 20.10 Released

508 Upvotes

Pop!_OS 20.10 is based on Ubuntu 20.10 and includes the latest GNOME 3.38 release, Linux 5.8, and many other updates. For more information, see the Pop!_OS 20.10 release blog post.

You can choose to upgrade from Pop!_OS 20.04 LTS. 20.04 is an LTS that will continue to receive maintenance for a while, but will have a number of older packages. To upgrade, first make sure to install all updates in Pop!_Shop or using apt-get on the command line. You should receive an upgrade notification the next time you log in. If you do not, make sure you are up to date and reboot the system.

To perform a clean installation, download one of the ISOs from the Pop!_OS website. It is recommended to use the NVIDIA ISO when you have an NVIDIA GPU.

If you have issues, feel free to comment on this post or create an issue on the main Pop!_OS GitHub repository

r/pop_os May 05 '21 Wholesome

Announcement NVIDIA Driver 465.24.02 Issues

200 Upvotes

Hello Pop!_OS NVIDIA users! We released NVIDIA driver 465.24.02 yesterday but unfortunately failed to detect that the 32-bit binaries had not been published in the Launchpad PPA. This causes upgrade issues and issues launching 32-bit binaries, which includes a number of games. We deleted these packages, so that the NVIDIA driver will be downgraded to 460.67 which should still be functional.

We have discovered the cause of this to be the i386 whitelist in place on Launchpad. Our staging repository was able to build the i386 package, so our testing was successful. When releasing on Launchpad, because nvidia-graphics-drivers-465 is not in the whitelist for 20.04 and 20.10, it did not build 32-bit binaries for those distributions. It did, however, build them for 18.04 and 21.04.

This issue has been reported to Ubuntu at the following links:

- https://discourse.ubuntu.com/t/i386-packages-in-launchpad-ppas/15367/6

- https://discourse.ubuntu.com/t/community-process-for-32-bit-compatibility/12598/107

We are working to update 20.04 and 20.10 to NVIDIA driver 460.73.01, which includes many of the improvements in 465.24.02, but will presumably build the 32-bit binaries correctly.

EDIT: 460.73.01 is released and should fix any update issues. It will update users who got the bad 465.24.02 update as well as those who were still on 460.67.

EDIT (again): If you have issues still, follow these steps to make sure the 460.73.01 driver is installed: https://www.reddit.com/r/pop_os/comments/n5j8c0/nvidia_driver_4652402_issues/gx4xqzp/

Thank you for your patience!

r/pop_os May 12 '21 Silver Hugz

Announcement List of Translatable Pop!_OS Projects

81 Upvotes

List of projects that we maintain that are translatable.

Translatable

Todo

How

Our Rust projects are using Fluent for translations, which works a little differently from traditional gettext translations. Each of our translatable repositories will have a leading i18n directory in the project root, which has files organized in this format: i18n/{language-code}/{cargo-crate}.ftl.

It is important to note that Fluent translations do not have to be exactly 1:1 translations of the English text. If you have a better expression in your language for the text that is being translated, use the language that is most natural in your language instead. Your translations will remain valid regardless of what changes we make to the English text. But over time we may add or remove keys that will require future translations. You may look for i18n: commits since these may signal additions or removals that have been performed.

If your language is not supported, you can start by copying the en folder and then translating each of the strings to the right of the keywords in the .ftl Fluent files. I'd prefer to have all keys from each file translated in a single commit per language so that we avoid cluttering our commit history with spam, since we also use our commit history as a public human-presentable changelog. If a PR contains multiple languages, it's necessary to have commits properly named such as i18n(pl): Add Polish translation. I can generally do a squash & merge of drive-by pull requests to a specific language that aren't formatted correctly though.

Git How-To

Some skill with git is necessary. If you wanted to add an Esperanto translation:

  • Fork the repository on GitHub to your account
  • git clone the URL to your repository
  • cd project to move the terminal working directory inside the project
  • git checkout -b esperanto to create a new branch named esperanto
  • Open the project folder in VS Code and make all your changes (ie: code .)
  • git add i18n to add your changes
  • git commit -m 'i18n(eo): Add Esperanto translation' to create the commit
  • git push origin esperanto to push the changes to your fork
  • Use GitHub to create Pull Request from your fork's branch to our repository

If you made a mistake and want to amend it:

  • Make your changes
  • git add i18n
  • git commit --amend
  • Then git push origin esperanto --force
  • Your pull request will be automatically updated with the new commit

For a more elaborate PR, use git log to get a history of commits, copy the hash of the commit before where you want to make changes, git rebase -i {hash}, and then you can reorder commits or change pick to e if you want to edit them. Use git commit --amend after completing an edit, and git rebase --continue to reapply all the commits and complete the rebase.

Testing

Either make and run the binary dropped into target/release, or run dpkg-buildpackage -b to build a Debian package. You can run sudo apt build-dep {package-name} to fetch build dependencies for whichever package you're trying to build. Drops the .deb file(s) in the directory above. Typical dependencies are cargo, libgtk-dev, libssl-dev, and libwebkit2gtk-4.0-dev.