Commit graph

415 commits

Author SHA1 Message Date
mcgi5sr2
92c701f76b nix: add ffmpeg to buildInputs for video background support 2026-04-05 11:07:49 +01:00
mcgi5sr2
8fbe83b3b2 refactor: extract video decode logic into CVideoBackend
Move FFmpeg decode thread, frame buffering, and lifecycle management
out of CBackground into a dedicated CVideoBackend class. Background.hpp
no longer includes FFmpeg headers. CBackground interacts with video
purely via open(), swapFrame(), and frameW/H().
2026-04-04 19:56:17 +01:00
mcgi5sr2
66acfbb9f5
Merge branch 'hyprwm:main' into feature/video-background 2026-03-18 08:39:26 +00:00
mcgi5sr2
0345d4ccf8 background: add video playback support via FFmpeg
Extend the background widget to natively decode and display video
files (mp4, mkv, webm, avi, mov, gif, and more) using FFmpeg, with
no external tools required.

- Detection is extension-based; existing image paths are unaffected
- A background decode thread paces frames to their PTS timestamps
  and publishes them to the render thread via an O(1) mutex-swap,
  avoiding any memcpy per frame
- sws_getCachedContext handles codecs that only report their pixel
  format after the first decoded frame
- Videos loop seamlessly via av_seek_frame at EOF
- blur_passes works on video frames the same as on images
- No new config keys: path = /path/to/video.mp4 is sufficient
2026-03-02 16:37:41 +00:00
mcgi5sr2
6d955e33db cmake: add FFmpeg dependencies for video background support
Add libavcodec, libavformat, libavutil, and libswscale to the
pkg_check_modules dependency list to support native video decoding
in the background widget.
2026-03-02 16:37:11 +00:00
512e71d05c
flake.lock: update 2026-03-02 18:31:14 +02:00
4db980ab47
nix: separate overlay with deps 2026-03-02 18:30:57 +02:00
38a314298b
treewide: alejandra -> nixfmt 2026-03-02 18:30:05 +02:00
nikitax44
5ba5ff5b94
background: run reload_cmd in configure if path is empty (#950) 2026-02-20 16:49:58 +00:00
Sjoerd Siebinga
b3a1076c03
core: fix use-after-free segfault in async resource widget callbacks (#961)
Properly lock AWP<IWidget> weak pointers before calling onAssetUpdate()
to prevent use-after-free when widgets are destroyed during shutdown or
output removal. Guard timer callback against null g_asyncResourceManager.
Fix destruction order to join threads before resetting globals.
2026-02-20 13:46:42 +00:00
Maximilian Seidler
ef3017f5ef nix: remove sdbus-cpp overlay 2025-12-20 13:31:21 +02:00
William Escande
d099f87d36
pam: prevent nullpointer crash when user passwd isn't found (#928) 2025-12-19 15:53:53 +00:00
Maximilian Seidler
e2da7c6b1f
animation: migrate PHLANIMVAR from SP to UP (#920)
* animation: migrate PHLANIMVAR from SP to UP

* use create2

* bump hyprutils and flake update
2025-12-10 09:15:39 +00:00
Nathan.Woodburn/
98b86752fe
background: reload screenshot if reload_cmd specified (#903) 2025-10-28 18:20:34 +00:00
Maximilian Seidler
36ec73f166
cmake: add "libpam" as an alias for "pam" (#893) 2025-10-09 15:32:29 +00:00
Maximilian Seidler
bdc44ab5d6
flake.lock: update (#890) 2025-10-08 08:53:37 +00:00
Maximilian Seidler
de2cc5bd54
core: migrate to Hyprutils::CAsyncResourceGatherer and improve resource handling (#879)
* core: use Hyprgraphics::CAsyncResourceGatherer

* core: move screencopy frame generation to the new resource manager

* core: introduce a dedicated onAssetUpdate callback

* check for unloaded before finished and some cleanup

* also allow for dynamic label resource deduplication

use a simple counter instead of a timestamp to allow the same
widget on a different monitor to reuse a text cmd resource.

I didn't do this before, because I was worried about two labels that use
the same command with different reload times. I mitigated that by just
incrementing the revision by the time interval. This should be sufficent
to avoid clashes.

* don't render within onAssetUpdate to avoid duplicate renders

another much improvement for multi monitor setups.
allows updating within the same frame for most labels.

* remove nvidia workaround :)

I tested and it seems like the resource manager revision makes
the nvidia workaround obsolete.
2025-10-08 08:45:09 +00:00
Maximilian Seidler
c8a6768dca
misc: remove hyprland-protocols from README (#887)
hyprlock doesn't use it currently
2025-10-04 10:07:28 +00:00
Maximilian Seidler
3cb799b184
core: nvidia workaround destroy renderer before EGL (#884) 2025-10-03 11:58:38 +00:00
c48279d1e0
version: bump to 0.9.2 2025-10-02 11:03:05 +01:00
Maximilian Seidler
7f769fa993 Revert "background: unload screenshots when monitor is removed"
Pushed to the wrong remote :(
This reverts commit 1380ca04ae.
2025-09-17 17:54:49 +02:00
Maximilian Seidler
1380ca04ae background: unload screenshots when monitor is removed
This is just for testing as of now. No merging.
2025-09-17 17:51:34 +02:00
Maximilian Seidler
61b36c64a8
renderer: fix nvidia workaround (#878) 2025-09-17 15:51:17 +00:00
davc0n
a7f2634a9e
Refactor asset management to use shared_ptr (#870)
* Refactor asset management to use shared_ptr

* Replace shared_ptr with ASP for SPreloadedAsset usage
2025-09-15 18:14:34 +00:00
Maximilian Seidler
450ae1e5f0
lock-surface: remove redundant sendDestroy calls (#868)
They are already part of the generated protocol code.
2025-09-10 16:11:06 +00:00
Maximilian Seidler
04cfdc4e5b
core: recreate rendering context when monitors are empty on nvidia (#845)
This is a workaround for nvidia that can hopefully be removed at some point.
2025-09-04 07:04:54 +00:00
Maximilian Seidler
cedbb24472
renderer: move asyncResourceGatherer out of the renderer (#863)
* lockSurface: cleanup some resources

* renderer: move asyncResourceGatherer out of CRenderer

In preperation to recreate the rendering context.
2025-09-03 09:32:12 +00:00
Maximilian Seidler
8d0e56998e
core: remove dmabuf listeners after we are done with Screencopy (#858) 2025-08-27 14:40:51 +00:00
Maximilian Seidler
a356bf055b
background: monitor transforms fixups (#859) 2025-08-27 09:32:57 +00:00
Hiroki Tagato
347e05a40e
Make detection of pam library more portable (#840)
FreeBSD has the pam library installed in the base system. However, it does not provide pam.pc file. So pkg_check_modules() fails to detect pam library. With this change, cmake tries to find it using find_library() first and falls back to pkg_check_modules().
2025-08-05 17:00:48 +00:00
bdf0ef8282
version: bump to 0.9.1 2025-07-31 14:22:01 +02:00
Ben Leynen
71691634e4
Add ctrl+a as binding to clear password (#832) 2025-07-29 15:07:45 +02:00
Maximilian Seidler
1e5e62d6e3
background: fix mismatched asset sizes and transforms (#830) 2025-07-25 18:39:56 +02:00
Maximilian Seidler
d993bdc105
asyncResourceGatherer: fix conditions for skipping screencopy (#829) 2025-07-22 18:12:05 +02:00
Maximilian Seidler
8ebcee2969
seat: restore cursor shape to default (#820) 2025-07-21 21:19:01 +02:00
Maximilian Seidler
1553dd78fc
core: limit onClick to down events (#826) 2025-07-20 09:46:49 +02:00
31297a871b
version: bump to 0.9.0 2025-07-17 11:05:58 +02:00
Maximilian Seidler
17fefce86e
input-field: fix wrong placeholder text for resourceID (#819) 2025-07-11 09:25:42 +02:00
lysolaka
46498da4a0
widgets: remove the libc++ version check (#818)
see https://github.com/hyprwm/hyprlock/issues/816
2025-07-11 09:25:16 +02:00
Karun Sandhu
fee04f6406 flake.lock: update 2025-06-28 22:44:09 +03:00
Maximilian Seidler
d84b44e695
core: use hyprutils atomic pointers (#808)
* widgets: move references to hyprutils atomic shared

* core: move std::shared_pointers to hyprutils atomic shared pointers

* Nix: bump hyprutils input

* clang-format

* cmake: bump hyprutils to v0.8.0

* and bump nix again
2025-06-28 11:01:28 +02:00
davc0n
7999f448d7
core: replace grace option with --grace cli argument (#802)
* core: replace grace option with --grace cli argument

* core: remove --immediate option

not necessary anymore, grace is not a configuration option

* Revert "core: remove --immediate option"

This reverts commit 0c99899157.

* core: add --immediate and grace option deprecation warnings

* core: review fixes for --immediate and --grace

* core: review fixes for grace deprecation
2025-06-26 09:35:25 +02:00
Maximilian Seidler
a9638986c3
core: use a screenshot for fade in/out (#726) 2025-06-22 09:24:39 +02:00
e67036e8cc
CI/Nix: add cache-nix-action
Use nixbuild/nix-quick-install-action which pairs well with
nix-community/cache-nix-action.

Should help with build times by reducing the number of packages needing
to be re-downloaded on each run.

Parameters are taken from https://github.com/nix-community/cache-nix-action
and may be tweaked later.
2025-06-20 01:25:18 +03:00
Friday
f9d8dfab7a nix: use gcc15
also updated dependencies
2025-06-06 01:26:31 +03:00
TioBill
1303bb4b7e
cmake: Add check for libpam using pkg_check_modules (#795) 2025-06-05 21:22:14 +01:00
ojafuenf
8455fc8ca6
core: interpret touch as click (#788) 2025-06-04 08:14:11 +02:00
Maximilian Seidler
da1d076d84
core: fix variable substitution for LAYOUT (#778) 2025-05-19 06:23:50 +00:00
Max Woolf
f7f0c9c6b0
example: Add config location hint to help new users (#771) 2025-05-09 18:54:54 +02:00
nyx
c12cf8e509
core: disable fade in when using --immediate (#763) 2025-05-07 07:13:41 +00:00