Skip to content
This repository has been archived by the owner on Apr 1, 2020. It is now read-only.
/ tab-space Public archive

A shared space for your internet browser tabs.

Notifications You must be signed in to change notification settings

GilgameshxZero/tab-space

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tab-space

A shared space for your internet browser tabs.

Development

We refer to the directory containing this readme as the root directory of the project, at ./.

Visual Studio 2019

tab-space uses Visual Studio 2019 as an IDE. The solution and project files are located under ./sln/. The project file includes the relevant headers, DLLs, and LIBs already for the build version of the dependencies of tab-space. However, when upgrading, the paths to these files may change and need to be updated.

Debug

Without libcef.dll.pdb, debug builds are pretty useless. So, always build for release.

Chromium Embedded Framework

tab-space uses the Chromium Embedded Framework (CEF). We do not use sandboxing as it is unreliable on different hardware. Download the relevant binary bundle from http://opensource.spotify.com/cefbuilds/index.html. The project builds are based on cef_binary_79.1.31+gfc9ef34+chromium-79.0.3945.117_windows64.tar.bz2. Unzip the bundle into ./cef_binary_*/ and cd into the directory.

Use

cmake -G "Visual Studio 16 2019" -S . -B build

to generate ./cef_binary_*/cef.sln. Opening the solution in Visual Studio, make the libcef_dll_wrapper project under both Debug and Release configurations. The paths to the generated binaries are included in the Visual Studio project for tab-space already.

CMake

tab-space uses cmake as part of its dependence on CEF. Please add cmake to the user PATH or system PATH, after installing via https://cmake.org/download/.

Simple Web Server

tab-space uses the Simple Web Server by eidheim, v3.0.2. Download the relevant bundle from https://gitlab.com/eidheim/Simple-Web-Server/-/releases, and unzip it into ./Simple-Web-Server-*/.

Boost

tab-space uses the Boost C++ Libraries, version 1.72.0. Downloads are at https://www.boost.org/users/download/. tab-space uses statically linked libraries, which can be generated by running

.\b2 runtime-link=static

in the Boost install directory. If Boost is already installed on the system, one may symbolically link it into ./boost_*. The appropriate library and include paths have already been included in the project configuration.

_alloca: Identifier not found

You got this error? Sucks to be you, I guess.

Try #include <malloc.h> in the file that it complains about.

HTTP Multiplexer

tab-space is deployed at https://tab.gilgamesh.cc via http-mux running on an AWS EC2 instance. The relevant tunneling command from the tab-space server is

ssh -p 2222 -R tab.gilgamesh.cc:80:127.0.0.1:61001 gilgamesh.cc

rain-library-4/Emilia

tab-space uses rain-library-4 for some basic Windows API handling. rain-library-4 is a derivative of rain-aeternum used in the Emilia C++ webserver. All relevant files are included in source control already.

Javascript-MD5

tab-space uses https://github.com/blueimp/JavaScript-MD5 for hashing on the client-side.

Endpoints

tab-space reveals several endpoints for the web client.

Endpoint Usage
/ Homepage
/new Launches tab on the backend. Returns tab ID.
/tab/(.+) Proxy for tab.html, with tab \g1 enforced.
/stream/(.+) MJPEG stream for tab \g1.
/action/(.+)/mouse Front-end mouse event for tab \g1.
/action/(.+)/key Front-end keyboard event for tab \g1.

This is not up to date.

Command Line

Run it like this, or things won't work too well.

tab-space.exe --high-dpi-support=1 --force-device-scale-factor=1 --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0" --request-context-per-browser --disable-site-isolation-trials

About

A shared space for your internet browser tabs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published