Skip to main content

blocking_dialog/linux/
confirm.rs

1// SPDX-FileCopyrightText: 2026 Manuel Quarneti <mq1@ik.me>
2// SPDX-License-Identifier: MIT OR Apache-2.0
3
4use super::is_kdialog_available;
5use crate::{BlockingConfirmDialog, BlockingDialogError};
6use raw_window_handle::HasWindowHandle;
7use std::process::Command;
8
9impl<'a, W: HasWindowHandle> BlockingConfirmDialog<'a, W> {
10    pub fn show(&self) -> Result<bool, BlockingDialogError> {
11        let status = if is_kdialog_available() {
12            Command::new("kdialog")
13                .arg("--title")
14                .arg(self.title)
15                .arg("--warningcontinuecancel")
16                .arg(self.message)
17                .status()?
18        } else {
19            Command::new("zenity")
20                .arg("--question")
21                .arg("--title")
22                .arg(self.title)
23                .arg("--text")
24                .arg(self.message)
25                .status()?
26        };
27
28        Ok(status.success())
29    }
30}