summaryrefslogtreecommitdiffstatshomepage
path: root/dot_local/lib
diff options
context:
space:
mode:
Diffstat (limited to 'dot_local/lib')
-rw-r--r--dot_local/lib/dotfiles/canonical_desktop.py71
1 files changed, 54 insertions, 17 deletions
diff --git a/dot_local/lib/dotfiles/canonical_desktop.py b/dot_local/lib/dotfiles/canonical_desktop.py
index cbda77f..7269a3f 100644
--- a/dot_local/lib/dotfiles/canonical_desktop.py
+++ b/dot_local/lib/dotfiles/canonical_desktop.py
@@ -10,13 +10,18 @@ from pathlib import Path
HOME = Path.home()
STATE = HOME / ".local/state/dotfiles/gnome-settings.json"
EXTENSIONS = [
- "paperwm@paperwm.github.com",
+ "o-tiling@oliwebd.github.com",
"copyous@boerdereinar.dev",
"emoji-copy@felipeftn",
"Vitals@CoreCoding.com",
- "corporate-panel@dotfiles",
"ubuntu-appindicators@ubuntu.com",
]
+DISABLED_EXTENSIONS = [
+ "paperwm@paperwm.github.com",
+ "ubuntu-dock@ubuntu.com",
+ "tiling-assistant@ubuntu.com",
+ "corporate-panel@dotfiles",
+]
def save_state(saved: dict) -> None:
@@ -119,8 +124,20 @@ def shortcuts(saved: dict) -> None:
merge_key(schema, "custom-keybindings", paths, saved)
+def extensions(saved: dict) -> None:
+ schema = "org.gnome.shell"
+ settings = settings_object(schema)
+ if settings is None:
+ return
+ for key, added, removed in [
+ ("enabled-extensions", EXTENSIONS, DISABLED_EXTENSIONS),
+ ("disabled-extensions", DISABLED_EXTENSIONS, EXTENSIONS),
+ ]:
+ values = [value for value in settings.get_strv(key) if value not in removed]
+ write_key(schema, key, list(dict.fromkeys([*values, *added])), saved)
+
+
def apply_settings(saved: dict) -> None:
- merge_key("org.gnome.shell", "enabled-extensions", EXTENSIONS, saved)
merge_key(
"org.gnome.desktop.input-sources",
"xkb-options",
@@ -138,26 +155,47 @@ def apply_settings(saved: dict) -> None:
write_key(
"org.gnome.desktop.wm.keybindings", "toggle-fullscreen", ["<Super>f"], saved
)
- paper = "org.gnome.shell.extensions.paperwm.keybindings"
+ tiling(saved)
+ shortcuts(saved)
+ workspaces(saved)
+ panel(saved)
+ extensions(saved)
+
+
+def tiling(saved: dict) -> None:
+ schema = "org.gnome.shell.extensions.o-tiling"
+ for key, value in {
+ "tile-by-default": True,
+ "new-window-placement": "focused",
+ "active-hint-overlay-enabled": False,
+ "workspace-switcher-style": False,
+ "workspace-number-indicator": False,
+ "panel-transparency": False,
+ "mouse-cursor-follows-active-window": False,
+ "toggle-floating": ["<Super><Shift>space"],
+ }.items():
+ write_key(schema, key, value, saved)
for key in [
- "new-window",
- "take-window",
- "toggle-maximize-width",
- "slurp-in",
- "barf-out-active",
- "cycle-height",
+ "tile-enter",
+ "toggle-tiling",
+ "tile-orientation",
+ "pop-workspace-up",
+ "pop-workspace-down",
]:
- write_key(paper, key, [], saved)
+ write_key(schema, key, [], saved)
for direction, letter in zip(["left", "down", "up", "right"], "hjkl"):
binding = "<Super>Right" if direction == "right" else f"<Super>{letter}"
- write_key(paper, f"switch-{direction}", [binding], saved)
- write_key(paper, f"move-{direction}", [f"<Super><Shift>{letter}"], saved)
- shortcuts(saved)
- workspaces(saved)
- panel(saved)
+ write_key(schema, f"focus-{direction}", [binding], saved)
+ write_key(
+ schema, f"tile-move-{direction}-global", [f"<Super><Shift>{letter}"], saved
+ )
def panel(saved: dict) -> None:
+ emoji = "org.gnome.shell.extensions.emoji-copy"
+ write_key(emoji, "always-show", False, saved)
+ write_key(emoji, "active-keybind", True, saved)
+ write_key(emoji, "emoji-keybind", ["<Super>period"], saved)
schema = "org.gnome.shell.extensions.vitals"
monitor = shlex.join(
["/snap/bin/ghostty", "-e", str(HOME / ".nix-profile/bin/htop")]
@@ -183,7 +221,6 @@ def panel(saved: dict) -> None:
def workspaces(saved: dict) -> None:
write_key("org.gnome.mutter", "dynamic-workspaces", False, saved)
write_key("org.gnome.desktop.wm.preferences", "num-workspaces", 10, saved)
- write_key("org.gnome.shell.extensions.dash-to-dock", "hot-keys", False, saved)
for number in range(1, 11):
key = str(number % 10)
for action, modifier in [("switch", ""), ("move", "<Shift>")]: