Skip to content

feat(osd): add privacy indicator OSD when mic, camera, screenshare enable/disable#3061

Merged
ItsLemmy merged 1 commit into
noctalia-dev:mainfrom
mattvilim:osd-privacy-indicator
Jun 19, 2026
Merged

feat(osd): add privacy indicator OSD when mic, camera, screenshare enable/disable#3061
ItsLemmy merged 1 commit into
noctalia-dev:mainfrom
mattvilim:osd-privacy-indicator

Conversation

@mattvilim

Copy link
Copy Markdown
Contributor

Summary

#3040 added a privacy indicator widget to show mic, camera, screenshare state. This PR adds OSD notifications when privacy indicator enables/disables.

This PR adds 6 i18n OSD keys:

  • osd.privacy.mic-on
  • osd.privacy.mic-off
  • osd.privacy.camera-on
  • osd.privacy.camera-off
  • osd.privacy.screen-on
  • osd.privacy.screen-off

It adds 2 i18n UI keys:

  • settings.schema.shell.osd-kinds-privacy.label
  • settings.schema.shell.osd-kinds-privacy.description

The new OSD config to toggle this feature is added to GUI settings. If the PR is accepted, I will create a docs PR to update the OSD config documentation.

Motivation

Gives more visible notice of privacy state changes

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Build / packaging

Related Issue

#3040

Testing

I tested with mic and screen share enable/disable. I don't have a camera and did not test it. When multiple privacy events happen in rapid succession (e.g. leave call that had screen share and mic enabled), the existing OSD popup logic handles animating the first and showing the others overwritten in succession.

Manual Coverage

  • Tested on Niri
  • Tested on Hyprland
  • Tested on Sway
  • Tested on another compositor:
  • Tested with different bar positions and density settings
  • Tested at different interface scaling values
  • Tested with multiple monitors

Screenshots / Videos

Checklist

  • This PR is ready for review, or it is marked as Draft.
  • I read and followed the relevant guidance in CONTRIBUTING.md.
  • I ran just format with clang-format v22+ installed, or this PR has no code changes.
  • I ran the relevant build or test commands, or explained why they were not run.
  • I self-reviewed the changes.
  • I checked for new warnings or errors.
  • I will update end-user documentation after merge, or this PR does not change user-facing configuration or behavior.
  • I added or updated assets/translations/en.json, or this PR adds no new user-facing strings.
  • I did not edit non-English translation files unless this PR is explicitly for translation tooling, an import/export sync, or a maintainer-requested locale change.
  • I used the existing canonical names for config keys, IPC names, paths, and identifiers.

Additional Notes

@mattvilim

Copy link
Copy Markdown
Contributor Author
../src/shell/desktop/widgets/desktop_button_widget.cpp:29:20: error: std::move of the variable 'labelColor' of the trivially-copyable type 'std::optional<ColorSpec>' has no effect; remove std::move() [performance-move-const-arg,-warnings-as-errors]
   29 |       m_labelColor(std::move(labelColor)), m_hoverBackground(std::move(hoverBackground)),
      |                    ^~~~~~~~~~          ~
../src/shell/desktop/widgets/desktop_button_widget.cpp:29:62: error: std::move of the variable 'hoverBackground' of the trivially-copyable type 'ColorSpec' has no effect; remove std::move() [performance-move-const-arg,-warnings-as-errors]
   29 |       m_labelColor(std::move(labelColor)), m_hoverBackground(std::move(hoverBackground)),
      |                                                              ^~~~~~~~~~               ~

Lint failure is in main and unrelated to this PR.

@mattvilim mattvilim force-pushed the osd-privacy-indicator branch from 7e3777b to 733fb19 Compare June 18, 2026 01:21
@mattvilim mattvilim force-pushed the osd-privacy-indicator branch from 733fb19 to 9d4a83d Compare June 19, 2026 16:38
@ItsLemmy ItsLemmy merged commit 65328c9 into noctalia-dev:main Jun 19, 2026
2 checks passed
@ItsLemmy

Copy link
Copy Markdown
Collaborator

thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants