# signal-cli
signal-cli is a commandline interface for [libsignal-service-java](https://github.com/WhisperSystems/libsignal-service-java). It supports registering, verifying, sending and receiving messages.
-To be able to link to an existing Signal-Android/signal-cli instance, signal-cli uses a [patched libsignal-service-java](https://github.com/AsamK/libsignal-service-java), because libsignal-service-java does not yet support [provisioning as a slave device](https://github.com/WhisperSystems/libsignal-service-java/pull/21).
+To be able to link to an existing Signal-Android/signal-cli instance, signal-cli uses a [patched libsignal-service-java](https://github.com/AsamK/libsignal-service-java), because libsignal-service-java does not yet support [provisioning as a linked device](https://github.com/WhisperSystems/libsignal-service-java/pull/21).
For registering you need a phone number where you can receive SMS or incoming calls.
signal-cli is primarily intended to be used on servers to notify admins of important events. For this use-case, it has a dbus interface ([man page](https://github.com/AsamK/signal-cli/blob/master/man/signal-cli-dbus.5.adoc)), that can be used to send messages from any programming language that has dbus bindings.
+It also has a JSON-RPC based interface, see the [documentation](https://github.com/AsamK/signal-cli/wiki/JSON-RPC-service) for more information.
## Installation
$XDG_DATA_HOME/signal-cli/data/
$HOME/.local/share/signal-cli/data/
-For legacy users, the old config directories are used as a fallback:
-
- $HOME/.config/signal/data/
- $HOME/.config/textsecure/data/
-
## Building
This project uses [Gradle](http://gradle.org) for building and maintaining
./gradlew build
-3. Create shell wrapper in *build/install/signal-cli/bin*:
+ 3a. Create shell wrapper in *build/install/signal-cli/bin*:
./gradlew installDist
-4. Create tar file in *build/distributions*:
+ 3b. Create tar file in *build/distributions*:
./gradlew distTar
+ 3c. Compile and run signal-cli:
+
+ ./gradlew run --args="--help"
+
### Building a native binary with GraalVM (EXPERIMENTAL)
It is possible to build a native binary with [GraalVM](https://www.graalvm.org).
2. [Install prerequisites](https://www.graalvm.org/reference-manual/native-image/#prerequisites)
3. Execute Gradle:
- ./gradlew assembleNativeImage
+ ./gradlew nativeCompile
- The binary is available at *build/native-image/signal-cli*
+ The binary is available at *build/native/nativeCompile/signal-cli*
## FAQ and Troubleshooting
For frequently asked questions and issues have a look at the [wiki](https://github.com/AsamK/signal-cli/wiki/FAQ)