This is a first pass at creating a page dedicated for controlling the
settings of tablet/pen style input devices. It's purpose is to modify
the config file found at
`/home/$USER/.config/cosmic/com.system76.CosmicComp/v1/input_devices`,
so that the Compositor can route incoming input events to the correct
displays and the events don't get discarded. Here's a video showing the
functionality:
<video
src="https://github.com/user-attachments/assets/ffd59291-b610-4109-a3af-04bde7ddab4b"></video>
As this is a first pass at the page, it naturally isn't in a fully
featured state. It only is doing the bare minimum to get tablet input to
not be discarded. There are 2 limitations I'd like to call out with this
current state:
**1)** The settings page will only show settings options for tablet/pen
style input devices that currently plugged in. It doesn't have ability
to allow users to clear out stale config entries for old tablets they
might not be using anymore. They'll need to manually delete the entries
from `input_devices` with a text editor.
**2)** The list of drawing tablets present is calculated once when you
open the settings application and doesn't live reload as devices are
connected or disconnected.
- [X] I have disclosed use of any AI generated code in my commit
messages.
- If you are using an LLM, and do not fully understand the changes it is
making to the code base, do not create a PR.
- In our experience, AI generated code often results in overly complex
code that lacks enough context for a proper fix or feature inclusion.
This results in considerably longer code reviews. Due to this, AI
authored or partially authored PRs may be closed without comment.
- [X] I understand these changes in full and will be able to respond to
review comments.
- [X] My change is accurately described in the commit message.
- [X] My contribution is tested and working as described.
- [X] I have read the [Developer Certificate of
Origin](https://developercertificate.org/) and certify my contribution
under its conditions.
---------
Co-authored-by: Levi Portenier <levi@system76.com>
So openvpn import called to_file_path().unwrap(), which panics when the
file picker hands back a non-file:// url (sandboxed portal, etc). the
wireguard branch right above already handles this gracefully, so do the
same: return a Message::Error with a new OpenVpnConfigPath kind instead
of crashing.
Fixes#1896
- [x] I have disclosed use of any AI generated code in my commit
messages.
- If you are using an LLM, and do not fully understand the changes it is
making to the code base, do not create a PR.
- In our experience, AI generated code often results in overly complex
code that lacks enough context for a proper fix or feature inclusion.
This results in considerably longer code reviews. Due to this, AI
authored or partially authored PRs may be closed without comment.
- [x] I understand these changes in full and will be able to respond to
review comments.
- [x] My change is accurately described in the commit message.
- [x] My contribution is tested and working as described.
- [x] I have read the [Developer Certificate of
Origin](https://developercertificate.org/) and certify my contribution
under its conditions.
Signed-off-by: James A DellaMorte <dellamorte.james@comcast.net>
Co-authored-by: James A DellaMorte <dellamorte.james@comcast.net>
Bluetooth keyboards require the host to display a passkey for the user
to type. Previously this was not supported because the agent capability
was set to DisplayYesNo and the DisplayPasskey/DisplayPinCode events
were not handled.
- Change agent capability to KeyboardDisplay
- Add DisplayPasskey dialog with typed-key progress indicator
- Add DisplayPinCode dialog for older keyboards
- Auto-dismiss display dialogs when device reports Paired=true
The previous title was redundant since the search bar already says the same. And searching isn't the only action in the drawer, so the title didn't really fit.
This makes it clearer that applets can be placed in those segments before a drag is started, and prevents things moving around when the drag is started.