Updates, fix bar, add walker

This commit is contained in:
outfoxxed 2024-03-27 06:11:42 -07:00
parent 3b587f3e15
commit 2bfdda55d4
Signed by: outfoxxed
GPG Key ID: 4C88A185FB89301E
12 changed files with 284 additions and 161 deletions

View File

@ -1,42 +1,5 @@
{
"nodes": {
"advisory-db": {
"flake": false,
"locked": {
"lastModified": 1701193254,
"narHash": "sha256-Hr7efA3GjwqBkGYKmd3XmGckdPQikbcCmOrq7fmTp3A=",
"owner": "rustsec",
"repo": "advisory-db",
"rev": "43af5fef0591531a72ebb86c5f1c623ee95c62fe",
"type": "github"
},
"original": {
"owner": "rustsec",
"repo": "advisory-db",
"type": "github"
}
},
"crane": {
"inputs": {
"nixpkgs": [
"radicle",
"nixpkgs"
]
},
"locked": {
"lastModified": 1701622587,
"narHash": "sha256-o3XhxCCyrUHZ0tlta2W7/MuXzy+n0+BUt3rKFK3DIK4=",
"owner": "ipetkov",
"repo": "crane",
"rev": "c09d2cbe84cc2adfe1943cb2a0b55a71c835ca9a",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"emacs-overlay": {
"inputs": {
"flake-utils": [
@ -48,11 +11,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1710467097,
"narHash": "sha256-FjrUwzv3wt0W/ekgCgbAdjkShZNUdAEDx/+qLukQFkI=",
"lastModified": 1711416635,
"narHash": "sha256-mhqtVG7gZC5Dvi6WUZeT33muqZYNOXiye7FEauXGNBA=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "45dcc83490fe6befb6c1fd5bacf9ded14cdf0554",
"rev": "6be3f18f4547b7e16b914a3e1e55baa1e775a3e3",
"type": "github"
},
"original": {
@ -82,6 +45,27 @@
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"walker",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709336216,
"narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
@ -132,11 +116,11 @@
]
},
"locked": {
"lastModified": 1710452332,
"narHash": "sha256-+lKOoQ89fD6iz6Ro7Adml4Sx6SqQcTWII4t1rvVtdjs=",
"lastModified": 1711133180,
"narHash": "sha256-WJOahf+6115+GMl3wUfURu8fszuNeJLv9qAWFQl3Vmo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "096d9c04b3e9438855aa65e24129b97a998bd3d9",
"rev": "1c2c5e4cabba4c43504ef0f8cc3f3dfa284e2dbb",
"type": "github"
},
"original": {
@ -158,11 +142,11 @@
]
},
"locked": {
"lastModified": 1710091028,
"narHash": "sha256-yFk2kc8J2kVh0RWlwT+PQf0bpfUNcROOcRYcyQJbpk4=",
"lastModified": 1711035742,
"narHash": "sha256-5vvhCSUGG9TA2G1eIRgokuYizhRnZu0ZbcU1MXfHsUE=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "05db7dfd7fc261e0195e54f8a6d655d4f370e70f",
"rev": "6a92473237f430399a417e1c2da9d7fcd4970086",
"type": "github"
},
"original": {
@ -184,11 +168,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1710448953,
"narHash": "sha256-5OFDzw+LOYs4yoT1IRpJNa0SpvrMzgHq3J15Q4dh50E=",
"lastModified": 1711466169,
"narHash": "sha256-8LyPRWHz6YFWS5IIgjb94K6eDH5Riwe65BBkreC6v1c=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "045c3fbd854090b2b60ca025fedd3e62498ed1ec",
"rev": "ae52b7f4680716976d05b638aaa90e169d199117",
"type": "github"
},
"original": {
@ -204,11 +188,11 @@
]
},
"locked": {
"lastModified": 1709723828,
"narHash": "sha256-tx8Oslh1qeCRpysJYYc8WslI5qVkvaFP33QiDiSsHz0=",
"lastModified": 1711094856,
"narHash": "sha256-2TL7tbLLsh2xWhszubVU2xDv8dx1fUMmPnEXlERu+m4=",
"owner": "outfoxxed",
"repo": "hy3",
"rev": "890443f504419ec12c7591f7ef17cbea9d34c9ca",
"rev": "315e7902c9637e66352c9a26f6dff15c602fc85c",
"type": "github"
},
"original": {
@ -277,11 +261,11 @@
]
},
"locked": {
"lastModified": 1709914708,
"narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=",
"lastModified": 1710960526,
"narHash": "sha256-tt0UgVKWeLQ+tFzvqrm4uAZbzONwdGshpfiLHAQ1P2c=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2",
"rev": "a2f39421144d42541c057be235154ce21b76c0f6",
"type": "github"
},
"original": {
@ -312,11 +296,11 @@
]
},
"locked": {
"lastModified": 1710120787,
"narHash": "sha256-tlLuB73OCOKtU2j83bQzSYFyzjJo3rjpITZE5MoofG8=",
"lastModified": 1711249705,
"narHash": "sha256-h/NQECj6mIzF4XR6AQoSpkCnwqAM+ol4+qOdYi2ykmQ=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "e76ff2df6bfd2abe06abd8e7b9f217df941c1b07",
"rev": "34519f3bb678a5abbddf7b200ac5347263ee781b",
"type": "github"
},
"original": {
@ -349,11 +333,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1710272261,
"narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=",
"lastModified": 1711163522,
"narHash": "sha256-YN/Ciidm+A0fmJPWlHBGvVkcarYWSC+s3NTPk/P+q3c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2",
"rev": "44d0940ea560dee511026a53f0e2e2cde489b4d4",
"type": "github"
},
"original": {
@ -364,11 +348,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1710420202,
"narHash": "sha256-MvFKESbq4rUWuaf2RKPNYENaSZEw/jaCLo2gU6oREcM=",
"lastModified": 1711124224,
"narHash": "sha256-l0zlN/3CiodvWDtfBOVxeTwYSRz93muVbXWSpaMjXxM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "878ef7d9721bee9f81f8a80819f9211ad1f993da",
"rev": "56528ee42526794d413d6f244648aaee4a7b56c0",
"type": "github"
},
"original": {
@ -380,11 +364,11 @@
},
"nur": {
"locked": {
"lastModified": 1710454985,
"narHash": "sha256-7BjB5Bco+btNQA6fsZCoT+m04np1XJQtgrgY/dD0cBM=",
"lastModified": 1711416992,
"narHash": "sha256-N1D7mT7DX5CEndSsM3Q608glUsrqtovafiJdbVKva00=",
"owner": "nix-community",
"repo": "NUR",
"rev": "25e2f6726e0bc6bd9c08a89453713abcba3459f1",
"rev": "ea5441d71ded45d67d6766ea591960f94fab37f6",
"type": "github"
},
"original": {
@ -400,11 +384,11 @@
]
},
"locked": {
"lastModified": 1711024375,
"narHash": "sha256-l10c8cvYlZepcMApXQbOu2f8IaFd47cOgWTGs3Eb+b4=",
"lastModified": 1711533176,
"narHash": "sha256-AxHssrU8ekAxDl4EsfDmuWM9RMDJhS2fInjkDouo3Gs=",
"ref": "refs/heads/master",
"rev": "4eb5dc559342677d2e45a98c4e4db9c1c85c6757",
"revCount": 127,
"rev": "c3fe93efe652d4528098573d863ffcc14b236b4e",
"revCount": 135,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
@ -413,32 +397,6 @@
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"radicle": {
"inputs": {
"advisory-db": "advisory-db",
"crane": "crane",
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1710329763,
"narHash": "sha256-mxtwIkNzKWZ6ssPzisY1mzDAWW+wiMEIHy4asjClT3A=",
"ref": "refs/heads/master",
"rev": "54aacc96197a48b79fcc260f94312d824f5e0a34",
"revCount": 1767,
"type": "git",
"url": "https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git"
},
"original": {
"type": "git",
"url": "https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git"
}
},
"root": {
"inputs": {
"emacs-overlay": "emacs-overlay",
@ -452,37 +410,12 @@
"nixpkgs": "nixpkgs",
"nur": "nur",
"quickshell": "quickshell",
"radicle": "radicle",
"rust-overlay": "rust-overlay_2",
"stable": "stable"
"rust-overlay": "rust-overlay",
"stable": "stable",
"walker": "walker"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": [
"radicle",
"flake-utils"
],
"nixpkgs": [
"radicle",
"nixpkgs"
]
},
"locked": {
"lastModified": 1708308739,
"narHash": "sha256-FtKWP6d51kz8282jfziNNcCBpAvEzv2TtKH6dYIXCuA=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "d45281ce1027a401255db01ea44972afbc569b7e",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"flake-utils": [
"flake-utils"
@ -492,11 +425,11 @@
]
},
"locked": {
"lastModified": 1710382258,
"narHash": "sha256-2FW1q+o34VBweYQiEkRaSEkNMq3ecrn83VzETeGiVbY=",
"lastModified": 1711332768,
"narHash": "sha256-SFnlIwnrwJxEawLcrH7+zGb8spePcYyai5asMZnm0BM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "8ce81e71ab04a7e906fae62da086d6ee5d6cfc21",
"rev": "8a8e3ea9a9a4b2225cb5e33e07c3a337f820168c",
"type": "github"
},
"original": {
@ -565,6 +498,27 @@
"type": "github"
}
},
"walker": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1711539794,
"narHash": "sha256-ZFCYRbStTGDfZ1nnSlDgEAgXzhkRUrzY469gXfF4mY4=",
"owner": "abenz1267",
"repo": "walker",
"rev": "d7989dfc5212917502ac2bb40c1e8f08b6189fdb",
"type": "github"
},
"original": {
"owner": "abenz1267",
"repo": "walker",
"type": "github"
}
},
"wlroots": {
"flake": false,
"locked": {

View File

@ -27,11 +27,11 @@
inputs.flake-utils.follows = "flake-utils";
};
radicle = {
/*radicle = {
url = "git+https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
};*/
hyprland = {
url = "github:hyprwm/Hyprland";
@ -48,6 +48,11 @@
inputs.nixpkgs.follows = "nixpkgs";
};
walker = {
url = "github:abenz1267/walker";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/NUR";
# devenv

View File

@ -49,6 +49,7 @@ animations {
animation = borderangle, 1, 8, default
animation = fade, 1, 3, default
animation = workspaces, 1, 6, default
animation = layers, 1, 5, windowIn, slide
}
gestures {
@ -103,6 +104,15 @@ layerrule = blur, termspawner
layerrule = ignorezero, termspawner
layerrule = noanim, termspawner
layerrule = animation fade, shell:background
layerrule = blur, shell:bar
layerrule = ignorezero, shell:bar
layerrule = blur, walker
layerrule = ignorezero, walker
layerrule = animation popin 90%, walker
windowrulev2 = float, class:^(opensnitch_ui)$
windowrulev2 = dimaround, class:^(opensnitch_ui)$
windowrulev2 = float, class:^(org.kde.polkit-kde-authentication-agent-1)$
@ -117,7 +127,7 @@ windowrulev2 = dimaround, class:^(org.freedesktop.impl.portal.desktop.kde)$
windowrulev2 = float, class:^(AlacrittyFloating)$
$mod = SUPER
$launcher = wofi
$launcher = walker
bind = $mod+SHIFT, m, exit

View File

@ -160,15 +160,10 @@ in {
then []
else item.mimeTypes;
actions = {};
exec = "${item.exec} ${if entry ? noremote && entry.noremote then "-no-remote" else ""} -P ${entry.profile}";
})) entries);
imEntry = pkg.desktopItem.override (entry: {
name = "discord-firefox";
desktopName = "IMs (Firefox)";
exec = "${entry.exec} -no-remote -P Im";
mimeTypes = [];
});
in {
buildCommand = ''
${pkg.buildCommand}

View File

@ -6,15 +6,24 @@ import Quickshell.Wayland
PanelWindow {
id: root
PopupSurface {
id: popupSurface
screen: root.screen
bar: barRect
visible: false
PersistentProperties {
id: persist
reloadableId: "persist"
property bool barVisible: false
}
onWindowConnected: {
popupSurface.visible = true
PopupSurface {
id: popupSurface
reloadableId: "popupSurface"
screen: root.screen
bar: barRect
visible: persist.barVisible
}
onBackingWindowVisibleChanged: {
persist.barVisible = Qt.binding(() => backingWindowVisible);
}
anchors {
@ -52,9 +61,11 @@ PanelWindow {
left: parent.left
right: parent.right
}
ClockWidget {
Layout.fillWidth: true
popupSurface: popupSurface
barWindow: root
}
}
}

View File

@ -2,8 +2,8 @@ import QtQuick
import QtQuick.Layouts
OverlayWidget {
expandedWidth: 100
expandedHeight: 100
expandedWidth: 600
expandedHeight: 600
BarWidgetInner {
implicitHeight: layout.implicitHeight

View File

@ -7,6 +7,8 @@ Item {
required property real expandedHeight;
required default property Item widget;
required property var barWindow;
property bool expanded: false;
onExpandedChanged: {
@ -23,20 +25,22 @@ Item {
}
readonly property rect collapsedLayerRect: {
//console.log(`schrodinger's coordinate space: ${popupSurface.width} ${popupSurface.height}`);
const w = popupSurface.width;
const h = popupSurface.height;
void [barWindow.windowTransform, popupSurface.windowTransform];
return this.mapToItem(popupSurface.contentItem, 0, 0, width, height);
}
readonly property rect expandedLayerRect: popupSurface.expandedPosition(this)
readonly property rect layerRect: {
const [p, xCurve, yCurve] = [animationProgress, ShellGlobals.popoutXCurve, ShellGlobals.popoutYCurve];
return Qt.rect(
ShellGlobals.popoutXCurve.interpolate(animationProgress, collapsedLayerRect.x, expandedLayerRect.x),
ShellGlobals.popoutYCurve.interpolate(animationProgress, collapsedLayerRect.y, expandedLayerRect.y),
ShellGlobals.popoutXCurve.interpolate(animationProgress, collapsedLayerRect.width, expandedLayerRect.width),
ShellGlobals.popoutYCurve.interpolate(animationProgress, collapsedLayerRect.height, expandedLayerRect.height),
xCurve.interpolate(p, collapsedLayerRect.x, expandedLayerRect.x),
yCurve.interpolate(p, collapsedLayerRect.y, expandedLayerRect.y),
xCurve.interpolate(p, collapsedLayerRect.width, expandedLayerRect.width),
yCurve.interpolate(p, collapsedLayerRect.height, expandedLayerRect.height),
);
}
@ -50,6 +54,7 @@ Item {
widget.width = Qt.binding(() => layerRect.width);
widget.height = Qt.binding(() => layerRect.height);
}
Component.onDestruction: {
popupSurface.disconnectOverlay(this)
}

View File

@ -1,3 +1,4 @@
import QtQuick
import Quickshell
import Quickshell.Wayland
@ -18,11 +19,16 @@ WlrLayershell {
lastActiveOverlay = activeOverlay;
}
readonly property rect barRect: this.contentItem.mapFromItem(bar, 0, 0, bar.width, bar.height)
readonly property rect barRect: {
void [width, height];
this.contentItem.mapFromItem(bar, 0, 0, bar.width, bar.height)
}
readonly property real overlayXOffset: barRect.x + barRect.width + 10
exclusionMode: ExclusionMode.Ignore
color: "transparent"
namespace: "shell:bar"
Variants {
@ -31,7 +37,7 @@ WlrLayershell {
Region {
required property var modelData;
item: modelData == undefined ? null : modelData.widget
item: modelData.widget
}
}
@ -47,7 +53,7 @@ WlrLayershell {
width: {
const extents = overlays
.filter(overlay => overlay != undefined && !overlay.fullyCollapsed)
.filter(overlay => !overlay.fullyCollapsed)
.map(overlay => overlayXOffset + overlay.expandedWidth);
return Math.max(barRect.x + barRect.width, ...extents);
@ -59,8 +65,9 @@ WlrLayershell {
}
function disconnectOverlay(overlay: variant) {
const index = overlays.indexOf(overlay);
if (index != -1) overlays.splice(index, 1);
// Splice seems to make it undefined as an intermediary step
// which breaks bindings.
overlays = overlays.filter(o => o != overlay);
}
function expandedPosition(overlay: variant): rect {

View File

@ -5,9 +5,9 @@ import Quickshell
Singleton {
readonly property var colors: QtObject {
readonly property var bar: "#30e0ffff";
readonly property var bar: "#30c0ffff";
readonly property var barOutline: "#50ffffff";
readonly property var widget: "#40e0ffff";
readonly property var widget: "#40ceffff";
readonly property var widgetOutline: "#60ffffff";
}

View File

@ -21,6 +21,7 @@ ShellRoot {
screen: modelData
WlrLayershell.layer: WlrLayer.Background
WlrLayershell.namespace: "shell:background"
anchors {
top: true

View File

@ -0,0 +1,48 @@
{ inputs, impurity, ... }: {
imports = [ inputs.walker.homeManagerModules.walker ];
programs.walker = {
enabled = true;
runAsService = true;
config = {
fullscreen = true;
scrollbar_policy = "external";
activation_mode.use_alt = true;
align = {
width = 500;
horizontal = "center";
vertical = "center";
margins.top = 0;
};
list = {
height = 500;
fixed_height = true;
};
modules = [
{
name = "applications";
prefix = "";
}
{
name = "runner";
prefix = ">";
}
{
name = "commands";
prefix = "";
switcher_exclusive = true;
}
{
name = "switcher";
prefix = "/";
}
];
};
};
xdg.configFile."walker/style.css".source = impurity.link ./style.css;
}

View File

@ -0,0 +1,87 @@
* {
color: white;
}
#window {
}
#box {
background: #c0ffff30;
padding: 7px;
border: 1px solid #ffffff50;
border-radius: 5px;
}
#search,
#typeahead {
border-radius: 0;
outline: none;
outline-width: 0px;
box-shadow: none;
border-bottom: none;
border: none;
background: #e0ffff30;
padding-left: 10px;
padding-right: 10px;
padding-top: 0px;
padding-bottom: 0px;
border-radius: 5px;
}
#typeahead {
background: none;
opacity: 0.5;
}
#search placeholder {
opacity: 0.5;
}
#search text {
padding-left: 7px;
}
#list {
background: none;
}
#list *:selected {
border-radius: 5px;
border: 1px solid #ffffff30;
background: #e0ffff20;
}
.item {
padding: 5px;
border-radius: 2px;
}
.icon {
padding-right: 5px;
}
.textwrapper {
}
.label {
}
.sub {
opacity: 0.5;
}
.activationlabel {
opacity: 0.25;
}
.activation .activationlabel {
opacity: 1;
color: #76946a;
}
.activation .textwrapper,
.activation .icon,
.activation .search {
opacity: 0.5;
}