惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
P
Privacy International News Feed
P
Proofpoint News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Attack and Defense Labs
Attack and Defense Labs
NISL@THU
NISL@THU
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
GbyAI
GbyAI
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Y
Y Combinator Blog
C
CERT Recently Published Vulnerability Notes
N
Netflix TechBlog - Medium
S
Security Affairs
Spread Privacy
Spread Privacy
罗磊的独立博客
腾讯CDC
MyScale Blog
MyScale Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
The Cloudflare Blog
L
LangChain Blog
博客园_首页
H
Hacker News: Front Page
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
SecWiki News
SecWiki News
A
Arctic Wolf
爱范儿
爱范儿
Google Online Security Blog
Google Online Security Blog
T
Threat Research - Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
有赞技术团队
有赞技术团队
The GitHub Blog
The GitHub Blog
Cyberwarzone
Cyberwarzone
博客园 - 叶小钗
V
Visual Studio Blog
V
V2EX
T
Tailwind CSS Blog
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
D
Docker

Maggie Appleton

The Dark Forest and Generative AI One Developer, Two Dozen Agents, Zero Alignment Gas Town’s Agent Patterns, Design Bottlenecks, and Vibecoding at Scale January 2026 | Maggie Appleton A Treatise on AI Chatbots Undermining the Enlightenment A Brief History & Ethos of the Digital Garden Vibe Code is Legacy Code May 2025 | Maggie Appleton Home-Cooked Software and Barefoot Developers Statistically, When Will My Baby Be Born? Speculative Calendar Events ChatGPT Would be a Decent Policy Advisor March 2025 | Maggie Appleton The Expanding Dark Forest and Generative AI Humanity's Last Exam Squish Meets Structure Common Misconceptions in AI Undetected AI Exam Answers Unbaited Smidgeons Growing a Human: The First 30 Weeks How to Import Academic Papers from Zotero into Tana December 2024 | Maggie Appleton Aesthetic Command Lines with Hyper, Spaceship, and Oh My Zsh Leaving Elicit July 2024 | Maggie Appleton A Short History of Bi-Directional Links The Pattern Language of Project Xanadu Assumed Audiences Ambient Co-presence On Opening Essays, Conference Talks, and Jam Jars Spinning Worlds, Seasickness, and Dealing with Vestibular Neuritis A Collection of Design Engineers Gathering Structures Daily Notes Pages Historical Trails December 2023 | Maggie Appleton September 2023 | Maggie Appleton Digital Gardening for Non-Technical Folks Language Model Sketchbook, or Why I Hate Chatbots June 2023 | Maggie Appleton Computational Notebooks Folk Interfaces Reverse Outlining with Language Models Command K Bars Spatial Web Browsing A Picture Worth a Thousand Programmes Programmable Notes Programming Portals Teenage Skeuomorphic Desktop Designs Tending Evergreen Notes in Roam Research Growing the Evergreens Why You Own an iPad and Still Can't Draw A Brief Introduction to Digital Anthropology Transclusion and Transcopyright Dreams The Block-Paved Path to Structured Data Empty Pointers and Constellations of AI Metaphors We Web By The Gift Economy Epistemic Disclosure November 2022 | Maggie Appleton Joining Ought July 2022 | Maggie Appleton The Linear Oppression of Note-taking Apps Paleolithic Nostalgia Interoperable Personal Libraries and Ad Hoc Reading Groups The Finest Narrative Non-Fiction Essays Algorithmic Transparency October 2021 | Maggie Appleton Plebeian Programming with Keyboard Maestro The Cultural Anthropology of React August 2021 | Maggie Appleton Natureculture, Moral Purity, and Cultural Boundaries The Echo & Narcissus Writing Club Pink, Soft, Glittering Developers Fetishism & Mechanical Keyboards Making Programming Visual, Spatial, and Learnable Organic, Local, Artisan Data Storage Positioning Elements & Scrollytelling in CSS A Digital Anthropology Reading List The Eponymous Laws of Programming A History of Cyborgs Neologisms GreenSock Animations with React Hooks The Bare Essentials of Greensock September 2020 | Maggie Appleton Illustrating Gatsby's Key Concepts Problematic Proteins New Harvest & Illustrating the Cultivated Meat Podcast Synecdoche: Drawing the Part for the Whole A Meta-Tour of This Site Douglas, Dirt, and Matter Out of Place The Knowledge Hydrant A Naïve Exploration of Computer-Supported Collaborative Learning Silent Synchronous Reading Sessions What the Fork is React Suspense? Visually Workshopping the AWS Cloud Are Data Unions the Future of Data? Pattern Languages in Programming and Interface Design A Metaphorical Reading Collection
Painting Roam Research with Custom CSS
2020-12-15 · via Maggie Appleton

My Roam Garden

Tending Evergreen Notes in Roam Research

A walkthrough of how I manage and tend Evergreen notes in Roam is a place I spend between 2-4 hours puttering around in every day according to my RescueTime stats. RescueTime only tracks the time you’re actively focused on a single window, so this measurement has some limitations but sets a nice baseline If I’m staring into something for over twenty hours a week, it better look and feel like beautiful home that fits my aesthetic tastes. As a maker of aesthetically pleasing things, I’m obviously biased towards the Aesthetic Usability Effect.

A bar graph of the hours I spend in Roam on a typical week

A bar graph of the hours I spend in Roam on a typical week

In that spirit, I’ve gone all-out on customising the CSS that controls how my Roam looks.

I’ve used colors and font weight to distinguished internal from external links, added custom colors to particular page names, and shifted the contrast and spacing of elements to fit my own design aesthetic.

A screen capture of my visual styling system in Roam

How to paint Roam your own colors

Luckily, this is all fairly easy to do. Roam has a built-in system for customising how your database looks.

You first need to create a new page called roam/css.

The roam search bar with roam/css entered

Once there, create a new code block by typing /code and selecting the block option.

Entering /code into the empty page

Once the code block appears, set the language to css from the right-hand drop down menu.

Selecting the code option from the code block dropdown menu

You’re now ready to start customising the CSS of your Roam. Any CSS you enter into this new code block will be applied across your whole database.

To test if it’s working, type h1.rm-title-display span { color: salmon;} into the box.
The title of your new page should change to a lovely shade of salmon.

The page title changing to the color salmon

Pre-made Roam Themes

For those of you entirely uninterested in learning CSS who just want to pop a pre-made theme in, Roam has a whole collection of pre-made themes you can pick from.

Copy and paste any of them into your new roam/css page and the styles will be applied across your whole database

If you want to use my theme Leyendecker, the most up-to-date version is available this GitHub repo . There’s a older version listed on the Roam database .

Another neat trick I love with CSS and Roam is creating specific styles for different page title and tags. Shoutout to fellow Roam user Malcolm Ocean who lobbied for this as an official feature of the Roam interface. I found out how to do it digging around in their impressively comprehensive CSS files . I have a little workflow taxonomy going that covers different kinds of output and the stages they flow through

A screencapture of my Roam database with various colored tags

We’re able to do this because when we use the double bracket or add a # to create a page tag, Roam adds a new attribute to the HTML markup. If the page is made with a #, it adds a data-tag attribute. If it’s made with double brackets Roam adds a data-link-title attribute

<span data-tag="Ideas" class="rm-page-ref rm-page-ref-tag">
	#Ideas What if I learned how to chuck wood like a Chuck Norris woodchuck
	could?
</span>

<span data-link-title="Ideas" class="rm-page-ref">
	[ [Ideas] ] What if I learned how to chuck wood like a Chuck Norris woodchuck
	could?
</span>

We can then target both of those attributes with a CSS selector that looks like this:

span.rm-page-ref[data-tag="Ideas"],
span[data-link-title^="Tweet"] .rm-page-ref {
	color: #fcb815;
	padding: 3px 4px;
	font-weight: 700;
	line-height: 1.4em;
}

The first selector, span.rm-page-ref[data-tag="Ideas"] changes any # link, and the second span[data-link-title^="Tweet"] .rm-page-ref selector changes any link made with [ [ brackets]]

It makes an enormous difference in your user experience to be able to quickly identify different block and note types through visual color association.

If you just want to grab the tag and page styles from my theme , scroll down to the bottom of my CSS theme file to find them.

Block Level Styling

Roam also allows you to style whole blocks based on tags. Cato Minor originally wrote a script for doing this in JavaScript, but now it’s native to Roam’s CSS. In my database I use this heavily when taking book notes to visually distinguish between claims, responses, questions, and evidence.

To style an entire block, and all its child elements, we use:

.roam-block-container[data-page-links*="Comment"] {
  // styles in here
}

To style only the child elements but not the parent, add .rm-block-children to the end use:

.roam-block-container[data-page-links*="Comment"] .rm-block-children {
  // styles in here
}

To style just the block itself but none of the child elements, add > div.rm-block-main on:

.roam-block-container[data-page-links*="Comment"] > div.rm-block-main {
  // styles in here
}

Alternate Styling with Browser Plugins

If you don’t want to use the native Roam CSS functionality, there’s a way to apply custom CSS styles to any website using a browser plugin.

This is especially useful if you’re part of a multi-player Roam where everyone has their own styling preferences. Stylus has extensions for both Firefox and Chrome that allow you to write your own CSS styles in a browser.

A screen capture of the stylus interface

They also have good documentation that will walk you through how to use it.

It’s good to note that this is not a Roam-specific hack. You can re-paint any webpage you like with a custom CSS styler (go to town on Craigslist!)