The password and cryptographic keys are created when registering and stored in the current users home directory:
- $HOME/.config/signal/data/
+`$XDG_DATA_HOME/signal-cli/data/` (`$HOME/.local/share/signal-cli/data/`)
+
+For legacy users, the old config directories are used as a fallback:
-For legacy users, the old config directory is used as a fallback:
+ $HOME/.config/signal/data/
$HOME/.config/textsecure/data/
*--config* CONFIG::
Set the path, where to store the config.
Make sure you have full read/write access to the given directory.
- (Default: $HOME/.config/signal)
+ (Default: `$XDG_DATA_HOME/signal-cli` (`$HOME/.local/share/signal-cli`))
*-u* USERNAME, *--username* USERNAME::
Specify your phone number, that will be your identifier.
The password and cryptographic keys are created when registering and stored in the
current users home directory, the directory can be changed with *--config*:
- $HOME/.config/signal/
+`$XDG_DATA_HOME/signal-cli/` (`$HOME/.local/share/signal-cli/`)
+
+For legacy users, the old config directories are used as a fallback:
-For legacy users, the old config directory is used as a fallback:
+ $HOME/.config/signal/
$HOME/.config/textsecure/
import org.asamk.signal.commands.*;
import org.asamk.signal.manager.BaseConfig;
import org.asamk.signal.manager.Manager;
+import org.asamk.signal.util.IOUtils;
import org.asamk.signal.util.SecurityProvider;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.freedesktop.dbus.DBusConnection;
return 3;
}
} else {
- String settingsPath = ns.getString("config");
- if (TextUtils.isEmpty(settingsPath)) {
- settingsPath = System.getProperty("user.home") + "/.config/signal";
- if (!new File(settingsPath).exists()) {
- String legacySettingsPath = System.getProperty("user.home") + "/.config/textsecure";
- if (new File(legacySettingsPath).exists()) {
- settingsPath = legacySettingsPath;
- }
- }
+ String dataPath = ns.getString("config");
+ if (TextUtils.isEmpty(dataPath)) {
+ dataPath = getDefaultDataPath();
}
- m = new Manager(username, settingsPath);
+ m = new Manager(username, dataPath);
ts = m;
try {
m.init();
}
}
+ /**
+ * Uses $XDG_DATA_HOME/signal-cli if it exists, or if none of the legacy directories exist:
+ * - $HOME/.config/signal
+ * - $HOME/.config/textsecure
+ *
+ * @return the data directory to be used by signal-cli.
+ */
+ private static String getDefaultDataPath() {
+ String dataPath = IOUtils.getDataHomeDir() + "/signal-cli";
+ if (new File(dataPath).exists()) {
+ return dataPath;
+ }
+
+ String legacySettingsPath = System.getProperty("user.home") + "/.config/signal";
+ if (new File(legacySettingsPath).exists()) {
+ return legacySettingsPath;
+ }
+
+ legacySettingsPath = System.getProperty("user.home") + "/.config/textsecure";
+ if (new File(legacySettingsPath).exists()) {
+ return legacySettingsPath;
+ }
+
+ return dataPath;
+ }
+
private static Namespace parseArgs(String[] args) {
ArgumentParser parser = ArgumentParsers.newFor("signal-cli")
.build()
.help("Show package version.")
.action(Arguments.version());
parser.addArgument("--config")
- .help("Set the path, where to store the config (Default: $HOME/.config/signal).");
+ .help("Set the path, where to store the config (Default: $XDG_DATA_HOME/signal-cli , $HOME/.local/share/signal-cli).");
MutuallyExclusiveGroup mut = parser.addMutuallyExclusiveGroup();
mut.addArgument("-u", "--username")