Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate Mouse Jump with Mouse Without Borders to allow jumping to remote computers when MWB is enabled #34126

Open
mikeclayton opened this issue Aug 2, 2024 · 2 comments
Labels
Idea-Enhancement New feature or request on an existing product Needs-Triage For issues raised to be triaged and prioritized by internal Microsoft teams Product-Mouse Utilities Refers to the Mouse Utilities PowerToy Product-Mouse Without Borders Refers to the Mouse Without Borders module

Comments

@mikeclayton
Copy link
Contributor

mikeclayton commented Aug 2, 2024

Description of the new feature / enhancement

Add some awareness of Mouse Without Borders into the Mouse Jump feature so that the mouse can be "jumped" to locations on remote workstations.

Imagine a scenario where two workstations are connected via Mouse Without Borders - one has two screens, and the other has a single screen. The new style rendering features in #27511 could be used to apply different border colours for each workstation so that when the Mouse Jump preview image is activated it might show something like this mock-up with the screens from all workstations in the MWB "matrix" shown rather than just the local screens (the colours for each workstation would be customisable in an extension to the proposed "style settings" feature):

image

In a scenario with the maximum of 4 workstations connected through Mouse Without Borders, each with multiple screens attached, this could save a significant amount of mouse "swiping" to move the cursor large distances across remote machines.

This feature would require coordinated changes in both Mouse Without Borders and Mouse Jump - for example MWB would need to expose the following functionality to Mouse Jump:

  • Determine whether MWB is enabled
  • Enumerate connected workstation details and relative positions
  • Retrieve screen topology of connected workstations
  • Retrieve screen capture thumbnails at specific sizes
  • Move the mouse pointer to a specific location on a remote computer
  • Potentially sending the current Mouse Jump style settings to a connected workstation to allow consistent preview styles on remote workstations while Mouse Without Borders is active

And Mouse Jump would need to be updated to be able to request this information from MWB to draw the enhanced previews.

Scenario when this would be used?

Mouse Jump users would be able to quickly jump across multiple workstations connected by Mouse Without Borders to a precise location on any given screen.

Supporting information

Dependent on #27511 / #33486 being completed.

@mikeclayton mikeclayton added the Needs-Triage For issues raised to be triaged and prioritized by internal Microsoft teams label Aug 2, 2024
@davidegiacometti davidegiacometti added Idea-Enhancement New feature or request on an existing product Product-Mouse Utilities Refers to the Mouse Utilities PowerToy Product-Mouse Without Borders Refers to the Mouse Without Borders module labels Aug 6, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Sep 27, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Sep 27, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Sep 27, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Sep 27, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Sep 27, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Sep 27, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Oct 1, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Oct 1, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Oct 1, 2024
mikeclayton added a commit to mikeclayton/PowerToys that referenced this issue Oct 1, 2024
@mdrejhon
Copy link

mdrejhon commented Nov 26, 2024

Glad to see continued ongoing implementation work on #27511 idea that implements my feature request to FancyMouse. (my feature submission at https://github.com/mikeclayton/FancyMouse/issues/190 ).

This improvement is symbiotic with the #27511 (dependency) solving confusing cursor loss in non-orthogonal display layouts

(Multimonitor layouts not laid out along a 2D plane, where it's easy to lose track of cursor, e.g. displays facing opposite each other, or on different walls/shelfs in the same room)

This further improvement naturally extends this to remote-workstation use cases.

@mikeclayton
Copy link
Contributor Author

mikeclayton commented Jan 5, 2025

Now that custom styles for Mouse Jump are released (as of v0.87), I'm starting to think about this MWB / MJ integration piece a bit more.

For this feature to work, Mouse Without Borders needs to expose an API to Mouse Jump with some new features - e.g. reading screen configurations from the remote machine, pulling screenshot thumbnails from the remote machine, moving the mouse to a specific location on a remote computer.

Q. To what extent does this API need to be secured?

Authentication / Authorisation

We can restrict the API to only allow access from local workstation processes, but does it need to be locked down so only the Mouse Jump process can access it? And how would that work?

Note - Mouse Without Borders uses a shared security key to allow connection to remote machines, but the key is stored in plain text in a config file on both local and remote machines, so any app running on either machine could technically read the key and simulate Mouse Without Borders to control the remote computer. Since this allows full control of the remote mouse and keyboard anyway, it feels like the Mouse Jump integration wouldn't need to be more secure than this baseline Mouse Without Borders functionality.

Maybe lock the local MWB API down with the same api key as used by MWB (as well as restricting access to the local computer only), and have Mouse Jump read the key from the MWB config file.

Encryption

Does the communication channel between Mouse Jump and the MWB API need to be encrypted? If encryption is trivially supported in the communication channel then we should enable it, but if it requires extra work then consider whether other processes than Mouse Jump can access the API and whether there's actually anything offered by encrypting the channel...

Q. What technology stack should we use for the API?

Some options:

  • Custom server running over Named Pipes
  • Custom server running on a local TCP port
  • Integrate ASP.NET MVC rest api into MWB
  • others ???

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Idea-Enhancement New feature or request on an existing product Needs-Triage For issues raised to be triaged and prioritized by internal Microsoft teams Product-Mouse Utilities Refers to the Mouse Utilities PowerToy Product-Mouse Without Borders Refers to the Mouse Without Borders module
Projects
None yet
Development

No branches or pull requests

3 participants