Skip to content

Commit

Permalink
Merge pull request #1254 from nyorain/master
Browse files Browse the repository at this point in the history
Fix #926
  • Loading branch information
ddevault authored Jul 1, 2017
2 parents 387eca1 + 60fa626 commit fe76399
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/sway/commands.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ sway_cmd cmd_client_unfocused;
sway_cmd cmd_client_urgent;
sway_cmd cmd_client_placeholder;
sway_cmd cmd_client_background;
sway_cmd cmd_clipboard;
sway_cmd cmd_commands;
sway_cmd cmd_debuglog;
sway_cmd cmd_default_border;
Expand Down
1 change: 1 addition & 0 deletions sway/commands.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ static struct cmd_handler handlers[] = {
{ "client.placeholder", cmd_client_placeholder },
{ "client.unfocused", cmd_client_unfocused },
{ "client.urgent", cmd_client_urgent },
{ "clipboard", cmd_clipboard },
{ "commands", cmd_commands },
{ "debuglog", cmd_debuglog },
{ "default_border", cmd_default_border },
Expand Down
38 changes: 38 additions & 0 deletions sway/commands/clipboard.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include <wlc/wlc.h>
#include <unistd.h>
#include <string.h>
#include "sway/commands.h"
#include "stringop.h"

static void send_clipboard(void *data, const char *type, int fd) {
if (strcmp(type, "text/plain") != 0
&& strcmp(type, "text/plain;charset=utf-8") != 0) {
close(fd);
return;
}

const char *str = data;
write(fd, str, strlen(str));
close(fd);
}

struct cmd_results *cmd_clipboard(int argc, char **argv) {
static char *current_data = NULL;

struct cmd_results *error = NULL;
if ((error = checkarg(argc, "clipboard", EXPECTED_AT_LEAST, 1))) {
return error;
}

static const char *types[2] = {
"text/plain",
"text/plain;charset=utf-8"
};

char *str = join_args(argv, argc);
wlc_set_selection(str, types, 2, &send_clipboard);

free(current_data);
current_data = str;
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
}

0 comments on commit fe76399

Please sign in to comment.