Specify extension id in install.sh & check usage. Improve README.

This commit is contained in:
Omar Rizwan 2020-10-29 23:54:40 -07:00
parent f576b4c324
commit 140bd127df
2 changed files with 64 additions and 16 deletions

View file

@ -2,10 +2,28 @@
## Setup ## Setup
You need to compile the FUSE filesystem (written in C), then install First, install the browser extension.
the browser extension which runs it and talks to it.
### Run the C filesystem Then, install the C filesystem.
### Install the browser extension
(I think it will work on Edge or Opera or whatever, too. You'll need to
change the native messaging path in install.sh in those cases.)
#### Chrome
Go to the [Chrome extensions page](chrome://extensions). Enable
Developer mode (top-right corner).
Load-unpacked the `extension/` folder in this repo.
Get the extension ID.
#### Firefox
### Install the C filesystem
First, make sure you `git submodule update --init` to get the First, make sure you `git submodule update --init` to get the
`fs/cJSON` and `fs/base64` dependencies. `fs/cJSON` and `fs/base64` dependencies.
@ -26,21 +44,43 @@ extension can launch and talk to the filesystem:
$ ./install.sh [chrome | chromium | firefox] $ ./install.sh [chrome | chromium | firefox]
``` ```
### Install the browser extension ### Ready
I think it will work on Edge or Opera or whatever, too. You'll need to Reload the extension in `chrome://extensions`.
change the native messaging path in install.sh
#### Firefox
#### Chrome
Go to the [Chrome extensions page](chrome://extensions).
Enable Developer mode. Load-unpacked the `extension/` folder in this repo.
Now your browser tabs should be mounted in `fs/mnt`! Now your browser tabs should be mounted in `fs/mnt`!
## Examples of stuff you can do
(assuming your shell is in the `fs` subdirectory)
### List the titles of all the tabs you have open
```
$ cat mnt/tabs/by-id/*/title
GitHub
Extensions
TabFS/install.sh at master · osnr/TabFS
Alternative Extension Distribution Options - Google Chrome
Web Store Hosting and Updating - Google Chrome
Home / Twitter
...
```
### Close all Stack Overflow tabs
```
$ echo close | tee -a mnt/tabs/by-title/*Stack_Overflow*/control
```
### Save text of all tabs to a file
(wip, FIXME)
```
$ cat mnt/tabs/by-id/*/text > text.txt
```
## Design ## Design
- `extension/`: Browser extension, written in JS - `extension/`: Browser extension, written in JS

View file

@ -1,7 +1,14 @@
#!/bin/bash -eux #!/bin/bash -eux
if [[ ! ( ( "$1" == "firefox" && "$#" -eq 1 ) ||
( "$1" == "chrome" && "$#" -eq 2 && ${#2} -eq 32) ||
( "$1" == "chromium" && "$#" -eq 2 && ${#2} -eq 32) ) ]]; then
echo "Usage: $0 <chrome EXTENSION_ID | chromium EXTENSION_ID | firefox>"
exit 2
fi
OS="$(uname -s)" OS="$(uname -s)"
BROWSER="$(echo ${1:-chrome} | tr '[:upper:]' '[:lower:]')" BROWSER="$(echo $1 | tr '[:upper:]' '[:lower:]')"
# https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Manifest_location # https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Manifest_location
# https://developer.chrome.com/extensions/nativeMessaging#native-messaging-host-location # https://developer.chrome.com/extensions/nativeMessaging#native-messaging-host-location
@ -27,6 +34,7 @@ EXE_PATH=$(pwd)/fs/tabfs
case "$BROWSER" in case "$BROWSER" in
chrome | chromium) chrome | chromium)
EXTENSION_ID=$2
MANIFEST=$(cat <<EOF MANIFEST=$(cat <<EOF
{ {
"name": "$APP_NAME", "name": "$APP_NAME",
@ -34,7 +42,7 @@ case "$BROWSER" in
"path": "$EXE_PATH", "path": "$EXE_PATH",
"type": "stdio", "type": "stdio",
"allowed_extensions": ["tabfs@rsnous.com"], "allowed_extensions": ["tabfs@rsnous.com"],
"allowed_origins": ["chrome-extension://jimpolemfaeckpjijgapgkmolankohgj/"] "allowed_origins": ["chrome-extension://$EXTENSION_ID/"]
} }
EOF EOF
);; );;