Pop!_OS 24.04 replaced GNOME with System76's own COSMIC desktop, and COSMIC Settings has no proxy screen. Two issues asking for one have been open on COSMIC Settings since August 2025 and March 2026. The proxy still works on Pop!_OS, but each part of the system reads it from a different place, and the two browsers read different places too.
We did not install Pop!_OS for this page. Every statement comes from code, read on 4 October 2026: COSMIC Settings' network pages, Chromium's and Firefox's Linux proxy code, GNOME's proxy settings schema, the build files of the Pop!_OS 24.04 image, the COSMIC login screen's login rules, and apt 2.7.14, the apt in Pop!_OS 24.04.
| Part of Pop!_OS | Where it takes the proxy from | Set it with |
|---|---|---|
| Chrome and Chromium | GNOME's proxy keys only | gsettings (Step 1) |
| Firefox | Proxy variables first, then GNOME's keys | gsettings (Step 1) |
| apt | Its own config file | /etc/apt/apt.conf.d/95proxy (Step 2) |
| Terminal programs | Proxy variables | /etc/environment (Step 3) |
| COSMIC Settings | Nothing |
GNOME proxy keys (gsettings)
Chrome and Chromium
the only place they look on COSMIC
Firefox
when no proxy variables are set
Files
apt
/etc/apt/apt.conf.d/
Terminals and Firefox
/etc/environment, at login
What you need before you start
One proxy line, four parts
198.51.100.7Host:8080Port:hp_ir4k2Username:9fa2c1Password198.51.100.7:8080:hp_ir4k2:9fa2c1hp_ir4k2:9fa2c1@198.51.100.7:8080http://hp_ir4k2:9fa2c1@198.51.100.7:8080
gsettings takes host and port separately; apt and the variables take all four as http://user:pass@host:port. Values shown are examples.
- A proxy address as
host:port, plus a user name and password if the proxy needs a login. If your provider sent the parts in another order, the proxy format guide sorts them out. - A terminal (COSMIC Terminal is fine) and sudo rights for Steps 2 and 3.
- For a first test, any HTTP entry from our free proxy list will do. Free entries come and go, so test one first; the check further down shows how.
- Our free proxy setup generator writes the address with the password encoded where it has to be.

Why COSMIC Settings does not help
COSMIC Settings' network pages contain no proxy option at all (1). For anything advanced they open nm-connection-editor, NetworkManager's connection editor (2). Its Proxy tab offers only "None" or "Automatic" with a PAC address; there is no field for a host and port, and neither Chrome nor Firefox reads that tab.
What Chrome does read is the deciding detail. Chrome recognises COSMIC and takes the proxy from GNOME's settings, org.gnome.system.proxy (3), which every Pop!_OS desktop carries although no screen shows them. While their mode is none, the default, Chrome treats that as "no proxy" and does not check the http_proxy variables at all (4). That is why setting only the variables, as most Linux guides say, leaves Chrome going direct.
Firefox, on its default "Use system proxy settings", looks the other way round: the proxy variables first, GNOME's settings second (5).

Step 1: the browsers, with gsettings
Run these in a terminal as your normal user, not with sudo, because the keys belong to your desktop account:
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http host '198.51.100.7'
gsettings set org.gnome.system.proxy.http port 8080
gsettings set org.gnome.system.proxy.https host '198.51.100.7'
gsettings set org.gnome.system.proxy.https port 8080
Set the https host too. Chrome uses GNOME's keys per kind of site: with only the http host filled in, every https site goes direct. Chrome watches the keys and picks up a change at once.
The key ignore-hosts holds the exceptions and starts as ['localhost', '127.0.0.0/8', '::1']. To add your own:
gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', '::1', '*.example.com']"
A login. Do not put the user name and password into the host key. Chrome ignores a login stored in GNOME's keys and asks for it in a window when the proxy requests one, and so does Firefox; type them there.
SOCKS5. Set only the SOCKS keys and leave the http and https hosts empty:
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks host '198.51.100.7'
gsettings set org.gnome.system.proxy.socks port 1080
Chrome uses the SOCKS host for everything only when it is the only one set, and treats it as SOCKS5. HTTP vs SOCKS5 explains the difference.
Firefox can also be set on its own, in Settings, Network Settings, Manual proxy configuration; our Firefox guide walks through it.
Step 2: apt
apt reads neither GNOME's keys nor, under sudo, your variables. Give it its own file:
sudo nano /etc/apt/apt.conf.d/95proxy
Acquire::http::Proxy "http://198.51.100.7:8080";
Acquire::https::Proxy "http://198.51.100.7:8080";
Pop!_OS 24.04 installs with plain http://apt.pop-os.org/release and http://apt.pop-os.org/ubuntu (6), so the http line is the one apt uses for Pop's own packages; the https line covers added repositories such as a browser's. Keep http:// in the https line: it names the kind of proxy, not the sites. An https:// proxy address makes apt open an encrypted connection to the proxy itself, which an ordinary proxy cannot answer.
With a login: "http://hp_ir4k2:9fa2c1@198.51.100.7:8080". For a SOCKS5 proxy, apt accepts "socks5h://198.51.100.7:1080" in both lines. apt reads the file on its next run:
sudo apt update
Step 3: terminal programs
curl, wget, git and most command-line tools read the proxy variables. The COSMIC login screen reads /etc/environment at every login, so put them there:
sudo nano /etc/environment
http_proxy="http://198.51.100.7:8080"
https_proxy="http://198.51.100.7:8080"
no_proxy="localhost,127.0.0.1"
HTTP_PROXY="http://198.51.100.7:8080"
HTTPS_PROXY="http://198.51.100.7:8080"
NO_PROXY="localhost,127.0.0.1"
No export in this file: it holds plain NAME="value" lines. Log out and back in. Once these variables exist, Firefox takes its proxy from them instead of from GNOME's keys, so keep the two the same. sudo resets the environment, which is why apt has its own file in Step 2.
A password with special characters
In apt's file and in /etc/environment the login sits inside the address, so characters that mean something in an address have to be percent-encoded:
| In the password | Write it as |
|---|---|
@ | %40 |
: (in the user name) | %3A |
/ | %2F |
% | %25 |
" | %22 |
apt decodes these back before it logs in, and so do curl and wget, so the proxy receives the password you were given. The browsers need none of this: they ask for the login in a window. The proxy format guide has the full list.
Pop!_OS 22.04
Pop!_OS 22.04 still runs GNOME, whose Settings has Network, Network Proxy. That screen writes the same org.gnome.system.proxy keys as Step 1, so either way works there. Steps 2 and 3 are the same on both versions.
Check that it worked
gsettings get org.gnome.system.proxy mode
env | grep -i _proxy
sudo apt update
curl -s https://www.cloudflare.com/cdn-cgi/trace | grep ^ip=
The first should say 'manual', the second shows the terminal's variables, the third proves apt reaches its mirrors, and the last shows the address the internet sees, which should be the proxy's. In Chrome or Firefox, open our IP lookup: it shows the address the browser goes out with and who owns it.
Mistakes other guides make
These come up in the pages and answers that rank for Pop!_OS, Ubuntu and apt proxy searches:
- "Open Settings, Network, Network Proxy." That is GNOME; COSMIC on Pop!_OS 24.04 has no such screen.
- Only
/etc/environmentfor the whole desktop. Chrome on COSMIC does not read the variables while GNOME's proxy mode is none. https://in front of the proxy address for apt. apt then talks encrypted to the proxy itself, which an ordinary proxy cannot answer.- A raw
@in the password. It also separates the login from the host; write%40. - "The user name and password are your computer's login." They are the proxy's.
- A command in
/etc/environment. The file holdsNAME="value"lines only.
Turning it off again
gsettings set org.gnome.system.proxy mode 'none'
sudo rm /etc/apt/apt.conf.d/95proxy
Remove the six proxy lines from /etc/environment, then log out and back in. To clear every GNOME proxy key at once, including old hosts that a program might still pick up: gsettings reset-recursively org.gnome.system.proxy.
How we wrote this
We did not install Pop!_OS for this page. We read the code that decides where the proxy comes from, on 4 October 2026: COSMIC Settings' network pages; Chromium's Linux proxy code and Firefox's Unix proxy code; GNOME's org.gnome.system.proxy schema; the Pop!_OS 24.04 image build (pop-os/iso) and desktop package list (pop-os/desktop); the COSMIC login screen's PAM file; apt 2.7.14's http method; and NetworkManager's proxy setting. The picture above is our own terminal reading of those sources.
Real problems come from Pop!_OS's own issue trackers: the missing proxy page in COSMIC Settings (two open issues), a release upgrade that bypassed apt's proxy, and the old Pop!_Shop failing after a proxy was set.
Limits: no command on this page ran on Pop!_OS. Whether programs started from the COSMIC dock also inherit /etc/environment was not traced, which is why the browsers are set through gsettings, which does not depend on it. Flatpak apps and the COSMIC Store were not read. COSMIC Settings may gain a proxy page; we will check again by April 2027.
Sources
All read on 4 October 2026.
- System76 cosmic-settings:
cosmic-settings/src/pages/networking(mod.rs, wired.rs, wifi.rs); issues 1311 and 1908 (github.com/pop-os/cosmic-settings). - Chromium:
net/proxy_resolution/proxy_config_service_linux.cc,base/nix/xdg_util.cc(chromium.googlesource.com). - Firefox:
toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp(github.com/mozilla-firefox/firefox). - GNOME gsettings-desktop-schemas:
org.gnome.system.proxy.gschema.xml.in. - System76:
pop-os/iso(config/pop-os/24.04.mk, mk/ubuntu.mk, mk/chroot.mk),pop-os/desktop(debian/control on master_noble),pop-os/cosmic-greeter(debian/cosmic-greeter.pam); issues pop-os/upgrade 134, pop-os/shop 304, pop-os/pop 2041. - apt 2.7.14:
methods/http.cc. - NetworkManager reference manual: the proxy setting.
- Wikipedia: Pop!_OS (release dates of 22.04 and 24.04).
- Our terminal reading of COSMIC Settings, Chromium, Firefox and the Pop!_OS image build, 4 October 2026.


