ghostty-theme 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +8 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/random.d.ts.map +1 -1
- package/dist/commands/random.js +10 -4
- package/dist/commands/random.js.map +1 -1
- package/dist/commands/set.d.ts.map +1 -1
- package/dist/commands/set.js +8 -2
- package/dist/commands/set.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +90 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/themes.js +1 -1
- package/dist/lib/themes.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
npm install -g ghostty-theme
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
> **Requires**: [Ghostty](https://ghostty.org)
|
|
24
|
+
> **Requires**: [Ghostty](https://ghostty.org) 1.3.0 or newer installed and available in your `PATH`.
|
|
25
25
|
|
|
26
26
|
## Usage
|
|
27
27
|
|
|
@@ -67,8 +67,10 @@ It always picks a different theme from the one currently set.
|
|
|
67
67
|
## How It Works
|
|
68
68
|
|
|
69
69
|
1. Reads available themes via `ghostty +list-themes`
|
|
70
|
-
2.
|
|
71
|
-
3. Ghostty
|
|
70
|
+
2. Updates the `theme = ...` line in your Ghostty config
|
|
71
|
+
3. Reloads Ghostty through AppleScript on Ghostty 1.3.0+
|
|
72
|
+
|
|
73
|
+
**Manual config reload is not required.**
|
|
72
74
|
|
|
73
75
|
You can override the config path with the `GHOSTTY_CONFIG_PATH` environment variable.
|
|
74
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3E"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import {
|
|
2
|
+
import { applyTheme, getCurrentTheme } from "../lib/config.js";
|
|
3
3
|
import { getThemeNames } from "../lib/themes.js";
|
|
4
4
|
import { loadFavorites } from "../lib/favorites.js";
|
|
5
5
|
import { select } from "../lib/prompt.js";
|
|
@@ -20,7 +20,13 @@ export async function listCommand(options) {
|
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
const prev = getCurrentTheme();
|
|
23
|
-
|
|
23
|
+
try {
|
|
24
|
+
applyTheme(selected);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
24
30
|
if (prev) {
|
|
25
31
|
console.log(chalk.dim(`${prev} →`) + " " + chalk.bold.green(selected));
|
|
26
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA0B;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY;QACnD,KAAK;QACL,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/commands/random.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/commands/random.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA2B9D"}
|
package/dist/commands/random.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import {
|
|
2
|
+
import { applyTheme, getCurrentTheme } from "../lib/config.js";
|
|
3
3
|
import { getThemeNames } from "../lib/themes.js";
|
|
4
4
|
import { loadFavorites } from "../lib/favorites.js";
|
|
5
5
|
export function randomCommand(options) {
|
|
6
|
-
const pool = options.all ? getThemeNames() : loadFavorites();
|
|
6
|
+
const pool = [...new Set(options.all ? getThemeNames() : loadFavorites())];
|
|
7
7
|
if (pool.length === 0) {
|
|
8
8
|
console.error(chalk.red("No themes available."));
|
|
9
9
|
process.exit(1);
|
|
@@ -14,8 +14,14 @@ export function randomCommand(options) {
|
|
|
14
14
|
if (candidates.length === 0)
|
|
15
15
|
candidates = pool;
|
|
16
16
|
const picked = candidates[Math.floor(Math.random() * candidates.length)];
|
|
17
|
-
const prev =
|
|
18
|
-
|
|
17
|
+
const prev = current;
|
|
18
|
+
try {
|
|
19
|
+
applyTheme(picked);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
19
25
|
if (prev) {
|
|
20
26
|
console.log(chalk.dim(`${prev} →`) + " " + chalk.bold.green(picked));
|
|
21
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/commands/random.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/commands/random.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,aAAa,CAAC,OAA0B;IACtD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAE3E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,+CAA+C;IAC/C,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,UAAU,GAAG,IAAI,CAAC;IAE/C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,IAAI,CAAC;QACH,UAAU,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/commands/set.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/commands/set.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAoB7C"}
|
package/dist/commands/set.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import {
|
|
2
|
+
import { applyTheme, getCurrentTheme } from "../lib/config.js";
|
|
3
3
|
import { findTheme } from "../lib/themes.js";
|
|
4
4
|
export function setCommand(name) {
|
|
5
5
|
const resolved = findTheme(name);
|
|
@@ -8,7 +8,13 @@ export function setCommand(name) {
|
|
|
8
8
|
process.exit(1);
|
|
9
9
|
}
|
|
10
10
|
const prev = getCurrentTheme();
|
|
11
|
-
|
|
11
|
+
try {
|
|
12
|
+
applyTheme(resolved);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
12
18
|
if (prev) {
|
|
13
19
|
console.log(chalk.dim(`${prev} →`) + " " + chalk.bold.green(resolved));
|
|
14
20
|
}
|
package/dist/commands/set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/commands/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/commands/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/lib/config.d.ts
CHANGED
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAiIA,wBAAgB,UAAU,IAAI,MAAM,CAMnC;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAU/C;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAoBhD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAIlD"}
|
package/dist/lib/config.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
1
2
|
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
import { homedir } from "node:os";
|
|
@@ -9,15 +10,95 @@ function getConfigPath() {
|
|
|
9
10
|
if (process.env.GHOSTTY_CONFIG_PATH) {
|
|
10
11
|
return process.env.GHOSTTY_CONFIG_PATH;
|
|
11
12
|
}
|
|
12
|
-
// macOS: ~/Library/Application Support/com.mitchellh.ghostty/config が存在すれば優先
|
|
13
|
+
// macOS: ~/Library/Application Support/com.mitchellh.ghostty/config.ghostty が存在すれば優先
|
|
13
14
|
if (process.platform === "darwin") {
|
|
14
|
-
const
|
|
15
|
+
const appSupportDir = join(homedir(), "Library", "Application Support", "com.mitchellh.ghostty");
|
|
16
|
+
const appSupportGhosttyPath = join(appSupportDir, "config.ghostty");
|
|
17
|
+
if (existsSync(appSupportGhosttyPath)) {
|
|
18
|
+
return appSupportGhosttyPath;
|
|
19
|
+
}
|
|
20
|
+
const appSupportPath = join(appSupportDir, "config");
|
|
15
21
|
if (existsSync(appSupportPath)) {
|
|
16
22
|
return appSupportPath;
|
|
17
23
|
}
|
|
18
24
|
}
|
|
19
25
|
// XDG準拠のデフォルトパス(全プラットフォーム共通)
|
|
20
|
-
|
|
26
|
+
const xdgConfigDir = join(getXdgConfigHome(), "ghostty");
|
|
27
|
+
const xdgGhosttyPath = join(xdgConfigDir, "config.ghostty");
|
|
28
|
+
if (existsSync(xdgGhosttyPath)) {
|
|
29
|
+
return xdgGhosttyPath;
|
|
30
|
+
}
|
|
31
|
+
return join(xdgConfigDir, "config");
|
|
32
|
+
}
|
|
33
|
+
function parseVersion(versionOutput) {
|
|
34
|
+
const match = versionOutput.match(/Ghostty\s+(\d+)\.(\d+)\.(\d+)/);
|
|
35
|
+
if (!match)
|
|
36
|
+
return null;
|
|
37
|
+
return [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
38
|
+
}
|
|
39
|
+
function isAtLeastVersion(version, minimum) {
|
|
40
|
+
for (let i = 0; i < minimum.length; i++) {
|
|
41
|
+
if (version[i] > minimum[i])
|
|
42
|
+
return true;
|
|
43
|
+
if (version[i] < minimum[i])
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
function ensureGhosttySupportsAppleScript() {
|
|
49
|
+
let output;
|
|
50
|
+
try {
|
|
51
|
+
output = execFileSync("ghostty", ["+version"], { encoding: "utf-8" });
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
throw new Error("Ghostty is not available in PATH.");
|
|
55
|
+
}
|
|
56
|
+
const version = parseVersion(output);
|
|
57
|
+
if (!version || !isAtLeastVersion(version, [1, 3, 0])) {
|
|
58
|
+
throw new Error("Ghostty 1.3.0 or newer is required for AppleScript reload.");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function escapeAppleScriptString(value) {
|
|
62
|
+
return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
63
|
+
}
|
|
64
|
+
function getGhosttyAppPath() {
|
|
65
|
+
try {
|
|
66
|
+
const ghosttyPath = execFileSync("which", ["ghostty"], {
|
|
67
|
+
encoding: "utf-8",
|
|
68
|
+
}).trim();
|
|
69
|
+
const marker = ".app/Contents/MacOS/ghostty";
|
|
70
|
+
const markerIndex = ghosttyPath.indexOf(marker);
|
|
71
|
+
if (markerIndex !== -1) {
|
|
72
|
+
return ghosttyPath.slice(0, markerIndex + ".app".length);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Fall back to the standard app location below.
|
|
77
|
+
}
|
|
78
|
+
return "/Applications/Ghostty.app";
|
|
79
|
+
}
|
|
80
|
+
function reloadGhosttyConfig() {
|
|
81
|
+
if (process.platform !== "darwin") {
|
|
82
|
+
throw new Error("Automatic Ghostty config reload requires macOS AppleScript.");
|
|
83
|
+
}
|
|
84
|
+
const appPath = getGhosttyAppPath();
|
|
85
|
+
if (!existsSync(appPath)) {
|
|
86
|
+
throw new Error(`Ghostty.app was not found at ${appPath}.`);
|
|
87
|
+
}
|
|
88
|
+
execFileSync("osascript", [
|
|
89
|
+
"-e",
|
|
90
|
+
`tell application "${escapeAppleScriptString(appPath)}"`,
|
|
91
|
+
"-e",
|
|
92
|
+
"set win to front window",
|
|
93
|
+
"-e",
|
|
94
|
+
"set tab1 to selected tab of win",
|
|
95
|
+
"-e",
|
|
96
|
+
"set term1 to focused terminal of tab1",
|
|
97
|
+
"-e",
|
|
98
|
+
'perform action "reload_config" on term1',
|
|
99
|
+
"-e",
|
|
100
|
+
"end tell",
|
|
101
|
+
], { stdio: "ignore" });
|
|
21
102
|
}
|
|
22
103
|
export function readConfig() {
|
|
23
104
|
try {
|
|
@@ -43,7 +124,7 @@ export function setTheme(themeName) {
|
|
|
43
124
|
let content = readConfig();
|
|
44
125
|
const lines = content.split("\n");
|
|
45
126
|
let found = false;
|
|
46
|
-
for (let i =
|
|
127
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
47
128
|
if (/^theme\s*=/.test(lines[i])) {
|
|
48
129
|
lines[i] = `theme = ${themeName}`;
|
|
49
130
|
found = true;
|
|
@@ -56,4 +137,9 @@ export function setTheme(themeName) {
|
|
|
56
137
|
}
|
|
57
138
|
writeFileSync(configPath, lines.join("\n"), "utf-8");
|
|
58
139
|
}
|
|
140
|
+
export function applyTheme(themeName) {
|
|
141
|
+
ensureGhosttySupportsAppleScript();
|
|
142
|
+
setTheme(themeName);
|
|
143
|
+
reloadGhosttyConfig();
|
|
144
|
+
}
|
|
59
145
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,aAAa;IACpB,iBAAiB;IACjB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzC,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/themes.js
CHANGED
|
@@ -14,7 +14,7 @@ export function listAllThemes() {
|
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
export function getThemeNames() {
|
|
17
|
-
return listAllThemes().map((t) => t.name);
|
|
17
|
+
return [...new Set(listAllThemes().map((t) => t.name))];
|
|
18
18
|
}
|
|
19
19
|
export function themeExists(name) {
|
|
20
20
|
return getThemeNames().some((t) => t.toLowerCase() === name.toLowerCase());
|
package/dist/lib/themes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/lib/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,OAAO,MAAM;SACV,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/lib/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,OAAO,MAAM;SACV,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,aAAa,EAAE,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,aAAa,EAAE,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAC9C,CAAC;AACJ,CAAC"}
|