You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First off, thank you for considering contributing to Bash Screensavers! It’s people like you that make this project so much fun. We're excited to see what you'll bring to our collection of ASCII art animations.
4
+
5
+
## Why Contribute?
6
+
7
+
Contributing to Bash Screensavers is a great way to show off your creativity and practice your shell scripting skills. This project is all about having fun and making the command line a more exciting place. Whether you're a seasoned developer or just starting out, we welcome your ideas and contributions.
8
+
9
+
Here are a few reasons why you might want to contribute:
10
+
11
+
***Have fun!** This project is all about creativity and making cool things.
12
+
***Learn and practice.** Sharpen your `bash` scripting skills and learn how to create animations in the terminal.
13
+
***Be part of a community.** Join a group of like-minded people who love to tinker with the command line.
14
+
***Make your mark.** Create a screensaver that will be used by people all over the world.
15
+
16
+
We welcome contributions of all kinds, from new screensavers to bug fixes and documentation improvements. If you have an idea, we'd love to hear it!
17
+
18
+
### Create Your Own Screensaver
19
+
20
+
Got an idea for a cool ASCII animation? Want to contribute to the collection? It's easy!
21
+
22
+
#### The Easy Way (Generator)
23
+
24
+
You can use the built-in generator to create a new screensaver with all the boilerplate code you need. Just run:
25
+
26
+
```bash
27
+
./screensaver.sh --new my-awesome-screensaver
28
+
```
29
+
(You can also use `-n` instead of `--new`)
30
+
31
+
This will create a new directory `gallery/my-awesome-screensaver` with a starter `my-awesome-screensaver.sh` script and a `config.sh` file. All you have to do is edit the `.sh` file to add your animation logic!
32
+
33
+
#### The Hard Way (Manual)
34
+
35
+
1.**Create a new directory** for your screensaver inside the `gallery` directory. For example, `gallery/my-awesome-screensaver`.
36
+
2.**Create a shell script** inside your new directory with the same name as the directory, ending in `.sh`. For example, `gallery/my-awesome-screensaver/my-awesome-screensaver.sh`.
37
+
3.**Write your masterpiece!** Your script should:
38
+
- Be executable (`chmod +x your-script.sh`).
39
+
- Handle cleanup gracefully. Use `trap` to catch `SIGINT` (`Ctrl+C`) and restore the terminal to its normal state.
40
+
- Be awesome.
41
+
42
+
That's it! The main `screensaver.sh` script will automatically detect your new creation.
43
+
44
+
### Project Overview
45
+
46
+
*`./screensaver.sh` is the main menu script
47
+
* it shows a list of available screensavers
48
+
* and prompts user to pick one to run.
49
+
*`./gallery` is the gallery directory, where all screensavers are stored.
50
+
* Each screensaver has its own directory inside `./gallery`
51
+
* The name of the directory is the name of the screensaver.
52
+
* example: screensaver named 'foo' is in: `./gallery/foo`
53
+
* Each screensaver has a run script in format 'name.sh'
54
+
* example: `./gallery/foo/foo.sh`
55
+
* Each screensaver has a config file with name, tagline, etc
56
+
* example: `./gallery/foo/config.sh`
57
+
*`./tests` directory is the BATS test suite for this project
58
+
*`./.github` directory is for GitHub Workflows for this project.
59
+
60
+
### Project Structure
61
+
62
+
```
63
+
.
64
+
├─ screensaver.sh # Where the ASCII magic begins
65
+
├─ LICENSE # MIT Licensed, because all the cool kids are doing it
66
+
├─ README.md # This file, isn't it pretty?
67
+
├─ CONTRIBUTING.md # Guidelines for contributing to this project
68
+
├─ gallery # Welcome to the Gallery of Terminal Visualizations
69
+
│ ├─ name # I'm a screensaver, and I have my own directory!
70
+
│ │ └─ name.sh # I'm a screensaver, and I can run, run, run!
71
+
│ │ └─ config.sh # Psst... want some free metadata?
72
+
├─ tests # I gotta BATSy idea, we should test this stuff
73
+
│ └─ tests.sh # It can't be that bad, can it?
74
+
└─ .github # GitHub magic lives here
75
+
└─ workflows
76
+
└─ create.release.for.tag.yml
77
+
```
78
+
79
+
### Style Suggestions
80
+
81
+
* Indents **SHOULD** be whatever works for you
82
+
* Functions and variables **SHOULD** be in `snake_case`
83
+
* Super-duper important variables **SHOULD** be in `SCREAMING_SNAKE_CASE`
84
+
* You **MUST** have fun
85
+
* Why use boring function names like `main()`
86
+
when `start_the_visual_pleasure()` is just a few more characters
87
+
88
+
### Requirements
89
+
90
+
* Bash v3.2 for `./screensaver.sh`
91
+
* Individual screensavers may use any Bash version that makes them happy
92
+
* All screensavers must die with honor
93
+
* Gracefully handle `^C` to clean up the terminal and `exit 0`
94
+
* All shell scripts must have execute permission: `chmod +x *.sh`
95
+
96
+
### Codespaces
97
+
98
+
* whip up a [Codespace from attogram/bash-screensavers](https://codespaces.new/attogram/bash-screensavers) for fun!
Let's make the command line a more colorful place, one ASCII character at a time.
94
-
95
-
### Create Your Own Screensaver
96
-
97
-
Got an idea for a cool ASCII animation? Want to contribute to the collection? It's easy!
98
-
99
-
#### The Easy Way (Generator)
100
-
101
-
You can use the built-in generator to create a new screensaver with all the boilerplate code you need. Just run:
102
-
103
-
```bash
104
-
./screensaver.sh --new my-awesome-screensaver
105
-
```
106
-
(You can also use `-n` instead of `--new`)
107
-
108
-
This will create a new directory `gallery/my-awesome-screensaver` with a starter `my-awesome-screensaver.sh` script and a `config.sh` file. All you have to do is edit the `.sh` file to add your animation logic!
109
-
110
-
#### The Hard Way (Manual)
111
-
112
-
1.**Create a new directory** for your screensaver inside the `gallery` directory. For example, `gallery/my-awesome-screensaver`.
113
-
2.**Create a shell script** inside your new directory with the same name as the directory, ending in `.sh`. For example, `gallery/my-awesome-screensaver/my-awesome-screensaver.sh`.
114
-
3.**Write your masterpiece!** Your script should:
115
-
- Be executable (`chmod +x your-script.sh`).
116
-
- Handle cleanup gracefully. Use `trap` to catch `SIGINT` (`Ctrl+C`) and restore the terminal to its normal state.
117
-
- Be awesome.
118
-
119
-
That's it! The main `screensaver.sh` script will automatically detect your new creation.
120
-
121
-
### Project Overview
122
-
123
-
*`./screensaver.sh` is the main menu script
124
-
* it shows a list of available screensavers
125
-
* and prompts user to pick one to run.
126
-
*`./gallery` is the gallery directory, where all screensavers are stored.
127
-
* Each screensaver has its own directory inside `./gallery`
128
-
* The name of the directory is the name of the screensaver.
129
-
* example: screensaver named 'foo' is in: `./gallery/foo`
130
-
* Each screensaver has a run script in format 'name.sh'
131
-
* example: `./gallery/foo/foo.sh`
132
-
* Each screensaver has a config file with name, tagline, etc
133
-
* example: `./gallery/foo/config.sh`
134
-
*`./tests` directory is the BATS test suite for this project
135
-
*`./.github` directory is for GitHub Workflows for this project.
136
-
137
-
### Project Structure
138
-
139
-
```
140
-
.
141
-
├─ screensaver.sh # Where the ASCII magic begins
142
-
├─ LICENSE # MIT Licensed, because all the cool kids are doing it
143
-
├─ README.md # This file, isn't it pretty?
144
-
├─ gallery # Welcome to the Gallery of Terminal Visualizations
145
-
│ ├─ name # I'm a screensaver, and I have my own directory!
146
-
│ │ └─ name.sh # I'm a screensaver, and I can run, run, run!
147
-
│ │ └─ config.sh # Psst... want some free metadata?
148
-
├─ tests # I gotta BATSy idea, we should test this stuff
149
-
│ └─ tests.sh # It can't be that bad, can it?
150
-
└─ .github # GitHub magic lives here
151
-
└─ workflows
152
-
└─ create.release.for.tag.yml
153
-
```
154
-
155
-
### Style Suggestions
156
-
157
-
* Indents **SHOULD** be whatever works for you
158
-
* Functions and variables **SHOULD** be in `snake_case`
159
-
* Super-duper important variables **SHOULD** be in `SCREAMING_SNAKE_CASE`
160
-
* You **MUST** have fun
161
-
* Why use boring function names like `main()`
162
-
when `start_the_visual_pleasure()` is just a few more characters
163
-
164
-
### Requirements
165
-
166
-
* Bash v3.2 for `./screensaver.sh`
167
-
* Individual screensavers may use any Bash version that makes them happy
168
-
* All screensavers must die with honor
169
-
* Gracefully handle `^C` to clean up the terminal and `exit 0`
170
-
* All shell scripts must have execute permission: `chmod +x *.sh`
171
-
172
-
### Codespaces
173
-
174
-
* whip up a [Codespace from attogram/bash-screensavers](https://codespaces.new/attogram/bash-screensavers) for fun!
91
+
For more information, please see the [Developers Guide](./CONTRIBUTING.md).
175
92
176
93
---
177
94
178
-
## Development Tools
95
+
## Gallery Tools
179
96
180
97
This project includes several scripts to help with development and maintenance. For a full list of tools and their usage, please see the [Tools README](./tools/README.md).
0 commit comments