Commands fixes + New commands

This commit is contained in:
Abraham
2023-05-01 04:24:06 +05:00
parent 1033840325
commit fc764c0c85
60 changed files with 404 additions and 103 deletions

BIN
src-tauri/app-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

View File

@@ -8,6 +8,4 @@ RegRead, BrowserFullCommand, HKEY_CLASSES_ROOT, %BrowserKeyName%\shell\open\comm
StringGetPos, pos, BrowserFullCommand, ",,1
pos := --pos
StringMid, BrowserPathandEXE, BrowserFullCommand, 2, %pos%
Run, % BrowserPathandEXE
Run, % BrowserPathandEXE

View File

@@ -3,4 +3,9 @@
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Run C:/Program Files (x86)/Google/Chrome/Application/chrome.exe "https://google.com"
#Include _include.ahk
args = %1%
path := DefaultBrowser()
Run, %path% %args%

View File

@@ -1,6 +0,0 @@
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Run C:/Program Files (x86)/Google/Chrome/Application/chrome.exe "https://youtube.com"

View File

@@ -0,0 +1,19 @@
DefaultBrowser() {
; Find the Registry key name for the default browser
RegRead, BrowserKeyName, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice, Progid
; Find the executable command associated with the above Registry key
RegRead, BrowserFullCommand, HKEY_CLASSES_ROOT, %BrowserKeyName%\shell\open\command
; The above RegRead will return the path and executable name of the brower contained within quotes and optional parameters
; We only want the text contained inside the first set of quotes which is the path and executable
; Find the ending quote position (we know the beginning quote is in position 0 so start searching at position 1)
StringGetPos, pos, BrowserFullCommand, ",,1
; Decrement the found position by one to work correctly with the StringMid function
pos := --pos
; Extract and return the path and executable of the browser
StringMid, BrowserPathandEXE, BrowserFullCommand, 2, %pos%
Return BrowserPathandEXE
}

View File

@@ -2,7 +2,6 @@ list:
- command:
action: ahk
exe_path: ahk/Run browser.exe
exe_args:
voice:
sounds:
- ok1
@@ -11,13 +10,14 @@ list:
phrases:
- открой браузер
- запусти браузер
- открой гугл хром
- открой хром
- гугл хром
- command:
action: ahk
exe_path: ahk/Run google.exe
exe_path: ahk/Run website.exe
exe_args:
- http://google.com
voice:
sounds:
- ok1
@@ -26,14 +26,14 @@ list:
- ok4
phrases:
- открой гугл
- гугл
- запусти гугл
- перейди в гугл
- command:
action: ahk
exe_path: ahk/Run youtube.exe
exe_path: ahk/Run website.exe
exe_args:
- http://youtube.com
voice:
sounds:
- ok1
@@ -43,4 +43,20 @@ list:
phrases:
- открой ютуб
- ютуб
- запусти ютуб
- запусти ютуб
- command:
action: ahk
exe_path: ahk/Run website.exe
exe_args:
- https://translate.google.com
voice:
sounds:
- ok1
- ok2
- ok3
- ok4
phrases:
- открой переводчик
- переводчик
- запусти переводчик

View File

@@ -0,0 +1,31 @@
list:
- command:
action: cli
cli_cmd: calc
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- открой калькулятор
- покажи калькулятор
- запусти калькулятор
- калькулятор
- command:
action: cli
cli_cmd: taskkill
cli_args:
- /f
- /im
- CalculatorApp.exe
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- закрой калькулятор
- отключи калькулятор
- выключи калькулятор

View File

@@ -0,0 +1,7 @@
WinKill, AHK_exe jarvis-app.exe
Process, Close, jarvis-app.exe
sleep 3000
Run shell:AppsFolder\com.priler.jarvis
sleep 2000
WinMinimize jarvis-app
WinMinimize Jarvis Voice Assistant

Binary file not shown.

View File

@@ -1,8 +1,46 @@
list:
- command:
action: ahk
exe_path: ahk/reboot.exe
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- перезагрузись
- перезагрузи себя
- выполни перезагрузку
- command:
action: voice
voice:
sounds:
- stupid
phrases:
- ты дурак
- ты дебил
- ты глупый
- ты тупой
- command:
action: voice
voice:
sounds:
- thanks
phrases:
- спасибо
- молодец
- респект
- ты супер
- отличная работа
- ты крут
- ты большой молодец
- ты реально крут
- ты афигенный
- command:
action: voice
exe_path:
exe_args:
voice:
sounds:
- joke1
@@ -29,8 +67,6 @@ list:
- command:
action: voice
exe_path:
exe_args:
voice:
sounds:
- thanks

View File

@@ -0,0 +1,2 @@
WinKill, AHK_exe Steam.exe
Process, Close, Steam.exe

Binary file not shown.

View File

@@ -0,0 +1,4 @@
WinKill, AHK_exe Steam.exe
Process, Close, Steam.exe
Run, steam://open/bigpicture

Binary file not shown.

View File

@@ -0,0 +1,36 @@
list:
- command:
action: ahk
exe_path: ahk/Open steam.exe
voice:
sounds:
- game_mode
phrases:
- включи игровой режим
- перейди в игровой режим
- я хочу поиграть
- включи стим
- запусти стим
- открой стим
- command:
action: ahk
exe_path: ahk/Close steam.exe
voice:
sounds:
- ok1
- ok2
- ok3
- ok4
phrases:
- рабочий режим
- вернись в рабочий режим
- отключи игровой режим
- выйди из игрового режима
- выход с игрового режима
- рабочее пространство
- выключи игровой режим
- выключи стим
- отключи стим
- выйди из стима
- закрой стим

View File

@@ -0,0 +1,15 @@
list:
- command:
action: stop_chaining
voice:
sounds:
- thanks
- ok1
phrases:
- всё
- хватит
- отмена
- не слушай
- перестань слушать
- отдыхай
- на этом всё

View File

@@ -1,13 +0,0 @@
list:
- command:
action: voice
exe_path:
exe_args:
voice:
sounds:
- stupid
phrases:
- ты дурак
- ты дебил
- ты глупый
- ты тупой

View File

@@ -1,15 +1,12 @@
list:
- command:
action: terminate
exe_path:
exe_args:
voice:
sounds:
- off
phrases:
- выключись
- вырубись
- завершить работу
- закройся
- отключись
- заверши свою работу

View File

@@ -1,20 +0,0 @@
list:
- command:
action: voice
exe_path:
exe_args:
voice:
sounds:
- thanks
phrases:
- спасибо
- молодец
- респект
- ты супер
- отличная работа
- ты крут
- ты большой молодец
- ты реально крут
- ты афигенный
- ты отец
- вечно ты молодец

View File

@@ -0,0 +1 @@
SoundSet, %1%

View File

@@ -0,0 +1 @@
FileRecycleEmpty,

Binary file not shown.

View File

@@ -0,0 +1 @@
WinMinimizeAll

Binary file not shown.

View File

@@ -0,0 +1 @@
Send, {Shift down}{Alt}{Shift up}

Binary file not shown.

View File

@@ -0,0 +1 @@
Run taskmgr.exe

Binary file not shown.

View File

@@ -0,0 +1 @@
DllCall("LockWorkStation")

Binary file not shown.

View File

@@ -0,0 +1 @@
Send #v

Binary file not shown.

View File

@@ -0,0 +1 @@
Send, #{PrintScreen}

Binary file not shown.

View File

@@ -0,0 +1 @@
DllCall("PowrProf\SetSuspendState", "int", 1, "int", 1, "int", 1)

Binary file not shown.

View File

@@ -0,0 +1,124 @@
list:
- command:
action: ahk
exe_path: ahk/Roll up windows.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- сверни все окна
- сверни окна
- command:
action: ahk
exe_path: ahk/Empty trash.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- очисти корзину
- почисти корзину
- очистка корзины
- command:
action: ahk
exe_path: ahk/Task manager open.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- запусти диспетчер задач
- открой диспетчер задач
- диспетчер задач
- command:
action: ahk
exe_path: ahk/screenshot.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- сделай скриншот
- сделай снимок экрана
- сними экран
- command:
action: ahk
exe_path: ahk/blocking.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
- ok4
phrases:
- заблокируй компьютер
- заблокируй комп
- command:
action: ahk
exe_path: ahk/sleep.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
- ok4
phrases:
- спящий режим
- ждущий режим
- иди поспи
- command:
action: ahk
exe_path: ahk/clipboard.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- открой буфер обмена
- покажи буфер обмена
- запусти буфер обмена
- буфер обмена
- command:
action: ahk
exe_path: ahk/Set language.exe
exe_args:
voice:
sounds:
- ok1
- ok2
- ok3
phrases:
- смени раскладку
- поменяй раскладку
- смени язык
- поменяй язык
- переключи на русский
- переключи на английский
- смени раскладку на русскую
- поменяй раскладку на русскую
- поменяй раскладку на английскую
- смени раскладку на английскую
- смени язык на русский
- поменяй язык на русский
- смени язык на английский
- поменяй язык на английский

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -7,8 +7,7 @@ use log::{info, warn, error};
use core::time::Duration;
use std::path::PathBuf;
use std::process::Child;
use std::process::Command;
use std::process::{Command, Child};
// use tauri::Manager;
mod structs;
@@ -34,14 +33,16 @@ pub fn parse_commands() -> Result<Vec<AssistantCommand>, String> {
let cc_yaml: CommandsList;
// try parse command.yaml
if let Ok(parse_result) = serde_yaml::from_reader::<File, CommandsList>(cc_reader) {
cc_yaml = parse_result;
} else {
warn!("Can't parse {}, skipping ...", &cc_file.display());
continue;
// return Err(format!("Can't parse {}", &cc_file.display()));
match serde_yaml::from_reader::<File, CommandsList>(cc_reader) {
Ok(parse_result) => {
cc_yaml = parse_result;
},
Err(msg) => {
warn!("Can't parse {}, skipping ...\nCommand parse error is: {:?}", &cc_file.display(), msg);
eprintln!("Can't parse {}, skipping ...\nCommand parse error is: {:?}", &cc_file.display(), msg);
continue;
}
}
// everything seems to be Ok
commands.push(AssistantCommand {
path: _cpath,
@@ -109,11 +110,30 @@ pub fn execute_exe(exe: &str, args: &Vec<String>) -> std::io::Result<Child> {
Command::new(exe).args(args).spawn()
}
pub fn execute_cli(cmd: &str, args: &Vec<String>) -> std::io::Result<Child> {
println!("Spawning cmd as: cmd /C {} {:?}", cmd, args);
if cfg!(target_os = "windows") {
Command::new("cmd")
.arg("/C")
.arg(cmd)
.args(args)
.spawn()
} else {
Command::new("sh")
.arg("-c")
.arg(cmd)
.args(args)
.spawn()
}
}
pub fn execute_command(
cmd_path: &PathBuf,
cmd_config: &Config,
app_handle: &tauri::AppHandle,
) -> Result<(), String> {
) -> Result<bool, String> {
match cmd_config.command.action.as_str() {
"voice" => {
// VOICE command type
@@ -124,7 +144,7 @@ pub fn execute_command(
.unwrap();
events::play(random_cmd_sound, app_handle);
Ok(())
Ok(true)
}
"ahk" => {
// AutoHotkey command type
@@ -146,7 +166,7 @@ pub fn execute_command(
.unwrap();
events::play(random_cmd_sound, app_handle);
Ok(())
Ok(true)
} else {
error!("AHK process spawn error (does exe path is valid?)");
Err("AHK process spawn error (does exe path is valid?)".into())
@@ -154,28 +174,26 @@ pub fn execute_command(
}
"cli" => {
// CLI command type
let exe_path_absolute = Path::new(&cmd_config.command.exe_path);
let exe_path_local = Path::new(&cmd_path).join(&cmd_config.command.exe_path);
let cli_cmd = &cmd_config.command.cli_cmd;
if let Ok(_) = execute_exe(
if exe_path_absolute.exists() {
exe_path_absolute.to_str().unwrap()
} else {
exe_path_local.to_str().unwrap()
},
&cmd_config.command.exe_args,
match execute_cli(
cli_cmd,
&cmd_config.command.cli_args,
) {
let random_cmd_sound = cmd_config
.voice
.sounds
.choose(&mut rand::thread_rng())
.unwrap();
events::play(random_cmd_sound, app_handle);
Ok(_) => {
let random_cmd_sound = cmd_config
.voice
.sounds
.choose(&mut rand::thread_rng())
.unwrap();
events::play(random_cmd_sound, app_handle);
Ok(())
} else {
error!("Shell process spawn error (does cli command is valid?)");
Err("Shell process spawn error (does cli command is valid?)".into())
Ok(true)
},
Err(msg) => {
error!("CLI command error ({})", msg);
Err(format!("Shell command error ({})", msg).into())
}
}
}
"terminate" => {
@@ -190,6 +208,17 @@ pub fn execute_command(
std::thread::sleep(Duration::from_secs(2));
std::process::exit(0);
}
"stop_chaining" => {
// STOP_CHAINING command type
let random_cmd_sound = cmd_config
.voice
.sounds
.choose(&mut rand::thread_rng())
.unwrap();
events::play(random_cmd_sound, app_handle);
Ok(false)
}
_ => {
error!("Command type unknown");
Err("Command type unknown".into())

View File

@@ -15,18 +15,32 @@ pub struct CommandsList {
#[derive(Deserialize, Debug)]
pub struct Config {
pub command: ConfigCommandSection,
pub voice: ConfigVoiceSection,
pub phrases: Vec<String>,
}
#[derive(Deserialize, Debug)]
pub struct ConfigCommandSection {
pub action: String,
#[serde(default)]
pub exe_path: String,
#[serde(default)]
pub exe_args: Vec<String>,
#[serde(default)]
pub cli_cmd: String,
#[serde(default)]
pub cli_args: Vec<String>
}
#[derive(Deserialize, Debug)]
pub struct ConfigVoiceSection {
#[serde(default)]
pub sounds: Vec<String>,
}

View File

@@ -24,7 +24,7 @@ pub const AUTHOR_NAME: Option<&str> = option_env!("CARGO_PKG_AUTHORS");
pub const REPOSITORY_LINK: Option<&str> = option_env!("CARGO_PKG_REPOSITORY");
// RUSPOTTER
pub const RUSPOTTER_MIN_SCORE: f32 = 0.64;
pub const RUSPOTTER_MIN_SCORE: f32 = 0.62;
// PICOVOICE
pub const COMMANDS_PATH: &str = "commands/";

View File

@@ -111,17 +111,6 @@ pub fn stop_recording() {
}
}
// pub fn update_selected_microphone_index() -> i32 {
// let selected_microphone: i32 = get_selected_microphone_index();
// // store current microphone idx
// SELECTED_MICROPHONE_IDX.store(selected_microphone, Ordering::SeqCst);
// // return microphone index
// info!("Selected microphone index = {selected_microphone}");
// selected_microphone
// }
pub fn get_selected_microphone_index() -> i32 {
let selected_microphone: i32;

View File

@@ -1,4 +1,5 @@
use porcupine::{Porcupine, PorcupineBuilder};
use std::ops::Sub;
use std::sync::atomic::{AtomicBool, Ordering};
use std::path::Path;
use log::{info, warn, error};
@@ -149,9 +150,17 @@ fn keyword_callback(_keyword_index: i32) {
);
match cmd_result {
Ok(_) => {
Ok(chain) => {
println!("Command executed successfully!");
start = SystemTime::now(); // listen for more commands
if chain {
// continue chaining commands
start = SystemTime::now(); // listen for more commands
} else {
// skip forward if chaining is not required
start = start.checked_sub(core::time::Duration::from_secs(1000)).unwrap();
}
continue;
}
Err(error_message) => {
@@ -317,7 +326,7 @@ fn rustpotter_init() -> Result<bool, String> {
avg_threshold: 0.,
threshold: 0.5,
min_scores: 15,
score_mode: ScoreMode::Max,
score_mode: ScoreMode::Average,
comparator_band_size: 5,
comparator_ref: 0.22
},
@@ -325,7 +334,7 @@ fn rustpotter_init() -> Result<bool, String> {
gain_normalizer: GainNormalizationConfig {
enabled: true,
gain_ref: None,
min_gain: 0.5,
min_gain: 0.7,
max_gain: 1.0,
},
band_pass: BandPassConfig {