Merge branch 'dev' into rc
This commit is contained in:
@@ -6,10 +6,15 @@
|
|||||||
- Prefer `(( ))` over numeric operators inside `[[ ]]` (e.g., `(( count < 50 ))`, not `[[ $count -lt 50 ]]`)
|
- Prefer `(( ))` over numeric operators inside `[[ ]]` (e.g., `(( count < 50 ))`, not `[[ $count -lt 50 ]]`)
|
||||||
- For strings/paths with spaces, quote them instead of escaping spaces with `\ ` (e.g., `"$APP_DIR/Disk Usage.desktop"`, not `$APP_DIR/Disk\ Usage.desktop`)
|
- For strings/paths with spaces, quote them instead of escaping spaces with `\ ` (e.g., `"$APP_DIR/Disk Usage.desktop"`, not `$APP_DIR/Disk\ Usage.desktop`)
|
||||||
- Shebangs must use `#!/bin/bash` consistently (never `#!/usr/bin/env bash`)
|
- Shebangs must use `#!/bin/bash` consistently (never `#!/usr/bin/env bash`)
|
||||||
|
- Scripts under `install/` and `migrations/` may be sourced and intentionally omit shebangs
|
||||||
|
|
||||||
# Command Naming
|
# Command Naming
|
||||||
|
|
||||||
All commands start with `omarchy-`. Prefixes indicate purpose:
|
All commands start with `omarchy-`. Prefixes indicate purpose.
|
||||||
|
|
||||||
|
The authoritative command group list lives in `bin/omarchy` in `GROUP_DESCRIPTIONS`. Keep `GROUP_DESCRIPTIONS` updated when adding a new command prefix.
|
||||||
|
|
||||||
|
Common prefixes include:
|
||||||
|
|
||||||
- `cmd-` - check if commands exist, misc utility commands
|
- `cmd-` - check if commands exist, misc utility commands
|
||||||
- `capture-` - screenshots, screen recordings, and other capture tools
|
- `capture-` - screenshots, screen recordings, and other capture tools
|
||||||
@@ -24,6 +29,51 @@ All commands start with `omarchy-`. Prefixes indicate purpose:
|
|||||||
- `theme-` - theme management
|
- `theme-` - theme management
|
||||||
- `update-` - update components
|
- `update-` - update components
|
||||||
|
|
||||||
|
Other current prefixes include:
|
||||||
|
|
||||||
|
- `ac-`, `audio-`, `battery-`, `branch-`, `brightness-`, `channel-`, `config-`, `debug-`, `dev-`, `drive-`, `first-`, `font-`, `haptic-`, `hibernation-`, `hook-`, `hyprland-`, `menu-`, `migrate-`, `notification-`, `npx-`, `plymouth-`, `powerprofiles-`, `reinstall-`, `remove-`, `screensaver-`, `show-`, `snapshot-`, `state-`, `sudo-`, `swayosd-`, `system-`, `transcode-`, `tui-`, `tz-`, `upload-`, `version-`, `voxtype-`, `webapp-`, `wifi-`, `windows-`
|
||||||
|
|
||||||
|
# Command Metadata
|
||||||
|
|
||||||
|
Commands in `bin/` can declare CLI metadata in comments near the top of the file. `bin/omarchy` scans the first 80 lines, and tests expect command metadata to remain valid.
|
||||||
|
|
||||||
|
Supported metadata keys:
|
||||||
|
|
||||||
|
- `# omarchy:summary=...` - short help text
|
||||||
|
- `# omarchy:group=...` - command group when it differs from the filename-derived prefix
|
||||||
|
- `# omarchy:name=...` - command name within the group
|
||||||
|
- `# omarchy:args=...` - usage arguments
|
||||||
|
- `# omarchy:examples=...` - examples separated with ` | `
|
||||||
|
- `# omarchy:alias=...` / `# omarchy:aliases=...` - alternate routes
|
||||||
|
- `# omarchy:requires-sudo=true` - mark commands that require sudo
|
||||||
|
|
||||||
|
Prefer explicit metadata for user-facing commands. Keep routes consistent with the filename unless there is a deliberate alias or compatibility route.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# omarchy:summary=Take a screenshot
|
||||||
|
# omarchy:group=capture
|
||||||
|
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy]
|
||||||
|
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
|
||||||
|
# omarchy:aliases=omarchy screenshot
|
||||||
|
```
|
||||||
|
|
||||||
|
# Install Scripts
|
||||||
|
|
||||||
|
Install entry points (`install.sh`, `boot.sh`) use `#!/bin/bash`. Many scripts under `install/` are sourced via `run_logged` and intentionally do not have shebangs.
|
||||||
|
|
||||||
|
Install stage files follow this pattern:
|
||||||
|
|
||||||
|
- `install/*/all.sh` lists scripts in execution order
|
||||||
|
- leaf scripts are sourced by `run_logged $OMARCHY_INSTALL/path/to/script.sh`
|
||||||
|
- avoid `exit` in sourced install scripts unless intentionally aborting the install
|
||||||
|
- use `$OMARCHY_INSTALL` and `$OMARCHY_PATH` instead of hard-coded Omarchy paths
|
||||||
|
- keep hardware-specific logic under `install/config/hardware/`
|
||||||
|
- prefer helper commands for package and command checks where available
|
||||||
|
|
||||||
|
Raw `command -v`, `pacman`, and `pacman-key` are acceptable in bootstrap/preflight/package-helper contexts where the helper commands may not be available yet or where direct package-manager behavior is the point of the script.
|
||||||
|
|
||||||
# Helper Commands
|
# Helper Commands
|
||||||
|
|
||||||
Use these instead of raw shell commands:
|
Use these instead of raw shell commands:
|
||||||
@@ -33,6 +83,8 @@ Use these instead of raw shell commands:
|
|||||||
- `omarchy-pkg-add` - install packages (handles both pacman and AUR)
|
- `omarchy-pkg-add` - install packages (handles both pacman and AUR)
|
||||||
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)
|
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)
|
||||||
|
|
||||||
|
Exceptions are allowed for bootstrap, preflight, migration, and package-helper scripts where the helper may not be available yet, where the helper itself is being implemented, or where direct package-manager behavior is required.
|
||||||
|
|
||||||
# Config Structure
|
# Config Structure
|
||||||
|
|
||||||
- `config/` - default configs copied to `~/.config/`
|
- `config/` - default configs copied to `~/.config/`
|
||||||
@@ -53,10 +105,15 @@ This copies `~/.local/share/omarchy/config/hypr/hyprlock.conf` to `~/.config/hyp
|
|||||||
|
|
||||||
To create a new migration, run `omarchy-dev-add-migration --no-edit`. This creates a migration file named after the unix timestamp of the last commit.
|
To create a new migration, run `omarchy-dev-add-migration --no-edit`. This creates a migration file named after the unix timestamp of the last commit.
|
||||||
|
|
||||||
Migration format:
|
New migration format:
|
||||||
- No shebang line
|
- No shebang line
|
||||||
- Start with an `echo` describing what the migration does
|
- Start with an `echo` describing what the migration does
|
||||||
- Use `$OMARCHY_PATH` to reference the omarchy directory
|
- Use `$OMARCHY_PATH` to reference the omarchy directory
|
||||||
|
- Prefer helper commands such as `omarchy-cmd-present`, `omarchy-cmd-missing`, `omarchy-pkg-present`, and `omarchy-pkg-missing`
|
||||||
|
|
||||||
|
Some older migrations predate these rules. Do not copy older migrations that start with shebangs, omit the leading `echo`, or hard-code `~/.local/share/omarchy`.
|
||||||
|
|
||||||
|
Migrations may use raw `pacman`, `command -v`, or direct config edits when needed for historical compatibility or one-off repair work.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Foot Server
|
||||||
|
NoDisplay=true
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
TryExec=foot
|
||||||
|
Exec=foot
|
||||||
|
Icon=foot
|
||||||
|
Terminal=false
|
||||||
|
Categories=System;TerminalEmulator;
|
||||||
|
Name=Foot
|
||||||
|
GenericName=Terminal
|
||||||
|
Comment=A fast, lightweight and minimalistic Wayland terminal emulator
|
||||||
|
StartupNotify=true
|
||||||
|
StartupWMClass=foot
|
||||||
|
Actions=New;
|
||||||
|
X-TerminalArgExec=-e
|
||||||
|
X-TerminalArgAppId=--app-id=
|
||||||
|
X-TerminalArgTitle=--title=
|
||||||
|
X-TerminalArgDir=--working-directory=
|
||||||
|
|
||||||
|
[Desktop Action New]
|
||||||
|
Name=New Terminal
|
||||||
|
Exec=foot
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Foot Client
|
||||||
|
NoDisplay=true
|
||||||
+31
-23
@@ -17,6 +17,7 @@ declare -A COMMAND_USAGE
|
|||||||
declare -A COMMAND_ARGS
|
declare -A COMMAND_ARGS
|
||||||
declare -A COMMAND_EXAMPLES
|
declare -A COMMAND_EXAMPLES
|
||||||
declare -A COMMAND_REQUIRES_SUDO
|
declare -A COMMAND_REQUIRES_SUDO
|
||||||
|
declare -A COMMAND_HIDDEN
|
||||||
declare -A COMMAND_ALIASES
|
declare -A COMMAND_ALIASES
|
||||||
declare -A COMMAND_HAS_SUMMARY
|
declare -A COMMAND_HAS_SUMMARY
|
||||||
declare -A COMMAND_METADATA_ERRORS
|
declare -A COMMAND_METADATA_ERRORS
|
||||||
@@ -55,17 +56,17 @@ GROUP_DESCRIPTIONS[reinstall]="Reinstall and reset workflows"
|
|||||||
GROUP_DESCRIPTIONS[remove]="Removal workflows"
|
GROUP_DESCRIPTIONS[remove]="Removal workflows"
|
||||||
GROUP_DESCRIPTIONS[restart]="Restart Omarchy components"
|
GROUP_DESCRIPTIONS[restart]="Restart Omarchy components"
|
||||||
GROUP_DESCRIPTIONS[setup]="Interactive setup wizards"
|
GROUP_DESCRIPTIONS[setup]="Interactive setup wizards"
|
||||||
|
GROUP_DESCRIPTIONS[screensaver]="Screensaver branding and animation"
|
||||||
GROUP_DESCRIPTIONS[snapshot]="System snapshots"
|
GROUP_DESCRIPTIONS[snapshot]="System snapshots"
|
||||||
GROUP_DESCRIPTIONS[state]="Persistent Omarchy state"
|
|
||||||
GROUP_DESCRIPTIONS[sudo]="Sudo configuration helpers"
|
GROUP_DESCRIPTIONS[sudo]="Sudo configuration helpers"
|
||||||
GROUP_DESCRIPTIONS[swayosd]="SwayOSD status display helpers"
|
GROUP_DESCRIPTIONS[swayosd]="SwayOSD status display helpers"
|
||||||
GROUP_DESCRIPTIONS[system]="Reboot, shutdown, logout, and lock"
|
GROUP_DESCRIPTIONS[system]="Reboot, shutdown, logout, and lock"
|
||||||
GROUP_DESCRIPTIONS[theme]="Theme management"
|
GROUP_DESCRIPTIONS[theme]="Theme management"
|
||||||
GROUP_DESCRIPTIONS[toggle]="Toggle Omarchy features"
|
GROUP_DESCRIPTIONS[toggle]="Toggle Omarchy features"
|
||||||
|
GROUP_DESCRIPTIONS[transcode]="Image and video transcoding"
|
||||||
GROUP_DESCRIPTIONS[tui]="Terminal UI launchers"
|
GROUP_DESCRIPTIONS[tui]="Terminal UI launchers"
|
||||||
GROUP_DESCRIPTIONS[tz]="Timezone selection"
|
GROUP_DESCRIPTIONS[tz]="Timezone selection"
|
||||||
GROUP_DESCRIPTIONS[update]="Omarchy and system updates"
|
GROUP_DESCRIPTIONS[update]="Omarchy and system updates"
|
||||||
GROUP_DESCRIPTIONS[upload]="Upload helpers"
|
|
||||||
GROUP_DESCRIPTIONS[version]="Version and channel information"
|
GROUP_DESCRIPTIONS[version]="Version and channel information"
|
||||||
GROUP_DESCRIPTIONS[voxtype]="Voxtype dictation"
|
GROUP_DESCRIPTIONS[voxtype]="Voxtype dictation"
|
||||||
GROUP_DESCRIPTIONS[webapp]="Web app launchers"
|
GROUP_DESCRIPTIONS[webapp]="Web app launchers"
|
||||||
@@ -129,6 +130,7 @@ register_command() {
|
|||||||
local examples=""
|
local examples=""
|
||||||
local aliases=""
|
local aliases=""
|
||||||
local requires_sudo=""
|
local requires_sudo=""
|
||||||
|
local hidden=""
|
||||||
local line=""
|
local line=""
|
||||||
local metadata_key=""
|
local metadata_key=""
|
||||||
local metadata_value=""
|
local metadata_value=""
|
||||||
@@ -184,6 +186,10 @@ register_command() {
|
|||||||
requires_sudo="$metadata_value"
|
requires_sudo="$metadata_value"
|
||||||
[[ $metadata_value == "true" ]] || metadata_errors=$(append_pipe_value "$metadata_errors" "requires-sudo must be omitted or true")
|
[[ $metadata_value == "true" ]] || metadata_errors=$(append_pipe_value "$metadata_errors" "requires-sudo must be omitted or true")
|
||||||
;;
|
;;
|
||||||
|
hidden)
|
||||||
|
hidden="$metadata_value"
|
||||||
|
[[ $metadata_value == "true" ]] || metadata_errors=$(append_pipe_value "$metadata_errors" "hidden must be omitted or true")
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -227,6 +233,7 @@ register_command() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
[[ $requires_sudo == "true" ]] || requires_sudo="false"
|
[[ $requires_sudo == "true" ]] || requires_sudo="false"
|
||||||
|
[[ $hidden == "true" ]] || hidden="false"
|
||||||
|
|
||||||
local key="$file_binary"
|
local key="$file_binary"
|
||||||
COMMAND_KEYS+=("$key")
|
COMMAND_KEYS+=("$key")
|
||||||
@@ -240,6 +247,7 @@ register_command() {
|
|||||||
COMMAND_ARGS["$key"]="$args"
|
COMMAND_ARGS["$key"]="$args"
|
||||||
COMMAND_EXAMPLES["$key"]="$examples"
|
COMMAND_EXAMPLES["$key"]="$examples"
|
||||||
COMMAND_REQUIRES_SUDO["$key"]="$requires_sudo"
|
COMMAND_REQUIRES_SUDO["$key"]="$requires_sudo"
|
||||||
|
COMMAND_HIDDEN["$key"]="$hidden"
|
||||||
COMMAND_HAS_SUMMARY["$key"]="$has_summary"
|
COMMAND_HAS_SUMMARY["$key"]="$has_summary"
|
||||||
COMMAND_METADATA_ERRORS["$key"]="$metadata_errors"
|
COMMAND_METADATA_ERRORS["$key"]="$metadata_errors"
|
||||||
|
|
||||||
@@ -319,16 +327,6 @@ command_requires_args() {
|
|||||||
[[ -n $required ]]
|
[[ -n $required ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
load_group_extra_commands() {
|
|
||||||
local group="$1"
|
|
||||||
|
|
||||||
case "$group" in
|
|
||||||
install)
|
|
||||||
load_command_by_binary omarchy-pkg-add
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
load_group_commands() {
|
load_group_commands() {
|
||||||
local group="$1"
|
local group="$1"
|
||||||
local file=""
|
local file=""
|
||||||
@@ -342,7 +340,6 @@ load_group_commands() {
|
|||||||
register_command "$file"
|
register_command "$file"
|
||||||
done
|
done
|
||||||
|
|
||||||
load_group_extra_commands "$group"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve_direct_route() {
|
resolve_direct_route() {
|
||||||
@@ -375,6 +372,9 @@ sorted_keys() {
|
|||||||
local key=""
|
local key=""
|
||||||
|
|
||||||
for key in "${COMMAND_KEYS[@]}"; do
|
for key in "${COMMAND_KEYS[@]}"; do
|
||||||
|
if [[ $include_all != "true" && ${COMMAND_HIDDEN[$key]} == "true" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
printf '%s\t%s\n' "${COMMAND_ROUTE[$key]}" "$key"
|
printf '%s\t%s\n' "${COMMAND_ROUTE[$key]}" "$key"
|
||||||
done | sort -u | cut -f2-
|
done | sort -u | cut -f2-
|
||||||
}
|
}
|
||||||
@@ -418,6 +418,10 @@ sorted_group_keys() {
|
|||||||
local route=""
|
local route=""
|
||||||
|
|
||||||
for key in "${COMMAND_KEYS[@]}"; do
|
for key in "${COMMAND_KEYS[@]}"; do
|
||||||
|
if [[ $include_all != "true" && ${COMMAND_HIDDEN[$key]} == "true" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
fallback_group=$(fallback_group_for_key "$key")
|
fallback_group=$(fallback_group_for_key "$key")
|
||||||
if [[ ${COMMAND_GROUP[$key]} != "$group" && $fallback_group != "$group" ]]; then
|
if [[ ${COMMAND_GROUP[$key]} != "$group" && $fallback_group != "$group" ]]; then
|
||||||
continue
|
continue
|
||||||
@@ -495,8 +499,6 @@ Discovery:
|
|||||||
omarchy commands --all Include commands explicitly marked hidden
|
omarchy commands --all Include commands explicitly marked hidden
|
||||||
omarchy commands --json Machine-readable command list
|
omarchy commands --json Machine-readable command list
|
||||||
omarchy commands --check Validate command metadata and routes
|
omarchy commands --check Validate command metadata and routes
|
||||||
omarchy dev benchmark Measure CLI response times
|
|
||||||
omarchy dev bin metadata Show bin metadata fields and defaults
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -508,7 +510,7 @@ Usage:
|
|||||||
List commands known to the Omarchy command center.
|
List commands known to the Omarchy command center.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--all Accepted for compatibility
|
--all Include commands explicitly marked hidden
|
||||||
--json Emit machine-readable JSON
|
--json Emit machine-readable JSON
|
||||||
--markdown Emit a Markdown command table
|
--markdown Emit a Markdown command table
|
||||||
--check Validate command metadata and route collisions
|
--check Validate command metadata and route collisions
|
||||||
@@ -560,6 +562,9 @@ show_commands() {
|
|||||||
|
|
||||||
for route in "${!ROUTE_IS_ALIAS[@]}"; do
|
for route in "${!ROUTE_IS_ALIAS[@]}"; do
|
||||||
key="${ROUTE_TO_KEY[$route]}"
|
key="${ROUTE_TO_KEY[$route]}"
|
||||||
|
if [[ $include_all != "true" && ${COMMAND_HIDDEN[$key]} == "true" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
alias_rows+="$route"$'\t'"${COMMAND_ROUTE[$key]}"$'\n'
|
alias_rows+="$route"$'\t'"${COMMAND_ROUTE[$key]}"$'\n'
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -598,13 +603,14 @@ emit_command_records() {
|
|||||||
|
|
||||||
while IFS= read -r key; do
|
while IFS= read -r key; do
|
||||||
[[ -n $key ]] || continue
|
[[ -n $key ]] || continue
|
||||||
printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
|
printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
|
||||||
"${COMMAND_ROUTE[$key]}" \
|
"${COMMAND_ROUTE[$key]}" \
|
||||||
"${COMMAND_BINARY[$key]}" \
|
"${COMMAND_BINARY[$key]}" \
|
||||||
"${COMMAND_GROUP[$key]}" \
|
"${COMMAND_GROUP[$key]}" \
|
||||||
"${COMMAND_NAME[$key]}" \
|
"${COMMAND_NAME[$key]}" \
|
||||||
"${COMMAND_SUMMARY[$key]}" \
|
"${COMMAND_SUMMARY[$key]}" \
|
||||||
"${COMMAND_REQUIRES_SUDO[$key]}" \
|
"${COMMAND_REQUIRES_SUDO[$key]}" \
|
||||||
|
"${COMMAND_HIDDEN[$key]}" \
|
||||||
"${COMMAND_ARGS[$key]}" \
|
"${COMMAND_ARGS[$key]}" \
|
||||||
"${COMMAND_EXAMPLES[$key]}" \
|
"${COMMAND_EXAMPLES[$key]}" \
|
||||||
"${COMMAND_ALIASES[$key]}" \
|
"${COMMAND_ALIASES[$key]}" \
|
||||||
@@ -622,11 +628,12 @@ commands_json_filter() {
|
|||||||
name: .[3],
|
name: .[3],
|
||||||
summary: .[4],
|
summary: .[4],
|
||||||
requires_sudo: (.[5] == "true"),
|
requires_sudo: (.[5] == "true"),
|
||||||
args: .[6],
|
hidden: (.[6] == "true"),
|
||||||
examples: (.[7] | split("|") | map(gsub("^ +| +$"; "")) | map(select(length > 0))),
|
args: .[7],
|
||||||
aliases: (.[8] | split("|") | map(gsub("^ +| +$"; "")) | map(select(length > 0))),
|
examples: (.[8] | split("|") | map(gsub("^ +| +$"; "")) | map(select(length > 0))),
|
||||||
filename_route: .[9],
|
aliases: (.[9] | split("|") | map(gsub("^ +| +$"; "")) | map(select(length > 0))),
|
||||||
routes: ([.[0], .[9]] + (.[8] | split("|") | map(gsub("^ +| +$"; "")) | map(select(length > 0))) | unique)
|
filename_route: .[10],
|
||||||
|
routes: ([.[0], .[10]] + (.[9] | split("|") | map(gsub("^ +| +$"; "")) | map(select(length > 0))) | unique)
|
||||||
}] | {ok: true, commands: .}
|
}] | {ok: true, commands: .}
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
@@ -680,13 +687,14 @@ show_command_json() {
|
|||||||
local key="$1"
|
local key="$1"
|
||||||
|
|
||||||
printf '%s\n' "$key" | while IFS= read -r key; do
|
printf '%s\n' "$key" | while IFS= read -r key; do
|
||||||
printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
|
printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
|
||||||
"${COMMAND_ROUTE[$key]}" \
|
"${COMMAND_ROUTE[$key]}" \
|
||||||
"${COMMAND_BINARY[$key]}" \
|
"${COMMAND_BINARY[$key]}" \
|
||||||
"${COMMAND_GROUP[$key]}" \
|
"${COMMAND_GROUP[$key]}" \
|
||||||
"${COMMAND_NAME[$key]}" \
|
"${COMMAND_NAME[$key]}" \
|
||||||
"${COMMAND_SUMMARY[$key]}" \
|
"${COMMAND_SUMMARY[$key]}" \
|
||||||
"${COMMAND_REQUIRES_SUDO[$key]}" \
|
"${COMMAND_REQUIRES_SUDO[$key]}" \
|
||||||
|
"${COMMAND_HIDDEN[$key]}" \
|
||||||
"${COMMAND_ARGS[$key]}" \
|
"${COMMAND_ARGS[$key]}" \
|
||||||
"${COMMAND_EXAMPLES[$key]}" \
|
"${COMMAND_EXAMPLES[$key]}" \
|
||||||
"${COMMAND_ALIASES[$key]}" \
|
"${COMMAND_ALIASES[$key]}" \
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Designed to be run by systemd timer every 30 seconds and alerts if battery is low
|
# omarchy:summary=Designed to be run by systemd timer every 30 seconds and alerts if battery is low
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
BATTERY_THRESHOLD=10
|
BATTERY_THRESHOLD=10
|
||||||
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
|
NOTIFICATION_FLAG="/run/user/$UID/omarchy_battery_notified"
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Adjust brightness on the most likely display device.
|
# omarchy:summary=Adjust brightness on the most likely display device.
|
||||||
# omarchy:args=<step>
|
# omarchy:args=<+N%|N%-|N%|off|on>
|
||||||
|
# omarchy:examples=omarchy brightness display +5% | omarchy brightness display 5%- | omarchy brightness display 50% | omarchy brightness display off | omarchy brightness display on
|
||||||
|
|
||||||
step="${1:-+5%}"
|
step="${1:-+5%}"
|
||||||
|
|
||||||
if omarchy-hyprland-monitor-focused-apple; then
|
|
||||||
omarchy-brightness-display-apple "$step"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start with the first possible output, then refine to the most likely given an order heuristic.
|
# Start with the first possible output, then refine to the most likely given an order heuristic.
|
||||||
device="$(ls -1 /sys/class/backlight 2>/dev/null | head -n1)"
|
device="$(ls -1 /sys/class/backlight 2>/dev/null | head -n1)"
|
||||||
for candidate in amdgpu_bl* intel_backlight acpi_video*; do
|
for candidate in amdgpu_bl* intel_backlight acpi_video*; do
|
||||||
@@ -19,6 +15,19 @@ for candidate in amdgpu_bl* intel_backlight acpi_video*; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ $step == "off" ]]; then
|
||||||
|
hyprctl dispatch dpms off >/dev/null 2>&1
|
||||||
|
exit 0
|
||||||
|
elif [[ $step == "on" ]]; then
|
||||||
|
hyprctl dispatch dpms on >/dev/null 2>&1
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-hyprland-monitor-focused-apple; then
|
||||||
|
omarchy-brightness-display-apple "$step"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
# Current brightness percentage
|
# Current brightness percentage
|
||||||
current=$(brightnessctl -d "$device" -m | cut -d',' -f4 | tr -d '%')
|
current=$(brightnessctl -d "$device" -m | cut -d',' -f4 | tr -d '%')
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Adjust the brightness on Apple Studio Displays and Apple XDR Displays using asdcontrol.
|
# omarchy:summary=Adjust the brightness on Apple Studio Displays and Apple XDR Displays using asdcontrol.
|
||||||
|
# omarchy:args=<+N%|N%-|N%>
|
||||||
|
# omarchy:examples=omarchy brightness display apple +5% | omarchy brightness display apple 5%- | omarchy brightness display apple 50%
|
||||||
|
|
||||||
if (( $# == 0 )); then
|
if (( $# == 0 )); then
|
||||||
echo "Adjust Apple Display brightness by passing +5%, 5%-, or 100%"
|
echo "Adjust Apple Display brightness by passing +5%, 5%-, or 100%"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Adjust keyboard backlight brightness using available steps.
|
# omarchy:summary=Adjust keyboard backlight brightness using available steps.
|
||||||
# omarchy:args=<up|down|cycle>
|
# omarchy:args=<up|down|cycle|off|restore>
|
||||||
|
|
||||||
direction="${1:-up}"
|
direction="${1:-up}"
|
||||||
|
|
||||||
@@ -19,6 +19,14 @@ if [[ -z $device ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $direction == "off" ]]; then
|
||||||
|
brightnessctl -sd "$device" set 0 >/dev/null
|
||||||
|
exit 0
|
||||||
|
elif [[ $direction == "restore" ]]; then
|
||||||
|
brightnessctl -rd "$device" >/dev/null
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Get current and max brightness to determine step size.
|
# Get current and max brightness to determine step size.
|
||||||
max_brightness="$(brightnessctl -d "$device" max)"
|
max_brightness="$(brightnessctl -d "$device" max)"
|
||||||
current_brightness="$(brightnessctl -d "$device" get)"
|
current_brightness="$(brightnessctl -d "$device" get)"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Print the current working directory of the active terminal window
|
# omarchy:summary=Print the current working directory of the active terminal window
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
|
terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}')
|
||||||
shell_pid=$(pgrep -P "$terminal_pid" | tail -n1)
|
shell_pid=$(pgrep -P "$terminal_pid" | tail -n1)
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ show_json() {
|
|||||||
{name: "args", required: false, type: "string", note: "Only set when the command accepts arguments."},
|
{name: "args", required: false, type: "string", note: "Only set when the command accepts arguments."},
|
||||||
{name: "examples", required: false, type: "string", note: "Pipe-separated examples."},
|
{name: "examples", required: false, type: "string", note: "Pipe-separated examples."},
|
||||||
{name: "aliases", required: false, type: "string", note: "Pipe-separated alternate routes, e.g. omarchy screenshot."},
|
{name: "aliases", required: false, type: "string", note: "Pipe-separated alternate routes, e.g. omarchy screenshot."},
|
||||||
{name: "requires-sudo", required: false, type: "true", default: false, note: "Only include when true."}
|
{name: "requires-sudo", required: false, type: "true", default: false, note: "Only include when true."},
|
||||||
|
{name: "hidden", required: false, type: "true", default: false, note: "Hide from default command listings; visible with --all."}
|
||||||
]
|
]
|
||||||
}'
|
}'
|
||||||
}
|
}
|
||||||
@@ -43,6 +44,7 @@ Inferred defaults:
|
|||||||
route omarchy <group> <name>
|
route omarchy <group> <name>
|
||||||
binary filename
|
binary filename
|
||||||
requires-sudo false
|
requires-sudo false
|
||||||
|
hidden false
|
||||||
|
|
||||||
Optional fields:
|
Optional fields:
|
||||||
# omarchy:group=<group> route override only
|
# omarchy:group=<group> route override only
|
||||||
@@ -51,6 +53,7 @@ Optional fields:
|
|||||||
# omarchy:examples=<cmd> | <cmd> pipe-separated examples
|
# omarchy:examples=<cmd> | <cmd> pipe-separated examples
|
||||||
# omarchy:aliases=<route> | <route> pipe-separated alternate routes
|
# omarchy:aliases=<route> | <route> pipe-separated alternate routes
|
||||||
# omarchy:requires-sudo=true only when true
|
# omarchy:requires-sudo=true only when true
|
||||||
|
# omarchy:hidden=true hide from default command listings
|
||||||
|
|
||||||
Do not define:
|
Do not define:
|
||||||
binary inferred from filename
|
binary inferred from filename
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Select a drive from a list with info that includes space and brand. Used by omarchy-drive-set-password.
|
# omarchy:summary=Select a drive from a list with info that includes space and brand. Used by omarchy-drive-password.
|
||||||
|
|
||||||
if (($# == 0)); then
|
if (($# == 0)); then
|
||||||
drives=$(lsblk -dpno NAME | grep -E '/dev/(sd|hd|vd|nvme|mmcblk|xv)')
|
drives=$(lsblk -dpno NAME | grep -E '/dev/(sd|hd|vd|nvme|mmcblk|xv)')
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ if [[ -f $FIRST_RUN_MODE ]]; then
|
|||||||
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
|
bash "$OMARCHY_PATH/install/first-run/firewall.sh"
|
||||||
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
|
bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh"
|
||||||
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
|
bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh"
|
||||||
|
bash "$OMARCHY_PATH/install/first-run/gtk-primary-paste.sh"
|
||||||
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
|
bash "$OMARCHY_PATH/install/first-run/elephant.sh"
|
||||||
sudo rm -f /etc/sudoers.d/first-run
|
sudo rm -f /etc/sudoers.d/first-run
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ if [[ -n $font_name ]]; then
|
|||||||
pkill -SIGUSR2 ghostty
|
pkill -SIGUSR2 ghostty
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/foot/foot.ini ]]; then
|
||||||
|
sed -i "s/^font=.*/font=$font_name:size=9/g" ~/.config/foot/foot.ini
|
||||||
|
fi
|
||||||
|
|
||||||
sed -i "s/font_family = .*/font_family = $font_name/g" ~/.config/hypr/hyprlock.conf
|
sed -i "s/font_family = .*/font_family = $font_name/g" ~/.config/hypr/hyprlock.conf
|
||||||
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
|
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css
|
||||||
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
||||||
@@ -37,6 +41,10 @@ if [[ -n $font_name ]]; then
|
|||||||
notify-send -u low " You must restart Ghostty to see font change"
|
notify-send -u low " You must restart Ghostty to see font change"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if pgrep -x foot; then
|
||||||
|
notify-send -u low " You must restart Foot to see font change"
|
||||||
|
fi
|
||||||
|
|
||||||
omarchy-hook font-set "$font_name"
|
omarchy-hook font-set "$font_name"
|
||||||
else
|
else
|
||||||
echo "Font '$font_name' not found."
|
echo "Font '$font_name' not found."
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
|
|
||||||
# omarchy:summary=Return success if the focused Hyprland monitor is an Apple display.
|
# omarchy:summary=Return success if the focused Hyprland monitor is an Apple display.
|
||||||
|
|
||||||
hyprctl monitors -j | jq -e '.[] | select(.focused == true) | select(.make == "Apple Computer Inc" and (.model | test("StudioDisplay|ProDisplayXDR")))' >/dev/null
|
hyprctl monitors -j | jq -e '.[] | select(.focused == true) | select(.make == "Apple Computer Inc" and (.model | test("StudioDisplay|ProDisplayXDR|Studio XDR")))' >/dev/null
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Cycle scaling for the focused Hyprland monitor
|
# omarchy:summary=Cycle focused Hyprland monitor scaling through 1x, 1.25x, 1.6x, 2x, and 3x
|
||||||
|
|
||||||
MONITOR_INFO=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)')
|
MONITOR_INFO=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)')
|
||||||
ACTIVE_MONITOR=$(echo "$MONITOR_INFO" | jq -r '.name')
|
ACTIVE_MONITOR=$(echo "$MONITOR_INFO" | jq -r '.name')
|
||||||
|
|||||||
Executable
+106
@@ -0,0 +1,106 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Install a supported browser and make it the default
|
||||||
|
# omarchy:args=<chrome|brave|brave-origin|edge|firefox|zen>
|
||||||
|
# omarchy:examples=omarchy install browser firefox | omarchy install browser brave
|
||||||
|
|
||||||
|
make_default() {
|
||||||
|
xdg-settings set default-web-browser "$1"
|
||||||
|
xdg-mime default "$1" x-scheme-handler/http
|
||||||
|
xdg-mime default "$1" x-scheme-handler/https
|
||||||
|
xdg-mime default "$1" text/html
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_policy_directory() {
|
||||||
|
sudo mkdir -p "$1"
|
||||||
|
sudo chmod a+rw "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
announce_default_browser() {
|
||||||
|
echo ""
|
||||||
|
echo "$1 is now the default browser. Start it with Super + Shift + Return."
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_chromium_flags() {
|
||||||
|
mkdir -p ~/.config
|
||||||
|
cp -f "${OMARCHY_PATH:-$HOME/.local/share/omarchy}/config/chromium-flags.conf" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_firefox_preferences() {
|
||||||
|
local distribution_dir="$1"
|
||||||
|
|
||||||
|
setup_policy_directory "$distribution_dir"
|
||||||
|
sudo cp -f "$OMARCHY_PATH/default/firefox/policies.json" "$distribution_dir/policies.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_firefox_wayland() {
|
||||||
|
mkdir -p ~/.config/environment.d
|
||||||
|
echo "MOZ_ENABLE_WAYLAND=1" > ~/.config/environment.d/omarchy-firefox-wayland.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
chrome)
|
||||||
|
echo "Installing Chrome..."
|
||||||
|
omarchy-pkg-aur-add google-chrome || exit 1
|
||||||
|
|
||||||
|
setup_policy_directory /etc/opt/chrome/policies/managed
|
||||||
|
copy_chromium_flags ~/.config/chrome-flags.conf
|
||||||
|
make_default google-chrome.desktop
|
||||||
|
omarchy-theme-set-browser
|
||||||
|
announce_default_browser "Chrome"
|
||||||
|
;;
|
||||||
|
edge)
|
||||||
|
echo "Installing Edge..."
|
||||||
|
omarchy-pkg-aur-add microsoft-edge-stable-bin || exit 1
|
||||||
|
|
||||||
|
setup_policy_directory /etc/opt/edge/policies/managed
|
||||||
|
copy_chromium_flags ~/.config/microsoft-edge-stable-flags.conf
|
||||||
|
make_default microsoft-edge.desktop
|
||||||
|
omarchy-theme-set-browser
|
||||||
|
announce_default_browser "Edge"
|
||||||
|
;;
|
||||||
|
brave)
|
||||||
|
echo "Installing Brave..."
|
||||||
|
omarchy-pkg-aur-add brave-bin || exit 1
|
||||||
|
|
||||||
|
setup_policy_directory /etc/brave/policies/managed
|
||||||
|
copy_chromium_flags ~/.config/brave-flags.conf
|
||||||
|
make_default brave-browser.desktop
|
||||||
|
omarchy-theme-set-browser
|
||||||
|
announce_default_browser "Brave"
|
||||||
|
;;
|
||||||
|
brave-origin)
|
||||||
|
echo "Installing Brave Origin..."
|
||||||
|
omarchy-pkg-aur-add brave-origin-beta-bin || exit 1
|
||||||
|
|
||||||
|
setup_policy_directory /etc/brave/policies/managed
|
||||||
|
mkdir -p ~/.config
|
||||||
|
# FIXME: Use normal chromium flags when Brave Origin wrapper has been fixed
|
||||||
|
echo "--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url" > ~/.config/brave-origin-beta-flags.conf
|
||||||
|
make_default brave-origin-beta.desktop
|
||||||
|
omarchy-theme-set-browser
|
||||||
|
announce_default_browser "Brave Origin"
|
||||||
|
;;
|
||||||
|
firefox)
|
||||||
|
echo "Installing Firefox..."
|
||||||
|
omarchy-pkg-add firefox || exit 1
|
||||||
|
|
||||||
|
setup_firefox_preferences /usr/lib/firefox/distribution
|
||||||
|
setup_firefox_wayland
|
||||||
|
make_default firefox.desktop
|
||||||
|
announce_default_browser "Firefox"
|
||||||
|
;;
|
||||||
|
zen)
|
||||||
|
echo "Installing Zen..."
|
||||||
|
omarchy-pkg-aur-add zen-browser-bin || exit 1
|
||||||
|
|
||||||
|
setup_firefox_preferences /opt/zen-browser/distribution
|
||||||
|
setup_firefox_wayland
|
||||||
|
make_default zen.desktop
|
||||||
|
announce_default_browser "Zen"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: omarchy-install-browser <chrome|brave|brave-origin|edge|firefox|zen>"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -21,8 +21,9 @@ omarchy-pkg-add \
|
|||||||
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
||||||
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
||||||
libretro-yabause \
|
libretro-yabause \
|
||||||
libretro-fbneo-git \
|
libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||||
libretro-database-git
|
libretro-database-git \
|
||||||
|
retroarch-joypad-autoconfig-git
|
||||||
|
|
||||||
# Set up ~/Games for BIOS files and ROMs
|
# Set up ~/Games for BIOS files and ROMs
|
||||||
mkdir -p "$HOME/Games/bios" "$HOME/Games/roms"
|
mkdir -p "$HOME/Games/bios" "$HOME/Games/roms"
|
||||||
@@ -49,6 +50,7 @@ set_cfg libretro_info_path "/usr/share/libretro/info"
|
|||||||
set_cfg overlay_directory "/usr/share/libretro/overlays"
|
set_cfg overlay_directory "/usr/share/libretro/overlays"
|
||||||
set_cfg osk_overlay_directory "/usr/share/libretro/overlays/keyboards"
|
set_cfg osk_overlay_directory "/usr/share/libretro/overlays/keyboards"
|
||||||
set_cfg video_shader_dir "/usr/share/libretro/shaders/shaders_slang"
|
set_cfg video_shader_dir "/usr/share/libretro/shaders/shaders_slang"
|
||||||
|
set_cfg joypad_autoconfig_dir "/usr/share/libretro/autoconfig"
|
||||||
|
|
||||||
# Point at the database, cheats, and cursors from libretro-database-git
|
# Point at the database, cheats, and cursors from libretro-database-git
|
||||||
set_cfg content_database_path "/usr/share/libretro/database/rdb"
|
set_cfg content_database_path "/usr/share/libretro/database/rdb"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Install Helix and configure it to use the current Omarchy theme.
|
# omarchy:summary=Install Helix and configure it to use the current Omarchy theme
|
||||||
|
|
||||||
echo "Installing Helix..."
|
echo "Installing Helix..."
|
||||||
omarchy-pkg-add helix
|
omarchy-pkg-add helix
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
|
# omarchy:summary=Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
|
||||||
# omarchy:args=<alacritty|ghostty|kitty>
|
# omarchy:args=<alacritty|foot|ghostty|kitty>
|
||||||
# omarchy:requires-sudo=true
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
if (($# == 0)); then
|
if (($# == 0)); then
|
||||||
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
|
echo "Usage: omarchy-install-terminal [alacritty|foot|ghostty|kitty]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -14,6 +14,7 @@ package="$1"
|
|||||||
# Map package name to desktop entry ID
|
# Map package name to desktop entry ID
|
||||||
case "$package" in
|
case "$package" in
|
||||||
alacritty) desktop_id="Alacritty.desktop" ;;
|
alacritty) desktop_id="Alacritty.desktop" ;;
|
||||||
|
foot) desktop_id="foot.desktop" ;;
|
||||||
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
|
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
|
||||||
kitty) desktop_id="kitty.desktop" ;;
|
kitty) desktop_id="kitty.desktop" ;;
|
||||||
*)
|
*)
|
||||||
@@ -26,10 +27,15 @@ echo "Installing $package..."
|
|||||||
|
|
||||||
# Install package
|
# Install package
|
||||||
if omarchy-pkg-add $package; then
|
if omarchy-pkg-add $package; then
|
||||||
# Copy custom desktop entry for alacritty with X-TerminalArg* keys
|
# Copy custom desktop entries with X-TerminalArg* keys
|
||||||
if [[ $package == "alacritty" ]]; then
|
if [[ $package == "alacritty" || $package == "foot" ]]; then
|
||||||
mkdir -p ~/.local/share/applications
|
mkdir -p ~/.local/share/applications
|
||||||
cp $OMARCHY_PATH/applications/Alacritty.desktop ~/.local/share/applications/
|
cp "$OMARCHY_PATH/applications/$desktop_id" ~/.local/share/applications/
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy default config for optional terminals when missing
|
||||||
|
if [[ ! -e ~/.config/$package ]]; then
|
||||||
|
cp -Rpf "$OMARCHY_PATH/config/$package" ~/.config/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update xdg-terminals.list to prioritize the proper terminal
|
# Update xdg-terminals.list to prioritize the proper terminal
|
||||||
|
|||||||
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Install Zed Editor and configure it with the current Omarchy theme
|
||||||
|
|
||||||
|
echo "Installing Zed Editor..."
|
||||||
|
omarchy-pkg-add zed omazed
|
||||||
|
|
||||||
|
# Apply Omarchy theme to Zed
|
||||||
|
omazed setup
|
||||||
|
|
||||||
|
setsid gtk-launch dev.zed.Zed
|
||||||
@@ -37,6 +37,12 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
|||||||
--font-size=18 \
|
--font-size=18 \
|
||||||
-e omarchy-screensaver
|
-e omarchy-screensaver
|
||||||
;;
|
;;
|
||||||
|
*foot*)
|
||||||
|
hyprctl dispatch exec -- \
|
||||||
|
foot --app-id=org.omarchy.screensaver \
|
||||||
|
--config="$OMARCHY_PATH/default/foot/screensaver.ini" \
|
||||||
|
-e omarchy-screensaver
|
||||||
|
;;
|
||||||
*kitty*)
|
*kitty*)
|
||||||
hyprctl dispatch exec -- \
|
hyprctl dispatch exec -- \
|
||||||
kitty --class=org.omarchy.screensaver \
|
kitty --class=org.omarchy.screensaver \
|
||||||
@@ -45,7 +51,7 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
|||||||
-e omarchy-screensaver
|
-e omarchy-screensaver
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
notify-send -u low "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
|
notify-send -u low "✋ Screensaver only runs in Alacritty, Foot, Ghostty, or Kitty"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|||||||
+69
-8
@@ -93,8 +93,9 @@ show_learn_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_trigger_menu() {
|
show_trigger_menu() {
|
||||||
case $(menu "Trigger" " Capture\n Share\n Toggle\n Hardware") in
|
case $(menu "Trigger" " Capture\n Transcode\n Share\n Toggle\n Hardware") in
|
||||||
*Capture*) show_capture_menu ;;
|
*Capture*) show_capture_menu ;;
|
||||||
|
*Transcode*) show_transcode_menu ;;
|
||||||
*Share*) show_share_menu ;;
|
*Share*) show_share_menu ;;
|
||||||
*Toggle*) show_toggle_menu ;;
|
*Toggle*) show_toggle_menu ;;
|
||||||
*Hardware*) show_hardware_menu ;;
|
*Hardware*) show_hardware_menu ;;
|
||||||
@@ -166,6 +167,14 @@ show_share_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_transcode_menu() {
|
||||||
|
case $(menu "Transcode" " Picture\n Video") in
|
||||||
|
*Picture*) present_terminal "omarchy-transcode --path '$HOME/Pictures'" ;;
|
||||||
|
*Video*) present_terminal "omarchy-transcode --path '$HOME/Videos'" ;;
|
||||||
|
*) back_to show_trigger_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
show_toggle_menu() {
|
show_toggle_menu() {
|
||||||
local options=" Screensaver\n Nightlight\n Idle Lock\n Notifications\n Top Bar\n Workspace Layout\n Window Gaps\n 1-Window Ratio\n Monitor Scaling\n Direct Boot\n Passwordless Sudo"
|
local options=" Screensaver\n Nightlight\n Idle Lock\n Notifications\n Top Bar\n Workspace Layout\n Window Gaps\n 1-Window Ratio\n Monitor Scaling\n Direct Boot\n Passwordless Sudo"
|
||||||
|
|
||||||
@@ -217,12 +226,36 @@ show_style_menu() {
|
|||||||
*Font*) show_font_menu ;;
|
*Font*) show_font_menu ;;
|
||||||
*Background*) show_background_menu ;;
|
*Background*) show_background_menu ;;
|
||||||
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
|
*Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
|
||||||
*Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
|
*Screensaver*) show_screensaver_menu ;;
|
||||||
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
|
*About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
|
||||||
*) show_main_menu ;;
|
*) show_main_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_screensaver_menu() {
|
||||||
|
case $(menu "Screensaver" " Edit Text\n Set From Image\n Preview\n Restore Default") in
|
||||||
|
*Text*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
|
||||||
|
*Image*) set_screensaver_from_image ;;
|
||||||
|
*Preview*) omarchy-launch-screensaver force ;;
|
||||||
|
*Default*) terminal bash -lc 'omarchy-screensaver-logo default; echo; read -n 1 -s -r -p "Press any key to close..."' ;;
|
||||||
|
*) show_style_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
set_screensaver_from_image() {
|
||||||
|
terminal bash -lc '
|
||||||
|
image=$(fd --type file --ignore-case --extension svg --extension png . "$HOME" 2>/dev/null | fzf --prompt "Logo image> ")
|
||||||
|
if [[ -n $image ]]; then
|
||||||
|
if omarchy-screensaver-logo "$image"; then
|
||||||
|
echo
|
||||||
|
echo "Preview with: omarchy-launch-screensaver force"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
read -n 1 -s -r -p "Press any key to close..."
|
||||||
|
fi
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
show_theme_menu() {
|
show_theme_menu() {
|
||||||
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
|
omarchy-launch-walker -m menus:omarchythemes --width 800 --minheight 400
|
||||||
}
|
}
|
||||||
@@ -319,7 +352,7 @@ show_setup_system_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_install_menu() {
|
show_install_menu() {
|
||||||
case $(menu "Install" " Package\n AUR\n Web App\n TUI\n Service\n Style\n Development\n Editor\n Terminal\n AI\n Windows\n Gaming") in
|
case $(menu "Install" " Package\n AUR\n Web App\n TUI\n Service\n Style\n Development\n Editor\n Terminal\n Browser\n AI\n Gaming\n Windows") in
|
||||||
*Package*) terminal omarchy-pkg-install ;;
|
*Package*) terminal omarchy-pkg-install ;;
|
||||||
*AUR*) terminal omarchy-pkg-aur-install ;;
|
*AUR*) terminal omarchy-pkg-aur-install ;;
|
||||||
*Web*) present_terminal omarchy-webapp-install ;;
|
*Web*) present_terminal omarchy-webapp-install ;;
|
||||||
@@ -329,13 +362,26 @@ show_install_menu() {
|
|||||||
*Development*) show_install_development_menu ;;
|
*Development*) show_install_development_menu ;;
|
||||||
*Editor*) show_install_editor_menu ;;
|
*Editor*) show_install_editor_menu ;;
|
||||||
*Terminal*) show_install_terminal_menu ;;
|
*Terminal*) show_install_terminal_menu ;;
|
||||||
|
*Browser*) show_install_browser_menu ;;
|
||||||
|
*Gaming*) show_install_gaming_menu ;;
|
||||||
*AI*) show_install_ai_menu ;;
|
*AI*) show_install_ai_menu ;;
|
||||||
*Windows*) present_terminal "omarchy-windows-vm install" ;;
|
*Windows*) present_terminal "omarchy-windows-vm install" ;;
|
||||||
*Gaming*) show_install_gaming_menu ;;
|
|
||||||
*) show_main_menu ;;
|
*) show_main_menu ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_install_browser_menu() {
|
||||||
|
case $(menu "Install" " Chrome\n Edge\n Brave\n Brave Origin\n Firefox\n Zen") in
|
||||||
|
*Chrome*) present_terminal "omarchy-install-browser chrome" ;;
|
||||||
|
*Edge*) present_terminal "omarchy-install-browser edge" ;;
|
||||||
|
*"Brave Origin"*) present_terminal "omarchy-install-browser brave-origin" ;;
|
||||||
|
*Brave*) present_terminal "omarchy-install-browser brave" ;;
|
||||||
|
*Firefox*) present_terminal "omarchy-install-browser firefox" ;;
|
||||||
|
*Zen*) present_terminal "omarchy-install-browser zen" ;;
|
||||||
|
*) show_install_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
show_install_service_menu() {
|
show_install_service_menu() {
|
||||||
case $(menu "Install" " Dropbox\n Tailscale\n NordVPN [AUR]\n ONCE\n Bitwarden\n Chromium Account") in
|
case $(menu "Install" " Dropbox\n Tailscale\n NordVPN [AUR]\n ONCE\n Bitwarden\n Chromium Account") in
|
||||||
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
*Dropbox*) present_terminal omarchy-install-dropbox ;;
|
||||||
@@ -352,7 +398,7 @@ show_install_editor_menu() {
|
|||||||
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
|
case $(menu "Install" " VSCode\n Cursor\n Zed\n Sublime Text\n Helix\n Emacs") in
|
||||||
*VSCode*) present_terminal omarchy-install-vscode ;;
|
*VSCode*) present_terminal omarchy-install-vscode ;;
|
||||||
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
|
*Cursor*) install_and_launch "Cursor" "cursor-bin" "cursor" ;;
|
||||||
*Zed*) install_and_launch "Zed" "zed" "dev.zed.Zed" ;;
|
*Zed*) present_terminal omarchy-install-zed ;;
|
||||||
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
|
*Sublime*) install_and_launch "Sublime Text" "sublime-text-4" "sublime_text" ;;
|
||||||
*Helix*) present_terminal omarchy-install-helix ;;
|
*Helix*) present_terminal omarchy-install-helix ;;
|
||||||
*Emacs*) install "Emacs" "emacs-wayland" && systemctl --user enable --now emacs.service ;;
|
*Emacs*) install "Emacs" "emacs-wayland" && systemctl --user enable --now emacs.service ;;
|
||||||
@@ -361,8 +407,9 @@ show_install_editor_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_install_terminal_menu() {
|
show_install_terminal_menu() {
|
||||||
case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in
|
case $(menu "Install" " Alacritty\n Foot\n Ghostty\n Kitty") in
|
||||||
*Alacritty*) install_terminal "alacritty" ;;
|
*Alacritty*) install_terminal "alacritty" ;;
|
||||||
|
*Foot*) install_terminal "foot" ;;
|
||||||
*Ghostty*) install_terminal "ghostty" ;;
|
*Ghostty*) install_terminal "ghostty" ;;
|
||||||
*Kitty*) install_terminal "kitty" ;;
|
*Kitty*) install_terminal "kitty" ;;
|
||||||
*) show_install_menu ;;
|
*) show_install_menu ;;
|
||||||
@@ -468,8 +515,9 @@ show_install_elixir_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_remove_menu() {
|
show_remove_menu() {
|
||||||
case $(menu "Remove" " Package\n Web App\n TUI\n Development\n Gaming\n Preinstalls\n Dictation\n Theme\n Windows\n Fingerprint\n Fido2") in
|
case $(menu "Remove" " Package\n Browser\n Web App\n TUI\n Development\n Gaming\n Preinstalls\n Dictation\n Theme\n Windows\n Fingerprint\n Fido2") in
|
||||||
*Package*) terminal omarchy-pkg-remove ;;
|
*Package*) terminal omarchy-pkg-remove ;;
|
||||||
|
*Browser*) show_remove_browser_menu ;;
|
||||||
*Web*) present_terminal omarchy-webapp-remove ;;
|
*Web*) present_terminal omarchy-webapp-remove ;;
|
||||||
*TUI*) present_terminal omarchy-tui-remove ;;
|
*TUI*) present_terminal omarchy-tui-remove ;;
|
||||||
*Development*) show_remove_development_menu ;;
|
*Development*) show_remove_development_menu ;;
|
||||||
@@ -484,6 +532,18 @@ show_remove_menu() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_remove_browser_menu() {
|
||||||
|
case $(menu "Remove" " Chrome\n Edge\n Brave\n Brave Origin\n Firefox\n Zen") in
|
||||||
|
*Chrome*) present_terminal "omarchy-remove-browser chrome" ;;
|
||||||
|
*Edge*) present_terminal "omarchy-remove-browser edge" ;;
|
||||||
|
*"Brave Origin"*) present_terminal "omarchy-remove-browser brave-origin" ;;
|
||||||
|
*Brave*) present_terminal "omarchy-remove-browser brave" ;;
|
||||||
|
*Firefox*) present_terminal "omarchy-remove-browser firefox" ;;
|
||||||
|
*Zen*) present_terminal "omarchy-remove-browser zen" ;;
|
||||||
|
*) show_remove_menu ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
show_remove_gaming_menu() {
|
show_remove_gaming_menu() {
|
||||||
case $(menu "Remove" " Steam\n RetroArch\n Minecraft\n NVIDIA GeForce NOW\n Xbox Cloud Gaming\n Xbox Controller ()\n Moonlight (GameStream)\n Lutris (Battle.net)\n Heroic (Epic Games)") in
|
case $(menu "Remove" " Steam\n RetroArch\n Minecraft\n NVIDIA GeForce NOW\n Xbox Cloud Gaming\n Xbox Controller ()\n Moonlight (GameStream)\n Lutris (Battle.net)\n Heroic (Epic Games)") in
|
||||||
*Steam*) present_terminal omarchy-remove-gaming-steam ;;
|
*Steam*) present_terminal omarchy-remove-gaming-steam ;;
|
||||||
@@ -608,7 +668,7 @@ show_update_hardware_menu() {
|
|||||||
|
|
||||||
show_update_password_menu() {
|
show_update_password_menu() {
|
||||||
case $(menu "Update Password" " Drive Encryption\n User") in
|
case $(menu "Update Password" " Drive Encryption\n User") in
|
||||||
*Drive*) present_terminal omarchy-drive-set-password ;;
|
*Drive*) present_terminal omarchy-drive-password ;;
|
||||||
*User*) present_terminal passwd ;;
|
*User*) present_terminal passwd ;;
|
||||||
*) show_update_menu ;;
|
*) show_update_menu ;;
|
||||||
esac
|
esac
|
||||||
@@ -648,6 +708,7 @@ go_to_menu() {
|
|||||||
*toggle*) show_toggle_menu ;;
|
*toggle*) show_toggle_menu ;;
|
||||||
*hardware*) show_hardware_menu ;;
|
*hardware*) show_hardware_menu ;;
|
||||||
*share*) show_share_menu ;;
|
*share*) show_share_menu ;;
|
||||||
|
*transcode*) show_transcode_menu ;;
|
||||||
*background*) show_background_menu ;;
|
*background*) show_background_menu ;;
|
||||||
*capture*) show_capture_menu ;;
|
*capture*) show_capture_menu ;;
|
||||||
*style*) show_style_menu ;;
|
*style*) show_style_menu ;;
|
||||||
|
|||||||
+1
-3
@@ -1,10 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Install Arch packages if they are missing
|
# omarchy:summary=Install Arch packages if they are missing
|
||||||
# omarchy:group=install
|
|
||||||
# omarchy:name=package
|
|
||||||
# omarchy:args=<packages...>
|
# omarchy:args=<packages...>
|
||||||
# omarchy:examples=omarchy install package jq ripgrep
|
# omarchy:examples=omarchy pkg add jq ripgrep
|
||||||
# omarchy:requires-sudo=true
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
if omarchy-pkg-missing "$@"; then
|
if omarchy-pkg-missing "$@"; then
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# omarchy:summary=Preview a Plymouth boot screen with custom colors and logo
|
# omarchy:summary=Preview a Plymouth boot screen with custom colors and logo
|
||||||
# omarchy:args=<background-hex> <text-hex> <path-to-logo.png> <output-path>
|
# omarchy:args=<background-hex> <text-hex> <path-to-logo.png> <output-path>
|
||||||
|
# omarchy:examples=omarchy plymouth preview '#1d2021' '#ebdbb2' ~/.config/omarchy/current/theme/plymouth/logo.png /tmp/plymouth-preview.png
|
||||||
|
|
||||||
# Render a Plymouth login-screen preview PNG by compositing the staged omarchy
|
# Render a Plymouth login-screen preview PNG by compositing the staged omarchy
|
||||||
# theme assets (recolored with the given text color) onto the background.
|
# theme assets (recolored with the given text color) onto the background.
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# omarchy:summary=Set the Plymouth boot theme colors and logo
|
# omarchy:summary=Set the Plymouth boot theme colors and logo
|
||||||
# omarchy:args=<background-hex> <text-hex> <path-to-logo.png>
|
# omarchy:args=<background-hex> <text-hex> <path-to-logo.png>
|
||||||
|
# omarchy:examples=omarchy plymouth set '#1d2021' '#ebdbb2' ~/.config/omarchy/current/theme/plymouth/logo.png
|
||||||
# omarchy:requires-sudo=true
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
# Configure the Plymouth boot theme with a custom background color, text color, and logo.
|
# Configure the Plymouth boot theme with a custom background color, text color, and logo.
|
||||||
|
|||||||
Executable
+73
@@ -0,0 +1,73 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Remove a supported browser and clean up Omarchy browser defaults
|
||||||
|
# omarchy:args=<chrome|brave|brave-origin|edge|firefox|zen>
|
||||||
|
# omarchy:examples=omarchy remove browser firefox | omarchy remove browser brave
|
||||||
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
|
set_fallback_default_browser() {
|
||||||
|
local current_browser
|
||||||
|
current_browser=$(xdg-settings get default-web-browser)
|
||||||
|
|
||||||
|
if [[ $current_browser != "$1" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-cmd-present chromium; then
|
||||||
|
xdg-settings set default-web-browser chromium.desktop
|
||||||
|
xdg-mime default chromium.desktop x-scheme-handler/http
|
||||||
|
xdg-mime default chromium.desktop x-scheme-handler/https
|
||||||
|
xdg-mime default chromium.desktop text/html
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
chrome)
|
||||||
|
echo "Removing Chrome..."
|
||||||
|
set_fallback_default_browser google-chrome.desktop
|
||||||
|
omarchy-pkg-drop google-chrome
|
||||||
|
rm -f ~/.config/chrome-flags.conf
|
||||||
|
sudo rm -f /etc/opt/chrome/policies/managed/color.json
|
||||||
|
;;
|
||||||
|
edge)
|
||||||
|
echo "Removing Edge..."
|
||||||
|
set_fallback_default_browser microsoft-edge.desktop
|
||||||
|
omarchy-pkg-drop microsoft-edge-stable-bin
|
||||||
|
rm -f ~/.config/microsoft-edge-stable-flags.conf
|
||||||
|
sudo rm -f /etc/opt/edge/policies/managed/color.json
|
||||||
|
;;
|
||||||
|
brave)
|
||||||
|
echo "Removing Brave..."
|
||||||
|
set_fallback_default_browser brave-browser.desktop
|
||||||
|
omarchy-pkg-drop brave-bin
|
||||||
|
rm -f ~/.config/brave-flags.conf
|
||||||
|
|
||||||
|
if omarchy-pkg-missing brave-origin-beta-bin; then
|
||||||
|
sudo rm -rf /etc/brave
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
brave-origin)
|
||||||
|
echo "Removing Brave Origin..."
|
||||||
|
set_fallback_default_browser brave-origin-beta.desktop
|
||||||
|
omarchy-pkg-drop brave-origin-beta-bin
|
||||||
|
rm -f ~/.config/brave-origin-beta-flags.conf
|
||||||
|
|
||||||
|
if omarchy-pkg-missing brave-bin; then
|
||||||
|
sudo rm -rf /etc/brave
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
firefox)
|
||||||
|
echo "Removing Firefox..."
|
||||||
|
set_fallback_default_browser firefox.desktop
|
||||||
|
omarchy-pkg-drop firefox
|
||||||
|
;;
|
||||||
|
zen)
|
||||||
|
echo "Removing Zen..."
|
||||||
|
set_fallback_default_browser zen.desktop
|
||||||
|
omarchy-pkg-drop zen-browser-bin
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: omarchy-remove-browser <chrome|brave|brave-origin|edge|firefox|zen>"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -21,7 +21,8 @@ omarchy-pkg-drop \
|
|||||||
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \
|
||||||
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
libretro-sameboy libretro-scummvm libretro-shaders-slang libretro-snes9x \
|
||||||
libretro-yabause \
|
libretro-yabause \
|
||||||
libretro-fbneo-git
|
libretro-cap32-git libretro-fbneo-git libretro-uae-git libretro-vice-git \
|
||||||
|
retroarch-joypad-autoconfig-git
|
||||||
|
|
||||||
rm -rf \
|
rm -rf \
|
||||||
"$HOME/.config/retroarch" \
|
"$HOME/.config/retroarch" \
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Reload Helix configuration (used by the Omarchy theme switching).
|
# omarchy:summary=Reload Helix configuration
|
||||||
|
|
||||||
if pgrep -x helix >/dev/null; then
|
if pgrep -x helix >/dev/null; then
|
||||||
pkill -USR1 helix
|
pkill -USR1 helix
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# omarchy:requires-sudo=true
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
for dev in /sys/bus/i2c/drivers/i2c_hid_acpi/i2c-*; do
|
for dev in /sys/bus/i2c/drivers/i2c_hid_acpi/i2c-*; do
|
||||||
[ -e "$dev" ] || continue
|
[[ -e $dev ]] || continue
|
||||||
I2C_DEVICE=$(basename "$dev")
|
I2C_DEVICE=$(basename "$dev")
|
||||||
echo "Resetting $I2C_DEVICE via i2c_hid_acpi unbind/rebind..."
|
echo "Resetting $I2C_DEVICE via i2c_hid_acpi unbind/rebind..."
|
||||||
echo "$I2C_DEVICE" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/unbind > /dev/null
|
echo "$I2C_DEVICE" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/unbind > /dev/null
|
||||||
|
|||||||
Executable
+384
@@ -0,0 +1,384 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Set the screensaver logo text from an SVG/PNG or the default
|
||||||
|
# omarchy:args=<default|path-to-logo.svg|png> [--width <columns>] [--height <rows>] [--mode <braille|block>] [--threshold <percent>] [--invert] [--stdout]
|
||||||
|
# omarchy:examples=omarchy screensaver logo ~/logo.svg | omarchy screensaver logo default | omarchy screensaver logo ~/logo.png --width 80 --mode block --stdout
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<'EOF'
|
||||||
|
Usage: omarchy-screensaver-logo <default|path-to-logo.svg|png> [options]
|
||||||
|
|
||||||
|
Sets the screensaver logo text from an image.
|
||||||
|
Pass "default" instead of an image path to restore the Omarchy default.
|
||||||
|
By default, writes to ~/.config/omarchy/branding/screensaver.txt.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-w, --width <columns> Maximum output width in terminal columns (default: 80)
|
||||||
|
-H, --height <rows> Maximum output height in terminal rows (default: 26)
|
||||||
|
-m, --mode <braille|block> Output style (default: braille)
|
||||||
|
-t, --threshold <percent> Pixel threshold from 0-100 (default: 50)
|
||||||
|
--invert Treat light pixels as the logo instead of dark pixels
|
||||||
|
--no-trim Preserve surrounding whitespace/background
|
||||||
|
--stdout Print converted text instead of writing the screensaver file
|
||||||
|
--help Show this help
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
width=80
|
||||||
|
height=26
|
||||||
|
mode=braille
|
||||||
|
threshold=50
|
||||||
|
invert=false
|
||||||
|
trim=true
|
||||||
|
output_path="$HOME/.config/omarchy/branding/screensaver.txt"
|
||||||
|
image_path=""
|
||||||
|
reset_default=false
|
||||||
|
|
||||||
|
while (($# > 0)); do
|
||||||
|
case "$1" in
|
||||||
|
--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-w | --width)
|
||||||
|
shift
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "Missing value for --width" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
width="$1"
|
||||||
|
;;
|
||||||
|
--width=*)
|
||||||
|
width="${1#*=}"
|
||||||
|
;;
|
||||||
|
-H | --height)
|
||||||
|
shift
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "Missing value for --height" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
height="$1"
|
||||||
|
;;
|
||||||
|
--height=*)
|
||||||
|
height="${1#*=}"
|
||||||
|
;;
|
||||||
|
-m | --mode)
|
||||||
|
shift
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "Missing value for --mode" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
mode="$1"
|
||||||
|
;;
|
||||||
|
--mode=*)
|
||||||
|
mode="${1#*=}"
|
||||||
|
;;
|
||||||
|
--block | --blocks)
|
||||||
|
mode=block
|
||||||
|
;;
|
||||||
|
--braille)
|
||||||
|
mode=braille
|
||||||
|
;;
|
||||||
|
-t | --threshold)
|
||||||
|
shift
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "Missing value for --threshold" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
threshold="$1"
|
||||||
|
;;
|
||||||
|
--threshold=*)
|
||||||
|
threshold="${1#*=}"
|
||||||
|
;;
|
||||||
|
--invert)
|
||||||
|
invert=true
|
||||||
|
;;
|
||||||
|
--no-trim)
|
||||||
|
trim=false
|
||||||
|
;;
|
||||||
|
--stdout)
|
||||||
|
output_path="-"
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [[ $1 == "default" && -z $image_path ]]; then
|
||||||
|
reset_default=true
|
||||||
|
elif [[ -z $image_path ]]; then
|
||||||
|
image_path="$1"
|
||||||
|
else
|
||||||
|
echo "Unexpected argument: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if (($# > 0)); then
|
||||||
|
while (($# > 0)); do
|
||||||
|
if [[ $1 == "default" && -z $image_path ]]; then
|
||||||
|
reset_default=true
|
||||||
|
elif [[ -z $image_path ]]; then
|
||||||
|
image_path="$1"
|
||||||
|
else
|
||||||
|
echo "Unexpected argument: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $reset_default == "true" ]]; then
|
||||||
|
if [[ -n $image_path ]]; then
|
||||||
|
echo "default does not accept an image path" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
default_path="${OMARCHY_PATH:-$HOME/.local/share/omarchy}/logo.txt"
|
||||||
|
if [[ ! -f $default_path ]]; then
|
||||||
|
echo "Default screensaver logo text not found: $default_path" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $output_path == "-" ]]; then
|
||||||
|
cat "$default_path"
|
||||||
|
else
|
||||||
|
mkdir -p "$(dirname "$output_path")"
|
||||||
|
cp "$default_path" "$output_path"
|
||||||
|
echo "Restored default screensaver logo text to $output_path"
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $image_path ]]; then
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $width =~ ^[0-9]+$ ]] || (( width < 1 )); then
|
||||||
|
echo "Invalid width: $width" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $height =~ ^[0-9]+$ ]] || (( height < 1 )); then
|
||||||
|
echo "Invalid height: $height" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $mode != "braille" && $mode != "block" ]]; then
|
||||||
|
echo "Invalid mode: $mode (expected braille or block)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $threshold =~ ^[0-9]+$ ]] || (( threshold < 0 || threshold > 100 )); then
|
||||||
|
echo "Invalid threshold: $threshold (expected 0-100)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f $image_path ]]; then
|
||||||
|
echo "Logo file not found: $image_path" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-cmd-missing magick; then
|
||||||
|
echo "ImageMagick is required to convert logo images" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$mode" in
|
||||||
|
braille)
|
||||||
|
pixel_width=$((width * 2))
|
||||||
|
pixel_height=$((height * 4))
|
||||||
|
;;
|
||||||
|
block)
|
||||||
|
pixel_width=$width
|
||||||
|
pixel_height=$((height * 2))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
alpha_min=$(magick -background none "$image_path" -alpha extract -format '%[fx:minima]' info: 2>/dev/null) || {
|
||||||
|
echo "Unable to read logo image: $image_path" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
alpha_max=$(magick -background none "$image_path" -alpha extract -format '%[fx:maxima]' info: 2>/dev/null) || {
|
||||||
|
echo "Unable to read logo image: $image_path" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
use_alpha=false
|
||||||
|
if awk -v min="$alpha_min" -v max="$alpha_max" 'BEGIN { exit !(min < 0.999 && max > min) }'; then
|
||||||
|
use_alpha=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
magick_args=(-background none "$image_path" -auto-orient)
|
||||||
|
|
||||||
|
if [[ $use_alpha == "true" ]]; then
|
||||||
|
magick_args+=(-alpha extract -alpha off)
|
||||||
|
if [[ $invert == "true" ]]; then
|
||||||
|
magick_args+=(-negate)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
magick_args+=(-alpha remove -alpha off -colorspace Gray)
|
||||||
|
if [[ $invert == "false" ]]; then
|
||||||
|
magick_args+=(-negate)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $trim == "true" ]]; then
|
||||||
|
magick_args+=(-bordercolor black -border 1 -trim +repage)
|
||||||
|
fi
|
||||||
|
|
||||||
|
magick_args+=(-resize "${pixel_width}x${pixel_height}" -threshold "${threshold}%" -negate -compress none pbm:-)
|
||||||
|
|
||||||
|
tmp_output=$(mktemp)
|
||||||
|
trap 'rm -f "$tmp_output"' EXIT
|
||||||
|
|
||||||
|
if [[ $mode == "braille" ]]; then
|
||||||
|
if ! magick "${magick_args[@]}" | awk '
|
||||||
|
BEGIN {
|
||||||
|
braille_base = 10240
|
||||||
|
dot[0,0] = 1
|
||||||
|
dot[0,1] = 2
|
||||||
|
dot[0,2] = 4
|
||||||
|
dot[1,0] = 8
|
||||||
|
dot[1,1] = 16
|
||||||
|
dot[1,2] = 32
|
||||||
|
dot[0,3] = 64
|
||||||
|
dot[1,3] = 128
|
||||||
|
}
|
||||||
|
{
|
||||||
|
sub(/#.*/, "")
|
||||||
|
for (i = 1; i <= NF; i++) {
|
||||||
|
token[++token_count] = $i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if (token[1] != "P1") {
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
width = token[2]
|
||||||
|
height = token[3]
|
||||||
|
pixel_offset = 4
|
||||||
|
|
||||||
|
for (y = 0; y < height; y += 4) {
|
||||||
|
line = ""
|
||||||
|
for (x = 0; x < width; x += 2) {
|
||||||
|
code = 0
|
||||||
|
for (dy = 0; dy < 4; dy++) {
|
||||||
|
for (dx = 0; dx < 2; dx++) {
|
||||||
|
if (y + dy < height && x + dx < width) {
|
||||||
|
pixel = token[pixel_offset + ((y + dy) * width) + x + dx]
|
||||||
|
if (pixel == 1) {
|
||||||
|
code += dot[dx,dy]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (code == 0) {
|
||||||
|
line = line " "
|
||||||
|
} else {
|
||||||
|
line = line sprintf("%c", braille_base + code)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub(/[ ]+$/, "", line)
|
||||||
|
lines[++line_count] = line
|
||||||
|
}
|
||||||
|
|
||||||
|
first = 1
|
||||||
|
while (first <= line_count && lines[first] ~ /^[ ]*$/) {
|
||||||
|
first++
|
||||||
|
}
|
||||||
|
|
||||||
|
last = line_count
|
||||||
|
while (last >= first && lines[last] ~ /^[ ]*$/) {
|
||||||
|
last--
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = first; i <= last; i++) {
|
||||||
|
print lines[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' >"$tmp_output"; then
|
||||||
|
echo "Unable to convert logo image: $image_path" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ! magick "${magick_args[@]}" | awk '
|
||||||
|
BEGIN {
|
||||||
|
block["11"] = "█"
|
||||||
|
block["10"] = "▀"
|
||||||
|
block["01"] = "▄"
|
||||||
|
block["00"] = " "
|
||||||
|
}
|
||||||
|
{
|
||||||
|
sub(/#.*/, "")
|
||||||
|
for (i = 1; i <= NF; i++) {
|
||||||
|
token[++token_count] = $i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if (token[1] != "P1") {
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
width = token[2]
|
||||||
|
height = token[3]
|
||||||
|
pixel_offset = 4
|
||||||
|
|
||||||
|
for (y = 0; y < height; y += 2) {
|
||||||
|
line = ""
|
||||||
|
for (x = 0; x < width; x++) {
|
||||||
|
top = token[pixel_offset + (y * width) + x]
|
||||||
|
bottom = (y + 1 < height) ? token[pixel_offset + ((y + 1) * width) + x] : 0
|
||||||
|
line = line block[top bottom]
|
||||||
|
}
|
||||||
|
sub(/[ ]+$/, "", line)
|
||||||
|
lines[++line_count] = line
|
||||||
|
}
|
||||||
|
|
||||||
|
first = 1
|
||||||
|
while (first <= line_count && lines[first] ~ /^[ ]*$/) {
|
||||||
|
first++
|
||||||
|
}
|
||||||
|
|
||||||
|
last = line_count
|
||||||
|
while (last >= first && lines[last] ~ /^[ ]*$/) {
|
||||||
|
last--
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = first; i <= last; i++) {
|
||||||
|
print lines[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' >"$tmp_output"; then
|
||||||
|
echo "Unable to convert logo image: $image_path" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -s $tmp_output ]]; then
|
||||||
|
echo "No logo pixels found in: $image_path" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $output_path == "-" ]]; then
|
||||||
|
cat "$tmp_output"
|
||||||
|
else
|
||||||
|
mkdir -p "$(dirname "$output_path")"
|
||||||
|
cp "$tmp_output" "$output_path"
|
||||||
|
echo "Wrote screensaver logo text to $output_path"
|
||||||
|
fi
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# omarchy:summary=Manage persistent state files for Omarchy toggles and settings.
|
# omarchy:summary=Manage persistent state files for Omarchy toggles and settings.
|
||||||
# omarchy:args=<set|clear> <state-name-or-pattern>
|
# omarchy:args=<set|clear> <state-name-or-pattern>
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
STATE_DIR="$HOME/.local/state/omarchy"
|
STATE_DIR="$HOME/.local/state/omarchy"
|
||||||
mkdir -p "$STATE_DIR"
|
mkdir -p "$STATE_DIR"
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Display brightness level using SwayOSD on the current monitor.
|
# omarchy:summary=Display brightness level using SwayOSD on the current monitor.
|
||||||
# omarchy:args=<percent>
|
# omarchy:args=<0-100>
|
||||||
|
# omarchy:examples=omarchy swayosd brightness 0 | omarchy swayosd brightness 50 | omarchy swayosd brightness 100
|
||||||
|
|
||||||
percent="$1"
|
percent="$1"
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Display keyboard brightness level using SwayOSD on the current monitor.
|
# omarchy:summary=Display keyboard brightness level using SwayOSD on the current monitor.
|
||||||
# omarchy:args=<percent>
|
# omarchy:args=<0-100>
|
||||||
|
# omarchy:examples=omarchy swayosd kbd brightness 0 | omarchy swayosd kbd brightness 50 | omarchy swayosd kbd brightness 100
|
||||||
|
|
||||||
percent="$1"
|
percent="$1"
|
||||||
|
|
||||||
|
|||||||
+16
-2
@@ -1,11 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Lock the screen
|
# omarchy:summary=Lock the computer and turn off the display
|
||||||
# omarchy:group=system
|
# omarchy:group=system
|
||||||
# omarchy:name=lock
|
# omarchy:name=lock
|
||||||
# omarchy:examples=omarchy system lock
|
# omarchy:examples=omarchy system lock
|
||||||
|
|
||||||
pidof hyprlock || hyprlock &
|
if ! pidof hyprlock >/dev/null; then
|
||||||
|
(
|
||||||
|
hyprlock
|
||||||
|
omarchy-system-wake
|
||||||
|
) &
|
||||||
|
fi
|
||||||
|
|
||||||
# Set keyboard layout to default (first layout)
|
# Set keyboard layout to default (first layout)
|
||||||
hyprctl switchxkblayout all 0 > /dev/null 2>&1
|
hyprctl switchxkblayout all 0 > /dev/null 2>&1
|
||||||
@@ -17,3 +22,12 @@ fi
|
|||||||
|
|
||||||
# Avoid running screensaver when locked
|
# Avoid running screensaver when locked
|
||||||
pkill -f org.omarchy.screensaver
|
pkill -f org.omarchy.screensaver
|
||||||
|
|
||||||
|
if [[ ${OMARCHY_LOCK_ONLY:-false} != "true" ]]; then
|
||||||
|
(
|
||||||
|
sleep 3
|
||||||
|
pidof hyprlock >/dev/null || exit 0
|
||||||
|
omarchy-brightness-keyboard off
|
||||||
|
omarchy-brightness-display off
|
||||||
|
) &
|
||||||
|
fi
|
||||||
|
|||||||
Executable
+9
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Wake displays and restore brightness after idle
|
||||||
|
# omarchy:group=system
|
||||||
|
# omarchy:name=wake
|
||||||
|
# omarchy:examples=omarchy system wake
|
||||||
|
|
||||||
|
omarchy-brightness-display on
|
||||||
|
omarchy-brightness-keyboard restore
|
||||||
@@ -9,9 +9,14 @@ if [[ -z $1 ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BACKGROUND="$1"
|
BACKGROUND="$(realpath "$1")"
|
||||||
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
|
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
|
||||||
|
|
||||||
|
if [[ ! -f "$BACKGROUND" ]]; then
|
||||||
|
echo "File does not exist: $BACKGROUND" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Create symlink to the new background
|
# Create symlink to the new background
|
||||||
ln -nsf "$BACKGROUND" "$CURRENT_BACKGROUND_LINK"
|
ln -nsf "$BACKGROUND" "$CURRENT_BACKGROUND_LINK"
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# omarchy:summary=Generate a theme's colors.toml from its alacritty.toml palette
|
# omarchy:summary=Generate a theme's colors.toml from its alacritty.toml palette
|
||||||
# omarchy:args=<theme-dir>
|
# omarchy:args=<theme-dir>
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@@ -5,5 +5,5 @@
|
|||||||
THEME_NAME_PATH="$HOME/.config/omarchy/current/theme.name"
|
THEME_NAME_PATH="$HOME/.config/omarchy/current/theme.name"
|
||||||
|
|
||||||
if [[ -f $THEME_NAME_PATH ]]; then
|
if [[ -f $THEME_NAME_PATH ]]; then
|
||||||
omarchy-theme-set "$(cat $THEME_NAME_PATH)"
|
OMARCHY_THEME_SKIP_BACKGROUND=1 omarchy-theme-set "$(cat $THEME_NAME_PATH)"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -45,7 +45,9 @@ mv "$NEXT_THEME_PATH" "$CURRENT_THEME_PATH"
|
|||||||
echo "$THEME_NAME" >"$HOME/.config/omarchy/current/theme.name"
|
echo "$THEME_NAME" >"$HOME/.config/omarchy/current/theme.name"
|
||||||
|
|
||||||
# Change background with theme
|
# Change background with theme
|
||||||
omarchy-theme-bg-next
|
if [[ $OMARCHY_THEME_SKIP_BACKGROUND != "1" ]]; then
|
||||||
|
omarchy-theme-bg-next
|
||||||
|
fi
|
||||||
|
|
||||||
# Restart components to apply new theme
|
# Restart components to apply new theme
|
||||||
if pgrep -x waybar >/dev/null; then
|
if pgrep -x waybar >/dev/null; then
|
||||||
@@ -60,6 +62,7 @@ omarchy-restart-mako
|
|||||||
omarchy-restart-helix
|
omarchy-restart-helix
|
||||||
|
|
||||||
# Change app-specific themes
|
# Change app-specific themes
|
||||||
|
omarchy-theme-set-foot
|
||||||
omarchy-theme-set-gnome
|
omarchy-theme-set-gnome
|
||||||
omarchy-theme-set-browser
|
omarchy-theme-set-browser
|
||||||
omarchy-theme-set-vscode
|
omarchy-theme-set-vscode
|
||||||
@@ -67,4 +70,4 @@ omarchy-theme-set-obsidian
|
|||||||
omarchy-theme-set-keyboard
|
omarchy-theme-set-keyboard
|
||||||
|
|
||||||
# Call hook on theme set
|
# Call hook on theme set
|
||||||
omarchy-hook theme-set "$THEME_NAME"
|
omarchy-hook theme-set "$THEME_NAME" >/dev/null
|
||||||
|
|||||||
@@ -1,30 +1,44 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Apply the current theme color to Chromium and Brave
|
# omarchy:summary=Apply the current theme color to Chromium, Chrome, Edge, and Brave
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
|
CHROMIUM_THEME=~/.config/omarchy/current/theme/chromium.theme
|
||||||
|
|
||||||
if omarchy-cmd-present chromium || omarchy-cmd-present brave || omarchy-cmd-present brave-origin-beta; then
|
if [[ -f $CHROMIUM_THEME ]]; then
|
||||||
if [[ -f $CHROMIUM_THEME ]]; then
|
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
|
||||||
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
|
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${THEME_RGB_COLOR//,/ })
|
||||||
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${THEME_RGB_COLOR//,/ })
|
else
|
||||||
else
|
# Use a default, neutral grey if theme doesn't have a color
|
||||||
# Use a default, neutral grey if theme doesn't have a color
|
THEME_HEX_COLOR="#1c2027"
|
||||||
THEME_RGB_COLOR="28,32,39"
|
|
||||||
THEME_HEX_COLOR="#1c2027"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if omarchy-cmd-present chromium; then
|
|
||||||
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null
|
|
||||||
pgrep -x chromium >/dev/null && chromium --refresh-platform-policy --no-startup-window &>/dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Brave and Brave Origin Beta share /etc/brave/policies, so a single write covers both
|
|
||||||
if omarchy-cmd-present brave || omarchy-cmd-present brave-origin-beta; then
|
|
||||||
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null
|
|
||||||
if pgrep -x brave >/dev/null; then
|
|
||||||
omarchy-cmd-present brave && brave --refresh-platform-policy --no-startup-window &>/dev/null
|
|
||||||
omarchy-cmd-present brave-origin-beta && brave-origin-beta --refresh-platform-policy --no-startup-window &>/dev/null
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
set_browser_policy() {
|
||||||
|
local policy_dir="$1"
|
||||||
|
|
||||||
|
[[ -d $policy_dir ]] || return
|
||||||
|
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "$policy_dir/color.json" >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
refresh_running_browser() {
|
||||||
|
local process="$1"
|
||||||
|
local command="$2"
|
||||||
|
local pgrep_args="${3:--x}"
|
||||||
|
|
||||||
|
if omarchy-cmd-present "$command" && pgrep $pgrep_args "$process" >/dev/null; then
|
||||||
|
"$command" --refresh-platform-policy --no-startup-window &>/dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
set_browser_policy /etc/chromium/policies/managed
|
||||||
|
refresh_running_browser chromium chromium
|
||||||
|
|
||||||
|
set_browser_policy /etc/opt/chrome/policies/managed
|
||||||
|
refresh_running_browser chrome google-chrome-stable || refresh_running_browser chrome google-chrome
|
||||||
|
|
||||||
|
set_browser_policy /etc/opt/edge/policies/managed
|
||||||
|
refresh_running_browser msedge microsoft-edge-stable
|
||||||
|
|
||||||
|
set_browser_policy /etc/brave/policies/managed
|
||||||
|
refresh_running_browser brave brave
|
||||||
|
refresh_running_browser brave-origin-beta brave-origin-beta -f
|
||||||
|
|||||||
Executable
+28
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Apply current Omarchy theme colors to running Foot terminals
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
|
foot_theme=~/.config/omarchy/current/theme/foot.ini
|
||||||
|
|
||||||
|
if [[ ! -f $foot_theme ]] || ! pgrep -x foot >/dev/null; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
foot_osc=$(awk -F= '
|
||||||
|
function color(value) { return "#" value }
|
||||||
|
/^foreground=/ { printf "\033]10;%s\007", color($2) }
|
||||||
|
/^background=/ { printf "\033]11;%s\007", color($2) }
|
||||||
|
/^cursor=/ { split($2, parts, " "); printf "\033]12;%s\007", color(parts[2]) }
|
||||||
|
/^selection-background=/ { printf "\033]17;%s\007", color($2) }
|
||||||
|
/^selection-foreground=/ { printf "\033]19;%s\007", color($2) }
|
||||||
|
/^regular[0-7]=/ { split($1, parts, "regular"); printf "\033]4;%d;%s\007", parts[2], color($2) }
|
||||||
|
/^bright[0-7]=/ { split($1, parts, "bright"); printf "\033]4;%d;%s\007", parts[2] + 8, color($2) }
|
||||||
|
' "$foot_theme")
|
||||||
|
|
||||||
|
for foot_pid in $(pgrep -x foot); do
|
||||||
|
for child_pid in $(pgrep -P "$foot_pid"); do
|
||||||
|
tty=$(readlink "/proc/$child_pid/fd/1" 2>/dev/null)
|
||||||
|
[[ $tty == /dev/pts/* ]] && printf '%b' "$foot_osc" >"$tty"
|
||||||
|
done
|
||||||
|
done
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Apply the current theme to GNOME color mode and icon settings
|
# omarchy:summary=Apply the current theme to GNOME color mode and icon settings
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
|
if [[ -f ~/.config/omarchy/current/theme/light.mode ]]; then
|
||||||
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
|
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Apply the current theme keyboard color to supported keyboards
|
# omarchy:summary=Apply the current theme keyboard color to supported keyboards
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
omarchy-theme-set-keyboard-asus-rog
|
omarchy-theme-set-keyboard-asus-rog
|
||||||
omarchy-theme-set-keyboard-f16
|
omarchy-theme-set-keyboard-f16
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Apply the current theme keyboard color to ASUS ROG keyboards
|
# omarchy:summary=Apply the current theme keyboard color to ASUS ROG keyboards
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
ASUSCTL_THEME=~/.config/omarchy/current/theme/keyboard.rgb
|
ASUSCTL_THEME=~/.config/omarchy/current/theme/keyboard.rgb
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Apply the current theme keyboard color to Framework Laptop 16 keyboards
|
# omarchy:summary=Apply the current theme keyboard color to Framework Laptop 16 keyboards
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
FRAMEWORK16_THEME=~/.config/omarchy/current/theme/keyboard.rgb
|
FRAMEWORK16_THEME=~/.config/omarchy/current/theme/keyboard.rgb
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Sync Omarchy theme to all Obsidian vaults
|
# omarchy:summary=Sync Omarchy theme to all Obsidian vaults
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
|
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Generate themed config files from Omarchy templates
|
# omarchy:summary=Generate themed config files from Omarchy templates
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
TEMPLATES_DIR="$OMARCHY_PATH/default/themed"
|
TEMPLATES_DIR="$OMARCHY_PATH/default/themed"
|
||||||
USER_TEMPLATES_DIR="$HOME/.config/omarchy/themed"
|
USER_TEMPLATES_DIR="$HOME/.config/omarchy/themed"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Sync Omarchy theme to VS Code, VSCodium, and Cursor
|
# omarchy:summary=Sync Omarchy theme to VS Code, VSCodium, and Cursor
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json"
|
VS_CODE_THEME="$HOME/.config/omarchy/current/theme/vscode.json"
|
||||||
|
|
||||||
|
|||||||
Executable
+231
@@ -0,0 +1,231 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:group=transcode
|
||||||
|
# omarchy:name=
|
||||||
|
# omarchy:summary=Transcode pictures and videos for sharing
|
||||||
|
# omarchy:args=[--path path] [input] [format] [resolution]
|
||||||
|
# omarchy:examples=omarchy transcode|omarchy transcode --path ~/Downloads|omarchy transcode ~/Videos/demo.mov mp4 1080p|omarchy transcode ~/Pictures/wallpaper.heic jpg medium
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<'EOF'
|
||||||
|
Usage:
|
||||||
|
omarchy transcode [--path path] [input] [format] [resolution]
|
||||||
|
|
||||||
|
With no input, fuzzy-pick a picture or video from ~/Pictures and ~/Videos,
|
||||||
|
or only from --path when provided. Then pick the output format and resolution.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--path path Limit interactive fuzzy file selection to this path
|
||||||
|
|
||||||
|
Formats:
|
||||||
|
Pictures: jpg, png
|
||||||
|
Videos: mp4, gif
|
||||||
|
|
||||||
|
Resolutions:
|
||||||
|
Pictures: high, medium, low
|
||||||
|
Videos: 4k, 1080p, 720p
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
pick_file() {
|
||||||
|
local search_path="$1"
|
||||||
|
local paths=()
|
||||||
|
|
||||||
|
if [[ -n $search_path ]]; then
|
||||||
|
[[ -e $search_path ]] || { echo "Path not found: $search_path" >&2; return 1; }
|
||||||
|
paths=("$search_path")
|
||||||
|
else
|
||||||
|
paths=("$HOME/Pictures" "$HOME/Videos")
|
||||||
|
fi
|
||||||
|
|
||||||
|
find "${paths[@]}" -type f \
|
||||||
|
\( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.webp' -o -iname '*.gif' -o -iname '*.heic' -o -iname '*.avif' \
|
||||||
|
-o -iname '*.mp4' -o -iname '*.mov' -o -iname '*.m4v' -o -iname '*.mkv' -o -iname '*.webm' -o -iname '*.avi' \) \
|
||||||
|
-printf '%T@\t%p\n' 2>/dev/null | sort -rn | cut -f2- | fzf --layout=reverse-list --prompt="Transcode file> "
|
||||||
|
}
|
||||||
|
|
||||||
|
pick_option() {
|
||||||
|
local prompt="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
gum choose --header "$prompt" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
media_type() {
|
||||||
|
local mime
|
||||||
|
mime=$(file -b --mime-type "$1")
|
||||||
|
|
||||||
|
case "$mime" in
|
||||||
|
image/*) echo picture ;;
|
||||||
|
video/*) echo video ;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported file type: $mime" >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
output_path() {
|
||||||
|
local input="$1"
|
||||||
|
local format="$2"
|
||||||
|
local resolution="$3"
|
||||||
|
local dir base stem
|
||||||
|
|
||||||
|
dir=$(dirname -- "$input")
|
||||||
|
base=$(basename -- "$input")
|
||||||
|
stem="${base%.*}"
|
||||||
|
|
||||||
|
printf '%s/%s-%s.%s' "$dir" "$stem" "$resolution" "$format"
|
||||||
|
}
|
||||||
|
|
||||||
|
transcode_picture() {
|
||||||
|
local input="$1" format="$2" resolution="$3" output="$4"
|
||||||
|
local resize
|
||||||
|
|
||||||
|
case "$resolution" in
|
||||||
|
high) resize='3160x>' ;;
|
||||||
|
medium) resize='2160x>' ;;
|
||||||
|
low) resize='1080x>' ;;
|
||||||
|
*)
|
||||||
|
echo "Invalid picture resolution: $resolution" >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$format" in
|
||||||
|
jpg)
|
||||||
|
magick "$input" -resize "$resize" -quality 85 -strip "$output"
|
||||||
|
;;
|
||||||
|
png)
|
||||||
|
magick "$input" -resize "$resize" -strip -define png:compression-filter=5 \
|
||||||
|
-define png:compression-level=9 \
|
||||||
|
-define png:compression-strategy=1 \
|
||||||
|
-define png:exclude-chunk=all \
|
||||||
|
"$output"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid picture format: $format" >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
transcode_video() {
|
||||||
|
local input="$1" format="$2" resolution="$3" output="$4"
|
||||||
|
local scale
|
||||||
|
|
||||||
|
case "$resolution" in
|
||||||
|
4k) scale='scale=-2:2160' ;;
|
||||||
|
1080p) scale='scale=-2:1080' ;;
|
||||||
|
720p) scale='scale=-2:720' ;;
|
||||||
|
*)
|
||||||
|
echo "Invalid video resolution: $resolution" >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$format" in
|
||||||
|
mp4)
|
||||||
|
if [[ $resolution == "4k" ]]; then
|
||||||
|
ffmpeg -i "$input" -vf "$scale" -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k "$output"
|
||||||
|
else
|
||||||
|
ffmpeg -i "$input" -vf "$scale" -c:v libx264 -preset fast -crf 23 -c:a copy "$output"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
gif)
|
||||||
|
ffmpeg -i "$input" -vf "fps=10,$scale:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" "$output"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid video format: $format" >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_to_clipboard() {
|
||||||
|
local output="$1"
|
||||||
|
local uri
|
||||||
|
|
||||||
|
uri="file://$(realpath -- "$output")"
|
||||||
|
printf '%s\n' "$uri" | wl-copy --type text/uri-list
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
local input="" format="" resolution="" search_path=""
|
||||||
|
local type output positional=()
|
||||||
|
|
||||||
|
while (( $# > 0 )); do
|
||||||
|
case "$1" in
|
||||||
|
--path)
|
||||||
|
shift
|
||||||
|
[[ $# -gt 0 ]] || { echo "Missing value for --path" >&2; return 2; }
|
||||||
|
search_path="$1"
|
||||||
|
;;
|
||||||
|
--help | -h)
|
||||||
|
usage
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
positional+=("$@")
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
--*)
|
||||||
|
echo "Unknown option: $1" >&2
|
||||||
|
usage >&2
|
||||||
|
return 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
positional+=("$1")
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
input="${positional[0]:-}"
|
||||||
|
format="${positional[1]:-}"
|
||||||
|
resolution="${positional[2]:-}"
|
||||||
|
|
||||||
|
if [[ -z $input ]]; then
|
||||||
|
input=$(pick_file "$search_path")
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -n $input ]] || return 1
|
||||||
|
[[ -f $input ]] || { echo "File not found: $input" >&2; return 1; }
|
||||||
|
|
||||||
|
type=$(media_type "$input")
|
||||||
|
|
||||||
|
if [[ -z $format ]]; then
|
||||||
|
if [[ $type == "picture" ]]; then
|
||||||
|
format=$(pick_option "Select format..." jpg png)
|
||||||
|
else
|
||||||
|
format=$(pick_option "Select format..." mp4 gif)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $resolution ]]; then
|
||||||
|
if [[ $type == "picture" ]]; then
|
||||||
|
resolution=$(pick_option "Select resolution..." high medium low)
|
||||||
|
else
|
||||||
|
resolution=$(pick_option "Select resolution..." 4k 1080p 720p)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
output=$(output_path "$input" "$format" "$resolution")
|
||||||
|
|
||||||
|
if [[ $type == "picture" ]]; then
|
||||||
|
transcode_picture "$input" "$format" "$resolution" "$output"
|
||||||
|
else
|
||||||
|
transcode_video "$input" "$format" "$resolution" "$output"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
copy_to_clipboard "$output"
|
||||||
|
echo "Your $type has been transcoded into $format as $resolution. It's on your clipboard."
|
||||||
|
echo ""
|
||||||
|
echo "It's also in $output"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=No-op now that omarchy-update-perform is responsible for idle management.
|
# omarchy:summary=No-op now that omarchy-update-perform is responsible for idle management.
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# omarchy:summary=Upload logs to 0x0.st
|
# omarchy:summary=Upload logs to 0x0.st
|
||||||
# omarchy:args=<log-file>
|
# omarchy:args=<log-file>
|
||||||
|
# omarchy:hidden=true
|
||||||
|
|
||||||
LOG_TYPE="${1:-install}"
|
LOG_TYPE="${1:-install}"
|
||||||
TEMP_LOG="/tmp/upload-log.txt"
|
TEMP_LOG="/tmp/upload-log.txt"
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
brave-flags.conf
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
[main]
|
||||||
|
include=~/.config/omarchy/current/theme/foot.ini
|
||||||
|
term=xterm-256color
|
||||||
|
font=JetBrainsMono Nerd Font:size=9
|
||||||
|
pad=14x14
|
||||||
|
initial-window-mode=windowed
|
||||||
|
workers=0
|
||||||
|
|
||||||
|
[scrollback]
|
||||||
|
lines=10000
|
||||||
|
|
||||||
|
[cursor]
|
||||||
|
style=block
|
||||||
|
blink=no
|
||||||
|
|
||||||
|
[key-bindings]
|
||||||
|
clipboard-copy=Control+Insert
|
||||||
|
primary-paste=none
|
||||||
|
clipboard-paste=Shift+Insert
|
||||||
@@ -1,28 +1,19 @@
|
|||||||
general {
|
general {
|
||||||
lock_cmd = omarchy-system-lock # lock screen and 1password
|
lock_cmd = omarchy-system-lock # lock screen and 1password
|
||||||
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
before_sleep_cmd = OMARCHY_LOCK_ONLY=true omarchy-system-lock # lock before suspend without scheduling display off.
|
||||||
after_sleep_cmd = sleep 1 && hyprctl dispatch dpms on # delay for PAM readiness, then turn on display.
|
after_sleep_cmd = sleep 1 && omarchy-system-wake # delay for PAM readiness, then turn on display.
|
||||||
inhibit_sleep = 3 # wait until screen is locked
|
inhibit_sleep = 3 # wait until screen is locked
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Start screensaver after 2.5 minutes
|
||||||
listener {
|
listener {
|
||||||
timeout = 150 # 2.5min
|
timeout = 150
|
||||||
on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already)
|
on-timeout = pidof hyprlock || omarchy-launch-screensaver
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Lock system after 5 minutes
|
||||||
listener {
|
listener {
|
||||||
timeout = 151 # 5min
|
timeout = 152
|
||||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
on-timeout = omarchy-system-lock
|
||||||
}
|
on-resume = omarchy-system-wake
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 330 # 5.5min
|
|
||||||
on-timeout = brightnessctl -sd '*::kbd_backlight' set 0 # save state and turn off keyboard backlight
|
|
||||||
on-resume = brightnessctl -rd '*::kbd_backlight' # restore keyboard backlight
|
|
||||||
}
|
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 330 # 5.5min
|
|
||||||
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
|
||||||
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Scroll nicely in the terminal
|
# Scroll nicely in the terminal
|
||||||
windowrule = match:class (Alacritty|kitty), scroll_touchpad 1.5
|
windowrule = match:class (Alacritty|kitty|foot), scroll_touchpad 1.5
|
||||||
windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2
|
windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2
|
||||||
|
|
||||||
# Enable touchpad gestures for changing workspaces
|
# Enable touchpad gestures for changing workspaces
|
||||||
|
|||||||
@@ -32,3 +32,9 @@ layout {
|
|||||||
# Avoid overly wide single-window layouts on wide screens
|
# Avoid overly wide single-window layouts on wide screens
|
||||||
# single_window_aspect_ratio = 1 1
|
# single_window_aspect_ratio = 1 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/
|
||||||
|
scrolling {
|
||||||
|
# See only one column per screen instead of two
|
||||||
|
# column_width = 0.97
|
||||||
|
}
|
||||||
|
|||||||
@@ -70,6 +70,9 @@ set -g set-clipboard on
|
|||||||
set -g allow-passthrough on
|
set -g allow-passthrough on
|
||||||
setw -g aggressive-resize on
|
setw -g aggressive-resize on
|
||||||
set -g detach-on-destroy off
|
set -g detach-on-destroy off
|
||||||
|
set -g extended-keys on
|
||||||
|
set -g extended-keys-format csi-u
|
||||||
|
set -sg escape-time 10
|
||||||
|
|
||||||
# Status bar
|
# Status bar
|
||||||
set -g status-position top
|
set -g status-position top
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ _omarchy_complete() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
complete -F _omarchy_complete omarchy
|
complete -o default -F _omarchy_complete omarchy
|
||||||
|
|
||||||
# Hide individual omarchy-* binaries from initial-word command completion;
|
# Hide individual omarchy-* binaries from initial-word command completion;
|
||||||
# the unified `omarchy` dispatcher is the user-facing entry point.
|
# the unified `omarchy` dispatcher is the user-facing entry point.
|
||||||
|
|||||||
@@ -1,58 +1,33 @@
|
|||||||
# Transcode a video to a good-balance 1080p that's great for sharing online
|
# Transcoding helpers have moved to omarchy-transcode.
|
||||||
|
|
||||||
transcode-video-1080p() {
|
transcode-video-1080p() {
|
||||||
ffmpeg -i "$1" -vf scale=1920:1080 -c:v libx264 -preset fast -crf 23 -c:a copy "${1%.*}-1080p.mp4"
|
omarchy-transcode "$1" mp4 1080p
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transcode a video to a good-balance 4K that's great for sharing online
|
|
||||||
transcode-video-4K() {
|
transcode-video-4K() {
|
||||||
ffmpeg -i "$1" -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k "${1%.*}-optimized.mp4"
|
omarchy-transcode "$1" mp4 4k
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transcode a video to an animated GIF using a palette for accurate colors
|
|
||||||
transcode-video-gif() {
|
transcode-video-gif() {
|
||||||
ffmpeg -i "$1" -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" "${1%.*}.gif"
|
omarchy-transcode "$1" gif 1080p
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transcode any image to JPG image that's great for shrinking wallpapers
|
|
||||||
img2jpg() {
|
img2jpg() {
|
||||||
img="$1"
|
omarchy-transcode "$1" jpg high
|
||||||
shift
|
|
||||||
|
|
||||||
magick "$img" "$@" -quality 85 -strip "${img%.*}-converted.jpg"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transcode any image to a small JPG (max 1080px wide)
|
|
||||||
img2jpg-small() {
|
img2jpg-small() {
|
||||||
img="$1"
|
omarchy-transcode "$1" jpg low
|
||||||
shift
|
|
||||||
|
|
||||||
magick "$img" "$@" -resize 1080x\> -quality 85 -strip "${img%.*}-small.jpg"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transcode any image to a 4K JPG (max 2160px wide)
|
|
||||||
img2jpg-medium() {
|
img2jpg-medium() {
|
||||||
img="$1"
|
omarchy-transcode "$1" jpg medium
|
||||||
shift
|
|
||||||
|
|
||||||
magick "$img" "$@" -resize 2160x\> -quality 85 -strip "${img%.*}-medium.jpg"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transcode any image to a 6K JPG (max 3160px wide)
|
|
||||||
img2jpg-large() {
|
img2jpg-large() {
|
||||||
img="$1"
|
omarchy-transcode "$1" jpg high
|
||||||
shift
|
|
||||||
|
|
||||||
magick "$img" "$@" -resize 3160x\> -quality 85 -strip "${img%.*}-large.jpg"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Transcode any image to compressed-but-lossless PNG
|
|
||||||
img2png() {
|
img2png() {
|
||||||
img="$1"
|
omarchy-transcode "$1" png high
|
||||||
shift
|
|
||||||
|
|
||||||
magick "$img" "$@" -strip -define png:compression-filter=5 \
|
|
||||||
-define png:compression-level=9 \
|
|
||||||
-define png:compression-strategy=1 \
|
|
||||||
-define png:exclude-chunk=all \
|
|
||||||
"${img%.*}-optimized.png"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"policies": {
|
||||||
|
"Preferences": {
|
||||||
|
"apz.overscroll.enabled": {
|
||||||
|
"Value": true,
|
||||||
|
"Status": "default"
|
||||||
|
},
|
||||||
|
"media.ffmpeg.vaapi.enabled": {
|
||||||
|
"Value": true,
|
||||||
|
"Status": "default"
|
||||||
|
},
|
||||||
|
"media.hardware-video-decoding.force-enabled": {
|
||||||
|
"Value": true,
|
||||||
|
"Status": "default"
|
||||||
|
},
|
||||||
|
"widget.disable-swipe-tracker": {
|
||||||
|
"Value": false,
|
||||||
|
"Status": "default"
|
||||||
|
},
|
||||||
|
"widget.wayland.fractional-scale.enabled": {
|
||||||
|
"Value": true,
|
||||||
|
"Status": "default"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
[main]
|
||||||
|
font=JetBrainsMono Nerd Font:size=18
|
||||||
|
pad=0x0
|
||||||
|
|
||||||
|
[colors-dark]
|
||||||
|
background=000000
|
||||||
|
foreground=ffffff
|
||||||
@@ -3,7 +3,7 @@ windowrule = float on, match:tag floating-window
|
|||||||
windowrule = center on, match:tag floating-window
|
windowrule = center on, match:tag floating-window
|
||||||
windowrule = size 875 600, match:tag floating-window
|
windowrule = size 875 600, match:tag floating-window
|
||||||
|
|
||||||
windowrule = tag +floating-window, match:class (org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
|
windowrule = tag +floating-window, match:class (org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.codeberg.dnkl.foot|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
|
||||||
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
||||||
windowrule = float on, match:class org.gnome.Calculator
|
windowrule = float on, match:class org.gnome.Calculator
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Define terminal tag to style them uniformly
|
# Define terminal tag to style them uniformly
|
||||||
windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty)
|
windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty|foot)
|
||||||
windowrule = tag -default-opacity, match:tag terminal
|
windowrule = tag -default-opacity, match:tag terminal
|
||||||
windowrule = opacity 0.97 0.9, match:tag terminal
|
windowrule = opacity 0.97 0.9, match:tag terminal
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ bindd = , XF86Calculator, Calculator, exec, gnome-calculator
|
|||||||
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
|
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
|
||||||
bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background
|
bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background
|
||||||
bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme
|
bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme
|
||||||
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, omarchy-hyprland-active-window-transparency-toggle
|
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, omarchy-hyprland-window-transparency-toggle
|
||||||
bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, omarchy-hyprland-window-gaps-toggle
|
bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, omarchy-hyprland-window-gaps-toggle
|
||||||
bindd = SUPER CTRL, BACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle
|
bindd = SUPER CTRL, BACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle
|
||||||
|
|
||||||
@@ -43,6 +43,9 @@ bindd = SUPER CTRL, PRINT, Extract text (OCR) from screenshot, exec, omarchy-cap
|
|||||||
# File sharing
|
# File sharing
|
||||||
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
||||||
|
|
||||||
|
# Transcoding
|
||||||
|
bindd = SUPER CTRL, R, Transcode, exec, omarchy-menu transcode
|
||||||
|
|
||||||
# Waybar-less information
|
# Waybar-less information
|
||||||
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send -u low " $(date +"%A %H:%M · %d %B %Y · Week %V")"
|
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send -u low " $(date +"%A %H:%M · %d %B %Y · Week %V")"
|
||||||
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send -u low "$(omarchy-battery-status)"
|
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send -u low "$(omarchy-battery-status)"
|
||||||
|
|||||||
@@ -113,6 +113,10 @@ dwindle {
|
|||||||
force_split = 2 # Always split on the right
|
force_split = 2 # Always split on the right
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scrolling {
|
||||||
|
column_width = 0.49
|
||||||
|
}
|
||||||
|
|
||||||
# See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more
|
# See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more
|
||||||
master {
|
master {
|
||||||
new_status = master
|
new_status = master
|
||||||
|
|||||||
@@ -4,3 +4,7 @@ general {
|
|||||||
gaps_in = 0
|
gaps_in = 0
|
||||||
border_size = 0
|
border_size = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
rounding = 0
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name: omarchy
|
|||||||
description: >
|
description: >
|
||||||
REQUIRED for end-user customization of Linux desktop, window manager, or system config.
|
REQUIRED for end-user customization of Linux desktop, window manager, or system config.
|
||||||
Use when editing ~/.config/hypr/, ~/.config/waybar/, ~/.config/walker/,
|
Use when editing ~/.config/hypr/, ~/.config/waybar/, ~/.config/walker/,
|
||||||
~/.config/alacritty/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/,
|
~/.config/alacritty/, ~/.config/foot/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/,
|
||||||
or ~/.config/omarchy/. Triggers: Hyprland, window rules, animations, keybindings,
|
or ~/.config/omarchy/. Triggers: Hyprland, window rules, animations, keybindings,
|
||||||
monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes,
|
monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes,
|
||||||
wallpaper, night light, idle, lock screen, screenshots, layer rules, workspace
|
wallpaper, night light, idle, lock screen, screenshots, layer rules, workspace
|
||||||
@@ -24,7 +24,7 @@ It is not for contributing to Omarchy source code.
|
|||||||
|
|
||||||
- Editing ANY file in `~/.config/hypr/` (window rules, animations, keybindings, monitors, etc.)
|
- Editing ANY file in `~/.config/hypr/` (window rules, animations, keybindings, monitors, etc.)
|
||||||
- Editing ANY file in `~/.config/waybar/`, `~/.config/walker/`, `~/.config/mako/`
|
- Editing ANY file in `~/.config/waybar/`, `~/.config/walker/`, `~/.config/mako/`
|
||||||
- Editing terminal configs (alacritty, kitty, ghostty)
|
- Editing terminal configs (alacritty, foot, kitty, ghostty)
|
||||||
- Editing ANY file in `~/.config/omarchy/`
|
- Editing ANY file in `~/.config/omarchy/`
|
||||||
- Window behavior, animations, opacity, blur, gaps, borders
|
- Window behavior, animations, opacity, blur, gaps, borders
|
||||||
- Layer rules, workspace settings, display/monitor configuration
|
- Layer rules, workspace settings, display/monitor configuration
|
||||||
@@ -78,7 +78,7 @@ Omarchy is built on:
|
|||||||
| **Hyprland** | Wayland compositor/WM | `~/.config/hypr/` |
|
| **Hyprland** | Wayland compositor/WM | `~/.config/hypr/` |
|
||||||
| **Waybar** | Status bar | `~/.config/waybar/` |
|
| **Waybar** | Status bar | `~/.config/waybar/` |
|
||||||
| **Walker** | App launcher | `~/.config/walker/` |
|
| **Walker** | App launcher | `~/.config/walker/` |
|
||||||
| **Alacritty/Kitty/Ghostty** | Terminals | `~/.config/<terminal>/` |
|
| **Alacritty/Foot/Kitty/Ghostty** | Terminals | `~/.config/<terminal>/` |
|
||||||
| **Mako** | Notifications | `~/.config/mako/` |
|
| **Mako** | Notifications | `~/.config/mako/` |
|
||||||
| **SwayOSD** | On-screen display | `~/.config/swayosd/` |
|
| **SwayOSD** | On-screen display | `~/.config/swayosd/` |
|
||||||
|
|
||||||
@@ -163,6 +163,7 @@ Run `omarchy --help` for the full list. The most common groups:
|
|||||||
|
|
||||||
```
|
```
|
||||||
~/.config/alacritty/alacritty.toml
|
~/.config/alacritty/alacritty.toml
|
||||||
|
~/.config/foot/foot.ini
|
||||||
~/.config/kitty/kitty.conf
|
~/.config/kitty/kitty.conf
|
||||||
~/.config/ghostty/config
|
~/.config/ghostty/config
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
[colors-dark]
|
||||||
|
foreground={{ foreground_strip }}
|
||||||
|
background={{ background_strip }}
|
||||||
|
selection-foreground={{ selection_foreground_strip }}
|
||||||
|
selection-background={{ selection_background_strip }}
|
||||||
|
|
||||||
|
cursor={{ background_strip }} {{ cursor_strip }}
|
||||||
|
|
||||||
|
regular0={{ color0_strip }}
|
||||||
|
regular1={{ color1_strip }}
|
||||||
|
regular2={{ color2_strip }}
|
||||||
|
regular3={{ color3_strip }}
|
||||||
|
regular4={{ color4_strip }}
|
||||||
|
regular5={{ color5_strip }}
|
||||||
|
regular6={{ color6_strip }}
|
||||||
|
regular7={{ color7_strip }}
|
||||||
|
|
||||||
|
bright0={{ color8_strip }}
|
||||||
|
bright1={{ color9_strip }}
|
||||||
|
bright2={{ color10_strip }}
|
||||||
|
bright3={{ color11_strip }}
|
||||||
|
bright4={{ color12_strip }}
|
||||||
|
bright5={{ color13_strip }}
|
||||||
|
bright6={{ color14_strip }}
|
||||||
|
bright7={{ color15_strip }}
|
||||||
@@ -23,7 +23,7 @@ env = GUM_INPUT_HEADER_FOREGROUND,#{{ foreground }}
|
|||||||
env = GUM_INPUT_HEADER_BACKGROUND,#{{ background }}
|
env = GUM_INPUT_HEADER_BACKGROUND,#{{ background }}
|
||||||
|
|
||||||
# Gum Choose Style Variables
|
# Gum Choose Style Variables
|
||||||
env = GUM_CHOOSE_CURSOR_FOREGROUND,#{{ cursor }}
|
env = GUM_CHOOSE_CURSOR_FOREGROUND,#{{ accent }}
|
||||||
env = GUM_CHOOSE_CURSOR_BACKGROUND,#{{ background }}
|
env = GUM_CHOOSE_CURSOR_BACKGROUND,#{{ background }}
|
||||||
env = GUM_CHOOSE_HEADER_FOREGROUND,#{{ foreground }}
|
env = GUM_CHOOSE_HEADER_FOREGROUND,#{{ foreground }}
|
||||||
env = GUM_CHOOSE_HEADER_BACKGROUND,#{{ background }}
|
env = GUM_CHOOSE_HEADER_BACKGROUND,#{{ background }}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ run_logged $OMARCHY_INSTALL/config/hardware/intel/ipu7-camera.sh
|
|||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/ptl-kernel.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/intel/ptl-kernel.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/fred.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/intel/fred.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh
|
||||||
|
run_logged $OMARCHY_INSTALL/config/hardware/intel/sof-firmware.sh
|
||||||
|
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-haptic-touchpad.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-haptic-touchpad.sh
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Install Sound Open Firmware for the audio DSP on non-XPS Intel Panther
|
||||||
|
# Lake systems. XPS PTL stays on linux-ptl, which hard-deps sof-firmware.
|
||||||
|
# Mainline `linux` only optdeps it, so without this the DSP fails to boot
|
||||||
|
# and only auto_null shows up in PipeWire.
|
||||||
|
|
||||||
|
if omarchy-hw-intel-ptl && ! omarchy-hw-match "XPS"; then
|
||||||
|
omarchy-pkg-add sof-firmware
|
||||||
|
fi
|
||||||
Executable → Regular
@@ -5,14 +5,10 @@ sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg /usr
|
|||||||
# Setup user theme folder
|
# Setup user theme folder
|
||||||
mkdir -p ~/.config/omarchy/themes
|
mkdir -p ~/.config/omarchy/themes
|
||||||
|
|
||||||
# Add managed policy directories for Chromium and Brave for theme changes.
|
# Chromium policy directory for theme
|
||||||
# Must exist before the first omarchy-theme-set, which writes color.json into them.
|
|
||||||
sudo mkdir -p /etc/chromium/policies/managed
|
sudo mkdir -p /etc/chromium/policies/managed
|
||||||
sudo chmod a+rw /etc/chromium/policies/managed
|
sudo chmod a+rw /etc/chromium/policies/managed
|
||||||
|
|
||||||
sudo mkdir -p /etc/brave/policies/managed
|
|
||||||
sudo chmod a+rw /etc/brave/policies/managed
|
|
||||||
|
|
||||||
# Set initial theme
|
# Set initial theme
|
||||||
omarchy-theme-set "Tokyo Night"
|
omarchy-theme-set "Tokyo Night"
|
||||||
rm -rf ~/.config/chromium/SingletonLock # otherwise archiso will own the chromium singleton
|
rm -rf ~/.config/chromium/SingletonLock # otherwise archiso will own the chromium singleton
|
||||||
|
|||||||
Executable
+1
@@ -0,0 +1 @@
|
|||||||
|
gsettings set org.gnome.desktop.interface gtk-enable-primary-paste true
|
||||||
@@ -41,6 +41,7 @@ pipewire-jack
|
|||||||
pipewire-pulse
|
pipewire-pulse
|
||||||
qt6-wayland
|
qt6-wayland
|
||||||
snapper
|
snapper
|
||||||
|
sof-firmware
|
||||||
thermald
|
thermald
|
||||||
webp-pixbuf-loader
|
webp-pixbuf-loader
|
||||||
yay-debug
|
yay-debug
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
echo "Add opencode with system themeing"
|
echo "Add opencode with system theming"
|
||||||
|
|
||||||
omarchy-pkg-add opencode
|
omarchy-pkg-add opencode
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
echo "Switch back to mainline chromium now that it supports full live themeing"
|
echo "Switch back to mainline chromium now that it supports full live theming"
|
||||||
|
|
||||||
if omarchy-pkg-present omarchy-chromium; then
|
if omarchy-pkg-present omarchy-chromium; then
|
||||||
if gum confirm "Ready to switch to mainstream chromium? (Will close Chromium + reset settings)"; then
|
if gum confirm "Ready to switch to mainstream chromium? (Will close Chromium + reset settings)"; then
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
echo "Remove stale Xe Panel Replay kernel cmdline from Dell XPS Panther Lake systems"
|
||||||
|
|
||||||
|
DEFAULT_LIMINE="/etc/default/limine"
|
||||||
|
|
||||||
|
if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl; then
|
||||||
|
if [[ -f $DEFAULT_LIMINE ]] && grep -q 'xe\.enable_panel_replay' "$DEFAULT_LIMINE"; then
|
||||||
|
sudo sed -i '/^KERNEL_CMDLINE.*xe\.enable_panel_replay/d' "$DEFAULT_LIMINE"
|
||||||
|
sudo limine-update
|
||||||
|
fi
|
||||||
|
fi
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
echo "Enable middle-click primary paste for GTK/Chromium-family apps (Ghostty, Brave, Chromium)"
|
||||||
|
|
||||||
|
if command -v gsettings >/dev/null; then
|
||||||
|
gsettings set org.gnome.desktop.interface gtk-enable-primary-paste true || true
|
||||||
|
fi
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
echo "Add Foot terminal config and theme support"
|
||||||
|
|
||||||
|
if [[ ! -f ~/.config/foot/foot.ini ]]; then
|
||||||
|
mkdir -p ~/.config/foot
|
||||||
|
cp -Rpf "$OMARCHY_PATH/config/foot/foot.ini" ~/.config/foot/foot.ini
|
||||||
|
elif ! grep -q "^primary-paste=none" ~/.config/foot/foot.ini; then
|
||||||
|
sed -i '/^clipboard-copy=Control+Insert/a primary-paste=none' ~/.config/foot/foot.ini
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/omarchy/current/theme/foot.ini ]]; then
|
||||||
|
sed -i 's/^\[colors\]$/[colors-dark]/' ~/.config/omarchy/current/theme/foot.ini
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f ~/.config/omarchy/current/theme/foot.ini && -f ~/.config/omarchy/current/theme/colors.toml ]]; then
|
||||||
|
sed_script=$(mktemp)
|
||||||
|
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
key="${key//[\"\' ]/}"
|
||||||
|
[[ $key && $key != \#* ]] || continue
|
||||||
|
value="${value#*[\"\']}"
|
||||||
|
value="${value%%[\"\']*}"
|
||||||
|
|
||||||
|
printf 's|{{ %s }}|%s|g\n' "$key" "$value"
|
||||||
|
printf 's|{{ %s_strip }}|%s|g\n' "$key" "${value#\#}"
|
||||||
|
done <~/.config/omarchy/current/theme/colors.toml >"$sed_script"
|
||||||
|
|
||||||
|
sed -f "$sed_script" "$OMARCHY_PATH/default/themed/foot.ini.tpl" >~/.config/omarchy/current/theme/foot.ini
|
||||||
|
rm "$sed_script"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-cmd-present foot; then
|
||||||
|
mkdir -p ~/.local/share/applications
|
||||||
|
rm -f ~/.local/share/applications/org.codeberg.dnkl.foot.desktop
|
||||||
|
cp -Rpf "$OMARCHY_PATH/applications/foot.desktop" ~/.local/share/applications/
|
||||||
|
cp -Rpf "$OMARCHY_PATH/applications/footclient.desktop" ~/.local/share/applications/
|
||||||
|
cp -Rpf "$OMARCHY_PATH/applications/foot-server.desktop" ~/.local/share/applications/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/hypr/input.conf ]]; then
|
||||||
|
sed -Ei 's/match:class \(Alacritty\|kitty\)/match:class (Alacritty|kitty|foot)/' ~/.config/hypr/input.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/hypr/apps/terminals.conf ]]; then
|
||||||
|
sed -Ei 's/match:class \(Alacritty\|kitty\|com\.mitchellh\.ghostty\)/match:class (Alacritty|kitty|com.mitchellh.ghostty|foot)/' ~/.config/hypr/apps/terminals.conf
|
||||||
|
fi
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
echo "Install sof-firmware on Intel Panther Lake to restore DSP audio"
|
||||||
|
|
||||||
|
# linux-ptl hard-depped sof-firmware, mainline linux only optdeps it, so the
|
||||||
|
# orphan sweep after migration 1777572869 removed it. Force explicit so a
|
||||||
|
# subsequent orphan sweep in the same update cycle cannot take it again.
|
||||||
|
|
||||||
|
if omarchy-hw-intel-ptl && ! omarchy-hw-match "XPS"; then
|
||||||
|
omarchy-pkg-add sof-firmware
|
||||||
|
sudo pacman -D --asexplicit sof-firmware >/dev/null
|
||||||
|
omarchy-state set reboot-required
|
||||||
|
fi
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
echo "Enable extended keyboard support in tmux"
|
||||||
|
|
||||||
|
tmux_config="$HOME/.config/tmux/tmux.conf"
|
||||||
|
|
||||||
|
if [[ -f $tmux_config ]] && ! grep -qxF "set -g extended-keys on" "$tmux_config"; then
|
||||||
|
sed -i '/^set -g detach-on-destroy off$/a set -g extended-keys on\nset -g extended-keys-format csi-u\nset -sg escape-time 10' "$tmux_config"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
echo "Use omarchy-system-lock and omarchy-system-wake in hypridle"
|
||||||
|
|
||||||
|
omarchy-refresh-hypridle
|
||||||
@@ -7,7 +7,7 @@ return {
|
|||||||
{
|
{
|
||||||
"LazyVim/LazyVim",
|
"LazyVim/LazyVim",
|
||||||
opts = {
|
opts = {
|
||||||
colorscheme = "catppuccin",
|
colorscheme = "catppuccin-nvim",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user