feat(agsV2): fix breaking changes and add bg-fade
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
805c394945
commit
78206a4311
5 changed files with 35 additions and 9 deletions
|
@ -3,6 +3,7 @@ import { App } from 'astal';
|
|||
import style from './style.scss';
|
||||
|
||||
import Bar from './widgets/bar/wim';
|
||||
import BgFade from './widgets/bg-fade/main';
|
||||
|
||||
|
||||
App.start({
|
||||
|
@ -10,5 +11,6 @@ App.start({
|
|||
|
||||
main: () => {
|
||||
Bar();
|
||||
BgFade();
|
||||
},
|
||||
});
|
||||
|
|
|
@ -19,11 +19,14 @@ Hyprland.connect('event', () => {
|
|||
m1.size === m2.size &&
|
||||
Array.from(m1.keys()).every((key) => m1.get(key) === m2.get(key));
|
||||
|
||||
const newMonitors = JSON.parse(Hyprland.message('j/monitors')) as AstalHyprland.Monitor[];
|
||||
|
||||
const fs = FullscreenState.get();
|
||||
const fsClients = Hyprland.get_clients().filter((c) => {
|
||||
const mon = c.get_monitor();
|
||||
const mon = newMonitors.find((monitor) => monitor.id === c.get_monitor().id);
|
||||
|
||||
return c.fullscreen && c.workspace.id === mon?.activeWorkspace.id;
|
||||
return c.fullscreenClient !== 0 &&
|
||||
c.workspace.id === mon?.activeWorkspace.id;
|
||||
});
|
||||
|
||||
const monitors = fsClients.map((c) =>
|
||||
|
|
|
@ -26,21 +26,19 @@ const Workspace = ({ id = 0 }) => (
|
|||
setup={(self) => idle(() => {
|
||||
const update = (
|
||||
_: Widget.Box,
|
||||
addr?: string,
|
||||
client?: AstalHyprland.Client,
|
||||
) => {
|
||||
const workspace = Hyprland.get_workspace(id);
|
||||
const occupied = workspace && workspace.get_clients().length > 0;
|
||||
|
||||
self.toggleClassName('occupied', occupied);
|
||||
|
||||
if (!addr) {
|
||||
if (!client) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Deal with urgent windows
|
||||
const client = Hyprland.get_client(addr);
|
||||
const isThisUrgent = client &&
|
||||
client.workspace.id === id;
|
||||
client.get_workspace().get_id() === id;
|
||||
|
||||
if (isThisUrgent) {
|
||||
self.toggleClassName('urgent', true);
|
||||
|
@ -55,7 +53,7 @@ const Workspace = ({ id = 0 }) => (
|
|||
};
|
||||
|
||||
self
|
||||
.hook(Hyprland, 'event', update)
|
||||
.hook(Hyprland, 'event', () => update(self))
|
||||
|
||||
// Deal with urgent windows
|
||||
.hook(Hyprland, 'urgent', update)
|
||||
|
|
|
@ -18,7 +18,6 @@ export default () => (
|
|||
Astal.WindowAnchor.RIGHT
|
||||
}
|
||||
>
|
||||
|
||||
<centerbox className="bar widget">
|
||||
<box hexpand halign={Gtk.Align.START}>
|
||||
<Workspaces />
|
||||
|
|
24
nixosModules/ags/v2/widgets/bg-fade/main.tsx
Normal file
24
nixosModules/ags/v2/widgets/bg-fade/main.tsx
Normal file
|
@ -0,0 +1,24 @@
|
|||
import { Astal } from 'astal';
|
||||
|
||||
|
||||
export default () => {
|
||||
return (
|
||||
<window
|
||||
name="bg-fade"
|
||||
layer={Astal.Layer.BACKGROUND}
|
||||
exclusivity={Astal.Exclusivity.IGNORE}
|
||||
anchor={
|
||||
Astal.WindowAnchor.TOP |
|
||||
Astal.WindowAnchor.BOTTOM |
|
||||
Astal.WindowAnchor.LEFT |
|
||||
Astal.WindowAnchor.RIGHT
|
||||
}
|
||||
css={`
|
||||
background-image: -gtk-gradient (linear,
|
||||
left top, left bottom,
|
||||
from(rgba(0, 0, 0, 0.5)),
|
||||
to(rgba(0, 0, 0, 0)));
|
||||
`}
|
||||
/>
|
||||
);
|
||||
};
|
Loading…
Reference in a new issue