Summary
The app contacts our server for just two things:
- Downloading hardware profiles. These are public files. The request includes nothing about you except what any web request shows: your IP address and the app's version.
- Sending a hardware report. This happens only when you click Submit or run
--report. It sends a description of your monitor and devices, your answers, and an email address only if you type one.
Who this covers
This policy covers the SwitchDesk app for Windows, the SwitchDesk app for macOS, and the website at switch-desk.indiesoftware.com.ar (also switch-desk.web.app). Both apps work the same way, and anything that applies to only one is pointed out.
SwitchDesk is developed and run by Nicolas Ortiz ("we", "us"), who decides how the data described here is used. SwitchDesk is open source under the MIT License, so you can read the code that does everything described here at github.com/benexus/switch-desk.
Data that stays on your computer
The app keeps the following on your computer and never sends it to us:
| What | Where on Windows | Where on macOS |
|---|---|---|
| Settings: your devices, computers and their names, shortcuts, theme, the other computer's address and the shared clipboard key | %APPDATA%\ | ~/ |
| Activity log: each switch, its result per device, and errors | %APPDATA%\ | ~/ |
| Downloaded hardware profiles | %APPDATA%\ | ~/ |
To switch your desk, the app talks directly to your monitor (DDC/CI) and your Logitech keyboard and mouse (HID++). It reads their model names, product ids and current inputs or channels. It does not read what you type or how you move the mouse.
macOS asks you to grant two permissions. Input Monitoring is needed because macOS treats opening a keyboard or mouse at all as monitoring it. SwitchDesk uses it only to send switch commands to Logitech devices and read their answers. Accessibility is needed only for the shared clipboard, to press ⌘C and ⌘V for you. On Windows the shared clipboard sends Ctrl+C and Ctrl+V the same way, and afterwards puts back whatever was on your clipboard before.
To delete this data, uninstall the app and remove the folders listed above.
Shared clipboard
The shared clipboard sends text straight from one of your computers to the other, and never through our server. It exchanges nothing until you enter the other computer's address and a shared key.
- It connects over your local network on TCP port 53127, and finds
.localnames using mDNS on that network. - Every message is encrypted with AES-256-GCM using the key you set on both computers. Anyone without the key cannot read or change the text.
- The shared text is kept in the app's memory only. It is not saved to disk or written to the log, and it is gone when the app quits.
- It only sends text you choose to share with the copy shortcut. Your regular system clipboard is never watched or sent.
Hardware profile updates
Profiles are public JSON files that tell the app how a particular monitor or device switches. When automatic updates are on (the default, checked once a week), or when you run --update-profiles, the app downloads the profile index and any new files from our server.
The request contains no identifier, settings or hardware details. Like every web request, it shows your IP address and a user agent with the app version (for example SwitchDesk/1.2.1), and our hosting provider may keep these in its standard access logs. You can turn off automatic updates in Settings → Hardware. The app works fine with the profiles it was built with.
Hardware reports
A hardware report is sent only when you choose to send one: from Settings → Hardware → Submit this hardware, or with SwitchDesk --report. The detect text is shown on the Hardware page, so you can read it before you send it.
| Field | What it contains | Required |
|---|---|---|
| Detect text | The --detect output: app version, OS version and architecture, the model names and EDID ids of your monitors, their inputs, and the names, product ids and channels of your Logitech devices | Yes |
| Platform and app version | "windows" or "macos", for example 1.2.1 | Yes |
| Connection | How the devices connect (Bluetooth, receiver, USB) | No |
| What worked | Whatever you type in this box | No |
| Contact | An email address, only if you enter one | No |
| Can test | Whether you're willing to test a new profile | No |
The report doesn't include your name, your computer's name, serial numbers, your settings or your files. Do not type personal information into the free-text boxes unless you want us to have it.
We use reports only to write and fix hardware profiles. If you gave a contact address, we may also use it to ask you about your report. A profile made from your report is published as a public file, but it describes only the hardware model, never you.
To prevent abuse, the server limits each IP address to five reports a day. It does not store your IP address. It stores a one-way hash of your address combined with the date, and deletes it automatically after about two days.
The website
The website has no analytics, no ads, no cookies and no sign-in.
- If you pick light or dark mode with the switch in the header, your choice is saved in your browser's local storage on your device. It is never sent to us.
- The pages load fonts from Google Fonts, so your browser connects to Google, which sees your IP address and browser details. See Google's privacy policy.
- Like any web host, our hosting provider sees your IP address and the pages you request, and may keep these in its standard logs.
- Downloads are served from the same site. A download is a normal web request, and we don't keep any record of who downloaded what.
Service providers, storage and retention
We don't sell, rent or share your data, and we don't use it for advertising. We use these providers:
| Provider | What for | Where |
|---|---|---|
| Google Firebase (Hosting, Cloud Functions, Firestore) | Serving the website, profiles and downloads; receiving and storing hardware reports | United States (us-central1) |
| Google Fonts | The website's fonts | Google's global network |
| GitHub | The source code and release files, if you visit them there | United States |
How long we keep things:
| Data | Kept for |
|---|---|
| Hardware reports | Until they've been used for a profile and we no longer need them, and no longer than 2 years |
| Contact address in a report | Removed once your report is dealt with |
| Hashed address used for rate limiting | About 2 days, then deleted automatically |
| Hosting access logs | As long as Google's standard retention for Firebase Hosting |
| Anything on your computer | Until you delete it |
All connections to our server use HTTPS. Firestore can't be read or written by anyone outside the service, and only the maintainer can read reports. The app checks the profile index's digital signature before it uses any downloaded profile.
Your choices and rights
You can use SwitchDesk without sending us anything: don't send hardware reports, and turn off automatic profile updates. A build without a server.json file never contacts any server.
We process a report because you choose to send it (your consent). We process the hashed address and hosting logs because we have a legitimate interest in preventing abuse and keeping the service running. You can ask us to see, correct or delete a report you sent, or withdraw your consent, by writing to the address below. Tell us roughly when you sent it, or the report id the app showed you. Depending on where you live (for example under the GDPR in the EU or UK, or Argentina's Law 25,326), you may also have the right to complain to your data protection authority.
Children
SwitchDesk is not directed at children under 13, and we don't knowingly collect their data.
Changes to this policy
If this policy changes, we'll post the new version on this page and update the date at the top. If a change affects what the app sends, we'll also mention it in the release notes.
Contact
Privacy questions and requests: support@indiesoftware.com.ar.