-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
53 changed files
with
1,281 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,81 @@ | ||
# Peek | ||
|
||
 | ||
Please meet Peek, a web user agent application designed for using the web where, when and how you want it. | ||
|
||
Quickly peek at your favorite web pages without breaking your flow. | ||
** WARNING** | ||
* Peek is not a web browser! There are no tabs, and no windows in the browser sense of them. If that's what you're looking for, there are a few decent browsers for you to choose from. | ||
* Peek is not safe for general use yet! It is a crude proof of concept I whipped up while on vacation. While I have thoughts on security model and user interface, I have not written it up into a proper security model yet. | ||
|
||
Peek lets you choose 10 web pages to open with a keyboard shortcut, without opening a new tab, and able to close with the `escape` key. | ||
## Features | ||
|
||
I use this for: | ||
You can use Peek in three ways, with more coming: | ||
|
||
* Translating text | ||
* See my Github notifications | ||
* Calendar schedule | ||
* Check email periodically instead of having it open all the time | ||
* Stock or cryptocurrency prices | ||
* Slack instances I don't want loaded all the time | ||
* Check the weather | ||
* Peeks - Keyboard activated modal chromeless web pages mapped to `Opt+0-9` | ||
* Slides - Gesture activated modal chromeless web pages which slide in from left/right/bottom/top | ||
* Scripts - Scripts periodically executed against a web page in the background which extract data and notify on changes | ||
|
||
## Usage | ||
### Peeks | ||
|
||
* Create up to 10 bookmarks with "peek#" plus the number 0-9 in the title. Eg "My favorite website peek#1". | ||
Peeks are keyboard activated modal chromeless web pages mapped to `Opt+0-9` and closed on blur, the `Escape` key or `cmd/ctrl+w`. | ||
|
||
* Use the keyboard shortcut `alt+shift` plus the number you put in the bookmark title to peek at that URL. | ||
### Slides | ||
|
||
* A new minimal window will open with your chosen URL loaded. | ||
Slides are gesture activated modal chromeless web pages which slide in from left/right/bottom/top, and closed on blur, the `Escape` key or `cmd/ctrl+w`. | ||
|
||
* Hit the `escape` key to close the window. | ||
### Scripts | ||
|
||
(If no bookmark is configured for an index, Peek will just load about:home.) | ||
Scripts periodically load a web page in the background and extract data matching a CSS selector, stores it, and notify the user when the resulting data changes. | ||
|
||
## TODO | ||
Ok, so not really "scripts" yet. But safe and effective enough for now. | ||
|
||
* ESC doesn't work sometimes | ||
## Why | ||
|
||
* test on windows/linux | ||
Some thoughts driving the design of Peek: | ||
|
||
* fix window to have a maximum size | ||
* Web user agents should be bounded by the user, not browser vendor business models | ||
* Windows and tabs should have died a long time ago, a mixed metaphor constraining the ability of the web to grow/thrive/change and meet user needs | ||
* Security user interface must be a clear articulation of risks and trade-offs, and users should own the decisions | ||
|
||
* add feature to long-press links to peek (in pb mode?) | ||
# Architecture / Implementation | ||
|
||
Peek is designed to be modular and configurable around the idea that parts of it can run in different environments. | ||
|
||
For example: | ||
* Definitely planning on a mobile app which syncs and runs your peeks/slides/scripts | ||
* I'd like to have a decentralized compute option for running your scripts outside of your clients and syncing the data | ||
* Want cloud storage for all config and data, esp infinite history, so can do fun things with it | ||
|
||
## Desktop App | ||
|
||
Proof of concept is Electron. By far the best option today for cross-platform desktop apps which need a web rendering engine. There's really nothing else remotely suited (yet). | ||
|
||
The user interface is just Tweakpane panels and modal chromeless web pages rn. | ||
|
||
TODO | ||
* Need to look at whether could library-ize some of what Agregore implemented for non-HTTP protocol support. | ||
* Min browser might be interesting as a forkable base to work from and contribute to, if they're open to it. At least, should look more at the architecture. | ||
|
||
## Mobile | ||
|
||
TBD | ||
|
||
## Cloud | ||
|
||
* Going full crypto payments for distributed compute on this one. | ||
|
||
## Future | ||
|
||
* GCLI - not just a command bar, but like the Ubiquity extension | ||
* Lossless personal encrypted archive of web history | ||
* Implement the Firefox "awesomebar" scoring and search algorithm so that Peek *learns* you | ||
* Extension model designed for web user agent user interface experimentation | ||
* Panorama | ||
|
||
## History | ||
|
||
Peek was a browser extension that let you quickly peek at your favorite web pages without breaking your flow - loading pages mapped to keyboard shortcuts into a modal window with no controls, closable via the `Escape` key. | ||
|
||
However, as browser extension APIs become increasingly limited, it was not possible to create a decent user experience and I abandoned it. You can access the extension in this repo [in the extension directory](/autonome/peek/extension/). | ||
|
||
The only way to create the ideal user experience for a web user agent that *Does What I Want* is to make it a browser-ish application, and that's what Peek is now. | ||
|
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
{ | ||
"images":[ | ||
{ | ||
"idiom":"iphone", | ||
"size":"20x20", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"20x20", | ||
"scale":"3x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"29x29", | ||
"scale":"1x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"29x29", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"29x29", | ||
"scale":"3x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"40x40", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"40x40", | ||
"scale":"3x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"60x60", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"60x60", | ||
"scale":"3x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"iphone", | ||
"size":"76x76", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"20x20", | ||
"scale":"1x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"20x20", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"29x29", | ||
"scale":"1x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"29x29", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"40x40", | ||
"scale":"1x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"40x40", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"76x76", | ||
"scale":"1x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"76x76", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"idiom":"ipad", | ||
"size":"83.5x83.5", | ||
"scale":"2x", | ||
"filename":"[email protected]" | ||
}, | ||
{ | ||
"size" : "1024x1024", | ||
"idiom" : "ios-marketing", | ||
"scale" : "1x", | ||
"filename" : "[email protected]" | ||
} | ||
], | ||
"info":{ | ||
"version":1, | ||
"author":"makeappicon" | ||
} | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
## iTunesArtwork & iTunesArtwork@2x (App Icon) file extension: | ||
|
||
PNG extension is prepended to these two files - | ||
|
||
While Apple suggested to omit the extension for these files, | ||
the '.png' extension is actually required for iTunesConnect submission. | ||
|
||
This is done for you so you don't have to. | ||
|
||
However, for Ad_hoc or Enterprise distirbution, the extension should be removed | ||
from the files before adding to XCode to avoid error. | ||
|
||
refs: https://developer.apple.com/library/ios/qa/qa1686/_index.html | ||
|
||
## iTunesArtwork & iTunesArtwork@2x (App Icon) transparency handling: | ||
|
||
As images with alpha channels or transparencies cannot be set as an application's icon on | ||
iTunesConnect, all transparent pixels in your images will be converted into | ||
solid blacks. | ||
|
||
To achieve the best result, you're advised to adjust the transparency settings | ||
in your source files before converting them with makeAppIcon. | ||
|
||
refs: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/AppIcons.html |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
const Store = require('electron-store'); | ||
|
||
const store = new Store(); | ||
store.clear(); | ||
|
||
store.set('prefs', { | ||
globalKeyCmd: 'CommandOrControl+Escape', | ||
peekKeyPrefix: 'Option+' | ||
}); | ||
|
||
store.set('peeks', [ | ||
]); | ||
|
||
store.set('scripts', [ | ||
]); | ||
|
||
module.exports = store; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
console.log('content-main'); | ||
|
||
setTimeout(() => { | ||
const s = "selector: '.percent > span:nth-child(2)"; | ||
const r = document.querySelector(s); | ||
const value = r ? r.textContent : null; | ||
console.log('cs val', value; | ||
}, 1000); |
Oops, something went wrong.