Skip to content

matthiasjg/trimirjournal

Repository files navigation

Trimirj Journal — Your personal activity "Tricorder".

Designed and built for personal ![](data/screenshots/journal.pntext journaling and activity tracking.

Write a diary, log your activities, keep track of your metrics.

Search, filter and evaluate your journal—your life.

Features

  • Write expressive journal entries with emoijs, organized with hashtags (i.e. "#linux rocks 😎️")
  • Search your journal
  • Filter your journal by hashtag
  • Render timeline charts when filtering for "metric tags", i.e. a hashtag followed by a number with optional unit (e.g. "#Trailrun 5km")
  • Backup and restore your journal to and from a JSON file, compatible with mobile app "ZenJournal - Minimalist Diary" (iOS, Android)—no affiliation

Screenshots

Made for elementary OS

Trimir Journal is designed and developed on and for elementary OS.

The app will eventually (hopefully) be available for purchasing directly through AppCenter.

Purchasing the app will support the development and ensures instant updates straight from me. All this is to say: get it on AppCenter for the best, sustainable experience. 😀️

Building and Installation

You'll need the following dependencies:

  • libxml2-dev
  • libgda-5.0-dev
  • glib-2.0
  • gobject-2.0
  • gtk+-3.0
  • libjson-glib-dev
  • libgtksourceview-4.0-dev
  • libhandy-1-dev
  • libgranite-dev
  • libarchive
  • libwebkit2gtk-4.0-dev
  • meson
  • valac
sudo apt install \
    elementary-sdk \
    libgda-5.0-dev \
    libgtksourceview-4-dev \
    libarchive-dev \
    libwebkit2gtk-4.0-dev
flatpak install io.elementary.Sdk/x86_64/6.1

Run meson build to configure the build environment. Change to the build directory and run ninja to build

meson build --prefix=/usr
cd build
ninja

To install, use ninja install, then execute with com.github.matthiasjg.trimirjournal

ninja install
com.github.matthiasjg.trimirjournal

Developing and Packaging

For development oneshould use make™️.

The make targets require two more tools being installed:

  1. vala-lint to assure one is following the elementary Code-Style guidelines

  2. Gtk Inspector (from elementary-sdk)

# vala-lint
git clone https://github.com/vala-lang/vala-lint
cd vala-lint
sudo apt install cmake libvala-0.48-dev
meson build --prefix=/usr
cd build
ninja test
sudo ninja install

# gtk-inspector
gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true

Useing the make targets is then as simple as:

# once
make
# recurring, each cycle
make yolo

Translations (i18n)

The app is fully translatable.

Each time new translatable strings are added or old ones change, one should regenerate the .pot and po files using make i18n.

For new languages, just list them in the po/LINGUAS file and generate the new .po file with make i18n.

Dev(Ops) Hints

Editor / "IDE"

For me (currently, still) Visual Studio Code.

Install Princeton et al's uber-awesome vala-vscode (src) which requires vala-language-server to be installed.

Flatbak build

# flatpak remote-add --if-not-exists --system appcenter https://flatpak.elementary.io/repo.flatpakrepo
# flatpak install -y appcenter io.elementary.Platform io.elementary.Sdk
flatpak-builder build com.github.matthiasjg.trimirjournal.yml --user --install --force-clean
flatpak run com.github.matthiasjg.trimirjournal

Build .deb locally, though DEPRECATED

meson build --prefix=/usr
cd build
ninja
cd ..
dpkg-buildpackage

Special Thanks & Credits

It is a true pleasure to develop on and for this platform.

Starting from the outstanding elementary developer documentation, the greater Vala, Valadoc ecosystem to the source code of the OS and bundled (original) apps to the AppCenter along with all the great and inspiring community apps.

Therefore THANK YOU team and community of elementary OS! ❤️