feat: use /run/user to store socket and pid file

This commit is contained in:
Moritz Böhme 2023-07-29 18:11:32 +02:00
parent 0727b3e053
commit 67b3be4c4a
Signed by: moritz
GPG key ID: 970C6E89EB0547A9
5 changed files with 20 additions and 4 deletions

5
Cargo.lock generated
View file

@ -621,9 +621,9 @@ dependencies = [
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.146" version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]] [[package]]
name = "linux-raw-sys" name = "linux-raw-sys"
@ -1134,6 +1134,7 @@ dependencies = [
"clap", "clap",
"daemonize", "daemonize",
"humantime", "humantime",
"libc",
"notify-rust", "notify-rust",
"serde", "serde",
"serde_cbor", "serde_cbor",

View file

@ -10,6 +10,7 @@ anyhow = "1.0.71"
clap = { version = "4.3.4", features = ["derive"] } clap = { version = "4.3.4", features = ["derive"] }
daemonize = "0.5.0" daemonize = "0.5.0"
humantime = "2.1.0" humantime = "2.1.0"
libc = "0.2.147"
notify-rust = "4.8.0" notify-rust = "4.8.0"
serde = { version = "1.0.164", features = ["derive"] } serde = { version = "1.0.164", features = ["derive"] }
serde_cbor = "0.11.2" serde_cbor = "0.11.2"

View file

@ -1,4 +1,5 @@
use crate::daemon::{Answer, AnswerErr, Command as OtherCommand}; use crate::daemon::{Answer, AnswerErr, Command as OtherCommand};
use crate::run_path;
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use clap::{Parser, Subcommand}; use clap::{Parser, Subcommand};
use std::net::Shutdown; use std::net::Shutdown;
@ -12,7 +13,7 @@ pub struct Cli {
#[command(subcommand)] #[command(subcommand)]
pub command: Command, pub command: Command,
#[arg(short, long)] #[arg(short, long)]
#[clap(default_value = "/tmp/timers.socket")] #[clap(default_value_t = format!("{}/timers.socket", run_path()))]
pub socket: String, pub socket: String,
} }

7
src/helper.rs Normal file
View file

@ -0,0 +1,7 @@
pub fn getuid() -> u32 {
unsafe { libc::getuid() }
}
pub fn run_path() -> String {
format!("/run/user/{}", getuid())
}

View file

@ -1,11 +1,14 @@
mod cli; mod cli;
mod daemon; mod daemon;
mod helper;
mod notification; mod notification;
mod pomodoro; mod pomodoro;
mod timer; mod timer;
use crate::helper::getuid;
use crate::cli::{send_command, Cli, Command as CliCommand}; use crate::cli::{send_command, Cli, Command as CliCommand};
use crate::daemon::{Command as DaemonCommand, Daemon}; use crate::daemon::{Command as DaemonCommand, Daemon};
use crate::helper::run_path;
use clap::Parser; use clap::Parser;
use cli::PomodoroCommand; use cli::PomodoroCommand;
@ -13,7 +16,10 @@ fn main() -> Result<(), anyhow::Error> {
let args = Cli::parse(); let args = Cli::parse();
let daemon_command = match args.command { let daemon_command = match args.command {
CliCommand::Daemon { no_notify } => { CliCommand::Daemon { no_notify } => {
daemonize::Daemonize::new().start()?; daemonize::Daemonize::new()
.pid_file(format!("{}/timers.pid", run_path()))
.user(getuid())
.start()?;
return Daemon::new(args.socket, no_notify)?.run(); return Daemon::new(args.socket, no_notify)?.run();
} }
CliCommand::Add { name, duration } => { CliCommand::Add { name, duration } => {