bundleid cn.alanhe.whistle category Self-Dev connections 30D803D0-E21E-46BC-A8DA-347C1CC19AEB destinationuid 795632DF-8E0D-46A1-8D7A-04E7327568F2 modifiers 0 modifiersubtext vitoclose 3663A43F-E7D9-407D-950D-9DB3D22228B4 destinationuid A861B62C-7E54-491E-8FC6-FCCD1DAA2422 modifiers 0 modifiersubtext vitoclose 36C4E69C-D047-4166-AAF9-4E2FAD70D0EC destinationuid FDB82DA2-C61F-4C9D-AD52-D69759532762 modifiers 0 modifiersubtext vitoclose 423180BB-76D0-424B-A500-A7CB720B9B5A destinationuid A861B62C-7E54-491E-8FC6-FCCD1DAA2422 modifiers 0 modifiersubtext vitoclose 518D397F-C8CE-4C0E-B2CA-8F1BA5703803 destinationuid CBEF2157-E76A-4FB4-BA8D-8BB5AFA58CCA modifiers 0 modifiersubtext vitoclose 7B24A41C-933C-4C90-A34B-D03DCE0DA75E destinationuid 3663A43F-E7D9-407D-950D-9DB3D22228B4 modifiers 0 modifiersubtext vitoclose destinationuid 30D803D0-E21E-46BC-A8DA-347C1CC19AEB modifiers 0 modifiersubtext vitoclose 87454A99-5384-4D62-B3A3-E85E9BA6FA52 destinationuid A2068757-3F96-4B84-9A3F-1EFD8B578C4F modifiers 0 modifiersubtext vitoclose 8F3F47C9-3B17-4001-AB15-68C6CE16EFEA destinationuid C25F40C1-2C15-4BCF-8F80-3C2BBC70CA9A modifiers 0 modifiersubtext vitoclose 8FC0401E-81D5-413F-9A5D-C86BDB8BE9C3 destinationuid 8F3F47C9-3B17-4001-AB15-68C6CE16EFEA modifiers 0 modifiersubtext sourceoutputuid 17A4B683-706C-4042-AFB7-2ADCEB5AC069 vitoclose destinationuid 7B24A41C-933C-4C90-A34B-D03DCE0DA75E modifiers 0 modifiersubtext sourceoutputuid 62CA5AD5-40A3-418C-B546-753F1EDD9907 vitoclose destinationuid 1BB4A7EB-46B6-4F8F-ABC8-1242CB1D010C modifiers 0 modifiersubtext sourceoutputuid A2A52332-1F77-42BF-B0EE-4360F5F1E691 vitoclose destinationuid 91D22021-41E7-4769-BA48-8F025DF64404 modifiers 0 modifiersubtext sourceoutputuid C85549CB-DFCC-4A79-A08F-12D47D4C0F1C vitoclose destinationuid A06CD71A-6778-48AB-A9FB-AE6515F7552E modifiers 0 modifiersubtext vitoclose destinationuid 518D397F-C8CE-4C0E-B2CA-8F1BA5703803 modifiers 0 modifiersubtext sourceoutputuid E771362D-58D5-45B7-AE1B-A3B6126F24B7 vitoclose destinationuid 518D397F-C8CE-4C0E-B2CA-8F1BA5703803 modifiers 0 modifiersubtext sourceoutputuid 81B42B49-8335-463D-B005-3E33F4D075A9 vitoclose BD42B648-2B65-477E-929E-CC00905A458A destinationuid 8FC0401E-81D5-413F-9A5D-C86BDB8BE9C3 modifiers 0 modifiersubtext vitoclose destinationuid 36C4E69C-D047-4166-AAF9-4E2FAD70D0EC modifiers 524288 modifiersubtext View on dashboard vitoclose destinationuid 87454A99-5384-4D62-B3A3-E85E9BA6FA52 modifiers 1048576 modifiersubtext View Rule vitoclose C25F40C1-2C15-4BCF-8F80-3C2BBC70CA9A destinationuid C77FA813-2DA6-4948-869A-B9C4E57C0295 modifiers 0 modifiersubtext sourceoutputuid 17A4B683-706C-4042-AFB7-2ADCEB5AC069 vitoclose destinationuid 423180BB-76D0-424B-A500-A7CB720B9B5A modifiers 0 modifiersubtext vitoclose E2BDBB31-7558-4AC8-8099-698959B5E2F4 destinationuid BD42B648-2B65-477E-929E-CC00905A458A modifiers 0 modifiersubtext vitoclose createdby Alan He description select rules disabled name Whistle objects config alfredfiltersresults alfredfiltersresultsmatchmode 0 argumenttreatemptyqueryasnil argumenttrimmode 0 argumenttype 2 escaping 102 queuedelaycustom 3 queuedelayimmediatelyinitially queuedelaymode 0 queuemode 1 runningsubtext script node ./settings $URL scriptargtype 1 scriptfile subtext title type 0 withspace type alfred.workflow.input.scriptfilter uid 8F3F47C9-3B17-4001-AB15-68C6CE16EFEA version 3 config escaping 0 script npm i whistle@latest -g type alfred.workflow.action.terminalcommand uid C77FA813-2DA6-4948-869A-B9C4E57C0295 version 1 config availableviaurlhandler triggerid w2 type alfred.workflow.trigger.external uid E2BDBB31-7558-4AC8-8099-698959B5E2F4 version 1 config conditions inputstring matchcasesensitive matchmode 0 matchstring installNewVersion outputlabel uid 17A4B683-706C-4042-AFB7-2ADCEB5AC069 elselabel else hideelse type alfred.workflow.utility.conditional uid C25F40C1-2C15-4BCF-8F80-3C2BBC70CA9A version 1 config conditions inputstring matchcasesensitive matchmode 0 matchstring _settings outputlabel uid 17A4B683-706C-4042-AFB7-2ADCEB5AC069 inputstring {var:path} matchcasesensitive matchmode 0 matchstring rules outputlabel uid 62CA5AD5-40A3-418C-B546-753F1EDD9907 inputstring matchcasesensitive matchmode 0 matchstring service_unavailable outputlabel uid E771362D-58D5-45B7-AE1B-A3B6126F24B7 inputstring matchcasesensitive matchmode 0 matchstring _stop outputlabel uid C85549CB-DFCC-4A79-A08F-12D47D4C0F1C inputstring matchcasesensitive matchmode 0 matchstring _global_proxy outputlabel uid A2A52332-1F77-42BF-B0EE-4360F5F1E691 inputstring matchcasesensitive matchmode 0 matchstring _restart outputlabel uid 81B42B49-8335-463D-B005-3E33F4D075A9 elselabel else hideelse type alfred.workflow.utility.conditional uid 8FC0401E-81D5-413F-9A5D-C86BDB8BE9C3 version 1 config lastpathcomponent onlyshowifquerypopulated removeextension text {var:notification} title {query} type alfred.workflow.output.notification uid A861B62C-7E54-491E-8FC6-FCCD1DAA2422 version 1 config concurrently escaping 127 script node ./do-settings.js $URL '{query}' scriptargtype 0 scriptfile type 0 type alfred.workflow.action.script uid 423180BB-76D0-424B-A500-A7CB720B9B5A version 2 config concurrently escaping 0 script node ./select-rules.js $URL '{query}' scriptargtype 0 scriptfile type 0 type alfred.workflow.action.script uid 7B24A41C-933C-4C90-A34B-D03DCE0DA75E version 2 config concurrently escaping 102 script npx @stacker/whistle.globalproxy set --port $port --host $host scriptargtype 0 scriptfile type 0 type alfred.workflow.action.script uid 1BB4A7EB-46B6-4F8F-ABC8-1242CB1D010C version 2 config alfredfiltersresults alfredfiltersresultsmatchmode 0 argumenttreatemptyqueryasnil argumenttrimmode 0 argumenttype 1 escaping 0 keyword w2 queuedelaycustom 1 queuedelayimmediatelyinitially queuedelaymode 0 queuemode 1 runningsubtext Loading script [[ -d "${alfred_workflow_cache}" ]] || mkdir -p "${alfred_workflow_cache}" node ./index.js $URL "${alfred_workflow_cache}" "{query}" scriptargtype 0 scriptfile test.sh subtext Select rules title Whistle type 0 withspace type alfred.workflow.input.scriptfilter uid BD42B648-2B65-477E-929E-CC00905A458A version 3 config concurrently escaping 102 script w2 stop scriptargtype 0 scriptfile type 0 type alfred.workflow.action.script uid 91D22021-41E7-4769-BA48-8F025DF64404 version 2 config type 3 type alfred.workflow.utility.transform uid 3663A43F-E7D9-407D-950D-9DB3D22228B4 version 1 config matchmode 0 matchstring /$ replacestring type alfred.workflow.utility.replace uid 36C4E69C-D047-4166-AAF9-4E2FAD70D0EC version 2 config browser skipqueryencode skipvarencode spaces url {var:URL}#{var:path} type alfred.workflow.action.openurl uid A06CD71A-6778-48AB-A9FB-AE6515F7552E version 1 config concurrently escaping 102 script if [ "{query}" == "service_unavailable" ]; then if [ -n "$SOCKS_PORT" ]; then w2 start --socksPort=$SOCKS_PORT else w2 start fi else if [ -n "$SOCKS_PORT" ]; then w2 restart --socksPort=$SOCKS_PORT else w2 restart fi fi scriptargtype 0 scriptfile type 0 type alfred.workflow.action.script uid 518D397F-C8CE-4C0E-B2CA-8F1BA5703803 version 2 config externaltriggerid w2 passinputasargument passvariables workflowbundleid self type alfred.workflow.output.callexternaltrigger uid CBEF2157-E76A-4FB4-BA8D-8BB5AFA58CCA version 1 config argument {var:keyword} passthroughargument variables type alfred.workflow.utility.argument uid 30D803D0-E21E-46BC-A8DA-347C1CC19AEB version 1 config browser skipqueryencode skipvarencode spaces url {var:URL}#{var:path}?ruleName={var:ruleName} type alfred.workflow.action.openurl uid FDB82DA2-C61F-4C9D-AD52-D69759532762 version 1 config argument {var:ruleContent} passthroughargument variables type alfred.workflow.utility.argument uid 87454A99-5384-4D62-B3A3-E85E9BA6FA52 version 1 config externaltriggerid w2 passinputasargument passvariables workflowbundleid self type alfred.workflow.output.callexternaltrigger uid 795632DF-8E0D-46A1-8D7A-04E7327568F2 version 1 config behaviour 0 fontmode 0 fontsizing 0 footertext Whistle Rule inputfile view-rule inputtype 1 loadingtext outputmode 0 scriptinput 0 spellchecking 0 stackview type alfred.workflow.userinterface.text uid A2068757-3F96-4B84-9A3F-1EFD8B578C4F version 1 readme > Quick Switching and Selecting Proxy Rules ## Requirement 1. brew install whistle ## Usage Type `w2` to trigger. - `⌥ ⏎`Access the WEB management page. - `⏎` Toggle the rule selection status. - `⌘ ⏎` Preview the rule. - `⌘ C` Copy the specific configuration of the current rule. - Enter keywords to filter dropdown options, supports Chinese Pinyin search. - Partial settings [Multiple rule selection [x], Version update check]. - Enter the keyword `selected` to filter rules that match. ## Config If you need SOCKS proxy, configure SOCKS_PORT. uidata 1BB4A7EB-46B6-4F8F-ABC8-1242CB1D010C note set whistle as global proxy xpos 715 ypos 330 30D803D0-E21E-46BC-A8DA-347C1CC19AEB xpos 630 ypos 630 3663A43F-E7D9-407D-950D-9DB3D22228B4 xpos 765 ypos 520 36C4E69C-D047-4166-AAF9-4E2FAD70D0EC xpos 290 ypos 540 423180BB-76D0-424B-A500-A7CB720B9B5A note select rules xpos 715 ypos 170 518D397F-C8CE-4C0E-B2CA-8F1BA5703803 note w2 start xpos 885 ypos 550 795632DF-8E0D-46A1-8D7A-04E7327568F2 xpos 715 ypos 845 7B24A41C-933C-4C90-A34B-D03DCE0DA75E note select rules xpos 420 ypos 180 87454A99-5384-4D62-B3A3-E85E9BA6FA52 xpos 195 ypos 735 8F3F47C9-3B17-4001-AB15-68C6CE16EFEA note settings xpos 410 ypos 15 8FC0401E-81D5-413F-9A5D-C86BDB8BE9C3 xpos 220 ypos 110 91D22021-41E7-4769-BA48-8F025DF64404 note stop whistle xpos 380 ypos 405 A06CD71A-6778-48AB-A9FB-AE6515F7552E note open url xpos 420 ypos 545 A2068757-3F96-4B84-9A3F-1EFD8B578C4F xpos 400 ypos 890 A861B62C-7E54-491E-8FC6-FCCD1DAA2422 xpos 900 ypos 115 BD42B648-2B65-477E-929E-CC00905A458A note list rules xpos 30 ypos 340 C25F40C1-2C15-4BCF-8F80-3C2BBC70CA9A xpos 580 ypos 35 C77FA813-2DA6-4948-869A-B9C4E57C0295 xpos 705 ypos 15 CBEF2157-E76A-4FB4-BA8D-8BB5AFA58CCA xpos 1190 ypos 560 E2BDBB31-7558-4AC8-8099-698959B5E2F4 xpos 35 ypos 30 FDB82DA2-C61F-4C9D-AD52-D69759532762 note open rules url xpos 415 ypos 705 userconfigurationconfig config default http://127.0.0.1:8899 placeholder required trim description label URL type textfield variable URL config default placeholder required trim description eg: 8900 label Socks Port type textfield variable SOCKS_PORT variablesdontexport version 2.15 webaddress https://github.com/alanhg/alfred-workflows/tree/master/whistle