MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
A browser for reading: no JavaScript, no site CSS. It reduces a page to Markdown on your own machine and sets it in the typography you chose — and reads Markdown docs straight out of git repositories.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A browser for reading. Brevier downloads a page, turns it into clean text on your own
computer, and sets it in the typography you chose — not the one the site chose.
• Articles without scripts, site styles, pop-ups or ads.
• Documentation straight from git repositories: gh:owner/repo opens its README.
• Feeds — RSS, Atom and JSON Feed — as lists of links.
• Search from the address bar.README 전문 보기 ↗A browser for reading. Brevier downloads a page, turns it into clean text on your own computer, and sets it in the typography you chose — not the one the site chose.
gh:owner/repo opens its README.There is no JavaScript engine and no site CSS. The site decides the words; you decide how
they look. Inside, every page becomes Markdown, made with existing libraries
(dom_smoothie, htmd) — but the Markdown is plumbing, not the product. The product is
the reading window.
Why it is built this way is in the manifesto; what comes next is in the roadmap. A short tour with pictures is at brevier.bizibah.com.
Status: early. Brevier runs on Linux and Windows, as a GTK window, and on Android, as a native app over the same core. Builds are in Releases; the Android app is also on F-Droid, and the source on crates.io. Screen readers are known to work on Linux only (see What it does not do).
Linux, Flatpak. The runtime brings GTK, so any distribution will do. Brevier keeps a Flatpak repository of its own, and installing from it brings the updates too:
flatpak install --user https://brevier.bizibah.com/flatpak/brevier.flatpakref
flatpak run io.github.gurov.brevier https://example.com/article
GNOME Software and Discover open the same
brevier.flatpakref with a
click. After that flatpak update (or the store app) brings each new version. The
repository is signed, and the key comes with the .flatpakref: an update signed by
anyone else, or older than what you have, is refused. The key's fingerprint:
6B4E DDB5 9942 1591 7552 C75F CE2B EBF8 1389 1B3B
Each release also has the
same app as one file,
brevier.flatpak
(flatpak install --user ./brevier.flatpak). Files released after 0.14.0 update from the
repository as well; Brevier installed from an older one does not — run
flatpak uninstall --user io.github.gurov.brevier (your data stays) and install it again
from the repository.
The first install also downloads org.gnome.Platform//49 from Flathub if you don't have
it — about 400 MB, shared with other Flatpak apps. In the sandbox your data lives in
~/.var/app/io.github.gurov.brevier/, saving goes through the system's file dialog, and
local files (a .md, a saved feed) can't be opened.
Linux, tarball. For a system that already has GTK 4 (libgtk-4-1 on Debian and
Ubuntu) and no wish for a sandbox:
tar xf brevier-0.19.1-x86_64-linux.tar.gz
cd brevier-0.19.1-x86_64-linux && ./install.sh
install.sh installs into ~/.local, needs no root, and --uninstall removes it again.
Linux, crates.io. With Rust 1.88 or newer and GTK 4.10 or newer with its development
files (libgtk-4-dev on Debian and Ubuntu):
cargo install --locked brevier --features ui
This builds the window, brevier-ui, and the command line, brevier, into ~/.cargo/bin;
the same command updates them. --locked keeps the dependency versions the release was
tested with. No desktop entry or icon is installed this way;
CONTRIBUTING.md shows how to add them. The command line alone
needs no GTK: cargo install --locked brevier --features save.
Windows 10 or 11, 64-bit. Download
brevier-0.19.1-windows-x86_64-setup.exe
and run it. It installs for you alone, with no administrator rights, and puts Brevier in the
Start menu; remove it under Installed apps. The installer is not signed yet, so Windows
shows "Windows protected your PC" first: choose More info, then Run anyway. To run
Brevier without installing it, unpack
brevier-0.19.1-windows-x86_64.zip
anywhere and start bin\brevier-ui.exe; bin\brevier.exe is the command line.
Android 7.0 or later, 64-bit ARM. Install it from
F-Droid, which keeps it up to
date. Or download
brevier-0.19.1-arm64.apk
on the phone and open it; Android asks once to allow installs from the app you opened it
with. Updates install over it as long as they are signed with the same release key:
30:A4:32:B8:2F:3E:F0:FC:E5:F4:68:1F:D7:F9:FE:20:5F:4B:17:A2:F4:34:19:C2:45:0C:A2:6B:E6:8D:34:80
F-Droid builds Brevier from source and publishes this same APK, signed with this key, only when its build matches ours byte for byte. So an install from either place updates from the other. A new version reaches F-Droid a few days after it appears in Releases.
The command line alone, one file with nothing to install beside it: no GTK, no OpenSSL, on Linux statically linked, so any distribution will do. From 0.15.0 on, every release has an archive for Linux on x86_64 and on 64-bit ARM, for macOS (one file for Apple silicon and Intel) and for Windows, always at the same address:
curl -L https://github.com/gurov/brevier/releases/latest/download/brevier-cli-x86_64-linux.tar.gz | tar xz
./brevier-cli-x86_64-linux/brevier https://example.com/article
The others are brevier-cli-aarch64-linux.tar.gz, brevier-cli-macos.tar.gz and
brevier-cli-windows-x86_64.zip. The macOS file is not signed: downloaded with a browser,
it needs xattr -d com.apple.quarantine brevier once; with curl it does not.
Every release is built by CI from its tag, and SHA256SUMS lists the checksum of each
file. To build from source, see CONTRIBUTING.md.
Make it your browser. Brevier registers for http, https and feed:// links and
for Markdown and feed files, so it shows up in "Open with". It doesn't make itself the
default; if you want that:
xdg-settings set default-web-browser io.github.gurov.brevier.desktop
On Windows the installer offers Brevier the same way; choose it under Settings → Apps → Default apps.
Ctrl+O still hands any page to your other browser. On Android, Settings has
Make default. If the menu shows Brevier without its icon, log out and back in — the
desktop shell cached its icon list before the icon was installed.
brevier-ui <url> [<url>…] opens a window, one tab per address. An address sent while
Brevier is running — from the command line or a link clicked in another app — opens as a
tab in the window you already have. Starting it with no address opens a new window.
The same core works on the command line:
brevier https://example.com/article # Markdown on stdout
brevier https://example.com/feed.xml # an RSS, Atom or JSON feed, as a list of links
brevier gh:rust-lang/book # a repository's README
brevier gh:rust-lang/book/src # the README of a directory inside it
brevier gh:rust-lang/book/src/ # …or what the directory holds, listed
brevier gl:owner/repo # the same for GitLab
brevier --docs gh:rust-lang/book # entry points into its documentation
brevier --check <url> [<url>…] # score pages for a reader without scripts
brevier --links <url> # the article's outgoing links
brevier --nav <url> # the site's own menu and footer links
brevier --raw <url> # no extraction, the whole page
brevier --html <url> # the extracted HTML, before conversion
brevier --stdin <url> < page.html # HTML you already have; the url is
# where it came from, for its links
brevier --save <url> # save to a file instead of stdout
brevier brevier:history # what you have read, by day
brevier brevier:archive # a copy of every article you read
brevier "brevier:archive?q=latency" # …searched for words
brevier brevier:archive/<host>/<file> # one copy, printed as plain Markdown
brevier brevier:wayback/<url> # the Wayback Machine's latest good copy
brevier "borrow checker" # not an address: a search
brevier "?danluu.com" # a leading ? searches for anything
A GitHub or GitLab file URL, a feed:// link, a local .md file or a saved feed work too.
--save writes a .md, or a .zip with an images/ folder when the page has pictures;
-o sets the file name. Without -o it never overwrites an existing file.
Exit codes, for scripts: 1 bad address, 2 network, 3 HTTP status, 4 content type, 5 nothing extracted, 6 conversion (or a broken feed).
A chapter of the Rust book, read straight from the repository
(gh:rust-lang/book/src/ch03-02-data-types.md), with the book's documentation on the
shelf:
--check scores a page from 0 to 100 for a reader that runs no scripts. It says what to
change and how many points each finding cost, and exits with an error below --min
(80 by default). In the window the same report is in the menu, Check this page.
In CI it is a GitHub Action:
- uses: gurov/[email protected] # a release tag, or @main
with:
urls: |
https://example.com/
https://example.com/docs/getting-started
min: 80 # fail the job below this
badge: brevier-check.svg # optional: an SVG with the lowest score
The reports go to the job summary; the lowest score is the step's score output.
Enter | open the address |
Space / Backspace, PageDown / PageUp | page down / up |
arrows, Home / End | line, top, bottom |
Tab / Shift+Tab | mark the next / previous link |
Enter / Ctrl+Enter on a marked link | follow it / open it in a new tab |
Alt+← / Alt+→ | back / forward |
Ctrl+L | go to the address bar |
Ctrl+R, F5 | reload, downloading the page afresh |
Ctrl+T / Ctrl+W | new tab / close tab |
Ctrl+Tab, Ctrl+PageUp / PageDown | switch tabs |
Ctrl+F | find on page |
Ctrl+H | history |
Ctrl+Shift+F | search what you've read |
Ctrl+D | bookmark the page, or remove the bookmark |
Ctrl+Alt+M | write a note on the selected passage |
Ctrl+Shift+M | show or hide notes beside the text |
Ctrl++ / Ctrl+- / Ctrl+0, Ctrl+wheel | zoom in / out / reset |
Ctrl+S | save the article |
Ctrl+O | open the page in your other browser |
With the mouse: Ctrl+click or middle-click opens a link in a new tab, middle-click on a
tab closes it, and the back and forward buttons go back and forward. Hovering a link shows
where it goes. Settings, history and bookmarks are in the menu at the top right.
Reading
Finding your way
Ctrl+Shift+M hides the notes and leaves the highlights..zip,
or a .md with an images/ folder beside it.Space at the very end goes there.Any kind of page
feed:// link or a file. A feed of comments on one page (a reddit thread,
WordPress comments) reads as a thread.gh:owner/repo/docs/) or use Files in this directory on the shelf.? forces a search.Ctrl+R fetches a fresh one. Lists of links are always fetched, since what's new is the point.Notes in the margin of the essay at the top of this page, one with a sketch of the reader's own:
A feed in Brevier — the Rust blog's, blog.rust-lang.org/feed.xml:
A Hacker News thread on the phone, every reply under the comment it answers:
The Android app is a second front-end over the same core. It draws the article as native text — not in a WebView — with the same typography and colours as the window.
feed:// links and Markdown or feed files from other apps.Alt+← / Alt+→ included.The maintainer uses it every day. It hasn't been tested with TalkBack yet.
When we last measured our test set — 108 live pages, on 11 September 2026 — 80 read well (74%). Of the 89 pages that reached the extractor, 80 read well (90%); the other 19 were blocked before that — by certificates, 403/401 responses, or anti-bot walls.
These are our own numbers. The rubric (corpus/RUBRIC.md) is ours, the marking is done
by hand, and we relaxed the rubric once after seeing the results; the strict reading gave
56%.
On an outside benchmark (scrapinghub/article-extraction-benchmark, 181 pages) the whole
pipeline scores F1 0.929, and extraction alone 0.951 — next to 0.947 for Readability.js
and 0.958 for trafilatura in the same table. That set is news; Brevier is aimed at long
reads, documentation and threads.
On 295 news sites (9 October 2026: three fresh articles from each site's feed, checked against the headline and summary the feed gives), 671 of the 712 articles Brevier could reach read well (94%); another 91 were closed to it.
On 211 news front pages (copies saved on 9 October 2026), 95% of the newest headlines from each site's feed that are in the page's HTML reach the reader; before 0.13.0 it was 42%.
Extraction breaks as sites change their markup. Keeping up with that never ends.
History, open tabs and bookmarks are plain text, one line per entry:
~/.local/share/brevier/history.tsv # what you have read
~/.local/share/brevier/session.tsv # the tabs you left open
~/.local/share/brevier/bookmarks.tsv # the pages you kept
~/.local/share/brevier/archive/ # a copy of every article you read
~/.local/share/brevier/reading.tsv # where you stopped in long pages
~/.local/share/brevier/notes.tsv # your highlights and notes
~/.local/share/brevier/notes/ # the pictures in your notes
The archive holds one file per page, <host>/<date>-<title>.md.lz4: Markdown with a short
header (title, address, when you read it), compressed in the standard LZ4 format, so
lz4 -d opens it without Brevier. Keep the copies as plain files, in Settings, writes
new copies as plain .md instead, which Obsidian, desktop search or another reader open as
they are, at about twice the space; the copies kept before stay as they were, and Brevier
reads both. On the phone copies stay compressed: no other app can see the app's own
folder anyway. A copy stays as long as its line in the history, and a
bookmarked page, and a page with notes, keeps its latest copy for good, even through
Forget everything. A switch
in Settings stops new copies.
Settings are in ~/.config/brevier/settings.tsv. The cache — the fonts, and week-old
copies of pages (up to 64 MB of text and 256 MB of images) — is in ~/.cache/brevier.
The usual XDG_* variables move these folders, and BREVIER_DATA_DIR moves them all.
On Windows all of it is in %LOCALAPPDATA%\Brevier; on Android, in the app's own storage.
There is no database: delete a line to forget a page. Forget everything in Settings
clears the history, the cache of pages and the archive, and keeps your bookmarks and notes
with their copies, and your tabs. Only the window writes these files; brevier <url> on the command
line keeps no history.
text/markdown before HTML, and
<link rel="alternate" type="text/markdown"> is followed when a page has one..rss feeds (its pages are empty
without JavaScript); Hacker News, Lobsters and Discourse forums are read from their own
markup, since the general extractor drops the author of every comment, or every comment
but one; Habr's comments are asked for at the address its own script uses, one more
request to habr.com for an article that has any; rustdoc pages are read from their main
column;
royallib's books open part by part; DuckDuckGo Lite results are unwrapped from its click
tracker. Your search queries go to DuckDuckGo.Brevier/0.1. On our test set, pretending to be a browser lost
seven pages to anti-bot 403s and won none.rustls with
rustls-platform-verifier). There are no bundled certificates and no way to skip the
check. On Android, revoked certificates are refused too, and so is a site whose
revocation list can't be fetched.Bug reports and patches are welcome. How the code is laid out, how to build it and what a
change needs before it is merged are in CONTRIBUTING.md; the plans are
in the roadmap and in the issues labelled roadmap.
MIT OR Apache-2.0, at your option.
The bundled fonts are under the SIL Open Font License; assets/fonts/OFL-NotoSans.txt
must travel with any copy you distribute.
.mdCtrl+Shift+Fbrevier:archive> [!NOTE]http pages are marked "Not secure". There is no padlock: people read it as
"this site is trustworthy", when it only means "the connection is encrypted".