Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
48f7b82
Update README.md
jsmorabito Sep 11, 2021
4758227
Update README.md
jsmorabito Sep 11, 2021
4ae3f35
Update README.md
jsmorabito Sep 11, 2021
4d67672
Rename to Workspaces Plus. Adhere to style guidelines
nothingislost Sep 11, 2021
210be6b
Merge branch 'master' of github.com:nothingislost/obsidian-workspace-…
nothingislost Sep 11, 2021
3e992b7
Cosmetic fixes
nothingislost Sep 12, 2021
31b8520
Modal styling tweaks
nothingislost Sep 14, 2021
86a1edb
Update issue templates
nothingislost Sep 14, 2021
ddf9775
Update README.md
jsmorabito Sep 14, 2021
a43d7c8
Update README.md
jsmorabito Sep 14, 2021
603e136
Update README.md
jsmorabito Sep 15, 2021
cba16d2
Update README.md
jsmorabito Sep 15, 2021
15e1579
Fix bugs related to undo
nothingislost Sep 20, 2021
c7f4ae1
Update README.md
jsmorabito Sep 20, 2021
d4ccb7b
Add auto save on change. Fix scroll on selection
nothingislost Sep 20, 2021
01a4c39
Bump version
nothingislost Sep 21, 2021
f338109
Merge branch 'master' of github.com:nothingislost/obsidian-workspace-…
nothingislost Sep 21, 2021
b540957
Remove workspace modified indicator
nothingislost Sep 21, 2021
0eb5714
Update README.md
nothingislost Sep 21, 2021
caf1e63
Debounce workspace save on layout change
nothingislost Sep 21, 2021
d69c605
Refactor instructions and renaming
nothingislost Sep 21, 2021
7efba66
Additional refactoring to isolate function reponsibility
nothingislost Sep 21, 2021
d7b927a
Bump version
nothingislost Sep 21, 2021
449dcfc
Update settings load logic
nothingislost Sep 22, 2021
2cfbb95
Remove setting reassignment
nothingislost Sep 22, 2021
fa4c7bb
Refactoring and add per workspace hotkey support
nothingislost Sep 23, 2021
48b4765
Add additional Obsdiian types
nothingislost Sep 24, 2021
a04f4e7
Add body data attribute and fix cMenu buttons
nothingislost Sep 24, 2021
46addc8
Update readme and bump version
nothingislost Sep 24, 2021
82184d4
Fix bug in workspace rename
nothingislost Sep 24, 2021
384c6aa
Update README.md
jsmorabito Sep 29, 2021
2a57d6d
added survey link to feedback section
jsmorabito Nov 8, 2021
b1d2569
bump beta version
nothingislost Nov 9, 2021
eff8867
add workspace settings storage
nothingislost Nov 10, 2021
0e9fd19
bump beta version
nothingislost Nov 11, 2021
981e13c
bump beta version
nothingislost Nov 11, 2021
fbeb1bf
add ability to store settings per workspace
nothingislost Nov 11, 2021
c00c12e
bump beta version
nothingislost Nov 12, 2021
639d8c9
bump beta version
nothingislost Nov 13, 2021
6a14912
bump beta version
nothingislost Nov 13, 2021
b0b91bf
bump beta version
nothingislost Nov 14, 2021
e86fa5d
bump beta version
nothingislost Nov 15, 2021
81a2538
bump beta version
nothingislost Nov 18, 2021
2d7fbb9
add modes and per workspace settings
nothingislost Nov 21, 2021
0cbf54c
refactoring main.ts
nothingislost Nov 22, 2021
267a262
bump beta version to 0.4.9
nothingislost Nov 22, 2021
9255e9e
bump beta version to 0.4.10
nothingislost Nov 22, 2021
26c4e67
bump beta version to 0.4.11
nothingislost Nov 23, 2021
381c474
bump beta version to 0.4.12
nothingislost Nov 24, 2021
2986523
bump beta version to 0.4.13
nothingislost Nov 29, 2021
591ecc6
add workspaces settings/modes feature
nothingislost Nov 30, 2021
b16e4c4
bump beta version to 0.4.14
nothingislost Nov 30, 2021
cbdc75d
fix font size setting related bug
nothingislost Apr 2, 2022
07f982d
bump version to 0.3.2
nothingislost Jun 27, 2022
5bd2664
fix(#87): bug after obsidian 1.0 update
aropele Nov 8, 2022
8b72905
Merge pull request #90 from aropele/fix87
jsmorabito Nov 29, 2022
2eadf92
Update manifest.json
jsmorabito Dec 3, 2022
f7f23a9
fix(modeModal, workspaceModal): remove inputEl generation
AB1908 Dec 9, 2022
7b96579
config: update manifest-beta version number
AB1908 Dec 9, 2022
cd7bb64
Merge pull request #94 from AB1908/master
jsmorabito Dec 9, 2022
121f681
fix: enable tabs to be parse in the workspace plugin
sytone May 16, 2023
4eaa3b0
Merge pull request #100 from sytone/master
jsmorabito Jul 19, 2023
4a81072
Update manifest-beta.json
jsmorabito Jul 20, 2023
e51ec3d
Testing
eharris128 Feb 7, 2025
6bb1b11
Merge pull request #110 from eharris128/master
jsmorabito Feb 7, 2025
dd747ca
feat: add option to automatically track and restore open files in wor…
Chiarchiaooo Dec 27, 2025
23b1815
feat: add methods to capture and restore open files in workspace
Chiarchiaooo Dec 27, 2025
7f3178e
feat: enhance workspace loading with open files tracking
Chiarchiaooo Dec 27, 2025
43b7264
fix: handle missing files during workspace restoration to maintain la…
Chiarchiaooo Dec 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/custom.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---


20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ data.json
.hotreload
*.zip
*.code-workspace
yarn.lock
yarn.lock
.vscode
dist
181 changes: 175 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,180 @@
# Obsidian Workspace Picker Plugin
# Workspaces Plus

This plugin allows for quick management of workspaces.
![Artboard-2-3](https://user-images.githubusercontent.com/46250921/133352216-e0a2c9b6-070b-46f7-9a6f-d3a18f0c69b1.png)

Idea inspiration via: @Johnny ✨
Workspaces Plus is a plugin that expands the functionality of [workspaces](https://help.obsidian.md/Plugins/Workspaces) in [Obsidian](https://obsidian.md/).

Plugin based off of Obsidian Theme Picker by @Kenset
## Features

### Manually installing the plugin
### Workspace Indicator

- Copy over `main.js`, `styles.css`, `manifest.json` to your vault `VaultFolder/.obsidian/plugins/obsidian-workspace-picker/`.
- current active workspace shown in status bar
- click on workspace name in status bar to open workspace picker menu
- `shift-click` status bar icon or workspace name to save the workspace
<img src="https://user-images.githubusercontent.com/46250921/133325073-af2d58ec-e8a1-48fb-a48c-792b348235fd.png" width="350">

### Workspace Picker

- switch, delete, rename, and create new workspaces
<img src="https://user-images.githubusercontent.com/46250921/133325287-94a36543-f0ee-4956-9ad5-91c572e5b3c4.png" width="350">

### Workspace Switcher modal

- open with assignable hotkey
- switch, delete, rename, and create new workspaces
<img src="https://user-images.githubusercontent.com/46250921/133325396-bc429aa5-696f-4e44-8e78-4a9bd504867e.png" width="400">

### Hotkeys

- open Workspaces Plus switcher modal
- open specific workspace by name

### Plugin Options

- Toggle keyboard shortcuts on/off for Workspace Picker
- Toggle workspace delete confirmation on/off
- Set default workspace switch behavior to always save when switching

### Theming Options

- Workspaces Plus adds a data attribute to the HTML document body which can be used to set workspace specific styling
- The data attribute is body[data-workspace-name="My Workspace"]
- The attribute will be updated upon the loading of any new workspace

### Workspace Overrides

- Ability to override pages in a workspace using the templates variables.

## How to use

After enabling the plugin from the settings menu, you will see that a workspace icon has been added to the status bar in the lower right corner of the interface. If you are already using workspaces in Obsidian, you will notice that the name of your current active workspace is located next to the that icon.

> :warning: **Obsidian's core workspace plugin must be activated for Workspaces Plus to work properly**

### Creating a Workspace

You can create a workspace through either the Workspace Picker or the Workspace Switcher modal with the same workflow

1. Type your new workspace name into the input field
2. Use `shift-enter` to create the new workspace

### Renaming a Workspace

Rename workspaces from the picker or modal by clicking on the pencil icon next to the workspace name

### Deleting a Workspace

Workspaces can be deleted by either using the trach can icon next to the workspaces name or pressing the shortcut `shift-delete` while the workspace is selected in the menu

### Opening a Workspace

1. Open the Workspace Switcher via hotkey or click on the workspace icon or name in status bar to open the Workspace Picker
2. You can open a workspace by clicking on it with your mouse or by pressing enter after navigating to it with the up/down arrows on your keyboard

### Saving Workspaces

- By default, workspaces are not automatically saved when switched
- You can save a workspace with `shift-click` on the workspace icon or name in the status bar
- From either switcher menu you can use `shift-enter` to save your current active workspace or `alt-enter` to save your current active workspace and switch to the new one you have selected
- In the Plugin Options menu (located in Obsidians settings) you can toggle on a setting which will automatically save the active workspace on switch

### Overriding a page in a Workspace

- In settings scroll to the bottom and open the workspace you want to modify.
- In the text box next to the page ID enter the string to load with template variables
- Example: 1 Journal/{{date:YYYY}}/{{date:YYYY-MM}}/{{date:YYYY-MM-DD}}.md
- Switch to the workspace and the page will be loaded with the value from the override with the variables replaced.

## Extra

<details>
<summary>Compact Workspace Picker CSS Snippet</summary>

![image](https://user-images.githubusercontent.com/46250921/135287222-ada674cf-e8e9-4bbf-9d99-07c9892b8e76.png)

```css
.workspaces-plus-modal.quick-switch {
padding: 0px;
border-radius: 5px;
min-width: 13em;
}

.workspaces-plus-moda.quick-switch .workspace-item {
padding-left: 2em;
padding-right: 4em;
font-size: 0.9em;
}

.workspaces-plus-modal.quick-switch .prompt-results {
padding-top: 0;
}

.workspaces-plus-modal.quick-switch .prompt-results::-webkit-scrollbar {
display: none;
}

.workspaces-plus-modal.quick-switch .workspace-results {
padding: 0px;
}

.workspaces-plus-modal.quick-switch .workspace-item.is-selected {
border-radius: 0px !important;
}

.workspaces-plus-modal.quick-switch input.prompt-input {
font-size: 0.9em;
padding: 0px 1em;
border-top-left-radius: 5px !important;
border-top-right-radius: 5px !important;
border-radius: 0px;
border: none !important;
border-bottom: 1px solid var(--background-modifier-border) !important;
}

.workspaces-plus-modal.quick-switch input.prompt-input:focus {
box-shadow: none;
border: none !important;
border-bottom: 1px solid var(--background-modifier-border) !important;
}

.workspaces-plus-modal.quick-switch .delete-workspace {
right: 0.7em !important;
}

.workspaces-plus-modal.quick-switch .rename-workspace {
right: 2em !important;
}
```

</details>

## Installation

- Copy over `main.js`, `styles.css`, `manifest.json` to your vault `VaultFolder/.obsidian/plugins/obsidian-workspaces-plus/`.
- via Obsidian Community Plugins browser

## Feedback

Share feedback, issues, and ideas on [github](https://github.com/nothingislost/obsidian-workspaces-plus/issues), with our [Workspaces Plus feedback survey](https://airtable.com/shrETC7GS1MOYSTAI), or tag the authors on Discord!

## Credits

- This plugin is being developed by [Johnny ✨](https://github.com/jsmorabito) and [Nothingislost](https://github.com/nothingislost)
- Workspace Picker and Modal based off of [Obsidian Theme Picker](https://github.com/kenset/obsidian-theme-picker) by [Kenset](https://github.com/kenset)

## Changelog

- 0.4.17 - Beta
- Fix issue with workspaces using tabs so they are parsed correctly for overrides.
- Added details on how to use overrides to template files and paths.

- 0.3.1
- Fix bug in workspace rename logic which was preventing hotkey reassignment

- 0.3.0
- Add hotkey support for loading specific workspaces
- This feature will create a command for every workspace in your vault, which can then be bound to hotkeys
- This feature supports renaming workspaces while maintaining the associated hotkey
- You can add these workspace load commands to cMenu and workspace renames will automatically update the cMenu button as well
- Add a data attribute to the body of the HTML document which indicates the currently active workspace name.
- The selector looks like this: body[data-workspace-name="My Workspace"]
86 changes: 0 additions & 86 deletions main.ts

This file was deleted.

10 changes: 10 additions & 0 deletions manifest-beta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"id": "workspaces-plus",
"name": "Workspaces Plus",
"version": "0.4.18",
"minAppVersion": "1.1.1",
"description": "Quickly switch and manage workspaces",
"author": "NothingIsLost",
"authorUrl": "https://github.com/nothingislost",
"isDesktopOnly": false
}
12 changes: 6 additions & 6 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"id": "workspace-picker",
"name": "Workspace Picker",
"version": "0.0.8",
"minAppVersion": "0.9.12",
"id": "workspaces-plus",
"name": "Workspaces Plus",
"version": "0.3.3",
"minAppVersion": "1.0.0",
"description": "Quickly switch and manage workspaces",
"author": "NothingIsLost",
"author": "NothingIsLost and Johnny ✨",
"authorUrl": "https://github.com/nothingislost",
"isDesktopOnly": true
}
}
Loading