Created
May 28, 2025 16:43
-
-
Save brucmao/495e664bd84be7839c33c52cbfbdd948 to your computer and use it in GitHub Desktop.
SyncClipboard 配合tasker 将手机剪贴板自动同步到电脑
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <TaskerData sr="" dvi="1" tv="6.4.15"> | |
| <Profile sr="prof3" ve="2"> | |
| <cdate>1748421533663</cdate> | |
| <edate>1748443921337</edate> | |
| <flags>8</flags> | |
| <id>3</id> | |
| <mid0>2</mid0> | |
| <nme>剪贴板监控</nme> | |
| <Event sr="con0" ve="2"> | |
| <code>2097</code> | |
| <pri>0</pri> | |
| <Bundle sr="arg0"> | |
| <Vals sr="val"> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES><StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%cl_extras | |
| Extras | |
| Optional extra info in JSON format that the clipboard may contains</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%cl_html_text | |
| HTML Text | |
| Current clipboard text if set as HTML text</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2>%cl_image_uri | |
| Image URI | |
| If the URI corresponds to an image, this will have a value</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3>%cl_mimetypes() | |
| Mime Type | |
| The types of data that the clipboard contains</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4>%cl_text | |
| Text | |
| Current clipboard text</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5>%cl_uri | |
| URI | |
| Current clipboard URI (could be image or something else)</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5></StringArray></net.dinglisch.android.tasker.RELEVANT_VARIABLES> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type> | |
| </Vals> | |
| </Bundle> | |
| <Int sr="arg1" val="1"/> | |
| </Event> | |
| </Profile> | |
| <Task sr="task2"> | |
| <cdate>1712501709775</cdate> | |
| <edate>1748449052289</edate> | |
| <id>2</id> | |
| <nme>文本到电脑</nme> | |
| <pri>6</pri> | |
| <Action sr="act0" ve="7"> | |
| <code>123</code> | |
| <Str sr="arg0" ve="3">dumpsys activity recents | grep 'Recent #0' | grep -v 'com.termux' | head -n 1 | sed -n 's/.*:\(com[^}]*\)\(}\)*$/\1/p'</Str> | |
| <Int sr="arg1" val="0"/> | |
| <Int sr="arg2" val="1"/> | |
| <Str sr="arg3" ve="3">%last_app</Str> | |
| <Str sr="arg4" ve="3"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Int sr="arg6" val="1"/> | |
| <Int sr="arg7" val="0"/> | |
| </Action> | |
| <Action sr="act1" ve="7"> | |
| <code>123</code> | |
| <Str sr="arg0" ve="3">am start -n com.termux/com.termux.app.TermuxActivity</Str> | |
| <Int sr="arg1" val="0"/> | |
| <Int sr="arg2" val="1"/> | |
| <Str sr="arg3" ve="3"/> | |
| <Str sr="arg4" ve="3"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Int sr="arg6" val="1"/> | |
| <Int sr="arg7" val="0"/> | |
| </Action> | |
| <Action sr="act10" ve="7"> | |
| <code>548</code> | |
| <Str sr="arg0" ve="3">%stdout-推送成功!</Str> | |
| <Int sr="arg1" val="0"/> | |
| <Str sr="arg10" ve="3"/> | |
| <Int sr="arg11" val="1"/> | |
| <Int sr="arg12" val="0"/> | |
| <Str sr="arg13" ve="3"/> | |
| <Int sr="arg14" val="0"/> | |
| <Str sr="arg15" ve="3"/> | |
| <Int sr="arg2" val="0"/> | |
| <Str sr="arg3" ve="3"/> | |
| <Str sr="arg4" ve="3"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Str sr="arg6" ve="3"/> | |
| <Str sr="arg7" ve="3"/> | |
| <Str sr="arg8" ve="3"/> | |
| <Int sr="arg9" val="1"/> | |
| </Action> | |
| <Action sr="act11" ve="7"> | |
| <code>43</code> | |
| </Action> | |
| <Action sr="act12" ve="7"> | |
| <code>548</code> | |
| <Str sr="arg0" ve="3">%stdout-推送失败!</Str> | |
| <Int sr="arg1" val="0"/> | |
| <Str sr="arg10" ve="3"/> | |
| <Int sr="arg11" val="1"/> | |
| <Int sr="arg12" val="0"/> | |
| <Str sr="arg13" ve="3"/> | |
| <Int sr="arg14" val="0"/> | |
| <Str sr="arg15" ve="3"/> | |
| <Int sr="arg2" val="0"/> | |
| <Str sr="arg3" ve="3"/> | |
| <Str sr="arg4" ve="3"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Str sr="arg6" ve="3"/> | |
| <Str sr="arg7" ve="3"/> | |
| <Str sr="arg8" ve="3"/> | |
| <Int sr="arg9" val="1"/> | |
| </Action> | |
| <Action sr="act13" ve="7"> | |
| <code>38</code> | |
| </Action> | |
| <Action sr="act14" ve="7"> | |
| <code>123</code> | |
| <Str sr="arg0" ve="3">monkey -p %last_app -c android.intent.category.LAUNCHER 1</Str> | |
| <Int sr="arg1" val="0"/> | |
| <Int sr="arg2" val="1"/> | |
| <Str sr="arg3" ve="3"/> | |
| <Str sr="arg4" ve="3"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Int sr="arg6" val="1"/> | |
| <Int sr="arg7" val="0"/> | |
| </Action> | |
| <Action sr="act2" ve="7"> | |
| <code>1256900802</code> | |
| <Bundle sr="arg0"> | |
| <Vals sr="val"> | |
| <com.termux.execute.arguments>termux-clipboard-get</com.termux.execute.arguments> | |
| <com.termux.execute.arguments-type>java.lang.String</com.termux.execute.arguments-type> | |
| <com.termux.tasker.extra.BACKGROUND_CUSTOM_LOG_LEVEL><null></com.termux.tasker.extra.BACKGROUND_CUSTOM_LOG_LEVEL> | |
| <com.termux.tasker.extra.BACKGROUND_CUSTOM_LOG_LEVEL-type>java.lang.String</com.termux.tasker.extra.BACKGROUND_CUSTOM_LOG_LEVEL-type> | |
| <com.termux.tasker.extra.EXECUTABLE>tudo</com.termux.tasker.extra.EXECUTABLE> | |
| <com.termux.tasker.extra.EXECUTABLE-type>java.lang.String</com.termux.tasker.extra.EXECUTABLE-type> | |
| <com.termux.tasker.extra.SESSION_ACTION><null></com.termux.tasker.extra.SESSION_ACTION> | |
| <com.termux.tasker.extra.SESSION_ACTION-type>java.lang.String</com.termux.tasker.extra.SESSION_ACTION-type> | |
| <com.termux.tasker.extra.STDIN></com.termux.tasker.extra.STDIN> | |
| <com.termux.tasker.extra.STDIN-type>java.lang.String</com.termux.tasker.extra.STDIN-type> | |
| <com.termux.tasker.extra.TERMINAL>false</com.termux.tasker.extra.TERMINAL> | |
| <com.termux.tasker.extra.TERMINAL-type>java.lang.Boolean</com.termux.tasker.extra.TERMINAL-type> | |
| <com.termux.tasker.extra.VERSION_CODE>6</com.termux.tasker.extra.VERSION_CODE> | |
| <com.termux.tasker.extra.VERSION_CODE-type>java.lang.Integer</com.termux.tasker.extra.VERSION_CODE-type> | |
| <com.termux.tasker.extra.WAIT_FOR_RESULT>true</com.termux.tasker.extra.WAIT_FOR_RESULT> | |
| <com.termux.tasker.extra.WAIT_FOR_RESULT-type>java.lang.Boolean</com.termux.tasker.extra.WAIT_FOR_RESULT-type> | |
| <com.termux.tasker.extra.WORKDIR><null></com.termux.tasker.extra.WORKDIR> | |
| <com.termux.tasker.extra.WORKDIR-type>java.lang.String</com.termux.tasker.extra.WORKDIR-type> | |
| <com.twofortyfouram.locale.intent.extra.BLURB>tudo termux-clipboard-get | |
| Working Directory ✕ | |
| Stdin ✕ | |
| Custom Log Level null | |
| Terminal Session ✕ | |
| Wait For Result ✓</com.twofortyfouram.locale.intent.extra.BLURB> | |
| <com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES><StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%stdout | |
| Standard Output | |
| The &lt;B&gt;stdout&lt;/B&gt; of the command.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%stdout_original_length | |
| Standard Output Original Length | |
| The original length of &lt;B&gt;stdout&lt;/B&gt;.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2>%stderr | |
| Standard Error | |
| The &lt;B&gt;stderr&lt;/B&gt; of the command.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3>%stderr_original_length | |
| Standard Error Original Length | |
| The original length of &lt;B&gt;stderr&lt;/B&gt;.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4>%result | |
| Exit Code | |
| The &lt;B&gt;exit code&lt;/B&gt; of the command.0 often means success and anything else is usually a failure of some sort.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4></StringArray></net.dinglisch.android.tasker.RELEVANT_VARIABLES> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type> | |
| <net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>com.termux.tasker.extra.EXECUTABLE com.termux.execute.arguments com.termux.tasker.extra.WORKDIR com.termux.tasker.extra.STDIN com.termux.tasker.extra.SESSION_ACTION com.termux.tasker.extra.BACKGROUND_CUSTOM_LOG_LEVEL</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS> | |
| <net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type> | |
| <net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled> | |
| <net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type> | |
| </Vals> | |
| </Bundle> | |
| <Str sr="arg1" ve="3">com.termux.tasker</Str> | |
| <Str sr="arg2" ve="3">com.termux.tasker.EditConfigurationActivity</Str> | |
| <Int sr="arg3" val="10"/> | |
| <Int sr="arg4" val="1"/> | |
| </Action> | |
| <Action sr="act3" ve="7"> | |
| <code>547</code> | |
| <Str sr="arg0" ve="3">%cliptext</Str> | |
| <Str sr="arg1" ve="3">%stdout</Str> | |
| <Int sr="arg2" val="0"/> | |
| <Int sr="arg3" val="0"/> | |
| <Int sr="arg4" val="0"/> | |
| <Int sr="arg5" val="3"/> | |
| <Int sr="arg6" val="1"/> | |
| </Action> | |
| <Action sr="act4" ve="7"> | |
| <code>598</code> | |
| <Str sr="arg0" ve="3">%cliptext</Str> | |
| <Str sr="arg1" ve="3">\\</Str> | |
| <Int sr="arg2" val="0"/> | |
| <Int sr="arg3" val="0"/> | |
| <Int sr="arg4" val="0"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Int sr="arg6" val="1"/> | |
| <Str sr="arg7" ve="3">\\\\</Str> | |
| </Action> | |
| <Action sr="act5" ve="7"> | |
| <code>598</code> | |
| <Str sr="arg0" ve="3">%cliptext</Str> | |
| <Str sr="arg1" ve="3">"</Str> | |
| <Int sr="arg2" val="0"/> | |
| <Int sr="arg3" val="0"/> | |
| <Int sr="arg4" val="0"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Int sr="arg6" val="1"/> | |
| <Str sr="arg7" ve="3">\\"</Str> | |
| </Action> | |
| <Action sr="act6" ve="7"> | |
| <code>598</code> | |
| <Str sr="arg0" ve="3">%cliptext</Str> | |
| <Str sr="arg1" ve="3">\r|\n</Str> | |
| <Int sr="arg2" val="0"/> | |
| <Int sr="arg3" val="0"/> | |
| <Int sr="arg4" val="0"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Int sr="arg6" val="1"/> | |
| <Str sr="arg7" ve="3">\\n</Str> | |
| </Action> | |
| <Action sr="act7" ve="7"> | |
| <code>351</code> | |
| <Bundle sr="arg0"> | |
| <Vals sr="val"> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES><StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%http_auth_headers | |
| Headers | |
| Use this in the HTTP Request action in the 'Headers' field to authenticate the request</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0></StringArray></net.dinglisch.android.tasker.RELEVANT_VARIABLES> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type> | |
| </Vals> | |
| </Bundle> | |
| <Int sr="arg1" val="1"/> | |
| <Str sr="arg10" ve="3">密码</Str> | |
| <Str sr="arg2" ve="3"/> | |
| <Str sr="arg3" ve="3"/> | |
| <Str sr="arg4" ve="3"/> | |
| <Str sr="arg5" ve="3"/> | |
| <Str sr="arg6" ve="3"/> | |
| <Int sr="arg7" val="0"/> | |
| <Int sr="arg8" val="30"/> | |
| <Str sr="arg9" ve="3">用户名</Str> | |
| </Action> | |
| <Action sr="act8" ve="7"> | |
| <code>339</code> | |
| <se>false</se> | |
| <Bundle sr="arg0"> | |
| <Vals sr="val"> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES><StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%http_cookies | |
| Cookies | |
| The cookies the server sent in the response in the Cookie:COOKIE_VALUE format. You can use this directly in the 'Headers' field of the HTTP Request action</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%http_data | |
| Data | |
| Data that the server responded from the HTTP request.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2>%http_file_output | |
| File Output | |
| Will always contain the file's full path even if you specified a directory as the File to save.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3>%http_response_code | |
| Response Code | |
| The HTTP Code the server responded</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4>%http_headers() | |
| Response Headers | |
| The HTTP Headers the server sent in the response. Each header is in the 'key:value' format</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5>%http_response_length | |
| Response Length | |
| The size of the response in bytes</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5></StringArray></net.dinglisch.android.tasker.RELEVANT_VARIABLES> | |
| <net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type> | |
| </Vals> | |
| </Bundle> | |
| <Int sr="arg1" val="3"/> | |
| <Int sr="arg10" val="0"/> | |
| <Int sr="arg11" val="0"/> | |
| <Int sr="arg12" val="1"/> | |
| <Str sr="arg2" ve="3">https://域名或者ip:端口/SyncClipboard.json</Str> | |
| <Str sr="arg3" ve="3">%http_auth_headers</Str> | |
| <Str sr="arg4" ve="3"/> | |
| <Str sr="arg5" ve="3">{"File":"","Clipboard":"%cliptext","Type":"Text"}</Str> | |
| <Str sr="arg6" ve="3"/> | |
| <Str sr="arg7" ve="3"/> | |
| <Int sr="arg8" val="5"/> | |
| <Int sr="arg9" val="0"/> | |
| </Action> | |
| <Action sr="act9" ve="7"> | |
| <code>37</code> | |
| <coll>false</coll> | |
| <ConditionList sr="if"> | |
| <Condition sr="c0" ve="3"> | |
| <lhs>%http_response_code</lhs> | |
| <op>0</op> | |
| <rhs>200</rhs> | |
| </Condition> | |
| </ConditionList> | |
| </Action> | |
| <Img sr="icn" ve="2"> | |
| <nme>mw_action_backup</nme> | |
| </Img> | |
| </Task> | |
| </TaskerData> |
Author
Author
- 赋予termux和tasker必要的一些权限,可能有些权限本在应用用不到:
在termux su 下执行下面内容,SukuSu Ultra 需要关闭SeLinux 才能执行成功
pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS
pm grant net.dinglisch.android.taskerm android.permission.DUMP
pm grant net.dinglisch.android.taskerm android.permission.READ_LOGS
pm grant net.dinglisch.android.taskerm android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER
pm grant net.dinglisch.android.taskerm android.permission.SET_MEDIA_KEY_LISTENER
appops set net.dinglisch.android.taskerm PROJECT_MEDIA allow
pm grant net.dinglisch.android.taskerm com.termux.permission.RUN_COMMAND
- tasker可能需要开启无障碍,才能后台监控剪贴板变化
- tudo 需要先安装 pkg install tudo,然后创建软链接
mkdir -p ~/.termux/tasker
ln -s /data/data/com.termux/files/usr/bin/tudo ~/.termux/tasker/tudo
chmod +x ~/.termux/tasker/tudo
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
SyncClipboard 自行搭建。
TermuxTermux:APITermux:Tasker自行从F-Droid 安装手机需要root, 需要安装xpose-clipboard-whitelist 让tasker后台监控剪贴板变化
安装后,勾选系统框架,并重启
添加tasker 名单