Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

中文

SiYuan theme sample

Get started

  • Make a copy of this repo as a template with the Use this template button, please note that the repo name must be the same as the theme name, the default branch must be main
  • Clone your repo to a local development folder. For convenience, you can place this folder in your {workspace}/conf/appearance/themes/ folder

Development

  • theme.json
  • icon.png (optional default icon, 160*160)
  • preview.png (optional default preview, 1024*768)
  • README*.md
  • theme.css

Note: The previously optional theme.js file is deprecated; new themes should not include it. See siyuan-note/bazaar#1821.

theme.json

{
"name": "theme-sample",
"author": "Vanessa",
"url": "https://github.com/siyuan-note/theme-sample",
"version": "0.0.5",
"minAppVersion": "3.7.0",
"displayName": {
"default": "Theme Sample",
"zh-CN": "主题示例"
},
"description": {
"default": "This is a theme sample",
"zh-CN": "这是一个主题示例"
},
"readme": {
"default": "README.md",
"zh-CN": "README.zh-CN.md"
},
"icon": "icon.png",
"preview": "preview.png",
"funding": {
"openCollective": "",
"patreon": "",
"github": "",
"custom": [
"https://ld246.com/sponsor"
]
},
"modes": [
"light"
],
"frontends": [
"all"
],
"keywords": [
"sample", "示例"
]
}
  • name: Theme name, must be the same as the repo name, and must be unique globally (no duplicate theme names in the marketplace)
  • author: Theme author name
  • url: Theme repo URL
  • version: Theme version number, it is recommended to follow the semver specification
  • minAppVersion: Minimum version number of SiYuan required to use this theme
  • displayName: Widget display name, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags (e.g. zh-CN, zh-TW, en, ja, pt-BR)
  • description: Theme description, mainly used for display in the marketplace list, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
  • readme: readme file name, mainly used to display in the marketplace details page, supports multiple languages
    • default: Default language, must exist
    • zh-CN, en and other languages: optional, must be BCP 47 tags
    • Relative images are loaded from package.zip when present; otherwise the online marketplace falls back to the matching GitHub Release. Include them in package.zip for offline use
  • icon: Optional marketplace icon filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 64 KiB; the recommended size is 160*160
  • preview: Optional marketplace preview filename at the package root. Supports PNG, JPEG, WebP, and AVIF up to 512 KiB; the recommended size is 1024*768
    • SVG is unsupported. To omit an image, remove its field and the legacy icon.png or preview.png; an empty field value is invalid
  • funding: Theme sponsorship information
    • openCollective: Open Collective name
    • patreon: Patreon name
    • github: GitHub login name
    • custom: Custom sponsorship link list
    • links: Labeled custom sponsorship links, for example {"label": "Sponsor", "url": "https://example.com"}
  • modes: Theme mode list, currently only supports light and dark
  • frontends: Supported frontend environments. Optional values are desktop, desktop-window, mobile, browser-desktop, browser-mobile, and all
    • desktop: Desktop application
    • desktop-window: A standalone desktop window converted from a tab
    • mobile: Mobile application
    • browser-desktop: Desktop browser using the network serving mode
    • browser-mobile: Mobile browser using the network serving mode
    • all: All frontend environments
    • Matching is exact. Include browser-desktop explicitly if the theme supports the desktop browser
    • A missing or empty field, or ["all"], means all frontend environments are supported. Do not mix all with other values
    • If the theme excludes any frontend, set minAppVersion to the first SiYuan version that supports theme frontend compatibility because older clients ignore this field
  • keywords: Search keyword list, used for marketplace search function

Package

No matter which method is used to compile and package, we finally need to generate a package.zip, which contains at least the following files:

  • Image files declared by icon and preview (optional)
  • README*.md
  • theme.css
  • theme.json

List on the marketplace

If it is the first release, please create a pull request to the Community Bazaar repository and modify the themes.json file in it. This file is the index of all community theme repositories, the format is:

{
"repos": [
"username/reponame"
]
}

After the PR is merged, the bazaar will automatically update the index and deploy through GitHub Actions. When releasing a new version of the theme in the future, you only need to follow the above steps to create a new release, and you don't need to PR the community bazaar repo.

Under normal circumstances, the community bazaar repo will automatically update the index and deploy every hour, and you can check the deployment status at https://github.com/siyuan-note/bazaar/actions.

About

SiYuan theme sample

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages