Skip to content

Commit

Permalink
Merge pull request #234 from pacholoamit/master
Browse files Browse the repository at this point in the history
update
  • Loading branch information
pacholoamit authored Jul 7, 2024
2 parents a08fcb4 + d5c5be8 commit b4f2ca5
Show file tree
Hide file tree
Showing 23 changed files with 467 additions and 134 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ All notable changes to this project will be documented in this file. This projec
- Added progress bar for File explorer
- Removed Apexchart in favor of Highcharts
- Add Performance mode to settings
- Migrate to use Settings context for managing settings state
- Add file explorer context menu functionality

## 0.9.9
- Fix issue where some popover components are transparent
Expand Down
9 changes: 8 additions & 1 deletion src-tauri/capabilities/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,16 @@
"os:allow-os-type",
"os:allow-platform",
"window:allow-start-dragging",
"autostart:allow-enable",
"autostart:allow-disable",
"autostart:allow-is-enabled",
"updater:allow-check",
"updater:default",
"log:allow-log",
"log:default",
"shell:allow-spawn",
"menu:allow-new",
"menu:allow-popup",
{
"identifier": "shell:allow-execute",
"allow": [
Expand All @@ -29,6 +33,9 @@
"args": true
}
]
}
},
"fs:read-all",
"fs:read-files",
"fs:read-meta"
]
}
2 changes: 1 addition & 1 deletion src-tauri/gen/schemas/capabilities.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"main":{"identifier":"main","description":"permissions for pachtop","local":true,"windows":["main"],"permissions":["store:allow-get","store:allow-set","store:allow-save","os:allow-arch","os:allow-hostname","os:allow-os-type","os:allow-platform","window:allow-start-dragging","autostart:allow-is-enabled","updater:allow-check","updater:default","log:allow-log","log:default","shell:allow-spawn",{"identifier":"shell:allow-execute","allow":[{"args":true,"cmd":"powershell","name":"powershell"}]}]},"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["main"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","tray:default"]}}
{"main":{"identifier":"main","description":"permissions for pachtop","local":true,"windows":["main"],"permissions":["store:allow-get","store:allow-set","store:allow-save","os:allow-arch","os:allow-hostname","os:allow-os-type","os:allow-platform","window:allow-start-dragging","autostart:allow-enable","autostart:allow-disable","autostart:allow-is-enabled","updater:allow-check","updater:default","log:allow-log","log:default","shell:allow-spawn","menu:allow-new","menu:allow-popup",{"identifier":"shell:allow-execute","allow":[{"args":true,"cmd":"powershell","name":"powershell"}]},"fs:read-all","fs:read-files","fs:read-meta"]},"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["main"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","tray:default"]}}
155 changes: 128 additions & 27 deletions src-tauri/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ use std::{
use crate::dirstat::DiskItem;
use crate::models::*;
use crate::{app::AppState, dirstat::FileInfo};

use serde::{Deserialize, Serialize};
use tauri::{Manager, State};

use log::{info, trace, warn};
use log::info;
use tauri_plugin_shell::ShellExt;
use ts_rs::TS;

Expand All @@ -25,57 +26,157 @@ pub fn kill_process(state: State<'_, AppState>, name: String) -> bool {
}

#[tauri::command]
pub fn show_folder(path: String) {
pub fn open(path: String) -> Result<(), String> {
#[cfg(target_os = "macos")]
{
std::process::Command::new("open")
let child = std::process::Command::new("open")
.arg(path)
.arg("-R")
.spawn()
.unwrap();
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "linux")]
{
std::process::Command::new("xdg-open")
.arg(path)
.spawn()
.unwrap();
let child = std::process::Command::new("xdg-open").arg(path).spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "windows")]
{
std::process::Command::new("explorer")
let child = std::process::Command::new("explorer").arg(path).spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
}

#[tauri::command]
pub fn show_in_terminal(path: String) -> Result<(), String> {
#[cfg(target_os = "macos")]
{
let child = std::process::Command::new("open")
.arg("-a")
.arg("Terminal")
.arg(path)
.spawn()
.unwrap();
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "linux")]
{
let child = std::process::Command::new("gnome-terminal")
.arg("--")
.arg("bash")
.arg("-c")
.arg(format!("cd {}; exec bash", path))
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "windows")]
{
let child = std::process::Command::new("cmd")
.arg("/c")
.arg(format!("start cmd /k cd /d {}", path))
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
}

#[tauri::command]
pub fn delete_folder(path: String) {
pub fn delete_folder(path: String) -> Result<(), String> {
#[cfg(target_os = "macos")]
{
std::process::Command::new("rm")
let child = std::process::Command::new("rm")
.arg("-rf")
.arg(path)
.spawn()
.unwrap();
.arg(&path)
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "linux")]
{
std::process::Command::new("rm")
let child = std::process::Command::new("rm")
.arg("-rf")
.arg(path)
.spawn()
.unwrap();
.arg(&path)
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "windows")]
{
std::process::Command::new("del")
.arg("/f")
.arg("/q")
.arg(path)
.spawn()
.unwrap();
let child = std::process::Command::new("cmd")
.arg("/C")
.arg("rmdir")
.arg("/S")
.arg("/Q")
.arg(&path)
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
}

#[tauri::command]
pub fn delete_file(path: String) -> Result<(), String> {
#[cfg(target_os = "macos")]
{
let child = std::process::Command::new("rm").arg(&path).spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "linux")]
{
let child = std::process::Command::new("rm").arg(&path).spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
#[cfg(target_os = "windows")]
{
let child = std::process::Command::new("cmd")
.arg("/C")
.arg("del")
.arg(&path)
.spawn();

match child {
Ok(_) => Ok(()),
Err(e) => Err(e.to_string()),
}
}
}

Expand Down
3 changes: 3 additions & 0 deletions src-tauri/src/dirstat/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ pub struct DiskItem {
pub size: u64,
#[ts(type = "number")]
pub percentage_of_disk: f64,
pub path: String,
}

// Define a type alias for the callback
Expand Down Expand Up @@ -195,6 +196,7 @@ impl DiskItem {
size,
percentage_of_disk: get_percentage(&size, &total_bytes),
children: Some(sorted_sub_items),
path: path.to_string_lossy().to_string(),
})
}
FileInfo::File { size, .. } => {
Expand All @@ -206,6 +208,7 @@ impl DiskItem {
size,
children: None,
percentage_of_disk: get_percentage(&size, &total_bytes),
path: path.to_string_lossy().to_string(),
})
}
}
Expand Down
12 changes: 5 additions & 7 deletions src-tauri/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ mod tray;
mod utils;

use app::AppState;
use tauri::menu::Menu;

use std::time::Duration;

Expand Down Expand Up @@ -71,23 +70,22 @@ fn build_and_run_app(app: AppState) {

Ok(())
})
.on_window_event(|window, event| match event {
tauri::WindowEvent::CloseRequested { api, .. } => {
.on_window_event(|window, event| {
if let tauri::WindowEvent::CloseRequested { api, .. } = event {
window.hide().unwrap();
api.prevent_close();
}
tauri::WindowEvent::DragDrop { .. } => todo!(),

_ => {}
})
.manage(app)
.invoke_handler(tauri::generate_handler![
commands::kill_process,
commands::show_folder,
commands::open,
commands::delete_file,
commands::delete_folder,
commands::disk_analysis_flattened,
commands::add_pachtop_exclusion,
commands::disk_scan,
commands::show_in_terminal,
])
.run(tauri::generate_context!())
.expect("error while running tauri application");
Expand Down
4 changes: 2 additions & 2 deletions src-tauri/src/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -288,8 +288,8 @@ impl ProcessesTrait for Metrics {
run_time: process.run_time(),
cpu_usage: process.cpu_usage() / core_count as f32,
memory_usage: process.memory(),
//TODO: Handle this error
icon: "data:image/png;base64, ".to_owned() + &BASE64_STANDARD.encode(&icon),

icon: "data:image/png;base64, ".to_owned() + &BASE64_STANDARD.encode(icon),
status: match process.status() {
sysinfo::ProcessStatus::Run => "Running".to_owned(),
sysinfo::ProcessStatus::Sleep => "Sleeping".to_owned(),
Expand Down
31 changes: 16 additions & 15 deletions src-tauri/src/tray.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
use anyhow::Ok;
use tauri::{menu::MenuItemBuilder, App, Manager};
use tauri::{
menu::MenuItemBuilder,
tray::{MouseButton, TrayIconEvent},
App, Manager,
};

pub fn create_tray(app: &mut App) -> anyhow::Result<()> {
let quit = MenuItemBuilder::with_id("quit", "Quit").build(app)?;
Expand All @@ -16,23 +20,20 @@ pub fn create_tray(app: &mut App) -> anyhow::Result<()> {
"quit" => {
app.exit(0);
}
"example" => todo!(),
_ => {}
})
.on_tray_icon_event(|tray, event| match event {
tauri::tray::TrayIconEvent::Click { button, .. } => match button {
tauri::tray::MouseButton::Left => {
let app = tray.app_handle();
if let Some(window) = app.get_webview_window("main") {
let _ = window.show();
let _ = window.set_focus();
}
.on_tray_icon_event(|tray, event| {
if let TrayIconEvent::Click {
button: MouseButton::Left,
..
} = event
{
let app = tray.app_handle();
if let Some(window) = app.get_webview_window("main") {
window.show().unwrap();
window.set_focus().unwrap();
}
tauri::tray::MouseButton::Middle => todo!(),
_ => {}
},
tauri::tray::TrayIconEvent::Leave { .. } => todo!(),
_ => {}
}
})
.build(app)?;
Ok(())
Expand Down
9 changes: 6 additions & 3 deletions src/components/area-chart.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import HighchartsReact from "highcharts-react-official";
import * as Highcharts from "highcharts/highstock";
import HighchartsBoost from "highcharts/modules/boost";
import { Dispatch, SetStateAction, useEffect, useRef, useState } from "react";

import useSettings from "@/hooks/useSettings";
import { useMantineTheme } from "@mantine/core";
import { useViewportSize } from "@mantine/hooks";

HighchartsBoost(Highcharts);

export interface InitialAreaChartStateInput {
title: {
text: string;
Expand All @@ -27,7 +30,7 @@ export const useAreaChartState = (
opts: InitialAreaChartStateInput
): [Highcharts.Options, Dispatch<SetStateAction<Highcharts.Options>>] => {
const { other } = useMantineTheme();
const { isPerformanceModeEnabled } = useSettings();
const { settings } = useSettings();
const [chartOptions, setChartOptions] = useState<Highcharts.Options>({
accessibility: {
enabled: false,
Expand Down Expand Up @@ -57,7 +60,7 @@ export const useAreaChartState = (
enabled: false,
},
animation: {
duration: isPerformanceModeEnabled ? 0 : 1000,
duration: settings.isPerformanceModeEnabled ? 0 : 1000,
},
},

Expand Down Expand Up @@ -180,7 +183,7 @@ export const useAreaChartState = (
ignoreHiddenSeries: true,
alignTicks: false,
backgroundColor: "transparent",
animation: isPerformanceModeEnabled ? false : true,
animation: settings.isPerformanceModeEnabled ? false : true,
},
});

Expand Down
Loading

0 comments on commit b4f2ca5

Please sign in to comment.