if (isCopy == 1 && copyTimeout > 300) copyTimeout = 300;
char *lang = getlang();
- // Xセッションではない場合(例えば、SSH、TTY、Gayland等)、showpass()を実行して
- if (isCopy == 1 && getenv("DISPLAY") == NULL) {
+ int isGay = (getenv("WAYLAND_DISPLAY") != NULL);
+
+ // Xセッションではない場合(例えば、SSH、TTY等)、otppass()を実行して
+ if (isCopy == 1 && getenv("DISPLAY") == NULL && getenv("WAYLAND_DISPLAY") == NULL) {
if (strncmp(lang, "en", 2) == 0)
- puts("There is no X session, so running 'sp -o'.");
- else puts("Xセッションではありませんので、「sp -o」を実行します。");
+ puts("There is no X or Wayland session, so running 'sp -o'.");
+ else puts("X又はWaylandセッションではありませんので、「sp -o」を実行します。");
otppass(file, 0, 0);
return;
}
if (isCopy) {
char cmd[64];
- snprintf(cmd, sizeof(cmd), "echo -n %06d | xclip -selection clipboard", otp);
+ if (isGay) snprintf(cmd, sizeof(cmd), "echo -n %06d | wl-copy", otp);
+ else snprintf(cmd, sizeof(cmd), "echo -n %06d | xclip -selection clipboard", otp);
+
int ret = system(cmd);
if (ret != 0) {
char *ero = (strncmp(lang, "en", 2) == 0 ?
- "Failed to copy OTP." : "OTPをコピーに失敗。");
+ "Failed to copy OTP." : "ワンタイムパスワードをコピーに失敗。");
fprintf(stderr, "%s\n", ero);
}
copyTimeout,
"秒後はクリップボードから取り消されます。"
);
+
sleep(copyTimeout);
- system("echo -n \"\" | xclip -selection clipboard");
+
+ if (isGay) system("echo -n \"\" | wl-copy");
+ else system("echo -n \"\" | xclip -selection clipboard");
} else {
printf("%06d\n", otp);
}
if (copyTimeout > 300) copyTimeout = 300;
char *lang = getlang();
- // Xセッションではない場合(例えば、SSH、TTY、Gayland等)、showpass()を実行して
- if (getenv("DISPLAY") == NULL) {
+ int isGay = (getenv("WAYLAND_DISPLAY") != NULL);
+
+ // Xセッションではない場合(例えば、SSH、TTY等)、showpass()を実行して
+ if (getenv("DISPLAY") == NULL && getenv("WAYLAND_DISPLAY") == NULL) {
if (strncmp(lang, "en", 2) == 0)
- puts("There is no X session, so running 'sp -s'.");
- else puts("Xセッションではありませんので、「sp -s」を実行します。");
+ puts("There is no X or Wayland session, so running 'sp -s'.");
+ else puts("X又はWaylandセッションではありませんので、「sp -s」を実行します。");
showpass(file);
return;
}
return;
}
- // xclipを準備して
- FILE *pipe = popen("xclip -selection clipboard", "w");
+ // xclip又はwl-copyを準備して
+ char *cmd;
+ if (isGay) cmd = "wl-copy";
+ else cmd = "xclip -selection clipboard";
+
+ FILE *pipe = popen(cmd, "w");
if (pipe == NULL) {
// 掃除
fclose(gpgfile);
"秒後はクリップボードから取り消されます。"
);
sleep(copyTimeout);
- system("echo -n | xclip -selection clipboard");
+ if (isGay) system("echo -n \"\" | wl-copy");
+ else system("echo -n \"\" | xclip -selection clipboard");
// 掃除
fclose(gpgfile);