From 2426e9f7a5aa7989573151270fa090b4c93ad53c Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Fri, 23 Oct 2020 22:47:59 -0700 Subject: Tweak README and Makefile for new deps, Linux support. --- README.md | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 77d99b1..1a90a2f 100644 --- a/README.md +++ b/README.md @@ -5,31 +5,25 @@ You need to both install the Chrome extension and run the native filesystem. -### Install the Chrome extension - -Go to the [Chrome extensions page](chrome://extensions). - -Enable Developer mode. Load-unpacked the `extension/` folder in this repo. - ### Run the C filesystem -First, make sure you `git submodule update --init` to get the `mmx` -and `cJSON` dependencies. And make sure you have FUSE. +First, make sure you `git submodule update --init` to get the +`fs/cJSON` and `fs/base64` dependencies. + +And make sure you have FUSE. On Linux, for example, `sudo apt install +libfuse-dev`. On macOS, get FUSE for macOS. ``` $ cd fs $ mkdir mnt -$ make [unmount] mount +$ make ``` -### Connect the browser extension to the filesystem +### Install the Chrome extension -Once the filesystem is running and awaiting a WebSocket connection, -you need to tell the browser extension to connect to it. +Go to the [Chrome extensions page](chrome://extensions). -Click the 'T' icon the extension put in your browser toolbar. The icon -badge should change from red to blue, and the filesystem program -should print that it's connected in the terminal. +Enable Developer mode. Load-unpacked the `extension/` folder in this repo. Now your browser tabs should be mounted in `fs/mnt`! @@ -37,9 +31,7 @@ Now your browser tabs should be mounted in `fs/mnt`! - `extension/`: Browser extension, written in JS - `fs/`: Native FUSE filesystem, written in C - - `tabfs.c`: Main thread. Talks to FUSE, implements fs operations. - - `ws.c`: Side thread. Runs WebSocket server. Talks to browser. - - `common.c`: Communications interface between tabfs and ws. + - `tabfs.c`: Talks to FUSE, implements fs operations, talks to browser. When you, say, `cat` a file in the tab filesystem: @@ -51,18 +43,14 @@ When you, say, `cat` a file in the tab filesystem: userspace filesystem in `fs/tabfs.c`, 4. then `tabfs_read` rephrases the request as a JSON string and - forwards it using `common_send_tabfs_to_ws` to `fs/ws.c`, - -5. and `fs/ws.c` forwards it to our browser extension over WebSocket - connection; + forwards it to the browser extension over 'native messaging', 6. our browser extension in `extension/background.js` handles the incoming message and calls the browser APIs to construct the data for that synthetic file; -7. then the data gets sent back in a JSON message to `ws.c` and then - back to `tabfs.c` and finally back to FUSE and the kernel and - `cat`. +7. then the data gets sent back in a JSON native message to `tabfs.c` + and and finally back to FUSE and the kernel and `cat`. (very little actual work happened here, tbh. it's all just marshalling) -- cgit v1.2.3