6 Commits

28 changed files with 149 additions and 67 deletions

View File

@@ -18,18 +18,14 @@ windowrule = size 90% 80%, class:^(com.ghostty.weather)$
# Force windows to be a floating window
windowrule = tag +floating-window, class:^(blueberry.py|org.gnome.Nautilus|com.ghostty.float)$
windowrule = tag +floating-window, class:^(com.ghostty.windowctl)$
windowrule = tag +floating-window, class:^(com.ghostty.utils-launcher)$
# Force to stay focused when visible.
windowrule = stayfocused, class:(blueberry.py)
windowrule = stayfocused, class:Pinentry.gtk
windowrule = stayfocused, class:com.ghostty.float
windowrule = stayfocused, class:com.ghostty.windowctl
# Utils-Launcher
windowrule = stayfocused, class:^(com.ghostty.utils-launcher)$
windowrule = float, class:^(com.ghostty.utils-launcher)$
windowrule = center, class:^(com.ghostty.utils-launcher)$
windowrule = size 80% 80%, class:^(com.ghostty.utils-launcher)$
# Clipboard history tui in floating window.
windowrule = tag +floating-window, class:.*clipse.*

View File

@@ -14,6 +14,11 @@
"description": "Clear the clipboard history file.",
"exec": "$SCRIPTS/hypr/clear-clipboard-history --notify-complete"
},
{
"name": "Logs - view logs",
"description": "View logs generated by our custom commands.",
"exec": "$SCRIPTS/hypr/utils/logs/logs-picker"
},
{
"name": "Monitors - stats / picker",
"description": "View information from hyprctl about currently connected monitors.",

View File

@@ -16,13 +16,13 @@ anchor_right = true
[placeholders]
"default" = { input = "Search", list = "No Results" } # placeholders for input and empty list, key is the providers name, so f.e. "desktopapplications" or "menus:other"
[keybinds]
close = "Escape"
next = "Down"
previous = "Up"
toggle_exact = "ctrl e"
resume_last_query = "ctrl r"
quick_activate = ["F1", "F2", "F3", "F4"]
# [keybinds]
# close = "Escape"
# next = "Down"
# previous = "Up"
# toggle_exact = "ctrl e"
# resume_last_query = "ctrl r"
# quick_activate = ["F1", "F2", "F3", "F4"]
[providers]
default = [

View File

@@ -237,7 +237,7 @@ EOF
# Setup logging file and label
source "$SCRIPTS/hypr/logging"
setup-logging "/tmp/$THIS.log" "$THIS"
setup-logging "$THIS.log" "$THIS"
export LOG_ENABLE_DRY_RUN="$dry_run"
if [[ -z "$XDG_DATA_HOME" ]]; then

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=$(basename "$THIS_FILE")
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF

View File

@@ -5,7 +5,7 @@ SCRIPTS="${SCRIPTS:-$HOME/.local/scripts}"
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=$(basename "$THIS_FILE")
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF

View File

@@ -31,7 +31,7 @@ set -e
set -o nounset
set -o pipefail
LOG_FILE=${LOG_FILE:-""}
LOG_DIR=${LOG_DIR:-/tmp/logs}
LOG_INVOCATION_ID=${LOG_INVOCATION_ID:-""}
LOG_LABEL=${LOG_LABEL:-""}
# Run in dry run mode, which just prints to the console and does
@@ -57,11 +57,14 @@ __msg() {
}
__ensure_setup() {
if [[ -z $LOG_FILE ]] || [[ -z $LOG_INVOCATION_ID ]] || [[ -z $LOG_LABEL ]]; then
if [[ -z $LOG_FILE ]] || [[ -z $LOG_INVOCATION_ID ]] || [[ -z $LOG_LABEL ]] || [[ -z $LOG_DIR ]]; then
echo -e "\e[31m[ERROR]:\e[0m Logging is not properly setup."
echo "Perhaps you didn't call 'setup-logging' first."
print_logger_env && exit 1
fi
if [[ ! -d $LOG_DIR ]]; then
mkdir -p "$LOG_DIR"
fi
}
logging() {
@@ -107,7 +110,7 @@ logging() {
if [[ $LOG_ENABLE_DRY_RUN == "0" ]]; then
# Loop over log files logging message to each file.
for i in "${!LOG_FILE[@]}"; do
local file=${LOG_FILE[i]}
local file=${LOG_DIR}/${LOG_FILE[i]}
local id=$LOG_INVOCATION_ID
local label=${LOG_LABEL[i]:-"$LOG_LABEL"}
local time=$(date '+%D %H:%M:%S')
@@ -166,6 +169,7 @@ setup-logging() {
LOG_LABEL+=("$label")
fi
export LOG_DIR
export LOG_FILE
export LOG_LABEL
export LOG_INVOCATION_ID

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
window_class="com.ghostty.$THIS"
window_padding_x="10"

View File

@@ -50,7 +50,7 @@ log() {
############################## MAIN ##############################
source "$SCRIPTS/hypr/logging"
setup-logging "/tmp/$THIS.log" "$THIS"
setup-logging "$THIS.log" "$THIS"
if [[ -z $XDG_DATA_HOME ]]; then
log "xdg data home is not set"

View File

@@ -8,7 +8,7 @@ FZF_DEFAULT_OPTS=${FZF_DEFAULT_OPTS:-""}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename $THIS_FILE)
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-/tmp/$LOG_LABEL.log}
LOG_FILE=${LOG_FILE:-$LOG_LABEL.log}
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
@@ -118,7 +118,8 @@ sel=$(
printf "%s\n" "${rows[@]}" |
fzf --style=full --footer="$(footer)" --with-nth=2 --delimiter='|' \
--preview-label='[ Command ]' \
--preview="$SCRIPTS/hypr/utils/fzf/preview-stats utils {2} $config_file"
--preview="$SCRIPTS/hypr/utils/fzf/preview-stats utils {2} $config_file" \
--preview-window='down,30%'
)
log "Selection: $sel"

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename $THIS_FILE)
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-/tmp/$LOG_LABEL.log}
LOG_FILE=${LOG_FILE:-$LOG_LABEL.log}
usage() {
cat <<EOF

View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
set -e
set -o nounset
set -o pipefail
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_DIR=${LOG_DIR:=""}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
FZF_DEFAULT_OPTS=${FZF_DEFAULT_OPTS:-""}
# Logging utility function, use in place of echo.
log() {
logging log --source "$THIS_FILE" "$@"
}
footer() {
cat <<'EOF'
__
/ / ___ ___ ____
/ /__/ _ \/ _ `(_-<
/____/\___/\_, /___/
/___/
EOF
}
################################################################################
# MAIN
################################################################################
# Setup logging file and label.
source "$SCRIPTS/hypr/logging"
setup-logging "$LOG_FILE" "$LOG_LABEL"
if [[ -z $LOG_DIR ]]; then
echo "Log directory not setup properly!" && exit 1
fi
# Setup colors before calling fzf.
[[ -z $FZF_DEFAULT_OPTS ]] &&
[[ -f $SCRIPTS/catppuccin-colors ]] &&
source $SCRIPTS/catppuccin-colors
sel=$(
/bin/ls $LOG_DIR/*.log |
sed 's#.*/##; s/\..*$//' | # cleans to only show file name, excluding the path and '.log'
fzf --style=full \
--footer="$(footer)" \
--preview-label='[ Logs ]' \
--preview='echo ""; bat $LOG_DIR/{}.log' \
--preview-window="down"
)
if [[ -z $sel ]]; then
log --error "No selection" && exit 1
fi
bat $sel.log

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
FZF_DEFAULT_OPTS=${FZF_DEFAULT_OPTS:-""}
usage() {

View File

@@ -10,7 +10,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF

View File

@@ -8,7 +8,7 @@ THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
# Allows script name to be set when called from a parent script or defaults to filename.
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-/tmp/$LOG_LABEL.log}
LOG_FILE=${LOG_FILE:-$LOG_LABEL.log}
usage() {
cat <<EOF

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF

View File

@@ -7,7 +7,7 @@ set -o pipefail
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
THIS=${THIS:-$LOG_LABEL}
FZF_DEFAULT_OPTS=${FZF_DEFAULT_OPTS:-""}

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename $THIS_FILE)
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-/tmp/$LOG_LABEL.log}
LOG_FILE=${LOG_FILE:-$LOG_LABEL.log}
uses_supplied_footer="0"
fzf_opts=()
@@ -61,6 +61,9 @@ generate_rows() {
for address in $addresses; do
title=$(hyprctl clients -j | jq -r ".[] | select(.address == \"$address\") | .title")
# Replace in occurrences of what we use as delimiter in the title, so they're presented
# correctly.
title=${title//|/-}
rows+=("$address|$title")
done
}

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
address=""
width=""

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF

View File

@@ -3,7 +3,7 @@
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename $THIS_FILE)
LOG_FILE=${LOG_FILE:-/tmp/$LOG_LABEL.log}
LOG_FILE=${LOG_FILE:-$LOG_LABEL.log}
THIS=${THIS:-$LOG_LABEL}
usage() {

View File

@@ -8,9 +8,12 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
FZF_DEFAULT_OPTS=${FZF_DEFAULT_OPTS:-""}
return_name_if_special_flag="0"
return_name_flag="0"
usage() {
cat <<EOF
@@ -59,13 +62,10 @@ prompt_for_selection() {
local rows=()
local fzf_opts=$1
local sel=""
local workspaces=$(hyprctl workspaces -j | jq 'sort_by(.id)')
readarray -t names <<<"$(echo "$workspaces" | jq -r '.[] | .name')"
readarray -t ids <<<"$(echo "$workspaces" | jq -r '.[] | .id')"
for i in "${!names[@]}"; do
rows+=("${ids[i]}|${names[i]}")
for id in $(hyprctl workspaces -j | jq 'sort_by(.id)' | jq 'reverse' | jq -r '.[] | .id'); do
name=$(hyprctl workspaces -j | jq -r ".[] | select(.id == $id) | .name")
rows+=("$id|$name")
done
log "Showing workspace picker / stats..."
@@ -80,6 +80,26 @@ prompt_for_selection() {
echo "$sel"
}
parse_return_val() {
local sel=""
read -r sel
if [[ -z $sel ]]; then
log --error "Selection was empty." && exit 1
fi
local name=${sel##*\|}
local id=${sel%%\|*}
if [[ $return_name_flag == "1" ]] ||
([[ $return_name_if_special_flag == "1" ]] && [[ $name =~ ^special ]]); then
# Return only the name portion of the selection.
echo "$name"
else
# Return only the id portion of the selection.
echo "$id"
fi
}
################################################################################
# MAIN
################################################################################
@@ -88,8 +108,6 @@ prompt_for_selection() {
source "$SCRIPTS/hypr/logging"
setup-logging "$LOG_FILE" "$LOG_LABEL"
return_name_if_special_flag="0"
return_name_flag="0"
uses_supplied_footer="0"
fzf_opts=()
@@ -118,13 +136,4 @@ if [[ $uses_supplied_footer == "0" ]]; then
fzf_opts+=("--footer=$(footer)")
fi
sel=$(prompt_for_selection "${fzf_opts[@]}")
name=${sel##*\|}
id=${sel%%\|*}
if [[ $return_name_flag == "1" ]] ||
([[ $return_name_if_special_flag == "1" ]] && [[ $name =~ ^special ]]); then
echo "$name" && exit 0
fi
echo "$id"
prompt_for_selection "${fzf_opts[@]}" | parse_return_val

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF
@@ -39,15 +39,15 @@ hypr_dispatch() {
################################################################################
# Setup logging file and label.
# source "$SCRIPTS/hypr/logging"
# setup-logging "$LOG_FILE" "$LOG_LABEL"
#
# while [[ $# -gt 0 ]]; do
# if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
# usage && exit 0
# fi
# shift
# done
source "$SCRIPTS/hypr/logging"
setup-logging "$LOG_FILE" "$LOG_LABEL"
while [[ $# -gt 0 ]]; do
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
usage && exit 0
fi
shift
done
# Workspace to hide everything in
HIDE_WS="special:hidden"
@@ -62,14 +62,14 @@ CUR_WS=$(hyprctl -j activeworkspace | jq -r '.id')
if [[ -f "$STATE_FILE" ]]; then
# Restore windows
ORIG_WS=$(cat "$STATE_FILE")
# log "Restoring windows to: '$ORIG_WS'"
log "Restoring windows to: '$ORIG_WS'"
for win in $(hyprctl -j clients | jq -r ".[] | select(.workspace.name | contains(\"$HIDE_WS\")) | .address"); do
hyprctl dispatch movetoworkspace "$ORIG_WS,address:$win"
hyprctl dispatch workspace "$ORIG_WS"
done
rm "$STATE_FILE"
else
# log "Hiding windows from: '$CUR_WS'"
log "Hiding windows from: '$CUR_WS'"
# Hide all windows (move to special hidden workspace)
for win in $(hyprctl -j clients | jq -r ".[] | select(.workspace.id == $CUR_WS) | .address"); do
hyprctl dispatch movetoworkspace "$HIDE_WS,address:$win"

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
PARENT_COMMAND=${THIS// launch/}
if [[ -z PARENT_COMMAND ]]; then
PARENT_COMMAND="workspacectl"

View File

@@ -8,7 +8,7 @@ THIS_FILE=${BASH_SOURCE[0]}
THIS=$(basename $THIS_FILE)
LOG_LABEL=$(basename $THIS_FILE)
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF

View File

@@ -8,7 +8,7 @@ SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename "$THIS_FILE")
THIS=${THIS:-$LOG_LABEL}
LOG_FILE=${LOG_FILE:-"/tmp/$LOG_LABEL.log"}
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
usage() {
cat <<EOF
@@ -55,7 +55,6 @@ while [[ $# -gt 0 ]]; do
shift
THIS="$THIS picker" "$SCRIPTS/hypr/utils/workspaces/workspace-picker" "$@"
exit $?
elif [[ $1 == "switch" ]]; then
shift
THIS="$THIS switch" "$SCRIPTS/hypr/utils/workspaces/switch-to-workspace" "$@"

View File

@@ -10,6 +10,7 @@ fi
# Packages
yay -S --noconfirm --needed \
bat \
eza \
fastfetch \
fzf \

3
runs/localsend Executable file
View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
yay ${1:-"-S --noconfirm"} localsend-bin