mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-12 08:28:32 +02:00
Compare commits
9 commits
Author | SHA1 | Date | |
---|---|---|---|
|
f229ed7dea | ||
|
f09ed75581 | ||
|
6c1291bd19 | ||
|
a369356b49 | ||
|
ee7129009a | ||
|
e7c0995aa3 | ||
|
0b12d95c83 | ||
|
e4971391be | ||
|
d36e79614c |
|
@ -1 +1 @@
|
||||||
flake-profile-11-link
|
flake-profile-4-link
|
|
@ -1 +0,0 @@
|
||||||
/nix/store/51yb1yhqssknlmxvvscvj0cqbvs0z915-nix-shell-env
|
|
1
.direnv/flake-profile-4-link
Symbolic link
1
.direnv/flake-profile-4-link
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/30prmd5nyydss0bcs7d578grjav6i7x3-nix-shell-env
|
42
.github/workflows/rust.yml
vendored
42
.github/workflows/rust.yml
vendored
|
@ -1,25 +1,33 @@
|
||||||
name: Rust
|
# inspired by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml
|
||||||
|
name: Rust-build
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "main" ]
|
branches: ["main"]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "main" ]
|
branches: ["main"]
|
||||||
|
|
||||||
env:
|
|
||||||
CARGO_TERM_COLOR: always
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: [self-hosted, ubuntu]
|
name: Build
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- name: Install Nix
|
||||||
- name: nightly-rust
|
uses: DeterminateSystems/nix-installer-action@main
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
toolchain: nightly
|
extra-conf: |
|
||||||
|
extra-experimental-features = nix-command flakes
|
||||||
|
- name: Set up cache
|
||||||
|
uses: DeterminateSystems/magic-nix-cache-action@main
|
||||||
|
- name: action
|
||||||
|
uses: cachix/install-nix-action@v25
|
||||||
|
with:
|
||||||
|
nix_path: nixpkgs=channel:nixos-unstable
|
||||||
|
- name: cache
|
||||||
|
uses: cachix/cachix-action@v14
|
||||||
|
with:
|
||||||
|
name: reset
|
||||||
|
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||||
- name: Build
|
- name: Build
|
||||||
run: cargo build --verbose
|
run: nix -L build github:${{ github.repository }}/${{ github.sha }} --no-write-lock-file
|
||||||
- name: Run clippy
|
|
||||||
run: cargo clippy --fix
|
|
||||||
|
|
10
Cargo.lock
generated
10
Cargo.lock
generated
|
@ -926,9 +926,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "re_set-lib"
|
name = "re_set-lib"
|
||||||
version = "5.2.4"
|
version = "5.2.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1f1aa52c35d115b4efc5de2d41d0288f20705dd7f3ca6a49a68f2bab9c31a8e"
|
checksum = "69ec9fc4d9e919feb030e5382de1aa49447404a57ecc19361bf7710f1cf9063e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dbus",
|
"dbus",
|
||||||
"dbus-crossroads",
|
"dbus-crossroads",
|
||||||
|
@ -952,7 +952,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reset"
|
name = "reset"
|
||||||
version = "1.2.7"
|
version = "2.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dbus",
|
"dbus",
|
||||||
"fork",
|
"fork",
|
||||||
|
@ -968,9 +968,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reset_daemon"
|
name = "reset_daemon"
|
||||||
version = "2.1.3"
|
version = "2.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "aa3666f8d12729c489f0d5d60fa8f03299da80859d72507c9e4ae6d56e61fe79"
|
checksum = "f72dd51da41c2fc3ac37ae55fbdeb2670d32cad39cc85cc95a9ea25fc02b6086"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crossbeam",
|
"crossbeam",
|
||||||
"dbus",
|
"dbus",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "reset"
|
name = "reset"
|
||||||
version = "1.2.7"
|
version = "2.0.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "A wip universal Linux settings application."
|
description = "A wip universal Linux settings application."
|
||||||
repository = "https://github.com/Xetibo/ReSet"
|
repository = "https://github.com/Xetibo/ReSet"
|
||||||
|
@ -11,8 +11,8 @@ name = "ReSet"
|
||||||
path = "src/main.rs"
|
path = "src/main.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
reset_daemon = "2.1.3"
|
reset_daemon = "2.2.0"
|
||||||
re_set-lib = "5.2.4"
|
re_set-lib = "5.2.5"
|
||||||
adw = { version = "0.6.0", package = "libadwaita", features = ["v1_4"] }
|
adw = { version = "0.6.0", package = "libadwaita", features = ["v1_4"] }
|
||||||
dbus = "0.9.7"
|
dbus = "0.9.7"
|
||||||
gtk = { version = "0.8.1", package = "gtk4", features = ["v4_12"] }
|
gtk = { version = "0.8.1", package = "gtk4", features = ["v4_12"] }
|
||||||
|
|
2
PKGBUILD
2
PKGBUILD
|
@ -1,7 +1,7 @@
|
||||||
# Maintainer: Fabio Lenherr <dashie@dashie.org>
|
# Maintainer: Fabio Lenherr <dashie@dashie.org>
|
||||||
|
|
||||||
pkgname=ReSet
|
pkgname=ReSet
|
||||||
pkgver=1.2.7
|
pkgver=2.0.0
|
||||||
pkgrel=0
|
pkgrel=0
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
pkgdir="/usr/bin/${pkgname}"
|
pkgdir="/usr/bin/${pkgname}"
|
||||||
|
|
23
README.md
23
README.md
|
@ -34,7 +34,22 @@ A window manager/compositor agnostic settings application for Linux written in r
|
||||||
## Plugins
|
## Plugins
|
||||||
|
|
||||||
ReSet features a plugin system by loading dynamic libraries for both the daemon and the ReSet graphical user interface.
|
ReSet features a plugin system by loading dynamic libraries for both the daemon and the ReSet graphical user interface.
|
||||||
A list of official plugins and their documentation can be found at [ReSet-Plugins](https://github.com/Xetibo/ReSet-Plugins).
|
A list of official plugins, installation guides and their documentation can be found at [ReSet-Plugins](https://github.com/Xetibo/ReSet-Plugins).
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
Plugins are loaded either from `/usr/lib/reset` or `~/.config/reset/plugins`. In order to install the plugin, either install a distribution specific package that places the library into the specified system folder, or place the library in the plugins folder in your config directory.
|
||||||
|
|
||||||
|
Note, after installation, please move to confirmation.
|
||||||
|
|
||||||
|
### Confirmation
|
||||||
|
|
||||||
|
In order for your plugins to load, you have to define them in `.config/reset/ReSet.toml`.
|
||||||
|
This is done to avoid loading of arbitrary plugins that might be placed within this folder by accident.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
plugins = ["libreset_monitors.so", "libreset_keyboard_plugin.so"]
|
||||||
|
```
|
||||||
|
|
||||||
## Packaging
|
## Packaging
|
||||||
|
|
||||||
|
@ -46,7 +61,7 @@ We are currently not published on flatpak due to issues with permissions.
|
||||||
This is being worked on...
|
This is being worked on...
|
||||||
|
|
||||||
Installation:
|
Installation:
|
||||||
Download the flatpak package from the release and install with the terminal.
|
Download the flatpak package (reset.flatpak) from the release and install with the terminal.
|
||||||
|
|
||||||
```
|
```
|
||||||
flatpak install --user reset.flatpak
|
flatpak install --user reset.flatpak
|
||||||
|
@ -59,7 +74,7 @@ flatpak install --user reset.flatpak
|
||||||
<!-- ```paru -S ReSet``` -->
|
<!-- ```paru -S ReSet``` -->
|
||||||
|
|
||||||
Manually:
|
Manually:
|
||||||
Download the package from the releases tab and install it with pacman.
|
Download the package (ReSet-version-x86_64.pkg.tar.zst) from the releases tab and install it with pacman.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -U /path/to/reset
|
sudo pacman -U /path/to/reset
|
||||||
|
@ -67,7 +82,7 @@ sudo pacman -U /path/to/reset
|
||||||
|
|
||||||
### Debian Package(Ubuntu 23.04 dependencies)
|
### Debian Package(Ubuntu 23.04 dependencies)
|
||||||
|
|
||||||
Download the package from the releases tab and install it with apt.
|
Download the package (ReSet.deb) from the releases tab and install it with apt.
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install ./path/to/reset
|
sudo apt install ./path/to/reset
|
||||||
|
|
6
debian/DEBIAN/control
vendored
6
debian/DEBIAN/control
vendored
|
@ -1,9 +1,9 @@
|
||||||
Package: ReSet
|
Package: ReSet
|
||||||
Version: 1.2.7
|
Version: 2.0.0
|
||||||
Maintainer: DashieTM
|
Maintainer: DashieTM
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Description: A wip universal Linux settings application.
|
Description: A wip universal Linux settings application.
|
||||||
Homepage: https://github.com/Xetibo/ReSet
|
Homepage: https://github.com/Xetibo/ReSet
|
||||||
Build-Depends: rust
|
Build-Depends: rust
|
||||||
Depends: libadwaita, gtk, dbus
|
Depends: libadwaita-1-0, libgtk-4-1, dbus
|
||||||
Recommends: pipewire-pulse, networkmanager, bluez
|
Recommends: pipewire-pulse, network-manager, bluez
|
||||||
|
|
58
flake.lock
58
flake.lock
|
@ -7,11 +7,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1715865404,
|
"lastModified": 1738453229,
|
||||||
"narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=",
|
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9",
|
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -20,31 +20,13 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1705309234,
|
|
||||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716137900,
|
"lastModified": 1739446958,
|
||||||
"narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=",
|
"narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1",
|
"rev": "2ff53fe64443980e139eaa286017f53f88336dd0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -56,11 +38,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706487304,
|
"lastModified": 1736320768,
|
||||||
"narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=",
|
"narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "90f456026d284c22b3e3497be980b2e47d0b28ac",
|
"rev": "4bc9c909d9ac828a039f288cf872d16d38185db8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -79,15 +61,14 @@
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716171463,
|
"lastModified": 1739586408,
|
||||||
"narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=",
|
"narHash": "sha256-UN9hRKRE1eLU8C0cioTZubaCZQTA8NDc8/4vCpS5pS0=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "04d61d14803854fd8453ec43c5c53a471e5407a8",
|
"rev": "3dbc0ce1c0690b83cfb9a9a51fbe90c3bc8f9916",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -95,21 +76,6 @@
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
118
nix/default.nix
118
nix/default.nix
|
@ -1,69 +1,69 @@
|
||||||
{ rustPlatform
|
{
|
||||||
, rust-bin
|
rustPlatform,
|
||||||
, pulseaudio
|
rust-bin,
|
||||||
, dbus
|
pulseaudio,
|
||||||
, gdk-pixbuf
|
dbus,
|
||||||
, gnome
|
gdk-pixbuf,
|
||||||
, pkg-config
|
adwaita-icon-theme,
|
||||||
, wrapGAppsHook4
|
pkg-config,
|
||||||
, gtk4
|
wrapGAppsHook4,
|
||||||
, libadwaita
|
gtk4,
|
||||||
, python312Packages
|
libadwaita,
|
||||||
, flatpak
|
python312Packages,
|
||||||
, flatpak-builder
|
flatpak,
|
||||||
, lib
|
flatpak-builder,
|
||||||
, lockFile
|
lib,
|
||||||
, ...
|
lockFile,
|
||||||
}:
|
...
|
||||||
let
|
}: let
|
||||||
cargoToml = builtins.fromTOML (builtins.readFile ../Cargo.toml);
|
cargoToml = builtins.fromTOML (builtins.readFile ../Cargo.toml);
|
||||||
in
|
in
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "ReSet";
|
pname = "ReSet";
|
||||||
version = cargoToml.package.version;
|
version = cargoToml.package.version;
|
||||||
|
|
||||||
src = ../.;
|
src = ../.;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
gtk4
|
gtk4
|
||||||
libadwaita
|
libadwaita
|
||||||
pulseaudio
|
pulseaudio
|
||||||
dbus
|
dbus
|
||||||
gdk-pixbuf
|
gdk-pixbuf
|
||||||
gnome.adwaita-icon-theme
|
adwaita-icon-theme
|
||||||
python312Packages.aiohttp
|
python312Packages.aiohttp
|
||||||
python312Packages.toml
|
python312Packages.toml
|
||||||
flatpak
|
flatpak
|
||||||
flatpak-builder
|
flatpak-builder
|
||||||
];
|
];
|
||||||
|
|
||||||
cargoLock = {
|
cargoLock = {
|
||||||
inherit lockFile;
|
inherit lockFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkg-config
|
pkg-config
|
||||||
wrapGAppsHook4
|
wrapGAppsHook4
|
||||||
rust-bin.nightly."2024-05-10".default
|
rust-bin.nightly."2024-05-10".default
|
||||||
];
|
];
|
||||||
|
|
||||||
copyLibs = true;
|
copyLibs = true;
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
install -D --mode=444 $src/${pname}.desktop $out/share/applications/${pname}.desktop
|
install -D --mode=444 $src/${pname}.desktop $out/share/applications/${pname}.desktop
|
||||||
install -D --mode=444 $src/src/resources/icons/${pname}.svg $out/share/pixmaps/${pname}.svg
|
install -D --mode=444 $src/src/resources/icons/${pname}.svg $out/share/pixmaps/${pname}.svg
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# test is broken in nix for some reason
|
# test is broken in nix for some reason
|
||||||
doInstallCheck = false;
|
doInstallCheck = false;
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A wip universal Linux settings application.";
|
description = "A wip universal Linux settings application.";
|
||||||
homepage = "https://github.com/Xetibo/ReSet";
|
homepage = "https://github.com/Xetibo/ReSet";
|
||||||
changelog = "https://github.com/Xetibo/ReSet/releases/tag/${version}";
|
changelog = "https://github.com/Xetibo/ReSet/releases/tag/${version}";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
maintainers = with maintainers; [ DashieTM ];
|
maintainers = with maintainers; [DashieTM];
|
||||||
mainProgram = "ReSet";
|
mainProgram = "ReSet";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -334,7 +334,7 @@ pub fn start_audio_box_listener<
|
||||||
get_default_name_function: &'static DBusFunction,
|
get_default_name_function: &'static DBusFunction,
|
||||||
dummy_name: &'static str,
|
dummy_name: &'static str,
|
||||||
) -> Connection {
|
) -> Connection {
|
||||||
// TODO: make the failed logs generically sound -> deynamic output for both
|
// FUTURE TODO: make the failed logs generically sound -> deynamic output for both
|
||||||
let object_added =
|
let object_added =
|
||||||
ObjectAdded::match_rule(Some(&BASE.into()), Some(&Path::from(DBUS_PATH))).static_clone();
|
ObjectAdded::match_rule(Some(&BASE.into()), Some(&Path::from(DBUS_PATH))).static_clone();
|
||||||
let object_changed =
|
let object_changed =
|
||||||
|
|
|
@ -117,7 +117,7 @@ pub fn new_entry<
|
||||||
reset_box: Arc<AudioBox>,
|
reset_box: Arc<AudioBox>,
|
||||||
) -> Arc<AudioEntry> {
|
) -> Arc<AudioEntry> {
|
||||||
let obj: Arc<AudioEntry> = Arc::new(Object::builder().build());
|
let obj: Arc<AudioEntry> = Arc::new(Object::builder().build());
|
||||||
// TODO use event callback for progress bar -> this is the "im speaking" indicator
|
// FUTURE TODO: use event callback for progress bar -> this is the "im speaking" indicator
|
||||||
{
|
{
|
||||||
let imp = obj.entry_imp();
|
let imp = obj.entry_imp();
|
||||||
let slider_obj_ref = obj.clone();
|
let slider_obj_ref = obj.clone();
|
||||||
|
|
|
@ -91,7 +91,7 @@ pub fn new_stream_entry<
|
||||||
stream: StreamObject,
|
stream: StreamObject,
|
||||||
) -> Arc<AudioStream> {
|
) -> Arc<AudioStream> {
|
||||||
let obj: Arc<AudioStream> = Arc::new(Object::builder().build());
|
let obj: Arc<AudioStream> = Arc::new(Object::builder().build());
|
||||||
// TODO use event callback for progress bar -> this is the "im speaking" indicator
|
// FUTURE TODO: use event callback for progress bar -> this is the "im speaking" indicator
|
||||||
let output_box_mute_ref = audio_box.clone();
|
let output_box_mute_ref = audio_box.clone();
|
||||||
let output_box_volume_ref = audio_box.clone();
|
let output_box_volume_ref = audio_box.clone();
|
||||||
let output_box_sink_ref = audio_box.clone();
|
let output_box_sink_ref = audio_box.clone();
|
||||||
|
|
|
@ -54,7 +54,7 @@ pub fn show_error<T: ReSetErrorImpl + Send + Sync + 'static>(
|
||||||
parent: Arc<T>,
|
parent: Arc<T>,
|
||||||
message: &'static str,
|
message: &'static str,
|
||||||
) {
|
) {
|
||||||
// TODO: Add error to log
|
// FUTURE TODO: Add error to log
|
||||||
glib::spawn_future(async move {
|
glib::spawn_future(async move {
|
||||||
glib::idle_add_once(move || {
|
glib::idle_add_once(move || {
|
||||||
let error = parent.error();
|
let error = parent.error();
|
||||||
|
|
|
@ -57,7 +57,7 @@ impl BluetoothBox {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
// FUTURE TODO:
|
||||||
// handle bonded -> this means saved but not connected
|
// handle bonded -> this means saved but not connected
|
||||||
// handle rssi below x -> don't show device
|
// handle rssi below x -> don't show device
|
||||||
|
|
||||||
|
@ -185,7 +185,6 @@ pub fn populate_connected_bluetooth_devices(
|
||||||
listeners: Arc<Listeners>,
|
listeners: Arc<Listeners>,
|
||||||
bluetooth_box: Arc<BluetoothBox>,
|
bluetooth_box: Arc<BluetoothBox>,
|
||||||
) {
|
) {
|
||||||
// TODO handle saved devices -> they also exist
|
|
||||||
gio::spawn_blocking(move || {
|
gio::spawn_blocking(move || {
|
||||||
let ref_box = bluetooth_box.clone();
|
let ref_box = bluetooth_box.clone();
|
||||||
let adapters = get_bluetooth_adapters(ref_box.clone());
|
let adapters = get_bluetooth_adapters(ref_box.clone());
|
||||||
|
|
|
@ -70,7 +70,7 @@ impl BluetoothEntry {
|
||||||
});
|
});
|
||||||
let gesture = GestureClick::new();
|
let gesture = GestureClick::new();
|
||||||
// paired is not what we think
|
// paired is not what we think
|
||||||
// TODO implement paired
|
// FUTURE TODO: implement paired
|
||||||
gesture.connect_released(move |_, _, _, _| {
|
gesture.connect_released(move |_, _, _, _| {
|
||||||
let imp = entry_ref.imp();
|
let imp = entry_ref.imp();
|
||||||
let borrow = imp.bluetooth_device.borrow();
|
let borrow = imp.bluetooth_device.borrow();
|
||||||
|
|
|
@ -69,7 +69,7 @@ pub fn device_removed_handler(
|
||||||
if list_entry.imp().bluetooth_device.borrow().connected {
|
if list_entry.imp().bluetooth_device.borrow().connected {
|
||||||
imp.reset_bluetooth_connected_devices.remove(&*list_entry);
|
imp.reset_bluetooth_connected_devices.remove(&*list_entry);
|
||||||
} else {
|
} else {
|
||||||
// TODO: is there a better way for this?
|
// FUTURE TODO: is there a better way for this?
|
||||||
imp.reset_bluetooth_available_devices.remove(&*list_entry);
|
imp.reset_bluetooth_available_devices.remove(&*list_entry);
|
||||||
imp.reset_bluetooth_saved_devices.remove(&*list_entry);
|
imp.reset_bluetooth_saved_devices.remove(&*list_entry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,9 @@ use glib::prelude::Cast;
|
||||||
use glib::Object;
|
use glib::Object;
|
||||||
use gtk::prelude::{GObjectPropertyExpressionExt, ListBoxRowExt, ListItemExt, WidgetExt};
|
use gtk::prelude::{GObjectPropertyExpressionExt, ListBoxRowExt, ListItemExt, WidgetExt};
|
||||||
use gtk::{Align, SignalListItemFactory, StringObject};
|
use gtk::{Align, SignalListItemFactory, StringObject};
|
||||||
|
use re_set_lib::ERROR;
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
use re_set_lib::{utils::macros::ErrorLevel, write_log_to_file};
|
||||||
|
|
||||||
pub const DBUS_PATH: &str = "/org/Xetibo/ReSet/Daemon";
|
pub const DBUS_PATH: &str = "/org/Xetibo/ReSet/Daemon";
|
||||||
pub const WIRELESS: &str = "org.Xetibo.ReSet.Network";
|
pub const WIRELESS: &str = "org.Xetibo.ReSet.Network";
|
||||||
|
@ -93,5 +96,12 @@ pub fn get_capabilities() -> Vec<String> {
|
||||||
let conn = Connection::new_session().unwrap();
|
let conn = Connection::new_session().unwrap();
|
||||||
let proxy = conn.with_proxy(BASE, DBUS_PATH, Duration::from_millis(10000));
|
let proxy = conn.with_proxy(BASE, DBUS_PATH, Duration::from_millis(10000));
|
||||||
let res: Result<(Vec<String>,), Error> = proxy.method_call(BASE, "GetCapabilities", ());
|
let res: Result<(Vec<String>,), Error> = proxy.method_call(BASE, "GetCapabilities", ());
|
||||||
|
if res.is_err() {
|
||||||
|
ERROR!(
|
||||||
|
"Could not call capabilities from daemon",
|
||||||
|
ErrorLevel::Critical
|
||||||
|
);
|
||||||
|
return Vec::new();
|
||||||
|
}
|
||||||
res.unwrap().0
|
res.unwrap().0
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ impl SavedWifiEntry {
|
||||||
let entry_ref = entry.clone();
|
let entry_ref = entry.clone();
|
||||||
delete_button.connect_clicked(clone!(@weak wifi_box => move |_| {
|
delete_button.connect_clicked(clone!(@weak wifi_box => move |_| {
|
||||||
delete_connection(entry_ref.imp().reset_connection_path.take());
|
delete_connection(entry_ref.imp().reset_connection_path.take());
|
||||||
// TODO handle error
|
// FUTURE TODO: handle error
|
||||||
wifi_box.reset_stored_wifi_list.remove(&*entry_ref);
|
wifi_box.reset_stored_wifi_list.remove(&*entry_ref);
|
||||||
|
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -209,7 +209,7 @@ pub fn show_stored_connections(wifi_box: Arc<WifiBox>) {
|
||||||
glib::idle_add_once(move || {
|
glib::idle_add_once(move || {
|
||||||
let self_imp = wifibox_ref.imp();
|
let self_imp = wifibox_ref.imp();
|
||||||
for connection in connections {
|
for connection in connections {
|
||||||
// TODO include button for settings
|
// FUTURE TODO: include button for settings
|
||||||
let name =
|
let name =
|
||||||
&String::from_utf8(connection.1).unwrap_or_else(|_| String::from(""));
|
&String::from_utf8(connection.1).unwrap_or_else(|_| String::from(""));
|
||||||
let entry = SavedWifiEntry::new(name, connection.0, self_imp);
|
let entry = SavedWifiEntry::new(name, connection.0, self_imp);
|
||||||
|
|
|
@ -48,7 +48,7 @@ impl WifiEntry {
|
||||||
.build(),
|
.build(),
|
||||||
);
|
);
|
||||||
|
|
||||||
// TODO handle encryption thing
|
// FUTURE TODO: handle encryption
|
||||||
let wifi_strength = Image::builder()
|
let wifi_strength = Image::builder()
|
||||||
.icon_name(match strength {
|
.icon_name(match strength {
|
||||||
WifiStrength::Excellent => "network-wireless-signal-excellent-symbolic",
|
WifiStrength::Excellent => "network-wireless-signal-excellent-symbolic",
|
||||||
|
@ -177,7 +177,7 @@ pub fn click_stored_network(entry: Arc<WifiEntry>) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// TODO crate spinner animation and block UI
|
// FUTURE TODO: crate spinner animation and block UI
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn click_new_network(entry: Arc<WifiEntry>) {
|
pub fn click_new_network(entry: Arc<WifiEntry>) {
|
||||||
|
@ -228,7 +228,7 @@ pub fn click_new_network(entry: Arc<WifiEntry>) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// TODO crate spinner animation and block UI
|
// FUTURE TODO: crate spinner animation and block UI
|
||||||
};
|
};
|
||||||
|
|
||||||
let entry_imp = entry.imp();
|
let entry_imp = entry.imp();
|
||||||
|
|
|
@ -72,7 +72,7 @@ pub fn access_point_changed_handler(wifi_box: Arc<WifiBox>, ir: AccessPointChang
|
||||||
let name = name_opt.as_str();
|
let name = name_opt.as_str();
|
||||||
entry_imp.wifi_strength.set(strength);
|
entry_imp.wifi_strength.set(strength);
|
||||||
entry.set_title(name);
|
entry.set_title(name);
|
||||||
// TODO handle encryption thing
|
// FUTURE TODO: handle encryption thing
|
||||||
entry_imp
|
entry_imp
|
||||||
.reset_wifi_strength
|
.reset_wifi_strength
|
||||||
.borrow()
|
.borrow()
|
||||||
|
|
|
@ -207,7 +207,6 @@ impl ReSetWindow {
|
||||||
.connect_row_activated(clone!(@ weak self_imp => move |_, _| {
|
.connect_row_activated(clone!(@ weak self_imp => move |_, _| {
|
||||||
self_imp.reset_search_entry.set_text("");
|
self_imp.reset_search_entry.set_text("");
|
||||||
}));
|
}));
|
||||||
// TODO: refactor this
|
|
||||||
let mut i = 0;
|
let mut i = 0;
|
||||||
for info in sidebar_list {
|
for info in sidebar_list {
|
||||||
if info.parent.is_none() && i != 0 {
|
if info.parent.is_none() && i != 0 {
|
||||||
|
|
|
@ -11,7 +11,7 @@ use crate::components::window::sidebar_entry;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub enum Categories {
|
pub enum Categories {
|
||||||
// TODO: are these ever used ?
|
// FUTURE TODO: are these ever used ?
|
||||||
// Connectivity,
|
// Connectivity,
|
||||||
// Audio,
|
// Audio,
|
||||||
// Peripherals,
|
// Peripherals,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use std::hint::{self};
|
use std::hint::{self};
|
||||||
use std::sync::atomic::AtomicBool;
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
@ -81,5 +81,7 @@ async fn daemon_check(ready: Arc<AtomicBool>) {
|
||||||
let res = handle.join();
|
let res = handle.join();
|
||||||
if res.unwrap().is_err() {
|
if res.unwrap().is_err() {
|
||||||
run_daemon(Some(ready)).await;
|
run_daemon(Some(ready)).await;
|
||||||
|
} else {
|
||||||
|
ready.store(true, Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ use gtk::prelude::{BoxExt, ButtonExt};
|
||||||
use re_set_lib::utils::plugin::{PluginCapabilities, PluginImplementation, PluginTestFunc, SidebarInfo};
|
use re_set_lib::utils::plugin::{PluginCapabilities, PluginImplementation, PluginTestFunc, SidebarInfo};
|
||||||
|
|
||||||
pub const BASE: &str = "org.Xetibo.ReSet.Daemon";
|
pub const BASE: &str = "org.Xetibo.ReSet.Daemon";
|
||||||
pub const DBUS_PATH: &str = "/org/Xebito/ReSet/Plugins/test";
|
pub const DBUS_PATH: &str = "/org/Xetibo/ReSet/Plugins/test";
|
||||||
pub const INTERFACE: &str = "org.Xetibo.ReSet.TestPlugin";
|
pub const INTERFACE: &str = "org.Xetibo.ReSet.TestPlugin";
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
|
|
Loading…
Reference in a new issue