Initial commit
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.obsidian/workspace.json
|
||||||
|
.obsidian/workspace-mobile.json
|
||||||
|
.DS_Store
|
||||||
19
.obsidian/app.json
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"userIgnoreFilters": [
|
||||||
|
"templates/"
|
||||||
|
],
|
||||||
|
"showUnsupportedFiles": true,
|
||||||
|
"propertiesInDocument": "hidden",
|
||||||
|
"promptDelete": false,
|
||||||
|
"trashOption": "none",
|
||||||
|
"attachmentFolderPath": "files",
|
||||||
|
"alwaysUpdateLinks": true,
|
||||||
|
"showLineNumber": false,
|
||||||
|
"pdfExportSettings": {
|
||||||
|
"includeName": true,
|
||||||
|
"pageSize": "Letter",
|
||||||
|
"landscape": false,
|
||||||
|
"margin": "0",
|
||||||
|
"downscalePercent": 100
|
||||||
|
}
|
||||||
|
}
|
||||||
9
.obsidian/appearance.json
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"cssTheme": "Typomagical",
|
||||||
|
"accentColor": "#b5433b",
|
||||||
|
"theme": "obsidian",
|
||||||
|
"baseFontSize": 16,
|
||||||
|
"enabledCssSnippets": [
|
||||||
|
"nav-callout"
|
||||||
|
]
|
||||||
|
}
|
||||||
10
.obsidian/community-plugins.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[
|
||||||
|
"shortcuts-extender",
|
||||||
|
"obsidian-smart-typography",
|
||||||
|
"templater-obsidian",
|
||||||
|
"obsidian-style-settings",
|
||||||
|
"obsidian-outliner",
|
||||||
|
"mousewheel-image-zoom",
|
||||||
|
"periodic-notes",
|
||||||
|
"obsidian-git"
|
||||||
|
]
|
||||||
7
.obsidian/community-plugins.sync-conflict-20251201-004324-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[
|
||||||
|
"shortcuts-extender",
|
||||||
|
"obsidian-smart-typography",
|
||||||
|
"templater-obsidian",
|
||||||
|
"obsidian-style-settings",
|
||||||
|
"obsidian-outliner"
|
||||||
|
]
|
||||||
7
.obsidian/community-plugins.sync-conflict-20251208-062732-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[
|
||||||
|
"shortcuts-extender",
|
||||||
|
"obsidian-smart-typography",
|
||||||
|
"templater-obsidian",
|
||||||
|
"obsidian-style-settings",
|
||||||
|
"obsidian-outliner"
|
||||||
|
]
|
||||||
33
.obsidian/core-plugins.json
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"file-explorer": true,
|
||||||
|
"global-search": true,
|
||||||
|
"switcher": true,
|
||||||
|
"graph": true,
|
||||||
|
"backlink": true,
|
||||||
|
"canvas": true,
|
||||||
|
"outgoing-link": true,
|
||||||
|
"tag-pane": true,
|
||||||
|
"footnotes": false,
|
||||||
|
"properties": true,
|
||||||
|
"page-preview": true,
|
||||||
|
"daily-notes": true,
|
||||||
|
"templates": true,
|
||||||
|
"note-composer": true,
|
||||||
|
"command-palette": true,
|
||||||
|
"slash-command": false,
|
||||||
|
"editor-status": true,
|
||||||
|
"bookmarks": true,
|
||||||
|
"markdown-importer": false,
|
||||||
|
"zk-prefixer": false,
|
||||||
|
"random-note": false,
|
||||||
|
"outline": true,
|
||||||
|
"word-count": true,
|
||||||
|
"slides": false,
|
||||||
|
"audio-recorder": false,
|
||||||
|
"workspaces": false,
|
||||||
|
"file-recovery": true,
|
||||||
|
"publish": false,
|
||||||
|
"sync": true,
|
||||||
|
"bases": true,
|
||||||
|
"webviewer": false
|
||||||
|
}
|
||||||
5
.obsidian/daily-notes.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"format": "LL",
|
||||||
|
"folder": "daily",
|
||||||
|
"template": "templates/daily notes template"
|
||||||
|
}
|
||||||
22
.obsidian/graph.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"collapse-filter": true,
|
||||||
|
"search": "",
|
||||||
|
"showTags": false,
|
||||||
|
"showAttachments": false,
|
||||||
|
"hideUnresolved": false,
|
||||||
|
"showOrphans": true,
|
||||||
|
"collapse-color-groups": true,
|
||||||
|
"colorGroups": [],
|
||||||
|
"collapse-display": true,
|
||||||
|
"showArrow": false,
|
||||||
|
"textFadeMultiplier": 0,
|
||||||
|
"nodeSizeMultiplier": 1,
|
||||||
|
"lineSizeMultiplier": 1,
|
||||||
|
"collapse-forces": true,
|
||||||
|
"centerStrength": 0.518713248970312,
|
||||||
|
"repelStrength": 10,
|
||||||
|
"linkStrength": 1,
|
||||||
|
"linkDistance": 250,
|
||||||
|
"scale": 0.5638449139696959,
|
||||||
|
"close": true
|
||||||
|
}
|
||||||
34
.obsidian/hotkeys.json
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"templater-obsidian:create-new-note-from-template": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "N"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"templater-obsidian:insert-templater": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "E"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"templater-obsidian:replace-in-file-templater": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "R"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"shortcuts-extender:shortcut-Vertical-Line": [
|
||||||
|
{
|
||||||
|
"modifiers": [
|
||||||
|
"Alt"
|
||||||
|
],
|
||||||
|
"key": "\\"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
6
.obsidian/plugins/mousewheel-image-zoom/data.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"modifierKey": "ShiftLeft",
|
||||||
|
"stepSize": 25,
|
||||||
|
"initialSize": 500,
|
||||||
|
"resizeInCanvas": true
|
||||||
|
}
|
||||||
616
.obsidian/plugins/mousewheel-image-zoom/main.js
vendored
Normal file
@@ -0,0 +1,616 @@
|
|||||||
|
/*
|
||||||
|
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
|
||||||
|
if you want to view the source visit the plugins github repository
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var obsidian = require('obsidian');
|
||||||
|
|
||||||
|
/*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
|
||||||
|
function __awaiter(thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ReplaceTerm enables us to store the parameters for a replacement to add a new size parameter.
|
||||||
|
*/
|
||||||
|
class ReplaceTerm {
|
||||||
|
constructor(replaceFrom, replaceWith) {
|
||||||
|
this.replaceFrom = replaceFrom;
|
||||||
|
this.replaceWith = replaceWith;
|
||||||
|
}
|
||||||
|
// Generate a string that can be used in a string.replace() call as the string to replace
|
||||||
|
getReplaceFromString(oldSize) {
|
||||||
|
return this.replaceFrom(oldSize);
|
||||||
|
}
|
||||||
|
// Generate a string that can be used in a string.replace() call as the replacement string
|
||||||
|
getReplaceWithString(newSize) {
|
||||||
|
return this.replaceWith(newSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class Util {
|
||||||
|
/**
|
||||||
|
* For a given file content decide if a string is inside a table
|
||||||
|
* @param searchString string
|
||||||
|
* @param fileValue file content
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static isInTable(searchString, fileValue) {
|
||||||
|
return fileValue.search(new RegExp(`^\\|.+${escapeRegex(searchString)}.+\\|$`, "m")) !== -1;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get the image name from a given src uri of a local image
|
||||||
|
* (URI like app://local/C:/.../image.png?1677337704730)
|
||||||
|
* @param imageUri uri of the image
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
static getLocalImageNameFromUri(imageUri) {
|
||||||
|
imageUri = decodeURI(imageUri);
|
||||||
|
const imageNameMatch = imageUri.match(/([^\/?\\]+)(\?.*?|)$/);
|
||||||
|
const imageName = imageNameMatch ? imageNameMatch[1] : "";
|
||||||
|
// Handle linux not correctly decoding the %2F before the Filename to a \
|
||||||
|
const hasLinuxDecodingIssue = imageName.startsWith("2F");
|
||||||
|
return hasLinuxDecodingIssue ? imageName.slice(2) : imageName;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get the parameters needed to handle the zoom for a local image.
|
||||||
|
* Source can be either a obsidian link like [[image.png]] or a markdown link like [image.png](image.png)
|
||||||
|
* @param imageName Name of the image
|
||||||
|
* @param fileText content of the current file
|
||||||
|
* @returns parameters to handle the zoom
|
||||||
|
*/
|
||||||
|
static getLocalImageZoomParams(imageName, fileText) {
|
||||||
|
imageName = this.determineImageName(imageName, fileText);
|
||||||
|
// Get the folder name if the image is located in a folder
|
||||||
|
const folderName = this.getFolderNameIfExist(imageName, fileText);
|
||||||
|
imageName = `${folderName}${imageName}`;
|
||||||
|
const isInTable = Util.isInTable(imageName, fileText);
|
||||||
|
// Separator to use for the replacement
|
||||||
|
const sizeSeparator = isInTable ? "\\|" : "|";
|
||||||
|
// Separator to use for the regex: isInTable ? \\\| : \|
|
||||||
|
const regexSeparator = isInTable ? "\\\\\\|" : "\\|";
|
||||||
|
// check character before the imageName to check if markdown link or obsidian link
|
||||||
|
const imageNamePosition = fileText.indexOf(imageName);
|
||||||
|
const isObsidianLink = fileText.charAt(imageNamePosition - 1) === "[";
|
||||||
|
if (isObsidianLink) {
|
||||||
|
const imageAttributes = this.getImageAttributes(imageName, fileText);
|
||||||
|
imageName = `${imageName}${imageAttributes}`;
|
||||||
|
return Util.generateReplaceTermForObsidianSyntax(imageName, regexSeparator, sizeSeparator);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Util.generateReplaceTermForMarkdownSyntax(imageName, regexSeparator, sizeSeparator, fileText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* When using markdown link syntax the image name can be encoded. This function checks if the image name is encoded and if not encodes it.
|
||||||
|
*
|
||||||
|
* @param origImageName Image name
|
||||||
|
* @param fileText File content
|
||||||
|
* @returns image name with the correct encoding
|
||||||
|
*/
|
||||||
|
static determineImageName(origImageName, fileText) {
|
||||||
|
const encodedImageName = encodeURI(origImageName);
|
||||||
|
const spaceEncodedImageName = origImageName.replace(/ /g, "%20");
|
||||||
|
// Try matching original, full URI encoded, and space encoded
|
||||||
|
const imageNameVariants = [origImageName, encodedImageName, spaceEncodedImageName];
|
||||||
|
for (const variant of imageNameVariants) {
|
||||||
|
if (fileText.includes(variant)) {
|
||||||
|
return variant;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new Error("Image not found in file");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Extracts the folder name from the given image name by looking for the first "[" or "(" character
|
||||||
|
* that appears before the image name in the file text.
|
||||||
|
* @param imageName The name of the image.
|
||||||
|
* @param fileText The text of the file that contains the image.
|
||||||
|
* @returns The name of the folder that contains the image, or an empty string if no folder is found.
|
||||||
|
*/
|
||||||
|
static getFolderNameIfExist(imageName, fileText) {
|
||||||
|
const index = fileText.indexOf(imageName);
|
||||||
|
if (index === -1) {
|
||||||
|
throw new Error("Image not found in file");
|
||||||
|
}
|
||||||
|
const stringBeforeFileName = fileText.substring(0, index);
|
||||||
|
const lastOpeningBracket = stringBeforeFileName.lastIndexOf("["); // Obsidian link
|
||||||
|
const lastOpeningParenthesis = stringBeforeFileName.lastIndexOf("("); // Markdown link
|
||||||
|
const lastOpeningBracketOrParenthesis = Math.max(lastOpeningBracket, lastOpeningParenthesis);
|
||||||
|
const folderName = stringBeforeFileName.substring(lastOpeningBracketOrParenthesis + 1);
|
||||||
|
return folderName;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Extracts any image attributes like |ctr for ITS Theme that appear after the given image name in the file.
|
||||||
|
* @param imageName - The name of the image to search for.
|
||||||
|
* @param fileText - The content of the file to search in.
|
||||||
|
* @returns A string containing any image attributes that appear after the image name.
|
||||||
|
*/
|
||||||
|
static getImageAttributes(imageName, fileText) {
|
||||||
|
const index = fileText.indexOf(imageName);
|
||||||
|
const stringAfterFileName = fileText.substring(index + imageName.length);
|
||||||
|
const regExpMatchArray = stringAfterFileName.match(/([^\]]*?)\\?\|\d+]]|([^\]]*?)]]|/);
|
||||||
|
if (regExpMatchArray) {
|
||||||
|
if (!!regExpMatchArray[1]) {
|
||||||
|
return regExpMatchArray[1];
|
||||||
|
}
|
||||||
|
else if (!!regExpMatchArray[2]) {
|
||||||
|
return regExpMatchArray[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get the parameters needed to handle the zoom for images in markdown format.
|
||||||
|
* Example: 
|
||||||
|
* @param imageName Name of the image
|
||||||
|
* @param fileText content of the current file
|
||||||
|
* @returns parameters to handle the zoom
|
||||||
|
* @private
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static generateReplaceTermForMarkdownSyntax(imageName, regexSeparator, sizeSeparator, fileText) {
|
||||||
|
const sizeMatchRegExp = new RegExp(`${regexSeparator}(\\d+)]${escapeRegex("(" + imageName + ")")}`);
|
||||||
|
const replaceSizeExistFrom = (oldSize) => `${sizeSeparator}${oldSize}](${imageName})`;
|
||||||
|
const replaceSizeExistWith = (newSize) => `${sizeSeparator}${newSize}](${imageName})`;
|
||||||
|
const replaceSizeNotExistsFrom = (oldSize) => `](${imageName})`;
|
||||||
|
const replaceSizeNotExistsWith = (newSize) => `${sizeSeparator}${newSize}](${imageName})`;
|
||||||
|
const replaceSizeExist = new ReplaceTerm(replaceSizeExistFrom, replaceSizeExistWith);
|
||||||
|
const replaceSizeNotExist = new ReplaceTerm(replaceSizeNotExistsFrom, replaceSizeNotExistsWith);
|
||||||
|
return {
|
||||||
|
sizeMatchRegExp: sizeMatchRegExp,
|
||||||
|
replaceSizeExist: replaceSizeExist,
|
||||||
|
replaceSizeNotExist: replaceSizeNotExist,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get the parameters needed to handle the zoom for images in markdown format.
|
||||||
|
* Example: ![[image.png]]
|
||||||
|
* @param imageName Name of the image
|
||||||
|
* @param fileText content of the current file
|
||||||
|
* @returns parameters to handle the zoom
|
||||||
|
* @private
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static generateReplaceTermForObsidianSyntax(imageName, regexSeparator, sizeSeparator) {
|
||||||
|
const sizeMatchRegExp = new RegExp(`${escapeRegex(imageName)}${regexSeparator}(\\d+)`);
|
||||||
|
const replaceSizeExistFrom = (oldSize) => `${imageName}${sizeSeparator}${oldSize}`;
|
||||||
|
const replaceSizeExistWith = (newSize) => `${imageName}${sizeSeparator}${newSize}`;
|
||||||
|
const replaceSizeNotExistsFrom = (oldSize) => `${imageName}`;
|
||||||
|
const replaceSizeNotExistsWith = (newSize) => `${imageName}${sizeSeparator}${newSize}`;
|
||||||
|
const replaceSizeExist = new ReplaceTerm(replaceSizeExistFrom, replaceSizeExistWith);
|
||||||
|
const replaceSizeNotExist = new ReplaceTerm(replaceSizeNotExistsFrom, replaceSizeNotExistsWith);
|
||||||
|
return {
|
||||||
|
sizeMatchRegExp: sizeMatchRegExp,
|
||||||
|
replaceSizeExist: replaceSizeExist,
|
||||||
|
replaceSizeNotExist: replaceSizeNotExist,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get the parameters needed to handle the zoom for a remote image.
|
||||||
|
* Format: https://www.example.com/image.png
|
||||||
|
* @param imageUri URI of the image
|
||||||
|
* @param fileText content of the current file
|
||||||
|
* @returns parameters to handle the zoom
|
||||||
|
*/
|
||||||
|
static getRemoteImageZoomParams(imageUri, fileText) {
|
||||||
|
const isInTable = Util.isInTable(imageUri, fileText);
|
||||||
|
// Separator to use for the replacement
|
||||||
|
const sizeSeparator = isInTable ? "\\|" : "|";
|
||||||
|
// Separator to use for the regex: isInTable ? \\\| : \|
|
||||||
|
const regexSeparator = isInTable ? "\\\\\\|" : "\\|";
|
||||||
|
return Util.generateReplaceTermForMarkdownSyntax(imageUri, regexSeparator, sizeSeparator, fileText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Function to escape a string into a valid searchable string for a regex
|
||||||
|
* @param string string to escape
|
||||||
|
* @returns escaped string
|
||||||
|
*/
|
||||||
|
function escapeRegex(string) {
|
||||||
|
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
||||||
|
}
|
||||||
|
|
||||||
|
var ModifierKey;
|
||||||
|
(function (ModifierKey) {
|
||||||
|
ModifierKey["ALT"] = "AltLeft";
|
||||||
|
ModifierKey["CTRL"] = "ControlLeft";
|
||||||
|
ModifierKey["SHIFT"] = "ShiftLeft";
|
||||||
|
ModifierKey["ALT_RIGHT"] = "AltRight";
|
||||||
|
ModifierKey["CTRL_RIGHT"] = "ControlRight";
|
||||||
|
ModifierKey["SHIFT_RIGHT"] = "ShiftRight";
|
||||||
|
})(ModifierKey || (ModifierKey = {}));
|
||||||
|
const DEFAULT_SETTINGS = {
|
||||||
|
modifierKey: ModifierKey.ALT,
|
||||||
|
stepSize: 25,
|
||||||
|
initialSize: 500,
|
||||||
|
resizeInCanvas: true,
|
||||||
|
};
|
||||||
|
const CtrlCanvasConflictWarning = "Warning: Using Ctrl as the modifier key conflicts with default canvas zooming behavior when 'Resize in canvas' is enabled. Consider using another modifier key or disabling 'Resize in canvas'.";
|
||||||
|
class MouseWheelZoomPlugin extends obsidian.Plugin {
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
this.isKeyHeldDown = false;
|
||||||
|
this.wheelOpt = { passive: false, capture: true };
|
||||||
|
this.wheelEvent = 'wheel';
|
||||||
|
}
|
||||||
|
onload() {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
yield this.loadSettings();
|
||||||
|
this.registerEvent(this.app.workspace.on("window-open", (newWindow) => this.registerEvents(newWindow.win)));
|
||||||
|
this.registerEvents(window);
|
||||||
|
this.addSettingTab(new MouseWheelZoomSettingsTab(this.app, this));
|
||||||
|
console.log("Loaded: Mousewheel image zoom");
|
||||||
|
this.checkExistingUserConflict();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
checkExistingUserConflict() {
|
||||||
|
const noticeShownKey = 'mousewheel-zoom-ctrl-warning-shown'; // Key for localStorage flag
|
||||||
|
const isCtrl = this.settings.modifierKey === ModifierKey.CTRL || this.settings.modifierKey === ModifierKey.CTRL_RIGHT;
|
||||||
|
// Only show the notice if the conflict exists AND the user hasn't dismissed it before (using localStorage flag)
|
||||||
|
if (isCtrl && this.settings.resizeInCanvas && !localStorage.getItem(noticeShownKey)) {
|
||||||
|
const fragment = document.createDocumentFragment();
|
||||||
|
const titleEl = document.createElement('strong');
|
||||||
|
titleEl.textContent = "Mousewheel Image Zoom";
|
||||||
|
fragment.appendChild(titleEl);
|
||||||
|
fragment.appendChild(document.createElement('br'));
|
||||||
|
const messageEl = document.createElement('span');
|
||||||
|
messageEl.textContent = CtrlCanvasConflictWarning;
|
||||||
|
fragment.appendChild(messageEl);
|
||||||
|
fragment.appendChild(document.createElement('br'));
|
||||||
|
const settingsButton = document.createElement('button');
|
||||||
|
settingsButton.textContent = "Open Settings";
|
||||||
|
settingsButton.style.marginTop = "5px";
|
||||||
|
settingsButton.onclick = () => {
|
||||||
|
// settings is a private property of the app object, so we need to cast it to any to access it
|
||||||
|
// See https://forum.obsidian.md/t/open-settings-for-my-plugin-community-plugin-settings-deeplink/61563/4
|
||||||
|
const setting = this.app.setting;
|
||||||
|
setting.open();
|
||||||
|
setting.openTabById(this.manifest.id);
|
||||||
|
};
|
||||||
|
fragment.appendChild(settingsButton);
|
||||||
|
new obsidian.Notice(fragment, 0);
|
||||||
|
// Set the flag in localStorage so the notice doesn't appear again
|
||||||
|
// unless the user clears their localStorage or the key changes.
|
||||||
|
localStorage.setItem(noticeShownKey, 'true');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* When the config key is released, we enable the scroll again and reset the key held down flag.
|
||||||
|
*/
|
||||||
|
onConfigKeyUp(currentWindow) {
|
||||||
|
this.isKeyHeldDown = false;
|
||||||
|
this.enableScroll(currentWindow);
|
||||||
|
}
|
||||||
|
onunload(currentWindow = window) {
|
||||||
|
// Re-enable the normal scrolling behavior when the plugin unloads
|
||||||
|
this.enableScroll(currentWindow);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Registers image resizing events for the specified window
|
||||||
|
* @param currentWindow window in which to register events
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
registerEvents(currentWindow) {
|
||||||
|
const doc = currentWindow.document;
|
||||||
|
this.registerDomEvent(doc, "keydown", (evt) => {
|
||||||
|
var _a;
|
||||||
|
if (evt.code === this.settings.modifierKey.toString()) {
|
||||||
|
// When canvas mode is enabled we just ignore the keydown event if the canvas is active
|
||||||
|
const isActiveViewCanvas = ((_a = this.app.workspace.getActiveViewOfType(obsidian.View)) === null || _a === void 0 ? void 0 : _a.getViewType()) === "canvas";
|
||||||
|
if (isActiveViewCanvas && !this.settings.resizeInCanvas) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.isKeyHeldDown = true;
|
||||||
|
if (this.settings.modifierKey !== ModifierKey.SHIFT && this.settings.modifierKey !== ModifierKey.SHIFT_RIGHT) { // Ignore shift to allow horizontal scrolling
|
||||||
|
// Disable the normal scrolling behavior when the key is held down
|
||||||
|
this.disableScroll(currentWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.registerDomEvent(doc, "keyup", (evt) => {
|
||||||
|
if (evt.code === this.settings.modifierKey.toString()) {
|
||||||
|
this.onConfigKeyUp(currentWindow);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.registerDomEvent(doc, "wheel", (evt) => {
|
||||||
|
if (this.isKeyHeldDown) {
|
||||||
|
// When for example using Alt + Tab to switch between windows, the key is still recognized as held down.
|
||||||
|
// We check if the key is really held down by checking if the key is still pressed in the event when the
|
||||||
|
// wheel event is triggered.
|
||||||
|
if (!this.isConfiguredKeyDown(evt)) {
|
||||||
|
this.onConfigKeyUp(currentWindow);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const eventTarget = evt.target;
|
||||||
|
const targetIsCanvas = eventTarget.hasClass("canvas-node-content-blocker");
|
||||||
|
const targetIsCanvasNode = eventTarget.closest(".canvas-node-content") !== null;
|
||||||
|
const targetIsImage = eventTarget.nodeName === "IMG";
|
||||||
|
if (targetIsCanvas || targetIsCanvasNode || targetIsImage) {
|
||||||
|
this.disableScroll(currentWindow);
|
||||||
|
}
|
||||||
|
if (targetIsCanvas && this.settings.resizeInCanvas) {
|
||||||
|
// seems we're trying to zoom on some canvas node.
|
||||||
|
this.handleZoomForCanvas(evt, eventTarget);
|
||||||
|
}
|
||||||
|
else if (targetIsCanvasNode) ;
|
||||||
|
else if (targetIsImage) {
|
||||||
|
// Handle the zooming of the image
|
||||||
|
this.handleZoom(evt, eventTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.registerDomEvent(currentWindow, "blur", () => {
|
||||||
|
// When the window loses focus, ensure scrolling is re-enabled for this window
|
||||||
|
// and reset the key held state defensively, although the keyup should ideally handle it.
|
||||||
|
this.isKeyHeldDown = false;
|
||||||
|
this.enableScroll(currentWindow);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Handles zooming with the mousewheel on canvas node
|
||||||
|
* @param evt wheel event
|
||||||
|
* @param eventTarget targeted canvas node element
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
handleZoomForCanvas(evt, eventTarget) {
|
||||||
|
// get active canvas
|
||||||
|
const isCanvas = this.app.workspace.getActiveViewOfType(obsidian.View).getViewType() === "canvas";
|
||||||
|
if (!isCanvas) {
|
||||||
|
throw new Error("Can't find canvas");
|
||||||
|
}
|
||||||
|
// Unfortunately the current type definitions don't include any canvas functionality...
|
||||||
|
const canvas = this.app.workspace.getActiveViewOfType(obsidian.View).canvas;
|
||||||
|
// get triggered canvasNode
|
||||||
|
const canvasNode = Array.from(canvas.nodes.values())
|
||||||
|
.find(node => node.contentBlockerEl == eventTarget);
|
||||||
|
// Adjust delta based on the direction of the resize
|
||||||
|
let delta = evt.deltaY > 0 ? this.settings.stepSize : this.settings.stepSize * -1;
|
||||||
|
// Calculate new dimensions directly using the delta and aspectRatio
|
||||||
|
const aspectRatio = canvasNode.width / canvasNode.height;
|
||||||
|
const newWidth = canvasNode.width + delta;
|
||||||
|
const newHeight = newWidth / aspectRatio;
|
||||||
|
// Resize the canvas node using the new dimensions
|
||||||
|
canvasNode.resize({ width: newWidth, height: newHeight });
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Handles zooming with the mousewheel on an image
|
||||||
|
* @param evt wheel event
|
||||||
|
* @param eventTarget targeted image element
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
handleZoom(evt, eventTarget) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
const imageUri = eventTarget.attributes.getNamedItem("src").textContent;
|
||||||
|
const activeFile = yield this.getActivePaneWithImage(eventTarget);
|
||||||
|
yield this.app.vault.process(activeFile, (fileText) => {
|
||||||
|
let frontmatter = "";
|
||||||
|
let body = fileText;
|
||||||
|
const frontmatterRegex = /^---\s*([\s\S]*?)\s*---\n*/;
|
||||||
|
const match = fileText.match(frontmatterRegex);
|
||||||
|
if (match) {
|
||||||
|
frontmatter = match[0]; // Keep the full matched frontmatter block including delimiters and trailing newline
|
||||||
|
body = fileText.slice(frontmatter.length); // The rest is the body
|
||||||
|
}
|
||||||
|
const zoomParams = this.getZoomParams(imageUri, body, eventTarget);
|
||||||
|
// Perform replacements ONLY on the body
|
||||||
|
let modifiedBody = body;
|
||||||
|
const sizeMatches = body.match(zoomParams.sizeMatchRegExp);
|
||||||
|
// Element already has a size entry in the body
|
||||||
|
if (sizeMatches !== null) {
|
||||||
|
const oldSize = parseInt(sizeMatches[1]);
|
||||||
|
let newSize = oldSize;
|
||||||
|
if (evt.deltaY < 0) {
|
||||||
|
newSize += this.settings.stepSize;
|
||||||
|
}
|
||||||
|
else if (evt.deltaY > 0 && newSize > this.settings.stepSize) {
|
||||||
|
newSize -= this.settings.stepSize;
|
||||||
|
}
|
||||||
|
// Replace within the body
|
||||||
|
modifiedBody = body.replace(zoomParams.replaceSizeExist.getReplaceFromString(oldSize), zoomParams.replaceSizeExist.getReplaceWithString(newSize));
|
||||||
|
}
|
||||||
|
else { // Element has no size entry in the body -> give it an initial size
|
||||||
|
const initialSize = this.settings.initialSize;
|
||||||
|
const image = new Image();
|
||||||
|
image.src = imageUri;
|
||||||
|
const width = image.naturalWidth || initialSize;
|
||||||
|
const minWidth = Math.min(width, initialSize);
|
||||||
|
// Replace within the body
|
||||||
|
modifiedBody = body.replace(zoomParams.replaceSizeNotExist.getReplaceFromString(0), zoomParams.replaceSizeNotExist.getReplaceWithString(minWidth));
|
||||||
|
}
|
||||||
|
// Combine original frontmatter with the modified body
|
||||||
|
return frontmatter + modifiedBody;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Loop through all panes and get the pane that hosts a markdown file with the image to zoom
|
||||||
|
* @param imageElement The HTML Element of the image
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
getActivePaneWithImage(imageElement) {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
return new Promise(((resolve, reject) => {
|
||||||
|
this.app.workspace.iterateAllLeaves(leaf => {
|
||||||
|
if (leaf.view.containerEl.contains(imageElement) && leaf.view instanceof obsidian.MarkdownView) {
|
||||||
|
resolve(leaf.view.file);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
reject(new Error("No file belonging to the image found"));
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
getZoomParams(imageUri, fileText, target) {
|
||||||
|
if (imageUri.contains("http")) {
|
||||||
|
return Util.getRemoteImageZoomParams(imageUri, fileText);
|
||||||
|
}
|
||||||
|
else if (target.classList.value.match("excalidraw-svg.*")) {
|
||||||
|
const src = target.attributes.getNamedItem("filesource").textContent;
|
||||||
|
// remove ".md" from the end of the src
|
||||||
|
const imageName = src.substring(0, src.length - 3);
|
||||||
|
// Only get text after "/"
|
||||||
|
const imageNameAfterSlash = imageName.substring(imageName.lastIndexOf("/") + 1);
|
||||||
|
return Util.getLocalImageZoomParams(imageNameAfterSlash, fileText);
|
||||||
|
}
|
||||||
|
else if (imageUri.contains("app://")) {
|
||||||
|
const imageName = Util.getLocalImageNameFromUri(imageUri);
|
||||||
|
return Util.getLocalImageZoomParams(imageName, fileText);
|
||||||
|
}
|
||||||
|
else if (imageUri.contains("data:image/")) { // for image generated by PDF++ extension
|
||||||
|
// example: data:image/png;base64,iVB...
|
||||||
|
const imageName = Util.getLocalImageNameFromUri(target.parentElement.getAttribute("src"));
|
||||||
|
return Util.getLocalImageZoomParams(imageName, fileText);
|
||||||
|
}
|
||||||
|
throw new Error("Image is not zoomable");
|
||||||
|
}
|
||||||
|
loadSettings() {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
saveSettings() {
|
||||||
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
yield this.saveData(this.settings);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Utilities to disable and enable scrolling //
|
||||||
|
preventDefault(ev) {
|
||||||
|
ev.preventDefault();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Disables the normal scroll event
|
||||||
|
*/
|
||||||
|
disableScroll(currentWindow) {
|
||||||
|
currentWindow.addEventListener(this.wheelEvent, this.preventDefault, this.wheelOpt);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Enables the normal scroll event
|
||||||
|
*/
|
||||||
|
enableScroll(currentWindow) {
|
||||||
|
currentWindow.removeEventListener(this.wheelEvent, this.preventDefault, this.wheelOpt);
|
||||||
|
}
|
||||||
|
isConfiguredKeyDown(evt) {
|
||||||
|
switch (this.settings.modifierKey) {
|
||||||
|
case ModifierKey.ALT:
|
||||||
|
case ModifierKey.ALT_RIGHT:
|
||||||
|
return evt.altKey;
|
||||||
|
case ModifierKey.CTRL:
|
||||||
|
case ModifierKey.CTRL_RIGHT:
|
||||||
|
return evt.ctrlKey;
|
||||||
|
case ModifierKey.SHIFT:
|
||||||
|
case ModifierKey.SHIFT_RIGHT:
|
||||||
|
return evt.shiftKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class MouseWheelZoomSettingsTab extends obsidian.PluginSettingTab {
|
||||||
|
constructor(app, plugin) {
|
||||||
|
super(app, plugin);
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
// Helper function to update the warning message
|
||||||
|
updateWarningMessage(modifierKey, resizeInCanvas) {
|
||||||
|
if (!this.warningEl)
|
||||||
|
return;
|
||||||
|
const isCtrl = modifierKey === ModifierKey.CTRL || modifierKey === ModifierKey.CTRL_RIGHT;
|
||||||
|
const conflict = isCtrl && resizeInCanvas;
|
||||||
|
if (conflict) {
|
||||||
|
this.warningEl.setText(CtrlCanvasConflictWarning);
|
||||||
|
this.warningEl.style.display = 'block';
|
||||||
|
this.warningEl.style.color = 'var(--text-warning)';
|
||||||
|
this.warningEl.style.marginTop = '10px';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.warningEl.setText("");
|
||||||
|
this.warningEl.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display() {
|
||||||
|
let { containerEl } = this;
|
||||||
|
containerEl.empty();
|
||||||
|
containerEl.createEl('h2', { text: 'Settings for mousewheel zoom' });
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Trigger Key')
|
||||||
|
.setDesc('Key that needs to be pressed down for mousewheel zoom to work.')
|
||||||
|
.addDropdown(dropdown => dropdown
|
||||||
|
.addOption(ModifierKey.CTRL, "Ctrl")
|
||||||
|
.addOption(ModifierKey.ALT, "Alt")
|
||||||
|
.addOption(ModifierKey.SHIFT, "Shift")
|
||||||
|
.addOption(ModifierKey.CTRL_RIGHT, "Right Ctrl")
|
||||||
|
.addOption(ModifierKey.ALT_RIGHT, "Right Alt")
|
||||||
|
.addOption(ModifierKey.SHIFT_RIGHT, "Right Shift")
|
||||||
|
.setValue(this.plugin.settings.modifierKey)
|
||||||
|
.onChange((value) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
this.plugin.settings.modifierKey = value;
|
||||||
|
this.updateWarningMessage(this.plugin.settings.modifierKey, this.plugin.settings.resizeInCanvas);
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
})));
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Step size')
|
||||||
|
.setDesc('Step value by which the size of the image should be increased/decreased')
|
||||||
|
.addSlider(slider => {
|
||||||
|
slider
|
||||||
|
.setValue(25)
|
||||||
|
.setLimits(0, 100, 1)
|
||||||
|
.setDynamicTooltip()
|
||||||
|
.setValue(this.plugin.settings.stepSize)
|
||||||
|
.onChange((value) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
this.plugin.settings.stepSize = value;
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Initial Size')
|
||||||
|
.setDesc('Initial image size if no size was defined beforehand')
|
||||||
|
.addSlider(slider => {
|
||||||
|
slider
|
||||||
|
.setValue(500)
|
||||||
|
.setLimits(0, 1000, 25)
|
||||||
|
.setDynamicTooltip()
|
||||||
|
.setValue(this.plugin.settings.initialSize)
|
||||||
|
.onChange((value) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
this.plugin.settings.initialSize = value;
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
new obsidian.Setting(containerEl)
|
||||||
|
.setName('Resize in canvas')
|
||||||
|
.setDesc('When enabled, all nodes on the Obsidian canvas can also be resized using the Modifier key')
|
||||||
|
.addToggle((toggle) => {
|
||||||
|
toggle.setValue(this.plugin.settings.resizeInCanvas)
|
||||||
|
.onChange((value) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
this.plugin.settings.resizeInCanvas = value;
|
||||||
|
this.updateWarningMessage(this.plugin.settings.modifierKey, value);
|
||||||
|
yield this.plugin.saveSettings();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
this.warningEl = containerEl.createDiv({ cls: 'mousewheel-zoom-warning' });
|
||||||
|
this.warningEl.style.display = 'none';
|
||||||
|
this.updateWarningMessage(this.plugin.settings.modifierKey, this.plugin.settings.resizeInCanvas);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = MouseWheelZoomPlugin;
|
||||||
|
|
||||||
|
|
||||||
|
/* nosourcemap */
|
||||||
10
.obsidian/plugins/mousewheel-image-zoom/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "mousewheel-image-zoom",
|
||||||
|
"name": "Mousewheel Image zoom",
|
||||||
|
"version": "1.0.24",
|
||||||
|
"minAppVersion": "0.9.12",
|
||||||
|
"description": "This plugin enables you to increase/decrease the size of an image by scrolling",
|
||||||
|
"author": "Nico Jeske",
|
||||||
|
"authorUrl": "https://github.com/nicojeske/mousewheel-image-zoom",
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
||||||
68
.obsidian/plugins/obsidian-git/data.json
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"commitMessage": "vault backup: {{date}}",
|
||||||
|
"autoCommitMessage": "vault backup: {{date}}",
|
||||||
|
"commitMessageScript": "",
|
||||||
|
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||||
|
"autoSaveInterval": 0,
|
||||||
|
"autoPushInterval": 0,
|
||||||
|
"autoPullInterval": 0,
|
||||||
|
"autoPullOnBoot": false,
|
||||||
|
"autoCommitOnlyStaged": false,
|
||||||
|
"disablePush": false,
|
||||||
|
"pullBeforePush": true,
|
||||||
|
"disablePopups": false,
|
||||||
|
"showErrorNotices": true,
|
||||||
|
"disablePopupsForNoChanges": false,
|
||||||
|
"listChangedFilesInMessageBody": false,
|
||||||
|
"showStatusBar": true,
|
||||||
|
"updateSubmodules": false,
|
||||||
|
"syncMethod": "merge",
|
||||||
|
"mergeStrategy": "none",
|
||||||
|
"customMessageOnAutoBackup": false,
|
||||||
|
"autoBackupAfterFileChange": false,
|
||||||
|
"treeStructure": false,
|
||||||
|
"refreshSourceControl": false,
|
||||||
|
"basePath": "",
|
||||||
|
"differentIntervalCommitAndPush": false,
|
||||||
|
"changedFilesInStatusBar": false,
|
||||||
|
"showedMobileNotice": true,
|
||||||
|
"refreshSourceControlTimer": 300000,
|
||||||
|
"showBranchStatusBar": true,
|
||||||
|
"setLastSaveToLastCommit": false,
|
||||||
|
"submoduleRecurseCheckout": false,
|
||||||
|
"gitDir": "",
|
||||||
|
"showFileMenu": true,
|
||||||
|
"authorInHistoryView": "hide",
|
||||||
|
"dateInHistoryView": false,
|
||||||
|
"diffStyle": "split",
|
||||||
|
"hunks": {
|
||||||
|
"showSigns": false,
|
||||||
|
"hunkCommands": false,
|
||||||
|
"statusBar": "disabled"
|
||||||
|
},
|
||||||
|
"lineAuthor": {
|
||||||
|
"show": false,
|
||||||
|
"followMovement": "inactive",
|
||||||
|
"authorDisplay": "initials",
|
||||||
|
"showCommitHash": false,
|
||||||
|
"dateTimeFormatOptions": "date",
|
||||||
|
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
|
||||||
|
"dateTimeTimezone": "viewer-local",
|
||||||
|
"coloringMaxAge": "1y",
|
||||||
|
"colorNew": {
|
||||||
|
"r": 255,
|
||||||
|
"g": 150,
|
||||||
|
"b": 150
|
||||||
|
},
|
||||||
|
"colorOld": {
|
||||||
|
"r": 120,
|
||||||
|
"g": 160,
|
||||||
|
"b": 255
|
||||||
|
},
|
||||||
|
"textColorCss": "var(--text-muted)",
|
||||||
|
"ignoreWhitespace": false,
|
||||||
|
"gutterSpacingFallbackLength": 5,
|
||||||
|
"lastShownAuthorDisplay": "initials",
|
||||||
|
"lastShownDateTimeFormatOptions": "date"
|
||||||
|
}
|
||||||
|
}
|
||||||
452
.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
10
.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"author": "Vinzent",
|
||||||
|
"authorUrl": "https://github.com/Vinzent03",
|
||||||
|
"id": "obsidian-git",
|
||||||
|
"name": "Git",
|
||||||
|
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||||
|
"version": "2.38.2"
|
||||||
|
}
|
||||||
23
.obsidian/plugins/obsidian-git/obsidian_askpass.sh
vendored
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PROMPT="$1"
|
||||||
|
TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT"
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
rm -f "$TEMP_FILE" "$TEMP_FILE.response"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
echo "$PROMPT" > "$TEMP_FILE"
|
||||||
|
|
||||||
|
while [ ! -e "$TEMP_FILE.response" ]; do
|
||||||
|
if [ ! -e "$TEMP_FILE" ]; then
|
||||||
|
echo "Trigger file got removed: Abort" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
RESPONSE=$(cat "$TEMP_FILE.response")
|
||||||
|
|
||||||
|
echo "$RESPONSE"
|
||||||
710
.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
@@ -0,0 +1,710 @@
|
|||||||
|
@keyframes loading {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-signs-gutter {
|
||||||
|
.cm-gutterElement {
|
||||||
|
/* Needed to align the sign properly for different line heigts. Such as
|
||||||
|
* when having a heading or list item.
|
||||||
|
*/
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .button-border {
|
||||||
|
border: 2px solid var(--interactive-accent);
|
||||||
|
border-radius: var(--radius-s);
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .view-content {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-history-view"] .view-content {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading > svg {
|
||||||
|
animation: 2s linear infinite loading;
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-center {
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-textarea {
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.obsidian-git-center-button {
|
||||||
|
display: block;
|
||||||
|
margin: 20px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.mod-left {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.mod-right {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Limits the scrollbar to the view body */
|
||||||
|
.git-view {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/
|
||||||
|
.workspace-drawer .git-view .nav-buttons-container {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-tools {
|
||||||
|
display: flex;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
.git-tools .type {
|
||||||
|
padding-left: var(--size-2-1);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-tools .type[data-type="M"] {
|
||||||
|
color: orange;
|
||||||
|
}
|
||||||
|
.git-tools .type[data-type="D"] {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.git-tools .buttons {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.git-tools .buttons > * {
|
||||||
|
padding: 0 0;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"] .tree-item-self,
|
||||||
|
.workspace-leaf-content[data-type="git-history-view"] .tree-item-self {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspace-leaf-content[data-type="git-view"]
|
||||||
|
.tree-item-self:hover
|
||||||
|
.clickable-icon,
|
||||||
|
.workspace-leaf-content[data-type="git-history-view"]
|
||||||
|
.tree-item-self:hover
|
||||||
|
.clickable-icon {
|
||||||
|
color: var(--icon-color-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Highlight an item as active if it's diff is currently opened */
|
||||||
|
.is-active .git-tools .buttons > * {
|
||||||
|
color: var(--nav-item-color-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-author {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-date {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-ref {
|
||||||
|
color: var(--text-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====== diff2html ======
|
||||||
|
The following styles are adapted from the obsidian-version-history plugin by
|
||||||
|
@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss
|
||||||
|
which itself is adapted from the diff2html library with the following original license:
|
||||||
|
|
||||||
|
https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
|
||||||
|
|
||||||
|
Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
||||||
|
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||||
|
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
||||||
|
Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||||
|
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||||
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.theme-dark,
|
||||||
|
.theme-light {
|
||||||
|
--git-delete-bg: #ff475040;
|
||||||
|
--git-delete-hl: #96050a75;
|
||||||
|
--git-insert-bg: #68d36840;
|
||||||
|
--git-insert-hl: #23c02350;
|
||||||
|
--git-change-bg: #ffd55840;
|
||||||
|
--git-selected: #3572b0;
|
||||||
|
|
||||||
|
--git-delete: #c33;
|
||||||
|
--git-insert: #399839;
|
||||||
|
--git-change: #d0b44c;
|
||||||
|
--git-move: #3572b0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-diff {
|
||||||
|
.d2h-d-none {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.d2h-wrapper {
|
||||||
|
text-align: left;
|
||||||
|
border-radius: 0.25em;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.d2h-file-header.d2h-file-header {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
font-family:
|
||||||
|
Source Sans Pro,
|
||||||
|
Helvetica Neue,
|
||||||
|
Helvetica,
|
||||||
|
Arial,
|
||||||
|
sans-serif;
|
||||||
|
height: 35px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
.d2h-file-header,
|
||||||
|
.d2h-file-stats {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.d2h-file-header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.d2h-file-stats {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
.d2h-lines-added {
|
||||||
|
border: 1px solid var(--color-green);
|
||||||
|
border-radius: 5px 0 0 5px;
|
||||||
|
color: var(--color-green);
|
||||||
|
padding: 2px;
|
||||||
|
text-align: right;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-lines-deleted {
|
||||||
|
border: 1px solid var(--color-red);
|
||||||
|
border-radius: 0 5px 5px 0;
|
||||||
|
color: var(--color-red);
|
||||||
|
margin-left: 1px;
|
||||||
|
padding: 2px;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-file-name-wrapper {
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
font-size: 15px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-file-name {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
color: var(--text-normal);
|
||||||
|
font-size: var(--h5-size);
|
||||||
|
}
|
||||||
|
.d2h-file-wrapper {
|
||||||
|
border: 1px solid var(--background-secondary-alt);
|
||||||
|
border-radius: 3px;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
.d2h-file-collapse {
|
||||||
|
-webkit-box-pack: end;
|
||||||
|
-ms-flex-pack: end;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid var(--background-secondary-alt);
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
font-size: 12px;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 4px 8px;
|
||||||
|
}
|
||||||
|
.d2h-file-collapse.d2h-selected {
|
||||||
|
background-color: var(--git-selected);
|
||||||
|
}
|
||||||
|
.d2h-file-collapse-input {
|
||||||
|
margin: 0 4px 0 0;
|
||||||
|
}
|
||||||
|
.d2h-diff-table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
font-size: var(--code-size);
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-files-diff {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-file-diff {
|
||||||
|
/*
|
||||||
|
overflow-y: scroll;
|
||||||
|
*/
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: var(--font-text-size);
|
||||||
|
line-height: var(--line-height-normal);
|
||||||
|
}
|
||||||
|
.d2h-file-side-diff {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: -8px;
|
||||||
|
margin-right: -4px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
overflow-y: hidden;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.d2h-code-line {
|
||||||
|
padding-left: 6em;
|
||||||
|
padding-right: 1.5em;
|
||||||
|
}
|
||||||
|
.d2h-code-line,
|
||||||
|
.d2h-code-side-line {
|
||||||
|
display: inline-block;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.d2h-code-side-line {
|
||||||
|
/* needed to be changed */
|
||||||
|
padding-left: 0.5em;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
}
|
||||||
|
.d2h-code-line-ctn {
|
||||||
|
word-wrap: normal;
|
||||||
|
background: none;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-user-select: text;
|
||||||
|
-moz-user-select: text;
|
||||||
|
-ms-user-select: text;
|
||||||
|
user-select: text;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 100%;
|
||||||
|
/* only works for line-by-line */
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.d2h-code-line del,
|
||||||
|
.d2h-code-side-line del {
|
||||||
|
background-color: var(--git-delete-hl);
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
.d2h-code-line del,
|
||||||
|
.d2h-code-line ins,
|
||||||
|
.d2h-code-side-line del,
|
||||||
|
.d2h-code-side-line ins {
|
||||||
|
border-radius: 0.2em;
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: -1px;
|
||||||
|
text-decoration: none;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-code-line ins,
|
||||||
|
.d2h-code-side-line ins {
|
||||||
|
background-color: var(--git-insert-hl);
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.d2h-code-line-prefix {
|
||||||
|
word-wrap: normal;
|
||||||
|
background: none;
|
||||||
|
display: inline;
|
||||||
|
padding: 0;
|
||||||
|
white-space: pre;
|
||||||
|
}
|
||||||
|
.line-num1 {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.line-num1,
|
||||||
|
.line-num2 {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
/*
|
||||||
|
padding: 0 0.5em;
|
||||||
|
*/
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 2.5em;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.line-num2 {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.d2h-code-linenumber {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border: solid var(--background-modifier-border);
|
||||||
|
border-width: 0 1px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--text-faint);
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
text-align: right;
|
||||||
|
width: 5.5em;
|
||||||
|
}
|
||||||
|
.d2h-code-linenumber:after {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
.d2h-code-side-linenumber {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border: solid var(--background-modifier-border);
|
||||||
|
border-width: 0 1px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: var(--text-faint);
|
||||||
|
cursor: pointer;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 0.5em;
|
||||||
|
text-align: right;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 4em;
|
||||||
|
/* needed to be changed */
|
||||||
|
display: table-cell;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.d2h-code-side-linenumber:after {
|
||||||
|
content: "\200b";
|
||||||
|
}
|
||||||
|
.d2h-code-side-emptyplaceholder,
|
||||||
|
.d2h-emptyplaceholder {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border-color: var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
.d2h-code-line-prefix,
|
||||||
|
.d2h-code-linenumber,
|
||||||
|
.d2h-code-side-linenumber,
|
||||||
|
.d2h-emptyplaceholder {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.d2h-code-linenumber,
|
||||||
|
.d2h-code-side-linenumber {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
.d2h-del {
|
||||||
|
background-color: var(--git-delete-bg);
|
||||||
|
border-color: var(--git-delete-hl);
|
||||||
|
}
|
||||||
|
.d2h-ins {
|
||||||
|
background-color: var(--git-insert-bg);
|
||||||
|
border-color: var(--git-insert-hl);
|
||||||
|
}
|
||||||
|
.d2h-info {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
border-color: var(--background-modifier-border);
|
||||||
|
color: var(--text-faint);
|
||||||
|
}
|
||||||
|
.d2h-del,
|
||||||
|
.d2h-ins,
|
||||||
|
.d2h-file-diff .d2h-change {
|
||||||
|
color: var(--text-normal);
|
||||||
|
}
|
||||||
|
.d2h-file-diff .d2h-del.d2h-change {
|
||||||
|
background-color: var(--git-change-bg);
|
||||||
|
}
|
||||||
|
.d2h-file-diff .d2h-ins.d2h-change {
|
||||||
|
background-color: var(--git-insert-bg);
|
||||||
|
}
|
||||||
|
.d2h-file-list-wrapper {
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: default;
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.d2h-file-list-header {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.d2h-file-list-title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.d2h-file-list-line {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.d2h-file-list {
|
||||||
|
}
|
||||||
|
.d2h-file-list > li {
|
||||||
|
border-bottom: 1px solid var(--background-modifier-border);
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
.d2h-file-list > li:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.d2h-file-switch {
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.d2h-icon {
|
||||||
|
fill: currentColor;
|
||||||
|
margin-right: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.d2h-deleted {
|
||||||
|
color: var(--git-delete);
|
||||||
|
}
|
||||||
|
.d2h-added {
|
||||||
|
color: var(--git-insert);
|
||||||
|
}
|
||||||
|
.d2h-changed {
|
||||||
|
color: var(--git-change);
|
||||||
|
}
|
||||||
|
.d2h-moved {
|
||||||
|
color: var(--git-move);
|
||||||
|
}
|
||||||
|
.d2h-tag {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
font-size: 10px;
|
||||||
|
margin-left: 5px;
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
.d2h-deleted-tag {
|
||||||
|
border: 1px solid var(--git-delete);
|
||||||
|
}
|
||||||
|
.d2h-added-tag {
|
||||||
|
border: 1px solid var(--git-insert);
|
||||||
|
}
|
||||||
|
.d2h-changed-tag {
|
||||||
|
border: 1px solid var(--git-change);
|
||||||
|
}
|
||||||
|
.d2h-moved-tag {
|
||||||
|
border: 1px solid var(--git-move);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* needed for line-by-line*/
|
||||||
|
|
||||||
|
.d2h-diff-tbody {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ====================== Line Authoring Information ====================== */
|
||||||
|
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter {
|
||||||
|
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
|
||||||
|
border-width: 0px 2px 0.2px 2px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: var(--background-secondary);
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter > div,
|
||||||
|
.line-author-settings-preview {
|
||||||
|
/* delegate text color to settings */
|
||||||
|
color: var(--obs-git-gutter-text);
|
||||||
|
font-family: monospace;
|
||||||
|
height: 100%; /* ensure, that age-based background color occupies entire parent */
|
||||||
|
text-align: right;
|
||||||
|
padding: 0px 6px 0px 6px;
|
||||||
|
white-space: pre; /* Keep spaces and do not collapse them. */
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 800px) {
|
||||||
|
/* hide git blame gutter not to superpose text */
|
||||||
|
.cm-gutterElement.obs-git-blame-gutter {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-unified-diff-view,
|
||||||
|
.git-split-diff-view .cm-deletedLine .cm-changedText {
|
||||||
|
background-color: #ee443330;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-unified-diff-view,
|
||||||
|
.git-split-diff-view .cm-insertedLine .cm-changedText {
|
||||||
|
background-color: #22bb2230;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
|
||||||
|
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
|
||||||
|
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Override styling of Codemirror merge view "collapsed lines" indicator */
|
||||||
|
.git-split-diff-view .ͼ2 .cm-collapsedLines {
|
||||||
|
background: var(--interactive-normal);
|
||||||
|
border-radius: var(--radius-m);
|
||||||
|
color: var(--text-accent);
|
||||||
|
font-size: var(--font-small);
|
||||||
|
padding: var(--size-4-1) var(--size-4-1);
|
||||||
|
}
|
||||||
|
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
|
||||||
|
background: var(--interactive-hover);
|
||||||
|
color: var(--text-accent-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-signs-gutter {
|
||||||
|
.cm-gutterElement {
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker:hover {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-add {
|
||||||
|
background-color: var(--color-green);
|
||||||
|
justify-self: center;
|
||||||
|
height: inherit;
|
||||||
|
width: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-change {
|
||||||
|
background-color: var(--color-yellow);
|
||||||
|
justify-self: center;
|
||||||
|
height: inherit;
|
||||||
|
width: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-changedelete {
|
||||||
|
color: var(--color-yellow);
|
||||||
|
font-weight: var(--font-bold);
|
||||||
|
font-size: 1rem;
|
||||||
|
justify-self: center;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-delete {
|
||||||
|
background-color: var(--color-red);
|
||||||
|
height: 0.2rem;
|
||||||
|
width: 0.8rem;
|
||||||
|
align-self: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.git-topdelete {
|
||||||
|
background-color: var(--color-red);
|
||||||
|
height: 0.2rem;
|
||||||
|
width: 0.8rem;
|
||||||
|
align-self: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-change {
|
||||||
|
width: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-add {
|
||||||
|
width: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-delete {
|
||||||
|
height: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-topdelete {
|
||||||
|
height: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div:hover > .git-gutter-marker.git-changedelete {
|
||||||
|
font-weight: var(--font-bold);
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-gutter-marker.staged {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-diff {
|
||||||
|
.cm-merge-revert {
|
||||||
|
width: 4em;
|
||||||
|
}
|
||||||
|
/* Ensure that merge revert markers are positioned correctly */
|
||||||
|
.cm-merge-revert > * {
|
||||||
|
position: absolute;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Prevent shifting of the editor when git signs gutter is the only gutter present */
|
||||||
|
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
|
||||||
|
margin-inline-end: 0;
|
||||||
|
.git-signs-gutter {
|
||||||
|
margin-inline-start: -1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-changes-status-bar-colored {
|
||||||
|
.git-add {
|
||||||
|
color: var(--color-green);
|
||||||
|
}
|
||||||
|
.git-change {
|
||||||
|
color: var(--color-yellow);
|
||||||
|
}
|
||||||
|
.git-delete {
|
||||||
|
color: var(--color-red);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-changes-status-bar .git-add {
|
||||||
|
margin-right: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.git-changes-status-bar .git-change {
|
||||||
|
margin-right: 0.3em;
|
||||||
|
}
|
||||||
3418
.obsidian/plugins/obsidian-outliner/main.js
vendored
Normal file
10
.obsidian/plugins/obsidian-outliner/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-outliner",
|
||||||
|
"name": "Outliner",
|
||||||
|
"version": "4.9.0",
|
||||||
|
"minAppVersion": "1.8.7",
|
||||||
|
"description": "Work with your lists like in Workflowy or RoamResearch.",
|
||||||
|
"author": "Viacheslav Slinko",
|
||||||
|
"authorUrl": "https://github.com/vslinko",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
105
.obsidian/plugins/obsidian-outliner/styles.css
vendored
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
/* lists and bullets */
|
||||||
|
.outliner-plugin-better-lists .cm-s-obsidian .HyperMD-list-line {
|
||||||
|
/* padding-top: 0.4em; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-better-lists .cm-formatting-list-ul {
|
||||||
|
margin-right: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-better-lists .list-bullet::after {
|
||||||
|
width: 0.4em;
|
||||||
|
height: 0.4em;
|
||||||
|
background-color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* lines */
|
||||||
|
.outliner-plugin-list-lines-scroller {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: var(--file-margins);
|
||||||
|
padding-left: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-list-lines-content-container {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-list-line {
|
||||||
|
pointer-events: auto;
|
||||||
|
position: absolute;
|
||||||
|
width: 5px;
|
||||||
|
margin-left: 0.5ch;
|
||||||
|
margin-top: 1em;
|
||||||
|
z-index: 1;
|
||||||
|
cursor: pointer;
|
||||||
|
background: transparent;
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to right,
|
||||||
|
var(--text-faint) 1px,
|
||||||
|
transparent 1px
|
||||||
|
);
|
||||||
|
background-position-x: 2px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-better-bullets .outliner-plugin-list-line {
|
||||||
|
margin-top: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-source-view.mod-cm6.is-readable-line-width
|
||||||
|
.outliner-plugin-list-lines-content-container {
|
||||||
|
max-width: 700px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-list-line:hover {
|
||||||
|
background: var(--text-faint);
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-vertical-lines
|
||||||
|
.markdown-source-view.mod-cm6
|
||||||
|
.cm-hmd-list-indent
|
||||||
|
.cm-indent::before {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* drag-n-drop */
|
||||||
|
.outliner-plugin-dropping-line {
|
||||||
|
background-color: hsla(var(--interactive-accent-hsl), 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-dragging-line {
|
||||||
|
opacity: 0.5;
|
||||||
|
background-color: hsla(var(--interactive-accent-hsl), 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-drop-zone {
|
||||||
|
width: 300px;
|
||||||
|
height: 4px;
|
||||||
|
background: var(--color-accent);
|
||||||
|
z-index: 999;
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.outliner-plugin-drop-zone-padding {
|
||||||
|
position: absolute;
|
||||||
|
height: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.outliner-plugin-dnd:not(.outliner-plugin-dragging) .cm-formatting-list,
|
||||||
|
body.outliner-plugin-dnd:not(.outliner-plugin-dragging)
|
||||||
|
.cm-fold-indicator
|
||||||
|
.collapse-indicator {
|
||||||
|
cursor: grab !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body.outliner-plugin-dnd.outliner-plugin-dragging {
|
||||||
|
cursor: grabbing !important;
|
||||||
|
}
|
||||||
18
.obsidian/plugins/obsidian-smart-typography/data.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"curlyQuotes": true,
|
||||||
|
"emDash": true,
|
||||||
|
"ellipsis": true,
|
||||||
|
"arrows": true,
|
||||||
|
"comparisons": true,
|
||||||
|
"fractions": true,
|
||||||
|
"guillemets": false,
|
||||||
|
"skipEnDash": false,
|
||||||
|
"openSingle": "‘",
|
||||||
|
"closeSingle": "’",
|
||||||
|
"openDouble": "«",
|
||||||
|
"closeDouble": "»",
|
||||||
|
"openGuillemet": "«",
|
||||||
|
"closeGuillemet": "»",
|
||||||
|
"leftArrow": "←",
|
||||||
|
"rightArrow": "→"
|
||||||
|
}
|
||||||
1062
.obsidian/plugins/obsidian-smart-typography/main.js
vendored
Normal file
10
.obsidian/plugins/obsidian-smart-typography/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "obsidian-smart-typography",
|
||||||
|
"name": "Smart Typography",
|
||||||
|
"version": "1.0.18",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "Converts quotes to curly quotes, dashes to em dashes, and periods to ellipses",
|
||||||
|
"author": "mgmeyers",
|
||||||
|
"authorUrl": "https://github.com/mgmeyers/obsidian-smart-typography",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
12
.obsidian/plugins/obsidian-style-settings/data.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"typomagical-title@@font-title": "Bitter",
|
||||||
|
"typomagical-colour@@background-color-enable": true,
|
||||||
|
"typomagical-colour@@ss-background-color": "#24201D",
|
||||||
|
"typomagical-colour@@theme-variant": "obsidian",
|
||||||
|
"typomagical-text@@ordered-lists": "circled-ol",
|
||||||
|
"typomagical-text@@line-height-body": 1.45,
|
||||||
|
"typomagical-text@@body-weight": 400,
|
||||||
|
"typomagical-text@@bold-weight": 600,
|
||||||
|
"typomagical-text@@ss-hide-external-link-icon": false,
|
||||||
|
"typomagical-text@@ss-revert-highlight": true
|
||||||
|
}
|
||||||
165
.obsidian/plugins/obsidian-style-settings/main.js
vendored
Normal file
10
.obsidian/plugins/obsidian-style-settings/manifest.json
vendored
Normal 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
|
||||||
|
}
|
||||||
243
.obsidian/plugins/obsidian-style-settings/styles.css
vendored
Normal file
32
.obsidian/plugins/periodic-notes/data.json
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"showGettingStartedBanner": true,
|
||||||
|
"hasMigratedDailyNoteSettings": true,
|
||||||
|
"hasMigratedWeeklyNoteSettings": false,
|
||||||
|
"daily": {
|
||||||
|
"format": "LL",
|
||||||
|
"folder": "daily",
|
||||||
|
"template": "templates/daily notes template",
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"weekly": {
|
||||||
|
"format": "",
|
||||||
|
"template": "",
|
||||||
|
"folder": "",
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"monthly": {
|
||||||
|
"format": "",
|
||||||
|
"template": "",
|
||||||
|
"folder": ""
|
||||||
|
},
|
||||||
|
"quarterly": {
|
||||||
|
"format": "",
|
||||||
|
"template": "",
|
||||||
|
"folder": ""
|
||||||
|
},
|
||||||
|
"yearly": {
|
||||||
|
"format": "",
|
||||||
|
"template": "",
|
||||||
|
"folder": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
5561
.obsidian/plugins/periodic-notes/main.js
vendored
Normal file
10
.obsidian/plugins/periodic-notes/manifest.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "periodic-notes",
|
||||||
|
"name": "Periodic Notes",
|
||||||
|
"description": "Create/manage your daily, weekly, and monthly notes",
|
||||||
|
"version": "0.0.17",
|
||||||
|
"author": "Liam Cain",
|
||||||
|
"authorUrl": "https://github.com/liamcain/",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"minAppVersion": "0.10.11"
|
||||||
|
}
|
||||||
30
.obsidian/plugins/periodic-notes/styles.css
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
.periodic-modal {
|
||||||
|
min-width: 40vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-banner {
|
||||||
|
background-color: var(--background-primary-alt);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid var(--background-modifier-border);
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-top: 1em;
|
||||||
|
padding: 1.5em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-banner h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-banner h4 {
|
||||||
|
margin-bottom: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-error {
|
||||||
|
color: var(--text-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
input.has-error {
|
||||||
|
color: var(--text-error);
|
||||||
|
border-color: var(--text-error);
|
||||||
|
}
|
||||||
765
.obsidian/plugins/shortcuts-extender/main.js
vendored
Normal file
@@ -0,0 +1,765 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var obsidian = require('obsidian');
|
||||||
|
|
||||||
|
/*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
/* global Reflect, Promise */
|
||||||
|
|
||||||
|
var extendStatics = function(d, b) {
|
||||||
|
extendStatics = Object.setPrototypeOf ||
|
||||||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||||
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||||||
|
return extendStatics(d, b);
|
||||||
|
};
|
||||||
|
|
||||||
|
function __extends(d, b) {
|
||||||
|
if (typeof b !== "function" && b !== null)
|
||||||
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
||||||
|
extendStatics(d, b);
|
||||||
|
function __() { this.constructor = d; }
|
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||||
|
}
|
||||||
|
|
||||||
|
function __awaiter(thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function __generator(thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (_) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var shortcutsExtender = /** @class */ (function (_super) {
|
||||||
|
__extends(shortcutsExtender, _super);
|
||||||
|
function shortcutsExtender() {
|
||||||
|
return _super !== null && _super.apply(this, arguments) || this;
|
||||||
|
}
|
||||||
|
shortcutsExtender.prototype.onload = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
console.log(this.app);
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-exclamation-mark",
|
||||||
|
name: "Shortcut for ! symbol",
|
||||||
|
callback: function () { return _this.shortcutExclamationMark(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "1",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-At",
|
||||||
|
name: "Shortcut for @ symbol",
|
||||||
|
callback: function () { return _this.shortcutAt(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "2",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-hash",
|
||||||
|
name: "Shortcut for # symbol",
|
||||||
|
callback: function () { return _this.shortcutHash(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "3",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-dollar",
|
||||||
|
name: "Shortcut for $ symbol",
|
||||||
|
callback: function () { return _this.shortcutDollar(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "4",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-percent",
|
||||||
|
name: "Shortcut for % symbol",
|
||||||
|
callback: function () { return _this.shortcutPercent(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "5",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-circumflex",
|
||||||
|
name: "Shortcut for ^ symbol",
|
||||||
|
callback: function () { return _this.shortcutCircumflex(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "6",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-ampersand",
|
||||||
|
name: "Shortcut for & symbol",
|
||||||
|
callback: function () { return _this.shortcutAmpersand(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "7",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-less-than",
|
||||||
|
name: "Shortcut for < symbol",
|
||||||
|
callback: function () { return _this.shortcutLessThan(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "б",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: ",",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-greater-than",
|
||||||
|
name: "Shortcut for > symbol",
|
||||||
|
callback: function () { return _this.shortcutGreaterThan(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "ю",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: ".",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-left-square-bracket",
|
||||||
|
name: "Shortcut for [ symbol",
|
||||||
|
callback: function () { return _this.shortcutLeftSquareBracket(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "х",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "[",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-right-square-bracket",
|
||||||
|
name: "Shortcut for ] symbol",
|
||||||
|
callback: function () { return _this.shortcutRightSquareBracket(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "ъ",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "]",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-python-code",
|
||||||
|
name: "Shortcut for .py code fences",
|
||||||
|
callback: function () { return _this.shortcutPyCode(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "ё",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "~",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-code",
|
||||||
|
name: "Shortcut for code fences (`)",
|
||||||
|
callback: function () { return _this.shortcutCodeFences(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "ё",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "`",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-code-block",
|
||||||
|
name: "Shortcut for toggling a code block",
|
||||||
|
callback: function () { return _this.shortcutToggleCodeBlock(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "`",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-left-curly-bracket",
|
||||||
|
name: "Shortcut for { symbol",
|
||||||
|
callback: function () { return _this.shortcutLeftCurlyBracket(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "х",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "{",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-right-curly-bracket",
|
||||||
|
name: "Shortcut for } symbol",
|
||||||
|
callback: function () { return _this.shortcutRightCurlyBracket(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "ъ",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "}",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-Vertical-Line",
|
||||||
|
name: "Shortcut for | symbol",
|
||||||
|
callback: function () { return _this.shortcutVerticalLine(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "|",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
modifiers: ["Alt", "Shift"],
|
||||||
|
key: "\/",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "shortcut-list-items",
|
||||||
|
name: "Creating list item from text",
|
||||||
|
callback: function () { return _this.shortcutListItems(); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Alt"],
|
||||||
|
key: "-",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "heading-1",
|
||||||
|
name: "line into level 1 heading",
|
||||||
|
callback: function () { return _this.shortcutHeaderN(1); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "1",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "heading-2",
|
||||||
|
name: "line into level 2 heading",
|
||||||
|
callback: function () { return _this.shortcutHeaderN(2); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "2",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "heading-3",
|
||||||
|
name: "line into level 3 heading",
|
||||||
|
callback: function () { return _this.shortcutHeaderN(3); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "3",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "heading-4",
|
||||||
|
name: "line into level 4 heading",
|
||||||
|
callback: function () { return _this.shortcutHeaderN(4); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "4",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "heading-5",
|
||||||
|
name: "line into level 5 heading",
|
||||||
|
callback: function () { return _this.shortcutHeaderN(5); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "5",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "heading-6",
|
||||||
|
name: "line into level 6 heading",
|
||||||
|
callback: function () { return _this.shortcutHeaderN(6); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "6",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
this.addCommand({
|
||||||
|
id: "heading-0",
|
||||||
|
name: "clearing of text formatting",
|
||||||
|
callback: function () { return _this.shortcutHeaderN(0); },
|
||||||
|
hotkeys: [
|
||||||
|
{
|
||||||
|
modifiers: ["Ctrl"],
|
||||||
|
key: "0",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
return [2 /*return*/];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.getSelectedText = function (editor) {
|
||||||
|
//thanks to user "Argentina Ortega Sáinz" from the Obsidian community for this feature
|
||||||
|
//For a long time I tried to do without such an approach, which resulted in several bugs and the impossibility of fixing them with non-crutches
|
||||||
|
if (editor.somethingSelected()) {
|
||||||
|
var cursorStart = editor.getCursor('from');
|
||||||
|
var cursorEnd = editor.getCursor('to');
|
||||||
|
var content = editor.getRange({ line: cursorStart.line, ch: 0 }, { line: cursorEnd.line, ch: editor.getLine(cursorEnd.line).length });
|
||||||
|
return {
|
||||||
|
start: { line: cursorStart.line, ch: 0 },
|
||||||
|
end: {
|
||||||
|
line: cursorEnd.line,
|
||||||
|
ch: editor.getLine(cursorEnd.line).length,
|
||||||
|
},
|
||||||
|
content: content,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Toggle the todo in the line
|
||||||
|
var lineNr = editor.getCursor().line;
|
||||||
|
var contents = editor.getDoc().getLine(lineNr);
|
||||||
|
var cursorStart = {
|
||||||
|
line: lineNr,
|
||||||
|
ch: 0,
|
||||||
|
};
|
||||||
|
var cursorEnd = {
|
||||||
|
line: lineNr,
|
||||||
|
ch: contents.length,
|
||||||
|
};
|
||||||
|
var content = editor.getRange(cursorStart, cursorEnd);
|
||||||
|
return { start: cursorStart, end: cursorEnd, content: content };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutExclamationMark = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("!");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutAt = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("@");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutHash = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("#");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutDollar = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("$");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutPercent = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("%");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutCircumflex = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("^");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutAmpersand = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("&");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutLessThan = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var selectedText = editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
if (selectedText) {
|
||||||
|
editor.replaceSelection("<".concat(selectedText, ">"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
editor.replaceSelection("<");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutGreaterThan = function () {
|
||||||
|
var activeLeaf = this.app.workspace.activeLeaf;
|
||||||
|
var editor = activeLeaf.view.sourceMode.cmEditor;
|
||||||
|
var selectedText = this.getSelectedText(editor);
|
||||||
|
var resultText = "> " + selectedText.content.split('\n').join("\n> ");
|
||||||
|
editor.replaceRange(resultText, selectedText.start, selectedText.end);
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutLeftSquareBracket = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var selectedText = editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
if (selectedText) {
|
||||||
|
editor.replaceSelection("[[".concat(selectedText, "]]"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
editor.replaceSelection("[");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutRightSquareBracket = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("]");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutPyCode = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var selectedText = editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
if (selectedText) {
|
||||||
|
editor.replaceSelection("```py\n".concat(selectedText, "\n```"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
editor.replaceSelection("`");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutCodeFences = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var selectedText = editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
if (selectedText) {
|
||||||
|
editor.replaceSelection("`".concat(selectedText, "`"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
editor.replaceSelection("`");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutToggleCodeBlock = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var selectedText = editor.somethingSelected() ? editor.getSelection() : "";
|
||||||
|
var startCursor = editor.getCursor('from');
|
||||||
|
var firstLine = editor.getLine(startCursor.line);
|
||||||
|
var endCursor = editor.getCursor('to');
|
||||||
|
var lastLine = editor.getLine(endCursor.line);
|
||||||
|
// If the selections starts with ```, then we should remove the code block.
|
||||||
|
var isCodeBlock = firstLine.startsWith("```") && lastLine.endsWith("```")
|
||||||
|
&& selectedText.length >= 6;
|
||||||
|
if (isCodeBlock) {
|
||||||
|
// Position of first non-whitespace
|
||||||
|
var textStartPos = selectedText.search("\\s\\S") + 1;
|
||||||
|
if (textStartPos < 0) {
|
||||||
|
textStartPos = 3;
|
||||||
|
}
|
||||||
|
// Remove the code block formatting.
|
||||||
|
var endPos = selectedText.length - 3;
|
||||||
|
var innerText = selectedText.substring(textStartPos, endPos);
|
||||||
|
editor.replaceSelection(innerText);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
editor.replaceSelection("```\n".concat(selectedText, "\n```"));
|
||||||
|
startCursor.ch = 3; // Move cursor after ```
|
||||||
|
editor.setCursor(startCursor);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutRightCurlyBracket = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("}");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutLeftCurlyBracket = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var selectedText = editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
if (selectedText) {
|
||||||
|
editor.replaceSelection("{".concat(selectedText, "}"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
editor.replaceSelection("{");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutVerticalLine = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
editor.somethingSelected()
|
||||||
|
? editor.getSelection()
|
||||||
|
: false;
|
||||||
|
editor.replaceSelection("|");
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutListItems = function () {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var selectedText = this.getSelectedText(editor);
|
||||||
|
var resultText = "- " + selectedText.content.split('\n').join("\n- ");
|
||||||
|
var resultTextCheck = resultText;
|
||||||
|
while (resultTextCheck.search("- - ") >= 0) {
|
||||||
|
resultTextCheck = resultTextCheck.replace("- - ", " - ");
|
||||||
|
}
|
||||||
|
while (resultTextCheck.search("- ") >= 0) {
|
||||||
|
resultTextCheck = resultTextCheck.replace("- ", " - ");
|
||||||
|
}
|
||||||
|
while (resultTextCheck.search("- - ") >= 0) {
|
||||||
|
resultTextCheck = resultTextCheck.replace("- - ", " - ");
|
||||||
|
}
|
||||||
|
editor.replaceRange(resultTextCheck, selectedText.start, selectedText.end);
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.removeFormatSymbolsFromStr = function (line) {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Remove symbols we don't want at the beginning of the line.
|
||||||
|
while (line.substring(0, 2) == "##") {
|
||||||
|
line = line.replace("##", "#");
|
||||||
|
}
|
||||||
|
while (line.substring(0, 2) == "# ") {
|
||||||
|
line = line.substr(2);
|
||||||
|
}
|
||||||
|
while (line.substring(0, 2) == "> ") {
|
||||||
|
line = line.substr(2);
|
||||||
|
}
|
||||||
|
while (line.substring(0, 2) == " ") {
|
||||||
|
line = line.replace(" ", " ");
|
||||||
|
}
|
||||||
|
while (line.substring(0, 3) == " - ") {
|
||||||
|
line = line.substr(3);
|
||||||
|
}
|
||||||
|
while (line.substring(0, 2) == "- ") {
|
||||||
|
line = line.substr(2);
|
||||||
|
}
|
||||||
|
var re_digits = /^\d\.\s/;
|
||||||
|
line = line.replace(re_digits, "");
|
||||||
|
return line;
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.addHeadingToStr = function (line, headingLevel) {
|
||||||
|
var space = " ";
|
||||||
|
if (headingLevel == 0) {
|
||||||
|
space = "";
|
||||||
|
}
|
||||||
|
return "#".repeat(headingLevel) + space + line;
|
||||||
|
};
|
||||||
|
shortcutsExtender.prototype.shortcutHeaderN = function (headingLevel) {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Apply heading level to each line.
|
||||||
|
var selections = editor.listSelections();
|
||||||
|
for (var i = 0; i < selections.length; i++) {
|
||||||
|
this.shortcutHeaderNSingleSelection(headingLevel, selections[i]);
|
||||||
|
}
|
||||||
|
// setSelections is called to preserve the location of each cursor relative
|
||||||
|
// to the end of the line.
|
||||||
|
editor.setSelections(selections);
|
||||||
|
};
|
||||||
|
// shortcutHeaderNSingleSelection sets all lines in the selection to the
|
||||||
|
// desired heading level. selection is also updated to maintain the cursor
|
||||||
|
// position relative to the end of the line.
|
||||||
|
shortcutsExtender.prototype.shortcutHeaderNSingleSelection = function (headingLevel, selection) {
|
||||||
|
var _a;
|
||||||
|
var editor = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
|
||||||
|
if (editor == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Save anchor/head distance from end.
|
||||||
|
var anchorDistFromEnd = editor.getLine(selection.anchor.line).length - selection.anchor.ch;
|
||||||
|
var headDistFromEnd = editor.getLine(selection.head.line).length - selection.head.ch;
|
||||||
|
// Get from and to line numbers.
|
||||||
|
var fromLine = selection.anchor.line;
|
||||||
|
var toLine = selection.head.line;
|
||||||
|
var increment = fromLine <= toLine ? 1 : -1;
|
||||||
|
// For each line in the selection, set the heading level.
|
||||||
|
var lineNum = fromLine;
|
||||||
|
while (true) {
|
||||||
|
// Update the current line.
|
||||||
|
var line = editor.getLine(lineNum);
|
||||||
|
line = this.removeFormatSymbolsFromStr(line);
|
||||||
|
line = this.addHeadingToStr(line, headingLevel);
|
||||||
|
editor.setLine(lineNum, line);
|
||||||
|
// Move to next line if not done.
|
||||||
|
if (lineNum == toLine) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lineNum += increment;
|
||||||
|
}
|
||||||
|
// Preserve anchor/head locations relative to line end.
|
||||||
|
selection.anchor.ch = editor.getLine(selection.anchor.line).length - anchorDistFromEnd;
|
||||||
|
selection.head.ch = editor.getLine(selection.head.line).length - headDistFromEnd;
|
||||||
|
};
|
||||||
|
return shortcutsExtender;
|
||||||
|
}(obsidian.Plugin));
|
||||||
|
|
||||||
|
module.exports = shortcutsExtender;
|
||||||
|
|
||||||
|
|
||||||
|
/* nosourcemap */
|
||||||
8
.obsidian/plugins/shortcuts-extender/manifest.json
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"id": "shortcuts-extender",
|
||||||
|
"name": "Shortcuts extender",
|
||||||
|
"description": "Use shortcuts for text formatting or input special symbols without language switching",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"js": "main.js",
|
||||||
|
"version": "2.2.0"
|
||||||
|
}
|
||||||
42
.obsidian/plugins/templater-obsidian/data.json
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"command_timeout": 5,
|
||||||
|
"templates_folder": "templates/templater",
|
||||||
|
"templates_pairs": [
|
||||||
|
[
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"trigger_on_file_creation": true,
|
||||||
|
"auto_jump_to_cursor": true,
|
||||||
|
"enable_system_commands": false,
|
||||||
|
"shell_path": "",
|
||||||
|
"user_scripts_folder": "",
|
||||||
|
"enable_folder_templates": false,
|
||||||
|
"folder_templates": [
|
||||||
|
{
|
||||||
|
"folder": "",
|
||||||
|
"template": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"enable_file_templates": true,
|
||||||
|
"file_templates": [
|
||||||
|
{
|
||||||
|
"regex": "^Манифест\\.\\s.+$",
|
||||||
|
"template": "templates/templater/Манифест template.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"regex": "^.+\\.\\sЛабораторная\\sработа.+$",
|
||||||
|
"template": "templates/templater/Лабораторная работа template.md"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"syntax_highlighting": true,
|
||||||
|
"syntax_highlighting_mobile": false,
|
||||||
|
"enabled_templates_hotkeys": [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"startup_templates": [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"intellisense_render": 1
|
||||||
|
}
|
||||||
45
.obsidian/plugins/templater-obsidian/main.js
vendored
Normal file
11
.obsidian/plugins/templater-obsidian/manifest.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"id": "templater-obsidian",
|
||||||
|
"name": "Templater",
|
||||||
|
"version": "2.16.2",
|
||||||
|
"description": "Create and use templates",
|
||||||
|
"minAppVersion": "1.5.0",
|
||||||
|
"author": "SilentVoid",
|
||||||
|
"authorUrl": "https://github.com/SilentVoid13",
|
||||||
|
"helpUrl": "https://silentvoid13.github.io/Templater/",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
226
.obsidian/plugins/templater-obsidian/styles.css
vendored
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
.templater_search {
|
||||||
|
width: calc(100% - 20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_div {
|
||||||
|
border-top: 1px solid var(--background-modifier-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_div > .setting-item {
|
||||||
|
border-top: none !important;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_div > .setting-item > .setting-item-control {
|
||||||
|
justify-content: space-around;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_div
|
||||||
|
> .setting-item
|
||||||
|
> .setting-item-control
|
||||||
|
> .setting-editor-extra-setting-button {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_donating {
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_title {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 5px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_template {
|
||||||
|
align-self: center;
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_cmd {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater_div2 > .setting-item {
|
||||||
|
align-content: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater-prompt-div,
|
||||||
|
.templater-multisuggester-div {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater-prompt-form {
|
||||||
|
display: flex;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater-prompt-input,
|
||||||
|
.templater-multisuggester-input {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater-button-div {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea.templater-prompt-input {
|
||||||
|
height: 10rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea.templater-prompt-input:focus {
|
||||||
|
border-color: var(--interactive-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.templater-multisuggester-list {
|
||||||
|
margin: 1.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .templater-command-bg {
|
||||||
|
left: 0px;
|
||||||
|
right: 0px;
|
||||||
|
background-color: var(--background-primary-alt);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command {
|
||||||
|
font-size: 0.85em;
|
||||||
|
font-family: var(--font-monospace);
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .templater-inline .cm-templater-command {
|
||||||
|
background-color: var(--background-primary-alt);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-templater-opening-tag {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-templater-closing-tag {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-templater-interpolation-tag {
|
||||||
|
color: var(--code-property, #008bff);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-templater-execution-tag {
|
||||||
|
color: var(--code-function, #c0d700);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-keyword {
|
||||||
|
color: var(--code-keyword, #00a7aa);
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-atom {
|
||||||
|
color: var(--code-normal, #f39b35);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-value,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-number,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-type {
|
||||||
|
color: var(--code-value, #a06fca);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-def,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-type.cm-def {
|
||||||
|
color: var(--code-normal, var(--text-normal));
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-property,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-property.cm-def,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-attribute {
|
||||||
|
color: var(--code-function, #98e342);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-variable,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-variable-2,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-variable-3,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-meta {
|
||||||
|
color: var(--code-property, #d4d4d4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-callee,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-operator,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-qualifier,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-builtin {
|
||||||
|
color: var(--code-operator, #fc4384);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-tag {
|
||||||
|
color: var(--code-tag, #fc4384);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-comment,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-comment.cm-tag,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute {
|
||||||
|
color: var(--code-comment, #696d70);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-string,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-string-2 {
|
||||||
|
color: var(--code-string, #e6db74);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-header,
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-hr {
|
||||||
|
color: var(--code-keyword, #da7dae);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-link {
|
||||||
|
color: var(--code-normal, #696d70);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-s-obsidian .cm-templater-command.cm-error {
|
||||||
|
border-bottom: 1px solid #c42412;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror-hints {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 10;
|
||||||
|
overflow: hidden;
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
-moz-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid silver;
|
||||||
|
|
||||||
|
background: white;
|
||||||
|
font-size: 90%;
|
||||||
|
font-family: monospace;
|
||||||
|
|
||||||
|
max-height: 20em;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.CodeMirror-hint {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 4px;
|
||||||
|
border-radius: 2px;
|
||||||
|
white-space: pre;
|
||||||
|
color: black;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.CodeMirror-hint-active {
|
||||||
|
background: #08f;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
39
.obsidian/snippets/nav-callout.css
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* 1. Скрываем стандартный заголовок и иконку callout-а */
|
||||||
|
.callout[data-callout="nav"] .callout-title {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2. Настраиваем контейнер (тело callout-а) */
|
||||||
|
.callout[data-callout="nav"] {
|
||||||
|
background-color: transparent; /* Прозрачный фон */
|
||||||
|
border: none; /* Убираем рамки */
|
||||||
|
box-shadow: none;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 40px; /* Отступ сверху */
|
||||||
|
border-top: 1px solid var(--background-modifier-border); /* Линия разделитель */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 3. Выстраиваем ссылки в одну строку и разносим по краям */
|
||||||
|
.callout[data-callout="nav"] .callout-content > p {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between; /* Левый элемент влево, правый вправо */
|
||||||
|
align-items: center;
|
||||||
|
margin: 10px 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 4. Стилизация самих кнопок-ссылок */
|
||||||
|
.callout[data-callout="nav"] a.internal-link {
|
||||||
|
padding: 8px 16px;
|
||||||
|
background-color: var(--interactive-accent); /* Цвет акцента */
|
||||||
|
color: var(--text-on-accent);
|
||||||
|
border-radius: 20px;
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 0.9em;
|
||||||
|
transition: transform 0.2s, opacity 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.callout[data-callout="nav"] a.internal-link:hover {
|
||||||
|
opacity: 0.9;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
33
.obsidian/snippets/navigation.css
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/* Контейнер для навигации */
|
||||||
|
.lecture-nav {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between; /* Распределяет кнопки по краям */
|
||||||
|
margin-top: 50px; /* Отступ сверху от конспекта */
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid var(--background-modifier-border); /* Линия-разделитель */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Стиль для ссылок внутри контейнера */
|
||||||
|
.lecture-nav a.internal-link {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 8px 16px;
|
||||||
|
background-color: var(--interactive-accent); /* Цвет акцента вашей темы */
|
||||||
|
color: var(--text-on-accent);
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 6px; /* Закругление углов */
|
||||||
|
font-size: 0.9em;
|
||||||
|
transition: transform 0.1s ease, background-color 0.2s;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Эффект при наведении */
|
||||||
|
.lecture-nav a.internal-link:hover {
|
||||||
|
background-color: var(--interactive-accent-hover);
|
||||||
|
transform: translateY(-2px); /* Легкое поднятие кнопки */
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Если есть только кнопка "Следующий" (чтобы она ушла вправо) */
|
||||||
|
.lecture-nav .nav-next-only {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
7
.obsidian/themes/Typomagical/manifest.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "Typomagical",
|
||||||
|
"version": "3.2.3",
|
||||||
|
"minAppVersion": "1.0.0",
|
||||||
|
"author": "Hung-Su",
|
||||||
|
"authorUrl": "https://github.com/hungsu/"
|
||||||
|
}
|
||||||
2237
.obsidian/themes/Typomagical/theme.css
vendored
Normal file
181
.obsidian/workspace-mobile.sync-conflict-20251208-092732-3A6HG76.json
vendored
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "bcbeee9f966e1dda",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "c43f9d3a6b88ff29",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "aec92192e63f8794",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "4e8b256cc08ac09c",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "164d034373918361",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Файловый менеджер"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e1c3e0737391b1ef",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5f3db4c9c16e1f85",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fec9e2aa845db7bf",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "09c6f564dbadee43",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "7ee49c01f21bfe76",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "ba1373504b3341fc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b06375347c2765e7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a29be556bca5b80d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"switcher:Меню быстрого перехода": false,
|
||||||
|
"graph:Граф": false,
|
||||||
|
"canvas:Создать новый холст": false,
|
||||||
|
"daily-notes:Сегодняшняя заметка": false,
|
||||||
|
"templates:Вставить шаблон": false,
|
||||||
|
"command-palette:Открыть палитру команд": false,
|
||||||
|
"bases:Создать новую базу": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "aec92192e63f8794",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"Физика. Лабораторные работы.md",
|
||||||
|
"Физика. Лабораторная работа 3.11.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
181
.obsidian/workspace-mobile.sync-conflict-20251208-092733-3A6HG76.json
vendored
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "bcbeee9f966e1dda",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "c43f9d3a6b88ff29",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "aec92192e63f8794",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "4e8b256cc08ac09c",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "164d034373918361",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Файловый менеджер"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e1c3e0737391b1ef",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5f3db4c9c16e1f85",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fec9e2aa845db7bf",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "09c6f564dbadee43",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "7ee49c01f21bfe76",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "ba1373504b3341fc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b06375347c2765e7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a29be556bca5b80d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"switcher:Меню быстрого перехода": false,
|
||||||
|
"graph:Граф": false,
|
||||||
|
"canvas:Создать новый холст": false,
|
||||||
|
"daily-notes:Сегодняшняя заметка": false,
|
||||||
|
"templates:Вставить шаблон": false,
|
||||||
|
"command-palette:Открыть палитру команд": false,
|
||||||
|
"bases:Создать новую базу": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "aec92192e63f8794",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"Физика. Лабораторные работы.md",
|
||||||
|
"Физика. Лабораторная работа 3.11.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
181
.obsidian/workspace-mobile.sync-conflict-20251208-092735-3A6HG76.json
vendored
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "bcbeee9f966e1dda",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "c43f9d3a6b88ff29",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "aec92192e63f8794",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "4e8b256cc08ac09c",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "164d034373918361",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Файловый менеджер"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e1c3e0737391b1ef",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5f3db4c9c16e1f85",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fec9e2aa845db7bf",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "09c6f564dbadee43",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "7ee49c01f21bfe76",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "ba1373504b3341fc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b06375347c2765e7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a29be556bca5b80d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"switcher:Меню быстрого перехода": false,
|
||||||
|
"graph:Граф": false,
|
||||||
|
"canvas:Создать новый холст": false,
|
||||||
|
"daily-notes:Сегодняшняя заметка": false,
|
||||||
|
"templates:Вставить шаблон": false,
|
||||||
|
"command-palette:Открыть палитру команд": false,
|
||||||
|
"bases:Создать новую базу": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "aec92192e63f8794",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"Физика. Лабораторные работы.md",
|
||||||
|
"Физика. Лабораторная работа 3.11.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
230
.obsidian/workspace-mobile.sync-conflict-20251217-111153-R3OSDWP.json
vendored
Normal file
@@ -0,0 +1,230 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "bcbeee9f966e1dda",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "c43f9d3a6b88ff29",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "aec92192e63f8794",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №2.md",
|
||||||
|
"mode": "preview",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Электротехника. Лабораторная работа №2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3be6ff81cd7279eb",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №1.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Электротехника. Лабораторная работа №1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a1e164297c428853",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №3.md",
|
||||||
|
"mode": "preview",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Электротехника. Лабораторная работа №3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "35e68a1ed8ce8c4e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №6.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Электротехника. Лабораторная работа №6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "4e8b256cc08ac09c",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "164d034373918361",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e1c3e0737391b1ef",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5f3db4c9c16e1f85",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fec9e2aa845db7bf",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "09c6f564dbadee43",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "7ee49c01f21bfe76",
|
||||||
|
"type": "mobile-drawer",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "ba1373504b3341fc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b06375347c2765e7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a29be556bca5b80d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 0
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "3be6ff81cd7279eb",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"Физика. Лабораторные работы.md",
|
||||||
|
"Физика. Лабораторная работа 3.21.md",
|
||||||
|
"Физика. Лабораторная работа 3.15.md",
|
||||||
|
"Физика. Лабораторная работа 3.11.md",
|
||||||
|
"files/Элтех ЛР1.docx",
|
||||||
|
"files/Элтех ЛР1.pages"
|
||||||
|
]
|
||||||
|
}
|
||||||
267
.obsidian/workspace.sync-conflict-20260101-194047-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a28b262c70eb7403",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "a28b262c70eb7403",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"files/эл66.docx",
|
||||||
|
"files/~$тех ЛР3.docx",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"files/~syncthing~Элтех ЛР2.pages.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №1.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №3.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №2.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №6.md.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР1.pages.tmp",
|
||||||
|
"~syncthing~.DS_Store.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР2.docx.tmp",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"daily/November 22, 2025.md",
|
||||||
|
"daily/November 29, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"daily/November 28, 2025.md",
|
||||||
|
"daily/December 1, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
267
.obsidian/workspace.sync-conflict-20260101-194048-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a28b262c70eb7403",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "a28b262c70eb7403",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"files/эл66.docx",
|
||||||
|
"files/~$тех ЛР3.docx",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"files/~syncthing~Элтех ЛР2.pages.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №1.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №3.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №2.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №6.md.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР1.pages.tmp",
|
||||||
|
"~syncthing~.DS_Store.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР2.docx.tmp",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"daily/November 22, 2025.md",
|
||||||
|
"daily/November 29, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"daily/November 28, 2025.md",
|
||||||
|
"daily/December 1, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
267
.obsidian/workspace.sync-conflict-20260101-194108-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a28b262c70eb7403",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "a28b262c70eb7403",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"files/эл66.docx",
|
||||||
|
"files/~$тех ЛР3.docx",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"files/~syncthing~Элтех ЛР2.pages.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №1.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №3.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №2.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №6.md.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР1.pages.tmp",
|
||||||
|
"~syncthing~.DS_Store.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР2.docx.tmp",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"daily/November 22, 2025.md",
|
||||||
|
"daily/November 29, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"daily/November 28, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
267
.obsidian/workspace.sync-conflict-20260101-194138-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a28b262c70eb7403",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "a28b262c70eb7403",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"files/эл66.docx",
|
||||||
|
"files/~$тех ЛР3.docx",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"files/~syncthing~Элтех ЛР2.pages.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №1.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №3.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №2.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №6.md.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР1.pages.tmp",
|
||||||
|
"~syncthing~.DS_Store.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР2.docx.tmp",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"daily/November 22, 2025.md",
|
||||||
|
"daily/November 29, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
295
.obsidian/workspace.sync-conflict-20260101-201911-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a28b262c70eb7403",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2aeaa79628885601",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Объектно-ориентированное программирование. Экзамен"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "252ddc59d56595e0",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Математическая логика и теория алгоритмов. Экзамен"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Объектно-ориентированное программирование. Экзамен.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Объектно-ориентированное программирование. Экзамен"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "2aeaa79628885601",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"files/эл66.docx",
|
||||||
|
"files/~$тех ЛР3.docx",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"files/~syncthing~Элтех ЛР2.pages.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №1.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №3.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №2.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №6.md.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР1.pages.tmp",
|
||||||
|
"~syncthing~.DS_Store.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР2.docx.tmp",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"daily/November 22, 2025.md",
|
||||||
|
"daily/November 29, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
295
.obsidian/workspace.sync-conflict-20260101-201912-ZY4M5BQ.json
vendored
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a28b262c70eb7403",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Сессия. Зима 2026.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Сессия. Зима 2026"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2aeaa79628885601",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Объектно-ориентированное программирование. Экзамен"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "252ddc59d56595e0",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Математическая логика и теория алгоритмов. Экзамен"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Объектно-ориентированное программирование. Экзамен.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Объектно-ориентированное программирование. Экзамен"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "2aeaa79628885601",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"files/эл66.docx",
|
||||||
|
"files/~$тех ЛР3.docx",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"files/~syncthing~Элтех ЛР2.pages.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №1.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №3.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №2.md.tmp",
|
||||||
|
"~syncthing~Электротехника. Лабораторная работа №6.md.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР1.pages.tmp",
|
||||||
|
"~syncthing~.DS_Store.tmp",
|
||||||
|
"files/~syncthing~Элтех ЛР2.docx.tmp",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"daily/November 22, 2025.md",
|
||||||
|
"daily/November 29, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
251
.obsidian/workspace.sync-conflict-20260101-202039-3T7RDAK.json
vendored
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №6.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Электротехника. Лабораторная работа №6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "8ac987dd44b9ac68",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"~syncthing~Объектно-ориентированное программирование. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Математическая логика и теория алгоритмов. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Сессия. Зима 2026.md.tmp",
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"~syncthing~Физика. Экзамен.md.tmp",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"~syncthing~Задачи.md.tmp",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"~syncthing~Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md.tmp",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"~syncthing~Интернет технологии. Тест.md.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225042139.png.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225035254.png.tmp",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"~syncthing~Элтех. Зачет.md.tmp",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторная работа №4.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
251
.obsidian/workspace.sync-conflict-20260101-202041-3T7RDAK.json
vendored
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №6.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Электротехника. Лабораторная работа №6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "8ac987dd44b9ac68",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"~syncthing~Объектно-ориентированное программирование. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Математическая логика и теория алгоритмов. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Сессия. Зима 2026.md.tmp",
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"~syncthing~Физика. Экзамен.md.tmp",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"~syncthing~Задачи.md.tmp",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"~syncthing~Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md.tmp",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"~syncthing~Интернет технологии. Тест.md.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225042139.png.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225035254.png.tmp",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"~syncthing~Элтех. Зачет.md.tmp",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторная работа №4.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
251
.obsidian/workspace.sync-conflict-20260101-202112-3T7RDAK.json
vendored
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №6.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Электротехника. Лабораторная работа №6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "8ac987dd44b9ac68",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"~syncthing~Физика. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Объектно-ориентированное программирование. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Математическая логика и теория алгоритмов. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Сессия. Зима 2026.md.tmp",
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"~syncthing~Задачи.md.tmp",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"~syncthing~Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md.tmp",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"~syncthing~Интернет технологии. Тест.md.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225042139.png.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225035254.png.tmp",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"~syncthing~Элтех. Зачет.md.tmp",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторная работа №4.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"Задачи.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
269
.obsidian/workspace.sync-conflict-20260103-045421-3T7RDAK.json
vendored
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "f198c82ac90393bb",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "canvas",
|
||||||
|
"state": {
|
||||||
|
"file": "Untitled.canvas",
|
||||||
|
"viewState": {
|
||||||
|
"x": 4.188058936452649,
|
||||||
|
"y": 567.2392747696692,
|
||||||
|
"zoom": -0.7469967063620992
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"icon": "lucide-layout-dashboard",
|
||||||
|
"title": "Untitled"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №6.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Электротехника. Лабораторная работа №6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "f198c82ac90393bb",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Задачи.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"~syncthing~Физика. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Сессия. Зима 2026.md.tmp",
|
||||||
|
"~syncthing~Объектно-ориентированное программирование. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Математическая логика и теория алгоритмов. Экзамен.md.tmp",
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"~syncthing~Задачи.md.tmp",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"~syncthing~Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md.tmp",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"~syncthing~Интернет технологии. Тест.md.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225042139.png.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225035254.png.tmp",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"~syncthing~Элтех. Зачет.md.tmp",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторная работа №4.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
269
.obsidian/workspace.sync-conflict-20260103-045434-3T7RDAK.json
vendored
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "d99d69299454b7f8",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "99329cf50578d61e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "8ac987dd44b9ac68",
|
||||||
|
"type": "leaf",
|
||||||
|
"pinned": true,
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "Задачи.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"pinned": true,
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Задачи"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "f198c82ac90393bb",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "canvas",
|
||||||
|
"state": {
|
||||||
|
"file": "Untitled.canvas",
|
||||||
|
"viewState": {
|
||||||
|
"x": 4.188058936452649,
|
||||||
|
"y": 567.2392747696692,
|
||||||
|
"zoom": -0.7469967063620992
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"icon": "lucide-layout-dashboard",
|
||||||
|
"title": "Untitled"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentTab": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "a394d8d5faedc0ad",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "a32d45191c43a1fb",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "2d8956973ef9cbf7",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8de11ffd45857131",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "78d027ef9a2eb17e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "82d480c11ca604e6",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "670601ab6c22056e",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e939d87586bc880f",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-properties",
|
||||||
|
"state": {
|
||||||
|
"file": "Электротехника. Лабораторная работа №6.md"
|
||||||
|
},
|
||||||
|
"icon": "lucide-info",
|
||||||
|
"title": "File properties for Электротехника. Лабораторная работа №6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2dfe50655e07f63d",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fcc33379ce30082e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4983c29e56d6ffdc",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3347891682ba6063",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d6c6f2b290cf63f4",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "Физика. Лабораторные работы.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of Физика. Лабораторные работы"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"bases:Create new base": false,
|
||||||
|
"templater-obsidian:Templater": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "f198c82ac90393bb",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"Задачи.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"Шади Морг-Дуг.md",
|
||||||
|
"Сессия. Зима 2026.sync-conflict-20260101-193138-3T7RDAK.md",
|
||||||
|
"Сессия. Зима 2026.md",
|
||||||
|
"~syncthing~Физика. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Сессия. Зима 2026.md.tmp",
|
||||||
|
"~syncthing~Объектно-ориентированное программирование. Экзамен.md.tmp",
|
||||||
|
"~syncthing~Математическая логика и теория алгоритмов. Экзамен.md.tmp",
|
||||||
|
"Физика. Экзамен.md",
|
||||||
|
"Объектно-ориентированное программирование. Экзамен.md",
|
||||||
|
"Математическая логика и теория алгоритмов. Экзамен.md",
|
||||||
|
"~syncthing~Задачи.md.tmp",
|
||||||
|
"Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md",
|
||||||
|
"~syncthing~Задачи.sync-conflict-20260101-192700-ZY4M5BQ.md.tmp",
|
||||||
|
"files/Pasted image 20251225042139.png",
|
||||||
|
"Интернет технологии. Тест.md",
|
||||||
|
"files/Pasted image 20251225035254.png",
|
||||||
|
"Элтех. Зачет.md",
|
||||||
|
"files/Pasted image 20251228223919.png",
|
||||||
|
"~syncthing~Интернет технологии. Тест.md.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225042139.png.tmp",
|
||||||
|
"files/~syncthing~Pasted image 20251225035254.png.tmp",
|
||||||
|
"Книги для бабушки.md",
|
||||||
|
"~syncthing~Элтех. Зачет.md.tmp",
|
||||||
|
"Электротехника. Лабораторная работа №3.md",
|
||||||
|
"Электротехника. Лабораторная работа №6.md",
|
||||||
|
"Электротехника. Лабораторная работа №1.md",
|
||||||
|
"Электротехника. Лабораторная работа №4.md",
|
||||||
|
"Электротехника. Лабораторная работа №2.md",
|
||||||
|
"Электротехника. Лабораторные работы.md",
|
||||||
|
"daily/December 20, 2025.md",
|
||||||
|
"Электротехника. Лабораторная работа №3.sync-conflict-20251217-111153-3T7RDAK.md",
|
||||||
|
"daily/November 21, 2025.md",
|
||||||
|
"daily/November 30, 2025.md",
|
||||||
|
"daily/December 4, 2025.md",
|
||||||
|
"Untitled.canvas",
|
||||||
|
"daily/December 2, 2025.md",
|
||||||
|
"daily/December 3, 2025.md",
|
||||||
|
"daily/November 23, 2025.md",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №2 стр. 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 3.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 2.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №4 стр 1.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 5.jpg",
|
||||||
|
"files/Электротехника. Лабораторная работа №6. стр. 4.jpg"
|
||||||
|
]
|
||||||
|
}
|
||||||
5
.stfolder/syncthing-folder-3ad68d.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# This directory is a Syncthing folder marker.
|
||||||
|
# Do not delete.
|
||||||
|
|
||||||
|
folderID: 54p5e-pcnbh
|
||||||
|
created: 2025-11-22T01:40:28+03:00
|
||||||
20
4 семестр. Универ.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- универ
|
||||||
|
---
|
||||||
|
# Предметы
|
||||||
|
1. Операционные системы
|
||||||
|
2. [[Базы данных. Универ|Базы данных]]
|
||||||
|
3. Теория вероятностей и математическая статистика (ТеорВер)
|
||||||
|
4. Интернет-вещей (IoT)
|
||||||
|
5. Правоведение
|
||||||
|
6. Операционные среды больших систем (ОСБС)
|
||||||
|
7. Электротехника, электроника и схемотехника
|
||||||
|
8. Теория языков программирования и методы трансляции
|
||||||
|
9. Физическая культура и спорт
|
||||||
|
# События
|
||||||
|
- [x] У316. 3 марта в 13:20 — Встреча с зам.декана по задолженностям, **явка строго обязательна**
|
||||||
|
- [x] У316. 17 марта в 13:20 — Встреча с зам.декана по задолженностям, **не требуется**
|
||||||
|
- [x] У316. 24 марта в 13:20 — Встреча с зам.декана по задолженностям, **не требуется**
|
||||||
|
# Сессия
|
||||||
|
# Практика
|
||||||
91
PRD. Менеджер аккаунтов.md
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# Product Requirements Document (PRD): Кроссплатформенный Менеджер Паролей
|
||||||
|
|
||||||
|
## 1. Обзор продукта
|
||||||
|
|
||||||
|
Локальный, строго типизированный кроссплатформенный менеджер паролей с поддержкой многопользовательского режима, надежным шифрованием данных "в покое" (data-at-rest) и подготовленной архитектурой для будущей облачной синхронизации и интеграции с браузерными расширениями.
|
||||||
|
|
||||||
|
**Технологический стек:**
|
||||||
|
- **Backend / Ядро:** Rust (Tauri) — отвечает за криптографию, работу с ФС, БД и системными API (биометрия).
|
||||||
|
- **Frontend:** Angular (TypeScript) — отвечает за UI, строгую ООП-архитектуру, управление состояниями и валидацию.
|
||||||
|
- **База данных:** SQLite (через Rust).
|
||||||
|
## 2. Архитектура безопасности и хранения данных
|
||||||
|
Безопасность строится на принципе нулевого доверия к окружению (Zero Trust Local Storage). Даже при полной компрометации устройства (кража диска или копирование файла БД), злоумышленник не должен получить доступ к данным без знания Мастер-пароля.
|
||||||
|
### 2.1. Криптографическая схема
|
||||||
|
- **Деривация ключа (Key Derivation):** Мастер-пароль пользователя никогда не хранится в явном виде. При вводе он пропускается через функцию **Argon2id** (устойчивую к атакам на GPU/ASIC) вместе со случайной солью. Результатом является Ключ Шифрования Данных (Data Encryption Key - **DEK**).
|
||||||
|
- **Шифрование полезной нагрузки:** Для шифрования самих паролей и заметок используется алгоритм **XChaCha20-Poly1305** (AEAD — Authenticated Encryption with Associated Data). Он быстрее и безопаснее стандартного AES на программном уровне и проверяет целостность данных.
|
||||||
|
- **Что шифруется:** Логины, пароли, заметки и привязанные почты шифруются. Метаданные (UUID записи, дата создания) можно оставить открытыми для упрощения синхронизации в будущем.
|
||||||
|
### 2.2. База данных (SQLite) и многопользовательский режим
|
||||||
|
- Каждый пользователь имеет свой отдельный файл базы данных (например, `vault_<user_uuid>.sqlite`). Это изолирует данные пользователей друг от друга и радикально упрощает будущую синхронизацию (не нужно фильтровать чужие записи).
|
||||||
|
- **Схема таблицы `accounts` (задел под синхронизацию):**
|
||||||
|
- `id` (TEXT, UUIDv4) — Первичный ключ.
|
||||||
|
- `service_name` (TEXT) — Название сервиса.
|
||||||
|
- `encrypted_data` (BLOB) — Зашифрованный JSON с логином, паролем, ссылкой и тегами.
|
||||||
|
- `nonce` (BLOB) — Уникальный вектор инициализации для расшифровки XChaCha20.
|
||||||
|
- `updated_at` (INTEGER) — Unix timestamp последнего изменения. **Критично для будущей синхронизации** (разрешение конфликтов LWW - Last Write Wins).
|
||||||
|
- `is_deleted` (BOOLEAN) — Soft-delete (мягкое удаление). При удалении запись не стирается, а помечается удаленной, чтобы при будущей синхронизации другие устройства узнали об удалении.
|
||||||
|
### 2.3. Биометрия (Touch ID / Windows Hello)
|
||||||
|
- **Логика работы:** При успешном вводе Мастер-пароля, полученный ключ **DEK** шифруется средствами операционной системы (через системный Keyring/Связку ключей/Windows Credential Manager) и сохраняется там.
|
||||||
|
- При следующем входе приложение запрашивает биометрическую аутентификацию через системный API (в Rust для этого используются крейты `keyring` или платформозависимые вызовы). При успехе ОС отдает приложению **DEK**, и база расшифровывается без ввода пароля.
|
||||||
|
## 3. Frontend Архитектура (Angular + OOP)
|
||||||
|
Код должен быть максимально модульным, тестируемым и следовать принципам SOLID.
|
||||||
|
### 3.1. Основные слои (Dependency Injection)
|
||||||
|
1. **Domain Models (Модели данных):** Классы `Account`, `UserVault`, `Tag`. Модели не содержат бизнес-логики, только структуру и методы-геттеры/сеттеры.
|
||||||
|
2. **Services (Бизнес-логика):**
|
||||||
|
- `TauriIpcService`: Абстракция над `window.__TAURI__.invoke`. Реализует паттерн **Adapter**, изолируя Angular от специфики Tauri.
|
||||||
|
- `CryptoStrategyService`: Реализует паттерн **Strategy** для выбора метода авторизации (Мастер-пароль или Биометрия).
|
||||||
|
- `VaultService`: Управляет состоянием расшифрованных паролей в оперативной памяти (в виде RxJS `BehaviorSubject`). При блокировке приложения этот сервис немедленно очищает данные из памяти.
|
||||||
|
3. **Components (UI):** Разделены на "Умные" (Smart/Container) — общаются с сервисами, и "Глупые" (Dumb/Presentational) — только отображают данные (кнопки, формы ввода, карточки паролей).
|
||||||
|
### 3.2. Паттерны проектирования в UI
|
||||||
|
- **Observer (через RxJS):** Компоненты подписываются на изменения в `VaultService`. Если в фоновом режиме (или через окно быстрого добавления) добавился пароль, список в главном окне обновляется реактивно.
|
||||||
|
- **Visitor:** Для будущей реализации экспорта (в CSV, JSON). Класс `Account` принимает "посетителя" `CsvExportVisitor`, который знает, как правильно отформатировать поля аккаунта для выгрузки, не нарушая инкапсуляцию самого аккаунта.
|
||||||
|
## 4. Подготовка к будущим фичам (Future-Proofing)
|
||||||
|
### 4.1. Задел для облачной синхронизации
|
||||||
|
Так как на старте используется локальный SQLite с полями `updated_at` и `is_deleted` (Soft-delete), в будущем реализация синхронизации сведется к написанию фонового процесса (в Rust), который будет:
|
||||||
|
1. Запрашивать у сервера все записи с `updated_at` больше, чем время последней синхронизации.
|
||||||
|
2. Отправлять на сервер локальные записи, которые изменились с момента последней синхронизации.
|
||||||
|
3. Сервер (когда он появится) будет просто передавать зашифрованные BLOB-ы (E2E шифрование), ничего не зная о содержимом.
|
||||||
|
### 4.2. Задел для браузерного расширения
|
||||||
|
Чтобы расширение могло общаться с десктопным приложением (забирать пароли и сохранять новые), приложение на Tauri должно выступать в роли сервера.
|
||||||
|
- **Архитектурное решение:** В ядре Rust поднимается легковесный локальный WebSocket-сервер или используется механизм **Native Messaging** (стандарт для Chrome/Firefox).
|
||||||
|
- Все запросы от браузера проверяются на подлинность (расширение и десктопное приложение обмениваются криптографическими токенами при первичном сопряжении). На текущем этапе (MVP) этот сервер не реализуется, но API-функции для получения конкретного пароля по URL сайта на стороне Rust проектируются заранее, чтобы их можно было легко обернуть в сетевой интерфейс позже.
|
||||||
|
## 5. Требования к UI / UX
|
||||||
|
- **Горячие клавиши (Global Shortcuts):** Окно "быстрого добавления/поиска" (Spotlight-like) вызывается системным шорткатом (например, `Cmd/Ctrl + Shift + Space`). Работает глобально, даже если главное окно закрыто. Реализуется через `tauri-plugin-global-shortcut`.
|
||||||
|
- **Генератор паролей:** Интегрирован прямо в форму создания аккаунта. При фокусе на поле "Пароль" предлагается сгенерированная строка. Сложность (длина, спецсимволы) настраивается в параметрах.
|
||||||
|
- **Автоматическая блокировка:** По таймеру бездействия (настраивается пользователем, например, 5 минут) или при блокировке операционной системы приложение уничтожает расшифрованные данные из памяти Angular и требует повторного сканирования биометрии или ввода пароля.
|
||||||
|
## 6. Структура проекта (Репозиторий и src-файлы)
|
||||||
|
Проект строится по принципу монорепозитория, разделенного на два изолированных контекста: системный бэкенд (Tauri/Rust) и фронтенд-интерфейс (Angular).
|
||||||
|
### 6.1. Backend: Ядро на Rust (`/src-tauri/src/`)
|
||||||
|
Структура следует принципам чистого кода, жестко отделяя инфраструктуру Tauri от чистой бизнес-логики и работы с базой данных.
|
||||||
|
- `main.rs` — Точка входа. Регистрация плагинов, глобальных шорткатов, инициализация БД и запуск Tauri-приложения.
|
||||||
|
- `commands/` — Обработчики вызовов от фронтенда (Tauri IPC Commands). Здесь функции получают аргументы от UI и делегируют работу ядру.
|
||||||
|
- `auth.rs` (апи для авторизации и сканирования биометрии)
|
||||||
|
- `vault.rs` (сохранение и получение записей)
|
||||||
|
- `core/` — Изолированная бизнес-логика, которая ничего не знает про Tauri (максимально тестируемый код).
|
||||||
|
- `crypto.rs` (реализация шифрования XChaCha20-Poly1305 и деривации ключей Argon2id)
|
||||||
|
- `password_gen.rs` (генератор надежных паролей)
|
||||||
|
- `database/` — Слой абстракции над SQLite.
|
||||||
|
- `schema.sql` (миграции базы данных)
|
||||||
|
- `models.rs` (структуры данных Rust для маппинга таблиц БД)
|
||||||
|
- `repository.rs` (SQL-запросы и транзакции)
|
||||||
|
- `events/` — Система Push-событий (Event-Driven Architecture).
|
||||||
|
- `emitter.rs` (отправка событий `system-locked`, `vault-updated` во фронтенд).
|
||||||
|
### 6.2. Frontend: Angular App (`/src/`)
|
||||||
|
Используется современный подход с Angular Standalone-компонентами (без лишнего бойлерплейта в виде `NgModules`). Структура директорий базируется на Domain-Driven Design (DDD) для строгого соблюдения принципов ООП.
|
||||||
|
- `main.ts` — Точка входа фреймворка Angular.
|
||||||
|
- `app/` — Корневая директория логики UI.
|
||||||
|
- `core/` — Базовая инфраструктура и Сервисы-синглтоны (существуют в единственном экземпляре).
|
||||||
|
- `services/tauri-event-bus.service.ts` (RxJS-адаптер, слушающий события от Rust)
|
||||||
|
- `services/crypto-strategy.service.ts` (паттерн Strategy для авторизации)
|
||||||
|
- `services/vault.service.ts` (хранение расшифрованного стейта в оперативной памяти)
|
||||||
|
- `models/` — Глобальные TypeScript-интерфейсы и ООП-классы Моделей.
|
||||||
|
- `account.model.ts` (включая методы для валидации и приема паттерна Visitor)
|
||||||
|
- `user.model.ts`
|
||||||
|
- `shared/` — «Глупые» (Dumb/Presentational) компоненты и UI-кит. Они не содержат бизнес-логики, только принимают данные и отдают события кликов.
|
||||||
|
- `components/account-card/` (карточка аккаунта)
|
||||||
|
- `components/password-input/` (компонент поля ввода с индикатором надежности)
|
||||||
|
- `features/` — «Умные» (Smart) компоненты, разделенные по бизнес-доменам приложения.
|
||||||
|
- `auth/` (экраны ввода мастер-пароля и биометрии)
|
||||||
|
- `main-window/` (весь интерфейс главного окна со списком паролей и настройками)
|
||||||
|
- `spotlight/` (изолированное окно быстрого добавления/поиска, вызываемое горячими клавишами)
|
||||||
|
- `styles/` — Глобальные стили, Tailwind конфигурации и CSS-переменные темы.
|
||||||
|
- `assets/` — Статические файлы (локальные шрифты, иконки).
|
||||||
0
Ptyhon. Keras. Library.md
Normal file
8
Python. uv.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
- Создание проекта
|
||||||
|
```shell
|
||||||
|
uv init *project_name*
|
||||||
|
```
|
||||||
|
- Добавление библиотек:
|
||||||
|
```shell
|
||||||
|
uv add *library_name*
|
||||||
|
```
|
||||||
0
Python. Визуализация данных.md
Normal file
6
Python.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Для работы с окружением
|
||||||
|
- [[Python. uv|uv]]
|
||||||
|
# Язык
|
||||||
|
# Библиотеки/Framework’и
|
||||||
|
- numpy
|
||||||
|
- pandas
|
||||||
37
SQL.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
## Подкатегории команд в SQL
|
||||||
|
- DDL (Data Definition Language) — `create`, `alert`, `drop`
|
||||||
|
- DML (Data Manipulation Language) — `select`, `insert`, `update`, `delete`
|
||||||
|
- TCL (Transaction Control Language) — `commit`, `rollback`, `savepoint`
|
||||||
|
- DCL (Data Control Language) — `grant`, `revoke`, `deny`
|
||||||
|
## Основные типы данных в SQL
|
||||||
|
|
||||||
|
| Название типа данных | Занимает байтов | Описание |
|
||||||
|
| ------------------------------------- | --------------- | ------------------------------------------------------------------------------------------------ |
|
||||||
|
| `smallint` | 2 | |
|
||||||
|
| `integer` | 4 | может записываться как `int`. |
|
||||||
|
| `bigint` | 8 | |
|
||||||
|
| `decimal`, `numeric` | variable | денежные расчёты обычно объявляются им. очень точен |
|
||||||
|
| `real`, `float4` | 4 | |
|
||||||
|
| `double precision`, `float8`, `float` | 8 | |
|
||||||
|
| `smallsireal` | 2 | |
|
||||||
|
| `sireal` | 4 | автоматически увеличивается на новой строке |
|
||||||
|
| `bigsireal` | 8 | |
|
||||||
|
| `char(n)` | variable | устанавливается точная длинна `n` при объявлении |
|
||||||
|
| `varchar(n)` | variable | в отличии от `char`, при добавлении строки меньшей длинны, чем `n`, строка не будет расширяться. |
|
||||||
|
| `text` | variable | поддерживает строки любой длинны |
|
||||||
|
| `Boolean`, `bool` | 1 | True или False |
|
||||||
|
| `date` | 4 | только дата |
|
||||||
|
| `time` | 8 | только время |
|
||||||
|
| `timestamp` | 8 | дата и время (вместе) |
|
||||||
|
| `interval` | 16 | разница между двумя `timestamp` |
|
||||||
|
| `timestamptz` | 8 | `timestamp` + часовой пояс |
|
||||||
|
| arrays | | |
|
||||||
|
| json | | |
|
||||||
|
| xml | | |
|
||||||
|
| геометрические и другие специальные | | |
|
||||||
|
| custom–типы | | |
|
||||||
|
| `null` | | ничего |
|
||||||
|
Первичный ключ задается следующим образом:
|
||||||
|
```sql
|
||||||
|
*название_столбца* *тип_данных_столбца* GENERATED ALWAYS AS IDENTITY PRIMARY KEY
|
||||||
|
```
|
||||||
56
Untitled.canvas
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"nodes":[
|
||||||
|
{"id":"13c06bc9aa2ff9f3","type":"group","x":126,"y":600,"width":1034,"height":617,"color":"3","label":"Род Высицких"},
|
||||||
|
{"id":"4be03daab5cf7e94","type":"group","x":-1680,"y":1040,"width":755,"height":260,"color":"1","label":"Болезни-последствия кровосмесительных отродков"},
|
||||||
|
{"id":"c959e9f038a87ad5","type":"text","text":"Название книги. Автор","x":1,"y":-169,"width":250,"height":60},
|
||||||
|
{"id":"8962545abee95552","type":"text","text":"Глава 3.","x":444,"y":-162,"width":250,"height":60},
|
||||||
|
{"id":"90b9c5eab40b8313","type":"text","text":"Глава 6.","x":-513,"y":-157,"width":250,"height":60},
|
||||||
|
{"id":"71e0830829c5bb17","type":"text","text":"Глава 5.","x":-220,"y":-373,"width":250,"height":60},
|
||||||
|
{"id":"cbc0c891524b4f16","type":"text","text":"Глава 4.","x":220,"y":-373,"width":250,"height":60},
|
||||||
|
{"id":"c47570b99ac188cc","type":"text","text":"Подтема 1.2. Исторические собенности рода Высицких","x":-1410,"y":280,"width":370,"height":100},
|
||||||
|
{"id":"5daecf21d9d5da6f","type":"text","text":"Глава 2.","x":430,"y":73,"width":250,"height":60},
|
||||||
|
{"id":"9ee67bdc7efc7bc4","type":"text","text":"Глава 1. История рода Высицких","x":-793,"y":83,"width":300,"height":50},
|
||||||
|
{"id":"a2489c3e79a89fe4","type":"text","text":"Подтема главы 1. (1.1.) Зарождение высицких","x":-263,"y":240,"width":283,"height":100},
|
||||||
|
{"id":"9d9506e23058c8a7","type":"text","text":"Неизвестный Высицкий I","x":180,"y":620,"width":250,"height":60,"color":"2"},
|
||||||
|
{"id":"3ec947be2ee6ecaa","type":"text","text":"Неизвестный Высицкий II","x":305,"y":777,"width":250,"height":60,"color":"2"},
|
||||||
|
{"id":"f856475c761be020","type":"text","text":"Кирилл Высицкий V","x":320,"y":1137,"width":250,"height":60,"color":"2"},
|
||||||
|
{"id":"6485d9c5a84c5310","type":"text","text":"Неизвестная Архематка","x":560,"y":620,"width":250,"height":60,"color":"6"},
|
||||||
|
{"id":"c9c7bcf5ddfef04f","type":"text","text":"Род — семейство, члены которых наследуют фамилию по отцовской линии","x":-263,"y":650,"width":243,"height":97},
|
||||||
|
{"id":"53d07d76b453a553","type":"text","text":"Фёдор Высицкий III","x":560,"y":957,"width":250,"height":60,"color":"2"},
|
||||||
|
{"id":"0c972dce9705b8d3","type":"text","text":"Анатолий Высицкий IV","x":820,"y":1057,"width":250,"height":60,"color":"2"},
|
||||||
|
{"id":"a35443bda2621ef1","type":"text","text":"Наследственная (хроническая) шизофрения","x":-1660,"y":1110,"width":250,"height":60},
|
||||||
|
{"id":"dcc47ccd97e02e25","type":"text","text":"Раннее облысение","x":-1205,"y":1110,"width":250,"height":60},
|
||||||
|
{"id":"a8c7d4f4f6dd602d","type":"text","text":"Инцест — кровосмесительный брак, в случае Высицких, приводящих к рождениию детей, имеющих скрытые или явные отставания в развитии: физическом (раннее облысение), умственном (наследственная шизофрения)","x":-675,"y":650,"width":315,"height":320},
|
||||||
|
{"id":"f485768f9515b791","type":"text","text":"Автор пишет, что род Высицких — плод многовекового инцеста.","x":-675,"y":380,"width":315,"height":120}
|
||||||
|
],
|
||||||
|
"edges":[
|
||||||
|
{"id":"f42df1e090afde7c","fromNode":"c959e9f038a87ad5","fromSide":"bottom","toNode":"9ee67bdc7efc7bc4","toSide":"top"},
|
||||||
|
{"id":"798793eededb8b4d","fromNode":"c959e9f038a87ad5","fromSide":"bottom","toNode":"5daecf21d9d5da6f","toSide":"top"},
|
||||||
|
{"id":"2cef20ecc7b547de","fromNode":"c959e9f038a87ad5","fromSide":"right","toNode":"8962545abee95552","toSide":"left"},
|
||||||
|
{"id":"efcd1d0422ec7f7b","fromNode":"c959e9f038a87ad5","fromSide":"top","toNode":"cbc0c891524b4f16","toSide":"bottom"},
|
||||||
|
{"id":"b384edceac4a9cdf","fromNode":"c959e9f038a87ad5","fromSide":"top","toNode":"71e0830829c5bb17","toSide":"bottom"},
|
||||||
|
{"id":"047fd0ed7e5ce476","fromNode":"c959e9f038a87ad5","fromSide":"left","toNode":"90b9c5eab40b8313","toSide":"right"},
|
||||||
|
{"id":"d072c93fdb76d1c2","fromNode":"9ee67bdc7efc7bc4","fromSide":"bottom","toNode":"a2489c3e79a89fe4","toSide":"top"},
|
||||||
|
{"id":"8c7c7df5e334e6cb","fromNode":"9ee67bdc7efc7bc4","fromSide":"bottom","toNode":"c47570b99ac188cc","toSide":"top"},
|
||||||
|
{"id":"d2e93c09f52903f8","fromNode":"a2489c3e79a89fe4","fromSide":"bottom","toNode":"f485768f9515b791","toSide":"top"},
|
||||||
|
{"id":"6c2fc22c034eb6f4","fromNode":"f485768f9515b791","fromSide":"bottom","toNode":"a8c7d4f4f6dd602d","toSide":"top"},
|
||||||
|
{"id":"59a2e33f3563e2db","fromNode":"a2489c3e79a89fe4","fromSide":"bottom","toNode":"13c06bc9aa2ff9f3","toSide":"top"},
|
||||||
|
{"id":"3cac4af709d66584","fromNode":"6485d9c5a84c5310","fromSide":"bottom","toNode":"3ec947be2ee6ecaa","toSide":"top","color":"5"},
|
||||||
|
{"id":"6c9e4677b5e7c4b8","fromNode":"9d9506e23058c8a7","fromSide":"bottom","toNode":"3ec947be2ee6ecaa","toSide":"top","color":"5"},
|
||||||
|
{"id":"12077491d4926e72","fromNode":"3ec947be2ee6ecaa","fromSide":"right","toNode":"6485d9c5a84c5310","toSide":"right","color":"1"},
|
||||||
|
{"id":"ac9fd1f9bf6098f3","fromNode":"6485d9c5a84c5310","fromSide":"bottom","toNode":"53d07d76b453a553","toSide":"top","color":"5"},
|
||||||
|
{"id":"2ca7230cfb9c11bf","fromNode":"3ec947be2ee6ecaa","fromSide":"bottom","toNode":"53d07d76b453a553","toSide":"top","color":"5"},
|
||||||
|
{"id":"85fa3b6b47746be5","fromNode":"53d07d76b453a553","fromSide":"right","toNode":"6485d9c5a84c5310","toSide":"right","color":"1"},
|
||||||
|
{"id":"d64c0f3d460e0e96","fromNode":"9d9506e23058c8a7","fromSide":"right","toNode":"6485d9c5a84c5310","toSide":"right","color":"1"},
|
||||||
|
{"id":"9d13f0836fe08b45","fromNode":"6485d9c5a84c5310","fromSide":"bottom","toNode":"0c972dce9705b8d3","toSide":"top","color":"5"},
|
||||||
|
{"id":"6dcedc79655a6090","fromNode":"0c972dce9705b8d3","fromSide":"right","toNode":"6485d9c5a84c5310","toSide":"right","color":"1"},
|
||||||
|
{"id":"30427d21de77e6e8","fromNode":"53d07d76b453a553","fromSide":"bottom","toNode":"0c972dce9705b8d3","toSide":"top","color":"5"},
|
||||||
|
{"id":"4de72f2fc0646518","fromNode":"6485d9c5a84c5310","fromSide":"bottom","toNode":"f856475c761be020","toSide":"top","color":"5"},
|
||||||
|
{"id":"81767858608292db","fromNode":"0c972dce9705b8d3","fromSide":"bottom","toNode":"f856475c761be020","toSide":"top","color":"5"},
|
||||||
|
{"id":"dc98eb2056254f4b","fromNode":"c47570b99ac188cc","fromSide":"bottom","toNode":"4be03daab5cf7e94","toSide":"top"},
|
||||||
|
{"id":"d690fbf74bd033fc","fromNode":"a8c7d4f4f6dd602d","fromSide":"bottom","toNode":"4be03daab5cf7e94","toSide":"right"},
|
||||||
|
{"id":"ab265eb3605dcfeb","fromNode":"a8c7d4f4f6dd602d","fromSide":"left","toNode":"c47570b99ac188cc","toSide":"right"},
|
||||||
|
{"id":"732f5bf2b34cd742","fromNode":"f485768f9515b791","fromSide":"bottom","toNode":"c9c7bcf5ddfef04f","toSide":"top"},
|
||||||
|
{"id":"a6221c1627d9db2b","fromNode":"f856475c761be020","fromSide":"right","toNode":"6485d9c5a84c5310","toSide":"right","color":"1"}
|
||||||
|
]
|
||||||
|
}
|
||||||
6
daily/December 1, 2025.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
week day: "Monday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
**
|
||||||
5
daily/December 2, 2025.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
week day: Tuesday
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
26
daily/December 20, 2025.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
week day: "Saturday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
Я давно не писал сюда ничего. Как-то, сначала не было времени, потом сил, а потом просто забыл. Ну, или у меня просто не хватило дисциплины.
|
||||||
|
Я почувствовал какую-то необходимость в том, чтобы поделиться переживаниями хоть с кем-то. Только, у меня нет никого, кто бы действительно смог бы меня «выслушать». Под «выслушать» я подразумеваю не просто покивать головой и сказать, что все будет хорошо, не просто совет «потерпеть», чтобы все наладилось. Я с 20 года терплю, если не сказать с рождения. Долго еще терпеть-то? Когда будет эта обещанная белая полоса? Я устал ждать.
|
||||||
|
Везде говорят про «надежду». Мол, — «Не теряй надежду! Все наладится! Все будет хорошо! Обязательно!», но это же неправда. Откровенная неправда. Не будет ничего хорошо. Как бы ты ни старался, как бы не надрывался, если тебе не повезет… Что ж… Бывает, полагаю?
|
||||||
|
|
||||||
|
Но, вернемся к нашим баранам. У меня полнейший завал по учебе. При чем, не просто завал, когда нужно много чего сделать. Это не сложно, совсем. Завал в, даже не знаю как сказать, «контакте с преподавателями»? Я не понимаю их. Просто не могу понять. Чего они от меня хотят? Что мне нужно сделать? Какие, блядь, конкретные действия мне нужно совершить. чтобы они поставили мне эту блядскую «3»?
|
||||||
|
Я называю их «шизофреники», хотя, это слово не верно. Они не больные люди, у них нет проблем с осознанием реальности, они полностью дееспособны. Они просто мрази. Люди без намека на хоть какую-нибудь эмпатию, хоть какое-нибудь понимание. Им все равно, что мне не интересен **конкретно их** предмет. Им все равно, что он мне не нужен, что его поставили — лишь бы добить до 8 семестров. Им это не интересно. Они не хотят снисходительно относиться ко мне, да и ко всем другим студентам.
|
||||||
|
Почему — это другой вопрос. У меня есть лишь одна теория: они в невообразимого масштаба фрустрации, что все их одноклассники, однокурсники, а, возможно и некоторые коллеги чего-то в жизни добились. А они нет. Все что у них есть — мизерная зарплата, подневольность и отсутствие уважение от кого бы-то ни было. Ядреная смесь.
|
||||||
|
|
||||||
|
А я опять отошел от темы. Так вот. У меня завал, как я уже определился, с «контактом с преподавателями». Я не знаю что мне делать. Прям вот вообще. Не имею ни малейшего представления. Я знаю. что мне нужно сделать два оставшихся (и, скорее всего, переделать два сданных) типовика. Я знаю, что мне нужно, опять же, скорее всего, пересдать контрольную по физике. Я знаю, что мне нужно сделать 2 курсовые работы, хотя по инж.граф–у не знаю точных дат, ведь возможно, завтра последний день сдать **курсовую работу**, а она об этом говорила хуй пойми когда. В общем, это пиздец. В моей жизни полная жопа со всех сторон.
|
||||||
|
|
||||||
|
Помимо ебучей корабелки, есть еще множество проблем о которых бы мне хотелось поговорить. Например, вообще нет снега. Нет, иногда он выпадает. На пол дня. А потом все — терпи. По прогнозам погоды снега в ближайшее время не предвидится. И это очень печально. Новый Год — единственный праздник, который я действительно отмечаю. Не просто заказываю пиццу и грущу, а чувствую эту «атмосферу» волшебства или еще хуй пойми чего. Остальные праздники для меня лишь бремя. Я весь год, начиная с 1 Января жду Новый Год, я готов теперь все: издевательства судьбы, любые лишения, любую хуйню которую подкинет (а она обязательно это сделает) жизнь. Я терплю лишь потому, что знаю — наступит Новый Год. Я спокойно сяду, заварю себе чай, накроюсь пледом, включу хороший фильм, сериал, игру и буду наслаждаться жизнью. Лишь 2-3 дня в году. Большего мне не надо.
|
||||||
|
Но ничего из этого не возможно, если нет снега. Снег — ключевой элемент Нового Года. Жизнь — говно, в том числе и за окном. В любом месте, в любое время года, кроме зимы. Потому что зимой выпадает снег. Он скрывает последствия жизнедеятельности людей, превращая улицу, особенно ночью, в тихое и спокойное место, где действительно приятно находиться. Людей мало, ведь в холод никто не хочет бессмысленно слоняться по пустым улицам. И я могу насладиться красотой наедине с собой.
|
||||||
|
Так вот, снега нет. И не предвидится. И, учитывая всю ту хуйню, которая творится со мной весь декабрь, лучше не будет. А значит, в этом году я без Нового Года. А, значит, без надежды на лучшее. Без сил бороться за выживание. Без сил пытаться чего-то достичь. Весь 2026 год я буду страдать. «В двойных дозах», так сказать.
|
||||||
|
|
||||||
|
Еще мне не едут наушники. Такое ощущение, что их украли на таможне. Думал, со мной такого не случиться, ведь 2025 год на дворе, за этим «типа» должны следить! Но ХУЙ тебе Саша.
|
||||||
|
|
||||||
|
Проблем еще много. Но они не такие значительные, как те, что я описал выше. Вся моя жизнь — сплошная проблема. Я не уверен, что ты будешь это перечитывать в будущем, но если будешь — знай:333333333333333
|
||||||
|
|
||||||
|
Все будет только хуже.
|
||||||
|
|
||||||
|
Но, это не значит, что хорошо не будет. Просто «хорошо» — понятие субъективное и относительное. Хорошо может быть лишь когда было плохо. И будет, обязательно. Но не так хорошо, как было до этого.
|
||||||
5
daily/December 3, 2025.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
week day: Wednesday
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
5
daily/December 4, 2025.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
week day: "Thursday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
8
daily/February 2, 2026.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
week day: "Monday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Начало нового семестра. Понедельник — день тяжелый. Решил пропустить первую пару (Операционные системы), так как более–менее знаю чего ждать от Высика (пидораса).
|
||||||
|
- Из долгов: Уравнения математической физики, Курсовая работа по Объектно–ориентированному программированию, Теория алгоритмов и математическая логика и, пожалуй самое сложное, Физика. Долгов много, как их сдавать не имею идей, но это пока. Надеюсь, все будет хорошо. По крайней мере, постараюсь все для этого сделать.
|
||||||
|
- На данный момент этот семестр (4) кажется более легким, но, как показала практика, не стоит лишний раз расслабляться, это грозит последствиями, которые я могу и не вывезти. Собираюсь стараться ходить на максимально возможное количество пар, тем более, большинство преподавателей (за исключением Высика (пидора) и, возможно, еще двух (Базы данных и Муравьев)) кажутся адекватными, что редкость в этой шараге.
|
||||||
15
daily/November 21, 2025.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
week day: Friday
|
||||||
|
---
|
||||||
|
- Сегодня **не специально** проспал пары. Вчера планировал сегодня пойти, так как **ни разу** не ходил на практику к Понамарёву, а остальные пары — лекции, но, видимо, Понамарь увидит мои навыки решения алгоритмов лишь на экзамене. Что ж, зато удивится
|
||||||
|
- Позавтракал кофе с орешками. Пока завтракал смотрел видео на новеньком макбуке. Очень понравилось что не захламляю комнату грязной посудой. Теперь собираюсь по возможности есть только в большой комнате. Правда, животные очень любят забираться ко мне на стол, когда я за ним сижу, но, думаю, смогу их отучить.
|
||||||
|
- До вечера настраивал [[Манифест. Macbook|макбук]], [[Манифест. Obsidian|Obsidian]], [[Манифест. Arc Browser|Arc]]. Очень понравилось ими пользоваться. Обычно, когда у меня нет настроения ебашить изо всех сил, я просто смотрю Ютуб, но сейчас, хотя настроение и было, даже не смог досмотреть выпуск новостей Стаса Ай как просто, при том, что обычно я смотрю их в один заход.
|
||||||
|
- Довольно сложно осваиваться в использовании [[Манифест. Macbook|макбуке]], клавиатура на нем, пускай и не сильно, но все же отличается от той, к которой я привык. Например, обычно я нажимаю легко на пробел, а тут приходится его прожимать до конца. Вообще, мелочей, из-за которых я работаю за [[Манифест. Macbook|макбуком]] медленнее, чем за ПК, довольно много, но думаю привыкну. Только, не стану ли я из-за этого работать медленнее на ПК?
|
||||||
|
- Начал проектировать/реализовывать архитектуру моего хранилища [[Манифест. Obsidian|Obsidian]]. Тут описывать его не буду, можно перейти по ссылке и прочитать что я там напридумывал. На момент написания этого текста в файле пусто.
|
||||||
|
- Пообедал яичницой и двумя бутербродами с творожным сыром, салатом, колбасой, сыром обычным и помидорами. Очень вкусно. Ел опять в большой комнате. Коты не мешали (почти).
|
||||||
|
- Вечером в основом отдыхал. Почему-то настроения и сил больше не было, из-за чего начал просто смотреть приколы на Ютубе. Может, позже что-нибудь еще поделаю, но навряд ли что-то масштабное.
|
||||||
|
- Нашел [видео](https://www.youtube.com/watch?v=3H5mePRWkro](https://www.youtube.com/watch?v=3H5mePRWkro "https://www.youtube.com/watch?v=3H5mePRWkro")) на ютубе, где парень объясняет как он зарабатывает на безубыточных контрактах в CS2. Посмотрел и захотел попробовать так деньги в стиме крутить. Все-таки тратить десятки тысяч рублей на игры жаба поддушивает.
|
||||||
|
- Под конец дня, все–таки, кое–что сделал: перенес все возможные лабораторные работы в [[Манифест. Obsidian|Obsidian]] и настроил Syncthing.
|
||||||
|
- [[Манифест. Obsidian|Манифест по Obsidian’у]] так и не дописал
|
||||||
16
daily/November 22, 2025.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
week day: "Saturday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Еще ночью заканчивал с делами со вчерашнего дня. Заснул где-то часов в 5. Проснулся в $\pm$ 12:40.
|
||||||
|
- Позавтракал, как и вчера, кофе с орешками. Если честно, они начинают мне надоедать.
|
||||||
|
- Сегодня первую половину дня думаю разбираться с учебой, по крайней мере, с чем смогу. Вторую же половину (может после 12) программированию.
|
||||||
|
- Созвонился с Ваней. Сделали первую лабораторную работу по электронике. Договорились потом доделать.
|
||||||
|
- Попросил у Стаса скинуть методички лабораторных по физике. В итоге, уже ночью он предложил вписать меня в его работу. Неожиданно и приятно.
|
||||||
|
- Сделал первую работу по погрешностям. Вторую стало делать очень лень, хотя, в общем счете ничего сложного там нет. Мне просто очень лень делать то, что мне не нравится. Хотя, по другому жить нельзя.
|
||||||
|
- Попытался перевести свой аккаунт для трейда (твинк) на украинский регион. Нашел видео в ютубе, где показывается способ с помощью американских прокси, но они не работают в России) Ни платные, ни бесплатные. Ничего у меня не получилось.
|
||||||
|
- Во время попытки подключить прокси, мама позвала кушать. И, так как я был очень занят еблей с проксями, решил кушать в комнате. Не понравилось кушать в комнате. Все-таки отдельное помещение для приемов пищи для меня лучше.
|
||||||
|
- Пообедал пюре с котлетами, которые сделала мама и своими бутербродами, как вчера. Все было очень вкусно.
|
||||||
|
- Нашел очень интересный [канал](https://www.youtube.com/@lina_klein) девочки, у которой очень тяжелая жизнь. Смотрел ее видео и стримы почти весь вечер. Она дает мне мотивацию что-то делать и как-то двигаться, хотя и вгоняет меня в тоску. Правда, что-то делать и как-то двигаться я, такое ощущение, могу лишь в тоске.
|
||||||
|
- Стаса ввели в заблуждение. Придется все делать самому. Обидно.
|
||||||
13
daily/November 23, 2025.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
week day: Sunday
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Заснул ночью около 5 часов. Перед этим смотрел ютуб. Ничего не деле, ничего не программировал. Очень не хотелось заниматься ничем. Утомляет моя прокрастинация. Но я не знаю что с ней делать. Наверное, по чуть-чуть чем-то заниматься
|
||||||
|
- Проснулся около 13:30 дня. Позавтракал кофе с 3 орешками, как и до этого. Не наелся, поэтому чуть позже сделал себе бутерброды с творожным сыром с травами. Только, на тот раз не было помидоров, поэтому добавил огурцы. Также пожарил хлеб на гриле, что не особо понравилось, так как порезался небом.
|
||||||
|
- Весь оставшийся день (а это **11 часов**) смотрел ютуб и ничем больше не занимался. Хотел хотя бы доделать вторую задачу по погрешностям, но принял решения сделать ее ночью 24 числа, ведь я не собирался спать, а ночью время занять чем-то нужно, чтобы не заснуть.
|
||||||
|
- Пообедал пюре с котлетами, как и вчера. Тоже было все вкусно. Позже съел небольшую вафлю и мороженое.
|
||||||
|
- Уже ночью еще раз поел котлеты с пюре.
|
||||||
|
- Скорее всего, у меня просто пропала мотивация что-либо делать. У меня вообще все, кроме ужасной скуки и желания курить, проходит быстро. Не знаю почему так. Я не могу долго обижаться, грустить, радоваться, да и вообще испытывать любые чувства. Вот, например, 20 ноября мама купила мне [[Манифест. Macbook|Macbook]], очень радовался, долго его настраивал, купил для него прокси, а толку? Он уже перестал восприниматься как что-то новое и необычное, и просто стал очередным инструментом. Безусловно, очень полезным, как [[Манифест. iPad|iPad]] ранее, но тот трепет и удовольствие от пользования новой вещью быстро улетучилось. Может у всех так? Хотя, в видеороликах на ютубе часто говорят, что у людей мотивация заниматься чем-то пропадает через 2-3 недели. Завидую им. У меня через 2 дня.
|
||||||
|
- Хочется все-таки сделать ультимативное приложение для пополнения и подбора безубыточных контрактов в Steam. Например, сейчас хочется купить Diablo IV, не хватает 884 рублей (5,805 тенге), и вроде бы, купи несколько скинов на Lis-Skins из Rust’а и продай на ТП в +20-30%. Но, ведь можно написать приложение, мониторащее скины и пополнить, например в +50-60%. Это, считай вместо 700 рублей потратить 440. Разница довольно большая.
|
||||||
|
- Вторую задачу по погрешностям так и не сделал.
|
||||||
12
daily/November 24, 2025.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
week day: "Monday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Заснул сегодня почти в 6 часов ночи. Собирался поспать часок и собираться на пары, поэтому попросил маму меня разбудить. Через час, когда нужно было вставать, мне стало так лень и так не захотелось идти на пары, что заново лег спать. Проснулся в 14 с чем-то.
|
||||||
|
- Сходил забрал жижки и картриджи для вейпа. Ничего необычного не случилось.
|
||||||
|
- Мама пришла сегодня раньше обычного, в 16 часов, потому что нужно было встретить женщину, которая смотрела счетчики или что-то такое.
|
||||||
|
- Позавтракал печеньем и кофе, попутно пробуя новую жидкость с табаком, она мне понравилась.
|
||||||
|
- Весь день опять смотрел ютуб, но на этот раз без чувства прокрастинации. Я просто устал париться, видимо. Либо, из-за того, что завтра у меня выходной.
|
||||||
|
- Пообедал пюре с котлетами.
|
||||||
|
- Смотрел видео на Ютубе.
|
||||||
15
daily/November 25, 2025.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
week day: Tuesday
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Этот «отчет» я пишу уже постфактум. День был довольно сложный, но я постараюсь вспомнить что смогу.
|
||||||
|
- Всю ночь я не спал, потому что утром нужно было идти на медосмотр. Что-то ел и за несколько часов до выхода выпил кружку кофе.
|
||||||
|
- Сходил на медосмотр, пришел одним из первых. если быть точнее, шестым. Довольно быстро, минут за 25 прошел всех врачей. Обычные вопросы и флюрография.
|
||||||
|
- Придя домой, довольно быстро заснул.
|
||||||
|
- Проснулся через несколько часов, потому что позвонил Максим. Вообще, он мне и до этого несколько раз звонил, но я не слышал. Приезжал он чтобы починить кран. Но, он решил не чинить, а просто поменять на новый.
|
||||||
|
- Рассказал, что нужно раз в 2-3 месяца крутить ручки перекрытия воды, чтобы они не приржавели и их легко можно было крутить при необходимости.
|
||||||
|
- После ухода Максима сил не было, поэтому опять смотрел Ютуб.
|
||||||
|
- Пришла мама. К этому моменту я был уже очень уставший. Поэтому, где-то через час после ее ухода на прогулку с Гремом, я заснул под какое-то монотонное видео прямо на полу.
|
||||||
|
- Когда мама пришла, пыталась меня разбудить. У нее не получилось.
|
||||||
|
- Проснулся где-то через минут 20, после маминого прихода. Отнес посуду в раковину, пнул кота (за что мне ***ОЧЕНЬ СТЫДНО***), потому что он путался под ногами. По воспоминаниям не сильно, да и в итоге он спал со мной в ту ночь, но все-таки, мне правда, пиздец как стыдно. Помылся и лег спать.
|
||||||
16
daily/November 26, 2025.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
week day: Wednesday
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Проснулся где-то часа в два дня. Поспал много. Видимо, потому что вчера спал урывисто.
|
||||||
|
- Спокойно позавтракал, посмотрел несколько видео на Ютубе, к сожалению, не помню какое именно, хотя, по-моему, это был стрим Жмиля по очередному витку договорняка, правда, это не точно. Оно меня очень увлекло, из-за чего задержался при выходе. На пары успел.
|
||||||
|
- На парах Понамарёва, наконец-то, сделал вторую задачу по погрешностям и пытался сделать [[Электротехника. Лабораторная работа №2|вторую лабу по электротехнике]], не получилось, нужно будет заняться этим на выходных.
|
||||||
|
- Пары Понамарёва очень скучные.
|
||||||
|
- Отвести меня домой после пар мама не смогла, потому что задержалась на работе. Когда вышел, уже было темно и довольно прохладно. Мне понравилось ходить по ночному заснеженному городу. Так называемый плюс вайбик.
|
||||||
|
- Дома что-то поел, скорее всего опять бутерброды, смотрел видео на Ютубе.
|
||||||
|
- Зашел в TESO, получил ежедневную награду, прокачал коня, в общем, выполнил рутину.
|
||||||
|
- Опять смотрел видео.
|
||||||
|
- Ночью окончательно сломались мои паленые Beyerdynamic dt770. Самое обидное, что я давно хотел их поменять и забыть как про страшный сон, но денег на нормальные наушники все не было и не было, и вот, теперь придется выбирать из того что смогу найти. А пока, пользуюсь отвратительными Oneodio A70.
|
||||||
|
- Вроде нашел нормальные наушники, но у нормального продавца они стоят на 500 рублей дороже, чем у меня сейчас есть, а акции продать я не могу, ведь торги закрыты. Ну, ничего, пока поизучаю, а завтра уже приму решение.
|
||||||
|
- Под уже конец ночи решил пофармить в TESO рыбача. Рыбачил где-то 40-50 минут. Из почти ста рыб икра не выпала ни разу.
|
||||||
15
daily/November 27, 2025.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
week day: "Thursday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Заснул где-то ближе к 5 утра. С большим трудом встал в 10:50. Быстро позавтракал кофе и пошел на пары.
|
||||||
|
- На электротехнике делал [[Электротехника. Лабораторная работа №6|лабораторную №6]]. Думал, сделаю ее за пол часа, а по факту, деалал чуть дольше всей пары. Также, с Ваней попытались сдать [[Электротехника. Лабораторная работа №1|первую лабу]], не получилось, правда, не то, чтобы мы и надеялись. Узнали, что для сдачи лабораторной работы по электротехнике нужно рассказать о том, как выполняли работу, а также объяснить все элементы схемы (резисторы, транзисторы, амперметры, вольтметры и так далее), т.е. рассказать почему в источник напряжения пускает силу тока, как амперметр измеряет силу тока и так далее.
|
||||||
|
- Продал акции [[Акционерное общество. Алроса|Алросы]], к сожалению в **-10%**, хотя это одни из немногих акций, которые были у меня в плюсе, при чем, как-то мне не хватало рублей двухсот и я продал их в минус, потом они отросли, я их не продовал, и сейчас, когда опять не хватало пятисот рублей, пришлось продать в минус… Победитель по жизни, хуле.
|
||||||
|
- Все-таки заказал [наушники](https://ozon.ru/t/jh2t82K) (HiFiMan HE400SE), обещают прийти до 20 декабря, надеюсь приедут раньше. Замучился с ужасными Oneodio A70. Отвратительные наушники.
|
||||||
|
- На операционных средах больших систем делали 4 практику, я делал еще и 3. Списал с помощью нейросети, правда она ошиблась в одном (или нескольких) заданиях, пришлось спорить с преподшей, слава Богу она оказалась адекватной и не стала до меня докапываться. Скорее всего, Высицкий-пидорас будет.
|
||||||
|
- По пути домой забрал посылку из Озонна для мамы. Оказалась больше, чем я думал, из-за чего не смог сходить в магазин за едой.
|
||||||
|
- Пока шел домой вспомнил, что Пономарёв предложил написать программу по сборке кубика Рубика, решил, что попробую, чтобы легче сдать экзамен.
|
||||||
|
- Дома пообедал кофе с 3 бутербродами.
|
||||||
|
- Смотрел Ютуб. Зашел, немного порыбачил в TESO, получил 2 икры.
|
||||||
|
- Лег спать примерно в 4 часа утра.
|
||||||
16
daily/November 28, 2025.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
week day: "Friday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Утром мама пыталась меня разбудить, у нее не получилось. Проспал до 15:15. В универ не пошел.
|
||||||
|
- Позавтракал кофе с сырком и мороженым.
|
||||||
|
- Смотрел Ютуб.
|
||||||
|
- Поел печенку без гарнира. Вкусная.
|
||||||
|
- Хотел поиграть в TESO, но, видимо сервера были переполнены, поэтому быстро вышел.
|
||||||
|
- Смотрел Ютуб, потом поел печёнку, но уже с макаронами.
|
||||||
|
- Начал делать [[Электротехника. Лабораторная работа №2|лабораторную по электротехнике]], почти доделал, но начинал садиться [[Манифест. Macbook|макбук]], поэтому поставил его на зарядку.
|
||||||
|
- Поиграл в TESO. Почти допрошел сюжетные задания, но затупил на моменте с поисками пропавших помощников в борьбе с каким-то там даэдра. Решил не пытаться.
|
||||||
|
- *Почти* доделал [[Электротехника. Лабораторная работа №2|лабу]]. Осталось нарисовать графики и схемы подключения. Еще осталось дописать «сопроводительный», или как его назвать, даже не знаю, текст. Не много, думаю, завтра, перед тем, как начать делать [[Электротехника. Лабораторная работа №3|третью]], доделаю [[Электротехника. Лабораторная работа №2|вторую]].
|
||||||
|
- Хочу попробовать не спать всю ночь, чтобы точно пойти на пары. Ненавижу пары в субботу. Зачем их поставили в выходной? Вторник же свободен… Да и еще так много.
|
||||||
|
- Постоянно тревожусь по поводу экзаменов. Кушать, можно сказать, не могу. По большей части из них я не переживаю. Понамарёву можно сделать приложение по сборке кубика Рубика, по ОСБС автомат, по философии нужно будет подготовить доклад и переписать конспекты, заодно их прочитав, думаю этого будет достаточно. По физкультуре, вроде, в этом семестре вообще зачета нет. По инжграфу нужно сделать курсовую и несколько лабораторных доделать, думаю завтра с лабами на тройку, по крайней мере, разберусь. Уравнения мат. физики — сделать типовики и контрольную, что, думаю за 2 вечера сделаю, а на зачете просто объяснить как их решать. Да и мужик, вроде, Рыжов нормальный, сомневаюсь, что будет валить на зачете. Самый пиздец — это ООП и физика. С физикой я вообще не знаю что решать. Такое ощущение, что придется идти на допсу, не дай Бог, конечно. Потому что я, хоть убей, не понимаю эту блядскую физику, а к тому же, ебаный Шейнерман дает материала на 2 курса за один. То есть, сиди разбирайся сам. Пиздец! Высицкий–пидорас тоже пидрила тот еще. Весь в своего отца–пидораса. Думаю, они из одной шалавы-то и высрались. Ничтожный лысеющий жирный газонюх, в жизни ничего не достигший, при этом затирающий с максимально уверенным ебалом о том, что мне понадобиться в жизни/на работе. Это чмо смотрит нищие корпоративные рилсы, воспринимая каждый тамошний высер за чистую монету, АБСОЛЮТНО критически не анализируя чем ему ссут в уши. А это должно преподавать мне Объектно-ориентированное программирование. ДА ОН НИХУЯ НЕ ЗНАЕТ, НИХУЯ НЕ УМЕЕТ, при этом поглащает газы в миллионах кубических литров. Если честно, я ненавижу его и всю его семейку так, как ни ненавидел еще никого. Хотел пожелать ему самого плохого, но учитывая, что он работает преподавателем программирования в КОРАБЕЛКЕ!!!, он находится на своем месте. Большего это, как и его отец, как и его, возможно, сын, не достоины. Пусть гниют в нищите.
|
||||||
14
daily/November 29, 2025.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
week day: "Saturday"
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Ночью спать не ложился, чтобы успеть на пары. Почти не ел, перед выходом попил кофе.
|
||||||
|
- Успел на первую пару к Высицкому-пидорасу. Был тест, который написал довольно плохо. Из 6 вопросов смог кое-как ответить на 4, и то, скорее всего, неправильно. Под конец пары тупость Высицкого-пидораса начал смешить. В очередной раз убедился, что человек никогда не работал/проектировал реальные продукты. Не то, чтобы я это делал, но те тупые ошибки, которые он совершает, например делает 2 одинаковые функции в двух разных классах (следовательно, эти функции возвращают две разные переменные, которые, вроде должны быть одни), явно демонстрируют отсутствие у него какого-либо опыта, кроме опыта вдыхания собственных газов.
|
||||||
|
- Первую пару инжграфа ничего не делал, несколько раз пытался позвать преподшу, чтобы она проверила лабы, но желающих было слишком много, поэтому просто тупил.
|
||||||
|
- На второй паре уже получилось проверить мои лабораторные, поэтому засчитано у меня, вроде, до 8 включительно. Сделал еще девятую.
|
||||||
|
- На интернет технологии решил не идти, потому что под конец второго инжграфа уже заснул.
|
||||||
|
- По пути домой мама попросила у меня сходить забрать посылку на ПВЗ Вайлдбериза. Так как был очень уставший и мама сказала что там очереди не будет, а она была, очень взбесился, из-за чего грубо ответил женщине, работающей на ПВЗ и орал на маму. Очень стыдно. Когда я сонных, становлюсь очень агрессивным, хотя, когда выспался никакой агрессии в себе не чувствую. Очень странно.
|
||||||
|
- Попил кофе, сливки в котором оказались испорченными. Много какал.
|
||||||
|
- Мама начала подозревать, что я курю. Решил пока ограничивать себя в курении и поменять жидкость (и картридж) на новые, вроде менее пахучии. Курить теперь постараюсь только ночью и когда мамы нет дома.
|
||||||
|
- В 5 часов пошел мыться и лег спать.
|
||||||
12
daily/November 30, 2025.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
week day: Sunday
|
||||||
|
tags:
|
||||||
|
- daily
|
||||||
|
---
|
||||||
|
- Сначала проснулся в 12 ночи. Мама еще не спала, так как ей нужно было отвозить Настю в аэропорт, ведь она летит в Англию. Позавтракал кофе.
|
||||||
|
- Где-то в 2 часа ночи мама поехала отвозить Настю. Приехала ближе к 3 и легла спать.
|
||||||
|
- Поиграл в TESO. Смотрел ютуб.
|
||||||
|
- В 7 утра лег спать. Проспал до 15 часов.
|
||||||
|
- Очень переживал, что в комнате будет пахнуть жидкостью, но вроде, мама не замечает. Буду продолжать стараться по-минимуму палиться.
|
||||||
|
- К моему пробуждению, мама уже сделала оливье. Был очень рад. Им с кофе и позавтракал (во второй раз)
|
||||||
|
- Смотрел ютуб, поиграл в TESO. Отдыхал.
|
||||||
BIN
files/Pasted image 20251225035254.png
Normal file
|
After Width: | Height: | Size: 823 KiB |
BIN
files/Pasted image 20251225042139.png
Normal file
|
After Width: | Height: | Size: 823 KiB |
BIN
files/Pasted image 20251228223919.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
files/Pasted image 20260114080502.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
files/Pasted image 20260114080639.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
files/Pasted image 20260114080807.png
Normal file
|
After Width: | Height: | Size: 204 KiB |
BIN
files/Pasted image 20260114081250.png
Normal file
|
After Width: | Height: | Size: 495 KiB |
BIN
files/Pasted image 20260114081251.png
Normal file
|
After Width: | Height: | Size: 495 KiB |
BIN
files/Pasted image 20260114081444.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
files/Pasted image 20260114110858.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
files/Pasted image 20260114112200.png
Normal file
|
After Width: | Height: | Size: 414 KiB |
BIN
files/Pasted image 20260114112250.png
Normal file
|
After Width: | Height: | Size: 364 KiB |
BIN
files/Pasted image 20260114112432.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
files/Pasted image 20260114112514.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
files/Pasted image 20260114112807.png
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
files/Pasted image 20260114112952.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
files/Pasted image 20260114125915.png
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
files/Pasted image 20260114130045.png
Normal file
|
After Width: | Height: | Size: 122 KiB |