ags(runner/plugins/media): drop variables onClose

This commit is contained in:
retrozinndev
2025-05-11 20:54:38 -03:00
parent c574fa87f9
commit c06d06ee02
+72 -49
View File
@@ -3,54 +3,77 @@ import { ResultWidget, ResultWidgetProps } from "../../widget/runner/ResultWidge
import { Runner } from "../Runner"; import { Runner } from "../Runner";
import AstalMpris from "gi://AstalMpris"; import AstalMpris from "gi://AstalMpris";
export const PluginMedia = { export const PluginMedia = (() => {
prefix: ":", let playTitle: Variable<string>|null;
handle() { let previousTitle: Variable<string>|null;
const player = AstalMpris.get_default().players[0]; let nextTitle: Variable<string>|null;
if(!player) return new ResultWidget({ return {
icon: "folder-music-symbolic", prefix: ":",
title: "Couldn't find any players",
closeOnClick: false, onClose: () => {
description: "No media / player found with mpris" playTitle?.drop();
} as ResultWidgetProps); previousTitle?.drop();
return [ nextTitle?.drop();
new ResultWidget({
icon: bind(player, "playbackStatus").as((status) => status === AstalMpris.PlaybackStatus.PLAYING ? previousTitle = null;
"media-playback-pause-symbolic" playTitle = null;
: "media-playback-start-symbolic"), nextTitle = null;
},
handle() {
const player = AstalMpris.get_default().players[0];
playTitle = Variable.derive([
bind(player, "title"),
bind(player, "artist"),
bind(player, "playbackStatus")
], (title, artist, status) => `${ status === AstalMpris.PlaybackStatus.PLAYING ?
"Pause" : "Play"
} ${title} | ${artist}`);
previousTitle = Variable.derive([
bind(player, "title"),
bind(player, "artist")
], (title, artist) =>
`Go Previous ${ title ? title : player.busName }${ artist ? ` | ${artist}` : "" }`
);
nextTitle = Variable.derive([
bind(player, "title"),
bind(player, "artist")
], (title, artist) =>
`Go Next ${ title ? title : player.busName }${ artist ? ` | ${artist}` : "" }`
);
if(!player) return new ResultWidget({
icon: "folder-music-symbolic",
title: "Couldn't find any players",
closeOnClick: false, closeOnClick: false,
title: Variable.derive([ description: "No media / player found with mpris"
bind(player, "title"), } as ResultWidgetProps);
bind(player, "artist"), return [
bind(player, "playbackStatus") new ResultWidget({
], (title, artist, status) => `${ status === AstalMpris.PlaybackStatus.PLAYING ? icon: bind(player, "playbackStatus").as((status) => status === AstalMpris.PlaybackStatus.PLAYING ?
"Pause" : "Play" "media-playback-pause-symbolic"
} ${title} | ${artist}`)(), : "media-playback-start-symbolic"),
onClick: () => player && player.play_pause() closeOnClick: false,
} as ResultWidgetProps), title: playTitle(),
new ResultWidget({ onClick: () => player && player.play_pause()
icon: "media-skip-backward-symbolic", } as ResultWidgetProps),
closeOnClick: false, new ResultWidget({
title: Variable.derive([ icon: "media-skip-backward-symbolic",
bind(player, "title"), closeOnClick: false,
bind(player, "artist") title: previousTitle(),
], (title, artist) => onClick: () => player && player.canGoPrevious && player.previous()
`Go Previous ${ title ? title : player.busName }${ artist ? ` | ${artist}` : "" }` } as ResultWidgetProps),
)(), new ResultWidget({
onClick: () => player && player.canGoPrevious && player.previous() icon: "media-skip-forward-symbolic",
} as ResultWidgetProps), closeOnClick: false,
new ResultWidget({ title: nextTitle(),
icon: "media-skip-forward-symbolic", onClick: () => player && player.canGoNext && player.next()
closeOnClick: false, } as ResultWidgetProps)
title: Variable.derive([ ]
bind(player, "title"), },
bind(player, "artist") } as Runner.Plugin
], (title, artist) => })();
`Go Next ${ title ? title : player.busName }${ artist ? ` | ${artist}` : "" }`
)(),
onClick: () => player && player.canGoNext && player.next()
} as ResultWidgetProps)
]
},
} as Runner.Plugin;