flake: update lock file

This commit is contained in:
Guanran Wang 2024-03-06 16:53:17 +08:00
parent 0e45e8e390
commit 935372bb41
Signed by: nyancat
SSH key fingerprint: SHA256:8oWGKciPALWut/6WA27oFKofX+6Wtc0gQnsefXLQx/8
9 changed files with 1884 additions and 178 deletions

View file

@ -10,11 +10,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1708539149, "lastModified": 1709561402,
"narHash": "sha256-LgkOe+y8Lk7LjB6MzKZ6enM8NPahdM7Gdg1es4Zi3IU=", "narHash": "sha256-rPGuqkPmaeLz+pHxoPkUw/nANLB9uX3OgYoP60aRJxM=",
"owner": "berberman", "owner": "berberman",
"repo": "flakes", "repo": "flakes",
"rev": "7220e84f72ac182cf71cb9f4f66c927c48fc4cf6", "rev": "a56b8e19a8a1b8487aa0a52f42ab4dfbb2b78ca6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -30,11 +30,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1708794349, "lastModified": 1709610799,
"narHash": "sha256-jX+B1VGHT0ruHHL5RwS8L21R6miBn4B6s9iVyUJsJJY=", "narHash": "sha256-5jfLQx0U9hXbi2skYMGodDJkIgffrjIOgMRjZqms2QE=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "2c94ff9a6fbeb9f3ea0107f28688edbe9c81deaa", "rev": "81c393c776d5379c030607866afef6406ca1be57",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -50,11 +50,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1708910350, "lastModified": 1709682352,
"narHash": "sha256-cTuJVlOm05aQFIgGuYikgkrI61P2vTO2OfXwIRWEzUg=", "narHash": "sha256-71S/64RbyADT6FUVJq4WLiNbmcxFvgMsSihf/C2Hgno=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "a13f36255cf4ce99cc4236a34251c2e7106e101d", "rev": "ad5e8bd14df2e6bdb836582577dc163318617738",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -85,11 +85,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1706830856, "lastModified": 1709336216,
"narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -145,11 +145,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1709204054, "lastModified": 1709710941,
"narHash": "sha256-U1idK0JHs1XOfSI1APYuXi4AEADf+B+ZU4Wifc0pBHk=", "narHash": "sha256-4FjuX5kGQhvrxkwuB3tAcA7cqNgNW10eZ7qzePfl+kM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2f3367769a93b226c467551315e9e270c3f78b15", "rev": "3c7bacf1d42e533299c5e3baf74556a0e0ac3d0e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -198,11 +198,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1709051793, "lastModified": 1709641033,
"narHash": "sha256-4FXFBq5mN1IwN18Fd2OEF1iCZV5PC40gP2L64oyq3xQ=", "narHash": "sha256-Eegyvq56NiXgrDrZ6FgE1lNCD2Mi6aLY/HFOeVG8ZtI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lanzaboote", "repo": "lanzaboote",
"rev": "e761c7ee47b64debc687d8bff7599d702c893dcc", "rev": "3881267e84cc966ded48601390e88fc13d960319",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -221,11 +221,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1709015655, "lastModified": 1709718332,
"narHash": "sha256-7HWzg9JzheM03akV9Bj1hhsXv6v1YRtSkPa16XuZ11w=", "narHash": "sha256-xBfSV65VVEHMjthvEij1Bjka5OFR1/YhYE8kcnDyJUo=",
"owner": "Guanran928", "owner": "Guanran928",
"repo": "nvim", "repo": "nvim",
"rev": "ce9dffb2865405740026bb26259e78863083acd7", "rev": "79fa35d0009a10a871914131a9cc7c8ee8300c34",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -241,11 +241,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1709112925, "lastModified": 1709554374,
"narHash": "sha256-5y8Dhw1HYdc+BWv+qQjJUIwc+ByoudtoGaHEcrXYlXw=", "narHash": "sha256-1yYgwxBzia+QrOaQaZ6YKqGFfiQcSBwYLzd9XRsRLQY=",
"owner": "LnL7", "owner": "LnL7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "283d59778e6b8c41cac4bdeac5b2512d6de51150", "rev": "daa03606dfb5296a22e842acb02b46c1c4e9f5e7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -264,11 +264,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1709168939, "lastModified": 1709428394,
"narHash": "sha256-btWt7NRsA8Hysgin5su77nIdmZZbxsKW5qqyj/bBlF0=", "narHash": "sha256-WIDKofwDWFLHtk14MdBiRiM8Lxn+OByHYtybjSU/18Q=",
"owner": "fufexan", "owner": "fufexan",
"repo": "nix-gaming", "repo": "nix-gaming",
"rev": "22586cc4910284c9c7306f19dcd63ac0adbcbcc9", "rev": "1f3fa3b398051c815e8500d4c4fe794ecfdee328",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -284,11 +284,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1709156363, "lastModified": 1709674747,
"narHash": "sha256-syrzpHREwzhdlt88mL/gjNcbbHuYD470e0fjFyhZ0ho=", "narHash": "sha256-itIAFkMPQ6o7SBc5WGp71DABLkgSSHcaObG8Zg1SppA=",
"owner": "jacekszymanski", "owner": "jacekszymanski",
"repo": "nixcasks", "repo": "nixcasks",
"rev": "012549dd04474182308b18991538840455ad62aa", "rev": "954a0d92b13435a186693671b569ac1fff3ba0e6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -299,11 +299,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1709147990, "lastModified": 1709410583,
"narHash": "sha256-vpXMWoaCtMYJ7lisJedCRhQG9BSsInEyZnnG5GfY9tQ=", "narHash": "sha256-esOSUoQ7mblwcsSea0K17McZuwAIjoS6dq/4b83+lvw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "33a97b5814d36ddd65ad678ad07ce43b1a67f159", "rev": "59e37017b9ed31dee303dbbd4531c594df95cfbc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -314,11 +314,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1709200309, "lastModified": 1709641832,
"narHash": "sha256-lKdtMbhnBNU1lr978T+wEYet3sfIXXgyiDZNEgx8CV8=", "narHash": "sha256-bzzRc3DiV8Cm/67HDa39pyBymqF45ISgUbXqjrMk2UE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ebe6e807793e7c9cc59cf81225fdee1a03413811", "rev": "bfa8b30043892dc2b660d403faa159bab7b65898",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -330,11 +330,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1709128929, "lastModified": 1709569716,
"narHash": "sha256-GWrv9a+AgGhG4/eI/CyVVIIygia7cEy68Huv3P8oyaw=", "narHash": "sha256-iOR44RU4jQ+YPGrn+uQeYAp7Xo7Z/+gT+wXJoGxxLTY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c8e74c2f83fe12b4e5a8bd1abbc090575b0f7611", "rev": "617579a787259b9a6419492eaac670a5f7663917",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -346,11 +346,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1709225079, "lastModified": 1709714153,
"narHash": "sha256-2bmOKg/aIgmguPZz3OwjG5lCAGaLwM9ubBkXjcp7edU=", "narHash": "sha256-2QrzVuItf+IXwVwYNfOA/XB37c6IgPg5cZLLnUJE28I=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "c52cf9478c981de340151638d76c3c2371eb9ebe", "rev": "466d739cfde240577a1e201889e489f55bbda6c7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -455,11 +455,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1709172595, "lastModified": 1709691047,
"narHash": "sha256-0oYeE5VkhnPA7YBl+0Utq2cYoHcfsEhSGwraCa27Vs8=", "narHash": "sha256-2Vwx1FLufoMEcOS8KAwP8H83IP3Hw6ZPrIDHkSXrFCY=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "72fa0217f76020ad3aeb2dd9dd72490905b23b6f", "rev": "d55139f3061cdf2c8f5f7bc8d49e884826e6a4ea",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -478,11 +478,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1708987867, "lastModified": 1709711091,
"narHash": "sha256-k2lDaDWNTU5sBVHanYzjDKVDmk29RHIgdbbXu5sdzBA=", "narHash": "sha256-L0rSIU9IguTG4YqSj4B/02SyTEz55ACq5t8gXpzteYc=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "a1c8de14f60924fafe13aea66b46157f0150f4cf", "rev": "25dd60fdd08fcacee2567a26ba6b91fe098941dc",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -6,5 +6,5 @@ let
in { in {
nautilus = import ./nautilus.nix {inherit addPatches;}; nautilus = import ./nautilus.nix {inherit addPatches;};
prismlauncher = import ./prismlauncher.nix {inherit addPatches;}; prismlauncher = import ./prismlauncher.nix {inherit addPatches;};
sway = import ./sway; sway = import ./sway/git;
} }

View file

@ -1,24 +0,0 @@
{addPatches, ...}: _final: prev: {
sway-unwrapped = addPatches prev.sway-unwrapped [
# text_input: Implement input-method popups
# https://github.com/swaywm/sway/pull/7226
(prev.fetchpatch {
url = "https://github.com/swaywm/sway/commit/d1c6e44886d1047b3aa6ff6aaac383eadd72f36a.patch";
hash = "sha256-LsCoK60FKp3d8qopGtrbCFXofxHT+kOv1e1PiLSyvsA=";
})
# Tray D-Bus Menu
# https://github.com/swaywm/sway/pull/6249
(prev.substitute {
src = prev.fetchpatch {
url = "https://github.com/swaywm/sway/commit/2f304ef0532a45d00b2ec2c7fc63adef0aec7607.patch";
hash = "sha256-nd+Z6A7GE5Go7QxXOI+hiLWQiXegsQatcNfxEsXgamI=";
};
substitutions = [
"--replace-warn"
"int surface_x, surface_y, surface_width, surface_height;"
"int surface_x, surface_y, surface_width, surface_height = 0;"
];
})
];
}

View file

@ -1,32 +0,0 @@
_final: prev: {
sway-unwrapped = prev.sway-unwrapped.overrideAttrs rec {
version = "1.9";
src = prev.fetchFromGitHub {
owner = "swaywm";
repo = "sway";
rev = version;
hash = "sha256-/6+iDkQfdLcL/pTJaqNc6QdP4SRVOYLjfOItEu/bZtg";
};
buildInputs = with prev; [
cairo
gdk-pixbuf
json_c
libGL
libdrm
libevdev
libinput
librsvg
libxkbcommon
pango
pcre2
wayland
wayland-protocols
wlroots_0_17
xorg.xcbutilwm
];
patches = [];
};
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,25 @@
{addPatches, ...}: _final: prev: {
sway-unwrapped = addPatches prev.sway-unwrapped [
# text_input: Implement input-method popups
# https://github.com/swaywm/sway/pull/7226
(prev.fetchpatch rec {
name = "0001-text_input-Implement-input-method-popups.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/${name}?h=sway-im&id=b8434b3ad9e8c6946dbf7b14b0f7ef5679452b94";
hash = "sha256-A+rBaWMWs616WllVoo21AJaf9lxg/oCG0b9tHLfuJII=";
})
(prev.fetchpatch rec {
name = "0002-chore-fractal-scale-handle.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/${name}?h=sway-im&id=b8434b3ad9e8c6946dbf7b14b0f7ef5679452b94";
hash = "sha256-YOFm0A4uuRSuiwnvF9xbp8Wl7oGicFGnq61vLegqJ0E=";
})
(prev.fetchpatch rec {
name = "0003-chore-left_pt-on-method-popup.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/${name}?h=sway-im&id=b8434b3ad9e8c6946dbf7b14b0f7ef5679452b94";
hash = "sha256-PzhQBRpyB1WhErn05UBtBfaDW5bxnQLRKWu8jy7dEiM=";
})
# (rebased) Tray D-Bus Menu
# https://github.com/swaywm/sway/pull/6249
./0001-Tray-Implement-dbusmenu.patch
];
}

View file

@ -1,49 +0,0 @@
_final: prev: {
sway-unwrapped = prev.sway-unwrapped.overrideAttrs (old: {
version = "1.10-unstable-2024-02-23";
src = prev.fetchFromGitHub {
owner = "swaywm";
repo = "sway";
rev = "fc640d5f6c82883c35e90a64f0098486e6091293";
hash = "sha256-n0U1RoSv3fuOkey2gXPX+O4mRA2PCASpkRrIE5069BI";
};
buildInputs = with prev; [
(wlroots.overrideAttrs {
version = "1.18.0-unstable-2024-02-23";
src = prev.fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "wlroots";
repo = "wlroots";
rev = "54e1fefd2e29cb00dff7c02801913d793ceab7d6";
hash = "sha256-VX2AAzcYl255yF43+uetcOS+uYzAVfk7WccWONpjmYU=";
};
})
cairo
gdk-pixbuf
json_c
libGL
libdrm
libevdev
libinput
librsvg
libxkbcommon
pango
pcre2
wayland
wayland-protocols
xorg.xcbutilwm
];
patches = let
removePatches = ["LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM.patch"];
in
builtins.filter (patch: !builtins.elem (patch.name or null) removePatches) (old.patches or [])
++ [
# rebased version of https://github.com/swaywm/sway/pull/6249
# using sed at this point is just stupid (see ./_1.8.nix)
./0001-Tray-Implement-dbusmenu.patch
];
});
}

View file

@ -1,4 +1,4 @@
From c0389b28a6ea0c1917212fb60d19f1d401bdc943 Mon Sep 17 00:00:00 2001 From 9f051dc1e77a516abebf1422d41deba6403f2850 Mon Sep 17 00:00:00 2001
From: Felix Weilbach <felix.weilbach@t-online.de> From: Felix Weilbach <felix.weilbach@t-online.de>
Date: Sun, 30 May 2021 20:45:01 +0200 Date: Sun, 30 May 2021 20:45:01 +0200
Subject: [PATCH] Tray: Implement dbusmenu Subject: [PATCH] Tray: Implement dbusmenu
@ -323,7 +323,7 @@ index 879a4e42..eea6b35d 100644
return HOTSPOT_PROCESS; return HOTSPOT_PROCESS;
diff --git a/swaybar/tray/dbusmenu.c b/swaybar/tray/dbusmenu.c diff --git a/swaybar/tray/dbusmenu.c b/swaybar/tray/dbusmenu.c
new file mode 100644 new file mode 100644
index 00000000..77b5d3f5 index 00000000..45531af5
--- /dev/null --- /dev/null
+++ b/swaybar/tray/dbusmenu.c +++ b/swaybar/tray/dbusmenu.c
@@ -0,0 +1,1367 @@ @@ -0,0 +1,1367 @@
@ -469,7 +469,7 @@ index 00000000..77b5d3f5
+} +}
+ +
+static struct swaybar_dbusmenu_surface *swaybar_dbusmenu_surface_create() { +static struct swaybar_dbusmenu_surface *swaybar_dbusmenu_surface_create() {
+ struct swaybar_dbusmenu_surface *dbusmenu = calloc(1, + struct swaybar_dbusmenu_surface *dbusmenu = calloc(1,
+ sizeof(struct swaybar_dbusmenu_surface)); + sizeof(struct swaybar_dbusmenu_surface));
+ if (!dbusmenu) { + if (!dbusmenu) {
+ sway_log(SWAY_DEBUG, "Could not allocate dbusmenu"); + sway_log(SWAY_DEBUG, "Could not allocate dbusmenu");
@ -606,7 +606,7 @@ index 00000000..77b5d3f5
+ return item; + return item;
+ } + }
+ if (item->submenu && item->submenu->item_id != 0) { + if (item->submenu && item->submenu->item_id != 0) {
+ struct swaybar_dbusmenu_menu_item *found_item = + struct swaybar_dbusmenu_menu_item *found_item =
+ find_item_under_menu(item->submenu, item_id); + find_item_under_menu(item->submenu, item_id);
+ if (found_item) { + if (found_item) {
+ return found_item; + return found_item;
@ -627,7 +627,7 @@ index 00000000..77b5d3f5
+} +}
+ +
+static struct swaybar_dbusmenu_menu * +static struct swaybar_dbusmenu_menu *
+find_parent_menu_under_menu(struct swaybar_dbusmenu_menu *menu, +find_parent_menu_under_menu(struct swaybar_dbusmenu_menu *menu,
+ struct swaybar_dbusmenu_menu *child_menu) { + struct swaybar_dbusmenu_menu *child_menu) {
+ if (!menu->items) { + if (!menu->items) {
+ return NULL; + return NULL;
@ -911,7 +911,7 @@ index 00000000..77b5d3f5
+ } + }
+ } + }
+ +
+ cairo_surface_t *recorder = + cairo_surface_t *recorder =
+ cairo_recording_surface_create(CAIRO_CONTENT_COLOR_ALPHA, NULL); + cairo_recording_surface_create(CAIRO_CONTENT_COLOR_ALPHA, NULL);
+ if (!recorder) { + if (!recorder) {
+ return; + return;
@ -1077,7 +1077,7 @@ index 00000000..77b5d3f5
+ swaybar_dbusmenu_draw(sni->tray->menu, menu_id); + swaybar_dbusmenu_draw(sni->tray->menu, menu_id);
+ +
+ sd_bus_call_method_async(sni->tray->bus, NULL, sni->service, sni->menu, + sd_bus_call_method_async(sni->tray->bus, NULL, sni->service, sni->menu,
+ menu_interface, "Event", NULL, NULL, "isvu", menu_id, "opened", "y", 0, + menu_interface, "Event", NULL, NULL, "isvu", menu_id, "opened", "y", 0,
+ time(NULL)); + time(NULL));
+ +
+ sway_log(SWAY_DEBUG, "%s%s opened id %d", sni->service, sni->menu, menu_id); + sway_log(SWAY_DEBUG, "%s%s opened id %d", sni->service, sni->menu, menu_id);
@ -1098,7 +1098,7 @@ index 00000000..77b5d3f5
+ slot->menu_id = menu_id; + slot->menu_id = menu_id;
+ +
+ int ret = sd_bus_call_method_async(sni->tray->bus, &slot->slot, sni->service, + int ret = sd_bus_call_method_async(sni->tray->bus, &slot->slot, sni->service,
+ sni->menu, menu_interface, "AboutToShow", about_to_show_callback, slot, "i", + sni->menu, menu_interface, "AboutToShow", about_to_show_callback, slot, "i",
+ menu_id); + menu_id);
+ +
+ if (ret >= 0) { + if (ret >= 0) {
@ -1171,7 +1171,7 @@ index 00000000..77b5d3f5
+ log_value = toggle_type; + log_value = toggle_type;
+ } else if (strcmp(key, "toggle-state") == 0) { + } else if (strcmp(key, "toggle-state") == 0) {
+ sd_bus_message_read(msg, "v", "i", &item->toggle_state); + sd_bus_message_read(msg, "v", "i", &item->toggle_state);
+ log_value = item->toggle_state == 0 ? + log_value = item->toggle_state == 0 ?
+ "off" : item->toggle_state == 1 ? "on" : "indeterminate"; + "off" : item->toggle_state == 1 ? "on" : "indeterminate";
+ } else if (strcmp(key, "children-display") == 0) { + } else if (strcmp(key, "children-display") == 0) {
+ char *children_display; + char *children_display;
@ -1204,7 +1204,7 @@ index 00000000..77b5d3f5
+ return sd_bus_message_exit_container(msg); + return sd_bus_message_exit_container(msg);
+} +}
+ +
+static int get_layout_callback(sd_bus_message *msg, void *data, +static int get_layout_callback(sd_bus_message *msg, void *data,
+ sd_bus_error *error) { + sd_bus_error *error) {
+ struct swaybar_sni_slot *slot = data; + struct swaybar_sni_slot *slot = data;
+ struct swaybar_sni *sni = slot->sni; + struct swaybar_sni *sni = slot->sni;
@ -1258,7 +1258,7 @@ index 00000000..77b5d3f5
+ while (!sd_bus_message_at_end(msg, 1)) { + while (!sd_bus_message_at_end(msg, 1)) {
+ sd_bus_message_enter_container(msg, 'r', "ia{sv}av"); + sd_bus_message_enter_container(msg, 'r', "ia{sv}av");
+ +
+ struct swaybar_dbusmenu_menu_item *item + struct swaybar_dbusmenu_menu_item *item
+ = calloc(1, sizeof(struct swaybar_dbusmenu_menu_item)); + = calloc(1, sizeof(struct swaybar_dbusmenu_menu_item));
+ if (!item) { + if (!item) {
+ ret = -ENOMEM; + ret = -ENOMEM;
@ -1318,7 +1318,7 @@ index 00000000..77b5d3f5
+ +
+static void swaybar_dbusmenu_subscribe_signal(struct swaybar_dbusmenu *menu, +static void swaybar_dbusmenu_subscribe_signal(struct swaybar_dbusmenu *menu,
+ const char *signal_name, sd_bus_message_handler_t callback) { + const char *signal_name, sd_bus_message_handler_t callback) {
+ int ret = sd_bus_match_signal_async( menu->sni->tray->bus, NULL, + int ret = sd_bus_match_signal_async( menu->sni->tray->bus, NULL,
+ menu->sni->service, menu->sni->menu, menu_interface, signal_name, callback, + menu->sni->service, menu->sni->menu, menu_interface, signal_name, callback,
+ NULL, menu->sni); + NULL, menu->sni);
+ +
@ -1395,7 +1395,7 @@ index 00000000..77b5d3f5
+static void swaybar_dbusmenu_setup(struct swaybar_dbusmenu *menu) { +static void swaybar_dbusmenu_setup(struct swaybar_dbusmenu *menu) {
+ struct swaybar_sni_slot *slot = calloc(1, sizeof(struct swaybar_sni_slot)); + struct swaybar_sni_slot *slot = calloc(1, sizeof(struct swaybar_sni_slot));
+ slot->sni = menu->sni; + slot->sni = menu->sni;
+ int ret = sd_bus_call_method_async( menu->sni->tray->bus, &slot->slot, + int ret = sd_bus_call_method_async( menu->sni->tray->bus, &slot->slot,
+ menu->sni->service, menu->sni->path, "org.freedesktop.DBus.Properties", + menu->sni->service, menu->sni->path, "org.freedesktop.DBus.Properties",
+ "Get", get_icon_theme_path_callback, slot, "ss", menu->sni->interface, + "Get", get_icon_theme_path_callback, slot, "ss", menu->sni->interface,
+ "IconThemePath"); + "IconThemePath");
@ -1412,7 +1412,7 @@ index 00000000..77b5d3f5
+} +}
+ +
+void swaybar_dbusmenu_open(struct swaybar_sni *sni, +void swaybar_dbusmenu_open(struct swaybar_sni *sni,
+ struct swaybar_output *output, struct swaybar_seat *seat, uint32_t serial, + struct swaybar_output *output, struct swaybar_seat *seat, uint32_t serial,
+ int x, int y) { + int x, int y) {
+ struct swaybar_dbusmenu *dbusmenu = sni->tray->menu; + struct swaybar_dbusmenu *dbusmenu = sni->tray->menu;
+ if (!dbusmenu) { + if (!dbusmenu) {
@ -1464,14 +1464,14 @@ index 00000000..77b5d3f5
+ struct swaybar_tray *tray = focused_menu->dbusmenu->sni->tray; + struct swaybar_tray *tray = focused_menu->dbusmenu->sni->tray;
+ struct swaybar_sni *sni = tray->menu->sni; + struct swaybar_sni *sni = tray->menu->sni;
+ if (focused_menu->last_hovered_item != item) { + if (focused_menu->last_hovered_item != item) {
+ sd_bus_call_method_async(tray->bus, NULL, sni->service, sni->menu, + sd_bus_call_method_async(tray->bus, NULL, sni->service, sni->menu,
+ menu_interface, "Event", NULL, NULL, "isvu", item->id, "hovered", + menu_interface, "Event", NULL, NULL, "isvu", item->id, "hovered",
+ "y", 0, time(NULL)); + "y", 0, time(NULL));
+ +
+ sway_log(SWAY_DEBUG, "%s%s hovered id %d", sni->service, sni->menu, + sway_log(SWAY_DEBUG, "%s%s hovered id %d", sni->service, sni->menu,
+ item->id); + item->id);
+ +
+ // open child menu if current item has a child menu and close other + // open child menu if current item has a child menu and close other
+ // potential open child menus. Only one child menu can be open at a time + // potential open child menus. Only one child menu can be open at a time
+ close_child_menus_except(focused_menu, item->id); + close_child_menus_except(focused_menu, item->id);
+ open_menu_id(focused_menu->dbusmenu, item->id); + open_menu_id(focused_menu->dbusmenu, item->id);
@ -1484,7 +1484,7 @@ index 00000000..77b5d3f5
+ } + }
+} +}
+ +
+bool dbusmenu_pointer_motion(struct swaybar_seat *seat, +bool dbusmenu_pointer_motion(struct swaybar_seat *seat,
+ struct wl_pointer *wl_pointer, uint32_t time_, wl_fixed_t surface_x, + struct wl_pointer *wl_pointer, uint32_t time_, wl_fixed_t surface_x,
+ wl_fixed_t surface_y) { + wl_fixed_t surface_y) {
+ struct swaybar_tray *tray = seat->bar->tray; + struct swaybar_tray *tray = seat->bar->tray;
@ -1513,7 +1513,7 @@ index 00000000..77b5d3f5
+ for (int i = 0; i < menu->items->length; ++i) { + for (int i = 0; i < menu->items->length; ++i) {
+ struct swaybar_dbusmenu_menu_item *item = menu->items->items[i]; + struct swaybar_dbusmenu_menu_item *item = menu->items->items[i];
+ struct swaybar_dbusmenu_menu *child_menu = item->submenu; + struct swaybar_dbusmenu_menu *child_menu = item->submenu;
+ if (child_menu && child_menu->surface + if (child_menu && child_menu->surface
+ && child_menu->surface->surface == surface) { + && child_menu->surface->surface == surface) {
+ return child_menu; + return child_menu;
+ } + }
@ -1553,14 +1553,14 @@ index 00000000..77b5d3f5
+ int scale = menu->dbusmenu->output->scale; + int scale = menu->dbusmenu->output->scale;
+ int x = seat->pointer.x * scale; + int x = seat->pointer.x * scale;
+ int y = seat->pointer.y * scale; + int y = seat->pointer.y * scale;
+ if (item->submenu && item->submenu->item_id != 0 + if (item->submenu && item->submenu->item_id != 0
+ && !is_in_hotspot(&item->hotspot, x, y)) { + && !is_in_hotspot(&item->hotspot, x, y)) {
+ close_menus_by_id(menu, item->id); + close_menus_by_id(menu, item->id);
+ } + }
+ } + }
+} +}
+ +
+bool dbusmenu_pointer_frame(struct swaybar_seat *data, +bool dbusmenu_pointer_frame(struct swaybar_seat *data,
+ struct wl_pointer *wl_pointer) { + struct wl_pointer *wl_pointer) {
+ struct swaybar_tray *tray = data->bar->tray; + struct swaybar_tray *tray = data->bar->tray;
+ if (!(tray && tray->menu && tray->menu_pointer_focus)) { + if (!(tray && tray->menu && tray->menu_pointer_focus)) {
@ -1639,13 +1639,13 @@ index 00000000..77b5d3f5
+ item->id); + item->id);
+ +
+ sd_bus_call_method_async(tray->bus, NULL, sni->service, sni->menu, + sd_bus_call_method_async(tray->bus, NULL, sni->service, sni->menu,
+ menu_interface, "Event", NULL, NULL, "isvu", item->id, "clicked", "y", 0, + menu_interface, "Event", NULL, NULL, "isvu", item->id, "clicked", "y", 0,
+ time(NULL)); + time(NULL));
+ +
+ if (item->submenu) { + if (item->submenu) {
+ open_menu_id(dbusmenu, item->id); + open_menu_id(dbusmenu, item->id);
+ } else { + } else {
+ // The user clicked an menu item other than a submenu. That means + // The user clicked an menu item other than a submenu. That means
+ // the user made it's choise. Close the tray menu. + // the user made it's choise. Close the tray menu.
+ swaybar_dbusmenu_destroy(tray->menu); + swaybar_dbusmenu_destroy(tray->menu);
+ } + }
@ -1657,7 +1657,7 @@ index 00000000..77b5d3f5
+ +
+static bool dbusmenu_pointer_button_left(struct swaybar_dbusmenu *dbusmenu, +static bool dbusmenu_pointer_button_left(struct swaybar_dbusmenu *dbusmenu,
+ struct swaybar_seat *seat) { + struct swaybar_seat *seat) {
+ struct swaybar_dbusmenu_menu *focused_menu + struct swaybar_dbusmenu_menu *focused_menu
+ = dbusmenu->sni->tray->menu_pointer_focus; + = dbusmenu->sni->tray->menu_pointer_focus;
+ +
+ if (!focused_menu) { + if (!focused_menu) {
@ -1750,5 +1750,5 @@ index ca6c03ad..29bc8436 100644
} else { } else {
sway_log(SWAY_DEBUG, "but it doesn't exist"); sway_log(SWAY_DEBUG, "but it doesn't exist");
-- --
2.43.0 2.43.1

View file

@ -0,0 +1,32 @@
_final: prev: {
sway-unwrapped =
(prev.sway-unwrapped.overrideAttrs (old: {
version = "1.10-unstable-2024-03-01";
src = prev.fetchFromGitHub {
owner = "swaywm";
repo = "sway";
rev = "5e18ed3cf03eee9e83909fede46dd98dff652647";
hash = "sha256-O0Kh+pnB1Hxc0TBZuAMVLkCYY6BBsSesvvYD923zDvo=";
};
patches =
old.patches
++ [
# (rebased) Tray D-Bus Menu
# https://github.com/swaywm/sway/pull/6249
./0001-Tray-Implement-dbusmenu.patch
];
}))
.override {
wlroots = prev.wlroots.overrideAttrs {
version = "1.18.0-unstable-2024-03-05";
src = prev.fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "wlroots";
repo = "wlroots";
rev = "31c842e5ece93145604c65be1b14c2f8cee24832";
hash = "sha256-otjJDgWBgn1Wk1e46Y3wr/eEvOsQPTP9jjaX9dlFcjA=";
};
};
};
}