Skip to content

Commit 8058ed0

Browse files
committed
[feat] First full release, ui and many user friendly things
1 parent f302af0 commit 8058ed0

28 files changed

Lines changed: 1119 additions & 353 deletions

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
config.yaml
33
.vscode
44
go-skribbot.exe
5-
image.png
5+
logs/
6+
go-skribbot.app

FyneApp.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[Details]
2+
Icon = "resources/src/icon.png"
3+
Name = "Go-Skribbot"
4+
ID = "com.kelaron.goskribbot"
5+
Version = "1.0.0"
6+
Build = 2

Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,10 @@ run:
33
go run main.go
44

55
build:
6-
go build -o go-skribbot.exe main.go
6+
fyne package -os windows --app-build 1 --release
7+
8+
build-linux:
9+
fyne package -os linux --app-build 1 --release
10+
11+
build-macos:
12+
fyne package -os darwin --app-build 1 --release

README.md

Lines changed: 55 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,61 @@
1-
# go-scribbot (beta version)
1+
# Go-Skribbot
22

3-
Simple auto-drawing tool for skribbl.io written in Go.
3+
GUI auto-drawing tool for skribbl.io written in Go (Fyne). Search an image, click it, and the bot draws it for you.
44

5-
## Instructions
65

7-
### Setup
6+
## Features
87

9-
- On first run, a config file named config.yaml will be created with default settings.
10-
- Make sure print_coords_mode is set to true.
11-
- Start a game on skribbl.io (preferably a private room with two browser tabs).
12-
- When it is your turn to draw, run the program and hover over the white color on the palette.
13-
- After 5 seconds, the program will print coordinates (Your coordinates X: position_x, Y: position_y). Copy these values into the config file.
14-
- After entering the correct coordinates, set print_coords_mode to false.
8+
- Easy initial setup for everyone.
9+
- Images in different styles are searched for each search for the same word.
10+
- Preview how the image will look.
11+
- Stop drawing at any time using the Esc key.
1512

16-
### Drawing
1713

18-
- Place any image file in the same directory as the program.
19-
- When it is your turn to draw, run the program and open the game in your browser.
20-
- If you need to stop drawing, quickly move your mouse cursor to the left.
14+
## Usage
15+
16+
1) Open skribbl.io in a browser. Preferably a private room so you can test safely.
17+
18+
2) Launch Go-Skribbot and setup coordinates.
19+
- Click the gear button to open Settings.
20+
- Click "Change" under "White color position".
21+
- In your browser, move the mouse over the white color square on the palette and right-click. The app captures coordinates automatically.
22+
- Click OK to save.
23+
24+
![Initial setup](readme_files/setup.gif)
25+
26+
3) In the main window, type a search query and click Search (or press Enter). A 2x3 grid will show matching images. (Repeat your search many times to get even more interesting results)
27+
28+
![Search images](readme_files/search.gif)
29+
30+
4) Click any image to start drawing. You have ~3 seconds to focus the browser window with the skribbl.io canvas.
31+
32+
![Drawing](readme_files/draw.gif)
33+
34+
5) Stopping (if needed):
35+
- Press Esc to stop immediately.
36+
37+
38+
## Troubleshooting
39+
40+
- The drawing starts in the wrong place:
41+
- Re-capture coordinates from Settings and ensure the browser is on top when drawing begins.
42+
- Keep browser zoom at 100% and avoid moving the browser window between setup and drawing.
43+
44+
- Nothing happens when clicking an image:
45+
- Ensure PositionX and PositionY are set (Settings).
46+
- Some environments require running the app with appropriate permissions so it can control the mouse.
47+
48+
- Image search returns nothing or errors:
49+
- Try a different query. The app requests images from Google and may be affected by rate limits or network issues.
50+
51+
52+
## Tech stack
53+
54+
- UI: Fyne (fyne.io/fyne/v2)
55+
- Input automation: robotgo, gohook
56+
- Config: cleanenv + YAML
57+
58+
59+
## Disclaimer
60+
61+
This tool automates mouse/keyboard actions and fetches images from the web. Use responsibly and for personal/educational purposes. Respect game rules and third‑party content licenses.

config/config.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ var ErrorNoConfigFile = errors.New("Config file not found")
1616

1717
// Config is the main configuration struct
1818
type Config struct {
19-
PrintCoordsMode bool `yaml:"print_coords_mode"`
20-
PositionX int `yaml:"posotion_x"`
21-
PositionY int `yaml:"position_y"`
22-
DrawingType model.DrawingType `yaml:"drawing_type"`
19+
PositionX int `yaml:"posotion_x"`
20+
PositionY int `yaml:"position_y"`
21+
DrawingType model.DrawingType `yaml:"drawing_type"`
2322
}
2423

2524
// LoadConfig loads the config from config file
@@ -28,7 +27,7 @@ func LoadConfig() (*Config, error) {
2827
cfg := &Config{}
2928

3029
if !configFileExists() {
31-
cfg.PrintCoordsMode = true
30+
cfg.DrawingType = model.DRAWING_TYPE_LINE
3231
return cfg, ErrorNoConfigFile
3332
}
3433

go.mod

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,54 @@ go 1.24.0
55
toolchain go1.24.11
66

77
require (
8+
fyne.io/fyne/v2 v2.7.2
89
github.com/go-vgo/robotgo v1.0.0
910
github.com/ilyakaznacheev/cleanenv v1.5.0
1011
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
12+
github.com/robotn/gohook v0.42.3
13+
github.com/sqweek/dialog v0.0.0-20240226140203-065105509627
1114
gopkg.in/yaml.v3 v3.0.1
1215
)
1316

1417
require (
15-
github.com/BurntSushi/toml v1.2.1 // indirect
18+
fyne.io/systray v1.12.0 // indirect
19+
github.com/BurntSushi/toml v1.5.0 // indirect
20+
github.com/TheTitanrain/w32 v0.0.0-20180517000239-4f5cfb03fabf // indirect
21+
github.com/davecgh/go-spew v1.1.1 // indirect
1622
github.com/dblohm7/wingoes v0.0.0-20250822163801-6d8e6105c62d // indirect
1723
github.com/ebitengine/purego v0.9.1 // indirect
24+
github.com/fredbi/uri v1.1.1 // indirect
25+
github.com/fsnotify/fsnotify v1.9.0 // indirect
26+
github.com/fyne-io/gl-js v0.2.0 // indirect
27+
github.com/fyne-io/glfw-js v0.3.0 // indirect
28+
github.com/fyne-io/image v0.1.1 // indirect
29+
github.com/fyne-io/oksvg v0.2.0 // indirect
1830
github.com/gen2brain/shm v0.1.1 // indirect
31+
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect
32+
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect
1933
github.com/go-ole/go-ole v1.3.0 // indirect
34+
github.com/go-text/render v0.2.0 // indirect
35+
github.com/go-text/typesetting v0.2.1 // indirect
2036
github.com/godbus/dbus/v5 v5.2.0 // indirect
37+
github.com/hack-pad/go-indexeddb v0.3.2 // indirect
38+
github.com/hack-pad/safejs v0.1.0 // indirect
39+
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade // indirect
2140
github.com/jezek/xgb v1.2.0 // indirect
2241
github.com/joho/godotenv v1.5.1 // indirect
42+
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
43+
github.com/kr/text v0.1.0 // indirect
2344
github.com/lufia/plan9stats v0.0.0-20251013123823-9fd1530e3ec3 // indirect
45+
github.com/nicksnyder/go-i18n/v2 v2.5.1 // indirect
2446
github.com/otiai10/gosseract/v2 v2.4.1 // indirect
47+
github.com/pmezard/go-difflib v1.0.0 // indirect
2548
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
2649
github.com/robotn/xgb v0.10.0 // indirect
2750
github.com/robotn/xgbutil v0.10.0 // indirect
51+
github.com/rymdport/portal v0.4.2 // indirect
2852
github.com/shirou/gopsutil/v4 v4.25.10 // indirect
53+
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect
54+
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect
55+
github.com/stretchr/testify v1.11.1 // indirect
2956
github.com/tailscale/win v0.0.0-20250627215312-f4da2b8ee071 // indirect
3057
github.com/tklauser/go-sysconf v0.3.16 // indirect
3158
github.com/tklauser/numcpus v0.11.0 // indirect
@@ -34,9 +61,12 @@ require (
3461
github.com/vcaesar/keycode v0.10.1 // indirect
3562
github.com/vcaesar/screenshot v0.11.1 // indirect
3663
github.com/vcaesar/tt v0.20.1 // indirect
64+
github.com/yuin/goldmark v1.7.8 // indirect
3765
github.com/yusufpapurcu/wmi v1.2.4 // indirect
3866
golang.org/x/exp v0.0.0-20251125195548-87e1e737ad39 // indirect
3967
golang.org/x/image v0.33.0 // indirect
68+
golang.org/x/net v0.35.0 // indirect
4069
golang.org/x/sys v0.39.0 // indirect
70+
golang.org/x/text v0.31.0 // indirect
4171
olympos.io/encoding/edn v0.0.0-20201019073823-d3554ca0b0a3 // indirect
4272
)

0 commit comments

Comments
 (0)