diff --git a/APPIMAGE.md b/APPIMAGE.md
index e6c71eb..cf32ba8 100644
--- a/APPIMAGE.md
+++ b/APPIMAGE.md
@@ -738,11 +738,11 @@ bundling format inside a `.deb` — legitimate, but then use `/opt` + `$ORIGIN`
- **apt gets strict in 26.04, not 24.04.** apt 3.2 uses Sequoia; `apt-key` is gone;
`Signed-By` must point at a dearmored keyring in `/usr/share/keyrings`, never
`/etc/apt/trusted.gpg.d` (which would trust our key for *all* repositories).
-- **Desktop-file naming**: `main.cpp:67` uses app id `network.ur.urnetwork` but the
+- **Desktop-file naming**: `main.cpp:67` uses app id `com.bringyour.network` but the
desktop file is `urnetwork.desktop`. Nothing is broken today
(`StartupWMClass` covers window association), but D-Bus activation — the clean way to
deliver a `urnetwork://` URI to a running instance — requires the names to match.
- Rename to `network.ur.urnetwork.desktop`.
+ Rename to `com.bringyour.network.desktop`.
### 10d. The recommended alternative, if the direction changes
@@ -903,7 +903,7 @@ working with no error anywhere — a changed type is a decode error, and a chang
in from `postinst` (IVPN's latent bug). **`install.sh` must run
`update-desktop-database` and `gtk-update-icon-cache` itself** — see the §5
callout for why this one silently passes testing and reaches users broken.
-- [ ] Rename the desktop file to `network.ur.urnetwork.desktop` to match
+- [ ] Rename the desktop file to `com.bringyour.network.desktop` to match
`main.cpp:67`'s app id. Harmless today, but D-Bus activation — the clean way to
hand a `urnetwork://` URI to a running instance — requires the names to match.
- [ ] Autostart via a root-owned **inert template** (`/etc/urnetwork/autostart/`) that
diff --git a/MIGRATION.md b/MIGRATION.md
index 30b9876..31f6c4f 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -37,12 +37,12 @@ a known follow-up, do not silently pretend loopback is private.
| `/usr/lib/urnetwork/libURnetworkSdk.so` | daemon pkg | rpath `$ORIGIN` |
| `/usr/bin/urnetwork` | daemon pkg | **launcher script**, the stable `Exec=` target |
| `/lib/systemd/system/urnetworkd.service` | daemon pkg | `/lib`, in every release's load path |
-| `/usr/share/applications/network.ur.urnetwork.desktop` | daemon pkg | filename **must** match `main.cpp`'s app id |
-| `/usr/share/icons/hicolor/{48x48,256x256}/apps/urnetwork.png` | daemon pkg | |
+| `/usr/share/applications/com.bringyour.network.desktop` | daemon pkg | filename **must** match `main.cpp`'s app id |
+| `/usr/share/icons/hicolor/{48x48,256x256}/apps/com.bringyour.network.png` | daemon pkg | |
| `/usr/share/urnetwork/world-110m.json` | daemon pkg | globe land outlines |
| `/usr/share/urnetwork/icons/urnetwork-tray-*.png` | daemon pkg | tray art |
| `/usr/share/locale//LC_MESSAGES/urnetwork.mo` | daemon pkg | gettext catalogs |
-| `/etc/urnetwork/autostart/network.ur.urnetwork.desktop` | daemon pkg | **inert template**, GUI symlinks it |
+| `/etc/urnetwork/autostart/com.bringyour.network.desktop` | daemon pkg | **inert template**, GUI symlinks it |
| `/etc/NetworkManager/conf.d/95-urnetwork.conf` | daemon pkg | `unmanaged-devices=interface-name:urnet0` |
| `/etc/udev/rules.d/85-urnetwork-unmanaged.rules` | daemon pkg | `ENV{NM_UNMANAGED}="1"` |
| `~/.local/lib/urnetwork/URnetwork.AppImage` | **user** | never packaged; must be user-writable |
diff --git a/PLAN.md b/PLAN.md
index 49c92b0..dedbcf5 100644
--- a/PLAN.md
+++ b/PLAN.md
@@ -302,7 +302,7 @@ than being the one platform that differs.
refreshed by **dpkg triggers**, no dependency or maintainer script needed; §9.7.1
covers `x-scheme-handler/urnetwork`. ⚠️ Triggers fire only for files **dpkg**
installs, so never symlink one in from `postinst` (IVPN's latent bug). Residual:
- `main.cpp:67`'s app id `network.ur.urnetwork` does not match
+ `main.cpp:67`'s app id `com.bringyour.network` does not match
`urnetwork.desktop`; harmless today, but D-Bus activation requires them to match.
- **R8 — GeoClue ≥ 2.7.0 is required for the location override** [confirmed]:
Ubuntu 22.04 (2.5.7) and Debian 12 (2.6.0) can **never** support it. Those users
diff --git a/app/meson.build b/app/meson.build
index 2fad86a..ccda761 100644
--- a/app/meson.build
+++ b/app/meson.build
@@ -305,30 +305,30 @@ endif
# host_integration=false (Flatpak) drops it with the rest: the GUI never calls
# polkit — the daemon does, against a subject the GUI cannot influence.
if host_integration
-install_data('..' / 'packaging' / 'polkit' / 'network.ur.urnetwork.policy',
+install_data('..' / 'packaging' / 'polkit' / 'com.bringyour.network.policy',
install_dir : get_option('datadir') / 'polkit-1' / 'actions')
endif
-# desktop file: the filename MUST match main.cpp's app id network.ur.urnetwork
+# desktop file: the filename MUST match main.cpp's app id com.bringyour.network
# (D-Bus activation requires it; APPIMAGE.md §11d)
-install_data('packaging/network.ur.urnetwork.desktop',
+install_data('packaging/com.bringyour.network.desktop',
install_dir : get_option('datadir') / 'applications')
# AppStream metadata — required by Flathub, read by GNOME Software / Discover
# for the .deb and .rpm too. The component id matches the .desktop basename.
-install_data('packaging/network.ur.urnetwork.metainfo.xml',
+install_data('packaging/com.bringyour.network.metainfo.xml',
install_dir : get_option('datadir') / 'metainfo')
-# hicolor icons (Icon=urnetwork in the desktop file)
-install_data('packaging/icons/hicolor/48x48/apps/urnetwork.png',
+# hicolor icons (Icon=com.bringyour.network in the desktop file)
+install_data('packaging/icons/hicolor/48x48/apps/com.bringyour.network.png',
install_dir : get_option('datadir') / 'icons' / 'hicolor' / '48x48' / 'apps')
-install_data('packaging/icons/hicolor/256x256/apps/urnetwork.png',
+install_data('packaging/icons/hicolor/256x256/apps/com.bringyour.network.png',
install_dir : get_option('datadir') / 'icons' / 'hicolor' / '256x256' / 'apps')
# autostart INERT TEMPLATE: root-owned under /etc/urnetwork/autostart/, where
# no desktop reads it; the GUI symlinks it into ~/.config/autostart atomically
if host_integration
-install_data('packaging/autostart/network.ur.urnetwork.desktop',
+install_data('packaging/autostart/com.bringyour.network.desktop',
install_dir : '/etc/urnetwork/autostart')
endif
diff --git a/app/packaging/autostart/network.ur.urnetwork.desktop b/app/packaging/autostart/com.bringyour.network.desktop
similarity index 96%
rename from app/packaging/autostart/network.ur.urnetwork.desktop
rename to app/packaging/autostart/com.bringyour.network.desktop
index ac7d01f..31b99cd 100644
--- a/app/packaging/autostart/network.ur.urnetwork.desktop
+++ b/app/packaging/autostart/com.bringyour.network.desktop
@@ -2,7 +2,7 @@
Type=Application
Name=URnetwork
Comment=URnetwork VPN
-Icon=urnetwork
+Icon=com.bringyour.network
Exec=urnetwork
# TryExec self-disables this entry once the daemon package (and with it the
# launcher) is removed, so a stale symlink cannot error at every login.
diff --git a/app/packaging/network.ur.urnetwork.desktop b/app/packaging/com.bringyour.network.desktop
similarity index 93%
rename from app/packaging/network.ur.urnetwork.desktop
rename to app/packaging/com.bringyour.network.desktop
index 63e8327..e592abc 100644
--- a/app/packaging/network.ur.urnetwork.desktop
+++ b/app/packaging/com.bringyour.network.desktop
@@ -2,7 +2,7 @@
Type=Application
Name=URnetwork
Comment=URnetwork VPN
-Icon=urnetwork
+Icon=com.bringyour.network
# /usr/bin/urnetwork is the launcher script the daemon package installs; it
# finds the user's AppImage (search order in MIGRATION.md) and execs it with
# the same arguments. Keeping Exec= on a stable, package-managed path is what
@@ -13,7 +13,7 @@ Terminal=false
Categories=Network;Security;
Keywords=VPN;URnetwork;proxy;privacy;
StartupNotify=true
-StartupWMClass=network.ur.urnetwork
+StartupWMClass=com.bringyour.network
# Register the urnetwork:// scheme so OAuth/SSO callbacks and wallet deep
# links route back to the app. Shipped as a plain dpkg file so the
# desktop-file-utils dpkg trigger refreshes mimeinfo.cache automatically
diff --git a/app/packaging/network.ur.urnetwork.metainfo.xml b/app/packaging/com.bringyour.network.metainfo.xml
similarity index 93%
rename from app/packaging/network.ur.urnetwork.metainfo.xml
rename to app/packaging/com.bringyour.network.metainfo.xml
index 409e1e0..6770f1e 100644
--- a/app/packaging/network.ur.urnetwork.metainfo.xml
+++ b/app/packaging/com.bringyour.network.metainfo.xml
@@ -2,7 +2,7 @@
- network.ur.urnetwork
+ com.bringyour.network
URnetwork
Private, decentralized VPN powered by a peer network
@@ -45,7 +45,7 @@
- network.ur.urnetwork.desktop
+ com.bringyour.network.desktop
https://ur.io
https://github.com/urnetwork/urnetwork-linux/issues
diff --git a/app/packaging/icons/hicolor/256x256/apps/urnetwork.png b/app/packaging/icons/hicolor/256x256/apps/com.bringyour.network.png
similarity index 100%
rename from app/packaging/icons/hicolor/256x256/apps/urnetwork.png
rename to app/packaging/icons/hicolor/256x256/apps/com.bringyour.network.png
diff --git a/app/packaging/icons/hicolor/48x48/apps/urnetwork.png b/app/packaging/icons/hicolor/48x48/apps/com.bringyour.network.png
similarity index 100%
rename from app/packaging/icons/hicolor/48x48/apps/urnetwork.png
rename to app/packaging/icons/hicolor/48x48/apps/com.bringyour.network.png
diff --git a/app/snap/snapcraft.yaml b/app/snap/snapcraft.yaml
index 43a049f..ced14b0 100644
--- a/app/snap/snapcraft.yaml
+++ b/app/snap/snapcraft.yaml
@@ -49,7 +49,7 @@ apps:
urnetwork:
command: usr/bin/urnetwork
extensions: [gnome] # GTK4/libadwaita runtime, themes, portals, wayland/x11
- common-id: network.ur.urnetwork
+ common-id: com.bringyour.network
desktop: usr/share/applications/urnetwork.desktop
plugs:
- network # outbound sockets (SDK platform + provider traffic)
diff --git a/app/src/ControlProtocol.hpp b/app/src/ControlProtocol.hpp
index 078d762..985f566 100644
--- a/app/src/ControlProtocol.hpp
+++ b/app/src/ControlProtocol.hpp
@@ -108,14 +108,14 @@ inline constexpr const char* kControlGroupName = "urnetwork";
// policy file absent -> byte-for-byte today's behaviour: 0660
// root:urnetwork and AuthorizeControlPeer.
inline constexpr const char* kPolkitPolicyPath =
- "/usr/share/polkit-1/actions/network.ur.urnetwork.policy";
+ "/usr/share/polkit-1/actions/com.bringyour.network.policy";
// The immutable-host twin. ostree/bootc machines mount /usr read-only, so the
// tarball installer maps its whole payload under /usr/local — and polkit has
// read both directories since 124. ControlServer::PolicyPath() probes this one
// FIRST; without it the daemon looks in the one place the file cannot be on
// Bazzite/Silverblue/Kinoite/SteamOS and silently falls back to the group.
inline constexpr const char* kPolkitPolicyPathLocal =
- "/usr/local/share/polkit-1/actions/network.ur.urnetwork.policy";
+ "/usr/local/share/polkit-1/actions/com.bringyour.network.policy";
// HelloReply::auth_mode — which authority this daemon actually latched at
// start. The GUI needs it because the "add yourself to the urnetwork group,
@@ -125,16 +125,16 @@ inline constexpr const char* kAuthModePolkit = "polkit";
inline constexpr const char* kAuthModeGroup = "group";
// The four polkit action ids, namespaced to the app id. Shipped in
-// packaging/polkit/network.ur.urnetwork.policy (0644 root:root — polkit
+// packaging/polkit/com.bringyour.network.policy (0644 root:root — polkit
// ignores group- or world-writable action files). They are checked by
// urnetworkd, never by the GUI: the subject is built from SO_PEERCRED on the
// connection being served, so a client can neither nominate its own subject
// nor skip the check by not asking.
-inline constexpr const char* kActionControlTunnel = "network.ur.urnetwork.control-tunnel";
+inline constexpr const char* kActionControlTunnel = "com.bringyour.network.control-tunnel";
inline constexpr const char* kActionManageKillSwitch =
- "network.ur.urnetwork.manage-kill-switch";
-inline constexpr const char* kActionTakeOverTunnel = "network.ur.urnetwork.take-over-tunnel";
-inline constexpr const char* kActionReadLog = "network.ur.urnetwork.read-log";
+ "com.bringyour.network.manage-kill-switch";
+inline constexpr const char* kActionTakeOverTunnel = "com.bringyour.network.take-over-tunnel";
+inline constexpr const char* kActionReadLog = "com.bringyour.network.read-log";
// The SDK's built-in default device-RPC address (sdk/device_rpc.go:109,
// deviceRpcDefaultAddress = "127.0.0.1:12025"). Kept as a NAMED CONSTANT ONLY,
diff --git a/app/src/MainWindow.cpp b/app/src/MainWindow.cpp
index 22e496e..9a424b6 100644
--- a/app/src/MainWindow.cpp
+++ b/app/src/MainWindow.cpp
@@ -517,7 +517,7 @@ void MainWindow::BuildChrome() {
if (auto logo = BrandLogoTexture()) {
icon->set(logo);
} else {
- icon->set_from_icon_name("urnetwork");
+ icon->set_from_icon_name(kAppIconName);
}
icon->set_pixel_size(20);
brand->append(*icon);
diff --git a/app/src/SecretServiceRpcSessionStore.cpp b/app/src/SecretServiceRpcSessionStore.cpp
index 325fe40..664286a 100644
--- a/app/src/SecretServiceRpcSessionStore.cpp
+++ b/app/src/SecretServiceRpcSessionStore.cpp
@@ -12,7 +12,13 @@ namespace {
constexpr int kSecretPayloadVersion = 1;
constexpr size_t kMaxSecretPayloadBytes = 256 * 1024;
-constexpr const char* kApplicationAttribute = "network.ur.urnetwork";
+// The keyring attribute that scopes our secrets. Renamed with the app ID, so
+// an entry written by an older build is not found by this one and the app
+// falls back to a fresh RPC session — the same one-time cost as the Flatpak
+// data path moving. Deliberately NOT dual-read: keeping the old attribute
+// alive would leave the previous app identity holding live key material in the
+// user's keyring with nothing left to clean it up.
+constexpr const char* kApplicationAttribute = "com.bringyour.network";
const SecretSchema kRpcSessionSchema = [] {
// Zero-initialize libsecret's reserved ABI fields explicitly. A short C
diff --git a/app/src/UrTheme.cpp b/app/src/UrTheme.cpp
index db6d024..44573d0 100644
--- a/app/src/UrTheme.cpp
+++ b/app/src/UrTheme.cpp
@@ -369,7 +369,8 @@ Glib::RefPtr BrandLogoTexture() {
const std::string dir = BrandIconDir();
if (dir.empty()) return cached;
for (const char* size : {"256x256", "48x48"}) {
- const std::string path = dir + "/hicolor/" + size + "/apps/urnetwork.png";
+ const std::string path =
+ dir + "/hicolor/" + size + "/apps/" + kAppIconName + ".png";
if (!g_file_test(path.c_str(), G_FILE_TEST_IS_REGULAR)) continue;
try {
cached = Gdk::Texture::create_from_filename(path);
@@ -378,7 +379,7 @@ Glib::RefPtr BrandLogoTexture() {
g_warning("brand logo: %s failed to load: %s", path.c_str(), e.what());
}
}
- g_warning("brand logo: no urnetwork.png under %s", dir.c_str());
+ g_warning("brand logo: no %s.png under %s", kAppIconName, dir.c_str());
return cached;
}
diff --git a/app/src/UrTheme.hpp b/app/src/UrTheme.hpp
index 7341792..de5e00f 100644
--- a/app/src/UrTheme.hpp
+++ b/app/src/UrTheme.hpp
@@ -34,10 +34,20 @@ void LoadBrandFonts();
// Install the brand CSS provider once per display. Safe to call repeatedly.
void EnsureBrandCss();
+// The app icon's basename AND its icon-theme name: the packaging installs
+// /icons/hicolor//apps/.png, and the .desktop's
+// Icon= key names the same string. It lives here as ONE constant because it was
+// previously spelled as a literal in two places -- the by-path load in
+// UrTheme.cpp and the by-name fallback in MainWindow.cpp -- and the rename to
+// the reverse-DNS app id caught only the packaging, so both lookups missed and
+// the title-bar logo went blank with no error. Flatpak additionally REQUIRES
+// this to equal the app id, or it exports no icon at all.
+inline constexpr const char* kAppIconName = "com.bringyour.network";
+
// Register the app's hicolor icon directory with the default icon theme so
-// the icon NAME "urnetwork" resolves (window icon, tray, .desktop matching)
+// the icon NAME "com.bringyour.network" resolves (window icon, tray, .desktop matching)
// even when the app runs from a build tree or a relocated AppImage. Without
-// this, set_from_icon_name("urnetwork") silently renders a BLANK image —
+// this, set_from_icon_name("com.bringyour.network") silently renders a BLANK image —
// which is exactly how the title-bar logo came out empty. Idempotent.
void RegisterBrandIcons();
diff --git a/app/src/main.cpp b/app/src/main.cpp
index 6eb543f..dc33838 100644
--- a/app/src/main.cpp
+++ b/app/src/main.cpp
@@ -78,7 +78,7 @@ int main(int argc, char** argv) {
// the window with the app (and the hide-to-tray window keeps its identity).
// HANDLES_OPEN: the single instance receives urnetwork:// deep links (wallet
// callbacks) via signal_open — the .desktop registers x-scheme-handler/urnetwork.
- auto app = Gtk::Application::create("network.ur.urnetwork",
+ auto app = Gtk::Application::create("com.bringyour.network",
Gio::Application::Flags::HANDLES_OPEN);
// Hold the application so it survives with only the tray (window hidden).
@@ -98,7 +98,7 @@ int main(int argc, char** argv) {
// missing face fails silently to the fallback font (windows parity).
urnw::LoadBrandFonts();
urnw::EnsureBrandCss();
- // the icon NAME "urnetwork" must resolve for the window icon and the
+ // the icon NAME kAppIconName must resolve for the window icon and the
// tray, wherever the app runs from
urnw::RegisterBrandIcons();
diff --git a/docs/TESTING-CACHYOS.md b/docs/TESTING-CACHYOS.md
index 3cc0da3..f3a9705 100644
--- a/docs/TESTING-CACHYOS.md
+++ b/docs/TESTING-CACHYOS.md
@@ -1094,7 +1094,7 @@ cd urnetwork-linux
### 10.2 Run it
```bash
-flatpak run network.ur.urnetwork
+flatpak run com.bringyour.network
```
### 10.3 What is different from the AppImage — and what to test because of it
@@ -1121,7 +1121,7 @@ inode, and every `connect()` fails with `EACCES` — which historically got repo
as a group-membership problem. The app now detects this and says so instead. To test it:
```bash
-flatpak run network.ur.urnetwork & # leave it running
+flatpak run com.bringyour.network & # leave it running
sudo systemctl restart urnetworkd
# now press Connect in the Flatpak GUI
```
@@ -1187,7 +1187,7 @@ Plus, separately:
* **The full `--selftest-egress` output and its exit code** (§5.2). Always.
* **The app's own log** — the `connect:` lines. From a terminal launch that is `gui.log` from
§7.1; otherwise `journalctl --user -b | grep -E 'urnetwork|connect:'`, or for the Flatpak,
- `flatpak run network.ur.urnetwork 2>&1 | tee flatpak-gui.log`.
+ `flatpak run com.bringyour.network 2>&1 | tee flatpak-gui.log`.
* **The installer's full output** (§4 dry-run and §6 real run).
**Use `stat -c %C`, never `ls -Z`.** On a machine with no SELinux, `ls -Z` prints `?` and
@@ -1208,7 +1208,7 @@ tunnel addresses (`169.254.x.x`) are fine and are useful to us.
sudo systemctl stop urnetworkd
sudo /usr/lib/urnetwork/uninstall.sh # add --purge to also remove state + group
rm -f ~/.local/lib/urnetwork/URnetwork.AppImage
-flatpak uninstall --user network.ur.urnetwork
+flatpak uninstall --user com.bringyour.network
```
Then confirm the machine is back to normal:
diff --git a/docs/linux_agent_help.md b/docs/linux_agent_help.md
index 5606c9d..4508e4a 100644
--- a/docs/linux_agent_help.md
+++ b/docs/linux_agent_help.md
@@ -1803,7 +1803,7 @@ single-process model existed only under Snap and is dead). ~17.8k lines of C++ a
`urnetwork_sdk.hpp` wrapper as Windows. Holds `urnet::DeviceRemote` + a control-socket
client. Ships as a **user AppImage in a user-writable path** with a `/usr/bin/urnetwork`
launcher-script indirection; never installed by a package (meson `install_rpath
- '$ORIGIN/../lib'`). App id `network.ur.urnetwork`; GApplication HANDLES_OPEN deep links;
+ '$ORIGIN/../lib'`). App id `com.bringyour.network`; GApplication HANDLES_OPEN deep links;
hide-to-tray; forces `ADW_COLOR_SCHEME_FORCE_DARK`; runtime-resolved `bindtextdomain`.
- **`urnetworkd`** — root daemon, **no GTK of any kind** (glib GMainLoop + gio + json + SDK;
`-static-libstdc++ -static-libgcc`). Holds `DeviceLocal(enable_rpc=true)`, opens
@@ -1898,8 +1898,8 @@ replacing it, keeping its version/SDK-match enforcement.
`urnetworkd.service` (Type=notify, After/Wants `network-pre.target`,
`RuntimeDirectory=urnetwork` 0750, `StateDirectory`/`LogsDirectory` 0700,
`NoNewPrivileges`, `ProtectHome`, `Restart=on-failure`/`RestartSec=2`),
- `network.ur.urnetwork.desktop` (`Exec=urnetwork %u`,
- `MimeType=x-scheme-handler/urnetwork;`, `StartupWMClass=network.ur.urnetwork`),
+ `com.bringyour.network.desktop` (`Exec=urnetwork %u`,
+ `MimeType=x-scheme-handler/urnetwork;`, `StartupWMClass=com.bringyour.network`),
`urnetwork-launcher` (installed `/usr/bin/urnetwork`; search order `$URNETWORK_APPIMAGE` →
`~/.local/lib/urnetwork/URnetwork.AppImage` → `~/Applications/URnetwork*.AppImage` newest →
`/usr/lib/urnetwork/URnetwork.AppImage` → `urnetwork-gui` on PATH; exit 127 with install
@@ -1947,7 +1947,7 @@ Files that ARE snap support (delete):
- `linux:app/snap/snapcraft.yaml` — the whole file (114 lines). Already carries a SUPERSEDED
banner ("NOT BUILT, NOT SHIPPED... describes the SINGLE-PROCESS architecture... Do not
resurrect as-is"); it is also **broken** — it organizes `packaging/urnetwork.desktop`,
- which was renamed to `network.ur.urnetwork.desktop`, and its `version: "0.0.0"` sed
+ which was renamed to `com.bringyour.network.desktop`, and its `version: "0.0.0"` sed
stamping mechanism is gone. It was retained only because "Snap Store as secondary channel"
was left open (`APPIMAGE.md` §8 item 5); that door is now closed.
- `linux:app/.gitignore` lines 8–11: `*.snap`, `parts/`, `prime/`, `stage/`.
@@ -2139,7 +2139,7 @@ EOL ~yearly — plan an annual runtime bump.
- polkit: actions as XML `.policy` in `/usr/share/polkit-1/actions/`; the daemon checks each
privileged request via `CheckAuthorization` (CLI form `pkcheck`), passing request variables
so admins can write rules. Proposed action split (tiering idiom is standard; names are our
- proposal): `network.ur.urnetwork.connect`/`.disconnect` → `allow_active=yes`;
+ proposal): `com.bringyour.network.connect`/`.disconnect` → `allow_active=yes`;
`.install-daemon`, `.set-killswitch`, `.clear-blocking` → `auth_admin_keep`. Simpler
alternative used by Mullvad/Tailscale: socket file mode + group membership (already the
linux: model — group `urnetwork`); reasonable default, with polkit/pkexec reserved for the
diff --git a/packaging/deb/nfpm.yaml b/packaging/deb/nfpm.yaml
index f2d8605..4877706 100644
--- a/packaging/deb/nfpm.yaml
+++ b/packaging/deb/nfpm.yaml
@@ -97,7 +97,7 @@ contents:
# APPIMAGE.md 11d).
#
# The polkit action file rides inside this same /usr tree, at
- # usr/share/polkit-1/actions/network.ur.urnetwork.policy, put there by
+ # usr/share/polkit-1/actions/com.bringyour.network.policy, put there by
# linux/packaging/lib/common.sh (assemble_daemon_root), which also asserts
# its 0644 mode before the package is built. It is deliberately NOT given a
# second explicit contents entry: nfpm would then emit the path twice, and
@@ -112,8 +112,8 @@ contents:
dst: /lib
type: tree
# Admin-editable integration files: conffiles, preserved on upgrade.
- - src: "${PKGROOT}/etc/urnetwork/autostart/network.ur.urnetwork.desktop"
- dst: /etc/urnetwork/autostart/network.ur.urnetwork.desktop
+ - src: "${PKGROOT}/etc/urnetwork/autostart/com.bringyour.network.desktop"
+ dst: /etc/urnetwork/autostart/com.bringyour.network.desktop
type: config
- src: "${PKGROOT}/etc/NetworkManager/conf.d/95-urnetwork.conf"
dst: /etc/NetworkManager/conf.d/95-urnetwork.conf
diff --git a/packaging/deb/scripts/postinst b/packaging/deb/scripts/postinst
index ff6ebae..cc2e41b 100644
--- a/packaging/deb/scripts/postinst
+++ b/packaging/deb/scripts/postinst
@@ -57,7 +57,7 @@ case "$1" in
# Which authority this machine will run under, said out loud.
#
# DETECTED BY LOOKING FOR POLKIT, NOT FOR OUR OWN ACTION FILE: dpkg has
- # already unpacked /usr/share/polkit-1/actions/network.ur.urnetwork
+ # already unpacked /usr/share/polkit-1/actions/com.bringyour.network
# .policy by the time this runs (and created that directory on the way),
# so testing the file or the directory would report "polkit" on a box
# that has never had it. polkitd is a Recommends, so apt pulls it in by
@@ -88,7 +88,7 @@ case "$1" in
# from the package tree; assert it rather than assume it, and check the
# directory too (polkit does not police the directory, and whoever can
# write it can drop in a file that redefines our defaults).
- UR_POLICY=/usr/share/polkit-1/actions/network.ur.urnetwork.policy
+ UR_POLICY=/usr/share/polkit-1/actions/com.bringyour.network.policy
if [ -f "${UR_POLICY}" ]; then
chmod 0644 "${UR_POLICY}" 2>/dev/null || true
chown root:root "${UR_POLICY}" 2>/dev/null || true
diff --git a/packaging/distro-smoke.sh b/packaging/distro-smoke.sh
index fdd923c..b8a064b 100755
--- a/packaging/distro-smoke.sh
+++ b/packaging/distro-smoke.sh
@@ -347,7 +347,7 @@ if have flatpak; then
FP_REMOTES="${FP_REMOTES%% }"
check 2.2 ok "flatpak" "present; remotes: ${FP_REMOTES:-}"
note "No .flatpak bundle is published in the release yet either -- the manifest"
- note "at packaging/flatpak/network.ur.urnetwork.yml builds one locally."
+ note "at packaging/flatpak/com.bringyour.network.yml builds one locally."
else
check 2.2 n/a "flatpak" "not installed (only matters for the GUI, never the daemon)"
fi
@@ -922,8 +922,8 @@ fi
GUI_FOUND=''
[ -x /usr/bin/urnetwork ] && GUI_FOUND="/usr/bin/urnetwork"
[ -x /usr/local/bin/urnetwork ] && GUI_FOUND="${GUI_FOUND} /usr/local/bin/urnetwork"
-if have flatpak && flatpak list --app --columns=application 2>/dev/null | grep -qx 'network.ur.urnetwork'; then
- GUI_FOUND="${GUI_FOUND} flatpak:network.ur.urnetwork"
+if have flatpak && flatpak list --app --columns=application 2>/dev/null | grep -qx 'com.bringyour.network'; then
+ GUI_FOUND="${GUI_FOUND} flatpak:com.bringyour.network"
fi
if [ -n "${GUI_FOUND}" ]; then
check 9.6 ok "GUI" "${GUI_FOUND# }"
diff --git a/packaging/flatpak/network.ur.urnetwork.yml b/packaging/flatpak/com.bringyour.network.yml
similarity index 97%
rename from packaging/flatpak/network.ur.urnetwork.yml
rename to packaging/flatpak/com.bringyour.network.yml
index 7bc1238..7be0e0a 100644
--- a/packaging/flatpak/network.ur.urnetwork.yml
+++ b/packaging/flatpak/com.bringyour.network.yml
@@ -23,8 +23,8 @@
# LOCAL INSTALL (the current target — Flathub submission comes later):
# flatpak install -y flathub org.gnome.Platform//49 org.gnome.Sdk//49
# flatpak run org.flatpak.Builder --force-clean --user --install \
-# build-flatpak packaging/flatpak/network.ur.urnetwork.yml
-# flatpak run network.ur.urnetwork
+# build-flatpak packaging/flatpak/com.bringyour.network.yml
+# flatpak run com.bringyour.network
#
# FOR FLATHUB, two changes are required and are deliberately NOT made here:
# 1. `sources: [{type: dir, path: ../..}]` must become a git/archive source
@@ -34,7 +34,7 @@
# redistribution; that audit (§7.17) must land before submission.
#
# SPDX-License-Identifier: MPL-2.0
-id: network.ur.urnetwork
+id: com.bringyour.network
runtime: org.gnome.Platform
runtime-version: '49'
sdk: org.gnome.Sdk
@@ -192,9 +192,9 @@ modules:
# no AppImage here and no /usr/bin to put a launcher in, so the Flatpak
# runs the GUI binary directly.
- desktop-file-edit --set-key=Exec --set-value="urnetwork-gui %u"
- /app/share/applications/network.ur.urnetwork.desktop
+ /app/share/applications/com.bringyour.network.desktop
- desktop-file-edit --remove-key=TryExec
- /app/share/applications/network.ur.urnetwork.desktop
+ /app/share/applications/com.bringyour.network.desktop
sources:
# LOCAL SOURCE — replace with a git/archive source before any Flathub
# submission (see the header). The path is relative to this manifest.
diff --git a/packaging/lib/common.sh b/packaging/lib/common.sh
index 2f58e19..f40bdae 100644
--- a/packaging/lib/common.sh
+++ b/packaging/lib/common.sh
@@ -124,11 +124,11 @@ assemble_daemon_root() {
# --- static integration files: canonical sources in app/packaging -------
local src="${APP_PACKAGING_DIR}"
local f
- for f in urnetwork-launcher urnetworkd.service network.ur.urnetwork.desktop \
- autostart/network.ur.urnetwork.desktop 95-urnetwork.conf \
+ for f in urnetwork-launcher urnetworkd.service com.bringyour.network.desktop \
+ autostart/com.bringyour.network.desktop 95-urnetwork.conf \
85-urnetwork-unmanaged.rules \
- icons/hicolor/48x48/apps/urnetwork.png \
- icons/hicolor/256x256/apps/urnetwork.png; do
+ icons/hicolor/48x48/apps/com.bringyour.network.png \
+ icons/hicolor/256x256/apps/com.bringyour.network.png; do
[ -f "${src}/${f}" ] || die "packaging source missing: ${src}/${f}"
done
@@ -140,17 +140,17 @@ assemble_daemon_root() {
cp "${src}/urnetworkd.service" "${root}/lib/systemd/system/urnetworkd.service"
install -d "${root}/usr/share/applications"
- cp "${src}/network.ur.urnetwork.desktop" "${root}/usr/share/applications/"
+ cp "${src}/com.bringyour.network.desktop" "${root}/usr/share/applications/"
install -d "${root}/usr/share/icons/hicolor/48x48/apps" \
"${root}/usr/share/icons/hicolor/256x256/apps"
- cp "${src}/icons/hicolor/48x48/apps/urnetwork.png" \
- "${root}/usr/share/icons/hicolor/48x48/apps/urnetwork.png"
- cp "${src}/icons/hicolor/256x256/apps/urnetwork.png" \
- "${root}/usr/share/icons/hicolor/256x256/apps/urnetwork.png"
+ cp "${src}/icons/hicolor/48x48/apps/com.bringyour.network.png" \
+ "${root}/usr/share/icons/hicolor/48x48/apps/com.bringyour.network.png"
+ cp "${src}/icons/hicolor/256x256/apps/com.bringyour.network.png" \
+ "${root}/usr/share/icons/hicolor/256x256/apps/com.bringyour.network.png"
install -d "${root}/etc/urnetwork/autostart"
- cp "${src}/autostart/network.ur.urnetwork.desktop" "${root}/etc/urnetwork/autostart/"
+ cp "${src}/autostart/com.bringyour.network.desktop" "${root}/etc/urnetwork/autostart/"
install -d "${root}/etc/NetworkManager/conf.d"
cp "${src}/95-urnetwork.conf" "${root}/etc/NetworkManager/conf.d/"
@@ -174,11 +174,11 @@ assemble_daemon_root() {
# world-writable .policy file, so a wrong mode here does not fail loudly,
# it silently drops every action back to its built-in default. The mode
# normalization below sets it; the assertion after it proves it.
- [ -f "${PACKAGING_DIR}/polkit/network.ur.urnetwork.policy" ] || \
- die "packaging source missing: ${PACKAGING_DIR}/polkit/network.ur.urnetwork.policy"
+ [ -f "${PACKAGING_DIR}/polkit/com.bringyour.network.policy" ] || \
+ die "packaging source missing: ${PACKAGING_DIR}/polkit/com.bringyour.network.policy"
install -d "${root}/usr/share/polkit-1/actions"
- cp "${PACKAGING_DIR}/polkit/network.ur.urnetwork.policy" \
- "${root}/usr/share/polkit-1/actions/network.ur.urnetwork.policy"
+ cp "${PACKAGING_DIR}/polkit/com.bringyour.network.policy" \
+ "${root}/usr/share/polkit-1/actions/com.bringyour.network.policy"
# Normalize modes: directories 0755; everything except the two
# executables 0644 (shared libraries ship 0644 on Debian).
@@ -191,7 +191,7 @@ assemble_daemon_root() {
# and skips the file), and the visible symptom would be "every Connect asks
# for an admin password" long after the build.
local policy_mode
- policy_mode="$(_file_mode_octal "${root}/usr/share/polkit-1/actions/network.ur.urnetwork.policy")"
+ policy_mode="$(_file_mode_octal "${root}/usr/share/polkit-1/actions/com.bringyour.network.policy")"
[ "${policy_mode}" = '644' ] || \
die "polkit action file is mode ${policy_mode}, must be 644 (polkit ignores a group- or world-writable .policy)"
}
diff --git a/packaging/make-appimage.sh b/packaging/make-appimage.sh
index a283e0d..e064097 100755
--- a/packaging/make-appimage.sh
+++ b/packaging/make-appimage.sh
@@ -188,22 +188,22 @@ done < <(find "${STAGING}/usr/share/locale" -type f -name 'urnetwork.mo' 2>/dev/
# Desktop entry: same app-id filename as the system one (wayland app_id ->
# icon association), but Exec points at the bundled binary -- inside the
# AppDir the launcher script does not exist. AppRun is what actually runs.
-DESKTOP_SRC="${APP_PACKAGING_DIR}/network.ur.urnetwork.desktop"
+DESKTOP_SRC="${APP_PACKAGING_DIR}/com.bringyour.network.desktop"
[ -f "${DESKTOP_SRC}" ] || die "missing ${DESKTOP_SRC}"
install -d "${APPDIR}/usr/share/applications"
sed -e 's/^Exec=urnetwork /Exec=urnetwork-gui /' \
-e 's/^TryExec=urnetwork$/TryExec=urnetwork-gui/' \
- "${DESKTOP_SRC}" > "${APPDIR}/usr/share/applications/network.ur.urnetwork.desktop"
-printf 'X-AppImage-Version=%s\n' "${VERSION}" >> "${APPDIR}/usr/share/applications/network.ur.urnetwork.desktop"
-cp "${APPDIR}/usr/share/applications/network.ur.urnetwork.desktop" "${APPDIR}/network.ur.urnetwork.desktop"
+ "${DESKTOP_SRC}" > "${APPDIR}/usr/share/applications/com.bringyour.network.desktop"
+printf 'X-AppImage-Version=%s\n' "${VERSION}" >> "${APPDIR}/usr/share/applications/com.bringyour.network.desktop"
+cp "${APPDIR}/usr/share/applications/com.bringyour.network.desktop" "${APPDIR}/com.bringyour.network.desktop"
install -d "${APPDIR}/usr/share/icons/hicolor/256x256/apps" "${APPDIR}/usr/share/icons/hicolor/48x48/apps"
-install -m 0644 "${APP_PACKAGING_DIR}/icons/hicolor/256x256/apps/urnetwork.png" \
- "${APPDIR}/usr/share/icons/hicolor/256x256/apps/urnetwork.png"
-install -m 0644 "${APP_PACKAGING_DIR}/icons/hicolor/48x48/apps/urnetwork.png" \
- "${APPDIR}/usr/share/icons/hicolor/48x48/apps/urnetwork.png"
-install -m 0644 "${APP_PACKAGING_DIR}/icons/hicolor/256x256/apps/urnetwork.png" "${APPDIR}/urnetwork.png"
-cp "${APPDIR}/urnetwork.png" "${APPDIR}/.DirIcon"
+install -m 0644 "${APP_PACKAGING_DIR}/icons/hicolor/256x256/apps/com.bringyour.network.png" \
+ "${APPDIR}/usr/share/icons/hicolor/256x256/apps/com.bringyour.network.png"
+install -m 0644 "${APP_PACKAGING_DIR}/icons/hicolor/48x48/apps/com.bringyour.network.png" \
+ "${APPDIR}/usr/share/icons/hicolor/48x48/apps/com.bringyour.network.png"
+install -m 0644 "${APP_PACKAGING_DIR}/icons/hicolor/256x256/apps/com.bringyour.network.png" "${APPDIR}/com.bringyour.network.png"
+cp "${APPDIR}/com.bringyour.network.png" "${APPDIR}/.DirIcon"
install -m 0755 "${SCRIPT_DIR}/appimage/AppRun" "${APPDIR}/AppRun"
diff --git a/packaging/make-flatpak.sh b/packaging/make-flatpak.sh
index c92da22..722431a 100755
--- a/packaging/make-flatpak.sh
+++ b/packaging/make-flatpak.sh
@@ -5,7 +5,7 @@
# /dev/net/tun, no CAP_NET_ADMIN and no way to install a system unit. The app
# reaches the HOST's urnetworkd over /run/urnetwork/control.sock, which the
# manifest exposes read-only (Trayscale's pattern). Install the daemon from the
-# native .deb/.rpm — see packaging/flatpak/network.ur.urnetwork.yml for the
+# native .deb/.rpm — see packaging/flatpak/com.bringyour.network.yml for the
# full reasoning.
#
# Works on an immutable host (Bazzite/Silverblue): flatpak-builder itself runs
@@ -20,8 +20,8 @@
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
-MANIFEST="${MANIFEST:-$REPO_ROOT/packaging/flatpak/network.ur.urnetwork.yml}"
-APP_ID="network.ur.urnetwork"
+MANIFEST="${MANIFEST:-$REPO_ROOT/packaging/flatpak/com.bringyour.network.yml}"
+APP_ID="com.bringyour.network"
RUNTIME_VERSION="${RUNTIME_VERSION:-49}"
# The build dir MUST live inside the repo. flatpak-builder runs sandboxed and
# gets a PRIVATE /tmp, so a build dir under the host's /tmp vanishes between
diff --git a/packaging/polkit/network.ur.urnetwork.policy b/packaging/polkit/com.bringyour.network.policy
similarity index 95%
rename from packaging/polkit/network.ur.urnetwork.policy
rename to packaging/polkit/com.bringyour.network.policy
index b33e2ba..d6c0c5f 100644
--- a/packaging/polkit/network.ur.urnetwork.policy
+++ b/packaging/polkit/com.bringyour.network.policy
@@ -2,7 +2,7 @@
-
+
Connect or disconnect the URnetwork VPN
Authentication is required to route this device's traffic through URnetwork.
@@ -81,7 +81,7 @@
a site can require a password for THIS and not for Connect. The kill
switch can cut every user on the box off the network, which is why it is
worth its own knob. -->
-
+
Change the URnetwork kill switch
Authentication is required to change whether this device's traffic is blocked when the URnetwork connection drops.
@@ -95,7 +95,7 @@
DIFFERENT uid started. This is the action that replaces "everyone in the urnetwork
group is interchangeable": any active local user may run their own
tunnel, nobody takes over someone else's without proving admin. -->
-
+
Take over a URnetwork connection started by another user
Authentication is required to take over the URnetwork connection another user started on this device.
@@ -111,7 +111,7 @@
own. Same default trust as control-tunnel (if you can silently start a
tunnel you can read its log), separate id so it can be tightened alone.
The daemon ALSO refuses it across uids: see kCodeAuthNotTunnelOwner. -->
-
+
Read the URnetwork service log
Authentication is required to read the URnetwork service log.
diff --git a/packaging/rpm/nfpm.yaml b/packaging/rpm/nfpm.yaml
index 1e43b3b..4ba2282 100644
--- a/packaging/rpm/nfpm.yaml
+++ b/packaging/rpm/nfpm.yaml
@@ -153,8 +153,8 @@ contents:
# Admin-editable integration files. %config(noreplace) is the rpm equivalent
# of a dpkg conffile: an edited file is preserved and the package's version
# lands beside it as .rpmnew.
- - src: "${PKGROOT}/etc/urnetwork/autostart/network.ur.urnetwork.desktop"
- dst: /etc/urnetwork/autostart/network.ur.urnetwork.desktop
+ - src: "${PKGROOT}/etc/urnetwork/autostart/com.bringyour.network.desktop"
+ dst: /etc/urnetwork/autostart/com.bringyour.network.desktop
type: "config|noreplace"
- src: "${PKGROOT}/etc/NetworkManager/conf.d/95-urnetwork.conf"
dst: /etc/NetworkManager/conf.d/95-urnetwork.conf
diff --git a/packaging/tarball/install.sh b/packaging/tarball/install.sh
index 8b7ec98..2164aa6 100755
--- a/packaging/tarball/install.sh
+++ b/packaging/tarball/install.sh
@@ -162,7 +162,7 @@ DNS_WARNING=''
# legacy `urnetwork` group check stays in force.
POLKIT_PRESENT=0
POLKIT_VERSION=''
-POLICY_REL='/usr/share/polkit-1/actions/network.ur.urnetwork.policy'
+POLICY_REL='/usr/share/polkit-1/actions/com.bringyour.network.policy'
log() { printf '%s\n' "$*"; }
note() { printf -- '- %s\n' "$*"; }
@@ -1339,7 +1339,7 @@ if [ "${POLKIT_PRESENT}" = 1 ]; then
#
# MEASURED on Bazzite: after a clean install the daemon correctly
# reported `authorization: polkit`, and `pkaction --action-id
- # network.ur.urnetwork.control-tunnel` answered "No action with action
+ # com.bringyour.network.control-tunnel` answered "No action with action
# id" -- polkitd had been up since the previous boot, two days earlier.
# Every authorization check would have been made against an action
# polkit did not know, so Connect would have failed on a host the
diff --git a/packaging/tarball/uninstall.sh b/packaging/tarball/uninstall.sh
index 34a32f6..359c741 100755
--- a/packaging/tarball/uninstall.sh
+++ b/packaging/tarball/uninstall.sh
@@ -152,12 +152,12 @@ ${BIN_DIR}/urnetwork
/lib/systemd/system/urnetworkd.service
/usr/lib/systemd/system/urnetworkd.service
/etc/systemd/system/urnetworkd.service
-${SHARE_DIR}/applications/network.ur.urnetwork.desktop
-${SHARE_DIR}/metainfo/network.ur.urnetwork.metainfo.xml
-${SHARE_DIR}/icons/hicolor/48x48/apps/urnetwork.png
-${SHARE_DIR}/icons/hicolor/256x256/apps/urnetwork.png
-${SHARE_DIR}/polkit-1/actions/network.ur.urnetwork.policy
-/etc/urnetwork/autostart/network.ur.urnetwork.desktop
+${SHARE_DIR}/applications/com.bringyour.network.desktop
+${SHARE_DIR}/metainfo/com.bringyour.network.metainfo.xml
+${SHARE_DIR}/icons/hicolor/48x48/apps/com.bringyour.network.png
+${SHARE_DIR}/icons/hicolor/256x256/apps/com.bringyour.network.png
+${SHARE_DIR}/polkit-1/actions/com.bringyour.network.policy
+/etc/urnetwork/autostart/com.bringyour.network.desktop
/etc/NetworkManager/conf.d/95-urnetwork.conf
/etc/udev/rules.d/85-urnetwork-unmanaged.rules"
# plus whole directories swept below: ${SHARE_DIR}/urnetwork, locale .mo