diff --git a/Cargo.lock b/Cargo.lock index 283cabe..4c81faf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -147,7 +147,7 @@ dependencies = [ [[package]] name = "aliveline" -version = "0.2.0" +version = "0.2.1" dependencies = [ "chrono", "serde", diff --git a/Cargo.toml b/Cargo.toml index 4780d86..c1ecef4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "aliveline" -version = "0.2.0" +version = "0.2.1" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/README.md b/README.md index 2615359..5d71099 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,8 @@ By clicking on the timeline in Record mode you can hide controls to make app sma Review mode may be used to show some activity, tracked on another day: ![Review mode example](images/review.png) -Aliveline currently supports Linux only, but you can compile it to your platform. +Aliveline currently supports Linux only, but Windows executable seems to work. +You can also compile Aliveline yourself (see building section). ## Features @@ -38,7 +39,8 @@ Requirements: - Slint dependencies (see [Platforms](https://docs.slint.dev/latest/docs/slint/guide/platforms/desktop/) and [Backends & Renderers](https://docs.slint.dev/latest/docs/slint/guide/backends-and-renderers/backends_and_renderers/)) Instructions: -Run `cargo build --release` +Just run `cargo build --release` and the resulting binary can be located at `target/release/aliveline[.exe]` if compilation succeeds. +If compilation fails, double check that you have all required dependencies. If it still fails, file an issue on [Codeberg](https://codeberg.org/2ndbeam/aliveline/issues), including logs and system info. ## Usage @@ -46,6 +48,7 @@ Just run `aliveline` by any preferred way, for example: ``` $ ./aliveline ``` +or via file explorer. ## Configuration Aliveline tries to find config at: @@ -62,4 +65,4 @@ If config isn't found, Aliveline uses default values defined in [config.toml](ht Keep in mind that default paths are relative, and in this case logs will be written to and read from current working directory. ## Contribution -You can contribute to Aliveline by creating an issue/PR on [Codeberg mirror](https://codeberg.org/2ndbeam/aliveline) +You can contribute to Aliveline by creating an issue/PR on [Codeberg mirror](https://codeberg.org/2ndbeam/aliveline/issues) diff --git a/scripts/bundle.sh b/scripts/bundle.sh new file mode 100755 index 0000000..5a97ba9 --- /dev/null +++ b/scripts/bundle.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +print_usage() { + echo "Usage: scripts/bundle.sh [TARGET]" +} + +fail() { + echo "$1" + exit 1 +} + +if [ ! -n "$1" ]; then + print_usage + exit 1 +fi + +toml --version > /dev/null || fail "toml-cli is required to fetch version from Cargo.toml" + +version=$(toml get -r Cargo.toml package.version) + +target=$1 + +extension="" + +case "$target" in + *"windows"*) + exe=".exe" + ;; +esac + +echo "Building aliveline$exe for $target..." + +cargo build --release --target $target || fail "Could not build aliveline for target $target" + +prefix=target/$target/release +binary_name=aliveline-$version-$target$exe + +echo "Renaming aliveline$exe to $binary_name..." +mv -v $prefix/aliveline$exe $prefix/$binary_name + +echo "Computing checksum..." +cd $prefix +sha256sum $binary_name > $binary_name.sha256 diff --git a/src/lib.rs b/src/lib.rs index df9b81e..df734c9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -42,7 +42,7 @@ pub fn load_config() -> Config { } println!("Config not found at ${place_var} / {place:?}"); } - println!("Using last resort config path ./config.toml"); + println!("Using config path ./config.toml"); Config::new(PathBuf::from("./config.toml")) } /// Get random-like color id in range 0..16 by computing string hash diff --git a/src/main.rs b/src/main.rs index d96caa4..f466a39 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,9 @@ use chrono::{Datelike, Timelike}; use slint::{Color, Model, ModelRc, SharedString, ToSharedString, VecModel, Weak}; use toml::value::{Date as TomlDate, Time}; +const DEFAULT_WINDOW_WIDTH: f32 = 800.; +const DEFAULT_WINDOW_HEIGHT: f32 = 600.; + slint::include_modules!(); impl From for TimelineEvent { @@ -106,6 +109,7 @@ fn main() -> Result<(), Box> { load_colors(ui_weak, config_arc); ui.invoke_update_record_offset(offset as i32); + ui.invoke_update_window_size(DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT); ui.on_fetch_log({ let config = config.clone(); diff --git a/ui/app-window.slint b/ui/app-window.slint index 76cbad1..311de17 100644 --- a/ui/app-window.slint +++ b/ui/app-window.slint @@ -11,6 +11,7 @@ export component AppWindow inherits Window { callback new-day-started <=> record.new-day-started; callback get-previous-event <=> record.get-previous-event; callback update-record-offset(int); + callback update-window-size(length, length); callback save-log; callback fetch-log <=> review.fetch-log; @@ -21,6 +22,11 @@ export component AppWindow inherits Window { record.offset = new-offset; } + update-window-size(width, height) => { + self.width = width; + self.height = height; + } + in-out property record-events <=> record.events; in-out property record-offset <=> record.offset; in-out property record-visible-time <=> record.visible-time;