{"id":13678152,"url":"https://github.com/creationix/topcube","last_synced_at":"2025-04-05T18:08:56.285Z","repository":{"id":1438846,"uuid":"1667769","full_name":"creationix/topcube","owner":"creationix","description":"Webkit Bindings for node","archived":false,"fork":false,"pushed_at":"2013-10-25T20:33:13.000Z","size":221,"stargazers_count":401,"open_issues_count":16,"forks_count":37,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-03-29T16:09:50.036Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/creationix.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-04-26T21:59:25.000Z","updated_at":"2025-02-14T15:49:46.000Z","dependencies_parsed_at":"2022-07-29T13:19:10.794Z","dependency_job_id":null,"html_url":"https://github.com/creationix/topcube","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Ftopcube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Ftopcube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Ftopcube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Ftopcube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/creationix","download_url":"https://codeload.github.com/creationix/topcube/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378149,"owners_count":20929297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T13:00:50.616Z","updated_at":"2025-04-05T18:08:56.255Z","avatar_url":"https://github.com/creationix.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"TopCube\n-------\nGives node developers a way to have a desktop GUI to their node servers using HTML5 + CSS3 as the GUI platform.\n\nAssumes:\n\n- **Client/server architecture with communication over HTTP.**  \n  If you're interested in merged event loops, common javascript contexts, or other non-HTTP communication and resource sharing between the node process and the GUI take a look at [node-webkit](https://github.com/rogerwang/node-webkit).\n- **Single, HTML5 + CSS3 driven window.**  \n  The client window does not spawn popups, support tabs, create additional windows or add any native UI components other than what a typical browser pane would provide.\n- **Child process.**  \n  The client window runs as a child process of the calling node process.\n\n## Implementation Details\n\n**Linux**\n\nRequires `gtk2.0` and `webkitgtk`. Install the following packages on Debian/Ubuntu or the equivalents for your system to build topcube:\n\n    sudo apt-get install libgtk2.0-dev libwebkitgtk-dev\n\n**Windows**\n\nThe windows client currently downloads a custom compiled binary client that uses the [Chromium Embedded Framework](http://code.google.com/p/chromiumembedded/). If you're interested in building the client yourself or making modifications see [mapbox/cefclient](https://github.com/mapbox/cefclient).\n\n**Mac OS X**\n\nTODO. Work on a native webkit client for Mac OS X that can be built within topcube is certainly welcome.\n\n## API\n\nPass a single `options` object to topcube with the following properties:\n\n- `url` of your running node application to point topcube at.\n- `name` of the window displayed in the titlebar. Also sets any window manager classes associated with the topcube window. On linux a `.desktop` file using the same name can be used set the icon for your application.\n- `width` in pixels of the window. Optional.\n- `height` in pixels of the windows. Optional.\n- `minwidth` in pixels. Restricts resizing the window width smaller than this value. Optional.\n- `minheight` in pixels. Restricts resizing the window height smaller than this value. Optional.\n- `ico` full path to a Windows `.ico` file to use for your application. Optional, no-op on non-windows platforms.\n\nExample usage of topcube to wrap a default \"Hello world\" server.\n\n    var Http = require('http');\n    var TopCube = require('topcube');\n\n    Http.createServer(function (req, res) {\n      res.writeHead(200, {'Content-Type': 'text/plain'});\n      res.end('Hello World\\n');\n    }).listen(7569);\n\n    TopCube({\n      url: 'http://localhost:7569',\n      name: 'My webapp',\n      width: 800,\n      height: 600\n    });\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreationix%2Ftopcube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcreationix%2Ftopcube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreationix%2Ftopcube/lists"}