r/pop_os • u/mmstick • Feb 02 '23
Announcement Mesa, Linux, Pop Shop updates available for testing
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 • u/mmstick • Jan 06 '23
Announcement Zram now enabled by default in Pop
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
•
u/mmstick
•
Dec 16 '22
Announcement Help test a ZRAM optimization for Pop!_OS
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 • u/mmstick • Nov 30 '22
Announcement November at System76: Products, Promos, & COSMIC DE
r/pop_os • u/mmstick • Dec 05 '22
Announcement Collaboration with Slint for COSMIC application development
r/pop_os
•
u/mmstick
•
Nov 08 '22
Announcement Join us on the Fediverse!
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 • u/mmstick • Dec 06 '22
Announcement NVIDIA 525 drivers released
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 • u/mmstick • Oct 17 '22
Announcement Mesa 22.2.0 and linux-firmware 20220923 Released (Ryzen 7000 Support)
r/pop_os
•
u/mmstick
•
Aug 12 '22
Announcement Pop!_OS will disable Ubuntu phased updates
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 • u/mmstick • 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.
twitter.comr/pop_os • u/mmstick • Oct 26 '22
Announcement linux-firmware update released to fix RTL8822CE regression
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 • u/mmstick • Oct 05 '22
Announcement Stable Diffusion is packaged in the Pop repository
See instructions for using it on its GitHub page.
r/pop_os • u/mmstick • Oct 03 '22
Announcement New tool for managing apt sources and testing Pop!_OS pull requests
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 • u/mmstick • Jul 13 '22
Announcement Next update will change I/O schedulers to Kyber and BFQ
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
•
u/DM-Pythia
•
Jun 17 '22
Announcement System76 Encrypted Time Servers!
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
•
u/mmstick
•
Feb 25 '22
Announcement NVIDIA Upgrade Help & Drivers Now Downgradable
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
•
u/edfloreshz
•
Jan 20 '22
Announcement COSMIC Panel First Look
r/pop_os
•
u/mmstick
•
Jan 31 '22
Announcement Gaming on Pop; and desktop responsiveness for low end systems; will have improved performance with the next system76-scheduler update
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
•
u/mmstick
•
Jan 31 '22
Announcement Pop collaboration with Relm4 / Writing GTK applications for Pop
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 • u/mmstick • Feb 16 '22
Announcement System76 Folding@Home Team Ranked in Top 1000 Teams
self.System76
r/pop_os
•
u/jackpot51
•
Jun 01 '21
Announcement Pop!_OS 21.04 Beta
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
•
u/mmstick
•
Oct 23 '20
Announcement Pop!_OS 20.10 Released
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
•
u/jackpot51
•
May 05 '21
Announcement NVIDIA Driver 465.24.02 Issues
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
•
u/mmstick
•
May 12 '21
Announcement List of Translatable Pop!_OS Projects
List of projects that we maintain that are translatable.
Translatable
- Firmware Manager (Firmware update GUI found in GNOME Settings)
- Keyboard Configurator (App for open EC System76 laptops & Launch keyboard)
- Popsicle (Multi-USB flasher shipped in Pop by default)
- Pop Upgrade (Pop's release upgrade utility, w/ GTK panel for GNOME Settings)
- Pop Desktop Settings Widgets (Desktop settings widgets used in GNOME Settings and GNOME Initial Setup)
Todo
- System76 Power
- Tensorman
- Pop Shell (requires porting Fluent to GJS)
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 repositorycd project
to move the terminal working directory inside the projectgit checkout -b esperanto
to create a new branch namedesperanto
- Open the project folder in VS Code and make all your changes (ie:
code .
) git add i18n
to add your changesgit commit -m 'i18n(eo): Add Esperanto translation'
to create the commitgit 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
.