MacBook-Pro-de-Oscar.local 2025-9-19:0:17:51

This commit is contained in:
oskar
2025-09-19 00:17:51 +02:00
parent 2fac0b13c1
commit e5371f4343
30 changed files with 371 additions and 210 deletions

2
.obsidian/app.json vendored
View File

@@ -1,7 +1,7 @@
{
"legacyEditor": false,
"livePreview": true,
"readableLineLength": true,
"readableLineLength": false,
"foldIndent": true,
"useTab": false,
"vimMode": true,

View File

@@ -1,7 +1,7 @@
{
"theme": "system",
"cssTheme": "Minimal",
"baseFontSize": 24.5,
"cssTheme": "",
"baseFontSize": 23.5,
"enabledCssSnippets": [
"pdf_darkmode",
"query_header_title",
@@ -37,7 +37,8 @@
"dataview",
"omts-[ui] Compact Tab Header",
"general_interface",
"compact_tabs"
"compact_tabs",
"ITS-checkboxes"
],
"interfaceFontFamily": "CMU Bright,CMU Sans Serif,FiraCode Nerd Font",
"textFontFamily": "CMU Sans Serif,FiraCode Nerd Font,CMU Serif",

View File

@@ -36,11 +36,11 @@
"themed-discord-rpc",
"languagetool",
"obsidian-meta-bind-plugin",
"pane-relief",
"obsidian-spaced-repetition",
"obsidian-minimal-settings",
"github-sync",
"obsidian-completr",
"default-template",
"typewriter-mode"
"maximise-active-pane-obsidian",
"pane-relief"
]

View File

@@ -21,7 +21,7 @@
"word-count": false,
"slides": true,
"audio-recorder": false,
"workspaces": false,
"workspaces": true,
"file-recovery": true,
"publish": false,
"sync": false,

View File

@@ -1036,5 +1036,29 @@
],
"key": "Z"
}
],
"maximise-active-pane-obsidian:maximise-active-pane": [
{
"modifiers": [
"Mod",
"Shift"
],
"key": "x"
},
{
"modifiers": [
"Ctrl"
],
"key": "Z"
}
],
"workspaces:open-modal": [
{
"modifiers": [
"Ctrl",
"Shift"
],
"key": "W"
}
]
}

View File

@@ -0,0 +1,173 @@
'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 PluginBase = /** @class */ (function (_super) {
__extends(PluginBase, _super);
function PluginBase() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(PluginBase.prototype, "className", {
get: function () {
if (!this._cachedClassName) {
this._cachedClassName = 'plugin-' + this.manifest.id;
if (this._cachedClassName.endsWith('-obsidian')) {
this._cachedClassName = this._cachedClassName.substring(0, this._cachedClassName.lastIndexOf('-obsidian'));
}
}
return this._cachedClassName;
},
enumerable: false,
configurable: true
});
Object.defineProperty(PluginBase.prototype, "rootSplit", {
// helper property to get the rootSplit with some extra properties
get: function () { return this.app.workspace.rootSplit; },
enumerable: false,
configurable: true
});
// is this deprecated now, or what?
PluginBase.prototype.onInit = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/];
});
});
};
// runs when the plugin is loaded
PluginBase.prototype.onload = function () {
var _this = this;
// add in the required command pallete commands
this.addCommands();
// add in any settings
this.addSettings();
// wait for layout to be ready to perform the rest
this.app.workspace.layoutReady ? this.enable() : this.app.workspace.on('layout-ready', function () { return _this.enable(); });
};
// runs when the plugin is onloaded
PluginBase.prototype.onunload = function () {
// run through the disable steps
this.disable();
};
// perform any setup required to enable the plugin
PluginBase.prototype.enable = function () {
document.body.toggleClass(this.className, true);
};
// perform any required disable steps, leave nothing behind
PluginBase.prototype.disable = function () {
document.body.toggleClass(this.className, false);
};
// add in any required command pallete commands
PluginBase.prototype.addCommands = function () { };
// add in any settings
PluginBase.prototype.addSettings = function () { };
return PluginBase;
}(obsidian.Plugin));
// The actual plugin class
var MaximiseActivePanePlugin = /** @class */ (function (_super) {
__extends(MaximiseActivePanePlugin, _super);
function MaximiseActivePanePlugin() {
return _super !== null && _super.apply(this, arguments) || this;
}
// perform any setup required to enable the plugin
MaximiseActivePanePlugin.prototype.enable = function () {
_super.prototype.enable.call(this);
};
// perform any required disable steps, leave nothing behind
MaximiseActivePanePlugin.prototype.disable = function () {
_super.prototype.disable.call(this);
// remove the maximised class if necessary
this.rootSplit.containerEl.toggleClass('maximised', false);
};
// add in the required command pallete commands
MaximiseActivePanePlugin.prototype.addCommands = function () {
var _this = this;
// add the maximise command
this.addCommand({
id: 'maximise-active-pane',
name: 'Toggle',
hotkeys: [{ modifiers: ['Mod', 'Shift'], key: 'x' }],
callback: function () {
// simply toggle the 'maximised' class and let the css do its thing
_this.rootSplit.containerEl.toggleClass('maximised', !_this.rootSplit.containerEl.hasClass('maximised'));
_this.app.workspace.onLayoutChange();
}
});
};
return MaximiseActivePanePlugin;
}(PluginBase));
module.exports = MaximiseActivePanePlugin;
/* nosourcemap */

View File

@@ -0,0 +1,8 @@
{
"id": "maximise-active-pane-obsidian",
"name": "Maximise Active Pane",
"author": "death_au",
"description": "Simply fills the workspace with the active pane",
"isDesktopOnly": false,
"version": "0.0.3"
}

View File

@@ -0,0 +1,7 @@
.plugin-maximise-active-pane .workspace-split.maximised .workspace-leaf:not(.mod-active),
.plugin-maximise-active-pane .workspace-split.maximised .workspace-leaf.mod-active ~ .workspace-split {
display: none;
}
.plugin-maximise-active-pane .workspace-split.maximised .workspace-leaf.mod-active {
flex-basis: calc(100% - 4px);
}

View File

@@ -194,9 +194,15 @@
"custom": true
},
{
"char": "source",
"char": "source::",
"color": "158, 158, 158",
"icon": "lucide-align-left",
"icon": "lucide-scroll",
"custom": true
},
{
"char": ">",
"color": "158, 158, 158",
"icon": "lucide-send",
"custom": true
}
]

View File

@@ -8,7 +8,7 @@
"lineWidth": 40,
"lineWidthWide": 50,
"maxWidth": 98,
"textNormal": 24.5,
"textNormal": 23.5,
"textSmall": 18,
"imgGrid": false,
"imgWidth": "img-default-width",
@@ -29,7 +29,7 @@
"underlineExternal": true,
"folding": true,
"lineNumbers": false,
"readableLineLength": true,
"readableLineLength": false,
"devBlockWidth": false,
"theme": "moonstone",
"useSystemTheme": true,

View File

@@ -5,12 +5,12 @@
{
"id": 2,
"name": "memoire-L3",
"lastUpdate": 1757775981051
"lastUpdate": 1758232670180
},
{
"id": 1,
"name": "Ma bibliothèque",
"lastUpdate": 1757775981203
"lastUpdate": 1758232670337
}
],
"renderCitations": true,

View File

@@ -83,12 +83,52 @@
"Appearance-dark@@theme-dark-style-select": "theme-dark-background-darker",
"Appearance-dark@@card-layout-open-dark": true,
"Plugin@@colorful-checkbox": false,
"pane-relief@@pr-sliding-panes-desktop-width": "calc(50vw - 0.6*var(--ribbon-width))",
"minimal-edge-settings@@disable-border": false,
"minimal-edge-settings@@background-theme": "eclipse-theme",
"minimal-style@@file-header-font-size": "1.2em",
"minimal-style@@file-header-font-weight": 900,
"minimal-style@@file-header-justify": "left",
"minimal-style@@inline-title-color@@dark": "#FFFFFF",
"minimal-style@@inline-title-color@@light": "#000000"
"minimal-style@@inline-title-color@@light": "#000000",
"pane-relief@@pr-sliding-panes-desktop-width": "calc(50vw - 0.6*var(--ribbon-width))",
"ITS@@n-s-ani": false,
"ITS@@op-h": false,
"ITS@@rsb-up": false,
"ITS@@o-stat-bar": false,
"ITS@@btm-nav": false,
"ITS@@mbl-sidebar": false,
"ITS@@wide-sb-tabs": true,
"ITS@@sb-tabs-original": false,
"ITS@@sb-tabs-underline": false,
"ITS@@tabs-sidebar": false,
"ITS@@thin-ribbon": false,
"ITS@@float-sidebar": "none",
"ITS@@sidebar-action-display": "none",
"ITS@@float-sidebar-position": "sd-flt-top",
"ITS@@folder-arrow": false,
"ITS@@slrvb-b": false,
"ITS@@s-d": false,
"ITS@@slrvb-g": false,
"ITS@@select": "none",
"ITS@@t-d": false,
"ITS@@drwn": false,
"ITS@@nord": false,
"ITS@@mini": false,
"ITS@@its-d": false,
"ITS@@notion": false,
"ITS@@justified": false,
"ITS@@dis-tri-quote": true,
"ITS@@f-w-h": 600,
"ITS@@f-w-v": 600,
"ITS@@f-w-t": 500,
"ITS@@Header-Center": "none",
"ITS@@hash-top": false,
"ITS@@hd-indi": false,
"ITS@@hash-reg": false,
"ITS@@hd-ovr": false,
"ITS@@h-line": false,
"ITS@@sphd-und-1": false,
"ITS@@header-borders": false,
"ITS@@illusion": false,
"ITS@@illusion-one": false
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1,36 +0,0 @@
{
"version": null,
"isAnnounceUpdatesEnabled": true,
"isPluginActivated": false,
"isTypewriterScrollEnabled": true,
"isOnlyActivateAfterFirstInteractionEnabled": false,
"isOnlyMaintainTypewriterOffsetWhenReachedEnabled": false,
"isTypewriterOnlyUseCommandsEnabled": false,
"typewriterOffset": 0.5,
"isKeepLinesAboveAndBelowEnabled": false,
"linesAboveAndBelow": 5,
"isMaxCharsPerLineEnabled": false,
"maxCharsPerLine": 64,
"isDimUnfocusedEnabled": false,
"isDimHighlightListParentEnabled": false,
"isDimTableAsOneEnabled": true,
"dimUnfocusedMode": "paragraphs",
"dimUnfocusedEditorsBehavior": "dim",
"dimmedOpacity": 0.25,
"isPauseDimUnfocusedWhileScrollingEnabled": true,
"isPauseDimUnfocusedWhileSelectingEnabled": true,
"isHighlightCurrentLineEnabled": true,
"isFadeLinesEnabled": false,
"fadeLinesIntensity": 0.5,
"isHighlightCurrentLineOnlyInFocusedEditorEnabled": false,
"currentLineHighlightStyle": "box",
"currentLineHighlightUnderlineThickness": 1,
"currentLineHighlightColor-dark": "#444",
"currentLineHighlightColor-light": "#ddd",
"doesWritingFocusShowHeader": false,
"doesWritingFocusShowStatusBar": false,
"doesWritingFocusShowVignette": true,
"isWritingFocusFullscreen": true,
"writingFocusVignetteStyle": "box",
"isRestoreCursorPositionEnabled": false
}

File diff suppressed because one or more lines are too long

View File

@@ -1,14 +0,0 @@
{
"id": "typewriter-mode",
"name": "Typewriter Mode",
"author": "Davis Riedel",
"authorUrl": "https://davis-riedel.de/en/software",
"description": "Typewriter scroll, highlight current line, dim unfocused paragraphs and sentences, writing focus, restore cursor position and more.",
"isDesktopOnly": false,
"version": "1.1.0",
"minAppVersion": "0.15.0",
"fundingUrl": {
"Buy Me a Coffee": "https://www.buymeacoffee.com/davis.riedel",
"GitHub Sponsors": "https://github.com/sponsors/davisriedel"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,6 @@
{
"openExternalURLs": true,
"openExternalURLs": false,
"enableAdblocking": true,
"searchEngine": "google"
"searchEngine": "google",
"markdownPath": "sources/clippings"
}

View File

@@ -18,13 +18,12 @@ théories scientifiques = paradigmes d'un discours vrai
> Une théorie n'est ni **la rencontre de son objet** ([[épistémologie.réalisme]]) ni **la création de son propre objet** ([[épistémologie.antiréalisme]])
> - [[épistémologie.réalisme|réalisme]]
> - [[épistémologie.antiréalisme|antiréalisme]]
>
> Cette opposition n'est pas une opposition stable (la contemplation du [[épistémologie.réalisme|réalisme]] nécessite un travail d'appropriation de la nature, de conceptualisation, qui fait rejoindre un [[épistémologie.antiréalisme|antiréalisme]] premier)
[[épistémologie.réalisme|réalisme]]
[[Critique de la raison pure]]
[[espace (philosophie)|espace]]
- [[épistémologie.réalisme|réalisme]]
- [[Critique de la raison pure]]
- [[espace (philosophie)|espace]]
# trois grandes questions du cours
- il semble que $1 \implies 2 \implies 3$

19
daily/2024-06-29.md Normal file
View File

@@ -0,0 +1,19 @@
# Todo
```tasks
due 2024-06-29
not done
```
# I did
> [!smallquery]- Modified files
> ```dataview
> LIST file.mtime
> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc
> ```
```tasks
done 2024-06-29
short mode
```
# I am gratefull to

View File

@@ -9,6 +9,7 @@ author:
sibling:
- "[[désobéissance civile]]"
---
> [!definition]
> Terme inventé par [[Candice Delmas]], pour chercher à éviter deux tendances :
> - tendance académiste de rejeter tout mouvement social qui ne correspondrait pas au [[mythe de la non violence]]

View File

@@ -10,5 +10,5 @@ tags:
Voir : Chomsky,
- source :: [[Sur la télévision]]
- source:: [[Sur la télévision]]

View File

@@ -1,8 +1,10 @@
---
BC-tag-note-tag: "#howto"
BC-tag-note-field: down
up:
- "[[PKM]]"
- "[[]]"
---
up:: [[PKM]]
Notes sur la manière de faire quelque chose.
- i marquées par le tag #howto

View File

@@ -1,3 +1,7 @@
---
aliases:
- dataview
---
up::[[obsidian plugins]]
title::"traîter le vault comme une base de donnée"
#s/obsidian

View File

@@ -38,5 +38,10 @@ tags:
- def `def` courtes définitions
- dem `dem` courtes démonstrations
- prop `prop` propriétés simples / évidentes
- tel `tel` téléphone
- source:: `source::` pour les sources
- > `>` envoi de messages

View File

@@ -1,21 +1,25 @@
up::[[obsidian syntaxe]]
sibling:: [[obsidian plugin list callouts]]
#s/obsidian
---
up: "[[obsidian syntaxe]]"
sibling: "[[obsidian plugin list callouts]]"
tags: "#s/obsidian"
---
les types de checkboxes
# Minimal
- [ ] ` ` unchecked
- [x] `x` checked
- [-] `-` Barré
- [>] `>` Envoyé
- [<] `<` planifier (<)
- [<] `<` planifier
- [?] `?` Question
- [/] `/` Half done
- [!] `!` Important
- [b] `b` Bookmark
- [i] `i` information
- [I] `I` Idea
- [*] `*` star (`*`)
- [*] `*` star
- [p] `p` pros
- [c] `c` cons
- [l] `l` location
@@ -27,5 +31,46 @@ les types de checkboxes
- [d] `d` down
- ["] `"` quote
# ITS theme
- [ ] Unchecked
- [x] `x` Regular
- [X] `X` Checked
- [-] `-` Dropped
- [>] `>` Forward
- [<] `<` Migrated
- [D] `D` Date
- [?] `?` Question
- [/] `/` Half Done
- [+] `+` Add
- [R] `R` Research
- [!] `!` Important
- [i] `i` Idea
- [B] `B` Brainstorm
- [P] `P` Pro
- [C] `C` Con
- [Q] `Q` Quote
- [N] `N` Note
- [b] `b` Bookmark
- [I] `I` Information
- [p] `p` Paraphrase
- [L] `L` Location
- [E] `E` Example
- [A] `A` Answer
- [r] `r` Reward
- [c] `c` Choice
- [d] `d` Doing
- [T] `T` Time
- [@] `@` Character / Person
- [t] `t` Talk
- [O] `O` Outline / Plot
- [~] `~` Conflict
- [W] `W` World
- [f] `f` Clue / Find
- [F] `F` Foreshadow
- [H] `H` Favorite / Health
- [&] `&` Symbolism
- [s] `s` Secret

View File

@@ -1,5 +1,5 @@
---
BC-tag-note: "#t/personne"
BC-tag-note-tag: "#t/personne"
BC-tag-note-field: down
up:
- "[[gestion]]"

View File

@@ -1,13 +1,11 @@
---
aliases:
- (1) "Dans la police, on ne balance pas" : Valentin Gendrot raconte son infiltration l Konbini - YouTube
author::
source:
link: "https://www.youtube.com/watch?v=JHYC4BQwEXQ"
date-seen: 2024-06-29
date:
tags: "#t/citation"
---
author::
source::
link:: https://www.youtube.com/watch?v=JHYC4BQwEXQ
date-seen:: 2024-06-29
date::
#t/citation
# Description

BIN
sources/.DS_Store vendored

Binary file not shown.

View File

@@ -1,98 +0,0 @@
---
link: https://forum.obsidian.md/t/mobile-sync-with-git-on-ios-for-free-using-ish/20861
author:
- "[[Obsidian Forum]]"
published: 2021-07-14
created: 2025-05-08
tags:
- t/clippings
- s/obsidian
- s/informatique
---
Theres already a post about syncing with WorkingCopy ([\[Mobile\] Setting up iOS git-based syncing with mobile app (using Working Copy)](https://forum.obsidian.md/t/mobile-setting-up-ios-git-based-syncing-with-mobile-app-using-working-copy/16499)). However, the ability to push is paid, and it costs a lot, but without this there can be no sync!
I propose to use [iSH](https://ish.app/) to sync Obsidian with git.
- p Pros:
- Its free!
- It lets you use *fully-featured git* - the same git that runs on Alpine Linux
- c Cons:
- It requires using the Linux command-line
- There appears to be a *bug* in Obsidian 1.0.3 that doesnt show new files in the file explorer after you pull them from GitHub. This can be easily circumvented by sorting the notes
# Tutorial
Also see [the example repository](https://github.com/ForceBru/ObsidianVaultTest) I created to showcase this method.
Also see “Simpler way” below.
Assuming you have an *existing* repo on GitHub. You can also create the repo right from iSH - the `git` command youll be using is the exact same fully-featured `git` from Alpine Linux.
1. Create a new empty *local* vault in Obsidian
2. In iSH:
1. *First-time setup* - install git:
2. Update Alpine repos: `apk update`
3. Install git: `apk add git`
4. Create a directory called `obsidian` in your home directory by running `cd ~ && mkdir obsidian`.
5. Mount your local vault folder into the `obsidian` folder
6. Run `mount -t ios . obsidian`
7. A file picker will show up
8. Choose the folder with your local vault
9. Clone your git repository into `obsidian`
10. Change directory to `obsidian`: `cd obsidian`
11. Delete the `.obsidian` folder: `rm -rf .obsidian`
12. `git clone https://github.com/ForceBru/ObsidianVaultTest .` - use your own repository instead. Dont forget the period `.` - this is what allows you to clone the repo *into the current folder*.
13. (Optional) Run `ls -a` to see whether your files are there
3. In Obsidian
1. Restart Obsidian (might not be necessary)
2. Open the file explorer
3. Currently (Obsidian 1.0.3) its empty (looks like a bug)
4. Tap the “Sort” button (the rightmost one, with up/down arrows)
5. Select any sorting order you like
6. The files should appear
7. Use your Obsidian vault!
4. To **push** your changes, go back to iSH
1. Change directory to `obsidian` in your home directory: `cd ~/obsidian`
2. Run `git status` to confirm that there *are* modified files
3. *First-time setup* - tell git who you are:
4. Set username: `git config user.name ForceBruMobile`
5. Set e-mail address: `git config user.email "ForceBru@users.noreply.github.com"`
6. Add files, commit and push. For example:
7. Add *all* files into the commit: `git add .`
8. Commit: `git commit -m "Commit from mobile"`
9. Push: `git push`
10. This will ask you to enter your username and password
11. Git can use your personal access token to login automatically
12. Thats it! Take a look at [this example commit from iSH](https://github.com/ForceBru/ObsidianVaultTest/commit/f642c3334a870ca8ab2aa1355528403502433b2b)
5. To **pull** changes from GitHub:
1. In iSH:
1. Change directory to `obsidian` in your home directory: `cd ~/obsidian`
2. (Optional) Check whether there is stuff to pull
3. Bring remote refs up to date: `git remote update`
4. Check status: `git status`
5. It should say something like `Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded` if there is something to be updated
6. Actually update from the remote repo: `git pull`
2. In Obsidian:
1. Go to file explorer
2. If you dont see your new notes, do the sort trick again:
3. Tap the “Sort” button (the rightmost one, with up/down arrows)
4. Select any sorting order you like
5. The files should appear
3. Updates to *existing* notes seem to be reflected correctly
# Simpler way
Mount *the entire* Obsidian folder which contains *all* your vaults (as opposed to mounting just the vault).
In iSH:
1. Make directory to store Obsidian vaults: `cd ~ && mkdir obsidian`
2. Mount the file provider: `mount -t iOS . obsidian`
3. Choose `On My iDevice` and *select and open the `Obsidian` folder*
4. Change directory to `obsidian`: `cd obsidian`
5. Clone the repo with your vault *right there*: `git clone https://github.com/ForceBru/ObsidianVaultTest`
6. This will create a folder called `ObsidianVaultTest` that will be a git repo and that Obsidian will recognize as a vault
Then open the vault in Obsidian (might need to restart it), edit stuff, then push/pull changes as described in steps 3 and 4 in the original post.
To avoid entering login/password all the time, cache or store your credentials: [Git - Credential Storage](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage)