Skip to content

Commit

Permalink
Release v0.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mtkennerly committed Dec 12, 2024
1 parent de02f62 commit 52e5747
Show file tree
Hide file tree
Showing 12 changed files with 218 additions and 25 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## Unreleased
## v0.1.0 (2024-12-12)

* Initial release.
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ Also install the Crowdin CLI tool manually.
For Linux and Mac, extract the `.tar.gz` files from the `.zip` files.
* Run `cargo publish`
* Run `invoke release-flatpak`
* This will automatically push a branch to https://github.com/flathub/com.github.mtkennerly.madamiru .
* This will automatically push a branch to https://github.com/flathub/com.mtkennerly.madamiru .
* Manually open a PR for that branch.
* After the PR is merged, publish via https://buildbot.flathub.org/#/apps/com.github.mtkennerly.madamiru .
* After the PR is merged, publish via https://buildbot.flathub.org/#/apps/com.mtkennerly.madamiru .
* Run `invoke release-winget`
* When the script opens VSCode and pauses,
manually edit `manifests/m/mtkennerly/madamiru/${VERSION}/mtkennerly.madamiru.locale.en-US.yaml`
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "madamiru"
version = "0.1.0"
authors = ["mtkennerly <mtkennerly@gmail.com>"]
edition = "2021"
description = "Multi-video player with auto-shuffling"
description = "Dynamic multi-multimedia player"
repository = "https://github.com/mtkennerly/madamiru"
readme = "README.md"
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Madamiru is a cross-platform media player written in [Rust](https://www.rust-lan
that can automatically shuffle multiple videos, images, and songs at once in a grid layout.

## Features
* Customizable layout with multiple groups of dynamic media
* Customizable layout with multiple groups of dynamically selected media
* Video formats: AVI, M4V, MKV, MOV, MP4, WebM
* Image formats: BMP, GIF, ICO, JPEG, PNG, TIFF, SVG, WebP
* Audio formats: FLAC, M4A, MP3, WAV
Expand Down
2 changes: 1 addition & 1 deletion assets/linux/com.mtkennerly.madamiru.desktop
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Type=Application
Encoding=UTF-8
Name=Madamiru
Comment=Multi-video player
Comment=Dynamic multi-multimedia player
Exec=madamiru
Icon=com.mtkennerly.madamiru
Terminal=false
Expand Down
4 changes: 2 additions & 2 deletions assets/linux/com.mtkennerly.madamiru.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<project_license>MIT</project_license>
<name>madamiru</name>
<developer_name>mtkennerly</developer_name>
<summary>Multi-video player</summary>
<summary>Dynamic multi-multimedia player</summary>
<url type="homepage">https://github.com/mtkennerly/madamiru/</url>
<url type="bugtracker">https://github.com/mtkennerly/madamiru/issues</url>
<url type="translate">https://crowdin.com/project/madamiru</url>
Expand Down Expand Up @@ -53,6 +53,6 @@
<content_rating type="oars-1.1" />
<launchable type="desktop-id">com.mtkennerly.madamiru.desktop</launchable>
<releases>
<release version="0.1.0" date="2024-11-26"/>
<release version="0.1.0" date="2024-12-12"/>
</releases>
</component>
8 changes: 5 additions & 3 deletions docs/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ Commands:
Arguments:
[SOURCES]...
Sources to load. Alternatively supports stdin (one value per line)
Files and folders to load. Alternatively supports stdin (one value per line)
Options:
--config <DIRECTORY>
Use configuration found in DIRECTORY
--max <MAX>
How many items to load at most
--glob <GLOB>
Glob patterns to load
-h, --help
Print help
-V, --version
Expand Down Expand Up @@ -63,6 +63,8 @@ Usage: madamiru.exe schema [OPTIONS] <COMMAND>
Commands:
config
Schema for config.yaml
playlist
Schema for playlist.madamiru
help
Print this message or the help of the given subcommand(s)
Expand Down
4 changes: 3 additions & 1 deletion docs/help/comparison-with-other-projects.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Comparison with other projects
* [VLC Media Player](https://www.videolan.org/)
* VLC is simple to use and supports a vast array of video formats.
However, it is focused on playing one video at a once, which you select manually.
However, it is focused on playing one video at a time, which you select manually.
Of course, you can open multiple VLC windows with different videos,
but you have to arrange the windows and select the videos yourself.
* [GridPlayer](https://github.com/vzhd1701/gridplayer)
Expand All @@ -11,6 +11,8 @@
* GridPlayer does have some shuffle functionality,
but it's limited to other videos/audio within the same folder
and does not seem to work with images.
* GridPlayer only has a single grid,
whereas Madamiru supports multiple grids with different media sources.

## Performance
On the author's system (Windows 11, AMD Ryzen 9 5900HS w/ 16 cores @ 3.3 GHz, Nvidia GeForce RTX 3070 Mobile, 16 GB RAM),
Expand Down
3 changes: 3 additions & 0 deletions docs/help/logging.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ By default, only warnings and errors are logged,
but you can customize this by setting the `RUST_LOG` environment variable
(e.g., `RUST_LOG=madamiru=debug`).
The most recent 5 log files are kept, rotating on app launch or when a log reaches 10 MiB.

You can also enable logging for GStreamer by setting these environment variables:
`GST_DEBUG=3` and `GST_DEBUG_FILE=gst.log`.
52 changes: 39 additions & 13 deletions docs/schema/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,26 @@ title: Config
description: "Settings for `config.yaml`"
type: object
properties:
language:
default: en-US
allOf:
- $ref: "#/definitions/Language"
playback:
default:
max: 4
image_duration: 10
muted: false
pause_on_unfocus: false
volume: 1.0
allOf:
- $ref: "#/definitions/Playback"
release:
default:
check: true
allOf:
- $ref: "#/definitions/Release"
theme:
default: Dark
view:
default:
confirm_discard_playlist: true
language: en-US
theme: dark
allOf:
- $ref: "#/definitions/Theme"
- $ref: "#/definitions/View"
definitions:
Language:
description: Display language.
Expand All @@ -34,14 +35,25 @@ definitions:
Playback:
type: object
properties:
max:
default: 4
image_duration:
description: "How long to show images, in seconds."
default: 10
type: integer
format: uint
minimum: 0.0
minimum: 1.0
muted:
description: Whether all players are muted.
default: false
type: boolean
pause_on_unfocus:
description: Whether to pause when window loses focus.
default: false
type: boolean
volume:
description: "Volume level when not muted. 1.0 is 100%, 0.01 is 1%."
default: 1.0
type: number
format: float
Release:
type: object
properties:
Expand All @@ -53,5 +65,19 @@ definitions:
description: Visual theme.
type: string
enum:
- Light
- Dark
- light
- dark
View:
type: object
properties:
confirm_discard_playlist:
default: true
type: boolean
language:
default: en-US
allOf:
- $ref: "#/definitions/Language"
theme:
default: dark
allOf:
- $ref: "#/definitions/Theme"
159 changes: 159 additions & 0 deletions docs/schema/playlist.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
---
$schema: "http://json-schema.org/draft-07/schema#"
title: Playlist
description: Settings for a playlist
type: object
properties:
layout:
default:
group:
content_fit: scale
max_media: 1
orientation: horizontal
orientation_limit: automatic
sources: []
allOf:
- $ref: "#/definitions/Layout"
definitions:
ContentFit:
oneOf:
- description: "Scale the media up or down to fill as much of the available space as possible while maintaining the media's aspect ratio."
type: string
enum:
- scale
- description: "Scale the media down to fill as much of the available space as possible while maintaining the media's aspect ratio. Don't scale up if it's smaller than the available space."
type: string
enum:
- scale_down
- description: "Crop the media to fill all of the available space. Maintain the aspect ratio, cutting off parts of the media as needed to fit."
type: string
enum:
- crop
- description: "Stretch the media to fill all of the available space. Preserve the whole media, disregarding the aspect ratio."
type: string
enum:
- stretch
FilePath:
type: string
Group:
type: object
properties:
content_fit:
default: scale
allOf:
- $ref: "#/definitions/ContentFit"
max_media:
default: 1
type: integer
format: uint
minimum: 0.0
orientation:
default: horizontal
allOf:
- $ref: "#/definitions/Orientation"
orientation_limit:
default: automatic
allOf:
- $ref: "#/definitions/OrientationLimit"
sources:
default: []
type: array
items:
$ref: "#/definitions/Source"
Layout:
oneOf:
- type: object
required:
- split
properties:
split:
$ref: "#/definitions/Split"
additionalProperties: false
- type: object
required:
- group
properties:
group:
$ref: "#/definitions/Group"
additionalProperties: false
Orientation:
type: string
enum:
- horizontal
- vertical
OrientationLimit:
oneOf:
- type: string
enum:
- automatic
- type: object
required:
- fixed
properties:
fixed:
type: integer
format: uint
minimum: 1.0
additionalProperties: false
Source:
oneOf:
- type: object
required:
- path
properties:
path:
type: object
required:
- path
properties:
path:
$ref: "#/definitions/FilePath"
additionalProperties: false
- type: object
required:
- glob
properties:
glob:
type: object
required:
- pattern
properties:
pattern:
type: string
additionalProperties: false
Split:
type: object
properties:
axis:
default: horizontal
allOf:
- $ref: "#/definitions/SplitAxis"
first:
default:
group:
content_fit: scale
max_media: 1
orientation: horizontal
orientation_limit: automatic
sources: []
allOf:
- $ref: "#/definitions/Layout"
ratio:
default: 0.5
type: number
format: float
second:
default:
group:
content_fit: scale
max_media: 1
orientation: horizontal
orientation_limit: automatic
sources: []
allOf:
- $ref: "#/definitions/Layout"
SplitAxis:
type: string
enum:
- horizontal
- vertical
1 change: 1 addition & 0 deletions tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ def docs_schema(ctx):

commands = [
"config",
"playlist",
]

for command in commands:
Expand Down

0 comments on commit 52e5747

Please sign in to comment.