Skip to content

Conversation

@PolyMeilex
Copy link
Owner

This drops this ridiculous dependency tree in favour of just calling dlopen("libdbus")

Before:

rfd v0.16.0 (/home/poly/dev/rfd)
├── ashpd v0.12.0
│   ├── async-fs v2.1.2
│   │   ├── async-lock v3.4.0
│   │   │   ├── event-listener v5.4.0
│   │   │   │   ├── concurrent-queue v2.5.0
│   │   │   │   │   └── crossbeam-utils v0.8.21
│   │   │   │   ├── parking v2.2.1
│   │   │   │   └── pin-project-lite v0.2.16
│   │   │   ├── event-listener-strategy v0.5.4
│   │   │   │   ├── event-listener v5.4.0 (*)
│   │   │   │   └── pin-project-lite v0.2.16
│   │   │   └── pin-project-lite v0.2.16
│   │   ├── blocking v1.6.1
│   │   │   ├── async-channel v2.3.1
│   │   │   │   ├── concurrent-queue v2.5.0 (*)
│   │   │   │   ├── event-listener-strategy v0.5.4 (*)
│   │   │   │   ├── futures-core v0.3.31
│   │   │   │   └── pin-project-lite v0.2.16
│   │   │   ├── async-task v4.7.1
│   │   │   ├── futures-io v0.3.31
│   │   │   ├── futures-lite v2.6.0
│   │   │   │   ├── fastrand v2.3.0
│   │   │   │   ├── futures-core v0.3.31
│   │   │   │   ├── futures-io v0.3.31
│   │   │   │   ├── parking v2.2.1
│   │   │   │   └── pin-project-lite v0.2.16
│   │   │   └── piper v0.2.4
│   │   │       ├── atomic-waker v1.1.2
│   │   │       ├── fastrand v2.3.0
│   │   │       └── futures-io v0.3.31
│   │   └── futures-lite v2.6.0 (*)
│   ├── async-net v2.0.0
│   │   ├── async-io v2.4.0
│   │   │   ├── async-lock v3.4.0 (*)
│   │   │   ├── cfg-if v1.0.0
│   │   │   ├── concurrent-queue v2.5.0 (*)
│   │   │   ├── futures-io v0.3.31
│   │   │   ├── futures-lite v2.6.0 (*)
│   │   │   ├── parking v2.2.1
│   │   │   ├── polling v3.7.4
│   │   │   │   ├── cfg-if v1.0.0
│   │   │   │   ├── rustix v0.38.44
│   │   │   │   │   ├── bitflags v2.9.0
│   │   │   │   │   └── linux-raw-sys v0.4.15
│   │   │   │   └── tracing v0.1.41
│   │   │   │       ├── pin-project-lite v0.2.16
│   │   │   │       ├── tracing-attributes v0.1.28 (proc-macro)
│   │   │   │       │   ├── proc-macro2 v1.0.95
│   │   │   │       │   │   └── unicode-ident v1.0.18
│   │   │   │       │   ├── quote v1.0.40
│   │   │   │       │   │   └── proc-macro2 v1.0.95 (*)
│   │   │   │       │   └── syn v2.0.101
│   │   │   │       │       ├── proc-macro2 v1.0.95 (*)
│   │   │   │       │       ├── quote v1.0.40 (*)
│   │   │   │       │       └── unicode-ident v1.0.18
│   │   │   │       └── tracing-core v0.1.33
│   │   │   │           └── once_cell v1.21.3
│   │   │   ├── rustix v0.38.44 (*)
│   │   │   ├── slab v0.4.9
│   │   │   │   [build-dependencies]
│   │   │   │   └── autocfg v1.4.0
│   │   │   └── tracing v0.1.41 (*)
│   │   ├── blocking v1.6.1 (*)
│   │   └── futures-lite v2.6.0 (*)
│   ├── enumflags2 v0.7.11
│   │   ├── enumflags2_derive v0.7.11 (proc-macro)
│   │   │   ├── proc-macro2 v1.0.95 (*)
│   │   │   ├── quote v1.0.40 (*)
│   │   │   └── syn v2.0.101 (*)
│   │   └── serde v1.0.219
│   │       └── serde_derive v1.0.219 (proc-macro)
│   │           ├── proc-macro2 v1.0.95 (*)
│   │           ├── quote v1.0.40 (*)
│   │           └── syn v2.0.101 (*)
│   ├── futures-channel v0.3.31
│   │   ├── futures-core v0.3.31
│   │   └── futures-sink v0.3.31
│   ├── futures-util v0.3.31
│   │   ├── futures-channel v0.3.31 (*)
│   │   ├── futures-core v0.3.31
│   │   ├── futures-io v0.3.31
│   │   ├── futures-macro v0.3.31 (proc-macro)
│   │   │   ├── proc-macro2 v1.0.95 (*)
│   │   │   ├── quote v1.0.40 (*)
│   │   │   └── syn v2.0.101 (*)
│   │   ├── futures-sink v0.3.31
│   │   ├── futures-task v0.3.31
│   │   ├── memchr v2.7.4
│   │   ├── pin-project-lite v0.2.16
│   │   ├── pin-utils v0.1.0
│   │   └── slab v0.4.9 (*)
│   ├── rand v0.9.1
│   │   ├── rand_chacha v0.9.0
│   │   │   ├── ppv-lite86 v0.2.21
│   │   │   │   └── zerocopy v0.8.25
│   │   │   └── rand_core v0.9.3
│   │   │       └── getrandom v0.3.3
│   │   │           ├── cfg-if v1.0.0
│   │   │           └── libc v0.2.172
│   │   └── rand_core v0.9.3 (*)
│   ├── raw-window-handle v0.6.2
│   ├── serde v1.0.219 (*)
│   ├── serde_repr v0.1.20 (proc-macro)
│   │   ├── proc-macro2 v1.0.95 (*)
│   │   ├── quote v1.0.40 (*)
│   │   └── syn v2.0.101 (*)
│   ├── url v2.5.4
│   │   ├── form_urlencoded v1.2.1
│   │   │   └── percent-encoding v2.3.1
│   │   ├── idna v1.0.3
│   │   │   ├── idna_adapter v1.2.1
│   │   │   │   ├── icu_normalizer v2.0.0
│   │   │   │   │   ├── displaydoc v0.2.5 (proc-macro)
│   │   │   │   │   │   ├── proc-macro2 v1.0.95 (*)
│   │   │   │   │   │   ├── quote v1.0.40 (*)
│   │   │   │   │   │   └── syn v2.0.101 (*)
│   │   │   │   │   ├── icu_collections v2.0.0
│   │   │   │   │   │   ├── displaydoc v0.2.5 (proc-macro) (*)
│   │   │   │   │   │   ├── potential_utf v0.1.2
│   │   │   │   │   │   │   └── zerovec v0.11.2
│   │   │   │   │   │   │       ├── yoke v0.8.0
│   │   │   │   │   │   │       │   ├── stable_deref_trait v1.2.0
│   │   │   │   │   │   │       │   ├── yoke-derive v0.8.0 (proc-macro)
│   │   │   │   │   │   │       │   │   ├── proc-macro2 v1.0.95 (*)
│   │   │   │   │   │   │       │   │   ├── quote v1.0.40 (*)
│   │   │   │   │   │   │       │   │   ├── syn v2.0.101 (*)
│   │   │   │   │   │   │       │   │   └── synstructure v0.13.2
│   │   │   │   │   │   │       │   │       ├── proc-macro2 v1.0.95 (*)
│   │   │   │   │   │   │       │   │       ├── quote v1.0.40 (*)
│   │   │   │   │   │   │       │   │       └── syn v2.0.101 (*)
│   │   │   │   │   │   │       │   └── zerofrom v0.1.6
│   │   │   │   │   │   │       │       └── zerofrom-derive v0.1.6 (proc-macro)
│   │   │   │   │   │   │       │           ├── proc-macro2 v1.0.95 (*)
│   │   │   │   │   │   │       │           ├── quote v1.0.40 (*)
│   │   │   │   │   │   │       │           ├── syn v2.0.101 (*)
│   │   │   │   │   │   │       │           └── synstructure v0.13.2 (*)
│   │   │   │   │   │   │       ├── zerofrom v0.1.6 (*)
│   │   │   │   │   │   │       └── zerovec-derive v0.11.1 (proc-macro)
│   │   │   │   │   │   │           ├── proc-macro2 v1.0.95 (*)
│   │   │   │   │   │   │           ├── quote v1.0.40 (*)
│   │   │   │   │   │   │           └── syn v2.0.101 (*)
│   │   │   │   │   │   ├── yoke v0.8.0 (*)
│   │   │   │   │   │   ├── zerofrom v0.1.6 (*)
│   │   │   │   │   │   └── zerovec v0.11.2 (*)
│   │   │   │   │   ├── icu_normalizer_data v2.0.0
│   │   │   │   │   ├── icu_provider v2.0.0
│   │   │   │   │   │   ├── displaydoc v0.2.5 (proc-macro) (*)
│   │   │   │   │   │   ├── icu_locale_core v2.0.0
│   │   │   │   │   │   │   ├── displaydoc v0.2.5 (proc-macro) (*)
│   │   │   │   │   │   │   ├── litemap v0.8.0
│   │   │   │   │   │   │   ├── tinystr v0.8.1
│   │   │   │   │   │   │   │   ├── displaydoc v0.2.5 (proc-macro) (*)
│   │   │   │   │   │   │   │   └── zerovec v0.11.2 (*)
│   │   │   │   │   │   │   ├── writeable v0.6.1
│   │   │   │   │   │   │   └── zerovec v0.11.2 (*)
│   │   │   │   │   │   ├── stable_deref_trait v1.2.0
│   │   │   │   │   │   ├── tinystr v0.8.1 (*)
│   │   │   │   │   │   ├── writeable v0.6.1
│   │   │   │   │   │   ├── yoke v0.8.0 (*)
│   │   │   │   │   │   ├── zerofrom v0.1.6 (*)
│   │   │   │   │   │   ├── zerotrie v0.2.2
│   │   │   │   │   │   │   ├── displaydoc v0.2.5 (proc-macro) (*)
│   │   │   │   │   │   │   ├── yoke v0.8.0 (*)
│   │   │   │   │   │   │   └── zerofrom v0.1.6 (*)
│   │   │   │   │   │   └── zerovec v0.11.2 (*)
│   │   │   │   │   ├── smallvec v1.15.0
│   │   │   │   │   └── zerovec v0.11.2 (*)
│   │   │   │   └── icu_properties v2.0.0
│   │   │   │       ├── displaydoc v0.2.5 (proc-macro) (*)
│   │   │   │       ├── icu_collections v2.0.0 (*)
│   │   │   │       ├── icu_locale_core v2.0.0 (*)
│   │   │   │       ├── icu_properties_data v2.0.0
│   │   │   │       ├── icu_provider v2.0.0 (*)
│   │   │   │       ├── potential_utf v0.1.2 (*)
│   │   │   │       ├── zerotrie v0.2.2 (*)
│   │   │   │       └── zerovec v0.11.2 (*)
│   │   │   ├── smallvec v1.15.0
│   │   │   └── utf8_iter v1.0.4
│   │   ├── percent-encoding v2.3.1
│   │   └── serde v1.0.219 (*)
│   ├── wayland-backend v0.3.10
│   │   ├── downcast-rs v1.2.1
│   │   ├── rustix v0.38.44 (*)
│   │   ├── scoped-tls v1.0.1
│   │   ├── smallvec v1.15.0
│   │   └── wayland-sys v0.31.6
│   │       ├── dlib v0.5.2
│   │       │   └── libloading v0.8.8
│   │       │       └── cfg-if v1.0.0
│   │       └── log v0.4.27
│   │       [build-dependencies]
│   │       └── pkg-config v0.3.32
│   │   [build-dependencies]
│   │   └── cc v1.2.29
│   │       └── shlex v1.3.0
│   ├── wayland-client v0.31.10
│   │   ├── bitflags v2.9.0
│   │   ├── rustix v0.38.44 (*)
│   │   ├── wayland-backend v0.3.10 (*)
│   │   └── wayland-scanner v0.31.6 (proc-macro)
│   │       ├── proc-macro2 v1.0.95 (*)
│   │       ├── quick-xml v0.37.5
│   │       │   └── memchr v2.7.4
│   │       └── quote v1.0.40 (*)
│   ├── wayland-protocols v0.32.8
│   │   ├── bitflags v2.9.0
│   │   ├── wayland-backend v0.3.10 (*)
│   │   ├── wayland-client v0.31.10 (*)
│   │   └── wayland-scanner v0.31.6 (proc-macro) (*)
│   └── zbus v5.6.0
│       ├── async-broadcast v0.7.2
│       │   ├── event-listener v5.4.0 (*)
│       │   ├── event-listener-strategy v0.5.4 (*)
│       │   ├── futures-core v0.3.31
│       │   └── pin-project-lite v0.2.16
│       ├── async-executor v1.13.2
│       │   ├── async-task v4.7.1
│       │   ├── concurrent-queue v2.5.0 (*)
│       │   ├── fastrand v2.3.0
│       │   ├── futures-lite v2.6.0 (*)
│       │   ├── pin-project-lite v0.2.16
│       │   └── slab v0.4.9 (*)
│       ├── async-io v2.4.0 (*)
│       ├── async-lock v3.4.0 (*)
│       ├── async-process v2.3.0
│       │   ├── async-channel v2.3.1 (*)
│       │   ├── async-io v2.4.0 (*)
│       │   ├── async-lock v3.4.0 (*)
│       │   ├── async-signal v0.2.10
│       │   │   ├── async-io v2.4.0 (*)
│       │   │   ├── cfg-if v1.0.0
│       │   │   ├── futures-core v0.3.31
│       │   │   ├── futures-io v0.3.31
│       │   │   ├── rustix v0.38.44 (*)
│       │   │   └── signal-hook-registry v1.4.5
│       │   │       └── libc v0.2.172
│       │   ├── async-task v4.7.1
│       │   ├── cfg-if v1.0.0
│       │   ├── event-listener v5.4.0 (*)
│       │   ├── futures-lite v2.6.0 (*)
│       │   ├── rustix v0.38.44 (*)
│       │   └── tracing v0.1.41 (*)
│       ├── async-task v4.7.1
│       ├── async-trait v0.1.88 (proc-macro)
│       │   ├── proc-macro2 v1.0.95 (*)
│       │   ├── quote v1.0.40 (*)
│       │   └── syn v2.0.101 (*)
│       ├── blocking v1.6.1 (*)
│       ├── enumflags2 v0.7.11 (*)
│       ├── event-listener v5.4.0 (*)
│       ├── futures-core v0.3.31
│       ├── futures-lite v2.6.0 (*)
│       ├── hex v0.4.3
│       ├── nix v0.29.0
│       │   ├── bitflags v2.9.0
│       │   ├── cfg-if v1.0.0
│       │   ├── libc v0.2.172
│       │   └── memoffset v0.9.1
│       │       [build-dependencies]
│       │       └── autocfg v1.4.0
│       │   [build-dependencies]
│       │   └── cfg_aliases v0.2.1
│       ├── ordered-stream v0.2.0
│       │   ├── futures-core v0.3.31
│       │   └── pin-project-lite v0.2.16
│       ├── serde v1.0.219 (*)
│       ├── serde_repr v0.1.20 (proc-macro) (*)
│       ├── tracing v0.1.41 (*)
│       ├── winnow v0.7.10
│       ├── zbus_macros v5.6.0 (proc-macro)
│       │   ├── proc-macro-crate v3.3.0
│       │   │   └── toml_edit v0.22.26
│       │   │       ├── indexmap v2.9.0
│       │   │       │   ├── equivalent v1.0.2
│       │   │       │   └── hashbrown v0.15.3
│       │   │       ├── toml_datetime v0.6.9
│       │   │       └── winnow v0.7.10
│       │   ├── proc-macro2 v1.0.95 (*)
│       │   ├── quote v1.0.40 (*)
│       │   ├── syn v2.0.101 (*)
│       │   ├── zbus_names v4.2.0
│       │   │   ├── serde v1.0.219 (*)
│       │   │   ├── static_assertions v1.1.0
│       │   │   ├── winnow v0.7.10
│       │   │   └── zvariant v5.5.1
│       │   │       ├── endi v1.1.0
│       │   │       ├── enumflags2 v0.7.11 (*)
│       │   │       ├── serde v1.0.219 (*)
│       │   │       ├── winnow v0.7.10
│       │   │       ├── zvariant_derive v5.5.1 (proc-macro)
│       │   │       │   ├── proc-macro-crate v3.3.0 (*)
│       │   │       │   ├── proc-macro2 v1.0.95 (*)
│       │   │       │   ├── quote v1.0.40 (*)
│       │   │       │   ├── syn v2.0.101 (*)
│       │   │       │   └── zvariant_utils v3.2.0
│       │   │       │       ├── proc-macro2 v1.0.95 (*)
│       │   │       │       ├── quote v1.0.40 (*)
│       │   │       │       ├── serde v1.0.219 (*)
│       │   │       │       ├── static_assertions v1.1.0
│       │   │       │       ├── syn v2.0.101 (*)
│       │   │       │       └── winnow v0.7.10
│       │   │       └── zvariant_utils v3.2.0 (*)
│       │   ├── zvariant v5.5.1 (*)
│       │   └── zvariant_utils v3.2.0 (*)
│       ├── zbus_names v4.2.0 (*)
│       └── zvariant v5.5.1
│           ├── endi v1.1.0
│           ├── enumflags2 v0.7.11 (*)
│           ├── serde v1.0.219 (*)
│           ├── url v2.5.4 (*)
│           ├── winnow v0.7.10
│           ├── zvariant_derive v5.5.1 (proc-macro) (*)
│           └── zvariant_utils v3.2.0 (*)
├── log v0.4.27
├── pollster v0.4.0
├── raw-window-handle v0.6.2
└── urlencoding v2.1.3

After:

rfd
├── libc v0.2.172
├── log v0.4.27
├── pollster v0.4.0
├── raw-window-handle v0.6.2
├── wayland-backend v0.3.10
│   ├── downcast-rs v1.2.1
│   ├── rustix v0.38.44
│   │   ├── bitflags v2.9.0
│   │   └── linux-raw-sys v0.4.15
│   ├── scoped-tls v1.0.1
│   ├── smallvec v1.15.0
│   └── wayland-sys v0.31.6
│       ├── dlib v0.5.2
│       │   └── libloading v0.8.8
│       │       └── cfg-if v1.0.0
│       └── log v0.4.27
│       [build-dependencies]
│       └── pkg-config v0.3.32
│   [build-dependencies]
│   └── cc v1.2.29
│       └── shlex v1.3.0
├── wayland-client v0.31.10
│   ├── bitflags v2.9.0
│   ├── rustix v0.38.44 (*)
│   ├── wayland-backend v0.3.10 (*)
│   └── wayland-scanner v0.31.6 (proc-macro)
│       ├── proc-macro2 v1.0.95
│       │   └── unicode-ident v1.0.18
│       ├── quick-xml v0.37.5
│       │   └── memchr v2.7.4
│       └── quote v1.0.40
│           └── proc-macro2 v1.0.95 (*)
└── wayland-protocols v0.32.8
    ├── bitflags v2.9.0
    ├── wayland-backend v0.3.10 (*)
    ├── wayland-client v0.31.10 (*)
    └── wayland-scanner v0.31.6 (proc-macro) (*)

@PolyMeilex PolyMeilex force-pushed the linux-drop-the-ridiculous-dependency-tree branch from 298f8dd to f2b5fc4 Compare December 7, 2025 04:40
@PolyMeilex PolyMeilex marked this pull request as ready for review December 15, 2025 02:24
@PolyMeilex PolyMeilex added the no changelog Ignore changelog CI check label Dec 15, 2025
@PolyMeilex PolyMeilex force-pushed the linux-drop-the-ridiculous-dependency-tree branch from 201294b to 7927663 Compare December 15, 2025 02:26
@PolyMeilex PolyMeilex removed the no changelog Ignore changelog CI check label Dec 15, 2025
@PolyMeilex PolyMeilex force-pushed the linux-drop-the-ridiculous-dependency-tree branch from 7927663 to 86088e1 Compare December 21, 2025 03:38
@PolyMeilex PolyMeilex merged commit f3258c5 into master Dec 21, 2025
19 checks passed
@PolyMeilex PolyMeilex deleted the linux-drop-the-ridiculous-dependency-tree branch December 21, 2025 04:00
@PolyMeilex
Copy link
Owner Author

YOLO I'm merging this as is. If you are reading this because I totally broke something, ping me, and we'll either fix or revert this.

Elec3137 added a commit to Elec3137/media-tweak that referenced this pull request Jan 13, 2026
note that rfd has changed substantially and now uses libdbus dynamically:
PolyMeilex/rfd#286

This does not seem to cause any obvious problems,
not even requiring changes to the wrapper.
@dhardy
Copy link

dhardy commented Jan 15, 2026

Nice!

(Q removed. Turns out that cargo outdated doesn't report anything covered by a crates-io patch, hence me missing the new version.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants