feat(binto): make minimal ags config
This commit is contained in:
parent
0194b45dc7
commit
0d045854ce
10 changed files with 489 additions and 0 deletions
32
devices/binto/config/ags/config.js
Normal file
32
devices/binto/config/ags/config.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import App from 'resource:///com/github/Aylur/ags/app.js';
|
||||||
|
import { exec } from 'resource:///com/github/Aylur/ags/utils.js';
|
||||||
|
|
||||||
|
import Pointers from 'file:///home/matt/.nix/devices/wim/config/ags/services/pointers.js';
|
||||||
|
|
||||||
|
import Bar from './js/bar/main.js';
|
||||||
|
import { NotifPopups, NotifCenter } from './js/notifications/main.js';
|
||||||
|
|
||||||
|
const scss = App.configDir + '/scss/main.scss';
|
||||||
|
const css = App.configDir + '/style.css';
|
||||||
|
exec(`sassc ${scss} ${css}`);
|
||||||
|
|
||||||
|
|
||||||
|
export default {
|
||||||
|
style: css,
|
||||||
|
|
||||||
|
notificationPopupTimeout: 5000,
|
||||||
|
cacheNotificationActions: true,
|
||||||
|
|
||||||
|
onConfigParsed: () => {
|
||||||
|
globalThis.Ponters = Pointers;
|
||||||
|
},
|
||||||
|
|
||||||
|
closeWindowDelay: {
|
||||||
|
'notification-center': 500,
|
||||||
|
},
|
||||||
|
windows: [
|
||||||
|
Bar(),
|
||||||
|
NotifCenter(),
|
||||||
|
NotifPopups(),
|
||||||
|
],
|
||||||
|
};
|
15
devices/binto/config/ags/js/bar/buttons/clock.js
Normal file
15
devices/binto/config/ags/js/bar/buttons/clock.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { Label } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
|
||||||
|
export default () => Label({
|
||||||
|
className: 'clock',
|
||||||
|
|
||||||
|
connections: [[1000, (self) => {
|
||||||
|
const time = imports.gi.GLib
|
||||||
|
.DateTime.new_now_local();
|
||||||
|
|
||||||
|
self.label = time.format('%a. ') +
|
||||||
|
time.get_day_of_month() +
|
||||||
|
time.format(' %b. %H:%M');
|
||||||
|
}]],
|
||||||
|
})
|
34
devices/binto/config/ags/js/bar/main.js
Normal file
34
devices/binto/config/ags/js/bar/main.js
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
import { Box, CenterBox, Window } from 'resource:///com/github/Aylur/ags/widget.js';
|
||||||
|
|
||||||
|
import SysTray from 'file:///home/matt/.nix/devices/wim/config/ags/js/bar/buttons/systray.js';
|
||||||
|
import NotifButton from 'file:///home/matt/.nix/devices/wim/config/ags/js/bar/buttons/notif-button.js';
|
||||||
|
import Clock from './buttons/clock.js';
|
||||||
|
|
||||||
|
export default () => Window({
|
||||||
|
name: 'bar',
|
||||||
|
layer: 'overlay',
|
||||||
|
exclusivity: 'exclusive',
|
||||||
|
anchor: ['bottom', 'left', 'right'],
|
||||||
|
monitor: 1,
|
||||||
|
|
||||||
|
child: CenterBox({
|
||||||
|
start_widget: Box({
|
||||||
|
hpack: 'start',
|
||||||
|
children: [
|
||||||
|
SysTray(),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
|
||||||
|
center_widget: Box({
|
||||||
|
hpack: 'center',
|
||||||
|
}),
|
||||||
|
|
||||||
|
end_widget: Box({
|
||||||
|
hpack: 'end',
|
||||||
|
children: [
|
||||||
|
NotifButton(),
|
||||||
|
Clock(),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
});
|
27
devices/binto/config/ags/js/notifications/main.js
Normal file
27
devices/binto/config/ags/js/notifications/main.js
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import PopUpsWidget from 'file:///home/matt/.nix/devices/wim/config/ags/js/notifications/popup.js';
|
||||||
|
import NotifCenterWidget from 'file:///home/matt/.nix/devices/wim/config/ags/js/notifications/center.js';
|
||||||
|
|
||||||
|
import PopupWindow from 'file:///home/matt/.nix/devices/wim/config/ags/js/misc/popup.js';
|
||||||
|
|
||||||
|
|
||||||
|
export const NotifPopups = () => PopupWindow({
|
||||||
|
name: 'notifications',
|
||||||
|
anchor: ['bottom', 'left'],
|
||||||
|
visible: true,
|
||||||
|
transition: 'none',
|
||||||
|
closeOnUnfocus: 'stay',
|
||||||
|
monitor: 1,
|
||||||
|
|
||||||
|
child: PopUpsWidget(),
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
export const NotifCenter = () => PopupWindow({
|
||||||
|
name: 'notification-center',
|
||||||
|
anchor: ['bottom', 'right'],
|
||||||
|
margins: [0, 169, 0, 0],
|
||||||
|
transition: 'slide_up',
|
||||||
|
monitor: 1,
|
||||||
|
|
||||||
|
child: NotifCenterWidget(),
|
||||||
|
});
|
14
devices/binto/config/ags/scss/main.scss
Normal file
14
devices/binto/config/ags/scss/main.scss
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
window,
|
||||||
|
button,
|
||||||
|
eventbox,
|
||||||
|
box,
|
||||||
|
progressbar,
|
||||||
|
trough,
|
||||||
|
undershoot {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
@import '/home/matt/.nix/devices/wim/config/ags/scss/common';
|
||||||
|
@import './widgets/bar';
|
||||||
|
@import './widgets/notification';
|
||||||
|
@import './widgets/notification-center';
|
23
devices/binto/config/ags/scss/widgets/bar.scss
Normal file
23
devices/binto/config/ags/scss/widgets/bar.scss
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
.clock, .notif-panel {
|
||||||
|
margin: 0 5px 5px 0;
|
||||||
|
padding: 2.5px 5px;
|
||||||
|
background-color: $bgfull;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sys-tray {
|
||||||
|
margin: 0 0 5px 5px;
|
||||||
|
|
||||||
|
menubar {
|
||||||
|
background-color: $bgfull;
|
||||||
|
padding: 2.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
menuitem {
|
||||||
|
image { color: #CBA6F7; }
|
||||||
|
padding: 0 2px;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-size: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
106
devices/binto/config/ags/scss/widgets/notification-center.scss
Normal file
106
devices/binto/config/ags/scss/widgets/notification-center.scss
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
.notification-center {
|
||||||
|
min-height: 700px;
|
||||||
|
min-width: 524px;
|
||||||
|
background: $bg;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
padding: 10px;
|
||||||
|
margin-top: 22px;
|
||||||
|
margin-bottom: 9px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
all: unset;
|
||||||
|
transition: 200ms;
|
||||||
|
color: #eee;
|
||||||
|
background-color: #664C90;
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
padding: 4.5px 9px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-color: rgba(238, 238, 238, 0.154);
|
||||||
|
color: #f1f1f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: rgba(#664C90, 0.3);
|
||||||
|
color: rgba(238, 238, 238, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-list-box {
|
||||||
|
background: $bgfull;
|
||||||
|
padding: 0 12px;
|
||||||
|
box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.5);
|
||||||
|
|
||||||
|
scrollbar {
|
||||||
|
all: unset;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
|
||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-radius: 8px;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollbar.vertical {
|
||||||
|
transition: 200ms;
|
||||||
|
background-color: rgba(23, 23, 23, 0.3);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba(23, 23, 23, 0.7);
|
||||||
|
|
||||||
|
slider {
|
||||||
|
background-color: rgba(238, 238, 238, 0.7);
|
||||||
|
min-width: .6em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
slider {
|
||||||
|
background-color: rgba(238, 238, 238, 0.5);
|
||||||
|
border-radius: 9px;
|
||||||
|
min-width: .4em;
|
||||||
|
min-height: 2em;
|
||||||
|
transition: 200ms;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.placeholder {
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
image {
|
||||||
|
font-size: 7em;
|
||||||
|
text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.6);
|
||||||
|
-gtk-icon-shadow: 2px 2px 2px rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-size: 1.2em;
|
||||||
|
text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.6);
|
||||||
|
-gtk-icon-shadow: 2px 2px 2px rgba(0, 0, 0, 0.6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
206
devices/binto/config/ags/scss/widgets/notification.scss
Normal file
206
devices/binto/config/ags/scss/widgets/notification.scss
Normal file
|
@ -0,0 +1,206 @@
|
||||||
|
$background-color-1: rgba(238, 238, 238, 0.154);
|
||||||
|
$background-color-2: rgba(230, 112, 144, 0.5);
|
||||||
|
$background-color-3: rgba(238, 238, 238, 0.06);
|
||||||
|
$background-color-4: #51a4e7;
|
||||||
|
$background-color-5: transparent;
|
||||||
|
$background-color-6: #171717;
|
||||||
|
$background-color-7: rgba(23, 23, 23, 0.3);
|
||||||
|
$background-color-8: rgba(23, 23, 23, 0.7);
|
||||||
|
$background-color-9: rgba(238, 238, 238, 0.7);
|
||||||
|
$background-color-10: rgba(238, 238, 238, 0.5);
|
||||||
|
|
||||||
|
.notification.critical {
|
||||||
|
>box {
|
||||||
|
box-shadow: inset 0 0 0.5em 0 #e67090;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification {
|
||||||
|
>box {
|
||||||
|
all: unset;
|
||||||
|
box-shadow: 0 0 4.5px 0 rgba(0, 0, 0, 0.4);
|
||||||
|
margin: 9px 9px 0;
|
||||||
|
background-color: $bg;
|
||||||
|
padding: 16.2px;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.close-button {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-color: $background-color-1;
|
||||||
|
background-color: $background-color-2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin-right: 9px;
|
||||||
|
font-size: 1.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
font-size: .9em;
|
||||||
|
min-width: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
margin-right: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon.img {
|
||||||
|
border: 1px solid rgba(238, 238, 238, 0.03);
|
||||||
|
}
|
||||||
|
|
||||||
|
.actions {
|
||||||
|
button {
|
||||||
|
all: unset;
|
||||||
|
transition: all 500ms;
|
||||||
|
background-color: $background-color-3;
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
font-size: 1.2em;
|
||||||
|
padding: 4.5px 9px;
|
||||||
|
margin: 9px 4.5px 0;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
box-shadow: inset 0 0 0 1px #51a4e7;
|
||||||
|
background-color: $background-color-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-color: $background-color-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-image: linear-gradient(to right, #51a4e7, #6cb2eb);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-image: linear-gradient(to right, #51a4e7, #6cb2eb);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: $background-color-5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button.on {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-image: linear-gradient(to right, #51a4e7, #6cb2eb);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button.active {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-image: linear-gradient(to right, #51a4e7, #6cb2eb);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button.close-button {
|
||||||
|
all: unset;
|
||||||
|
transition: all 500ms;
|
||||||
|
background-color: $background-color-5;
|
||||||
|
background-image: none;
|
||||||
|
box-shadow: none;
|
||||||
|
margin-left: 9px;
|
||||||
|
min-width: 1.2em;
|
||||||
|
min-height: 1.2em;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
box-shadow: inset 0 0 0 1px #51a4e7;
|
||||||
|
background-color: $background-color-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-color: $background-color-1;
|
||||||
|
background-color: $background-color-2;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
background-image: linear-gradient(#e67090, #e67090);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-image: linear-gradient(to right, #51a4e7, #6cb2eb);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: $background-color-5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button.close-button.on {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-image: linear-gradient(to right, #51a4e7, #6cb2eb);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button.close-button.active {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03);
|
||||||
|
background-image: linear-gradient(to right, #51a4e7, #6cb2eb);
|
||||||
|
background-color: $background-color-4;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(238, 238, 238, 0.03), inset 0 0 0 99px rgba(238, 238, 238, 0.154);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,6 +42,7 @@
|
||||||
../../home/firefox
|
../../home/firefox
|
||||||
../../home/hyprland
|
../../home/hyprland
|
||||||
|
|
||||||
|
./home/ags.nix
|
||||||
./home/packages.nix
|
./home/packages.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
31
devices/binto/home/ags.nix
Normal file
31
devices/binto/home/ags.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
ags,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
configDir = config.services.device-vars.configDir;
|
||||||
|
symlink = config.lib.file.mkOutOfStoreSymlink;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
ags.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.ags = {
|
||||||
|
enable = true;
|
||||||
|
configDir = symlink "${configDir}/ags";
|
||||||
|
package = ags.packages.x86_64-linux.default;
|
||||||
|
extraPackages = [pkgs.libgudev];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# ags
|
||||||
|
sassc
|
||||||
|
coloryou
|
||||||
|
playerctl
|
||||||
|
|
||||||
|
## gui
|
||||||
|
pavucontrol # TODO: replace with ags widget
|
||||||
|
networkmanagerapplet # TODO: replace with ags widget
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in a new issue