Bike themes feedback

I’m starting the think about themes in Bike.

The general idea is that you’ll have a list of themes. Choose a theme and it will apply to all open documents by default. There will also be an option to apply to a single document. So possible to have multiple documents open, each with own theme. Themes will also be remembered as part of window restorable state.

Themes will have most of the settings which are currently in Bike’s Settings > Editor panel. So visual things like colors and fonts.

I’m also considering that other settings such as text wrap, typewriter scrolling, and focus mode become part of themes.

Themes will also eventually have (not in first release) custom styling that you can set using outline paths. For example you might have a rule that says any row that matches the outline path //heading should be colored red.

In the end a theme is really a big collection of settings. Changing a theme changes all those settings at once.


Before I get too deep into this… feedback is welcome. Does the above sounds like a good picture to you? Or are there things that you want themes to do that aren’t compatible with the above. Let me know what you want! :slight_smile:

6 Likes

I’m very happy with all of the above. Solid plans!

1 Like

What you write seems very sensible to me. Really really looking forward to themes!

I’d love to be able to change the markers. :blush:

Here’s what Bike’s like now:

  • Gray triangle down = Has visible children
  • Black triangle right = Has invisible children
  • Gray triangle right = Doesn’t have children

I’m one of those who’s never liked the last one - that it’s a triangle without having children. So I’d like the ability to set it like this:

  • Gray triangle down = Has visible children
  • Black triangle right = Has invisible children
  • Gray dot = Doesn’t have children

This would mean that

  • Triangle = Has children
  • Circle = Doesn’t have children
  • Gray = Nothing hidden
  • Black = Something hidden

That would be even clearer than how it is now (even though the two last ones are true today as well), and also that every symbol is different. I especially like the clarity when you have all three symbols, like with Sibling 1, Child 11 and Child 12.

(I’ve been trying to work on a little animation that animated between a circle and the triangle, as that would be nice. :sweat_smile: But I haven’t had the time.)

But I saw that you don’t like that idea yourself, hehe - so that’s why it would be neat if it was theme-able. :smiling_face:


Lastly, I don’t know if this is outside the scope of your work now, but I’d like the Logseq plugin called “Bullet Threading” to be copied.

The blue line moves depending on where you are typing. It helps in navigating and “knowing where you are”, IMO.

2 Likes

Would these be a time to consider custom monospace fonts? :slight_smile:

1 Like

Yes, I expect this will be possible when I add ability for custom style rules. Basically you will write an outline path that matches code runs and then list out styles to apply such as font and foreground color.

3 Likes

Nice!

Looking forward to that implementation. :slightly_smiling_face: (I would use it to differentiate headings and bold text.)

Thanks! That sounds great!

This is the system where that setting would go :slight_smile: I don’t know that it will be a focus in first few iterations, but please keep up with the requests once I have most everything else in place, and then I expect I will do it.

Interesting… though this is probably less likely. At least that particular visual would be tricky to implement as part of the style system. One thing that it hints at though is rules that incorporate current editor state (selection) instead of just outline model state. I do think that will be possible. So for example maybe you don’t see the blue loops, but you do sea the ancestors of the selection in a different color.

Cool! I’ll definitely try to be a voice for the “triangles means children” crowd. :sunglasses:


Do you mean something like this? :point_down:t2:

(Here I took the colour of the typing indicator, which could be like an accent colour, and coloured the ancestors in that colour. Or to be specific, a more muted version of that colour.)

Edit:
I guess you could also colour in the ancestor’s arrows:

And lastly, here I also coloured in the lines above. :smiling_face:

(I think my favourite would be lines + markers, without arrows - but I guess it, in time, could be themeable.)

Yes, that would be much more possible. It’s a little hard to say for sure what I will have time to implement before something else takes priority, but that would fit pretty well into the style system I think.

2 Likes

Exciting news!

Will themes only be editable in Bike’s settings, or will Bike eventually use a stylesheet to define rules for a theme?

This sounds great. I just want to add that I’d like a GUI. I don’t want to have to write in a subset of CSS or some such (nothing against CSS, I love it). I’m just lazy and want it to be easy like the rest of Bike!

1 Like

I’m not sure. TaskPaper used a CSS like stylesheet, but with many small differences. I think that just ended up confusing things. At the moment my plan is to configure in GUI and save as JSON. So in theory you will be able to edit in text editor, but generally it will be GUI. That’s the theory anyway :slight_smile:

5 Likes

Please add the color themes from Feedbin!

  • Day
  • Sunset
  • Dusk
  • Night

other settings such as text wrap, typewriter scrolling, and focus mode become part of themes

I wonder if this scope might be overly complicated/annoying. I can imagine myself wanting to change colors & fonts & such way more often than wanting to change wrap & scrolling & focus mode, and would not like to have to check &/or fiddle with such things every time I changed theme.

1 Like

Was thinking the same.

From other apps I have come to think of themes as purely styles and colors.

What if there was another, optional layer above themes. Call it, I don’t know, “workspace”? Where you can select a theme plus other settings, and save all these selections under that “workspace”?

For the time being I’d just like to be able to designate two sets of foreground and background colours for the system Light Mode and Dark Mode.

Having to go into the editor settings and change colours manually each day is… a chore.

I understand that Bike 2 is introducing stylesheets, which will make theme-toggling much more straightforward.

In the meanwhile, I am personally using an AppleScript in this pattern:

Expand disclosure triangle to view AppleScript source
tell application "Bike"
	set white to ((255 / 255) * 65535) as integer
	set black to ((1 / 255) * 65535) as integer
	
	-- COLORS
	-- Black ink on white paper
	set light to {{white, white, white}, {black, black, black}}
	
	-- Chocolate and orange.
	set dark to {{8736, 8736, 8736}, {65535, 51656, 37008}}
	
	-- TOGGLE
	set {nBack, nFore} to {foreground color, background color}
	
	if (item 1 of nBack) < (item 1 of item 1 of dark) then
		set {background color, foreground color} to dark
	else
		set {background color, foreground color} to light
	end if
end tell

(with the elements of each {R, G, B} value expressed as integers in the range 0 … 65535,
based on n/255 values sampled with, for example, macOS Digital Colour Meter)

See: Using Scripts | Bike