Update nightwatch75/dns-switcher to 0.3.0 — provider row menu, DNS lookup through any resolver - #437
Closed
nightwatch75 wants to merge 1 commit into
Closed
Conversation
Right-click a provider row for a native context menu (plugin_api 28,
panel.openContextMenu): apply the provider, copy its addresses, or look
a hostname up through it without switching to it.
The lookup entry is new behaviour. runResolve now takes an explicit
{ ip, label } server, so the panel's DNS tester can query a resolver the
system is not using. It is disabled for Default (ISP), which has no
address of its own, and until the box holds a valid hostname.
Apply stays enabled on the active row: nmcli con mod + device reapply is
idempotent, so re-applying pushes the profile back onto the live
connection.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ig9F3FvtfrB7YKdNiwmHv
nightwatch75
marked this pull request as ready for review
August 22, 2026 14:33
Contributor
|
This pull request was automatically closed because its description no longer contains Missing:
Please add the items listed above back to the description, keeping their exact wording, then |
Open
18 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin
nightwatch75/dns-switcherplugin.toml)What it does
Switches the system DNS from the bar. This update covers two releases on top of
the merged 0.1.2.
0.2.0 — every command is an argument vector (
plugin_api24). Detection andapply were two
sh -cscripts; they are now chains of singlenmclicalls,parsed in Luau. No shell parses a DNS address, a hostname, or the privilege
command any more.
envrunsnmcliunderLC_ALL=C, because with no shellthere is no other way to set the locale, and apply reads
nmclistderr.0.3.0 — a provider row menu (
plugin_api28,panel.openContextMenu).Right-click a provider for three entries:
nmcli con mod+nmcli device reapplymakes safe.The lookup entry is new behaviour. Before it, the tester could only query the
resolver already in use. Now you can ask a provider if it finds a name, and
decide to switch after you see the answer. The entry needs a valid hostname in
the box and a provider with its own addresses, so it is disabled for
Default (ISP).
The row is a
ui.button, which is what makes the menu possible: onlyonRightClickon a button reports the pointer serial thatpanel.openContextMenurequires.External dependencies
networkmanager— providesnmcli. Reads the active connection profile,and writes
ipv4.dns/ipv4.ignore-auto-dnson a switch.env— runsnmcliunderLC_ALL=C. New in this update.dig,nslookup— the panel's DNS lookup only. Either one works. The pluginswitches DNS without both of them.
No network access of its own, and no files written.
Testing
Run from the working tree as a path source, on Niri.
Static checks:
~/.cache/noctalia/noctalia.log, and every translation key resolves.noctalia plugins lint .— clean.validate-plugins.py— clean.The panel, the provider row menu and the DNS lookup were then used by hand on
Niri. The screenshots below come from that session.
Screenshots / Videos
Checklist
idafter the/inplugin.tomlexactly.plugin.toml,README.md,thumbnail.webp, andtranslations/en.json.README.mdfollows theREADME template, documents
every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.
thumbnail.webpwith the thumbnail generator.versionfollows semver and is bumped in this PR;plugin_apiis the oldest API level this plugin requires.understand that language well enough to review and maintain it (no unreviewed machine/LLM translations).
catalog.toml; CI generates it.Code review attestation
Plugins run as trusted, unsandboxed Luau in the user's session. Confirm:
Ready-for-review requirement: Every attestation below must be checked.
licensedeclared inplugin.toml.