The binary will be located in `target/release/pswatch`.
## Usage
Pswatch requires a `TOML` based configuration file. By default it uses the config file under `$XDG_CONFIG_DIR/pswatch/config.toml` or the one provided as parameter.
Pswatch requires a `TOML` based configuration file. By default it uses the
config file under $XDG_CONFIG_DIR/pswatch/config.toml or the one provided as
parameter.
```sh
./pswatch -c /path/to/config.toml
@ -38,10 +37,10 @@ patterns defined in the configuration file.
## Configuration File
pswatch's behavior is configured using a TOML-formatted configuration file. The
file should contain a list of `profiles`, each containing a `matching` directive
(the process to match), an (optional)`regex` flag (set to `true` if the
pattern is a regular expression), and a list of `commands`.
pswatch's behavior is configured using a TOML-formatted configuration file.
The file should contain a list of `watches`, each containing a `pattern` (the
process name to match), a `regex` flag (set to `true` if the pattern is a
regular expression), and a list of `commands`.
Each command contains a condition (either `seen` or `not_seen` with a duration)
and an array of shell commands (`exec`) to execute when the condition is met. An
run_once = true # run the command only once per process detection
```
In this example, pswatch will watch for three processes: "bar", "baz" and "buz".
- It matches `bar` by process name (simple string).
- Matches `.*baz$` and `\-buz.*` by a regex pattern of the executable path and
command line respectively.
- When "bar" is not seen for 5 seconds, it will execute the `exec` action.
- When "baz" (a regular expression) is detected, it will execute the
corresponding `exec` after a delay of 10 seconds.
- The command for "baz" will be run only once per process detection.
In this example, pswatch will watch for two processes: "bar" and "baz". When
"bar" is not seen for 5 seconds, it will execute `echo not seen!`. When "baz" (a
regular expression) is detected, it will execute `say 'baz detected!'` after a
delay of 10 seconds. The command for "baz" will be run only once per process
detection.
## Example Scenarios
@ -142,46 +101,31 @@ corresponding `exec` after a delay of 10 seconds.
- Define a watch with the desired process name and use `{not_seen = "duration"}` to specify that the command should be executed when the process has been absent for a specified duration (e.g., "5s").
3. **Execute multiple commands based on different conditions**
- Define multiple watch configurations in the same TOML file and specify separate `condition` and `exec` settings for each. pswatch will monitor all configured profiles and execute their respective commands when appropriate.
## Systemd User Unit
```ini
[Unit]
Description=pswatch process watcher
[Service]
Type=notify
ExecStart=%h/.cargo/bin/pswatch
Restart=on-failure
; Use this to enable debug or trace
;Environment=RUST_LOG=debug
[Install]
WantedBy=default.target
```
- Define multiple watch configurations in the same TOML file and specify separate `condition` and `exec` settings for each. pswatch will monitor all configured watches and execute their respective commands when appropriate.
## Troubleshooting
You can enable more verbose output using the `-d` flag or setting the environment variable to `debug` or `trace`.
If you encounter any issues while using pswatch, please refer to the
[TROUBLESHOOTING.md](TROUBLESHOOTING.md) file in this repository for
troubleshooting tips and solutions.
## Contributing
Contributions are welcome ! If you'd like to contribute, please follow these steps:
Contributions are welcome! If you'd like to contribute to pswatch, please
follow these steps:
1. Fork the repository on GitHub.
2. Clone your fork to your local machine: `git clone
https://github.com/your-username/pswatch.git`.
3. Create a new branch for your changes: `git checkout -b my-feature`.
4. Make your changes and commit them with descriptive messages:
`git commit -am 'Add some feature'`.
5. Push your branch: `git push origin my-feature`.
6. Submit a pull request from your GitHub fork to the main repository.
4. Make your changes and commit them with descriptive messages: `git commit
-am 'Add some feature'`.
5. Push your branch to your GitHub fork: `git push origin my-feature`.
6. Submit a pull request from your GitHub fork to the main repository.
## License
pswatch is licensed under the AGPLv3 License.
See [LICENSE](LICENSE) for more details.
pswatch is licensed under the AGPLv3 License. See [LICENSE](LICENSE) for more