Added ags
TODO copy ags config
This commit is contained in:
49
roles/ags/files/widget/bar/buttons/Launcher.ts
Normal file
49
roles/ags/files/widget/bar/buttons/Launcher.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import PanelButton from "../PanelButton"
|
||||
import options from "options"
|
||||
import nix from "service/nix"
|
||||
|
||||
const { icon, label, action } = options.bar.launcher
|
||||
|
||||
function Spinner() {
|
||||
const child = Widget.Icon({
|
||||
icon: icon.icon.bind(),
|
||||
class_name: Utils.merge([
|
||||
icon.colored.bind(),
|
||||
nix.bind("ready"),
|
||||
], (c, r) => `${c ? "colored" : ""} ${r ? "" : "spinning"}`),
|
||||
css: `
|
||||
@keyframes spin {
|
||||
to { -gtk-icon-transform: rotate(1turn); }
|
||||
}
|
||||
|
||||
image.spinning {
|
||||
animation-name: spin;
|
||||
animation-duration: 1s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
`,
|
||||
})
|
||||
|
||||
return Widget.Revealer({
|
||||
transition: "slide_left",
|
||||
child,
|
||||
reveal_child: Utils.merge([
|
||||
icon.icon.bind(),
|
||||
nix.bind("ready"),
|
||||
], (i, r) => Boolean(i || r)),
|
||||
})
|
||||
}
|
||||
|
||||
export default () => PanelButton({
|
||||
window: "launcher",
|
||||
on_clicked: action.bind(),
|
||||
child: Widget.Box([
|
||||
Spinner(),
|
||||
Widget.Label({
|
||||
class_name: label.colored.bind().as(c => c ? "colored" : ""),
|
||||
visible: label.label.bind().as(v => !!v),
|
||||
label: label.label.bind(),
|
||||
}),
|
||||
]),
|
||||
})
|
||||
Reference in New Issue
Block a user