Add ags workspaces
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -328,6 +328,14 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
font = {
|
||||||
|
size = mkOption {
|
||||||
|
type = ints.positive;
|
||||||
|
default = 12;
|
||||||
|
description = "The font size.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = package;
|
type = package;
|
||||||
|
@@ -12,7 +12,7 @@ pkgs.stdenv.mkDerivation {
|
|||||||
];
|
];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
bun build $src/index.ts --outfile=index.js \
|
bun build $src/src/index.ts --outfile=index.js \
|
||||||
--external="file://$src/*" \
|
--external="file://$src/*" \
|
||||||
--external="gi://*"
|
--external="gi://*"
|
||||||
'';
|
'';
|
@@ -1,4 +1,5 @@
|
|||||||
import date from './date/date';
|
import date from './date/date';
|
||||||
|
import workspace from './workspace/workspace';
|
||||||
|
|
||||||
export default (monitor: number) => Widget.Window({
|
export default (monitor: number) => Widget.Window({
|
||||||
monitor,
|
monitor,
|
||||||
@@ -11,13 +12,15 @@ export default (monitor: number) => Widget.Window({
|
|||||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||||
startWidget: Widget.Box({
|
startWidget: Widget.Box({
|
||||||
hexpand: true,
|
hexpand: true,
|
||||||
children: [],
|
children: [
|
||||||
|
workspace(),
|
||||||
|
],
|
||||||
}),
|
}),
|
||||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||||
centerWidget: Widget.Box({
|
centerWidget: Widget.Box({
|
||||||
hpack: 'center',
|
hpack: 'center',
|
||||||
children: [
|
children: [
|
||||||
date()
|
date(),
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
@@ -4,7 +4,7 @@ const clock = Variable(glib.DateTime.new_now_local(), {
|
|||||||
poll: [1000, () => glib.DateTime.new_now_local()]
|
poll: [1000, () => glib.DateTime.new_now_local()]
|
||||||
});
|
});
|
||||||
|
|
||||||
const time = Utils.derive([clock], (c) => c.format('%H:%M - %A, %e %B %Y') || '');
|
const time = Utils.derive([clock], (c) => c.format('%H:%M - %A, %d %B %Y') || '');
|
||||||
|
|
||||||
export default () => Widget.Label({
|
export default () => Widget.Label({
|
||||||
class_name: 'label',
|
class_name: 'label',
|
@@ -0,0 +1,23 @@
|
|||||||
|
import { range } from 'lib';
|
||||||
|
|
||||||
|
const hyprland = await Service.import('hyprland');
|
||||||
|
const dispatch = ws => hyprland.messageAsync(`dispatch workspace ${ws}`);
|
||||||
|
|
||||||
|
const workspaceButton = (i: number) => Widget.Label({
|
||||||
|
class_name: 'button',
|
||||||
|
attribute: i,
|
||||||
|
vpack: "center",
|
||||||
|
setup: self => self.hook(hyprland, () => {
|
||||||
|
self.toggleClassName('active', hyprland.active.workspace.id === i);
|
||||||
|
self.toggleClassName('occupied', (hyprland.getWorkspace(i)?.windows || 0) > 0);
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export default () => Widget.EventBox({
|
||||||
|
class_name: 'workspace',
|
||||||
|
onScrollUp: () => dispatch('e-1'),
|
||||||
|
onScrollDown: () => dispatch('e+1'),
|
||||||
|
child: Widget.Box({
|
||||||
|
children: range(10).map(workspaceButton),
|
||||||
|
}),
|
||||||
|
});
|
@@ -9,7 +9,7 @@
|
|||||||
"checkJs": true,
|
"checkJs": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"noImplicitAny": false,
|
"noImplicitAny": false,
|
||||||
"baseUrl": ".",
|
"baseUrl": "./src",
|
||||||
"typeRoots": [
|
"typeRoots": [
|
||||||
"./types",
|
"./types",
|
||||||
],
|
],
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
hmConfig = config.home-manager.users."${user.name}";
|
hmConfig = config.home-manager.users."${user.name}";
|
||||||
agsConfig = (import ./src { inherit pkgs; });
|
agsConfig = (import ./config { inherit pkgs; });
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home-manager.users."${user.name}" = {
|
home-manager.users."${user.name}" = {
|
||||||
|
@@ -3,3 +3,28 @@
|
|||||||
|
|
||||||
.label
|
.label
|
||||||
color: {{colors.on_surface.default.hex}}
|
color: {{colors.on_surface.default.hex}}
|
||||||
|
font-size: {{custom.font_size}}pt;
|
||||||
|
|
||||||
|
.workspace
|
||||||
|
min-height: {{custom.font_size}}pt;
|
||||||
|
|
||||||
|
.button
|
||||||
|
font-size: 0;
|
||||||
|
transition: .5s;
|
||||||
|
margin: 0 .3 * {{custom.padding}}pt;
|
||||||
|
background-color: {{colors.surface_variant.default.hex}};
|
||||||
|
min-width: .4 * {{custom.font_size}}pt;
|
||||||
|
min-height: .4 * {{custom.font_size}}pt;
|
||||||
|
border-radius: .5 * {{custom.font_size}}pt;
|
||||||
|
|
||||||
|
&.occupied
|
||||||
|
background-color: {{colors.on_surface.default.hex}}
|
||||||
|
min-width: .6 * {{custom.font_size}}pt;
|
||||||
|
min-height: .6 * {{custom.font_size}}pt;
|
||||||
|
border-radius: .5 * {{custom.font_size}}pt;
|
||||||
|
|
||||||
|
&.active
|
||||||
|
background-color: {{colors.primary.default.hex}}
|
||||||
|
min-width: 1.67 * {{custom.font_size}}pt;
|
||||||
|
min-height: {{custom.font_size}}pt;
|
||||||
|
border-radius: .4 * {{custom.font_size}}pt;
|
||||||
|
@@ -56,6 +56,7 @@ in
|
|||||||
opacity_hex = builtins.toString (percentageToHex hmConfig.theme.opacity);
|
opacity_hex = builtins.toString (percentageToHex hmConfig.theme.opacity);
|
||||||
opacity_shadow = builtins.toString (hmConfig.theme.opacity * .75);
|
opacity_shadow = builtins.toString (hmConfig.theme.opacity * .75);
|
||||||
opacity_shadow_hex = builtins.toString (percentageToHex (hmConfig.theme.opacity * .75));
|
opacity_shadow_hex = builtins.toString (percentageToHex (hmConfig.theme.opacity * .75));
|
||||||
|
font_size = builtins.toString hmConfig.theme.font.size;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user