xzhi17 downloadsRemember and restore the size and position of the settings popout window. 记住并恢复【在独立窗口中打开设置】窗口的尺寸和位置。
中文 | English
An Obsidian plugin that remembers the size and position of the settings popout window (introduced in Obsidian 1.13.0), and restores them automatically next time you open it.

Starting from Obsidian 1.13.0, Settings can open in a separate window instead of a modal dialog (toggle via Settings → Interface → Open settings in new window). However, the window always opens with a default size and position, and any manual adjustments are lost after closing.
This plugin solves that problem.
| Feature | Description |
|---|---|
| Remember window size | Saves the settings window size after drag-resizing |
| Remember window position | Saves the settings window position after drag-moving |
| Default size | Configurable default width & height, used when "remember size" is off |
| Multi-language | Supports English and Chinese, extensible via JSON locale files |
main.js and manifest.json from the latest release<vault>/.obsidian/plugins/obsidian-remember-settings-window/npm install
npm run build
dist/ folder into your vault's plugin directory:<vault>/.obsidian/plugins/obsidian-remember-settings-window/
After enabling the plugin, open its settings panel (Settings → Community plugins → Remember Settings Window):
| Setting | Description |
|---|---|
| Language | Choose display language (Auto follows your system locale) |
| Remember window size | Toggle on/off. When on, the settings window reopens with the last drag-resized dimensions |
| Remember window position | Toggle on/off. When on, the settings window reopens at the last drag-moved screen position |
| Default width / height | The size applied when "remember size" is off |
All settings take effect the next time the settings window opens.
The plugin loads language files in real-time from the locale/ directory inside the plugin folder. New language files are detected automatically when you open the settings panel — no restart or reload needed.
| File | _displayName |
Language |
|---|---|---|
en.json |
English |
English |
zh-cn.json |
简体中文 |
Simplified Chinese |
These files are bundled in locale/ when you install the plugin.
locale/ directory:<vault>/.obsidian/plugins/obsidian-remember-settings-window/locale/
<code>.json (e.g. ja.json for Japanese, fr.json for French)_displayName field with the language's native name, then translate all other keys (copy from en.json as reference)Example ja.json:
{
"_displayName": "日本語",
"settingRememberSize": "リサイズ後のウィンドウサイズを記憶",
"settingRememberSizeDesc": "有効にすると、設定ウィンドウのサイズが記憶され、次回開いた時に復元されます。",
"settingRememberPosition": "移動後のウィンドウ位置を記憶",
"settingRememberPositionDesc": "有効にすると、設定ウィンドウの位置が記憶され、次回開いた時に復元されます。",
"defaultSizeHeader": "デフォルトのウィンドウサイズ",
"defaultSizeDesc": "「リサイズ後のウィンドウサイズを記憶」が無効の場合、以下のサイズが使用されます。",
"defaultWidth": "デフォルトの幅",
"defaultHeight": "デフォルトの高さ",
"language": "言語",
"languageDesc": "プラグインの表示言語を選択します。",
"languageAuto": "自動(システムに従う)",
"enabled": "有効",
"disabled": "無効"
}
Tip: If you create a translation, consider submitting a pull request so it can be bundled as a built-in language!
| File | Purpose |
|---|---|
data.json |
Plugin settings: language, toggles, and default dimensions |
window-geometry.json |
Saved window bounds — auto-generated on first load |
locale/*.json |
Language files — auto-copied on first load, user-extensible |
app.setting.open to intercept settings window creation.BrowserWindow.getAllWindows() against known window IDs to identify the new window.resize / move event listeners to capture geometry changes in real-time.resize-ended / move-ended (drag finished), persist the bounds to window-geometry.json with debouncing.setBounds().npm install
npm run dev # Watch mode, output to dist/
npm run build # Production build, output to dist/
If you enjoy this plugin and want to say thanks, you can buy me a bubble tea!
| WeChat Pay | WeChat Tip | Alipay |
|---|---|---|
![]() |
![]() |
![]() |