How to use my local mouse to control remote desktop - linux

I want to develop a program on both Windows and Linux that can use the mouse that's being physically plugged into my machine to control the mouse event in the remote desktop which is a Windows OS.
I am a beginner so I would like to know how will this work, what do I need to learn before I get started.
For now, I am imagining that I need to firstly build a connection between my local device and a server and stay connected during the whole session using some kind of protocol. Then I need to connect my mouse to the remote mouse somehow through the driver? (Correct me if I am wrong).
This question is aimed to get some general idea of what components should this program have and what I have to learn before get started.
Thanks!

Related

Making a GUI in Linux without booting the OS's GUI

Sorry if I'm using wrong terminology here.
I'd like to make an appliance for users that's running from a Raspberry Pi. When it's booted, I'd like users to see my own GUI that I'll design (hopefully in PyQT but I'm not sure about that yet.)
The thing I don't know how to do: I don't want the users to see the Linux operating system on the screen at all. I don't want them to see the desktop and launch my app. I want my app to be automatically launched on startup. I want it to be the only thing accessible and visible to the users. i.e. it should be full-screen and a user wouldn't be able to exit it or interact with the OS in any way.
How can I do that?

Does uninstalling Raspberry Pi GUI speed up the device when used via SSH?

I'm using my Raspberry Pi 2 Model B as a small and super simple LAMP development server. However it is on the edge of acceptable performance, especially when it comes to bulk copying or handling large MySQL databases.
The set-up:
The Pi has no display attached
I access the device via SSH and WinSCP
I changed the GUI boot behavior via raspi-config to command line only
What makes me curious is that whenever I connect to the Pi via the Windows Remote Control tool I still get a GUI.
Therefore I'm wondering whether if there are any negative performance implications or if Raspbian does not load the GUI until explicitly requested from the remote control tool.
If there are negative implications, what configurations should I change? (PS: I like to have a GUI from time to time but I could do without it.)
Unless the RPi is very starved of memory, there will be no performance difference as long as the graphical interface isn't actively being used.
Having said that, I would not try to run a large database on it unless I was using a class 10 card or better and the database configuration was heavily tuned.

Hardware+OS setup for an Application

I want to make a system which would get input from USB barcode scanner, validate it on remote server and display an answer (text and images).
I would use JavaFX or in-browser JS web application to grab scanner input somehow.
I'm planning to run this application on Raspberry Pi or plain PC.
Is there a way (or a special linux distribution) to ensure that system always loads the same way and starts JavaFX app or opens particular web page in browser?
e.g. no login page, NO update or other popups are shown.
Any other ideas? Thanks
...
Found an interesting solution here, where JavaFX GUI app is started from command line, without X-Server(linux graphical interface) at all.
I have recently done something similar, and it's not too hard. Obviously working on the Pi, you will want to use something like Linux and having limited hardware will mean that you should be minimising what you are running. Due to this, I would recomend that you run a light weight distro. Something like arch (which is what I used) allows you to build only what you want from the ground up without the need to find and compile everything like you do for LFS or Gentoo.
As for booting, the following two wikis will give you the details of starting the Gui without manual login:
https://wiki.archlinux.org/index.php/Automatic_login_to_virtual_console
https://wiki.archlinux.org/index.php/Start_X_at_Login
After that, it is simply a matter of putting the command to launch your program in .xinitrc.

DIY: Project remove VGA cable by sharing screen over wifi to TV

This is one of my coding projects. I'm fairly new to linux, so I need some pointers and thoughts from you guys, before I get started. I know there exists screen sharing software already, but I want to make my own! (=
Specifically, I want to clone my laptop screen to my TV over WLAN, via a linux box that is connected to a TV through a VGA cable:
Laptop streams it's screen
Linux box reads the stream
Linux box outputs the stream into the TV (through a VGA cable)
First of all, how do I record the screen and send the stream in real time in linux?
Secondly I must write a program that reads the stream being sent. The program must listen to some port, and collect the data being streamed from the laptop. Any thoughts?
Then I must output that data in real time to the TV. Do you how any ideas on how to solve this?
Thanks!
Edit: Regarding programming languages, I'm most comfortable with python.
Sharing your screen can be done via the various flavors of VNC (ie. RealVNC, TightVNC, UltraVNC, etc.). Most of them are Open Source, you might want to:
Stick with the VNC protocol for later compatibility
Take example of how the established solutions does for screen-hooking.
In Linux, the graphics are all processed by Xorg (new version of X Server), which was developed with networking embedded. This explains why you can ssh -X into a machine, execute a graphical interface on it and see it on your remote computer. I recommend you to read about hooks on Xorg to achieve your needs.
You need a client-server topology to achieve your needs. You are not talking about any programming language you forecast to use, though. Some languages may be harder than some to start with. Furthermore, this kind of code is already really well understood under every major programming language. You should try to at least use a framework that simplifies your networking portion of the project.
Sharing a screen on the TV can be done by your video card driver in Linux. Just check on your Desktop Environment (KDE and Gnome offers video configuration panels, for example) or in your video card configuration (nVidia and ATI Linux drivers offers multiple screen support)
It seems to me like you're trying to reinvent the wheel and are not too sure about how to begin. I recommend you to begin simple with one of the already proven VNC software and see how it goes from there. If a feature is missing, you've got the source code of the server and the client, so you can continue development of these projects. Once you've got your setup working, start thinking about replacing a single piece of the puzzle by your own code, and see how it goes.
Do not expect good (full HD, for instance) video quality on your TV without some very capable CPU/GPU and a 802.11n wireless network empty of users and be ready to accept some lag for the codecs to kick in.
You should try to take as small steps as possible. If I were taking up such a project, my first step would be to try to implement a solution using standard unix tools (e.g. netcat or socat for the network part, mplayer or vlc for the playback and maybe ffmpeg for the capture)? Then, replace each component with custom-written ones if needed.

About mouse controlling in c/c++ [ubuntu] gnome or kde??? probably

Several questions about how to write a mouse controlling module in c/c++
Any comments are much appreciated.
I have a mobilephone which can connect to my ubuntu 11.04 laptop
through wireless network.
I installed a putty for nokia symbian s60 v3.
With putty, I can execute commands such like mplayer in order to play
music when i am in my bed.
The problem is putty cannot controll mouse directly.
I am thinking if I can write a program who receives arrow keys signals
from my putty and move the mouse from my desktop.
Then I can control my laptop when I am doing a presentation through my
mobile-phone.
If anyone knows how to deal with it, please give me some advices.
Where should i get started? which c/c++ header/libs that i have to use.
Any websites or online mannual that i should take a look at.
I am running unity (based on gnome 2.3. right?)
Thanks.
Guannan
This is actually not simple on linux/X window system, but it can be done. Probably one of the following would be your answer:
set up xtest so that you can inject mouse events into the window system
tell the window manager to take input from a "fake mouse" of some sort - maybe you can tell it that a named pipe or even pty is a serial mouse?
make or find a kernel driver giving you another mouse entry under /dev/input to which you can push mouse events from some other program

Resources