From 88547233e24876958799e73dbd34d8df0dadee97 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 27 Mar 2025 21:35:48 +1100 Subject: launcher: transparency action --- src/modules/launcher/actions.tsx | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/modules') diff --git a/src/modules/launcher/actions.tsx b/src/modules/launcher/actions.tsx index 053387c..11b07d0 100644 --- a/src/modules/launcher/actions.tsx +++ b/src/modules/launcher/actions.tsx @@ -8,6 +8,7 @@ import { setupCustomTooltip, type FlowBox } from "@/utils/widgets"; import { bind, execAsync, GLib, readFile, register, type Variable } from "astal"; import { Gtk, Widget } from "astal/gtk3"; import { launcher as config } from "config"; +import { setConfig } from "config/funcs"; import fuzzysort from "fuzzysort"; import AstalHyprland from "gi://AstalHyprland"; import { close, ContentBox, type LauncherContent, type Mode } from "./util"; @@ -24,6 +25,24 @@ interface ActionMap { [k: string]: IAction; } +const transparencyActions = { + off: { + icon: "blur_off", + name: "Off", + description: "Completely opaque", + }, + normal: { + icon: "blur_linear", + name: "Normal", + description: "Somewhat transparent", + }, + high: { + icon: "blur_on", + name: "High", + description: "Extremely transparent", + }, +}; + const autocomplete = (entry: Widget.Entry, action: string) => { entry.set_text(`${config.actionPrefix.get()}${action} `); entry.set_position(-1); @@ -89,6 +108,12 @@ const actions = (mode: Variable, entry: Widget.Entry): ActionMap => ({ description: "Change the current wallpaper", action: () => autocomplete(entry, "wallpaper"), }, + transparency: { + icon: "opacity", + name: "Transparency", + description: "Change shell's transparency", + action: () => autocomplete(entry, "transparency"), + }, todo: { icon: "checklist", name: "Todo", @@ -333,6 +358,17 @@ const Category = ({ path, wallpapers }: ICategory) => ( ); +const Transparency = ({ amount }: { amount: keyof typeof transparencyActions }) => ( + { + setConfig("style.transparency", amount).catch(console.error); + close(); + }} + /> +); + @register() export default class Actions extends Widget.Box implements LauncherContent { #map: ActionMap; @@ -380,6 +416,11 @@ export default class Actions extends Widget.Box implements LauncherContent { for (const { obj } of fuzzysort.go(term, list, { all: true, key: "path" })) this.#content.add(random ? : ); + } else if (action === "transparency") { + const list = Object.keys(transparencyActions); + + for (const { target } of fuzzysort.go(args[1], list, { all: true })) + this.#content.add(); } else { const list = this.#list.filter( a => this.#map[a].available?.() ?? !config.disabledActions.get().includes(a) -- cgit v1.2.3-freya