The fun part of user scripting is deciding what happens. The boring part is scavenging the DOM for bits of templated data, or elements you want to mod.
Have on.js
do it for you!
gnome-cups-manager | |
------------------ | |
Once upon a time there was a printer who lived in the woods. He was a | |
lonely printer, because nobody knew how to configure him. He hoped | |
and hoped for someone to play with. | |
One day, the wind passed by the printer's cottage. "Whoosh," said the | |
wind. The printer became excited. Maybe the wind would be his | |
friend! |
The fun part of user scripting is deciding what happens. The boring part is scavenging the DOM for bits of templated data, or elements you want to mod.
Have on.js
do it for you!
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
I use tmux splits (panes). Inside one of these panes there's a Vim process, and it has its own splits (windows).
In Vim I have key bindings C-h/j/k/l
set to switch windows in the given direction. (Vim default mappings for windows switching are the same, but prefixed with C-W
.) I'd like to use the same keystrokes for switching tmux panes.
An extra goal that I've solved with a dirty hack is to toggle between last active panes with C-\
.
Here's how it should work:
#!/bin/bash | |
# Copyright (C) 2012 Vít Šesták <v6ak.com> | |
# This program is free software. It comes without any warranty, to | |
# the extent permitted by applicable law. You can redistribute it | |
# and/or modify it under the terms of the Do What The Fuck You Want | |
# To Public License, Version 2, as published by Sam Hocevar. See | |
# http://www.wtfpl.net/ for more details. | |
# This utility notifies about completed messages of Task spooler (see http://viric.name/soft/ts/). | |
# Just add the path to this utility to $TS_ONFINISH. |
/** | |
* This file/module contains all configuration for the build process. | |
*/ | |
/** | |
* Load requires and directory resources | |
*/ | |
var join = require('path').join, | |
bowerrc = JSON.parse(require('fs').readFileSync('./.bowerrc', {encoding: 'utf8'})), | |
bowerJSON = bowerrc.json.replace(/^\.?\/?/, './'), |
#!/bin/bash | |
##################################################### | |
# Name: Bash CheatSheet for Mac OSX | |
# | |
# A little overlook of the Bash basics | |
# | |
# Usage: | |
# | |
# Author: J. Le Coupanec | |
# Date: 2014/11/04 |
// ==UserScript== | |
// @name New Userscript | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description try to take over the world! | |
// @author You | |
// @match https://workflowy.com/* | |
// @grant none | |
// ==/UserScript== | |
/* jshint -W097 */ |
function gmailAutoarchive() { | |
var delayDays = 2; // will only impact emails more than 48h old | |
var maxDate = new Date(); | |
maxDate.setDate(maxDate.getDate()-delayDays); // what was the date at that time? | |
// Get all the threads labelled 'autoarchive' | |
var label = GmailApp.getUserLabelByName("autoarchive"); | |
var threads = label.getThreads(0, 400); | |
var elements = Array.from(document.querySelectorAll('.js-link-block')) | |
elements.map(function (element) { | |
var nameElement = element.querySelector('.chartlist-name') | |
return nameElement && nameElement.textContent.replace(/\s+/g, ' ').trim() | |
}).forEach(function (name, i, names) { | |
if (name !== names[i + 1]) return | |
var deleteButton = elements[i].querySelector('[data-ajax-form-sets-state="deleted"]') | |
if (deleteButton) deleteButton.click() | |
location.reload() | |
}) |