mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-26 13:09:48 +01:00
init: Request SCHED_RR using CAP_SYS_NICE and add Python to nix dev shell (#2690)
* nix: add python3 to devShell * init: request SCHED_RR scheduling policy * init: checks if host supports reseting scheduler on fork * init: make gainRealTime more compatible with other OSes * init: remove linux-only code
This commit is contained in:
parent
50e6f368ff
commit
9fc5f4c48b
4 changed files with 19 additions and 1 deletions
|
@ -77,7 +77,7 @@
|
|||
devShells = genSystems (system: {
|
||||
default = pkgsFor.${system}.mkShell {
|
||||
name = "hyprland-shell";
|
||||
nativeBuildInputs = with pkgsFor.${system}; [cmake];
|
||||
nativeBuildInputs = with pkgsFor.${system}; [ cmake python3 ];
|
||||
buildInputs = [self.packages.${system}.wlroots-hyprland];
|
||||
inputsFrom = [
|
||||
self.packages.${system}.wlroots-hyprland
|
||||
|
|
|
@ -3,3 +3,19 @@
|
|||
bool Init::isSudo() {
|
||||
return getuid() != geteuid() || !geteuid();
|
||||
}
|
||||
|
||||
void Init::gainRealTime() {
|
||||
const int minPrio = sched_get_priority_min(SCHED_RR);
|
||||
const struct sched_param param = {.sched_priority = minPrio};
|
||||
|
||||
if (pthread_setschedparam(pthread_self(), SCHED_RR, ¶m)) {
|
||||
Debug::log(WARN, "Failed to change process scheduling strategy");
|
||||
return;
|
||||
}
|
||||
|
||||
pthread_atfork(NULL, NULL, []() {
|
||||
const struct sched_param param = {.sched_priority = 0};
|
||||
if (pthread_setschedparam(pthread_self(), SCHED_OTHER, ¶m))
|
||||
Debug::log(WARN, "Failed to reset process scheduling strategy");
|
||||
});
|
||||
}
|
|
@ -4,4 +4,5 @@
|
|||
|
||||
namespace Init {
|
||||
bool isSudo();
|
||||
void gainRealTime();
|
||||
};
|
|
@ -89,6 +89,7 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
|
||||
std::cout << "Welcome to Hyprland!\n";
|
||||
Init::gainRealTime();
|
||||
|
||||
// let's init the compositor.
|
||||
// it initializes basic Wayland stuff in the constructor.
|
||||
|
|
Loading…
Reference in a new issue