Dotjs — hack the web
defunkt.io
defunkt.io
"GreaseMonkey user scripts are great, but you need to publish them somewhere and re-publish after making modifications. With dotjs, just add or edit files in ~/.js."
but this caveat is just as strong for files you maintain outside of your browser, and some browsers' implementations of userscripts/greasemonkeylikes actually have a similar filesystem-based model for managing scripts already.
While respectable, I had hoped to be more impressed by a tool that beckons me to "hack the web".
Google Chrome on OS X has no such filesystem-based model for managing scripts.
Maybe a good followup project would be to use some of the dotjs code to help make a filesystem-based GreaseMonkey system for Chrome, which would be just as easy to manage as dotjs scripts are.
Also, with GM you can just save the script with the same filename and it'll use that instead.
This project is 100% useless.
But I wouldn't call this useless. It's just another approach.
This project is a lot of work for zero benefit.
And Safari: https://github.com/wfarr/dotjs.safariextension
Bonus points for it being so easy to share, too: https://github.com/holman/holman-js/blob/master/news.ycombin...
1) sniffs out urls in submissions and auto-links them
2) adds comment thread folding.
https://github.com/sant0sk1/dotfiles/blob/master/js/news.yco...
You're pretty much guaranteed to hear of anything hitting the front page anyway if it was meaningful to begin with. If not, it's probably some momentary obsession or buzzword bingo (say, "Google", "Social", "Facebook killer", "Privacy", "Product launch" to take an ephemeral example :))
just change your file extension from .js to .coffee
https://github.com/eightbitraptor/dotjs/commit/20c97774eb29f...
Publish them where? I don't understand this. Whenever I change a user.js file and save it the browser updates it and it's ready to go next time the page reloads.
Side node: Scriptish is a fork of greasemonkey with many cool extras. https://addons.mozilla.org/en-US/firefox/addon/scriptish/
If someone knows a way around this limitation, or a simpler webserver to require / embed, I would be thrilled. But so far this is the best I've found.
You'd need to tell users to enable file access for the extension though chrome://extensions/, since that isn't enabled by default and users have to opt into it. I also don't know if there is a way to get the current user's homedir without hardcoding it.
Also: you're being super careful to not allow arbitrary reading of the filesystem, right? A good sanity check would be to ensure that realpath() of any file served is under ~/.js before handing it off.
https://github.com/defunkt/dotjs/blob/master/bin/djsd#L26
(Also, Ruby comes with OS X (just like Python) so it seemed a sane choice.)
Sure basic install-ability is great, but I bet you this tool was made to satiate an itch he had, and he used the tools he's used to. Little apps like these aren't engineered. Just hacks, for hacks sake.
[1] https://chrome.google.com/webstore/detail/kmgmkbicahmbceidoi...
I think it might be because I use VirtualHostX - http://clickontyler.com/virtualhostx/ - which alters my hosts file. I had to create a host - http://dotjs/ - pointing to my ~/.js/ folder - then edit the Extension JS to point the Ajax to http://dotjs/ instead of http://localhost:3131. A bit of pain but it might just be who this affects.
$.get(chrome.extension.getURL("script/"+window.location.hostname+".js"), function(script){ eval(script); });
it will look for the js file in the extension directory instead of the local ruby web server, and this should work for any platform. To take the ~/.js convenience, a symlink in *inx system or shortcut in window will do the job.
(Firefox user here... This looks like a poor man's greasemonkey).
It's free in the Chrome store: http://goo.gl/vWcqr