├── .gitbook └── assets │ ├── CheckingPanel.png │ ├── Filter Options.png │ ├── Finding.png │ ├── Focus Heading 1.png │ ├── Focus Heading 2.png │ ├── FocusMode.png │ ├── Focusing.png │ ├── Folding.png │ ├── FullScreen.png │ ├── Links.png │ ├── NavigationBar.png │ ├── Outline Path Explorer.png │ ├── OutlineEditing.png │ ├── RowTypes.png │ ├── Screen Shot 2022-05-05 at 12.20.00 PM.png │ ├── Screen Shot 2022-05-05 at 12.25.09 PM.png │ ├── StatusBar.png │ ├── Tabs.png │ ├── TextChecking.png │ ├── TextEditing (1).png │ ├── TextEditing.png │ ├── TextWrap.png │ ├── Windows.png │ ├── bike.png │ ├── close-windows-when-quitting-app.png │ ├── formats.png │ ├── shortcut_automation.png │ ├── shortcut_information.png │ ├── text-selection.png │ ├── word-suggestions (1).png │ └── word-suggestions.png ├── README.md ├── SUMMARY.md ├── bike-compatible-apps.md ├── customizing-bike ├── README.md ├── creating-scripts.md └── creating-shortcuts.md ├── getting-started.md ├── glossary.md ├── keyboard-shortcuts.md ├── software.md ├── using-bike ├── README.md ├── outline-editing.md ├── outline-viewing.md ├── row-types.md ├── text-checking.md ├── text-editing.md ├── text-formatting.md ├── using-documents.md ├── using-find-panel.md ├── using-focus-mode.md ├── using-full-screen-mode.md ├── using-links.md ├── using-navigation-bar.md ├── using-outline-paths.md ├── using-scripts.md ├── using-shortcuts.md ├── using-software-update.md ├── using-status-bar.md ├── using-text-wrap.md ├── using-the-choice-palette.md ├── using-typewriter-mode.md └── using-windows.md └── why-bike.md /.gitbook/assets/CheckingPanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/CheckingPanel.png -------------------------------------------------------------------------------- /.gitbook/assets/Filter Options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Filter Options.png -------------------------------------------------------------------------------- /.gitbook/assets/Finding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Finding.png -------------------------------------------------------------------------------- /.gitbook/assets/Focus Heading 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Focus Heading 1.png -------------------------------------------------------------------------------- /.gitbook/assets/Focus Heading 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Focus Heading 2.png -------------------------------------------------------------------------------- /.gitbook/assets/FocusMode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/FocusMode.png -------------------------------------------------------------------------------- /.gitbook/assets/Focusing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Focusing.png -------------------------------------------------------------------------------- /.gitbook/assets/Folding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Folding.png -------------------------------------------------------------------------------- /.gitbook/assets/FullScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/FullScreen.png -------------------------------------------------------------------------------- /.gitbook/assets/Links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Links.png -------------------------------------------------------------------------------- /.gitbook/assets/NavigationBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/NavigationBar.png -------------------------------------------------------------------------------- /.gitbook/assets/Outline Path Explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Outline Path Explorer.png -------------------------------------------------------------------------------- /.gitbook/assets/OutlineEditing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/OutlineEditing.png -------------------------------------------------------------------------------- /.gitbook/assets/RowTypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/RowTypes.png -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2022-05-05 at 12.20.00 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Screen Shot 2022-05-05 at 12.20.00 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/Screen Shot 2022-05-05 at 12.25.09 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Screen Shot 2022-05-05 at 12.25.09 PM.png -------------------------------------------------------------------------------- /.gitbook/assets/StatusBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/StatusBar.png -------------------------------------------------------------------------------- /.gitbook/assets/Tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Tabs.png -------------------------------------------------------------------------------- /.gitbook/assets/TextChecking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/TextChecking.png -------------------------------------------------------------------------------- /.gitbook/assets/TextEditing (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/TextEditing (1).png -------------------------------------------------------------------------------- /.gitbook/assets/TextEditing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/TextEditing.png -------------------------------------------------------------------------------- /.gitbook/assets/TextWrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/TextWrap.png -------------------------------------------------------------------------------- /.gitbook/assets/Windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/Windows.png -------------------------------------------------------------------------------- /.gitbook/assets/bike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/bike.png -------------------------------------------------------------------------------- /.gitbook/assets/close-windows-when-quitting-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/close-windows-when-quitting-app.png -------------------------------------------------------------------------------- /.gitbook/assets/formats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/formats.png -------------------------------------------------------------------------------- /.gitbook/assets/shortcut_automation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/shortcut_automation.png -------------------------------------------------------------------------------- /.gitbook/assets/shortcut_information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/shortcut_information.png -------------------------------------------------------------------------------- /.gitbook/assets/text-selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/text-selection.png -------------------------------------------------------------------------------- /.gitbook/assets/word-suggestions (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/word-suggestions (1).png -------------------------------------------------------------------------------- /.gitbook/assets/word-suggestions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jessegrosjean/BikeGuide/229c09baf49bc49ff876e8b36a87d1a6bedf7236/.gitbook/assets/word-suggestions.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Structured Focused Writing 3 | --- 4 | 5 | # Bike 6 | 7 | > “We were promised bicycles for the mind, but we got aircraft carriers instead”\ 8 | > – [Jonathan Edwards](https://twitter.com/jonathoda) 9 | 10 | Welcome to the Bike User Guide. 11 | 12 | Use Bike to think, write, organize. Make lists, take notes, create documents. Bike's an unusually fast outliner designed for your Mac. If you don't have Bike yet please visit Bike's home page for a free download and a fun intro movie: 13 | 14 | * [Bike – Tool for thought](https://www.hogbaysoftware.com/bike/) 15 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Table of contents 2 | 3 | * [Bike](README.md) 4 | * [Getting Started](getting-started.md) 5 | * [Why Bike?](why-bike.md) 6 | * [Using Bike](using-bike/README.md) 7 | * [Text Editing](using-bike/text-editing.md) 8 | * [Text Formatting](using-bike/text-formatting.md) 9 | * [Row Types](using-bike/row-types.md) 10 | * [Outline Editing](using-bike/outline-editing.md) 11 | * [Outline Viewing](using-bike/outline-viewing.md) 12 | * [Using Links](using-bike/using-links.md) 13 | * [Using Find Panel](using-bike/using-find-panel.md) 14 | * [Using Text Checking](using-bike/text-checking.md) 15 | * [Using the Choice Palette](using-bike/using-the-choice-palette.md) 16 | * [Using Text Wrap](using-bike/using-text-wrap.md) 17 | * [Using Focus Mode](using-bike/using-focus-mode.md) 18 | * [Using Typewriter Mode](using-bike/using-typewriter-mode.md) 19 | * [Using Full Screen Mode](using-bike/using-full-screen-mode.md) 20 | * [Using Navigation Bar](using-bike/using-navigation-bar.md) 21 | * [Using Status Bar](using-bike/using-status-bar.md) 22 | * [Using Windows](using-bike/using-windows.md) 23 | * [Using Documents](using-bike/using-documents.md) 24 | * [Using Scripts](using-bike/using-scripts.md) 25 | * [Using Shortcuts](using-bike/using-shortcuts.md) 26 | * [Using Outline Paths](using-bike/using-outline-paths.md) 27 | * [Using Software Update](using-bike/using-software-update.md) 28 | * [Customizing Bike](customizing-bike/README.md) 29 | * [Creating Scripts](customizing-bike/creating-scripts.md) 30 | * [Creating Shortcuts](customizing-bike/creating-shortcuts.md) 31 | * [Keyboard Shortcuts](keyboard-shortcuts.md) 32 | * [Bike Compatible Apps](bike-compatible-apps.md) 33 | * [Software Credits](software.md) 34 | * [Glossary](glossary.md) 35 | -------------------------------------------------------------------------------- /bike-compatible-apps.md: -------------------------------------------------------------------------------- 1 | # Bike Compatible Apps 2 | 3 | Bike supports three file formats `bike`, `opml`, and `txt` as described in [Using Documents](using-bike/using-documents.md). Each is what I would describe as an "open" file format, a format for structured data that is already supported by other applications. 4 | 5 | The OPML format in particular is a [common standard](http://opml.org) for outlines. If you want to share outlines with another app OPML is likely your best bet. Here is a list of [OPML compatible apps](http://opml.org/compatibleApps.opml) on the opml.org website. 6 | 7 | #### Bike Compatible Apps 8 | 9 | This list welcome your feedback, additions, results, and notes. I have made this list by searching and reading product pages and release notes. Some things may be out of date or just untrue. Please let me know what needs fixing! 10 | 11 | * [Bike (macOS)](https://www.hogbaysoftware.com/bike/) – Bike can read and write `bike`, `opml`, and `txt` directly to the file system as a supported file format. It can also read/write those formats to the clipboard. 12 | * [Checkvist (Web)](https://checkvist.com) – Import and export OPML. Copy and paste outlines with Bike, may need formatting cleanup. 13 | * [Cloud Outliner (macOS + iOS)](https://xwavesoft.com/cloud-outliner-for-iphone-ipad-mac-os-x.html) – Import and export OPML. 14 | * [Drummer (Web + Electron)](http://drummer.scripting.com) – Uses OPML as native format. The Electron version saves OPML directly to disk so you can work on the same file with Bike and Drummer without import/export. Both the web and Electron versions support import and export of OPML. Copy and paste outlines with Bike. 15 | * [Dynalist (Web)](https://dynalist.io) – Import and export OPML. Copy and paste outlines with Bike, many need formatting cleanup. 16 | * [iThoughtsX (macOS, iOS, Windows)](https://www.toketaware.com) – Import and export OPML. Copy and paste outlines with Bike, may need formatting cleanup. 17 | * [LittleOutliner (Web)](http://littleoutliner.com) – Uses OPML as native format. Import and export OPML. Copy and paste outlines with Bike. 18 | * [Logseq (Electron)](https://logseq.com) – Import and export OPML. Copy and paste outlines with Bike, may need formatting cleanup. 19 | * [Mellel (macOS + iOS)](https://www.mellel.com/) – Import and export OPML. A multilingual word processor which assigns different formatting styles to each outline level. 20 | * [MindNode (macOS + iOS)](https://www.mindnode.com) – Import and export OPML. Copy and paste outlines with Bike. 21 | * [OmniOutliner (macOS + iOS)](https://www.omnigroup.com/omnioutliner) – OPML mode available. Work on the same file in Bike and OmniOutliner without import/export. Share an OPML document on iCloud Drive and edit on iOS with OmniOutliner and on macOS with Bike and/or OmniOutliner. Some of OmniOutliner's features are only supported in its `ooutline` file format, and will not persist when using OPML mode. 22 | * [OutlineEdit (macOS)](https://outlineedit.com/index.html) – Import and export OPML. Copy and paste outlines with Bike, may need formatting cleanup 23 | * [Outlinely (macOS + iOS)](https://glamdevelopment.com/outlinely) – Import and export OPML. Copy and paste outlines with Bike, may need formatting cleanup. 24 | * [Outliner (iOS)](https://carbonfin.com) – Uses OPML as its native document format. I think you can share an OPML document on iCloud and edit on iOS with Outliner and on macOS with Bike. I have not tested this. 25 | * [WorkFlowy (Web + iOS + Electron)](https://workflowy.com/) – Import and export OPML. Copy and paste outlines with Bike, may need formatting cleanup. 26 | * [Zavala (macOS + iOS)](https://zavala.vincode.io) – Import and export OPML. Copy and paste outlines with Bike, may need formatting cleanup. 27 | -------------------------------------------------------------------------------- /customizing-bike/README.md: -------------------------------------------------------------------------------- 1 | # Customizing Bike 2 | 3 | * [Creating Scripts](creating-scripts.md) 4 | * [Creating Shortcuts](creating-shortcuts.md) 5 | -------------------------------------------------------------------------------- /customizing-bike/creating-scripts.md: -------------------------------------------------------------------------------- 1 | # Creating Scripts 2 | 3 | Create scripts to automate Bike and integrate with other apps. If you are just interested to run a script that someone else has written please see the [Using Scripts](../using-bike/using-scripts.md) section. 4 | 5 | ### Overview 6 | 7 | When scripting Bike you are dealing with `documents`, `windows`, and `rows`. Documents and windows are common scripting objects with a few Bike extensions–rows are specific to Bike. 8 | 9 | Each row represents a row in your outline. Rows have a `name` for accessing the row's text. Rows also have an `id` and other attributes. Rows can contain other rows. When you move or delete a row those contained rows are moved or deleted with it. 10 | 11 | You gain access to rows in a few ways: 12 | 13 | 1. From properties of a document such as `root row`, `selected row`, `focused row`. 14 | 2. From the `rows` collection belonging to each document. This collection contains all rows in the document (except for the root). This collection is a good place to quickly find existing rows. 15 | 3. From the `rows` collection belonging to each `row.` This collection contains only the rows that are directly contained by the row (the children). This collection is a good place for making new rows and to use as a target to moving existing rows into. 16 | 17 | ### Dictionary 18 | 19 | Use Bike's scripting dictionary to learn what parts of Bike are scriptable. 20 | 21 | #### To open Bike's scripting dictionary: 22 | 23 | * Drag and drop Bike onto Script Editor's application icon. 24 | * Or from Script Editor use File > Open Dictionary and choose Bike's dictionary. 25 | 26 | ![](<../.gitbook/assets/Screen Shot 2022-05-05 at 12.20.00 PM.png>) 27 | 28 | ### Getting Started 29 | 30 | Here's the official starting point for learning AppleScript: 31 | 32 | * [Introduction to AppleScript Language Guide](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR\_intro.html) 33 | 34 | The starting point for lesser people, such as myself, is to find example scripts and then randomly change them until they do what you want. I've included some for you below. You can also find scripts in the Bike support form and ask scripting questions. 35 | 36 | * [ ](https://support.hogbaysoftware.com/c/bike/22)[Bike Support Forum – Extensions Wiki](https://support.hogbaysoftware.com/t/bike-extensions-wiki/4810) 37 | 38 | ### Example scripts 39 | 40 | You'll get the most out of these scripts by using [Script Debugger](https://latenightsw.com) instead of Script Editor that comes with your Mac. Among other things Script Debugger allows you to step through the script line by line so you can see the effect of each command on you document. 41 | 42 | #### Kitchen Sink 43 | 44 | This is a nonsense script that demonstrates many of Bike's scripting abilities. It's a good place to learn how basic things are done like making and moving rows. 45 | 46 | ``` 47 | tell application "Bike" 48 | 49 | -- This script makes a new demo document so that it won't mess up any documents that you have open. 50 | set demo to make document with properties {name:"Demo"} 51 | 52 | tell demo 53 | -- Bike shows welcome text in new documents, this line deletes that text 54 | delete every row 55 | 56 | -- Create a new "Hello World" row 57 | set helloWorld to make row with properties {name:"Hello World"} 58 | 59 | -- Add some child rows to "Hello World" 60 | tell helloWorld 61 | make row with properties {name:"one"} 62 | make row with properties {name:"two"} 63 | make row with properties {name:"rich text"} 64 | end tell 65 | 66 | tell row named "rich text" 67 | set bold of first word of text content to true 68 | set italic of second word of text content to true 69 | end tell 70 | 71 | -- Insert a new child in into the middle 72 | tell helloWorld 73 | make row at (after row named "one") with properties {name:"middle child"} 74 | 75 | -- Make a row "at" another row will at it as a child. 76 | make row at row 2 with properties {name:"middle child child"} 77 | end tell 78 | 79 | -- You can also just make an empty row 80 | make row 81 | 82 | -- Or you can make a row with an id, so its easy to find later, even if it's name has been edited. 83 | -- If the given id is already in use then the row will still be made, but will get assigned a different id. 84 | make row with properties {id:"boom", name:"My id is boom"} 85 | 86 | -- Change the name of an existing row 87 | set name of row id "boom" to "You've been renamed" 88 | 89 | -- Check to see if a row exists 90 | if exists row id "boom" then 91 | log "Yes! row id boom exists" 92 | end if 93 | 94 | tell row id "boom" 95 | -- Read/Write row level attributes 96 | exists (attribute named "test") -- false 97 | make attribute with properties {name:"test", value:"value"} 98 | value of attribute named "test" -- value 99 | set value of attribute named "test" to "new value" 100 | value of attribute named "test" -- new value 101 | delete attribute named "test" 102 | end tell 103 | 104 | -- When "Hello World" moves it brings all containing rows with it. 105 | move row named "Hello World" to row id "boom" 106 | move row named "one" to before row named "two" 107 | 108 | collapse row named "Hello World" with all 109 | expand row named "Hello World" 110 | select at row id "boom" 111 | 112 | -- Now just show "Hello World" and contained rows 113 | set focused row to row named "Hello World" 114 | 115 | -- Now just show rows contained by "Hello World" 116 | set hoisted row to row named "Hello World" 117 | end tell 118 | 119 | -- Make another document 120 | tell (make document with properties {name:"Move to"}) 121 | -- delete welcome text again 122 | delete every row 123 | 124 | -- Move row from our original document to this new document 125 | move row named "middle child" of demo to first row 126 | 127 | -- Can also just copy rows to new document 128 | duplicate row named "one" of demo to end of rows 129 | end tell 130 | 131 | end tell 132 | ``` 133 | 134 | #### Home Script 135 | 136 | This script resets your view state to "Home" 137 | 138 | ``` 139 | tell front document of application "Bike" 140 | set hoisted row to root row 141 | if exists first row then 142 | select at first row 143 | end if 144 | end tell 145 | ``` 146 | 147 | #### Cleanup Script 148 | 149 | This script saves the current selected row. Collapses all rows. Then restores your selection, which also expands any rows needed to show the selection. Use it to cleanup when you have to many rows expanded, but you still want to keep working where you are. 150 | 151 | ``` 152 | tell front document of application "Bike" 153 | set saved to selection row 154 | collapse root row with all 155 | select at saved 156 | end tell 157 | ``` 158 | 159 | #### Today Script 160 | 161 | This script create a simple calendar structure in your outline and adds a new line to "today" where you can start taking notes. It's interesting because it uses row `id`'s to track rows. Once the calendar is created you can move it to any place in your outline and the script will keep working. 162 | 163 | ``` 164 | set yearName to do shell script "date +'%Y'" 165 | set yearId to do shell script "date +'%Y'" & "/00/00" 166 | set monthName to do shell script "date +'%B, %Y'" 167 | set monthId to do shell script "date +'%Y/%m'" & "/00" 168 | set dayName to do shell script "date +'%B %d, %Y'" 169 | set dayId to do shell script "date +'%Y/%m/%d'" 170 | set timeName to do shell script "date +'%l:%M %p' | sed 's/^ //'" 171 | 172 | tell application "Bike" 173 | tell front document 174 | set y to my getOrMake(yearId, yearName, root row) 175 | set m to my getOrMake(monthId, monthName, y) 176 | set d to my getOrMake(dayId, dayName, m) 177 | select at make row at front of rows of d with properties {name:timeName} 178 | end tell 179 | end tell 180 | 181 | to getOrMake(getId, getName, rowContainer) 182 | using terms from application "Bike" 183 | tell container document of rowContainer 184 | if exists row id getId then 185 | return row id getId 186 | else 187 | tell rowContainer 188 | return make row at front with properties {id:getId, name:getName} 189 | end tell 190 | end if 191 | end tell 192 | end using terms from 193 | end getOrMake 194 | ``` 195 | -------------------------------------------------------------------------------- /customizing-bike/creating-shortcuts.md: -------------------------------------------------------------------------------- 1 | # Creating Shortcuts 2 | 3 | Create shortcuts to automate Bike and integrate it with other apps. If you are just interested in runnings shortcuts that someone else has written please see the [Using Shortcuts](../using-bike/using-shortcuts.md) section. 4 | 5 |

Creating a Bike Shortcut

6 | 7 | ### Overview 8 | 9 | When creating a Bike shortcut you will use Bike's provided actions to find and manipulate Bike's outlines and rows. In the above screenshot you can see a "Bike: Show Matches" shortcut that I'm creating. 10 | 11 | ### How to create shortcuts 12 | 13 | Shortcuts are a general purpose automation technology. I'm not the best one to teach them! Here's Apple's getting started page: 14 | 15 | * [Create a custom shortcut](https://support.apple.com/en-gb/guide/shortcuts-mac/apd84c576f8c/mac) 16 | 17 | ### How to use Bike actions 18 | 19 | To create shortcuts for Bike you'll need to learn how to use Bike's actions. There are a few ways you can go about this. 20 | 21 | {% hint style="info" %} 22 | No matter the approach, when experimenting with a shortcut that uses Bike, it's best to first open Bike and open a new outline where you can see the results of your experiments. 23 | {% endhint %} 24 | 25 | #### Just go for it 26 | 27 | The best thing about shortcuts is that "Just go for it" is a viable choice. There is no syntax to learn. Just drag actions into a shortcut, run the shortcut, and see what happens. For example right now you could try dragging Bike's "Create Row" action into a shortcut. Run it! 28 | 29 | #### Look at examples 30 | 31 | If you get stuck an example can help. I've created a short tutorial and some example shortcuts here in [this post](https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/). More examples may be found on Bike's [extension wiki](https://support.hogbaysoftware.com/t/bike-extensions-wiki/4810). If you create a shortcut that you like please add it to the wiki for others to learn from. 32 | 33 | #### Read the documentation 34 | 35 | Each Bike shortcut action comes with documentation describing the input parameters and what (if anything) the shortcut returns. To view this documentation mouse over the action in the Shortcuts app and click the (i) information button as seen here: 36 | 37 |

Click the (i) to see detailed documentation

38 | -------------------------------------------------------------------------------- /getting-started.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | {% embed url="https://vimeo.com/698171831" %} 4 | Bike: Structured Focused Writing 5 | {% endembed %} 6 | 7 | Bike is an outliner. 8 | 9 | Indent to create a structured outline. Fold this outline to hide details. Focus your outline to see specifics. Use your outline to track ideas, projects, writing, to-do lists. 10 | 11 | #### To create a row 12 | 13 | * Press the `Return` key to create a row 14 | 15 | #### To change a row's indentation level 16 | 17 | * Press the `Tab` key to indent a row 18 | * Press `Shift-Tab` key to unindent a row 19 | 20 | #### To show and hide detail in your outline 21 | 22 | * Click a row's triangle handle to collapse the row, hiding its contained rows 23 | * Click that same handle to expand the row, showing its contained rows 24 | 25 | #### To focus into a specific part of your outline, hiding everything else 26 | 27 | * Click the focus button to the right of a row's text. 28 | * Click that same focus button to unfocus an already focused row. 29 | * Use Go > Focus Heading… `Command-P` to focus any heading in your outline. 30 | 31 | **To format text in your outline** 32 | 33 | * Show the formatting popover with `Command-E` 34 | * Select formatting options from the popover with your mouse or with the single letter keyboard shortcuts displayed on the panel. 35 | 36 | That's it, just a few commands. Internalize these commands. _Learn the keyboard shortcuts_. Once you've done that Bike will be a great place for you to think. 37 | 38 | Next I suggest you read: 39 | 40 | * [Text Editing](using-bike/text-editing.md) 41 | * [Text Formatting](using-bike/text-formatting.md) 42 | * [Row Types](using-bike/row-types.md) 43 | * [Outline Editing](using-bike/outline-editing.md) 44 | * [Keyboard Shortcuts](keyboard-shortcuts.md) 45 | -------------------------------------------------------------------------------- /glossary.md: -------------------------------------------------------------------------------- 1 | # Glossary 2 | 3 | When describing an outline it's common to use the following terms: 4 | 5 | * _Branch_: A branch consists of an row together with all the rows that it contains. The row's children, the children's children, etc. 6 | * _Child_: The children of an row are the rows that it directly contains 7 | * _Handle_: The triangle to the left of each row 8 | * _Parent_: The parent of a row is the row that directly contains it 9 | * _Root_: The topmost row in an outline is the root row. The root isn't visible, instead the top level visible rows in Bike are children of this hidden root row. 10 | * _Sibling_: All children that have the same parent row are siblings 11 | -------------------------------------------------------------------------------- /keyboard-shortcuts.md: -------------------------------------------------------------------------------- 1 | # Keyboard Shortcuts 2 | 3 | This page lists important Bike specific keyboard shortcuts. Other shortcuts that are not listed here can be found when browsing Bike's application menus. Bike also support many standard [macOS shortcuts](https://support.apple.com/en-us/HT201236). 4 | 5 | ### Edit 6 | 7 | * Check Next: `Command-;` 8 | 9 | ### Format 10 | 11 | * Bold: `Command-B` 12 | * Italic: `Command-I` 13 | * Code: `` Shift-Command-` `` 14 | * Highlight: `Shift-Command-H` 15 | * Strikethrough: `Shift-Command--` 16 | * Add Link: `Command-K` 17 | * Add Row Link: `Command-Option-K` 18 | * Edit Formatting: `Command-E` 19 | * Clear Formatting: `Option-Command-Delete` 20 | 21 | ### Outline 22 | 23 | * New Row: `Return` 24 | * Indent Row: `Tab` or `Control-Command-Right` 25 | * Outdent Row: `Shift-Tab` or `Control-Command-Left` 26 | * Move Row Up: `Control-Command-Up` 27 | * Move Row Down: `Control-Command-Down` 28 | * Delete Rows: `Escape` to outline mode, then `Delete` or `Command-Shift-K` 29 | 30 | ### Expand / Collapse 31 | 32 | * Expand Row: `Command-0` or `Escape` to outline mode, then `Right` 33 | * Collapse Row: `Command-9` or `Escape` to outline mode, then `Left` 34 | * Expand Row Completely: `Control-Command-0` 35 | * Collapse Row Completely: `Control-Command-9` 36 | 37 | ### Go 38 | 39 | * Focus In: `Option-Command-Right` 40 | * Focus Out: `Option-Command-Left` 41 | * Focus Heading…: `Command-P` 42 | 43 | ### View 44 | 45 | * Toggle Focus mode: `Option-Command-F` 46 | * Toggle Typewriter Mode: `Option-Command-T` 47 | 48 | ### More 49 | 50 | * Toggle text/outline mode: `Escape` 51 | * Close Find Panel: `Escape` 52 | * Close Check Panel `Escape` 53 | -------------------------------------------------------------------------------- /software.md: -------------------------------------------------------------------------------- 1 | # Software Credits 2 | 3 | Bike uses the following open source software packages: 4 | 5 | * [CombineExt](https://github.com/CombineCommunity/CombineExt) 6 | * [GraphicsRenderer](https://github.com/shaps80/GraphicsRenderer) 7 | * [Motion](https://github.com/b3ll/Motion) 8 | * [Nucleo](https://github.com/helix-editor/nucleo) 9 | * [Preferences](https://github.com/sindresorhus/Preferences) 10 | * [Sparkle](https://sparkle-project.org) 11 | * [Swift Collections](https://github.com/apple/swift-collections) 12 | * [Swift Identified Collections](https://github.com/pointfreeco/swift-identified-collections) 13 | * [Swift Parsing](https://github.com/pointfreeco/swift-parsing) 14 | 15 | Bike also benifits from many friendly mac developers who answer my dumb questions so that I can get things to work. Thanks! 16 | -------------------------------------------------------------------------------- /using-bike/README.md: -------------------------------------------------------------------------------- 1 | # Using Bike 2 | 3 | First get oriented by reading [Getting Started](../getting-started.md). 4 | 5 | * [Text Editing](text-editing.md) 6 | * [Text Formatting](text-formatting.md) 7 | * [Row Types](row-types.md) 8 | * [Outline Editing](outline-editing.md) 9 | * [Outline Viewing](outline-viewing.md) 10 | * [Using Links](using-links.md) 11 | * [Using Find Panel](using-find-panel.md) 12 | * [Using Text Checking](text-checking.md) 13 | * [Using the Choice Palette](using-the-choice-palette.md) 14 | * [Using Text Wrap](using-text-wrap.md) 15 | * [Using Focus Mode](using-focus-mode.md) 16 | * [Using Typewriter Mode](using-typewriter-mode.md) 17 | * [Using Full Screen Mode](using-full-screen-mode.md) 18 | * [Using Navigation Bar](using-navigation-bar.md) 19 | * [Using Status Bar](using-status-bar.md) 20 | * [Using Windows](using-windows.md) 21 | * [Using Documents](using-documents.md) 22 | * [Using Scripts](using-scripts.md) 23 | * [Using Shortcuts](using-shortcuts.md) 24 | * [Using Outline Paths](using-outline-paths.md) 25 | * [Using Software Update](using-software-update.md) 26 | -------------------------------------------------------------------------------- /using-bike/outline-editing.md: -------------------------------------------------------------------------------- 1 | # Outline Editing 2 | 3 | ![Outline Editing](../.gitbook/assets/OutlineEditing.png) 4 | 5 | In addition to [Text Editing](text-editing.md) Bike supports outline editing mode. When in outline editing mode rows are fully selected and shown in a different color. 6 | 7 | #### To enter and exit outline editing mode 8 | 9 | * Press the `Escape` key to enter outline editing 10 | * Press the `Escape` key again to exit outline editing mode 11 | * Or Click to make a selection with your mouse to exit outline editing mode 12 | * Or press `Return` to create a new item and exit outline editing mode. 13 | * ...lots of ways out, use the `Escape` to enter! 14 | 15 | ### Outline Editing Commands 16 | 17 | In Outline Editing mode the arrow keys have different behavior: 18 | 19 | * `Left` Key\ 20 | Collapse expanded rows 21 | * `Right` Key\ 22 | Expand collapsed rows 23 | * `Up` Key\ 24 | Move up by row 25 | * `Down` Key\ 26 | Move down by row 27 | * `Space` Key 28 | 29 | Toggle rows _done_ status 30 | 31 | The row commands described in the [Text Editing](text-editing.md) section work differently too. They work on a row and all contained rows, not just individual rows. Movements are also restricted to the outline structure. 32 | 33 | * Outline > Duplicate (`Command-Shift-D`) 34 | * Outline > Delete (`Command-Shift-K`) 35 | * Outline > Indent (`Control-Command-Right`) 36 | * Outline > Outdent (`Control-Command-Left`) 37 | * Outline > Move Up (`Control-Command-Up`) 38 | * Outline > Move Down (`Control-Command-Down`) 39 | 40 | Give it a try. Create a small outline and then try the above commands. First in text editing mode, second in outline editing mode. You'll soon see and understand the differences. Outline Editing mode can save a lot of time. 41 | 42 | ### More Outline Editing Commands 43 | 44 | Some command work the same in both modes: 45 | 46 | * Outline > New Row (`Command-Return`)\ 47 | Insert a new row 48 | * Outline > Sort Rows 49 | 50 | Sort top level selected rows, or if only a single row is selected then sorts children of that row. 51 | * Outline > Group (`Option-Command-G`)\ 52 | Inserts a new row above the selection. And then moves the selection into that new row. 53 | * Outline > Move to Heading... (`Command-\`)\ 54 | Move selected rows to choosen heading row. 55 | -------------------------------------------------------------------------------- /using-bike/outline-viewing.md: -------------------------------------------------------------------------------- 1 | # Outline Viewing 2 | 3 | Bike has two great ways to view big outlines: 4 | 5 | 1. Collapse rows to see the big picture without being distracted by the details 6 | 2. Focus in to work on the details without being distracted by everything else 7 | 8 | #### To collapse rows in your outline 9 | 10 | ![Collapse](../.gitbook/assets/Folding.png) 11 | 12 | * Outline > Expand Row (`Command-0`) 13 | 14 | Expand selected row. 15 | * Outline > Collapse Row (`Command-9`) 16 | 17 | Collapse selected row. 18 | * Outline > Expand Row Completely (`Control-Command-0`)\ 19 | Expand the selected row and all rows that it contains. See all contained rows. 20 | * Outline > Collapse Row Completely (`Control-Command-9`)\ 21 | Collapse the selected row and all rows that it contains. This is a nice way to clean up a view, when you next expand the row its contained rows will still be collapsed. 22 | * Outline > Expand All (`Control-Command-0`) 23 | 24 | Expand all top level rows. 25 | * Outline > Collapse All (`Control-Command-9`) 26 | 27 | Collapse all top level rows. 28 | * Outline > Expand All by Level (`Shift-Command-0`) 29 | 30 | Find the minimum level that is collapsed. Expand all rows at that level. 31 | * Outline > Collapse All by Level (`Shift-Command-9`) 32 | 33 | Find the maximum level that is expanded. Collapse all rows at that level. 34 | 35 | #### To focus into your outline 36 | 37 | ![Focus In](../.gitbook/assets/Focusing.png) 38 | 39 | * Go > Focus In (`Option-Command-Right`) 40 | * Go > Focus Out (`Option-Command-Left`) 41 | * Go > Focus Heading… (`Command-P`) to quickly select and focus a heading. 42 | 43 | In [Outline Editing](outline-editing.md) mode you can use arrow keys to expand and collapse rows. 44 | -------------------------------------------------------------------------------- /using-bike/row-types.md: -------------------------------------------------------------------------------- 1 | # Row Types 2 | 3 |

Row Types

4 | 5 | Use row types to add another level of structure and meaning to your outlines. Add heading rows, task list rows, ordered list rows, and more. 6 | 7 | ### Using Row Types 8 | 9 | The easiest way to use row types is through Bike's new "smart row types" feature. In a new row, type one of the following markdown inspired shortcuts--followed by a space: 10 | 11 | | # | Heading | 12 | | ---------------------- | --------------- | 13 | | > | Blockquote | 14 | | \`\`\` | Code Block | 15 | | : | Note | 16 | | --- | Horizontal Rule | 17 | | \[], -\[], \[ ], -\[ ] | Task List | 18 | | 1. | Ordered List | 19 | | -, \*, + | Unordered List | 20 | 21 | The shortcut text is replaced and the row type is set. Row types are supported in both `.bike` and `.opml` outlines. If smart row types are not working, make sure you have checked Settings > Autocorrect > Use smart row types. 22 | 23 | #### Use the Formatting Popover 24 | 25 | Use the same Formatting Popover (`Command-E`) that you use for text formatting to also set row types. Open the popover, and then press the down arrow to get a list of availible row types to choose from. This is fast, and you don't have to remember any of the row type completions described above. 26 | 27 | #### Use the Format > Row menu 28 | 29 | This is slower then the above methods. I've added this option mostly so that you can assign a keyboard shortcut for a specific row type. I think learning the smart row type completions described above is better for most people. 30 | 31 | #### Tips and Tricks 32 | 33 | To change a row's type back to "body" place your text caret at the start of the row and press delete. Once the row is a "body" row then delete will work normally. 34 | 35 | To change a horizontal rule's row type back to "body" you can just start typing on the horizontal rule line. 36 | 37 | The current row's type is indicated in the bottom status bar. You can also click this indicator to change the type. 38 | -------------------------------------------------------------------------------- /using-bike/text-checking.md: -------------------------------------------------------------------------------- 1 | # Using Text Checking 2 | 3 | ![Checking Panel](../.gitbook/assets/CheckingPanel.png) 4 | 5 | Bike supports autocorrect, substitutions, user replacements, and spell checking. Bike's text checking interface is custom built, adopting and then improving upon macOS standard behavior. 6 | 7 | * [Bike: Improved macOS text checking](https://www.hogbaysoftware.com/posts/bike-improved-text-checking) 8 | 9 | ## Spelling and grammar check 10 | 11 | Bike will highlight spelling errors in your outline with a red zigzag underline. To fix a spelling error move the text caret to the end of the word. After a half second the text caret will bounce and a popup will show with a suggestion. 12 | 13 |
14 | 15 | Sometimes text checking can't guess a word. In that case the text caret still bounce when it tries, but no popup will show. Then you'll have to fix the spelling manually. This happens to me quite often because I really can't spell, or even come close sometimes! 16 | 17 | #### To find a text checking error 18 | 19 | * Edit > Checking > Check Next (`Command-;`) 20 | * Edit > Checking > Check Previous (`Command-:`) 21 | 22 | These commands both select the found error and show the text checking panel. In the text checking panel you can also select suggestions and change text checking options. 23 | 24 | ### What is checked? 25 | 26 | Checking will check the focused rows of your outline including collapsed rows. Check Next will expand collapsed rows to reveal and select the found error. Text that is code formatted will not be checked. 27 | 28 | ## Autocorrect 29 | 30 | Autocorrect is a collection of features that replace text that you've typed with something else. For example autocorrect will capitalize the first word in a sentence, fix a spelling, or expand a user replacement. 31 | 32 | Autocorrect is a challenging feature. While useful, it will always be wrong or unwanted some of the time. Bike accounts for this by making autocorrect predictable, visible, and reversible. 33 | 34 | ### Predictable 35 | 36 | In Bike autocorrect always happens when you end a word by typing a character such as a space, a period, or a question mark. 37 | 38 | Bike's autocorrect depends on current text caret position and the surrounding text. It doesn't take previous text caret positions into consideration. 39 | 40 | You might be used to avoiding autocorrect by typing the sequence Right Arrow followed by Left Arrow. That won't work in Bike since autocorrect doesn't depend on previous caret positions. 41 | 42 | In Bike just type. If a bad autocorrection happens use the Delete key to reverse it. Bike's approach requires fewer keystrokes and is more predictable. 43 | 44 | ### Visible 45 | 46 | Autocorrect replaces what you've typed with something else. Often this is helpful, but sometimes it is wrong. Bike makes each autocorrection easy to spot so you won't be surprised later. 47 | 48 | In Bike all autocorrected text is underlined with a blue zigzag line. This underline remains visible until you start typing a new word. If you move back into the original word the autocorrections will show again. 49 | 50 | ### Reversible 51 | 52 | Bike makes undoing the previous autocorrect easy. 53 | 54 | Press the Delete key and the autocorrect is reversed. You can also use undo (`Command-z`), but I find Delete to be faster. There is a preference to disable this special Delete behavior if you don't like it. 55 | 56 | You can also reverse an autocorrections by placing the text caret at the end of the corrected text. A popup will show allowing you to reverse that correction. 57 | 58 | ## Text checking panel 59 | 60 | To show the text checking panel use Edit > Checking > Show Checking or use the Check Next or Check Previous commands. They also show the text checking panel. 61 | 62 | #### To select a correction 63 | 64 | * Press the `Down` arrow to select any suggestion 65 | * Or type your own correction into the text field 66 | 67 | #### To apply a correction and find the next 68 | 69 | * Click the `Replace` button in the checking panel 70 | * Or press `Return` to apply the correction 71 | 72 | #### To apply a correction and return to work 73 | 74 | * Press `Option-Return` to apply the correction and return to work 75 | 76 | #### To hide the checking panel 77 | 78 | * Click the `Done` button in the checking panel 79 | * Or press the `Escape` key 80 | 81 | ### Checking panel options 82 | 83 | * _Show spelling_: Use macOS spell checker to perform spell checking, highlighting problems in your outline. 84 | * _Show grammar with spelling_: Use the macOS spell checker to perform grammar checking, highlighting problems in your outline. 85 | 86 | ### Autocorrect options 87 | 88 | Autocorrect options are accessible in the Bike > Settings > Autocorrect settings panel. Autocorrect options all apply only as you are typing. For example if you paste text into an outline that text is not autocorrected. 89 | -------------------------------------------------------------------------------- /using-bike/text-editing.md: -------------------------------------------------------------------------------- 1 | # Text Editing 2 | 3 | ![Text Editing](../.gitbook/assets/TextEditing.png) 4 | 5 | Text editing should work as you expect. This is a nice feature of Bike. Often outliner applications constrain text editing in various ways. Bike doesn't do that. 6 | 7 | ### Bike Text Editing 8 | 9 | In addition to expected text editing commands Bike also adds a few new ones. 10 | 11 | Selection commands: 12 | 13 | * Selection > Select Word (`Control-W`)\ 14 | Expand selection to word boundaries. 15 | * Selection > Select Sentence (`Control-S`)\ 16 | Expand selection to sentence boundaries. 17 | * Selection > Select Paragraph (`Shift-Command-L`)\ 18 | Expand selection to paragraph boundaries. 19 | * Selection > Select Branch (`Shift-Command-B`)\ 20 | Expand selection to branch boundaries. 21 | * Selection > Expand Selection (`Option-Command-Up`)\ 22 | Expand the selection up through the different boundary levels. 23 | * Selection > Contract Selection (`Option-Command-Down`)\ 24 | Undo previous Expand Selection command. 25 | 26 | Outline commands: 27 | 28 | * Outline > New Row (`Command-Return`)\ 29 | This is similar to pressing `Return`. The difference is that it will only insert a new row. Pressing `Return` will replace the selection with a newline to create the new row. 30 | * Outline > Duplicate (`Command-Shift-D`) 31 | * Outline > Indent (`Control-Command-Right`) 32 | * Outline > Outdent (`Control-Command-Left`) 33 | * Outline > Move Up (`Control-Command-Up`) 34 | * Outline > Move Down (`Control-Command-Down`) 35 | * Outline > Move to Heading... (`Command-\`) 36 | * Outline > Delete Rows (`Command-Shift-K`) 37 | 38 | {% hint style="info" %} 39 | Indent and Outdent are important and used frequently. There are multiple keyboard shortcuts to perform these two commands. First you can use `Tab` and `Shift-Tab`as described in [Getting Started](../getting-started.md). Second you can use the above arrow key based shortcuts. Third you can use `Command-]` and `Command-[`. 40 | {% endhint %} 41 | 42 | {% hint style="info" %} 43 | In text editing mode, these commands all work on individual rows, unconstrained by the outline structure. This is as you would expect in a text editor, but maybe different than you would expect if you are used to outliners. See [outline editing](outline-editing.md) for outline editing behavior. 44 | {% endhint %} 45 | -------------------------------------------------------------------------------- /using-bike/text-formatting.md: -------------------------------------------------------------------------------- 1 | # Text Formatting 2 | 3 | Bike supports bold, italic, code, highlight, and strikethrough text formatting. You can also insert links. 4 | 5 | Bike's rich text editing should be familiar, but also has a few innovations. My goal is to make Bike formatting precise like Markdown, but without all the syntax characters. Please watch this Rich Text Intro movie to see how the new features work: 6 | 7 | {% embed url="https://vimeo.com/758067700" %} 8 | Rich Text Intro 9 | {% endembed %} 10 | 11 | #### Link Buttons 12 | 13 | There is often an overlap between commands that activate links and commands that edit links. This can make both tasks more difficult. 14 | 15 | Bike solves this problem with link buttons. After each link a button is added. Click the button to activate the link. Click and edit the text normally without fear of activating the link. 16 | 17 | To edit the URL associated with a link right click on the link text or link button and choose "Edit Link" from the popup menu. 18 | 19 | #### Typing Affinity 20 | 21 | Rich text editing can be frustrating at formatting boundaries. There is no precise way to specify what formatting to apply when inserting text at a boundary. 22 | 23 | Bike solves this problem with a new concept: _Typing Affinity_. When your text caret is at a formatting boundary Bike attaches a new affinity bar to the bottom of the caret. Point that bar at the formatting you want applied to inserted text. 24 | 25 | #### Formatting Popover 26 | 27 | Rich text formatting is command based, to make text bold you need to use the bold command. This is strait forward, but can become slow if you can't remember the right keyboard shortcuts. 28 | 29 | Bike's formatting popover makes this easier. You only need to learn one keyboard shortcut (`Command-E`) to show the formatting popover. Once the popover is showing you can use single key shortcuts to apply formatting commands. These shortcuts are shown in the popover so you don't need to memorize them. 30 | 31 | #### Visible Typing Attributes 32 | 33 | Normally when you type, the text is formatted the same as surrounding text. But there are some cases where this isn't true. For example if you have an empty selection and choose "Bold" then the text you type will be different then the sourounding text. 34 | 35 | Bike indicates this hidden formatting state by showing the hidden attributes as part of the text caret. For example in the above example the bold "B" icon would show above the text caret. 36 | -------------------------------------------------------------------------------- /using-bike/using-documents.md: -------------------------------------------------------------------------------- 1 | # Using Documents 2 | 3 | From macOS User Guide: 4 | 5 | * [Open documents](https://support.apple.com/guide/mac-help/open-documents-mchl971293e1/12.0/mac/12.0) 6 | * [Create and work with documents](https://support.apple.com/guide/mac-help/create-and-work-with-documents-mchldc1dd114/12.0/mac/12.0) 7 | * [View and restore past versions of documents](https://support.apple.com/guide/mac-help/view-and-restore-past-versions-of-documents-mh40710/12.0/mac/12.0) 8 | 9 | ### Own Your Data 10 | 11 | Bike is a document based app that uses open file formats. 12 | 13 | This combination gives you full ownership of your data. Your notes and thoughts aren't locked behind a proprietary web-service. They aren't hidden away in a database available for [export only](https://twitter.com/andy\_matuschak/status/1452438176996347907). 14 | 15 | In Bike your data is fully within your control, stored in normal document files right on your computer. These files use open file formats. Even if you delete Bike from your computer you should still be able to view and edit your outlines. 16 | 17 | ### Format Options 18 | 19 | ![Format Options](../.gitbook/assets/formats.png) 20 | 21 | `.bike`: This is Bike's native format and the one I would recommend using. It supports all Bike features. It is also an HTML document – you can view Bike files in your web browser. 22 | 23 | `.opml`: This is a standard format for saving outlines. Use `.opml` if you wish to edit your outline with Bike and another [OPML compatible application](../bike-compatible-apps.md). 24 | 25 | `.txt`: Bike can also work with plain text files. The outline structure is determined by the leading tab indentation. Text files don't offer any good place to store metadata (such as item ids). For this reason some features (such as links to rows) will break when you close and then reopen a `.txt` based outline. 26 | 27 | ### Open Options 28 | 29 | When you open a document Bike can expand rows (or not) for you. To set which rows are expanded when you open a document use Settings > Document > When Open... 30 | 31 | This setting is for when you open a document while Bike is running. When Bike re-opens a document when starting it will restore the exact row expand/collapse state. For more information on restoring documents see [Using Windows](using-windows.md). 32 | 33 | ### File Extensions 34 | 35 | When you save a Bike document the filename will default to a `.bike`, `.opml`, or `.txt` file extension. This is usually what you want. 36 | 37 | If it's not what you want you have the option to use your own file extension. For example you may wish to save "Bike" files with a `.html` file extension, or you might want to save "Plain Text" documents with a `.md` file extension. 38 | 39 | #### To use a custom file extension 40 | 41 | * Type the file extension after the file name in the "Save As" text field in the document save panel. 42 | 43 | #### To load an outline that has a custom file extension 44 | 45 | Open the file normally and Bike with detect the content format. When Bike loads an unknown file extension it performs these steps: 46 | 47 | 1. Read as Bike, if that fails then... 48 | 2. Read as OPML, if that fails then... 49 | 3. Read as Plain Text, which should never fail 50 | 51 | These same steps are followed when reading text from the pasteboard. 52 | -------------------------------------------------------------------------------- /using-bike/using-find-panel.md: -------------------------------------------------------------------------------- 1 | # Using Find Panel 2 | 3 | ![Find Panel](../.gitbook/assets/Finding.png) 4 | 5 | Use the find panel to find text in your outline. 6 | 7 | #### To show the find panel 8 | 9 | * Use the menu Edit > Find > Find... (`Command-F`) 10 | 11 | #### To advance to the next match 12 | 13 | * Click the Next button in the find panel 14 | * Or use Edit > Find > Find Next (`Command-G`) 15 | 16 | The current match is highlighted brighter then other matches. 17 | 18 | #### To go back to the previous match 19 | 20 | * Click the Previous button in the find panel 21 | * Or use Edit > Find > Find Previous (`Shift-Command-G`) 22 | 23 | #### To replace the current match with the contents of the replace field 24 | 25 | * Click the replace button 26 | * Or press the `Return` key when the replace field has keyboard focus 27 | 28 | #### To replace all matches 29 | 30 | * Click the replace all button. Remember this will only replace all matches in the current focused region of your outline. 31 | 32 | #### To hide the find panel 33 | 34 | * Click the `Done` button in the find panel 35 | * Or press the `Escape` key 36 | 37 | ### What is Searched? 38 | 39 | Find will search the focused rows of your outline including collapsed rows. Find Next will expand collapsed rows to reveal and select the text that matches. 40 | 41 | ### Find Panel Options 42 | 43 | Find options show to the left of the search text field: 44 | 45 | `Aa` - Your search will be case sensitive. 46 | 47 | `""` - Your search will match whole words. 48 | 49 | `.*` - Your search will be interperted as a [regular expression](https://www.quora.com/What-are-the-best-resources-for-learning-regular-expressions). 50 | -------------------------------------------------------------------------------- /using-bike/using-focus-mode.md: -------------------------------------------------------------------------------- 1 | # Using Focus Mode 2 | 3 |

Focus Mode

4 | 5 | Focus Mode focuses the current word, sentence, or paragraph by diming out the rest of your outline. It's especially useful combined with [full screen mode](using-full-screen-mode.md) and [typewriter mode](using-typewriter-mode.md). 6 | 7 | #### To enable focus mode 8 | 9 | * View > Focus Mode > Enable Focus (`Option-Command-F`) 10 | * Alternatively you can use the "Options" menu on the left side of the status bar 11 | 12 | #### To configure focus mode 13 | 14 | * View > Focus Mode > Focus Word 15 | * View > Focus Mode > Focus Sentence 16 | * View > Focus Mode > Focus Paragraph 17 | 18 | #### To disable focus mode 19 | 20 | * View > Focus Mode > Disable Focus (`Option-Command-F`) 21 | * Alternatively you can use the "Options" menu on the left side of the status bar 22 | -------------------------------------------------------------------------------- /using-bike/using-full-screen-mode.md: -------------------------------------------------------------------------------- 1 | # Using Full Screen Mode 2 | 3 |

Full Screen Mode

4 | 5 | Full Screen Mode expands your outline editor window to fill the entire screen. It's great for blocking out distractions and is especially useful combined with [text wrap](using-text-wrap.md), [focus mode](using-focus-mode.md), and [typewriter mode](using-typewriter-mode.md). 6 | 7 | #### To enter full screen mode 8 | 9 | * View > Enter Full Screen (`Control-Command-F`) 10 | * Alternatively click the green window button and choose "Enter Full Screen" 11 | 12 | #### To exit full screen mode 13 | 14 | * View > Exit Full Screen (`Control-Command-F`) 15 | * Alternatively click the green window button and choose "Exit Full Screen" 16 | -------------------------------------------------------------------------------- /using-bike/using-links.md: -------------------------------------------------------------------------------- 1 | # Using Links 2 | 3 | ![Links](../.gitbook/assets/Links.png) 4 | 5 | Bike allows you to insert links into your outline. 6 | 7 | Bike also automatically detects URLs that you type. 8 | 9 | Anytime there is a link in your document Bike will insert a "link button" after that link. 10 | 11 | * Click the link button to activate the link. 12 | * Or use Go > Open Link (`Command-Shift-O`) to activate links. 13 | * Click and edit the link text without fear that you'll activate the link. 14 | * To edit the URL associated with a link right click on the link text or link button and choose "Edit Link" from the popup menu. 15 | 16 | More information on formatting and activating links can be found in the [text-formatting.md](text-formatting.md "mention") section. 17 | 18 | ### Bike Row Links 19 | 20 | Bike includes its own link type that allows you to link directly to a row in your outline. When activating a Bike link you can: 21 | 22 | * `Command-Click` to open a Bike link in a new tab 23 | * `Command-Option-Click` to open a Bike link in a new window 24 | 25 | Bike links are normal URLs. You can paste them into other apps and they'll continue to work as long as Bike is installed on your computer. For example you can paste a Bike link into Apple's Notes app and when you click that link it will open Bike and select the linked row. 26 | 27 | Bike links have this pattern: 28 | 29 | ``` 30 | bike:///# 31 | ``` 32 | 33 | * `` The id of the root node of the document that you are linking too. 34 | * `` The id of the row that should be focused after activating the link. This is optional. 35 | * `` The id of the row that should be selected after activating the link. This is optional. 36 | 37 | Here's what an actual Bike link looks like: 38 | 39 | ``` 40 | bike://KOcw9x9N/ch#zf 41 | ``` 42 | 43 | #### To create a Bike link: 44 | 45 | * Use Format > Add Link to Row… `Command-Option-K` to quickly select a row and insert a link to that row. 46 | * Use Edit > Copy > Row Link `Shift-Command-C` to copy a link to the selected row. If your view is focused when you copy then the link will also include the focused row id. 47 | 48 | Alternatively you can drag a row by its triangle handle and then hold down the `Control` key before releasing the mouse. A link to the dragged row will be inserted into your outline. 49 | 50 | ### Bike Path Row Links 51 | 52 | Bike links also have an alternative form. Bike path row links use a file path to locate the associated outline file instead of using the outline's id. 53 | 54 | This is a Bike path link: 55 | 56 | ``` 57 | bike:///Users/jessegrosjean/Documents/todo.bike#aF 58 | ``` 59 | 60 | Path row links are more likely to break than standard Bike links. If you move or rename the linked to outline then the link will break. I generally recommend using normal Bike links. 61 | 62 | #### To create a Bike path row link: 63 | 64 | * Use Edit > Copy > Path Row Link to copy a path row link to the selected row. 65 | 66 | ### What if a link stops working? 67 | 68 | Links can "break" for some obvious and non-obvious reasons. 69 | 70 | * Create a link to a document and then delete that document. When you activate the link the document won't be found. This is probably not surprising! 71 | * Create a link to a row in a document and then delete that row. When you activate the link the document will be opened, but you'll get a warning that the linked row could not be found. 72 | * Bike uses Spotlight searches to resolve links. It associates the outline id with the document file and then searches for that id using Spotlight. This means if something is going wrong with Spotlight then your links won't work. This is a temporary problem, they will work again once the document id is again indexed with Spotlight. 73 | * Another problem with spotlight searches is that they only find documents that Bike already has Sandbox permission to open. If Bike does not have permision to open the document it won't be included in the results, and the link won't work. See Sandbox Requirements. 74 | * This association between a document file and root id is done by setting the `com.apple.metadata:kMDItemIdentifier` extended file attribute each time Bike saves a file. This means if a file's extended attributes are somehow lost then links to that file will break until next time the file is opened and saved through Bike. 75 | * If you have two outline documents with the same outline id (for example if you duplicate an outline file) then links to that root id will open both documents. 76 | 77 | ### Sandbox Requirements 78 | 79 | Bike is a sandboxed app. That means it can only read files that you give it permission to read. The most common way that you give permission is by opening the file in Bike... for example when you use File > Open that has side effect of giving Bike permission. Another common way is by storing your file in Bike's iCloud folder... Bike always has permission to read that folder. 80 | 81 | When you link to a row in a Bike outline Bike resolve the link using a Spotlight search. Unfortunately only files that Bike has permission to read will show up in that search... so if a link seems broken, it may be that you don't have permission to read the file. This can be fixed in two ways: 82 | 83 | 1. Move the link target outline document to a location that it does have permission to read, such as Bike's iCloud folder. 84 | 2. Grant Bike access to the location where you are storing the link target outline document. You can do this using Bike > Settings > Sandbox. 85 | 86 | Sandbox behavior can be quite confusing. For example when you open a file in Bike then Bike is granted access to read/write that file. When you close that document Bike retains the right to read/write that file, as long as the document is in your recent documents list. Once it is no longer in your recent documents list, then Bike won't be able to read/write the file. 87 | -------------------------------------------------------------------------------- /using-bike/using-navigation-bar.md: -------------------------------------------------------------------------------- 1 | # Using Navigation Bar 2 | 3 |

Navigation Bar

4 | 5 | Bike's optional navigation bar, at the top of the window, gives you quick access to back / forward buttons and navigation breadcrumb items that show you where you are focused in your outline. 6 | 7 | Click the back button to go back to previously focused rows. Click a navigation breadcrumb item to show a menu, select a row, and focus into that row. 8 | 9 | #### To show the navigation bar 10 | 11 | * View > Show Navigation Bar (`Option-Command-/`) 12 | 13 | #### To hide the navigation bar 14 | 15 | * View > Hide Navigation Bar (`Option-Command-/`) 16 | -------------------------------------------------------------------------------- /using-bike/using-outline-paths.md: -------------------------------------------------------------------------------- 1 | # Using Outline Paths 2 | 3 | ## What is an outline path? 4 | 5 | On your computer you use file paths to locate files. 6 | 7 | Outline paths are similar, but used to locate rows in your outline. Simple outline paths look just like file paths. More powerful outline paths that work more like database queries are also possible. 8 | 9 | One important difference between outline paths and file paths is that outline paths often locate many rows, while file paths locate individual files. 10 | 11 |
12 | 13 | Propellor Heads: Outline paths are related to XPath 14 | 15 | If you already know what [XPath](https://developer.mozilla.org/en-US/docs/Web/XPath) is then you are well on your way to understanding Bike outline paths. Outline paths have a different syntax, but the underlying query model is almost exactly the same. 16 | 17 |
18 | 19 | ### Where are outline paths used? 20 | 21 | Outline paths don't do much on their own, but they are an important building block for other features. Here are some places where they are being used today: 22 | 23 | 1. Bike's AppleScript dictionary contains a `query` command that takes an outline path and returns the path result. 24 | 2. Bike Shortcut actions contain a "Query Rows" action that takes an outline path and returns matching rows. 25 | 3. The Choice Palette settings uses an outline path to specify the initial set of rows to be displayed in the choice palette before filtering is performed. 26 | 27 | In future Bike releases I expect outline paths to start taking a more central role. For example they will be an important part of Bike's stylesheet/theme system. They will also be an important part of filtering Bike outlines. 28 | 29 | ### Outline Path Explorer 30 | 31 |

Outline Path Explorer

32 | 33 | Use the Outline Path Explorer to play with outline paths and learn how they work. 34 | 35 | #### To open the Outline Path Explorer: 36 | 37 | 1. Open the outline that you would like to query 38 | 2. Open menu Window > Outline Path Explorer 39 | 40 | Type an outline path in the top text field in the Outline Path Explorer window. The path results are displayed in a label to the trailing side of the search field. Matching rows are highlighted in green. Matching text runs are highlighted in darker green. Last you see a diagnostics text area that shows how your outline path was understood. 41 | 42 | The outline shown in the Outline Path Explorer shows outline text and all outline attributes. For example above each row you will see `@id`, `@level`, and `@type` because every row has those attributes. You might also see other attributes, for example a checked off task will include a `@done` attribute. There are the attributes you can use in your outline paths. 43 | 44 | ### Basic Paths 45 | 46 | Unlike file paths the default test is "contains text" instead of "equals file name". Outline paths often have multiple matching rows. 47 | 48 | * `/a` 49 | 50 | Select top level rows containing "a" 51 | * `/a/b` 52 | 53 | Select "b" children of top level "a" rows 54 | * `.a` 55 | 56 | A relative path that selects the current row if it contains "a". Generally you won't need to use relative paths. But it's good to know that they exist, and good to know that paths need to start with `/` or `.` to match rows. Otherwise see "Value Expressions". 57 | 58 | ### Path Expressions 59 | 60 | Use `union`, `except`, and `intersect` to combine the results of multiple outline paths. 61 | 62 | * `/a union /b` 63 | 64 | Top level rows that contain "a" or "b" 65 | * `/a except /b` 66 | 67 | Top level "a" rows removing "b" rows 68 | * `/a intersect /b` 69 | 70 | Top level rows that contain "a" and "b" 71 | * `(/a union /b) except /c` 72 | 73 | Top level rows that contain "a" or "b", but not "c" 74 | 75 | ### Path Steps 76 | 77 | Paths are divided into steps. For example the path `/a/b` has two steps. Each step contains filtering logic. You don’t have to include all filtering options in each step. For example the following steps have the same behavior. 78 | 79 | * `/a` 80 | 81 | Simple top level contains "a" 82 | * `/* a` 83 | 84 | Same behavior as above, but makes the row type test explicit. `*` means match "any" row type. 85 | * `/* @text contains "a"` 86 | 87 | Same behavior as above, but makes the predicate test explicit. See "Step Predicate" below to learn how predicates work. 88 | 89 | #### Step Axes 90 | 91 | By default each step passes the children of the matched rows to the next step. This is because "child" is the default axis. Other axes are also possible. 92 | 93 | For example, say you want to search your entire outline for the text "pizza". That would be difficult if each step could only process the children of the previous step. To search the entire outline we would need to keep creating longer paths to seach each level of the outline: 94 | 95 | * \`/pizza\` 96 | * \`/\*/pizza\` 97 | * \`/\*/\*/pizza\` 98 | 99 | To solve this we can use the "descendant" axis. It selects all descendants of the rows passed into the step. You can search for pizza anywhere in your outline using the `//` descendant axis like this: 100 | 101 | * `//pizza` 102 | 103 | Descendant axis, selects all descendants of the outline root. They are then filtered to only the ones that contain pizza. 104 | 105 |
106 | 107 | Advanced step axes 108 | 109 | Another useful axis is "parent". This uses the same `..` sytax that file paths use to go to the parent directory. 110 | 111 | * `//pizza/..box` 112 | 113 | First use the descendant access to find "pizza". Then use the `..` parent axis select the parents of those "pizza" rows, and then filter those parents to those that contain "box. You've found the pizza boxes! 114 | 115 | The above examples use the shortcut form of the descendant and parent axes. There is also a more general form where you enter the axis name followed by `::`. This is needed because there are more axes and some don't have shortcut forms: 116 | 117 | * `ancestor::` 118 | 119 | All ancestors of the rows passed into the step 120 | * `ancestor-or-self::` 121 | 122 | All rows passed into the step and their ancestors 123 | * `parent::` or shortcut `..` 124 | 125 | All parents the rows passed into the step 126 | * `self::` or shortcut `.` 127 | 128 | All rows passed into the step 129 | * `child::` 130 | 131 | All children of the rows passed into the step 132 | * `run::` 133 | 134 | All text runs of the rows passed into the step. This step is unique because you are filtering on text runs and their attributes, not rows. This query uses the text run axis to find all bold text in your outline `//*/run::@strong`. 135 | * `descendant::` or shortcut `//` 136 | 137 | All descendants of the rows passed into the step 138 | * `descendant-or-self::` or shortcut `///` 139 | 140 | All rows passed into the step and their descendants 141 | * `following-sibling::` 142 | 143 | All siblings after the rows passed into the step 144 | * `following::` 145 | 146 | All rows (in outline) following the rows passed into the step 147 | * `preceding-sibling::` 148 | 149 | All siblings before the rows passed into the step 150 | * `preceding::` 151 | 152 | All rows (in outline) before the rows passed into the step 153 | 154 |
155 | 156 | #### Step Type 157 | 158 | Each step can include a row type test at the start. 159 | 160 | * `//task` 161 | 162 | Match all rows of type task 163 | * `/heading//task` 164 | 165 | Match all tasks that are contained by a top level heading. 166 | * `//"task"` 167 | 168 | Match all rows that contain the text "task". When you want to search for text that in some way conflicts with outline path syntax put that text in quotes to make it a value. 169 | 170 |
171 | 172 | List of row types 173 | 174 | * `body` 175 | * `heading` 176 | * `quote` 177 | * `code` 178 | * `note` 179 | * `unordered` 180 | * `ordered` 181 | * `task` 182 | * `hr` 183 | * `*` Matches any type 184 | 185 |
186 | 187 | #### Step Predicate 188 | 189 | Each step can include a predicate test. You can then combine predicates with `and`, `or`, and `not`. Use `@` to name the row attribute to testing against. 190 | 191 | * `//@done` 192 | 193 | Matches rows that have a @done attribute. 194 | * `//not @done` 195 | 196 | Matches rows that do not have a @done attribute. 197 | * `//@text contains "get rich"` 198 | 199 | Match rows that contain the text "get rich". This example uses the `contains` relation. 200 | * `//@text contains "get rich" and not @done` 201 | 202 | Combine predicates. Use it to find all rows that will make you rich and are unfinished! 203 | 204 |
205 | 206 | More on row attributes 207 | 208 | Each row in your outline has associated attributes that you can use in outline path predicate tests. 209 | 210 | Some attributes are built in to all rows, other attributes are optional and maybe be set by scripts or other features within Bike. For example when you click the checkmark of a task row it adds the @done attribute. 211 | 212 | Open Window > Outline Path Explorer and notice that the outline view showns each row's attributes. The built in attributes include: 213 | 214 | * `@id` 215 | * `@type` 216 | * `@level` 217 | * `@text` 218 | 219 |
220 | 221 |
222 | 223 | More on comparison relations 224 | 225 | Use the following relations in your comparision predicates: 226 | 227 | * `beginswith` 228 | * `contains` 229 | * `endswith` 230 | * `matches` 231 | * `=` 232 | * `!=` 233 | * `<` 234 | * `<=` 235 | * `>` 236 | * `>=` 237 | 238 | Use relation modifiers in brackets after the relation to change how it is evaluated. For example `beginswith[s]` will perform a case sensitive test instead of the default case insensitive test. The available modifiers are: 239 | 240 | * `i` Case insensitive compare (default) 241 | * `s` Case sensitive compare 242 | * `n` Numeric compare 243 | 244 | Values are converted to numbers before comparing. This means `"01"` will equal `"1.0"`, which is not true when doing the default string compare. 245 | 246 |
247 | 248 | #### Step Slice 249 | 250 | Each step produces a list of ordered matches. Use position based slicing if you want to limit the step results by position. 251 | 252 | * `//a[1]` 253 | 254 | Match the first row that contains "a" 255 | * `//a[-1]` 256 | 257 | Match the last row that contains "a" 258 | * `//a[2:]` 259 | 260 | Match rows 2 through last that contain "a". 261 | * `//a[2:-1]` 262 | 263 | Match rows 2 through last that contain "a". 264 | * `//a[2:-2]` 265 | 266 | Match rows 2 through last -1 that contain "a". 267 | * `//a[2:4]` 268 | 269 | Match second, third, and fourth rows that contain "a". 270 | 271 | ### Value Expressions 272 | 273 | You have already seen many value expressions such as `a`, `"a"`, and `@attribute`. They all generate a value that can be used in your outline path logic. Here are all the value expressions supported in outline paths: 274 | 275 | * `hello world` 276 | 277 | Unquoted text value expression that evaluates to `hello world`. 278 | * `"hello world"` 279 | 280 | Quoted text value expression that evaluates to `hello world`. Quoting is need when your text conflicts with other outline path syntax. 281 | * `@attribute` 282 | 283 | Attribute value expression that returns the value of the attribute named "attribute" for the current row (or current run when using the `run::` axis). This value expression will always return `nil` if it's not used within a path step. 284 | * `count(//a)` 285 | 286 | Function value expression that returns the count of rows containing "a". 287 | * `$variable` 288 | 289 | Variable value expression that returns the value of the variable named "variable". Currently no variables are set, but in the future I think they will be important for some advanced features. For example `$now` will be current time. `$focused` will be id of focused row. Those will be useful for outline paths in stylesheets. 290 | * `1` or `(1 + 1) / 2` 291 | 292 | Math value expression that evaluates to `1`. Math operators (`+`, `-`, `*`, `/`) require single whitespace on either side. This is so `/` doesn't conflict with path step separator. It doesn't make sense to use Math operators with text. `1 + "1"` is an invalid path. `1 + @attribute` is ok, but will return `nan` if the attribute can't be converted to a number. You aren't likely to need math expressions in your path with Bike's current features, but I think they will become more useful as outline paths evolve. 293 | 294 | If you don't start your outline path with a `/` or a `.` then it is treated as a value expression. For example try typing `1 + 2` in the Outline Path Explorer and note how no rows are matched, but the result of the value expression is displayed trailing the text field. 295 | 296 | Using value expressions in this way isn't terribly useful right now... but it's a fun trick! :) 297 | -------------------------------------------------------------------------------- /using-bike/using-scripts.md: -------------------------------------------------------------------------------- 1 | # Using Scripts 2 | 3 | Use scripts to automate Bike and integrate with other apps. You can find existing Bike scripts on Bike's [extension wiki](https://support.hogbaysoftware.com/t/bike-extensions-wiki/4810). This section shows how to run scripts that someone else has written. If you want to create your own scripts please see the [Creating Scripts](../customizing-bike/creating-scripts.md) section. 4 | 5 | #### To try a script: 6 | 7 | ![](<../.gitbook/assets/Screen Shot 2022-05-05 at 12.25.09 PM.png>) 8 | 9 | 1. Open the "Script Editor" application that comes with your Mac. 10 | 2. Paste the following script into a new editor window. 11 | 3. Make sure that the scripting language is set to "AppleScript". (Use `View > Show Navigation Bar` if no language selector is displayed at the top left of the document). 12 | 4. Press the "Play" button to run the script. This script will create a new document named "Testing!". It deletes any welcome text that may be inserted into the document. Then it adds a "Hello" row to the document that contains a "World" row. 13 | 14 | ``` 15 | tell application "Bike" 16 | tell (make document with properties {name:"Testing!"}) 17 | delete every row -- remove any welcome text 18 | tell (make row with properties {name:"Hello"}) 19 | make row with properties {name:"World"} 20 | end tell 21 | end tell 22 | end tell 23 | ``` 24 | 25 | #### **To test a script given to you by someone else:** 26 | 27 | I recommend that you first close your documents and create a new test document before running the script. You want to be sure that the script does what you want it to do, before you run it on your real work! 28 | 29 | **To install a script in the system script menu:** 30 | 31 | Open Script Editor and choose Help > Script Editor Help. Search for the help section "Access your scripts using the Script menu". That will lead you through the steps of enabling and saving scripts into the system script menu. 32 | 33 | You can also use [FastScripts](http://www.red-sweater.com/fastscripts/) or [Keyboard Maestro](http://www.keyboardmaestro.com/main/) to run your scripts with assigned keyboard shortcuts. 34 | -------------------------------------------------------------------------------- /using-bike/using-shortcuts.md: -------------------------------------------------------------------------------- 1 | # Using Shortcuts 2 | 3 | Shortcuts[^1] are a new automation technology available on Apple platforms. 4 | 5 | They are similar in capability to AppleScript, but easier to get started with and actively developed by Apple. They are the new automation thing. 6 | 7 | You can use shortcuts with Bike on macOS 13 and later. Find Bike specific shortcuts on the [extension wiki](https://support.hogbaysoftware.com/t/bike-extensions-wiki/4810). If you want to create your own shortcuts see [Creating Shortcuts](../customizing-bike/creating-shortcuts.md). This post introduces[ shortcuts in Bike](https://www.hogbaysoftware.com/posts/bike-automate-with-shortcuts/). 8 | 9 | [Apple's macOS shortcuts documentation](https://support.apple.com/en-gb/guide/shortcuts-mac/apdf22b0444c/mac) teaches you how to run shortcuts, place then in your menu bar, assign _keyboard shortcuts_, and more. 10 | 11 | [^1]: These are not the same as _keyboard shortcuts_. 12 | -------------------------------------------------------------------------------- /using-bike/using-software-update.md: -------------------------------------------------------------------------------- 1 | # Using Software Update 2 | 3 | If you are using the direct download version of Bike then you can control when to check for updates and what kinds of updates to check for. If you are using the Mac App Store version of Bike then updates are handled by the Mac App Store. 4 | 5 | For the direct download version of Bike: 6 | 7 | #### To check for updates: 8 | 9 | * Use Bike > Check for Updates 10 | 11 | #### To check for updates automatically: 12 | 13 | * Use Bike > Preferences > Check for Updates: Automatically 14 | 15 | #### To include preview release updates: 16 | 17 | * Use Bike > Preferences > Check for Updates: Include Preview Releases 18 | 19 | Preview releases work in cycles. I will post a series of preview releases and then once things are working well I will mark the last preview release as final. 20 | 21 | You can tell if you are using a preview release by looking in the menu bar. If you are running a preview release then instead of seeing "Bike" you will see something similar to "Bike 1.0 Preview (51)". 22 | 23 | The "Preview" status of a release is determined by the software update process. If you are running a preview release and I then mark that build as final your Bike install will transition from "Preview" to final next time you check for updates. 24 | -------------------------------------------------------------------------------- /using-bike/using-status-bar.md: -------------------------------------------------------------------------------- 1 | # Using Status Bar 2 | 3 |

Status Bar

4 | 5 | Bike's optional status bar, at the bottom of the window, gives you quick access to options and text statistics. When an option is set the options button will highlight. 6 | 7 | Text statistics are optionally shown in the status bar. To configure the statitics shown click the text statistics status item and check the statistics that you want to see. If no statistics are visible to click in the status bar then use View > Text Statistics to show the statistics popover. 8 | 9 | #### To show the status bar 10 | 11 | * View > Show Status Bar (`Command-/`) 12 | 13 | #### To hide the status bar 14 | 15 | * View > Hide Status Bar (`Command-/`) 16 | 17 | -------------------------------------------------------------------------------- /using-bike/using-text-wrap.md: -------------------------------------------------------------------------------- 1 | # Using Text Wrap 2 | 3 |

Text wrap adds margins

4 | 5 | Text wrap limits the number of characters that your outline uses until the text wraps to the next line. When text is wrapping margins are added to keep the text centered in the window. You can see text wrap in effect in the above screenshot. 6 | 7 | Text wrap will also scale your document to fit large windows. For example if you have text wrap enabled and then enter [fullscreen mode](using-full-screen-mode.md) you'll notice that the text is scaled larger to better fit your screen. If you wish to disable this scaling you can do so from Bike's editor settings. 8 | 9 | #### To enable text wrap 10 | 11 | * View > Text Wrap > Wrap to Column 12 | 13 | #### To disable text wrap 14 | 15 | * View > Text Wrap > Wrap to Window 16 | 17 | -------------------------------------------------------------------------------- /using-bike/using-the-choice-palette.md: -------------------------------------------------------------------------------- 1 | # Using the Choice Palette 2 | 3 | Quickly find and select items in long lists. Bike's choice palette is used by the "Go > Focus Heading" and "Format > Add Link to Row" commands. In the future I expect the choice palette to show up in other places too. 4 | 5 |

Choice palette

6 | 7 | #### To make a choice 8 | 9 | * Use up/down arrow keys (or mouse) to select an item 10 | * Press Return key to select choice and close the palette 11 | * Press Escape key to close the palette without selecting an item 12 | 13 | #### To filter the available choices 14 | 15 | Filtering is really fast, even in big outlines! 16 | 17 |

Choice palette while filtering

18 | 19 | * Start typing to filter the list 20 | * Filtering is "fuzzy". Matches must have all searched letters, but they can also have unmatched letters between. 21 | * Results are ordered by how well they match, this can be configured in the palettes settings. 22 | * Acronym filtering (first letter of each word) works well when looking for shorter "topic" rows. 23 | * Filter method can be customized with special characters: 24 | * Insert `!` at the start to invert the matching 25 | * Insert `'` at the start to use substring matching 26 | * Insert `^` at the start to use prefix matching 27 | * Insert `$` at the end to use suffix matching 28 | 29 | When you filter your list the containing parent items of each match are always included in the results, even if those containing items don't match. 30 | 31 | ### Choice Palette Settings 32 | 33 | To the right of the filter field is the settings button. Each choice palette has its own settings. The settings for "Focus Heading" can be different then the settings for "Add Link to Row". 34 | 35 | #### Sort by match quality 36 | 37 | When checked the best matches are shown first. Otherwise the outline is only filtered, leaving items in natural order. 38 | 39 | #### Remove duplicate containing parent items 40 | 41 | When the above sorting option is selected you might see duplicate containing parent items in your filter results. 42 | 43 |

No filter, sorted matches, sorted matches + remove duplicates

44 | 45 | 1. Unfiltered list 46 | 2. Filtered list, matches sorted. 47 | * Notice how item "one" shows up in the list twice. This is because the results are ordered and item "two > a" shows up after item "one > a", but before item "one > ba". 48 | * This view is nice because you see all top matches at the top of your list. The drawback is that you may see duplicate containing items, sibling matches are not always listed together. 49 | 50 | 51 | 3. Filtered list, matches sorted, duplicates removed. 52 | * Notice that now the list contains no duplicates. 53 | * This view is nice because the sibling items "one > a" and "one > ba" are next to each other and there are no duplicates. The drawback is that while the item "two > a" is the second best match, it is shown in the third position. 54 | 55 | #### Outline Path 56 | 57 | Use the "outline path" setting to specify the rows that you'll see and filter. 58 | 59 | For example the "Focus Heading" commands shows "heading" type and top level rows by default. If you would like to see different rows when you "Focus Heading" you can do that by customizing the outline path. 60 | 61 | {% content-ref url="using-outline-paths.md" %} 62 | [using-outline-paths.md](using-outline-paths.md) 63 | {% endcontent-ref %} 64 | -------------------------------------------------------------------------------- /using-bike/using-typewriter-mode.md: -------------------------------------------------------------------------------- 1 | # Using Typewriter Mode 2 | 3 | Typewriter Mode centers your text caret vertically in the window as you type. This keeps the text you are working on, and surrounding text, easily visible. It's especially useful combined with [full screen mode](using-full-screen-mode.md) and [focus mode](using-focus-mode.md). 4 | 5 | #### To enable typewriter mode 6 | 7 | * View > Typewriter Mode > Enable Typewriter (`Option-Command-T`) 8 | * Alternatively you can use the "Options" menu on the left side of the status bar 9 | 10 | #### To configure typewriter mode 11 | 12 | Typewriter mode centers your text caret by default. You can also choose "top" or "bottom" to have typewriter mode position your cursor nearer the top or bottom of the window. 13 | 14 | * View > Typewriter Mode > Typewriter Top 15 | * View > Typewriter Mode > Typewriter Center 16 | * View > Typewriter Mode > Typewriter Bottom 17 | 18 | #### To disable typewriter mode 19 | 20 | * View > Typewriter Mode > Disable Typewriter (`Option-Command-T`) 21 | * Alternatively you can use the "Options" menu on the left side of the status bar 22 | -------------------------------------------------------------------------------- /using-bike/using-windows.md: -------------------------------------------------------------------------------- 1 | # Using Windows 2 | 3 | From macOS User Guide: 4 | 5 | * [Manage app windows](https://support.apple.com/guide/mac-help/work-with-app-windows-mchlp2469/12.0/mac/12.0) 6 | * [Use tabs in windows](https://support.apple.com/guide/mac-help/use-tabs-in-windows-mchla4695cce/12.0/mac/12.0) 7 | * [See open windows and spaces in Mission Control](https://support.apple.com/guide/mac-help/open-windows-spaces-mission-control-mh35798/12.0/mac/12.0) 8 | 9 | ### Bike Window Options 10 | 11 | #### To make a window float above all other windows 12 | 13 | * Check the menu item Window > Float on Top 14 | * Uncheck that same menu item to restore normal behavior. 15 | 16 | #### To open a single document in multiple windows 17 | 18 | ![Multiple Window Views](../.gitbook/assets/Windows.png) 19 | 20 | * Use the menu item Window > Duplicate Tab to New Window 21 | * Each window maintains its own selection, focused row, and expanded row. 22 | 23 | #### To open a single document in multiple tabs 24 | 25 |

Multiple Tab Views

26 | 27 | * Use the menu item Window > Duplicate Tab 28 | * Each tab maintains its own selection, focused row, and expanded row. 29 | 30 | #### To open multiple document in a single window in separate tabs 31 | 32 | * Use the menu item File > New Tab (`Option-Command-N`) to open a new untitled document in a new tab. (Must hold down `Option` to see that menu item. 33 | * Use the menu item Window > Merge All Windows to merge all windows into a single window with multiple tabs. 34 | * You can also drag existing tabs from window to window when the tab bar is visible. The tab bar is always visible if a window has multiple tabs... to make it visible when only a single tab is present use the menu View > Show Tab Bar. 35 | 36 | ### Bike Window Restoration 37 | 38 | macOS has a standard feature that saves windows when you quit an application and restores them next time you open the application. 39 | 40 | To have your windows restored you need to make sure that Bike doesn't close windows before it quits. There is a system setting for this "Close windows when quitting an app", but I have found that many users want to use a separate setting for Bike, without changing that system setting. 41 | 42 | Bike no longer uses the system setting. Instead to leave windows open when quitting Bike you should open Settings > Document. And then make sure that "When quitting Bike: Close documents" is _not_ checked. After you've done that then Bike should restore your open windows and the focused row, collapsed rows, and the selection. 43 | 44 | #### Bike "Secondary" Restoration 45 | 46 | If standard macOS Window Restoration, described above, is not available then Bike will use secondary restoration. Secondary restoration restores only Bike outline state such as expanded rows, focused row, and selection. It does not restore windows, a new default window is created when opening your outline document. 47 | 48 | -------------------------------------------------------------------------------- /why-bike.md: -------------------------------------------------------------------------------- 1 | # Why Bike? 2 | 3 | > We were promised bicycles for the mind, but we got aircraft carriers instead – Jonathan Edwards 4 | 5 | That's why I'm building Bike. 6 | 7 | 8 | 9 | I think macOS needs more "bicycles for the mind". Bike is small enough to fully understand. Once understood it's flexible enough to be used for many purposes. 10 | 11 | Bike is small, but designed for real work. It’s fast. It can handle big outlines that break other outliners. Bike’s also fast at the basics–opening files, scrolling views, and resizing windows. Bike won’t slow your Mac down. 12 | 13 | Bike makes your work open and accessible. Outlines are stored in text files using standard file formats. Bike is also scriptable. Automate and extend Bike into your own workflows with scripts. 14 | 15 | Bike is just getting started. I’ve been building on the outliner idea for a long time, Bike is the next chapter. I hope you’ll give it a try, get a license, and let me know what to improve for the next release. 16 | --------------------------------------------------------------------------------