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
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

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


## [3.3.0] - 2025-11-05

### Added
- **Custom Sprite Sheets** - load custom sprite sheet
- [Examples](./examples)

### Fixed
- fix pre-loading pen/pen20

## [3.2.3] - 2025-10-30

### Added
- **Add NEW sprite sheet set** - misc
- [neko](https://github.com/eliot-akira/neko?tab=readme-ov-file#readme)

## [3.2.2] - 2025-10-23

### Added
Expand Down
21 changes: 19 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.2.0)
project(bongocat LANGUAGES C CXX VERSION 3.3.0)

# Feature Flags
include(CMakeDependentOption)
Expand All @@ -47,6 +47,7 @@ cmake_dependent_option(FEATURE_DMALL_EMBEDDED_ASSETS "Include custom colored dm
option(FEATURE_MS_AGENT_EMBEDDED_ASSETS "Include MS agent (Clippy) embedded assets" OFF)
cmake_dependent_option(FEATURE_MORE_MS_AGENT_EMBEDDED_ASSETS "Include more MS agents (Links) embedded assets" OFF FEATURE_MS_AGENT_EMBEDDED_ASSETS OFF)
option(FEATURE_ENABLE_PKMN_EMBEDDED_ASSETS "Enable include pkmn embedded assets" OFF)
option(FEATURE_MISC_EMBEDDED_ASSETS "Enable include misc embedded assets" OFF)
# @NOTE(assets): 1. add feature flag for embedded assets

option(FEATURE_DISABLE_LOGGER "Disable Logger (makes enable_debug option obsolete)" OFF)
Expand All @@ -55,6 +56,7 @@ option(FEATURE_MULTI_VERSIONS "Build multiple versions with different assets for
option(FEATURE_LAZY_LOAD_ASSETS "No Preload assets (Less RAM usage, more CPU usage, sprite lazy-load on config reload) (Recommended)" ON)
option(FEATURE_USE_HYBRID_IMAGE_BACKEND "Use pngle or stb_image as assets (png) loader (Less RAM usage, more loading time, balanced) (Recommended)" ON)
option(FEATURE_USE_PNGLE "Use pngle as assets (png) loader (Less RAM usage, more loading time; replace stb_image)" OFF)
option(FEATURE_CUSTOM_SPRITE_SHEETS "Enable custom sprite sheet at runtime" ON)

option(ENABLE_ASAN "Enable Address Sanitizer" OFF)
option(ENABLE_UBSAN "Enable Undefined Behavior Sanitizer" OFF)
Expand Down Expand Up @@ -200,6 +202,14 @@ if (FEATURE_PKMN_EMBEDDED_ASSETS)
target_link_libraries(bongocat PRIVATE assets_pkmn_loader assets_pkmn assets_pkmn_feature assets_pkmn_interface)
message(STATUS "Include pkmn assets")
endif()
if (FEATURE_MISC_EMBEDDED_ASSETS)
target_link_libraries(bongocat PRIVATE assets_misc_loader assets_misc assets_misc_feature assets_misc_interface assets_custom_loader)
message(STATUS "Include misc assets")
endif()
if (FEATURE_CUSTOM_SPRITE_SHEETS)
target_compile_definitions(bongocat PRIVATE FEATURE_CUSTOM_SPRITE_SHEETS)
target_link_libraries(bongocat PRIVATE assets_custom_sprite_sheet_feature assets_custom_loader)
endif ()
# @NOTE(assets): 1.1. link embedded assets
target_link_libraries(bongocat PRIVATE bongocat_base bongocat_options bongocat_libs)

Expand Down Expand Up @@ -255,8 +265,15 @@ if (FEATURE_MULTI_VERSIONS)
target_link_libraries(bongocat-all PRIVATE assets_dmall_loader assets_dmall assets_dmall_feature assets_dmall_interface)
target_link_libraries(bongocat-all PRIVATE assets_more_ms_agent_loader assets_more_ms_agent assets_more_ms_agent_feature assets_more_ms_agent_interface)
target_link_libraries(bongocat-all PRIVATE assets_pkmn_loader assets_pkmn assets_pkmn_feature assets_pkmn_interface)
target_link_libraries(bongocat-all PRIVATE assets_misc_loader assets_misc assets_misc_feature assets_misc_interface assets_custom_loader)
target_link_libraries(bongocat-all PRIVATE assets_custom_sprite_sheet_feature assets_custom_loader)
target_link_libraries(bongocat-all PRIVATE bongocat_base bongocat_options bongocat_libs)

add_executable(bongocat-neko)
target_link_libraries(bongocat-neko PRIVATE assets_bongocat_loader assets_bongocat assets_bongocat_feature assets_bongocat_interface)
target_link_libraries(bongocat-neko PRIVATE assets_misc_loader assets_misc assets_misc_feature assets_misc_interface assets_custom_loader)
target_link_libraries(bongocat-neko PRIVATE bongocat_base bongocat_options bongocat_libs)

# @NOTE(assets): 1.2. add exec for multi versions
endif()

Expand Down Expand Up @@ -354,7 +371,7 @@ endif()

# Package
set(CPACK_PACKAGE_NAME "bongocat")
set(CPACK_PACKAGE_VERSION "3.2.0")
set(CPACK_PACKAGE_VERSION "3.3.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
16 changes: 12 additions & 4 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"FEATURE_BONGOCAT_EMBEDDED_ASSETS": "ON",
"FEATURE_MS_AGENT_EMBEDDED_ASSETS": "ON",
"FEATURE_ENABLE_DM_EMBEDDED_ASSETS": "ON",
"FEATURE_MS_AGENT_EMBEDDED_ASSETS": "ON",
"FEATURE_PKMN_EMBEDDED_ASSETS": "ON",
"FEATURE_MISC_EMBEDDED_ASSETS": "ON",
"FEATURE_PRELOAD_ASSETS": "ON",
"FEATURE_LAZY_LOAD_ASSETS": "OFF"
}
Expand All @@ -96,7 +98,9 @@
"CMAKE_BUILD_TYPE": "Release",
"FEATURE_BONGOCAT_EMBEDDED_ASSETS": "ON",
"FEATURE_MS_AGENT_EMBEDDED_ASSETS": "OFF",
"FEATURE_ENABLE_DM_EMBEDDED_ASSETS": "OFF"
"FEATURE_ENABLE_DM_EMBEDDED_ASSETS": "OFF",
"FEATURE_PKMN_EMBEDDED_ASSETS": "OFF",
"FEATURE_MISC_EMBEDDED_ASSETS": "OFF"
}
},
{
Expand Down Expand Up @@ -168,7 +172,8 @@
"FEATURE_PEN20_EMBEDDED_ASSETS": "OFF",
"FEATURE_DMC_EMBEDDED_ASSETS": "OFF",
"FEATURE_DMALL_EMBEDDED_ASSETS": "OFF",
"FEATURE_PKMN_EMBEDDED_ASSETS": "OFF"
"FEATURE_PKMN_EMBEDDED_ASSETS": "OFF",
"FEATURE_MISC_EMBEDDED_ASSETS": "OFF"
}
},
{
Expand All @@ -192,7 +197,8 @@
"FEATURE_PEN20_EMBEDDED_ASSETS": "ON",
"FEATURE_DMC_EMBEDDED_ASSETS": "ON",
"FEATURE_DMALL_EMBEDDED_ASSETS": "ON",
"FEATURE_PKMN_EMBEDDED_ASSETS": "ON"
"FEATURE_PKMN_EMBEDDED_ASSETS": "ON",
"FEATURE_MISC_EMBEDDED_ASSETS": "ON"
}
},
{
Expand All @@ -217,6 +223,7 @@
"FEATURE_DMC_EMBEDDED_ASSETS": "ON",
"FEATURE_DMALL_EMBEDDED_ASSETS": "ON",
"FEATURE_PKMN_EMBEDDED_ASSETS": "ON",
"FEATURE_MISC_EMBEDDED_ASSETS": "ON",
"FEATURE_PRELOAD_ASSETS": "ON",
"FEATURE_LAZY_LOAD_ASSETS": "OFF"
}
Expand All @@ -243,6 +250,7 @@
"FEATURE_DMC_EMBEDDED_ASSETS": "ON",
"FEATURE_DMALL_EMBEDDED_ASSETS": "ON",
"FEATURE_PKMN_EMBEDDED_ASSETS": "ON",
"FEATURE_MISC_EMBEDDED_ASSETS": "ON",
"FEATURE_PRELOAD_ASSETS": "OFF",
"FEATURE_LAZY_LOAD_ASSETS": "ON"
}
Expand Down
52 changes: 49 additions & 3 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.2.0-blue.svg)](https://github.com/furudbat/wayland-vpets/releases)
[![Version](https://img.shields.io/badge/version-3.3.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 All @@ -28,6 +28,7 @@ _Pokemon_
- Digimon V-Pets 🦖 (v1.3.0)
- Clippy 📎 (v2.1.0)
- Pokemon 🐭 (v3.0.0)
- Misc 🐈‍⬛ (v3.2.2)
- **🎯 Real-time Animation** - Bongo cat reacts instantly to keyboard input
- **🔥 Hot-Reload Configuration** - Modify settings without restarting (v1.2.0)
- **🔄 Dynamic Device Detection** - Automatically detects Bluetooth/USB keyboards (v1.2.0)
Expand All @@ -46,6 +47,7 @@ _Pokemon_
- **🎲 Random Frame** - Randomize sprite frame at start up (Digimon) (v2.4.0)
- **🔲 CPU Stat** - React to CPU usage (Digimon) (v3.1.0)
- **↔️ Movement** - Movement on screen (Digimon) (v3.2.0)
- **🔢 Custom Sprite-Sheet** - Load your own Sprite Sheet at runtime (v3.3.0)

## 🏁 Getting Started

Expand Down Expand Up @@ -316,6 +318,7 @@ See man pages for more details and full list:
- [Bongocat 😺](docs/fragments/set-bongocat.md)
- [MS Agent 📎](docs/fragments/set-ms-agent.md) Clippy and friends
- [Pokemon 🐭](docs/fragments/set-pkmn.md) up to Gen. 7
- [Misc 🐈‍⬛](docs/fragments/set-misc.md)

##### Digimon 🦖

Expand All @@ -329,6 +332,49 @@ See man pages for more details and full list:
_If you build with ALL assets included you can void naming conflicts by using the full name: `dm:Greymon`, `dm20:Greymon`, `dmc:Greymon`_


#### Custom Sprite Sheet (`custom_...`)

| **Key** | **Type** | **Range / Example** | **Default** | **Description** |
| ------------------------------------- | -------- |---------------------|-------------------|--------------------------------------------------------------------------------------|
| `animation_name` | String | `"custom"` | | Must be `"custom"` for custom-options to work |
| `custom_sprite_sheet_filename` | String | Path to image file | | Path to the custom sprite sheet image (**must be png**) |
| `custom_idle_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for idle animation |
| `custom_boring_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for boring animation |
| `custom_start_writing_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for start writing animation |
| `custom_writing_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for writing animation |
| `custom_end_writing_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for end writing animation |
| `custom_happy_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for happy animation |
| `custom_asleep_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for falling asleep animation |
| `custom_sleep_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for sleeping animation |
| `custom_wake_up_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for waking up animation |
| `custom_start_working_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for start working animation |
| `custom_working_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for working animation |
| `custom_end_working_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for end working animation |
| `custom_start_moving_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for start moving animation |
| `custom_moving_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for moving animation |
| `custom_end_moving_frames` | Integer | 1-500 | 0 (disabled) | Number of frames for end moving animation |
| `custom_toggle_writing_frames` | Boolean | 0 or 1 | -1 (auto) | Toggle writing frames when writing (`custom_writing_frames` needs to be `2`) |
| `custom_toggle_writing_frames_random` | Boolean | 0 or 1 | -1 (auto) | Randomize writing frame when start writing (`custom_writing_frames` needs to be `2`) |
| `custom_mirror_x_moving` | Boolean | 0 or 1 | -1 (ignore) | Mirror frames horizontally when moving |
| `custom_idle_row` | Integer | 1-15 | -1 (auto) | Row nr for idle animation in sprite sheet |
| `custom_boring_row` | Integer | 1-15 | -1 (auto) | Row nr for boring animation |
| `custom_start_writing_row` | Integer | 1-15 | -1 (auto) | Row nr for start writing animation |
| `custom_writing_row` | Integer | 1-15 | -1 (auto) | Row nr for writing animation |
| `custom_end_writing_row` | Integer | 1-15 | -1 (auto) | Row nr for end writing animation |
| `custom_happy_row` | Integer | 1-15 | -1 (auto) | Row nr for happy animation |
| `custom_asleep_row` | Integer | 1-15 | -1 (auto) | Row nr for asleep animation |
| `custom_sleep_row` | Integer | 1-15 | -1 (auto) | Row nr for sleep animation |
| `custom_wake_up_row` | Integer | 1-15 | -1 (auto) | Row nr for wake-up animation |
| `custom_start_working_row` | Integer | 1-15 | -1 (auto) | Row nr for start working animation |
| `custom_working_row` | Integer | 1-15 | -1 (auto) | Row nr for working animation |
| `custom_end_working_row` | Integer | 1-15 | -1 (auto) | Row nr for end working animation |
| `custom_start_moving_row` | Integer | 1-15 | -1 (auto) | Row nr for start moving animation |
| `custom_moving_row` | Integer | 1-15 | -1 (auto) | Row nr for moving animation |
| `custom_end_moving_row` | Integer | 1-15 | -1 (auto) | Row nr for end moving animation |


See [examples](examples/custom-sprite-sheets) for more details.

## 🔧 Usage

### Command Line Options
Expand Down Expand Up @@ -523,7 +569,7 @@ Minimal builds require only a few MB of RAM, whereas asset-heavy builds use more
|----------------|----------------------------------------------------------|------------------------------------------------------------------------------|
| **CPU** | Any modern **x86_64** or **ARM64** processor (SSE2/NEON) | Dual-core **x86_64** or **ARM64** processor |
| **RAM** | **8 MB free** (minimal build with minimal assets) | **64 MB free** (full builds with all assets, preloaded, and config overhead) |
| **Storage** | **1 MB free** (binary + config files) | **10 MB free** (multiple binaries/builds + config files) |
| **Storage** | **6 MB free** (binary + config files) | **20 MB free** (multiple binaries/builds + config files) |
| **Compositor** | Wayland with **wlr-layer-shell** protocol support | Modern Wayland compositor (Sway, Hyprland, Wayfire, KDE Plasma 6) |


Expand Down Expand Up @@ -739,5 +785,5 @@ See [COPYRIGHT](assets/COPYRIGHT.md) for more details.

---

**₍^. .^₎ Wayland Bongo Cat Overlay v3.2.0** - Making desktops more delightful, one keystroke at a time!
**₍^. .^₎ Wayland Bongo Cat Overlay v3.3.0** - Making desktops more delightful, one keystroke at a time!
Now with Digimon V-Pets, Clippy and Pokémon.
11 changes: 11 additions & 0 deletions assets/COPYRIGHT.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@

custom-drawn bongo cat artwork by [@Shreyabardia](https://github.com/Shreyabardia)

## Neko

Old [Neko](https://github.com/eliot-akira/neko/tree/main) cat screenmate.
Part of the oneko-2.0, created by Tatsuya Kato.

Oneko-2.0 is based on xneko created by Masayuki Koba,
and image files of xneko is based on nekoDA created by Kenji Gotoh.

For more information, see following pages:
http://www.3bit.co.jp/~sasaki/oneko/COPYRIGHTS
http://en.wikipedia.org/wiki/Neko_(computer_program)

## 3rd Party

Expand Down
7 changes: 7 additions & 0 deletions assets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,10 @@ Frame Size: varies from 22x22 - 32x32px

- `idle1`
- `idle2`


### custom/misc

Custom and misc sprite sheets, each row is a full animation.
Number of frames needs to be provided per row.
See [custom sprite sheets](../examples/custom-sprite-sheets) for custom sprite and config settings.
Binary file added assets/misc/neko.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/bongocat-all.conf.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ fragments/set-dmc.md
fragments/set-dmall.md
fragments/set-more-ms-agent.md
fragments/set-pkmn.md
fragments/set-misc.md
```
31 changes: 30 additions & 1 deletion docs/fragments/copyright.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
- furudbat <hircreacc@gmail.com> - wayland-vpets fork


# COPYRIGHT
# LICENSE

MIT License

Expand All @@ -29,3 +29,32 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


# COPYRIGHT

## Bongocat

custom-drawn bongo cat artwork by [@Shreyabardia](https://github.com/Shreyabardia)

## Neko

Part of the oneko-2.0, created by Tatsuya Kato.
Oneko-2.0 is based on xneko created by Masayuki Koba,
and images of xneko is based on nekoDA created by Kenji Gotoh.

## 3rd Party

This project is **free**, **non-commercial** and is not associated with the entities below.

### Digimon

Digimon and all related characters, and associated images are owned by Bandai Co., Ltd, Akiyoshi Hongo, and Toei Animation Co., Ltd.

### Pokemon

Pokemon sprite- and images are owned by Nintendo, Creatures Inc. and GAME FREAK Inc.

### MS Agent (Clippy)

Clippy and other MS Agents are owed by Microsoft.
4 changes: 4 additions & 0 deletions docs/fragments/set-misc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## misc
miscellaneous and generic pets

- neko
Loading