TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Your family's day as a metro map, for TRMNL e-ink displays
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Your family's day drawn as a transit map. One line per person runs across
the board under an hour strip; events are stops on their line, the people at
a shared event are joined across their lines, a holiday is named beside the
date and a day off is named at the line's head. The whole thing lays itself
out to the screen it lands on: TRMNL OG, OG V2, TRMNL X in landscape or
portrait, and every mashup size.
It runs entirely on TRMNL Serverless: plugin/src/transform.js fetches
your ICS feeds and normalises them, plugin/src/shared.liquid draws the map.
No server of your own.查看完整 README ↗Your family's day drawn as a transit map. One line per person runs across the board under an hour strip; events are stops on their line, the people at a shared event are joined across their lines, a holiday is named beside the date and a day off is named at the line's head. The whole thing lays itself out to the screen it lands on: TRMNL OG, OG V2, TRMNL X in landscape or portrait, and every mashup size.
It runs entirely on TRMNL Serverless: plugin/src/transform.js fetches
your ICS feeds and normalises them, plugin/src/shared.liquid draws the map.
No server of your own.
In TRMNL: Plugins → Recipes, find Metro Calendar and install it (direct link). Nothing to build or upload.
The plugin starts on an example day while Calendars is empty. Example Day picks which one; see the demo folder for what each shows.
To show your own calendars, paste their ICS links into Calendars, one per row, with a name in front of each:
Alex https://calendar.google.com/calendar/ical/…/basic.ics
Sam https://outlook.live.com/owa/calendar/…/calendar.ics
Sam webcal://p12-caldav.icloud.com/published/2/…
https://…/family.ics
https://…/holidays.ics holiday
Each name is a line on the board; the same name twice puts two calendars
on one line; a link with no name is the whole household's and shows on
every line. Google's public-holiday calendars are recognised by their
address; for another provider's, put holiday after the link. A link
with no name at all, in a list with no names, is a line named as its
service names the calendar.
To route one shared feed to several people by rules (a school calendar
with each child's class in the title), switch Set Up With to the
setup helper and paste a JSON configuration into Configuration. Build it with the
Configuration editor,
which also previews the map at every device size, or write it by hand
(see CONFIG.md). The editor opens as a step-by-step setup:
who lives here, then one screen per calendar with click-by-click
instructions for finding its link in Google Calendar, iCloud, Outlook,
Nextcloud or Synology, and a check that reads the calendar back to you
("Found 14 appointments, the next is Swimming on Tuesday at 4") before it
adds anything. It saves your answers in your browser as you go, and
pasting back what TRMNL already has reopens it with every answer filled
in. Add ?full to the address for the old page with every control on it
at once. No ICS links yet? The editor's Examples
section has three presets (Family of 4, Parent on Shifts,
One Shared Calendar): pick one, draw the map, then swap the
placeholder links for your own.
webcal:// link.{
"version": 1,
"docs": "https://raw.githubusercontent.com/ExcuseMi/trmnl-metro-calendar-plugin/main/CONFIG.md",
"lines": [{ "name": "Sam" }, { "name": "Alex" }, { "name": "Kids" }],
"calendars": [
{ "url": "https://…/work.ics", "line": "Sam" },
{ "url": "https://…/alex.ics", "line": "Alex" },
{ "url": "https://…/school.ics",
"rules": [{ "match": { "type": "word", "value": "L2" }, "line": "Kids" },
{ "match": { "type": "contains", "value": "staff" }, "hide": true }] }
]
}
A line is just a name: its side, texture and shade are worked out for you.
A calendar says whose it is with line; one without a line is the
household's, and anything in it no rule routes goes on every line.
Rules match on the title or another field (word, contains, exact,
regex), or on status, weekday, duration, time, any, and
and/or/not of those, and can assign one or more lines, rewrite the
title, or hide the event. Everything is documented in
CONFIG.md; what the drawing means in rules.md; how to change the board without making it worse in
MAINTENANCE.md.
Recurring events: daily, weekly, monthly and yearly rules are read with
INTERVAL, UNTIL, COUNT, BYDAY (including "the third Tuesday"),
BYMONTHDAY, BYMONTH and BYSETPOS, and EXDATE and RECURRENCE-ID
overrides are honoured. A rule by week number or day of the year, or one
firing several times a day, shows on its first date only.
trmnl.bettens.dev. It stores
nothing and logs no calendar address. It sits behind Cloudflare, whose
own logs this project does not control. If you would rather nothing
leave your browser, paste or upload the .ics text instead.cd plugin && trmnlp serve # local preview at http://127.0.0.1:4567
./test.sh # every suite
./test.sh node # only the ones without a browser (engine, geometry, editor)
./test.sh trmnl tests/layout/band_spec.rb # only the trmnlp suite: paths, rspec arguments
The suites that render the plugin or run its transform are RSpec files in
plugin/tests/, on trmnlp's own test framework
(trmnlp test, run in the trmnl/trmnlp image by tools/trmnl-test, needs
Docker); the report is under test/trmnl-report/.
To run your own copy rather than the recipe: Plugins → Private Plugins →
New, name it, save, then from plugin/ run ./push.sh. Not
trmnlp push: the server takes 100KB per file and the sources are several
times that, so push.sh strips the comments and minifies before it
uploads, and refuses to upload a build that does not render (the
shipped spec in plugin/tests/).
The board is drawn by solver/, a set of plain node modules bundled into the
template by plugin/bundle.js; plugin/src/transform.js turns calendars into
facts and decides nothing about the picture. rules.md is the specification
for what the drawing means.
The layout is verified with headless-Chrome screenshots of trmnlp build
output at real device sizes; the renders in docs/ come from that. The
editor needs to be served over http to load the plugin template for its
preview (python3 -m http.server from the repo root works).
MIT, see LICENSE.
The quickest way to a board that reads like the examples is the editor's AI prompt: it describes the plugin, your calendars and what makes a board read well. Paste it into an assistant, paste the answer back, and you have a configuration that names the lines, routes a mixed feed to the right people and trims the titles, without writing a rule by hand. Each demo board is also a worked example: demo/simpsons/config.json, demo/futurama/config.json, demo/friends/config.json.
Optional settings: Time Format, Location and Temperature Unit for the weather, the Weather Alert Banner with its rain chance, cold and heat thresholds, and Show The Example Anyway.