ticktick.7z 链接: https://pan.baidu.com/s/14zjOhYPq2wysStb7GpGKZQ?pwd=ghgh 提取码: ghgh
这是滴答清单的国际版耶,Wine对这类接口的适配欠佳,有(建议用)适配deepin/UOS的版本
下载地址:https://download.ticktick.app/download/linux/linux_deb_x64/ticktick-8.0.0-amd64.deb
UOS报错的话把启动日志发上来,叫大家看看
这是滴答清单的国际版耶,Wine对这类接口的适配欠佳,有(建议用)适配deepin/UOS的版本
下载地址:https://download.ticktick.app/download/linux/linux_deb_x64/ticktick-8.0.0-amd64.deb
UOS报错的话把启动日志发上来,叫大家看看
这里给出了方案,看不懂,不会操作。
Here's my patch. I used prettier 3.6.2 and ticktick 6.0.40-1.
diff --git a/untouched/bundler/index.js b/touched/bundler/index.js
index 193d018..aa6b4b6 100644
--- a/untouched/bundler/index.js
+++ b/touched/bundler/index.js
@@ -165,6 +165,7 @@ parcelRequire = (function (e, r, t, n) {
proEndDate: o = "",
userId: d = "",
} = t;
+ // for debugging console.log this return output
return {
inboxId: e,
username: s,
@@ -2496,6 +2497,11 @@ parcelRequire = (function (e, r, t, n) {
const n = await r.request.get(
`${r.config.protocol}${r.config.api_domain}/api/v2/user/status`,
);
+ n.data.proEndDate = "2030-01-01T00:00:00.000+0000";
+ n.data.needSubscribe = false;
+ n.data.freeTrial = true;
+ n.data.pro = true;
+ // for debugging console.log(n)
(200 === n.status
? r.storage.setGlobalUser(o(n.data))
: (r.storage.removeToken(), r.util.clearSessionCookies()),
@@ -2520,6 +2526,7 @@ parcelRequire = (function (e, r, t, n) {
proEndDate: u,
userId: g,
} = e;
+ // for debugging console.log this return output
return {
user: {
isDS: !!a,
@@ -2802,6 +2809,11 @@ parcelRequire = (function (e, r, t, n) {
const i = await this.request.get(
`${this.config.protocol}${this.config.api_domain}/api/v2/user/status`,
);
+ i.data.proEndDate = "2030-01-01T00:00:00.000+0000";
+ i.data.needSubscribe = false;
+ i.freeTrial = true;
+ i.data.pro = true;
+ // for debugging console.log(i)
200 === i.status && this.storage.setGlobalUser(l(i.data));
}
} else {
diff --git a/untouched/public/react/static/vendor.faccb2074da35bf64f32.js b/touched/public/react/static/vendor.faccb2074da35bf64f32.js
index f29038b..3921941 100644
--- a/untouched/public/react/static/vendor.faccb2074da35bf64f32.js
+++ b/touched/public/react/static/vendor.faccb2074da35bf64f32.js
@@ -303892,6 +303892,14 @@
noGraceDate: U,
}),
t = arguments.length > 1 ? arguments[1] : void 0;
+ if (t.data) {
+ if (t.data.proEndDate) {
+ t.data.proEndDate = e.get("proEndDate");
+ t.data.pro = true;
+ t.data.needSubscribe = false;
+ t.data.subscribeType = "trial";
+ }
+ }
switch (t.type) {
case Qh.SET_USERPROFILE:
var n = I$t({}, t.data);
@@ -303926,6 +303934,7 @@
case Qh.SET_PICTURE:
return e.set("picture", t.data);
case Qh.SET_USER_STATUS:
+ // for debugging console.log(t.data)
return e
.set("activeTeamUser", t.data.activeTeamUser)
.set("teamUser", t.data.teamUser)
@@ -634346,6 +634355,7 @@
"use strict";
var a = n("VRtw");
e.exports = function (e, t, n, r, i) {
+ return;
var o = new Error(e);
return a(o, t, n, r, i);
};
这里给出了方案,看不懂,不会操作。
Here's my patch. I used prettier 3.6.2 and ticktick 6.0.40-1.
diff --git a/untouched/bundler/index.js b/touched/bundler/index.js
index 193d018..aa6b4b6 100644
--- a/untouched/bundler/index.js
+++ b/touched/bundler/index.js
@@ -165,6 +165,7 @@ parcelRequire = (function (e, r, t, n) {
proEndDate: o = "",
userId: d = "",
} = t;
+ // for debugging console.log this return output
return {
inboxId: e,
username: s,
@@ -2496,6 +2497,11 @@ parcelRequire = (function (e, r, t, n) {
const n = await r.request.get(
`${r.config.protocol}${r.config.api_domain}/api/v2/user/status`,
);
+ n.data.proEndDate = "2030-01-01T00:00:00.000+0000";
+ n.data.needSubscribe = false;
+ n.data.freeTrial = true;
+ n.data.pro = true;
+ // for debugging console.log(n)
(200 === n.status
? r.storage.setGlobalUser(o(n.data))
: (r.storage.removeToken(), r.util.clearSessionCookies()),
@@ -2520,6 +2526,7 @@ parcelRequire = (function (e, r, t, n) {
proEndDate: u,
userId: g,
} = e;
+ // for debugging console.log this return output
return {
user: {
isDS: !!a,
@@ -2802,6 +2809,11 @@ parcelRequire = (function (e, r, t, n) {
const i = await this.request.get(
`${this.config.protocol}${this.config.api_domain}/api/v2/user/status`,
);
+ i.data.proEndDate = "2030-01-01T00:00:00.000+0000";
+ i.data.needSubscribe = false;
+ i.freeTrial = true;
+ i.data.pro = true;
+ // for debugging console.log(i)
200 === i.status && this.storage.setGlobalUser(l(i.data));
}
} else {
diff --git a/untouched/public/react/static/vendor.faccb2074da35bf64f32.js b/touched/public/react/static/vendor.faccb2074da35bf64f32.js
index f29038b..3921941 100644
--- a/untouched/public/react/static/vendor.faccb2074da35bf64f32.js
+++ b/touched/public/react/static/vendor.faccb2074da35bf64f32.js
@@ -303892,6 +303892,14 @@
noGraceDate: U,
}),
t = arguments.length > 1 ? arguments[1] : void 0;
+ if (t.data) {
+ if (t.data.proEndDate) {
+ t.data.proEndDate = e.get("proEndDate");
+ t.data.pro = true;
+ t.data.needSubscribe = false;
+ t.data.subscribeType = "trial";
+ }
+ }
switch (t.type) {
case Qh.SET_USERPROFILE:
var n = I$t({}, t.data);
@@ -303926,6 +303934,7 @@
case Qh.SET_PICTURE:
return e.set("picture", t.data);
case Qh.SET_USER_STATUS:
+ // for debugging console.log(t.data)
return e
.set("activeTeamUser", t.data.activeTeamUser)
.set("teamUser", t.data.teamUser)
@@ -634346,6 +634355,7 @@
"use strict";
var a = n("VRtw");
e.exports = function (e, t, n, r, i) {
+ return;
var o = new Error(e);
return a(o, t, n, r, i);
};
You can achieve this by modifying the Electron app directly. Here's a quick guide:
Steps (Linux):
-
TickTick is an Electron app, so you can extract its contents using
@electron/asar:
npx asar extract /opt/TickTick/resources/app.asar app -
Locate the relevant files by searching for the
proEndDatestring:
grep -rl "proEndDate" app/
In my case, the files were:- bundler/index.js
- public/react/static/vendor.fa...32.js (exact filename may vary)
-
Modify values like:
- proEndDate
- pro
- needsSubscribe
- subscribeType
Set them to values that simulate an active subscription.
-
Once done, repack the
.asarfile:
npx asar pack app app.asar -
Replace the original:
sudo cp app.asar /opt/TickTick/resources/app.asar
That’s it! Restart the app and your changes should take effect.
我把比较的输出结果,直接复制成一个文本另存为.patch文件,但是补丁打不回去(patch --dry-run -p0 < changed.patch),应该的patch文件有格式要求,不知道怎么操作,反正是不成功。
You can achieve this by modifying the Electron app directly. Here's a quick guide:
Steps (Linux):
-
TickTick is an Electron app, so you can extract its contents using
@electron/asar:
npx asar extract /opt/TickTick/resources/app.asar app -
Locate the relevant files by searching for the
proEndDatestring:
grep -rl "proEndDate" app/
In my case, the files were:- bundler/index.js
- public/react/static/vendor.fa...32.js (exact filename may vary)
-
Modify values like:
- proEndDate
- pro
- needsSubscribe
- subscribeType
Set them to values that simulate an active subscription.
-
Once done, repack the
.asarfile:
npx asar pack app app.asar -
Replace the original:
sudo cp app.asar /opt/TickTick/resources/app.asar
That’s it! Restart the app and your changes should take effect.
不要弄补丁了,装了uos版的tiktik后直接启动就行了
多提一句,用的星火商店里 6.0.40的版本,难道是中文版本滴答清单的原因?
多提一句,用的星火商店里 6.0.40的版本,难道是中文版本滴答清单的原因?
是因为你用的是Windows版的,而不是原生适配UOS版的。
Windows版的在UOS多多少少有些bug,打补丁更是把简单问题复杂化。
真想解决问题的话,把Windows版卸了,装我提供链接的原生适配版
patch搞定了,linux的ticktick。
Popular Ranking
ChangePopular Events
More

中文 
可以登入,输入的时候出错,

Operation System Version-> 6.1.7601.65536 *****
CurrentTime -> 03/24/2026 16:50:19 *****
Locale -> en-US *****
Device Location -> en-US *****
Version -> 8.0.3.0 *****
Exception Type -> System.NotImplementedException *****
Exception Message -> Managed.TextFormatting.FullTextLine.GetDistanceFromCharacterHit *****
Exception Data -> System.Collections.ListDictionaryInternal *****
-> *****
-> PresentationCore *****
-> Double GetDistanceFromCharacterHit(System.Windows.Media.TextFormatting.CharacterHit) *****
-> at Managed.TextFormatting.TextMetrics+FullTextLine.GetDistanceFromCharacterHit (System.Windows.Media.TextFormatting.CharacterHit characterHit) [0x00001] in <949cb2d997024e3dbabcab40142b1fb8>:0
at ICSharpCode.AvalonEdit.Rendering.VisualLine.GetTextLineVisualXPosition (System.Windows.Media.TextFormatting.TextLine textLine, System.Int32 visualColumn) [0x00021] in <4c304432ca114b79a7922c1317990ab4>:0
at ICSharpCode.AvalonEdit.Editing.Caret.CalcCaretRectangle (ICSharpCode.AvalonEdit.Rendering.VisualLine visualLine) [0x00039] in <4c304432ca114b79a7922c1317990ab4>:0
at ICSharpCode.AvalonEdit.Editing.Caret.ShowInternal () [0x00050] in <4c304432ca114b79a7922c1317990ab4>:0
at System.Windows.Threading.ExceptionWrapper.InternalRealCall (System.Delegate callback, System.Object args, System.Int32 numArgs) [0x00067] in <6bd48a2b13d648baaafaa2e4751fad67>:0
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen (System.Object source, System.Delegate callback, System.Object args, System.Int32 numArgs, System.Delegate catchHandler) [0x00004] in <6bd48a2b13d648baaafaa2e4751fad67>:0 *****