max-mapper / screencat Goto Github PK
View Code? Open in Web Editor NEW:cat2: webrtc screensharing electron app for mac os (Alpha)
Home Page: http://maxogden.github.io/screencat
License: BSD 2-Clause "Simplified" License
:cat2: webrtc screensharing electron app for mac os (Alpha)
Home Page: http://maxogden.github.io/screencat
License: BSD 2-Clause "Simplified" License
It returns the following error when executing npm install
after cloning the project or running npm install
inside another project which has robotjs as a dependency.
npm install
> [email protected] install E:\robotjs
> prebuild --install
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(44,5): error MSB8020: The builds tools for v140 (Platform Toolset = 'v140' ) cannot be found. To build using the v140 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". In stall v140 to build using the v140 build tools. [E:\robotjs\build\robotjs.vcxproj]
prebuild ERR! build error
prebuild ERR! stack Error: `msbuild` failed with exit code: 1
prebuild ERR! stack at ChildProcess.onExit (E:\robotjs\node_modules\node-gyp\lib\build.js:276:23)
prebuild ERR! stack at emitTwo (events.js:106:13)
prebuild ERR! stack at ChildProcess.emit (events.js:191:7)
prebuild ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
prebuild ERR! not ok
prebuild ERR! build Error: `msbuild` failed with exit code: 1
prebuild ERR! build at ChildProcess.onExit (E:\robotjs\node_modules\node-gyp\lib\build.js:276:23)
prebuild ERR! build at emitTwo (events.js:106:13)
prebuild ERR! build at ChildProcess.emit (events.js:191:7)
prebuild ERR! build at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Users\\mattjs\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! node v6.9.2
npm ERR! npm v4.0.5
npm ERR! code ELIFECYCLE
npm ERR! [email protected] install: `prebuild --install`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] install script 'prebuild --install'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the robotjs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! prebuild --install
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs robotjs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls robotjs
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! E:\robotjs\npm-debug.log
I'm trying to build this from the source on a windows machine but can't get it to work either by installing via npm install
or node-gyp rebuild --python "path-to-python" --msvs_version=2015
you can't do a screensharing session + and audio session over the same stream, but you can do two separate streams. we should add this :D hard part would be bootstrapping the second session (sdps) over the first stream
It would be cool if you could share a link like this:
http://maxogden.github.io/screencat/remote#sugar-shadow-snowball
and it would automatically connect the remote to your computer.
I started a similar project lately and then realized that there must be another screen sharing electron app. I found this one via awesome electron but it looks like it isn't maintained anymore. Latest commit Dec 2015. Am I right?
Hello friends,
I have installed screencat on my local Ubuntu 16.10 system. I have also installed robotjs and electron from the links given in guide. However, when I start it, it shows it has started, but no UI and no idea how to connect to it or show the html page.
This is what I see when I issue npm start
npm start
> [email protected] start /usr/local/lib/node_modules/screencat
> electron electron.js
(electron) ipc module is deprecated. Use require("electron").ipcMain instead.
ready
How can I connect to screencat? Thank you.
when screencat launches the first time it goes to the menu bar. it would be nice if it started open right away.
maybe 2 codes? one for watching (read only) one with screen-share (read write)
the use case in mind is 2 people want to screen-share but also want to broadcast to more people
ive read that ICE/STUN works on most routers best if you do the handshakes within 30s, so we should try and fix that to improve connectivity.
we should make it easy to go fullscreen when looking at someone elses screen
This needs to go full engelbart -- add in (optional) video chat overlay screen.
btw, @maxogden @mafintosh see:
I clone the repo and run npm run app
and never get the screen code to share.
I don't know if has anything to do with it, but in the console I get this error:
[40713:0328/162940:INFO:CONSOLE(118)] "Uncaught Error: Module did not self-register.", source: ATOM_SHELL_ASAR.js (118)
I'm on Yosemite(v10.10.2).
right now we use trickle-less SDP swapping through a custom lobby signalling server.
it would be better to use ICE/STUN, but in general I was displeased with the state of many of the signalling servers on npm, which is the main reason I made https://github.com/maxogden/cat-lobby. if someone can recommend a simple signal lobby that can do ICE/STUN then I would be happy to swap out the backend
it would be cool to use TURN, though I need to figure out a way to measure failure metrics first before investing in higher bandwidth infra like that
this would require a webrtc -> rtmp streaming transcoder (not sure how to do that)
https://developers.google.com/youtube/v3/live/docs/liveStreams
the idea is you can use screencat to broadcast your screen + audio directly to a youtube live stream. maybe hangouts on air is possible to somehow?
Hi,
This gives error to load robotjs in mac. Has anyone faced this issue?
[Error: ./robot.js failed to load]
[Error: Module version mismatch. Expected 47, got 48.]
I have not done a lot of work with atom-shell, but would be nice to name the process differently. Related to #5 I had to hunt for which process to kill, top shows it as Atom.
Sharing a specific window or an area would be a nice capability - chromium has it as a functionality, as it uses it for chromecasting.
By initial research, I assume this happens by setting chromeMediaSource to "desktop" and chromeMediaSourceId to a value returned by chooseDesktopMedia - https://developer.chrome.com/extensions/desktopCapture.
for video, we can totally do it, but I wouldn't want it to be on by default.
also I was thinking it would be cool to save bandwidth by converting video to ascii (e.g. http://blog.nobel-joergensen.com/2011/11/12/creating-real-time-video-ascii-art-using-kickjs-and-webgl/) and sending the ascii along, rendering it in the corner of the screen. that way you can see if the other person is around, but it's low res enough that it isn't uncomfortable
What ? Where :D
Is it possible to capture and stream system sound? Example, playing a video on VLC?
Feedback like an end user is going to give. I clicked on join screen with code, and then I could not quit the app. Or maybe you are making ransomware ;)
It doesn't seem to work for me on a powerbook with the latest OS.
AppImage is a format for distributing portable software on Linux without needing superuser permissions to install the application.
It would be nice if the screencat project could provide official AppImages for Linux. electron-builder
can build them for "free".
I cannot connect to the lobby
Failed to load resource: the server responded with a status of 504 (Gateway Time-out)
EventSource cannot load http://catlobby.maxogden.com/v1/salem-gracie-zoe/pings. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://maxogden.github.io' is therefore not allowed access. The response had HTTP status code 504.
It would be great, if you could provide a flatpak of this.
Hi,
Two questions(may be novice level):
main thing is support for translating keyboard events between operating systems and layouts via https://github.com/octalmage/robotjs (or more specifically my fork https://github.com/maxogden/robotjs/tree/keyupdown)
HI,
Is there possibility use the screen share and Key board & mouse usage after users locked his computer after screen shared?
now that I added audio chat, we should have a way to control audio gain. Not sure the cleanest way to add it to the UI now though, suggestions welcome. This can be implemented using the WebAudio API Gain Control Nodes. There are probably other interesting controls/effects we can surface as well
version 4.2.0 claims to be version 0.34.2 when selected in the Finder
Instant.io, catlobby and cors pages are 404 so can we replace them? Max can you please help us and make the app work again ?
it would be nice if the menu bar icon stayed selected while the window is open (right now it selects and unselects). it's non-obvious to users where the screen popped up from.
in particular, at least make it so on the landing page image, so that users know what instantly icon they should expect to appear after installing.
hello,friend
I get function getRemoteConfig() ,is this get remote webrtc config(ice/stun/turn) ,how I modify var remoteConfigUrl to my iceserver
I use coturn in my server , and how to use my coturn server
Thank u and God bless u
I wanna add a password feature to invites. Currently anyone with your invite code can control your computer.
when you create an invite it should ask if you wanna password protect it
if you choose yes, you have to enter a password.
we then use the password to AES encrypt the SDP before it gets uploaded to the lobby
If you don't specify a password you should a clear warning like 'Anyone with this room name will be able to join and see your screen'
copy paste / keyboard shortcuts from the webpage weren't working. not sure if bug or not intended.
The UI is pretty barebones. If anyone wants to PR any UI improvements I would happily merge. Just ask before spending time integrating any large frameworks/dependencies
this is so the user can copy/paste the ScreenCat app directly into the Applications folder
right now we only support single clicking. improving this is dependent upon what we can get into https://github.com/octalmage/robotjs. My current fork is here https://github.com/maxogden/robotjs/tree/keyupdown. I intended to PR it at some point
I would suggest renaming the button 'Join Screen with Code' to just 'Join Screen'. Not sure who the intended audience is for the app, but I think it's more terse.
I was looking at the mdn's documentation and realized that mozInnerScreenX was what we were looking for the other night.
unfortunately, doesn't look implemented by other vendors right now.
So i guess mouse events' hack probably still work well. cc. @timoxley
it would be awesome to be able to share your screen with multiple controllers. I'd imagine the major limitation is upload bandwidth on the host end
getting this error where the shareable link is supposed to be.
Error! getaddrinfo ENOTFOUND catlobby.maxogden.com catlobby.maxogden.com:80
yout code include:
first:
var server = 'http://catlobby.maxogden.com';
var remoteConfigUrl = 'https://instant.io/rtcConfig';
if (process.browser) remoteConfigUrl = 'http://cors.maxogden.com/' + remoteConfigUrl;
function verifyRoom (room, cb) {
second:
// ensure room is still open
nets({method: 'POST', uri: server + '/v1/' + room + '/pong', json: {ready: true}}, function response (err, resp, data) {
if (err){
console.log('connect server error: ', err);
return cb(err)
}
if (resp.statusCode !== 200) return cb(new Error('Invalid or expired invite code'))
cb()
})
}
thrid:
// get remote webrtc config (ice/stun/turn)
function getRemoteConfig (cb) {
nets({url: remoteConfigUrl, json: true}, function gotConfig (err, resp, config) {
if (err || resp.statusCode > 299) config = undefined // ignore errors
cb(null, config)
})
}
fourth:
// get remote webrtc config (ice/stun/turn)
function getRemoteConfig (cb) {
nets({url: remoteConfigUrl, json: true}, function gotConfig (err, resp, config) {
if (err || resp.statusCode > 299) config = undefined // ignore errors
cb(null, config)
})
}
I think that this two url is to deal code, but I think your server is down , I want to ask you what logic about your two request( uri: server + '/v1/' + room + '/pong' and url: remoteConfigUrl,), and the getRemoteConfig function return the data is or not json format? please give me an example of the config object
I want to create server about like your 'http://catlobby.maxogden.com' to deal code logic , but I do not how to create and the server Background logic and field of your data
the cat should turn red when you are sharing your screen
this can be done with the atom-shell tray/icon APIs
when I run "npm start", It's stuck-- it just says 'ready' in console. What should I do to make it start?please give some advice, thanks.
Hi i'm new.
How can I build this for windows?? is it support windows or not? :)
Kanny@DESKTOP-O2HSVSO ~/screencat (master)
$ npm run build
[email protected] build c:\Users\Kanny\screencat
electron-packager . ScreenCat --platform=darwin --arch=x64 --version=0.36.0 --protocol-name="ScreenCat URL" --protocol="screencat" --ignore=node_modules/electron-prebuilt --ignore=node_modules/electron-packager --ignore=node_modules/browserify --ignore=node_modules/wzrd --ignore=node_modules/standard && cp img/Icon.icns ScreenCat.app/Contents/Resources/atom.icns
cp: cannot create regular file `ScreenCat.app/Contents/Resources/atom.icns': No such file or directory
npm ERR! weird error 1
npm ERR! not ok code 0
I am working on a project similar to this, I would like to know how many people are currently interested in the project so I can share it with all of you. The project is not a fork, and I currently have it advanced enough to help me improve it.
thank you all guys
I don't seem to be able to copy paste codes, or cmd-a to select the text in the text input.
Would be cool if you could advertise/see/connect to others on the same network via mdns like in mafintosh/airpaste
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.