Skip to content

Commit fa6768d

Browse files
committed
Add Linux icon and update README
- Convert App.ico to babysmash.png for Linux - Include icon in Linux tarball - Update README with full Linux install instructions - Add icon installation steps for app menu
1 parent 588e9e0 commit fa6768d

3 files changed

Lines changed: 114 additions & 49 deletions

File tree

.github/workflows/build.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,11 @@ jobs:
5050
run: |
5151
mkdir -p artifacts
5252
53-
# Create tarball with executable, desktop file, and README
53+
# Create tarball with executable, desktop file, icon, and README
5454
mkdir -p temp-linux
5555
cp BabySmash.Linux/bin/Release/net10.0/linux-x64/publish/BabySmash.Linux temp-linux/babysmash
5656
cp BabySmash.Linux/babysmash.desktop temp-linux/
57+
cp Shared/Resources/babysmash.png temp-linux/
5758
cp README.md temp-linux/
5859
chmod +x temp-linux/babysmash
5960

README.md

Lines changed: 112 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -11,65 +11,135 @@ As babies or children smash on the keyboard, colored shapes, letters and numbers
1111
- 🎨 Colorful shapes with happy faces (Circle, Heart, Hexagon, Star, Triangle, and more)
1212
- 🔤 Letters and numbers with text-to-speech
1313
- 🔊 Fun sounds and giggles
14-
- 🖥️ Multi-monitor support with Per-Monitor DPI awareness
15-
- 🔒 Locks out Windows key, Ctrl+Esc, Alt+Tab to prevent accidental exits
16-
- 🔄 **Auto-updates** via GitHub Releases
14+
- 🖥️ Multi-monitor support
15+
- 🔒 Locks out system keys to prevent accidental exits
16+
- 🔄 **Auto-updates** via GitHub Releases (Windows)
17+
- 🐧 **Linux support** via Avalonia
1718

18-
## Keyboard Shortcuts
19+
## Downloads
20+
21+
| Platform | Download | Notes |
22+
|----------|----------|-------|
23+
| **Windows** | [BabySmash-Setup.exe](https://github.com/shanselman/babysmash/releases/latest/download/BabySmash-Setup.exe) | Installer with auto-updates |
24+
| **Windows** | [BabySmash-win-x64.zip](https://github.com/shanselman/babysmash/releases/latest/download/BabySmash-win-x64.zip) | Portable version |
25+
| **Linux** | [BabySmash-linux-x64.tar.gz](https://github.com/shanselman/babysmash/releases/latest/download/BabySmash-linux-x64.tar.gz) | Self-contained executable |
26+
27+
---
28+
29+
## Windows
30+
31+
### Keyboard Shortcuts
1932

2033
| Shortcut | Action |
2134
|----------|--------|
2235
| Any key | Display shapes/letters! |
2336
| `Ctrl+Shift+Alt+O` | Options dialog |
2437
| `Alt+F4` | Exit |
2538

39+
### Requirements
40+
41+
- Windows 10 or later (64-bit)
42+
- No .NET installation required (self-contained)
43+
44+
### Touchpad Gestures
45+
46+
BabySmash blocks most keyboard shortcuts, but **Windows touchpad gestures** (like three-finger swipe for Task View) are handled at the OS level and cannot be blocked by applications.
47+
48+
**To prevent accidental exits via touchpad:**
49+
50+
1. Open **Windows Settings****Bluetooth & devices****Touchpad**
51+
2. Under **Three-finger gestures**, set "Swipes" to **Nothing**
52+
3. Optionally disable four-finger gestures too
53+
54+
---
55+
56+
## Linux
57+
58+
### Installation
59+
60+
1. Download and extract:
61+
```bash
62+
tar -xzf BabySmash-linux-x64.tar.gz
63+
```
64+
65+
2. Install dependencies:
66+
```bash
67+
# For text-to-speech
68+
sudo apt install espeak
69+
70+
# For audio (one of these)
71+
sudo apt install pulseaudio-utils # for paplay
72+
# or
73+
sudo apt install alsa-utils # for aplay
74+
```
75+
76+
3. Run:
77+
```bash
78+
./babysmash
79+
```
80+
81+
### Add to Application Menu (Optional)
82+
83+
To make BabySmash appear in your desktop's app launcher:
84+
85+
```bash
86+
# Copy executable to a permanent location
87+
sudo cp babysmash /usr/local/bin/
88+
89+
# Install the icon
90+
sudo cp babysmash.png /usr/share/icons/hicolor/256x256/apps/
91+
92+
# Install desktop entry
93+
cp babysmash.desktop ~/.local/share/applications/
94+
95+
# Update icon cache
96+
gtk-update-icon-cache /usr/share/icons/hicolor/ 2>/dev/null || true
97+
```
98+
99+
### Keyboard Shortcuts
100+
101+
| Shortcut | Action |
102+
|----------|--------|
103+
| Any key | Display shapes/letters! |
104+
| `Alt+O` | Options dialog |
105+
| `Escape` | Exit |
106+
107+
### Requirements
108+
109+
- 64-bit Linux (x64)
110+
- `espeak` for text-to-speech
111+
- `paplay` or `aplay` for audio
112+
- No .NET installation required (self-contained)
113+
114+
---
115+
26116
## Localization / Language Support
27117

28-
BabySmash automatically uses your **Windows keyboard language** for:
118+
BabySmash automatically uses your **keyboard language** for:
29119

30120
1. **Text-to-speech voice** - Shapes and colors are spoken in your language
31121
2. **Shape/color names** - Translated to your locale (if available)
32122
3. **Word order** - "Red Circle" (English) vs "Círculo Vermelho" (Portuguese)
33123

34-
**Supported locales:** English (en), Russian (ru), Portuguese (pt-BR, pt-PT)
35-
36-
### Changing the Language
37-
38-
1. Change your Windows keyboard language (Win+Space or taskbar language selector)
39-
2. BabySmash will use the matching TTS voice and translations
124+
**Supported locales:** English (en), German (de), Spanish (es), French (fr), Greek (el), Latvian (lv), Portuguese (pt-BR, pt-PT), Russian (ru)
40125

41126
### Adding a New Language
42127

43-
Create a JSON file in `Resources/Strings/` named `{locale}.json` (e.g., `de-DE.json` for German):
128+
Create a JSON file in `Shared/Resources/Strings/` named `{locale}.json` (e.g., `ja-JP.json` for Japanese):
44129

45130
```json
46131
{
47132
"ColorShapeFormat": "{0} {1}",
48-
"Circle": "Kreis",
49-
"Red": "Rot",
133+
"Circle": "",
134+
"Red": "",
50135
...
51136
}
52137
```
53138

54139
- Use `"{0} {1}"` for color-first languages (English: "Red Circle")
55140
- Use `"{1} {0}"` for shape-first languages (Portuguese: "Círculo Vermelho")
56141

57-
**Note:** You may need to install the TTS voice for your language in Windows Settings → Time & Language → Speech.
58-
59-
## Touchpad Gestures
60-
61-
BabySmash blocks most keyboard shortcuts, but **Windows touchpad gestures** (like three-finger swipe for Task View) are handled at the OS level and cannot be blocked by applications.
62-
63-
**To prevent accidental exits via touchpad:**
64-
65-
1. Open **Windows Settings****Bluetooth & devices****Touchpad**
66-
2. Under **Three-finger gestures**, set "Swipes" to **Nothing**
67-
3. Optionally disable four-finger gestures too
68-
69-
## Requirements
70-
71-
- Windows 10 or later (64-bit)
72-
- No .NET installation required (self-contained)
142+
---
73143

74144
## Building from Source
75145

@@ -78,42 +148,36 @@ Requires [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
78148
```bash
79149
git clone https://github.com/shanselman/babysmash.git
80150
cd babysmash
151+
152+
# Windows
81153
dotnet run
154+
155+
# Linux
156+
dotnet run --project BabySmash.Linux
82157
```
83158

84-
### Publish Single-File Executable
159+
### Publish Executables
85160

86161
```bash
162+
# Windows
87163
dotnet publish -c Release -r win-x64 --self-contained
164+
165+
# Linux
166+
dotnet publish BabySmash.Linux -c Release -r linux-x64 --self-contained
88167
```
89168

90-
Output: `bin/Release/net10.0-windows/win-x64/publish/BabySmash.exe`
169+
---
91170

92171
## History
93172

94173
Originally developed by [Scott Hanselman](https://www.hanselman.com), based on AlphaBaby.
95174

96175
- **v1-v2**: Original .NET Framework 3.5 version
97176
- **v3.0**: Migrated to .NET 10, single-file deployment
98-
- **v4.0**: Added Updatum auto-updates, Azure code signing, new icon
177+
- **v4.0**: Linux support via Avalonia, shared resources, auto-updates
99178

100179
> **Looking for the original code?** The legacy .NET Framework 3.5 version is preserved in the [legacy-dotnet35](https://github.com/shanselman/babysmash/tree/legacy-dotnet35) branch.
101180
102-
## Cross-Platform (Future)
103-
104-
Planning is underway for an **Avalonia port** to bring BabySmash to **Linux**!
105-
106-
📋 See the [Avalonia Port Plan](AVALONIA_PORT_PLAN.md) for the complete roadmap and architecture.
107-
108-
**Documentation**:
109-
- [Planning Document](AVALONIA_PORT_PLAN.md) - Comprehensive plan for Linux port
110-
- [Architecture](docs/AVALONIA_ARCHITECTURE.md) - Technical architecture details
111-
- [Quick Start Guide](docs/AVALONIA_QUICKSTART.md) - Developer getting started guide
112-
113-
**Focus**: Linux support via Avalonia while keeping the existing Windows WPF version
114-
115-
**Interested in contributing?** The Linux port is a great opportunity to help bring BabySmash to Linux users!
116-
117181
## License
118182

119183
See [LICENSE](LICENSE)

Shared/Resources/babysmash.png

95.7 KB
Loading

0 commit comments

Comments
 (0)