Opuscule 0.3.1: Navigation panel and themes

It’s time for a new Opuscule release, with a major usability improvement: you can now hit F3 to toggle a navigation panel, which will display either a list of all your books, a list of the current book’s pages, or both. The list items are clickable, so you can now use your mouse to jump instantly between books and pages instead of using Esc and the arrow keys.

Speaking of arrows keys, this update also involves two noticeable changes.

The first one might disturb your habits, because left and right are now used to navigate books, and up and down to navigate pages. A vertical flow for pages seemed more natural since we already use the mouse wheel, and it just makes more sense visually regarding the verticality of the page list (yeah, I know, the book list is also vertical… but it should be used less often than the page list.)

The second change is in fact an addition. You can now use Alt + the arrow keys to navigate directly without entering command mode (or using the mouse.) This allows a much faster and smoother workflow. Base command mode navigation still works as it did before, but it will probably change in a future update, since it’s now somewhat redundant.

There’s also a bunch of bug fixes, and two new themes: game, a greenish, retroish, gameboyish blend of shades of green, and star, a deep space inspired palette. Regarding themes, I believe I’ll definitelyc add an in-app color editor at some point, since I’m the kind of person who needs to use a different palette for every project. Creating themes is harder and longer than what you might expect, and to be honest, I’m not satisfied with most existing themes, so the possibility to tweak them on-the-fly sounds great. I’m also considering to add support for the 100 Rabbits ecosystem themes.

Last but not least, thanks to Godot 3.1 Alpha 2, text wrap is now supported for Linux and macOS.

I think that’s all for now… As usual, the detailed changelog is available on the official website.

Opuscule 0.3: book and page reordering

I was initially planning to release a 0.2.4 version with mainly fixes, but I ended up developing a major feature that I wanted to add since the beginning : pages and book reordering.

This means you can now press Esc > M to enter Move command mode, which allows you to use the left and right arrow keys to change the number of the current page, and the up and down arrow keys to do the same for books. The Markdown export command is now assigned to Esc > K instead of Esc > M.

Be careful when moving books if you’re using a cloud files sync client like MEGA. Due to some mysterious file rewriting priorities, the books you are moving could override the other ones, so be sure  to shut down your sync client before using Esc > M > Up / Down. I haven’t tested this potential issue with Dropbox and other similar services, so maybe it’s only a MEGA issue… but maybe not.

Other notable features include different text wrap modes with a narrow, wide or full column to write your content. You can switch between wrap modes with Esc > W. This is only available for Windows for now because it requires a bleeding edge Godot 3.1 custom build, and I can’t compile Godot myself for other platforms (well, in theory I could, but this would require a lot of time and tinkering, and my time is quite limited). So text wrap will come for sure for Linux and macOS with Godot 3.1, and maybe before, with the next Godot alpha or beta version.

I’ve also added a way to switch between no syntax highlighting, the default syntax highlighting, and HTML syntax highlighting, using Esc > S. My initial plan was to only use HTML highlighting, but a Godot issue causes noticeable lag on lengthy pages, so you can now use the other highlighting modes if this bothers you.

A few other minor things have been tweaked or fixed, have a look at the changelog for the full list.

Opuscule is out!

Get it here.

I’ve been working on this tool since a few months, without prior knowledge of Godot, except through RPG in a Box, an excellent Godot-based voxel game engine. And I have to thanks its developer, Justin Arnold, who helped me more than once and gave me valuable insights on Godot’s inner workings. Opuscule would be in a much more primitive state without him.

To be honest, I’m quite surprised I made it this far. Regarding programming, I’m just a self-taught hobbyist who has been struggling with basic logic for years. But it seems I’ve learned a few things along the way. In fact, I started this project because Godot’s VisualScript looked easy to learn and perfect for me. It wasn’t. I had a hard time understanding its most basic concepts, and its visual approach didn’t help the slightest. I found it quite confusing, but to be fair, it’s still very new, and lacks tutorials and documentation.

So I boldly decided to give a try to GDScript, Godot’s Python-inspired native language, thinking I’d fail even more miserably. Oddly enough, I found it way easier to grasp than VisualScript, and quickly managed to get something to work after a bit of trial and error. I wanted to create a simple note taking tool that would be able to switch between various files on the fly and autosave any change. I ended up developping exactly that, refined the concept a bit, and started to add various small features.

In case you’re wondering, yes, Godot is awesome. I drastically improved my coding skills since I’ve started to use it, thanks to GDScript, a neat IDE, and an actually useful debugger.

This is how, against all odds, my dead simple note taking tool idea became a multiplatform mini-website generator with Vim-like controls (I’ve never used Vim, by the way, so I probably should…)

Opuscule is still in alpha. There’s a lot more to come. It’s pretty stable, and I’ll do my best to avoid any breaking change, but keep in mind things may break. Don’t forget to backup your data folder, even if there’s already automated backups.

I’m developping this tool on my free time and share it for free. Don’t expect it to suit all your needs, it’s designed to suit mine. However, I intend to make it as easy to use and as useful as possible, so feel free to provide any feedback and suggestion. It may become open source in the future, but I have a lot more work to do before that.

Last but not least, here are two important URLs to bookmark:

Opuscule preview #02

I can’t believe I’m still working on this application instead of doing some actual game development. On the other hand, I’m now very close to release it to the public, and I’m quite happy with the result. I’ve been using Opuscule for my projects, and while there are features I can’t add (yet) because of my limited programming skills, I’ve managed to build something much more powerful and useful than what I initially envisioned.

Bugs aside, while it’s still far from being perfect, Opuscule works. I’ve added a lot of functionalities that fit well together, and the HTML export option has become a core feature, even if I had no idea how to code it when I started the project. Turns out all you need to output working HTML is to add a .html extension at the end of your file name… and that’s it. It doesn’t mean my output file is clean, it’s quite a horrendous bunch of hacks at the moment, but it’s valid HTML5.

HTML export with neon theme.

So you can now turn your notes into a single HTML document, which includes a dynamic table of content with links, and supports any kind of HTML markup you enter in your source text. Which means you can share your work pretty easily, offline or online. You can even build a whole website with several “books” linking to each other, if you want to.

For a more concrete example, have a look at the Opuscule homepage. It is generated, indeed, with Opuscule itself. I’m now toying with the idea of adding special pages to let users include their own CSS and JavaScript, a bit like Twine 2, so it would be fairly easy to customize HTML documents. I really need to clean up my CSS before adding this feature, though…

And that’s all for now. Contact me if you’d like to test an alpha version!

Opuscule preview #01

Lately I’ve spent a lot of time developing my own writing application. But why, would you ask, oh why, since there are already so many writing apps? Well, because none of them has been designed by myself.

I also wanted to give a try to Godot, the game engine used by RPG in a Box. While it’s indeed a game engine, it also has a very clean and friendly IDE, and a lot of built-in functions and features to manage UI elements, including a customizable text editor.

The core idea behind Opuscule is to break the usual vertical workflow of writing apps and use a fragmented approach instead. Each fragment can be a page of any size, so you’re free to use it as a short note or as a whole document. You can then cycle between fragments using keyboard shortcuts, and insert new ones wherever you need them.

Opuscule is currently in a very early stage, I still have many features to add and tweak before releasing a first version. I’m struggling with data structure and save/load functions, but I’m also learning a lot. Once I manage to reach a basic, stable version, I’ll get back to my game projects, and keep improving it along the way. I also have plans to rebuilt my time tracking app with Godot, or and possibly add time tracking and data visualization to Opuscule.

New log category: core.

I’ve decided to create a general purpose blog because I need:

– A space to write down stuff that isn’t directly linked to a project.
– A space for projects that don’t require a dedicated subdomain (yet).
– A way to aggregate such content and repost it to log.lectronice.com.

This is the (quick and dirty) result. I hope you like it.