clutter.txt somewhere.
git clone https://github.com/sharimot/clutter
cd clutter
python3 -m pip install -r requirements.txt
python3 clutter.py /path/to/clutter.txt
12224 == int(hashlib.sha256('clutter'.encode('utf-8')).hexdigest()[:4], 16)
It is possible to specify a different port number (e.g., 9999):
python3 clutter.py /path/to/clutter.txt 9999
+ sign.yyyymmddHHMMSS.- button preceding the item to edit.= sign.hello and hElLo are identical).
hello and world), type both strings separated by a space (e.g., hello world).hello world), replace the space with [space].
hello[space]world, items that contain hello world (with a space between hello and world) are shown.N operator.
hello Nworld, items that contain hello but do not contain world are shown.yyyy) in the query.A or D prefixes before the keywords.
A stands for ascending order.D stands for descending order.A or D.http is:
20200103000000 https://example.com/c.html 20210102000000 https://example.com/a.html 20220101000000 https://example.com/b.html
Ahttp is:
20210102000000 https://example.com/a.html 20220101000000 https://example.com/b.html 20200103000000 https://example.com/c.html
Nquick brown Dfox Njumps:
quick,brown,fox,jumps,fox in descending order.old with new:
S|old|new|.% button in the top left.old and new in a substitute query are case-sensitive.|) may be any letter.
:| with :), set the query to S/:|/:)/.old with new only in items that contain yes but do not contain no, set the query to S|old|new| yes Nno.old or new contains a space character, use [space].
hello world with good morning world, set the query to S|hello[space]world|good[space]morning[space]world|."new" already exists! indicates that the new string is already present in Clutter.
snapshots folder as yyyymmddHHMMSS.clutter.txt.
snapshots folder is located in the same directory as clutter.txt.clutter.txt.log in the same folder as clutter.txt.A, D, N, and S are not supported in the log search.python3 clutter.py /path/to/clutter.txt.~/.bashrc file:
alias clutter-run="python3 /path/to/clutter/clutter.py /path/to/clutter.txt"
clutter-run to start Clutter.http://localhost:12224/?q=%shttp://localhost:12224/?add=%shttp://localhost:12224/log?q=%schrome-extension://nacjakoppgmdcpemlfnfegmlhipddanj/...).A, D, and N./path/to/clutter/utils/redirector.html?q=%sx as a site search shortcut.#tagname) and cashtags ($tagname) are colorized.#tag #newtagname to list tags.python3 /path/to/clutter/utils/spot.py /path/to/clutter.txt
#tag #parent #child#tag #grandparent #parent #child#tag #tagname $root (for root tags)yyyymmddHHMMSS).profiles.complex_modifications.rules of ~/.config/karabiner/karabiner.json.
{
"description": "datetime",
"manipulators": [
{
"from": {
"key_code": "<favorite-letter>",
"modifiers": {
"mandatory": [
"command"
]
}
},
"to": [
{
"shell_command": "date +'%Y%m%d%H%M%S' | tr -d '\n' | pbcopy"
}
],
"type": "basic"
}
]
}
<favorite-letter> to copy the current date and time to the clipboard and then paste it as a timestamp.$done:yyyymmddHHMMSS.D$done in the query.$trash tag.$star:<n> or whatever to signify the importance of an item.D$star in the query.http://localhost:12224/?q=D%24star+%syyyymmddHHMMSS. to the filename./ can be copied with Vimium C's LinkHints.activateCopyLinkUrl.clutter.txt and clutter.txt.log.// ==UserScript==
// @name clutter
// @version 1.0.0
// @description Easily search URLs.
// @author sharimot
// @match *://*/*
// @icon https://raw.githubusercontent.com/sharimot/clutter/main/static/favicon.svg
// @grant none
// ==/UserScript==
(function() {
window.addEventListener('keydown', event => {
if (event.target.matches('input')) { return; }
if (event.target.matches('textarea')) { return; }
if (event.target.closest('[contenteditable]')) { return; }
const q = encodeURIComponent(location.href.split('#')[0]);
const url = `http://localhost:12224/?q=${q}`;
if (event.key === '<favorite-letter-1>') {
window.location.href = url;
}
if (event.key === '<favorite-letter-2>') {
window.open(url, '_blank').focus();
}
});
})();
<favorite-letter-1> to open Clutter in the same tab.<favorite-letter-2> to open Clutter in a new tab.+ button to copy the query to the input field.yyyymmddHH0000 #planand append it to the bottom of
clutter.txt.
yyyymmddHH0000 #plan #tagname
|:
yyyymmddHH0000 #plan #tagname | description
.bashrc.
record() {
local timestamp=$(date +"%Y%m%d%H%M%S")
ffmpeg -f avfoundation -i "1:0" -r 15 -s 1280x800 "/path/to/videos/${timestamp}.mp4"
}
#tag D$star for choosing the plan.#plan yyyymm N| for viewing and editing plans.#plan | for viewing the past.