Initial commit.
This commit is contained in:
commit
412de0754c
12
MIT-LICENSE.txt
Normal file
12
MIT-LICENSE.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
The MIT License
|
||||||
|
Version N/A
|
||||||
|
SPDX short identifier: MIT
|
||||||
|
Open Source Initiative Approved License
|
||||||
|
|
||||||
|
Copyright 2025 Radiant Code
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
101
README.md
Normal file
101
README.md
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# RunAbout
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
**RunAbout** is a streamlined AutoHotkey script that transforms how users interact with their desktop. By providing a quick-access interface for running commands and performing web searches, it removes the need for manual navigation through browsers or file explorers.
|
||||||
|
Enhanced with customizable aliases, history management, and administrator support, RunAbout offers a fast, efficient, and intuitive alternative to Windows' native Run feature.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
**RunAbout** is an **AutoHotkey**-based script that allows you to:
|
||||||
|
|
||||||
|
* **Run applications or files**,
|
||||||
|
* **Search on Google**,
|
||||||
|
* **Manage custom aliases** for your favorite commands.
|
||||||
|
|
||||||
|
All through a simple, lightweight interface designed for quick access.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### 1. Run
|
||||||
|
|
||||||
|
When you select the **Run** option:
|
||||||
|
|
||||||
|
* A window will pop up similar to the classic Windows Run (Win+R) window but with enhanced capabilities:
|
||||||
|
|
||||||
|
* Executes commands from saved aliases.
|
||||||
|
* Saves your command history into a file (`commandHistory.ini`), editable if needed.
|
||||||
|
* Avoids duplicates: each command is stored only once.
|
||||||
|
* Allows an unlimited number of saved commands, unlike the built-in Windows Run which is limited.
|
||||||
|
* Provides an easy GUI, including a button to **Run as Administrator** if required.
|
||||||
|
|
||||||
|
### 2. Web Search
|
||||||
|
|
||||||
|
Use **Web Search** when you want to quickly search Google without opening your browser manually.
|
||||||
|
|
||||||
|
* **Notes about Web Search**:
|
||||||
|
|
||||||
|
* It will open your default browser.
|
||||||
|
* It uses the last active profile in your browser.
|
||||||
|
|
||||||
|
### 3. Alias Manager
|
||||||
|
|
||||||
|
The **Alias Manager** lets you:
|
||||||
|
|
||||||
|
* Add new aliases: shortcuts to open files, folders, or links.
|
||||||
|
* Remove existing aliases easily.
|
||||||
|
|
||||||
|
**Example usage**:
|
||||||
|
Instead of typing a long path every time, create an alias linked to the path. Later, you just type the alias in the run window, and it will open the correct file, folder, or link.
|
||||||
|
|
||||||
|
**Notes for Aliases**:
|
||||||
|
|
||||||
|
* Make sure the path is **absolute**, not relative.
|
||||||
|
Example:
|
||||||
|
Instead of typing `documents`, use `C:\Users\YourUsername\Documents`.
|
||||||
|
* If you're adding a website link, it **must** start with `https://` or `http://`.
|
||||||
|
Typing only `www.youtube.com` will not work, but `https://www.youtube.com` will.
|
||||||
|
|
||||||
|
### 4. Commands in This Application
|
||||||
|
|
||||||
|
* **Win+R** → Open RunAbout's GUI.
|
||||||
|
* **Win+Ctrl+Shift+R** → Exit the application and restore your system’s default Run behavior.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
* **AutoHotkey** (version 1.1 or newer)
|
||||||
|
Download it here: [https://www.autohotkey.com/](https://www.autohotkey.com/)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Install AutoHotkey.
|
||||||
|
2. Download `RunAbout.ahk`.
|
||||||
|
3. Double-click the `.ahk` file to launch, or compile it if you want an executable version.
|
||||||
|
|
||||||
|
## File Structure
|
||||||
|
|
||||||
|
* `commandHistory.ini`: Stores your recent command history.
|
||||||
|
* `alias.ini`: Stores all your custom aliases.
|
||||||
|
|
||||||
|
Both files are auto-created if missing.
|
||||||
|
|
||||||
|
## Frequently Asked Questions
|
||||||
|
|
||||||
|
**Q: Will this application consume a lot of RAM?**
|
||||||
|
A: No. RunAbout is designed to be lightweight and will not significantly impact system memory usage.
|
||||||
|
|
||||||
|
**Q: If I don’t use this app, will it affect my Windows Run history?**
|
||||||
|
A: No. RunAbout operates independently. Your Windows Run and its history are untouched. This app manages its own history separately.
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
Thank you for reading and trying out this simple application!
|
||||||
|
If you have any questions, suggestions, or complaints, feel free to contact me.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the [MIT License](MIT-LICENSE.txt).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> Made with and by TechLabs.
|
8
changelog.txt
Normal file
8
changelog.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
Added web searching.
|
||||||
|
Added command history in run.
|
||||||
|
Added brows button.
|
||||||
|
Added cancel button for both run and web search.
|
||||||
|
Fixed command history so newest command will be place on the top instead of bottom.
|
||||||
|
Added Alias manager so you can type your alias in run edit box.
|
||||||
|
Fixed removing alias.
|
||||||
|
Added check box in the alias list.
|
BIN
runabout$.exe
Normal file
BIN
runabout$.exe
Normal file
Binary file not shown.
316
runabout.ahk
Normal file
316
runabout.ahk
Normal file
@ -0,0 +1,316 @@
|
|||||||
|
historyFile := "commandHistory.ini"
|
||||||
|
aliasFile := "alias.ini"
|
||||||
|
|
||||||
|
#r::
|
||||||
|
Gui, Add, Text,, Select an option:
|
||||||
|
Gui, Add, Button, gRunApp, &Run
|
||||||
|
Gui, Add, Button, gWebSearch, &Web
|
||||||
|
Gui, Add, Button, gAliasManager, Alias &Manager
|
||||||
|
Gui, Add, Button, gExit, &Exit
|
||||||
|
Gui, Show,, Select an Option
|
||||||
|
return
|
||||||
|
|
||||||
|
RunApp:
|
||||||
|
Gui, Destroy
|
||||||
|
Gui, Add, Text,, &Enter the command:
|
||||||
|
history := LoadHistory()
|
||||||
|
history := RTrim(history, "|")
|
||||||
|
|
||||||
|
Gui, Add, ComboBox, vRunCommand, %history%
|
||||||
|
Gui, Add, Button, gBrowseFile, &Browse
|
||||||
|
Gui, Add, Button, gExecuteCommand, &Run
|
||||||
|
Gui, Add, Button, gExecuteAdminCommand, Run &as Administrator
|
||||||
|
Gui, Add, Button, gCancelRun, &Cancel
|
||||||
|
Gui, Show,, Run Command
|
||||||
|
return
|
||||||
|
|
||||||
|
WebSearch:
|
||||||
|
Gui, Destroy
|
||||||
|
Gui, Add, Text,, &Enter a Google search query:
|
||||||
|
Gui, Add, Edit, vSearchQuery
|
||||||
|
Gui, Add, Button, gExecuteSearch, &OK
|
||||||
|
Gui, Add, Button, gCancelWeb, &Cancel
|
||||||
|
Gui, Show,, Web Search
|
||||||
|
return
|
||||||
|
|
||||||
|
AliasManager:
|
||||||
|
Gui, Destroy
|
||||||
|
Gui, Add, Text,, Existing Aliases:
|
||||||
|
aliasList := LoadAlias()
|
||||||
|
|
||||||
|
; Create a checkbox list for aliases
|
||||||
|
aliasArray := StrSplit(aliasList, "|")
|
||||||
|
Loop, % aliasArray.MaxIndex()
|
||||||
|
{
|
||||||
|
Gui, Add, Checkbox, vCheckBox%A_Index%, % aliasArray[A_Index]
|
||||||
|
}
|
||||||
|
|
||||||
|
Gui, Add, Button, gAddAlias, &Add New Alias
|
||||||
|
Gui, Add, Button, gRemoveAlias, &Remove Selected Alias
|
||||||
|
Gui, Add, Button, gCancelAliasManager, &Cancel
|
||||||
|
Gui, Show,, Alias Manager
|
||||||
|
return
|
||||||
|
|
||||||
|
gAddAlias:
|
||||||
|
Goto AddAlias
|
||||||
|
|
||||||
|
AddAlias:
|
||||||
|
Gui, Destroy
|
||||||
|
Gui, Add, Text,, Enter &alias name:
|
||||||
|
Gui, Add, Edit, vAliasName
|
||||||
|
Gui, Add, Text,, &Enter command for the alias:
|
||||||
|
Gui, Add, Edit, vAliasCommand
|
||||||
|
Gui, Add, Button, gBrowseForAlias, Browse &File
|
||||||
|
Gui, Add, Button, gBrowseForFolder, Browse Fo&lder, Alt+O
|
||||||
|
Gui, Add, Button, gSaveAlias, &Save
|
||||||
|
Gui, Add, Button, gCancelAlias, &Cancel
|
||||||
|
Gui, Show,, Add Alias
|
||||||
|
return
|
||||||
|
|
||||||
|
BrowseForAlias:
|
||||||
|
FileSelectFile, SelectedFileOrFolder, , , Select File, All Files (*.*)
|
||||||
|
if (SelectedFileOrFolder != "")
|
||||||
|
{
|
||||||
|
GuiControl,, AliasCommand, %SelectedFileOrFolder% ; Set hasil browse ke kotak edit AliasCommand
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
|
BrowseForFolder: ; Fungsi untuk Browse folder
|
||||||
|
FileSelectFolder, SelectedFolder, , , Select Folder
|
||||||
|
if (SelectedFolder != "")
|
||||||
|
{
|
||||||
|
GuiControl,, AliasCommand, %SelectedFolder% ; Set hasil browse folder ke kotak edit AliasCommand
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
|
SaveAlias:
|
||||||
|
Gui, Submit
|
||||||
|
if (AliasName = "" or AliasCommand = "")
|
||||||
|
{
|
||||||
|
MsgBox, Alias name or command cannot be empty!
|
||||||
|
return
|
||||||
|
}
|
||||||
|
; Load current aliases, append new one, and save
|
||||||
|
currentAliases := LoadAlias()
|
||||||
|
if (currentAliases != "")
|
||||||
|
newAliases := currentAliases . "|"
|
||||||
|
else
|
||||||
|
newAliases := ""
|
||||||
|
newAliases .= AliasName "=" AliasCommand
|
||||||
|
IniWrite, %newAliases%, %aliasFile%, Aliases
|
||||||
|
MsgBox, Alias added successfully!
|
||||||
|
Goto AliasManager
|
||||||
|
return
|
||||||
|
|
||||||
|
RemoveAlias:
|
||||||
|
selectedAliases := ""
|
||||||
|
aliasArray := StrSplit(LoadAlias(), "|")
|
||||||
|
|
||||||
|
|
||||||
|
Loop, % aliasArray.MaxIndex()
|
||||||
|
{
|
||||||
|
GuiControlGet, isChecked, , CheckBox%A_Index% ; Get the checkbox status
|
||||||
|
if (isChecked) ; If the checkbox is checked
|
||||||
|
{
|
||||||
|
aliasName := aliasArray[A_Index]
|
||||||
|
selectedAliases .= aliasName . "|"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedAliases = "")
|
||||||
|
{
|
||||||
|
MsgBox, Please select an alias to remove!
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgBox, 4, Confirm Delete, Are you sure you want to delete the following aliases:n%selectedAliases%
|
||||||
|
IfMsgBox Yes
|
||||||
|
{
|
||||||
|
; Load current aliases and filter out the selected ones
|
||||||
|
aliasArray := StrSplit(LoadAlias(), "|")
|
||||||
|
remainingAliases := ""
|
||||||
|
|
||||||
|
Loop, % aliasArray.MaxIndex()
|
||||||
|
{
|
||||||
|
aliasEntry := aliasArray[A_Index]
|
||||||
|
aliasName := StrSplit(aliasEntry, "=").1 ; Extract the alias name
|
||||||
|
if !InStr(selectedAliases, aliasName) ; If alias is not selected for deletion
|
||||||
|
{
|
||||||
|
if (remainingAliases != "")
|
||||||
|
remainingAliases .= "|"
|
||||||
|
remainingAliases .= aliasEntry
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IniWrite, %remainingAliases%, %aliasFile%, Aliases
|
||||||
|
MsgBox, Selected aliases have been removed.
|
||||||
|
}
|
||||||
|
Goto AliasManager
|
||||||
|
return
|
||||||
|
|
||||||
|
CancelAlias:
|
||||||
|
Gui, Destroy
|
||||||
|
Goto AliasManager
|
||||||
|
return
|
||||||
|
|
||||||
|
CancelAliasManager:
|
||||||
|
Gui, Destroy
|
||||||
|
return
|
||||||
|
|
||||||
|
ExecuteCommand:
|
||||||
|
Gui, Submit
|
||||||
|
if (RunCommand = "")
|
||||||
|
{
|
||||||
|
MsgBox, Commands cannot be empty!
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
RunCommand := LoadAliasCommand(RunCommand) ; Check if command is an alias
|
||||||
|
|
||||||
|
If (RunCommand = "documents") {
|
||||||
|
Run, explorer.exe shell:Documents
|
||||||
|
} Else If (RunCommand = "downloads") {
|
||||||
|
Run, explorer.exe shell:Downloads
|
||||||
|
} Else If (RunCommand = "desktop") {
|
||||||
|
Run, explorer.exe shell:Desktop
|
||||||
|
} Else If FileExist(RunCommand)
|
||||||
|
{
|
||||||
|
if InStr(RunCommand, ".exe")
|
||||||
|
{
|
||||||
|
Run, %RunCommand%
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Run, explorer.exe "%RunCommand%"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Run, %RunCommand%
|
||||||
|
}
|
||||||
|
SaveHistory(RunCommand)
|
||||||
|
Gui, Destroy
|
||||||
|
return
|
||||||
|
|
||||||
|
ExecuteAdminCommand:
|
||||||
|
Gui, Submit
|
||||||
|
if (RunCommand = "")
|
||||||
|
{
|
||||||
|
MsgBox, Commands cannot be empty!
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if FileExist(RunCommand)
|
||||||
|
{
|
||||||
|
if InStr(RunCommand, ".exe")
|
||||||
|
{
|
||||||
|
Run, *RunAs %RunCommand%
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Run, explorer.exe "%RunCommand%"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Run, *RunAs %RunCommand%
|
||||||
|
}
|
||||||
|
SaveHistory(RunCommand)
|
||||||
|
Gui, Destroy
|
||||||
|
return
|
||||||
|
|
||||||
|
CancelRun:
|
||||||
|
Gui, Destroy
|
||||||
|
return
|
||||||
|
|
||||||
|
CancelWeb:
|
||||||
|
Gui, Destroy
|
||||||
|
return
|
||||||
|
|
||||||
|
BrowseFile:
|
||||||
|
FileSelectFile, SelectedFile, , , Select File, All Files (*.*)
|
||||||
|
if SelectedFile !=
|
||||||
|
{
|
||||||
|
if InStr(SelectedFile, ".exe")
|
||||||
|
{
|
||||||
|
Run, %SelectedFile%
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Run, explorer.exe "%SelectedFile%"
|
||||||
|
}
|
||||||
|
SaveHistory(SelectedFile)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
|
ExecuteSearch:
|
||||||
|
Gui, Submit
|
||||||
|
Run, https://www.google.com/search?q=%SearchQuery%
|
||||||
|
Gui, Destroy
|
||||||
|
return
|
||||||
|
|
||||||
|
SaveHistory(command) {
|
||||||
|
global historyFile
|
||||||
|
if command != ""
|
||||||
|
{
|
||||||
|
IniRead, previousHistory, %historyFile%, History, Commands
|
||||||
|
if (previousHistory != "ERROR") {
|
||||||
|
previousHistory := StrReplace(previousHistory, command . "|", "")
|
||||||
|
previousHistory := StrReplace(previousHistory, "|" . command, "")
|
||||||
|
previousHistory := StrReplace(previousHistory, command, "")
|
||||||
|
|
||||||
|
newHistory := command
|
||||||
|
if (previousHistory != "")
|
||||||
|
newHistory := newHistory . "|" . previousHistory
|
||||||
|
|
||||||
|
IniWrite, %newHistory%, %historyFile%, History, Commands
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IniWrite, %command%, %historyFile%, History, Commands
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadHistory() {
|
||||||
|
global historyFile
|
||||||
|
if FileExist(historyFile)
|
||||||
|
{
|
||||||
|
IniRead, history, %historyFile%, History, Commands
|
||||||
|
if (history = "ERROR" or history = "")
|
||||||
|
return ""
|
||||||
|
return history
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadAlias() {
|
||||||
|
global aliasFile
|
||||||
|
if FileExist(aliasFile)
|
||||||
|
{
|
||||||
|
IniRead, aliasList, %aliasFile%, Aliases
|
||||||
|
if (aliasList = "ERROR" or aliasList = "")
|
||||||
|
return ""
|
||||||
|
return aliasList
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadAliasCommand(alias) {
|
||||||
|
global aliasFile
|
||||||
|
IniRead, command, %aliasFile%, Aliases, %alias%
|
||||||
|
if command != "ERROR"
|
||||||
|
return command
|
||||||
|
return alias
|
||||||
|
}
|
||||||
|
|
||||||
|
Exit:
|
||||||
|
Gui, Destroy
|
||||||
|
return
|
||||||
|
|
||||||
|
#^+r::ExitApp
|
Loading…
x
Reference in New Issue
Block a user