11# command-server README
22
3- Adds support for running arbitrary commands via file-based RPC. Designed for
3+ Adds support for running arbitrary commands via file-based RPC. Designed for
44use with voice-control systems such as [ Talon] ( https://talonvoice.com/ ) .
55
66## Features
77
88On startup, creates a directory in the default tmp directory, called
9- ` vscode-command-server-${userName} ` , where ` ${userName} ` is the username. Then
9+ ` vscode-command-server-${userName} ` , where ` ${userName} ` is the username. Then
1010waits for the ` command-server.runCommand ` command to be issued, which will
1111trigger the command server to read the ` request.json ` file in the communication
1212directory, execute the command requested there, and write the response to
13- ` response.json ` . Note that we write the JSON response on a single line, with a
13+ ` response.json ` . Note that we write the JSON response on a single line, with a
1414trailing newline, so that the client can repeatedly try to read the file until
1515it finds a final newline to indicate that the write is complete.
1616
1717Note that the command server will refuse to execute a command if the request file is older than 3 seconds.
1818
1919Requests look as follows:
20+
2021``` json
2122{
2223 "commandId" : " some-command-id" ,
23- "args" : [
24- " some-argument"
25- ]
24+ "args" : [" some-argument" ]
2625}
2726```
2827
@@ -43,70 +42,83 @@ Have a look at
4342[ talon-vscode-command-client] ( https://github.com/pokey/talon-vscode-command-client ) .
4443
4544## Commands
45+
4646Contributes the following commands:
47+
4748- ` command-server.runCommand ` : Reads from the requests.json file and executes the given command.
4849
4950## Keyboard shortcuts
50- | Key | Command |
51- | ---------------------------------------------------------------- | -------------------------------- |
52- | <kbd >Ctrl</kbd >/<kbd >Cmd</kbd > + <kbd >Shift</kbd > + <kbd >Alt</kbd > + <kbd >P</kbd > | Run command |
51+
52+ | Key | Command |
53+ | ------------------------------------------------------------------ | ----------- |
54+ | <kbd >Ctrl</kbd >/<kbd >Cmd</kbd > + <kbd >Shift</kbd > + <kbd >F17</kbd > | Run command |
5355
5456## Configuration
57+
5558Contributes the following settings:
5659
5760### ` command-server.allowList `
61+
5862Allows user to specify the allowed commands using glob syntax, eg:
5963
6064``` json
6165{
62- "command-server.allowList" : [" workbench.*" ]
66+ "command-server.allowList" : [" workbench.*" ]
6367}
6468```
6569
6670Defaults to ` ["*"] ` (allows everything).
6771
6872### ` command-server.denyList `
73+
6974Allows user to specify the denied commands using glob syntax, eg:
7075
7176``` json
7277{
73- "command-server.denyList" : [" workbench.*" ]
78+ "command-server.denyList" : [" workbench.*" ]
7479}
7580```
7681
7782Defaults to ` [] ` (doesn't deny anything).
7883
7984## Troubleshooting
8085
81-
8286## Known issues
8387
84- - The server won't respond until the extension is loaded. This may be obvious,
88+ - The server won't respond until the extension is loaded. This may be obvious,
8589 but just be aware that if you have other extensions that take a while to
8690 load, the server might not respond for a little while after you load an
8791 editor window until everything is fully loaded.
88- - There is a very unlikely race condition. If the front VSCode is hung
92+ - There is a very unlikely race condition. If the front VSCode is hung
8993 when you issue a command, and then you switch to another VSCode, and issue a
9094 command, then if the first instance wakes up at the exact right moment it
91- could execute the command. There is code in the command server that tries to
95+ could execute the command. There is code in the command server that tries to
9296 prevent a background window from inadvertently executing a command, but
9397 VSCode seems to be a bit inconsistent with determining which window has
94- focus. When this focused window detection fails, it will end up [ preventing
95- correct commands from running] ( https://github.com/knausj85/knausj_talon/issues/466 ) . Thus, this protection has been disabled by
96- default, as the scenario it protects against has never been observed in practice. If you do have issues with background windows trying to execute
98+ focus. When this focused window detection fails, it will end up [ preventing
99+ correct commands from running] ( https://github.com/knausj85/knausj_talon/issues/466 ) . Thus, this protection has been disabled by
100+ default, as the scenario it protects against has never been observed in practice. If you do have issues with background windows trying to execute
97101 commands, please file an issue, and we can look into another way to prevent
98102 this from occurring.
99103
100104## Release Notes
101105
106+ ### 0.7.0
107+
108+ - Switch default keybinding
109+
102110### 0.6.0
111+
103112- Add partial support for untrusted workspaces
104113
105114### 0.5.1
115+
106116- Disable background window protection by default.
107117
108118### 0.5.0
119+
109120- Improve robustness, and add ` command-server.backgroundWindowProtection ` setting
110121
111122### 0.4.0
112- - Switch to file-based RPC
123+
124+ - Switch to file-based RPC
0 commit comments