Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,17 @@

All notable changes to this project will be documented in this file.

## [3.3.1] - 2025-11-05
## [3.4.0] - 2025-11-22

### Added
- Add running animation
- animation speed-up when full CPU

### Fixed
- working (CPU) animation stuck


## [3.3.1] - 2025-11-15

### Fixed
- randomize at start-up
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ endif()



project(bongocat LANGUAGES C CXX VERSION 3.3.1)
project(bongocat LANGUAGES C CXX VERSION 3.4.0)

# Feature Flags
include(CMakeDependentOption)
Expand Down Expand Up @@ -371,7 +371,7 @@ endif()

# Package
set(CPACK_PACKAGE_NAME "bongocat")
set(CPACK_PACKAGE_VERSION "3.3.1")
set(CPACK_PACKAGE_VERSION "3.4.0")
set(CPACK_PACKAGE_CONTACT "hircreacc@gmail.com")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A delightful Wayland overlay that displays an animated V-Pet reacting to your keyboard input! ")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Bongo Cat + V-Pets Wayland Overlay

[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Version](https://img.shields.io/badge/version-3.3.1-blue.svg)](https://github.com/furudbat/wayland-vpets/releases)
[![Version](https://img.shields.io/badge/version-3.4.0-blue.svg)](https://github.com/furudbat/wayland-vpets/releases)
[![Release Build](https://github.com/furudbat/wayland-vpets/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/furudbat/wayland-vpets/actions/workflows/release.yml)

A delightful Wayland overlay that displays an animated V-Pet reacting to your keyboard input!
Expand Down Expand Up @@ -785,5 +785,5 @@ See [COPYRIGHT](assets/COPYRIGHT.md) for more details.

---

**₍^. .^₎ Wayland Bongo Cat Overlay v3.3.1** - Making desktops more delightful, one keystroke at a time!
**₍^. .^₎ Wayland Bongo Cat Overlay v3.4.0** - Making desktops more delightful, one keystroke at a time!
Now with Digimon V-Pets, Clippy and Pokémon.
18 changes: 18 additions & 0 deletions examples/custom-sprite-sheets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,24 @@ custom_moving_frames=8
custom_mirror_x_moving=1
```

## RunCat

[gnome-runcat](https://github.com/win0err/gnome-runcat) by win0err

![runcat sprite sheet](runcat.png)

- Running animation (5 frames)

```ini
# Sprite Sheet Settings
animation_name=custom
custom_sprite_sheet_filename=runcat.png
custom_idle_row=1
custom_idle_frames=1
custom_running_row=1
custom_running_frames=5
custom_rows=1
```

## Know issues

Expand Down
41 changes: 41 additions & 0 deletions examples/custom-sprite-sheets/run-neko.bongocat.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Base config for neko sprite sheet

# Custom Sprite Sheet Settings
animation_name=custom
custom_sprite_sheet_filename=neko.png
custom_idle_frames=2
custom_boring_frames=2
custom_writing_frames=2
custom_happy_frames=2
custom_asleep_frames=2
custom_sleep_frames=2
custom_wake_up_frames=1
custom_working_frames=2
custom_moving_frames=2

invert_color=0
idle_frame=0
mirror_x=1


# Anti-aliasing settings
enable_antialiasing=0

# Size settings
cat_height=64

# Animation timing (in milliseconds)
keypress_duration=500
idle_animation=0
animation_speed=500
# CPU settings
update_rate=2000
cpu_threshold=30
cpu_running_factor=5.0

# Frame rate settings, higher FPS for faster running animation
fps=60
input_fps=60

# Moving
#movement_speed=0
37 changes: 37 additions & 0 deletions examples/custom-sprite-sheets/runcat.bongocat.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Base config for neko sprite sheet

# Custom Sprite Sheet Settings
animation_name=custom
custom_sprite_sheet_filename=runcat.png
custom_idle_row=1
custom_idle_frames=1
custom_running_row=1
custom_running_frames=5
custom_rows=1
idle_frame=0

invert_color=0
mirror_x=0


# Anti-aliasing settings
enable_antialiasing=0

# Size settings
cat_height=18

# Animation timing (in milliseconds)
keypress_duration=500
idle_animation=0
animation_speed=250
# CPU settings
update_rate=2000
cpu_threshold=30
cpu_running_factor=5.0

# Frame rate settings, higher FPS for faster running animation
fps=60
input_fps=60

# Moving
#movement_speed=0
Binary file added examples/custom-sprite-sheets/runcat.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions include/config/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,11 @@ namespace bongocat::config {
int32_t idle_animation{0};
int32_t input_fps{0};
int32_t randomize_index{0};
int32_t randomize_on_reload{0};

int32_t update_rate_ms{0};
double cpu_threshold{0};
double cpu_running_factor{0};

int32_t movement_radius{0};
int32_t enable_movement_debug{0};
Expand Down Expand Up @@ -183,8 +185,10 @@ namespace bongocat::config {
idle_animation(other.idle_animation),
input_fps(other.input_fps),
randomize_index(other.randomize_index),
randomize_on_reload(other.randomize_on_reload),
update_rate_ms(other.update_rate_ms),
cpu_threshold(other.cpu_threshold),
cpu_running_factor(other.cpu_running_factor),
movement_radius(other.movement_radius),
enable_movement_debug(other.enable_movement_debug),
movement_speed(other.movement_speed),
Expand Down Expand Up @@ -237,11 +241,13 @@ namespace bongocat::config {
idle_animation = other.idle_animation;
input_fps = other.input_fps;
randomize_index = other.randomize_index;
randomize_on_reload = other.randomize_on_reload;
update_rate_ms = other.update_rate_ms;
movement_radius = other.movement_radius;
enable_movement_debug = other.enable_movement_debug;
movement_speed = other.movement_speed;
cpu_threshold = other.cpu_threshold;
cpu_running_factor = other.cpu_running_factor;
screen_width = other.screen_width;
custom_sprite_sheet_settings = other.custom_sprite_sheet_settings;
_keep_old_animation_index = other._keep_old_animation_index;
Expand Down Expand Up @@ -292,8 +298,10 @@ namespace bongocat::config {
idle_animation(other.idle_animation),
input_fps(other.input_fps),
randomize_index(other.randomize_index),
randomize_on_reload(other.randomize_on_reload),
update_rate_ms(other.update_rate_ms),
cpu_threshold(other.cpu_threshold),
cpu_running_factor(other.cpu_running_factor),
movement_radius(other.movement_radius),
enable_movement_debug(other.enable_movement_debug),
movement_speed(other.movement_speed),
Expand Down Expand Up @@ -354,8 +362,10 @@ namespace bongocat::config {
idle_animation = other.idle_animation;
input_fps = other.input_fps;
randomize_index = other.randomize_index;
randomize_on_reload = other.randomize_on_reload;
update_rate_ms = other.update_rate_ms;
cpu_threshold = other.cpu_threshold;
cpu_running_factor = other.cpu_running_factor;
movement_radius = other.movement_radius;
enable_movement_debug = other.enable_movement_debug;
movement_speed = other.movement_speed;
Expand Down
2 changes: 1 addition & 1 deletion include/core/bongocat.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include "utils/memory.h"

// Version
inline static constexpr const char* BONGOCAT_VERSION = "3.3.1";
inline static constexpr const char* BONGOCAT_VERSION = "3.4.0";

// Common constants
inline static constexpr int32_t DEFAULT_SCREEN_WIDTH = 1920;
Expand Down
30 changes: 29 additions & 1 deletion include/embedded_assets/custom/custom_sprite.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ namespace bongocat::assets {
inline static constexpr size_t CUSTOM_SPRITE_SHEET_ROW_START_MOVING = 12;
inline static constexpr size_t CUSTOM_SPRITE_SHEET_ROW_MOVING = 13;
inline static constexpr size_t CUSTOM_SPRITE_SHEET_ROW_END_MOVING = 14;
inline static constexpr size_t CUSTOM_SPRITE_SHEET_ROW_START_RUNNING = 15;
inline static constexpr size_t CUSTOM_SPRITE_SHEET_ROW_RUNNING = 16;
inline static constexpr size_t CUSTOM_SPRITE_SHEET_ROW_END_RUNNING = 17;
enum class CustomAnimations : uint8_t {
Idle = CUSTOM_SPRITE_SHEET_ROW_IDLE,
Boring = CUSTOM_SPRITE_SHEET_ROW_BORING,
Expand All @@ -36,8 +39,11 @@ namespace bongocat::assets {
StartMoving = CUSTOM_SPRITE_SHEET_ROW_START_MOVING,
Moving = CUSTOM_SPRITE_SHEET_ROW_MOVING,
EndMoving = CUSTOM_SPRITE_SHEET_ROW_END_MOVING,
StartRunning = CUSTOM_SPRITE_SHEET_ROW_START_RUNNING,
Running = CUSTOM_SPRITE_SHEET_ROW_RUNNING,
EndRunning = CUSTOM_SPRITE_SHEET_ROW_END_RUNNING,
};
inline static constexpr size_t CUSTOM_SPRITE_SHEET_MAX_ROWS = 15;
inline static constexpr size_t CUSTOM_SPRITE_SHEET_MAX_ROWS = 18;

// custom (sprite sheet)
inline static constexpr char CUSTOM_ID_ARR[] = "custom";
Expand Down Expand Up @@ -73,6 +79,10 @@ namespace bongocat::assets {
int32_t moving_frames{0};
int32_t end_moving_frames{0};

int32_t start_running_frames{0};
int32_t running_frames{0};
int32_t end_running_frames{0};

int32_t feature_toggle_writing_frames{-1};
int32_t feature_toggle_writing_frames_random{-1};
int32_t feature_mirror_x_moving{-1};
Expand All @@ -98,9 +108,19 @@ namespace bongocat::assets {
int32_t start_moving_row_index{-1};
int32_t moving_row_index{-1};
int32_t end_moving_row_index{-1};

int32_t start_running_row_index{-1};
int32_t running_row_index{-1};
int32_t end_running_row_index{-1};

int32_t rows{-1};
};

inline int get_custom_animation_settings_rows_count(const custom_animation_settings_t& sprite_sheet_settings) {
if (sprite_sheet_settings.rows >= 1) {
return sprite_sheet_settings.rows;
}

int sprite_sheet_rows{0};

// detect sprite sheet rows
Expand All @@ -124,6 +144,10 @@ namespace bongocat::assets {
if (sprite_sheet_settings.moving_frames > 0) sprite_sheet_rows++;
if (sprite_sheet_settings.end_moving_frames > 0) sprite_sheet_rows++;

if (sprite_sheet_settings.start_running_frames > 0) sprite_sheet_rows++;
if (sprite_sheet_settings.running_frames > 0) sprite_sheet_rows++;
if (sprite_sheet_settings.end_running_frames > 0) sprite_sheet_rows++;

return sprite_sheet_rows;
}
inline int get_custom_animation_settings_max_cols(const custom_animation_settings_t& sprite_sheet_settings) {
Expand All @@ -148,6 +172,10 @@ namespace bongocat::assets {
if (sprite_sheet_settings.moving_frames >= sprite_sheet_cols) sprite_sheet_cols = sprite_sheet_settings.moving_frames;
if (sprite_sheet_settings.end_moving_frames >= sprite_sheet_cols) sprite_sheet_cols = sprite_sheet_settings.end_moving_frames;

if (sprite_sheet_settings.start_running_frames >= sprite_sheet_cols) sprite_sheet_cols = sprite_sheet_settings.start_running_frames;
if (sprite_sheet_settings.running_frames >= sprite_sheet_cols) sprite_sheet_cols = sprite_sheet_settings.running_frames;
if (sprite_sheet_settings.end_running_frames >= sprite_sheet_cols) sprite_sheet_cols = sprite_sheet_settings.end_running_frames;

return sprite_sheet_cols;
}
}
Expand Down
10 changes: 10 additions & 0 deletions include/graphics/sprite_sheet.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ namespace bongocat::animation {
int32_t working[MAX_ANIMATION_FRAMES]{}; // attack
int32_t moving[MAX_ANIMATION_FRAMES]{};
int32_t happy[MAX_ANIMATION_FRAMES]{};
int32_t running[MAX_ANIMATION_FRAMES]{};
};

struct dm_sprite_sheet_t {
Expand Down Expand Up @@ -136,6 +137,10 @@ namespace bongocat::animation {
ms_agent_sprite_sheet_animation_section_t end_moving;

ms_agent_sprite_sheet_animation_section_t happy;

ms_agent_sprite_sheet_animation_section_t start_running;
ms_agent_sprite_sheet_animation_section_t running;
ms_agent_sprite_sheet_animation_section_t end_running;
};

struct custom_sprite_sheet_animation_section_t {
Expand Down Expand Up @@ -170,6 +175,10 @@ namespace bongocat::animation {
custom_sprite_sheet_animation_section_t moving;
custom_sprite_sheet_animation_section_t end_moving;

custom_sprite_sheet_animation_section_t start_running;
custom_sprite_sheet_animation_section_t running;
custom_sprite_sheet_animation_section_t end_running;

// features
bool feature_idle{false};
bool feature_boring{false};
Expand All @@ -179,6 +188,7 @@ namespace bongocat::animation {
bool feature_sleep_wake_up{false};
bool feature_working{false};
bool feature_moving{false};
bool feature_running{false};
bool feature_writing_toggle_frames{false};
bool feature_writing_toggle_frames_random{false};
};
Expand Down
2 changes: 1 addition & 1 deletion nix/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "wayland-vpets";
version = "3.3.1";
version = "3.4.0";
src = ../.;

# Build toolchain and dependencies
Expand Down
Loading