First commit

This commit is contained in:
2026-07-29 23:52:21 -04:00
commit 361bde2621
3483 changed files with 23441 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
{
"font_folder": ".obsidian/fonts/",
"font": "JetBrainsMonoNL-Regular.ttf",
"force_mode": false,
"custom_css_mode": false,
"custom_css": "/* Example CSS for your font: jetbrainsmononl-regular */\n\n/* Apply to all text */\n:root * {\n\t--font-default: 'jetbrainsmononl-regular';\n\t--default-font: 'jetbrainsmononl-regular';\n\t--font-family-editor: 'jetbrainsmononl-regular';\n\t--font-interface-override: 'jetbrainsmononl-regular';\n\t--font-text-override: 'jetbrainsmononl-regular';\n}\n\n/* Example: Apply to custom CSS class */\n.custom-font * {\n\tfont-family: 'jetbrainsmononl-regular' !important;\n}\n\n/* Example: Apply to specific elements only */\n.custom-font h1, .custom-font h2, .custom-font h3 {\n\tfont-family: 'jetbrainsmononl-regular' !important;\n}"
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,389 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// main.ts
var main_exports = {};
__export(main_exports, {
default: () => FontPlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian = require("obsidian");
var DEFAULT_SETTINGS = {
font_folder: "",
font: "None",
force_mode: false,
custom_css_mode: false,
custom_css: ""
};
function get_default_css(font_family_name, css_class = ":root *") {
return `${css_class} {
--font-default: '${font_family_name}';
--default-font: '${font_family_name}';
--font-family-editor: '${font_family_name}';
--font-monospace-default: '${font_family_name}';
--font-interface-override: '${font_family_name}';
--font-text-override: '${font_family_name}';
--font-monospace-override: '${font_family_name}';
}
`;
}
function get_custom_css(font_family_name, css_class = ":root *") {
return `${css_class} * {
font-family: '${font_family_name}' !important;
}`;
}
function arrayBufferToBase64(buffer) {
let binary = "";
const bytes = new Uint8Array(buffer);
for (let i = 0; i < bytes.byteLength; i++) {
binary += String.fromCharCode(bytes[i]);
}
return btoa(binary);
}
function applyCss(css, css_id, appendMode = false) {
const existingStyle = document.getElementById(css_id);
if (existingStyle && appendMode) {
existingStyle.innerHTML += css;
} else {
const style = document.createElement("style");
style.innerHTML = css;
document.head.appendChild(style);
if (existingStyle) {
existingStyle.remove();
}
style.id = css_id;
}
}
var FontPlugin = class extends import_obsidian.Plugin {
constructor() {
super(...arguments);
this.config_dir = this.app.vault.configDir;
this.plugin_folder_path = `${this.config_dir}/plugins/custom-font-loader`;
this.processingNoticeShown = false;
}
async load_plugin() {
await this.loadSettings();
try {
const font_file_name = this.settings.font;
if (font_file_name && font_file_name.toLowerCase() != "none") {
if (font_file_name != "all") {
await this.process_and_load_font(font_file_name, false);
} else {
applyCss("", "custom_font_base64");
const files = await this.app.vault.adapter.list(
this.settings.font_folder
);
for (const file of files.files) {
const file_name = file.replace(
this.settings.font_folder,
""
);
await this.process_and_load_font(file_name, true);
}
}
} else {
applyCss("", "custom_font_base64");
applyCss("", "custom_font_general");
}
} catch (error) {
console.error("Error loading fonts:", error);
new import_obsidian.Notice(`Error loading fonts: ${error.message || error}`);
}
}
async process_and_load_font(font_file_name, load_all_fonts) {
try {
console.log("loading %s", font_file_name);
const css_font_path = `${this.plugin_folder_path}/${font_file_name.toLowerCase().replace(".", "_")}.css`;
if (!await this.app.vault.adapter.exists(css_font_path)) {
await this.convert_font_to_css(font_file_name, css_font_path);
await this.load_font(css_font_path, load_all_fonts);
await this.load_css(font_file_name);
} else {
await this.load_font(css_font_path, load_all_fonts);
await this.load_css(font_file_name);
}
} catch (error) {
console.error(`Error processing font ${font_file_name}:`, error);
new import_obsidian.Notice(`Failed to process font: ${font_file_name}`);
}
}
async load_font(css_font_path, appendMode) {
const content = await this.app.vault.adapter.read(css_font_path);
applyCss(content, "custom_font_base64", appendMode);
}
async load_css(font_file_name) {
let css_string = "";
const font_family_name = font_file_name.split(".")[0].toLowerCase();
if (this.settings.custom_css_mode) {
css_string = this.settings.custom_css;
} else {
css_string = get_default_css(font_family_name);
}
if (this.settings.force_mode)
css_string += `
* {
font-family: '${font_family_name}' !important;
}
`;
applyCss(css_string, "custom_font_general");
}
async convert_font_to_css(font_file_name, css_font_path) {
try {
if (!this.processingNoticeShown) {
new import_obsidian.Notice("Processing Font files");
this.processingNoticeShown = true;
setTimeout(() => {
this.processingNoticeShown = false;
}, 5e3);
}
const file = `${this.settings.font_folder}/${font_file_name}`;
const arrayBuffer = await this.app.vault.adapter.readBinary(file);
const font_family_name = font_file_name.split(".")[0].toLowerCase();
const font_extension_name = font_file_name.split(".")[1].toLowerCase();
const fontBlob = new Blob([arrayBuffer]);
const fontUrl = URL.createObjectURL(fontBlob);
const fontFace = new FontFace(font_family_name, `url(${fontUrl})`, {
display: "swap"
// Better loading performance
});
try {
await fontFace.load();
const fonts = document.fonts;
if (fonts && typeof fonts.add === "function") {
fonts.add(fontFace);
console.log(`Font ${font_family_name} loaded successfully using CSS Font Loading API`);
} else {
console.log(`CSS Font Loading API not fully supported, falling back to traditional method for ${font_family_name}`);
throw new Error("CSS Font Loading API not supported");
}
const base64 = arrayBufferToBase64(arrayBuffer);
const css_type = font_extension_name === "woff" ? "font/woff" : font_extension_name === "woff2" ? "font/woff2" : font_extension_name === "otf" ? "font/opentype" : "font/truetype";
const base64_css = `@font-face{
font-family: '${font_family_name}';
src: url(data:${css_type};base64,${base64});
font-display: swap;
}`;
await this.app.vault.adapter.write(css_font_path, base64_css);
URL.revokeObjectURL(fontUrl);
} catch (fontLoadError) {
console.warn(`CSS Font Loading API failed for ${font_family_name}, falling back to traditional method:`, fontLoadError);
URL.revokeObjectURL(fontUrl);
const base64 = arrayBufferToBase64(arrayBuffer);
const css_type = font_extension_name === "woff" ? "font/woff" : font_extension_name === "woff2" ? "font/woff2" : font_extension_name === "otf" ? "font/opentype" : "font/truetype";
const base64_css = `@font-face{
font-family: '${font_family_name}';
src: url(data:${css_type};base64,${base64});
font-display: swap;
}`;
await this.app.vault.adapter.write(css_font_path, base64_css);
}
console.log("saved font %s into %s", font_family_name, css_font_path);
} catch (error) {
console.error(`Error converting font ${font_file_name} to CSS:`, error);
throw error;
}
}
async onload() {
this.load_plugin();
this.addSettingTab(new FontSettingTab(this.app, this));
}
async onunload() {
applyCss("", "custom_font_base64");
applyCss("", "custom_font_general");
}
async loadSettings() {
this.settings = Object.assign(
{},
DEFAULT_SETTINGS,
await this.loadData()
);
}
async saveSettings() {
await this.saveData(this.settings);
}
};
var FontSettingTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
async display() {
const { containerEl } = this;
containerEl.empty();
const infoContainer = containerEl.createDiv();
infoContainer.setText(
"In Order to set the font, copy your font into fonts directory that you set"
);
new import_obsidian.Setting(containerEl).setName("Fonts Folder").setDesc("Folder to look for your custom fonts").addText((text) => {
text.onChange(async (value) => {
this.plugin.settings.font_folder = value;
await this.plugin.saveSettings();
await this.plugin.loadSettings();
});
if (this.plugin.settings.font_folder.trim() == "") {
this.plugin.settings.font_folder = `${this.app.vault.configDir}/fonts`;
}
if (!this.plugin.settings.font_folder.endsWith("/"))
this.plugin.settings.font_folder = this.plugin.settings.font_folder + "/";
text.setValue(this.plugin.settings.font_folder);
});
const font_folder_path = this.plugin.settings.font_folder;
const options = [{ name: "none", value: "None" }];
try {
if (!await this.app.vault.adapter.exists(font_folder_path)) {
await this.app.vault.adapter.mkdir(font_folder_path);
}
if (await this.app.vault.adapter.exists(font_folder_path)) {
const files = await this.app.vault.adapter.list(
font_folder_path
);
for (const file of files.files) {
const file_name = file.replace(font_folder_path, "");
if (file_name.startsWith("."))
continue;
options.push({ name: file_name, value: file_name });
}
}
options.push({ name: "all", value: "Multiple fonts" });
} catch (error) {
console.log(error);
}
new import_obsidian.Setting(containerEl).setName("Reload fonts from folder").setDesc(
"This button reloades from the folder you specified (it also creates the folder for you)"
).addButton((button) => {
button.setButtonText("Reload");
button.onClick((callback) => {
this.plugin.saveSettings();
this.plugin.load_plugin();
this.display();
});
});
this.containerEl.createDiv();
new import_obsidian.Setting(containerEl).setName("Font").setDesc(
`Choose font (If you can't see your fonts, make sure your fonts are in the folder you specified and hit reload.
Also if you choose multiple fonts option, we will load and process all fonts in the folder for you. In that Case, enable Custom CSS Mode)`
).addDropdown((dropdown) => {
for (const opt of options) {
dropdown.addOption(opt.name, opt.value);
}
dropdown.setValue(this.plugin.settings.font).onChange(async (value) => {
this.plugin.settings.font = value;
await this.plugin.saveSettings();
await this.plugin.load_plugin();
this.display();
});
});
if (this.plugin.settings.font.toLowerCase() != "none") {
new import_obsidian.Setting(containerEl).setName("Force Style").setDesc(
"This option should only be used if you have installed a community theme and normal mode doesn't work"
).addToggle((toggle) => {
toggle.setValue(this.plugin.settings.force_mode);
toggle.onChange(async (value) => {
this.plugin.settings.force_mode = value;
await this.plugin.saveSettings();
await this.plugin.load_plugin();
});
});
new import_obsidian.Setting(containerEl).setName("Custom CSS Mode").setDesc(
"If you want to apply a custom css style rather than default style, choose this."
).addToggle((toggle) => {
toggle.setValue(this.plugin.settings.custom_css_mode);
toggle.onChange(async (value) => {
if (this.plugin.settings.custom_css_mode == false) {
this.plugin.settings.custom_css = "";
}
this.plugin.settings.custom_css_mode = value;
this.plugin.saveSettings();
this.plugin.load_plugin();
this.display();
});
});
if (this.plugin.settings.custom_css_mode) {
new import_obsidian.Setting(containerEl).setName("Custom CSS Style").setDesc("Input your custom css style. Use the font filename without extension (in lowercase) as the font-family name. For example, if your font file is 'MyFont.ttf', use 'myfont' in your CSS.").addTextArea(async (text) => {
text.onChange(async (new_value) => {
this.plugin.settings.custom_css = new_value;
await this.plugin.saveSettings();
await this.plugin.load_plugin();
});
text.setDisabled(!this.plugin.settings.custom_css_mode);
if (this.plugin.settings.custom_css == "") {
let font_family_name = "";
try {
font_family_name = this.plugin.settings.font.split(".")[0].toLowerCase();
} catch (error) {
console.log(error);
}
if (font_family_name == "all") {
if (await this.app.vault.adapter.exists(
font_folder_path
)) {
const files = await this.app.vault.adapter.list(
font_folder_path
);
let final_str = "";
for (const file of files.files) {
const file_name = file.split("/")[2];
const font_family = file_name.split(".")[0].toLowerCase();
final_str += "\n" + get_custom_css(
font_family,
"." + font_family
);
}
text.setValue(final_str);
}
} else {
const template = `/* Example CSS for your font: ${font_family_name} */
/* Apply to all text */
:root * {
--font-default: '${font_family_name}';
--default-font: '${font_family_name}';
--font-family-editor: '${font_family_name}';
--font-interface-override: '${font_family_name}';
--font-text-override: '${font_family_name}';
}
/* Example: Apply to custom CSS class */
.custom-font * {
font-family: '${font_family_name}' !important;
}
/* Example: Apply to specific elements only */
.custom-font h1, .custom-font h2, .custom-font h3 {
font-family: '${font_family_name}' !important;
}`;
text.setValue(template);
}
} else {
text.setValue(this.plugin.settings.custom_css);
}
text.onChanged();
text.inputEl.style.width = "100%";
text.inputEl.style.height = "100px";
});
}
}
}
};
/* nosourcemap */

View File

@@ -0,0 +1,10 @@
{
"id": "custom-font-loader",
"name": "Custom Font Loader",
"version": "1.9.0",
"minAppVersion": "0.15.0",
"description": "Customize your Obsidian vault with any font you want (+ Support for Android and IOS)",
"author": "Amir Pourmand",
"authorUrl": "https://amirpourmand.ir",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,13 @@
{
"hideStatus": false,
"hideTabs": false,
"hideScroll": true,
"hideSidebarButtons": true,
"hideTooltips": false,
"hideFileNavButtons": true,
"hideSearchSuggestions": false,
"hideSearchCounts": false,
"hideInstructions": false,
"hidePropertiesReading": false,
"hideVault": true
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"id": "obsidian-hider",
"name": "Hider",
"version": "1.6.2",
"minAppVersion": "1.11.1",
"description": "Hide UI elements such as tooltips, status, titlebar and more.",
"author": "@kepano",
"authorUrl": "https://www.twitter.com/kepano",
"fundingUrl": "https://www.buymeacoffee.com/kepano",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,66 @@
/* Hides vault name */
.hider-vault .workspace-sidedock-vault-profile,
body.hider-vault:not(.is-mobile) .workspace-split.mod-left-split .workspace-sidedock-vault-profile {
display:none;
}
/* Hide tabs */
.hider-tabs .mod-root .workspace-tabs .workspace-tab-header-container {
display: none;
}
.hider-tabs .mod-top-left-space .view-header {
padding-left: var(--frame-left-space);
}
/* Hide sidebar buttons */
.hider-sidebar-buttons .sidebar-toggle-button.mod-right,
.hider-sidebar-buttons .sidebar-toggle-button.mod-left {
display: none;
}
.hider-sidebar-buttons.mod-macos.is-hidden-frameless:not(.is-popout-window) .workspace .workspace-tabs.mod-top-right-space .workspace-tab-header-container {
padding-right: 4px;
}
.hider-sidebar-buttons.mod-macos {
--frame-left-space: 60px;
}
/* Hide meta */
.hider-meta .markdown-reading-view .metadata-container {
display:none;
}
/* Hide scrollbars */
.hider-scroll ::-webkit-scrollbar {
display:none;
}
/* Hide status */
.hider-status .status-bar {
display:none;
}
/* Hide tooltips */
.hider-tooltips .tooltip {
display:none;
}
/* Hide search suggestions */
.hider-search-suggestions .suggestion-container.mod-search-suggestion {
display: none;
}
/* Hide search count flair */
.hider-search-counts .tree-item-flair:not(.tag-pane-tag-count) {
display:none;
}
/* Hide instructions */
.hider-instructions .prompt-instructions {
display:none;
}
/* Hide file nav header */
.hider-file-nav-header .workspace-leaf-content[data-type=file-explorer] .nav-header {
display: none;
}

View File

@@ -0,0 +1,121 @@
{
"settings": {
"migrated": 6,
"iconPacksPath": ".obsidian/icons",
"fontSize": 16,
"emojiStyle": "native",
"iconColor": null,
"recentlyUsedIcons": [
"LiSquareCheckBig",
"LiStar",
"LiBookOpen",
"LiBook"
],
"recentlyUsedIconsSize": 5,
"rules": [
{
"rule": "^00 INBOX$",
"icon": "LiInbox",
"for": "everything",
"order": 0
},
{
"rule": "^01 sources$",
"icon": "LiBookOpen",
"for": "everything",
"order": 1
},
{
"rule": "^02 tags$",
"icon": "LiTags",
"for": "everything",
"order": 2
},
{
"rule": "^03 index$",
"icon": "LiHash",
"for": "everything",
"order": 3
},
{
"rule": "^04 notes$",
"icon": "LiNotepadText",
"for": "everything",
"order": 4
},
{
"rule": "^05 journal$",
"icon": "LiCalendar",
"for": "everything",
"order": 5
},
{
"rule": "^99 meta$",
"icon": "LiSettings",
"for": "everything",
"order": 6
},
{
"rule": "^attachments$",
"icon": "LiPaperclip",
"for": "everything",
"order": 7
},
{
"rule": "^templates$",
"icon": "LiRuler",
"for": "everything",
"order": 8
},
{
"rule": ".*claude|CLAUDE.*",
"icon": "SiClaude",
"for": "everything",
"order": 9
},
{
"rule": ".*obsidian.*",
"icon": "SiObsidian",
"for": "everything",
"order": 10
},
{
"rule": ".*wishlist.*",
"icon": "LiStar",
"for": "everything",
"order": 11
},
{
"rule": ".*pokemon.*",
"icon": "CiPokeball",
"for": "everything",
"order": 12
}
],
"extraMargin": {
"top": 0,
"right": 4,
"bottom": 0,
"left": 0
},
"iconInTabsEnabled": true,
"iconInTitleEnabled": false,
"iconInTitlePosition": "above",
"iconInFrontmatterEnabled": true,
"iconInFrontmatterFieldName": "icon",
"iconColorInFrontmatterFieldName": "iconColor",
"iconsBackgroundCheckEnabled": false,
"iconsInNotesEnabled": true,
"iconsInLinksEnabled": true,
"iconIdentifier": ":",
"lucideIconPackType": "native",
"debugMode": false,
"useInternalPlugins": false
},
"04 notes/alternate checkboxes preview.md": {
"iconName": "LiSquareCheckBig"
},
"04 notes/study list.md": {
"iconName": "LiBookOpen"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-icon-folder",
"name": "Iconize",
"version": "2.14.7",
"minAppVersion": "0.9.12",
"description": "Add icons to anything you desire in Obsidian, including files, folders, and text.",
"author": "Florian Woelki",
"authorUrl": "https://florianwoelki.com/",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,120 @@
.iconize-inline-title-wrapper {
width: var(--line-width);
max-width: var(--max-width);
margin-inline: var(--content-margin);
}
.iconize-title-icon {
max-width: var(--max-width);
margin-right: var(--size-4-2);
}
.iconize-icon-in-link {
transform: translateY(20%);
margin-right: var(--size-2-2);
display: inline-flex;
}
.iconize-icon {
border: 1px solid transparent;
margin: 0px 4px 0px 0px;
display: flex;
align-self: center;
margin: auto 0;
}
.nav-folder-title,
.nav-file-title {
align-items: center;
}
.iconize-setting input[type='color'] {
margin: 0 6px;
}
.iconize-modal.prompt-results {
margin: 0;
overflow-y: auto;
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
}
.prompt .iconize-subheadline {
margin-top: 12px;
font-size: 12px;
color: gray;
grid-column-start: 1;
grid-column-end: 6;
}
@media (max-width: 640px) {
.iconize-modal.prompt-results {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.prompt .iconize-subheadline {
grid-column-end: 4;
}
}
.iconize-modal.prompt-results .suggestion-item {
cursor: pointer;
white-space: pre-wrap;
display: flex;
justify-content: flex-end;
align-items: center;
flex-direction: column-reverse;
text-align: center;
font-size: 13px;
color: var(--text-muted);
padding: 16px 8px;
line-break: auto;
word-break: break-word;
line-height: 1.3;
}
.iconize-modal.prompt-results .suggestion-item.suggestion-item__center {
justify-content: center;
}
.iconize-icon-preview {
font-size: 22px;
}
.iconize-icon-preview img {
width: 16px;
height: 16px;
}
.iconize-icon-preview svg {
width: 24px;
height: 24px;
color: currentColor;
margin-bottom: 4px;
}
.iconize-dragover {
position: relative;
}
.iconize-dragover-el {
position: absolute;
width: 100%;
height: 100%;
color: var(--text-normal);
background-color: var(--background-secondary-alt);
display: flex;
align-items: center;
justify-content: center;
}
/* Custom rule modal. */
.iconize-custom-modal .modal-content {
display: flex;
align-items: center;
justify-content: center;
}
.iconize-custom-modal .modal-content input {
width: 100%;
margin-right: 0.5rem;
}

View File

@@ -0,0 +1,34 @@
{
"lightStyle": "minimal-light",
"darkStyle": "minimal-dark",
"lightScheme": "minimal-default-light",
"darkScheme": "minimal-dracula-dark",
"editorFont": "",
"lineHeight": 1.5,
"lineWidth": 40,
"lineWidthWide": 50,
"maxWidth": 88,
"textNormal": 16,
"textSmall": 13,
"imgGrid": false,
"imgWidth": "img-default-width",
"tableWidth": "table-default-width",
"iframeWidth": "iframe-default-width",
"mapWidth": "map-default-width",
"chartWidth": "chart-default-width",
"colorfulHeadings": true,
"colorfulFrame": false,
"colorfulActiveStates": false,
"trimNames": true,
"labeledNav": false,
"fullWidthMedia": true,
"bordersToggle": true,
"minimalStatus": true,
"focusMode": false,
"underlineInternal": true,
"underlineExternal": true,
"folding": true,
"lineNumbers": true,
"readableLineLength": false,
"devBlockWidth": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"id": "obsidian-minimal-settings",
"name": "Minimal Theme Settings",
"version": "8.2.3",
"minAppVersion": "1.11.1",
"description": "Change the colors, fonts and features of Minimal Theme.",
"author": "@kepano",
"authorUrl": "https://www.twitter.com/kepano",
"fundingUrl": "https://www.buymeacoffee.com/kepano",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,3 @@
.setting-group > .setting-item-heading .setting-item-description {
margin-top: 4px;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-style-settings",
"name": "Style Settings",
"version": "1.0.9",
"minAppVersion": "0.11.5",
"description": "Offers controls for adjusting theme, plugin, and snippet CSS variables.",
"author": "mgmeyers",
"authorUrl": "https://github.com/mgmeyers/obsidian-style-settings",
"isDesktopOnly": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,14 @@
{
"vimrcFileName": ".obsidian.vimrc",
"displayChord": true,
"displayVimMode": true,
"fixedNormalModeLayout": false,
"capturedKeyboardMap": {},
"supportJsCommands": false,
"vimStatusPromptMap": {
"normal": "🟢",
"insert": "🟠",
"visual": "🟡",
"replace": "🔴"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-vimrc-support",
"name": "Vimrc Support",
"version": "0.10.2",
"description": "Auto-load a startup file with Obsidian Vim commands.",
"minAppVersion": "0.15.3",
"author": "esm",
"authorUrl": "",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,6 @@
{
"formatType": "normal",
"showRibbonIcon": true,
"bindEnter": true,
"bindTab": true
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,15 @@
{
"id": "table-editor-obsidian",
"name": "Advanced Tables",
"author": "Tony Grosinger",
"authorUrl": "https://grosinger.net",
"description": "Improved table navigation, formatting, manipulation, and formulas.",
"isDesktopOnly": false,
"minAppVersion": "1.0.0",
"version": "0.23.2",
"fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger"
}
}

View File

@@ -0,0 +1,78 @@
:root {
--advanced-tables-helper-size: 28px;
}
.HyperMD-table-row span.cm-inline-code {
font-size: 100%;
padding: 0px;
}
.advanced-tables-buttons>div>.title {
font-weight: var(--font-medium);
font-size: var(--nav-item-size);
color: var(--nav-item-color);
text-decoration: underline;
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container {
gap: 0.2rem;
margin: 0.2rem 0 0.2rem 0;
justify-content: start;
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container::before {
min-width: 2.6rem;
line-height: var(--advanced-tables-helper-size);
font-size: var(--nav-item-size);
font-weight: var(--nav-item-weight);
color: var(--nav-item-color);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container>* {
height: var(--advanced-tables-helper-size);
line-height: var(--advanced-tables-helper-size);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button {
width: var(--advanced-tables-helper-size);
height: var(--advanced-tables-helper-size);
display: flex;
justify-content: center;
align-items: center;
border-radius: var(--radius-s);
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button:hover {
background-color: var(--nav-item-background-hover);
color: var(--nav-item-color-hover);
font-weight: var(--nav-item-weight-hover);
}
.advanced-tables-row-label {
width: 50px;
}
.widget-icon {
width: 20px;
height: 20px;
fill: var(--text-muted);
}
.widget-icon:hover {
fill: var(--text-normal);
}
.advanced-tables-csv-export textarea {
height: 200px;
width: 100%;
}
.advanced-tables-donation {
width: 70%;
margin: 0 auto;
text-align: center;
}
.advanced-tables-donate-button {
margin: 10px;
}