You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+53Lines changed: 53 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -207,6 +207,59 @@ Then add `fpath=(~/.zsh/completions $fpath)` to your .zshrc before your framewor
207
207
4. **Common Files**: Files that are shared across all profiles are stored in the `common` section and linked regardless of the active profile
208
208
5. **Sync**: Changes are committed and synced with GitHub automatically
209
209
210
+
## Working with Profiles
211
+
212
+
Profiles are how DotState organizes your dotfiles for different machines or contexts. Each profile has its own set of files, while**Common Files** are shared across all profiles automatically.
213
+
214
+
```
215
+
┌────────────────────┐
216
+
│ Common Files │
217
+
├────────────────────┤
218
+
│ .tmux.conf │
219
+
│ .gitconfig │ ┌────────────────────┐
220
+
│ .vimrc │ │ Server │
221
+
│ │ ├────────────────────┤
222
+
│ ├──────►│ .bashrc │
223
+
│ │ │ .profile │
224
+
└─┬─────────────────┬┘ │ .config.toml │
225
+
│ │ └────────────────────┘
226
+
│ │
227
+
▼ ▼
228
+
┌────────────────────┐ ┌────────────────────┐
229
+
│ Personal │ │ Work │
230
+
├────────────────────┤ ├────────────────────┤
231
+
│ .zshrc │ │ .zshrc │
232
+
│ .sshconfig │ Copy │ .sshconfig │
233
+
│ ... ├──────────►│ ... │
234
+
│ │ │ workfile.sh │
235
+
└────────────────────┘ └────────────────────┘
236
+
```
237
+
238
+
### Creating Profiles
239
+
240
+
In the TUI, go to **Manage Profiles** and press `C` to create a new profile. You can:
241
+
242
+
- **Start blank**for a completely new setup
243
+
- **Copy from an existing profile** to carry over files and packages — great for setting up a similar machine quickly
244
+
245
+
### Switching Profiles
246
+
247
+
Select a profile and press `Enter` to switch. DotState will remove symlinks for the old profile and create symlinks for the new one automatically. Common files stay linked regardless of which profile is active.
248
+
249
+
### Common Files
250
+
251
+
You decide which files are shared. Move any file to **Common** and it will be symlinked in every profile. Common files stay linked when you switch profiles. To move a file between profile-specific and common:
252
+
253
+
1. Go to **Manage Files**
254
+
2. Select a file
255
+
3. Press `M` to move it to Common (or back to the active profile)
256
+
257
+
### Use Cases
258
+
259
+
- **Multi-machine**: Use a `Personal` profile on your laptop, `Work` on your work machine, and `Server`forheadless setups. Keep shared configs (`.gitconfig`, `.tmux.conf`)in Common.
260
+
- **Same computer, different contexts**: Create profiles like `day`, `night`, or `focus` with different terminal themes and defaults, and switch between them instantly.
261
+
- **Quick duplication**: When setting up a second machine, create a new profile by copying from an existing one, then tweak what's different.
Copy file name to clipboardExpand all lines: website/src/pages/index.astro
+26-7Lines changed: 26 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -76,6 +76,8 @@ const sections = [
76
76
<divclass="section-content">
77
77
<p><strong>DotState</strong> is a terminal-based <strong>dotfile manager</strong> that helps you manage your dotfiles effortlessly. Whether you're syncing your configuration across multiple machines or setting up a new development environment, DotState makes it simple, safe, and fast.</p>
78
78
79
+
<imgsrc="/screenshot.png"alt="DotState TUI screenshot showing the main menu with Tokyo Night dark theme"class="screenshot"width="1130"height="868"loading="eager" />
80
+
79
81
<InstallWidget />
80
82
81
83
<h3>Why Use a Dotfile Manager?</h3>
@@ -122,6 +124,10 @@ const sections = [
122
124
<Tip>
123
125
<strong>Tip:</strong> When you select a file, it's automatically copied to your repository and a symlink is created in its place. This means your files are safely backed up and version controlled.
124
126
</Tip>
127
+
128
+
<h3>Profiles & Common Files</h3>
129
+
<p>Organize your dotfiles with <strong>profiles</strong> for different machines or contexts. Files you choose to mark as <strong>common</strong> are shared across all profiles — the rest stay profile-specific. See <ahref="#examples"class="section-link"data-section="examples">Examples</a> for workflows.</p>
<p>Create separate profiles for different contexts:</p>
409
+
<p>Profiles let you organize dotfiles for different machines or contexts. Each profile has its own files, while <strong>Common Files</strong> are shared across all profiles.</p>
410
+
<ul>
411
+
<li><strong>Create a profile:</strong> Press <kbd>C</kbd> in Manage Profiles</li>
412
+
<li><strong>Copy from existing:</strong> When creating, choose an existing profile to start with — copies all files and packages</li>
413
+
<li><strong>Switch profiles:</strong> Select a profile and press <kbd>Enter</kbd> — symlinks are swapped automatically</li>
414
+
</ul>
415
+
<p><strong>Example setups:</strong></p>
404
416
<ul>
405
-
<li><strong>Personal:</strong> Your personal dotfiles</li>
<li><strong>Multi-machine:</strong> <code>Personal</code> on your laptop, <code>Work</code> on your work machine, <code>Server</code> for headless setups</li>
418
+
<li><strong>Same computer:</strong> <code>day</code>, <code>night</code>, or <code>focus</code> profiles with different terminal themes</li>
408
419
</ul>
409
420
</ExampleCard>
410
421
411
422
<ExampleCardtitle="Sharing common files">
423
+
<p>You decide which files are shared. Move any file to <strong>Common</strong> and it will be symlinked in every profile. Files stay in Common when you switch profiles.</p>
412
424
<ol>
413
-
<li>Add a file like <code>.gitconfig</code> to your collection</li>
414
-
<li>Move it to the <strong>Common</strong> section</li>
415
-
<li>The file will now be symlinked in every profile</li>
425
+
<li>Go to <strong>Manage Files</strong></li>
426
+
<li>Select a file from your profile</li>
427
+
<li>Press <kbd>M</kbd> to move it to Common</li>
416
428
</ol>
429
+
<p>Press <kbd>M</kbd> again on a common file to move it back to the active profile.</p>
0 commit comments