Compare commits

...

47 Commits

Author SHA1 Message Date
636197baab Get hyprland session at runtime
All checks were successful
/ release (push) Successful in 1m29s
2025-07-02 01:01:19 -04:00
997508cedf Removed duplicate true 2025-07-02 01:01:19 -04:00
dadd07c4c6 added ipc 2025-07-02 01:01:19 -04:00
65b84198f4 Added hyprpaper support 2025-07-02 01:01:19 -04:00
b5c4bb351d Updated release to include readme file
All checks were successful
/ release (push) Successful in 51s
2025-03-20 23:29:45 -04:00
c73b85ed1b Update .gitea/workflows/release.yml
All checks were successful
/ release (push) Successful in 52s
2025-03-20 23:14:27 -04:00
7c9ccc2e0f Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 51s
2025-03-20 23:00:55 -04:00
e29e83e634 Update .gitea/workflows/release.yml 2025-03-20 23:00:38 -04:00
84ba411fbe Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 1m36s
2025-03-20 22:58:12 -04:00
fc091a4870 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 50s
2025-03-20 22:53:41 -04:00
5ce01ea9bd Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 50s
2025-03-20 22:50:16 -04:00
c3ef702ba1 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 0s
2025-03-20 22:49:14 -04:00
636e336f05 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 50s
2025-03-20 22:41:25 -04:00
6b6fa96afb Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 50s
2025-03-20 22:34:06 -04:00
3fffee0007 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 50s
2025-03-20 22:31:24 -04:00
5692ba91ba Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 52s
2025-03-20 22:28:45 -04:00
0b58ed9d22 Update .gitea/workflows/release.yml
All checks were successful
/ release (push) Successful in 49s
2025-03-20 22:24:54 -04:00
6ed07fd329 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 38s
2025-03-20 22:20:19 -04:00
04b46dc9c0 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 38s
2025-03-20 22:18:53 -04:00
32d1d6ecb2 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 17s
2025-03-20 22:17:21 -04:00
d39dbbbe8b Update .gitea/workflows/release.yml 2025-03-20 22:16:49 -04:00
38d6be83dc Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 37s
2025-03-20 22:13:51 -04:00
93d5472dda Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 5s
2025-03-20 22:05:46 -04:00
e3992f3bae Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 5s
2025-03-20 22:03:50 -04:00
3ac03329dd Update .gitea/workflows/release.yml 2025-03-20 22:00:48 -04:00
90639a9266 minimal config
Some checks failed
/ release (push) Failing after 4s
2025-03-20 21:59:06 -04:00
31b155f4dd Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 5s
2025-03-20 21:55:39 -04:00
2e4de7e411 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 5s
2025-03-20 21:53:49 -04:00
244e80faf0 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 11s
2025-03-20 21:52:40 -04:00
10b1d25316 Update .gitea/workflows/release.yml 2025-03-20 21:52:11 -04:00
ae543de20c Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 4s
2025-03-20 21:41:09 -04:00
6f1137dc76 Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 11s
2025-03-20 18:39:30 -04:00
c44518759f sad
Some checks failed
/ release (push) Failing after 5s
2025-03-21 09:37:15 +11:00
89937ce3b5 Please work
Some checks failed
/ release (push) Failing after 5s
2025-03-20 18:34:34 -04:00
596df1de6b Update .gitea/workflows/release.yml
Some checks failed
/ release (push) Failing after 4s
2025-03-20 18:30:44 -04:00
fe4b52f129 Update .gitea/workflows/release.yml
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-gnu) (push) Failing after 4s
2025-03-20 18:29:02 -04:00
971e2880b5 Test new rust builder
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Failing after 5s
2025-03-20 18:25:09 -04:00
0d48d649b9 Update .gitea/workflows/release.yml
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Failing after 1m11s
2025-03-20 18:10:41 -04:00
cecb3a07b6 asd
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Failing after 1m54s
2025-03-20 17:59:47 -04:00
3bb591cced Update .gitea/workflows/release.yml
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Has been cancelled
2025-03-20 17:53:56 -04:00
10cb38151e Update .gitea/workflows/release.yml 2025-03-20 17:53:44 -04:00
77c79e1845 Update .gitea/workflows/release.yml
Some checks failed
/ release ${{ matrix.target }} (x86_64-linux-musl) (push) Failing after 17s
2025-03-20 17:52:41 -04:00
9a4fee6a89 Update .gitea/workflows/release.yml
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Failing after 30s
2025-03-20 17:48:37 -04:00
61ece3f20a rsdf
sdf
2025-03-20 17:34:15 -04:00
0836673602 TSERTSE
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Failing after 13s
2025-03-20 17:33:20 -04:00
19bff2f9eb Update .gitea/workflows/release.yml
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Failing after 12s
2025-03-20 17:31:47 -04:00
ebc8731b05 Update .gitea/workflows/release.yml
Some checks failed
/ release ${{ matrix.target }} (x86_64-unknown-linux-musl) (push) Failing after 1m24s
2025-03-20 17:26:12 -04:00
9 changed files with 195 additions and 14 deletions

View File

@ -4,23 +4,40 @@ on:
push:
tags:
- '*'
env:
CRATE_NAME: mycelium
RUST_BACKTRACE: 1
jobs:
release:
name: release ${{ matrix.target }}
runs-on: alma9
name: release
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
target: [x86_64-unknown-linux-musl]
matrix:
platform:
- os-name: Linux-x86_64
runs-on: ubuntu-20.04
target: x86_64-unknown-linux-gnu
toolchain:
- stable
steps:
- uses: actions/checkout@master
- uses: actions/checkout@v4
- name: Install deps
run: apt-get update; apt-get install -y libdbus-1-dev pkg-config
- name: Compile and release
uses: rust-build/rust-build.action@v1.4.5
env:
GITHUB_TOKEN: ${{ secrets.GT_TOKEN }}
run: |
apt-get update; apt-get install -y libdbus-1-3 libdbus-1-dev libdbus-1-3 pkg-config
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/inst_rustup.sh
bash /tmp/inst_rustup.sh -y
source /root/.cargo/env
rustup toolchain install stable-x86_64-unknown-linux-gnu
- name: Build binary
run: |
/root/.cargo/bin/cargo build --release
tar -zcvf x86_64-linux.tgz target/release/mycelium README.md
- name: Test
run: |
ls -alh target/release/mycelium
- name: Release
uses: softprops/action-gh-release@v2
with:
RUSTTARGET: ${{ matrix.target }}
EXTRA_FILES: README.md
files: x86_64-linux.tgz

107
Cargo.lock generated
View File

@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "aho-corasick"
@ -34,6 +34,12 @@ dependencies = [
"winapi",
]
[[package]]
name = "doctest-file"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562"
[[package]]
name = "getrandom"
version = "0.2.12"
@ -51,6 +57,19 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "interprocess"
version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb"
dependencies = [
"doctest-file",
"libc",
"recvmsg",
"widestring",
"windows-sys",
]
[[package]]
name = "libc"
version = "0.2.153"
@ -79,6 +98,7 @@ dependencies = [
"configparser",
"dbus",
"glob",
"interprocess",
"rand",
"untildify",
]
@ -125,6 +145,12 @@ dependencies = [
"getrandom",
]
[[package]]
name = "recvmsg"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175"
[[package]]
name = "regex"
version = "1.10.3"
@ -168,6 +194,12 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "widestring"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311"
[[package]]
name = "winapi"
version = "0.3.9"
@ -189,3 +221,76 @@ name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-sys"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_gnullvm",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"

View File

@ -7,5 +7,6 @@ edition = "2021"
configparser = "3.0.4"
dbus = "0.9.7"
glob = "0.3.1"
interprocess = "2.2.2"
rand = "0.8.5"
untildify = { git = "https://git.lovelynet.net/benjamyn/untildify.git", branch = "main" }

View File

@ -5,6 +5,7 @@ pub enum WallpaperHandler {
Feh,
Plasma,
Gnome,
Hyprpaper,
Error,
}
@ -14,6 +15,7 @@ impl WallpaperHandler {
"feh" => WallpaperHandler::Feh,
"plasma" => WallpaperHandler::Plasma,
"gnome" => WallpaperHandler::Gnome,
"hyprpaper" => WallpaperHandler::Hyprpaper,
_ => WallpaperHandler::Error,
}
}

24
src/handlers/hyprpaper.rs Normal file
View File

@ -0,0 +1,24 @@
use std::fmt::Write as _;
use crate::lib::ipc;
use crate::Wallpapers;
use std::env;
pub fn change_wallpapers(wallpapers: &Wallpapers) {
let hypr_session = env::var("HYPRLAND_INSTANCE_SIGNATURE").unwrap();
let xdg_path = env::var("XDG_RUNTIME_DIR").unwrap();
let mut socket_path = String::new();
write!(&mut socket_path, "{}/hypr/{}/.hyprpaper.sock", xdg_path, hypr_session).unwrap();
let ipc = ipc::IPC::new(socket_path);
for monitor in wallpapers.config.monitors.monitors.iter() {
let mut buf = String::new();
let x = wallpapers.random_selection(&monitor.ratio).to_string();
write!(&mut buf, "reload ,{}", x).unwrap();
ipc.clone().write(buf);
// println!("{}", buf);
}
// println!("{}", ipc.write(String::from("")))
}

View File

@ -2,3 +2,4 @@ pub mod dbus_plasma_interface;
pub mod feh;
pub mod gnome;
pub mod plasma;
pub mod hyprpaper;

26
src/lib/ipc.rs Normal file
View File

@ -0,0 +1,26 @@
use std::{io::Write, os::unix::net::UnixStream};
#[derive(Clone)]
pub struct IPC {
path: String
}
impl IPC {
pub fn new(path: String) -> IPC {
IPC{ path: path}
}
pub fn write(self, data: String) -> bool {
let mut stream = UnixStream::connect(&self.path).unwrap();
let resp = stream.write_all(data.as_bytes());
match resp {
Ok(_) => return true,
Err(_) => return false,
}
}
pub fn read(self) -> String {
// let mut x = String::new();
String::from(self.path)
}
}

1
src/lib/mod.rs Normal file
View File

@ -0,0 +1 @@
pub mod ipc;

View File

@ -5,6 +5,7 @@ mod files;
use enums::WallpaperHandler;
use files::*;
mod handlers;
mod lib;
use untildify::untildify;
@ -32,6 +33,9 @@ fn main() {
WallpaperHandler::Gnome => {
handlers::gnome::change_wallpapers(&wallpapers);
}
WallpaperHandler::Hyprpaper => {
handlers::hyprpaper::change_wallpapers(&wallpapers);
}
_ => {
println!("Error: Unknown wallpaper engine");
}