diff --git a/configs/nvim/lua/configs/lsp.lua b/configs/nvim/lua/configs/lsp.lua
index 042d660..a9e713f 100644
--- a/configs/nvim/lua/configs/lsp.lua
+++ b/configs/nvim/lua/configs/lsp.lua
@@ -62,6 +62,10 @@ lsp.jsonls.setup {
}
}
+lsp.svelte.setup {}
+
+lsp.tsserver.setup {}
+
lsp.ltex.setup {
cmd = { os.getenv("HOME") .. '/.local/share/nvim/lsp_servers/ltex/ltex-ls/bin/ltex-ls' },
settings = {
diff --git a/configs/rofi/rofi-audio-menu b/configs/rofi/rofi-audio-menu
deleted file mode 100755
index 9d1b9fe..0000000
--- a/configs/rofi/rofi-audio-menu
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-
-set -e
-
-# FEATURES
-# - Doesn't show the sink that is already the default
-# - Automatically switches all running input sinks when switching the default sink
-
-# Get the current default sink
-SINK_DEFAULT=$(pactl info | ag "Default Sink" | ag -o "(?!.*:)[^\s].*")
-# Get the audio sink names
-SINK_NAMES=$(pactl list sinks | ag Name | cut --complement -c 1-7)
-
-# Get the index of the default sink
-DEFAULT_INDEX=$(printf "%s" "$SINK_NAMES" | ag --number "$SINK_DEFAULT" | sed 's/:.*//' )
-
-# Get the audio sink descriptions
-SINK_DESCRIPTIONS=$(pactl list sinks | ag Description | cut --complement -c 1-13 | sed 's/^ \+//' | sed 's/ \+$//')
-# Get all the programs that revieve the audio from the sinks
-SINK_INPUTS=$(pactl list sink-inputs | ag "Sink Input #")
-
-# Get the descriptions from the sinks without the default sink to display to the user and have the user pick a sink
-SINK_DESCRIPTION=$(printf "%s" "$SINK_DESCRIPTIONS" | sed "${DEFAULT_INDEX}d" | dmenu -i -fn "Roboto Mono for Powerline-11" -p "Select sink:")
-SINK_DESCRIPTION=$(printf "%s" "$SINK_DESCRIPTION" | sed 's/(/\\(/' | sed 's/)/\\)/')
-
-# Get the index for the answer that the user wrote
-DESCRIPTION_INDEX=$(printf "%s\n" "$SINK_DESCRIPTIONS" | ag --number "$SINK_DESCRIPTION" | sed 's/:.*//')
-DESCRIPTION_INDEX=$((DESCRIPTION_INDEX - 1)) # Correct the index hihi
-
-# Set the default sink
-pactl set-default-sink $DESCRIPTION_INDEX
-
-# Change all the ouputs for the programs that are using the default sink
-printf "%s\n" "$SINK_INPUTS" | while read -r SINK_INPUT
-do
- # Get the index for the program
- SINK_INPUT_INDEX=$(printf "%s" "$SINK_INPUT" | ag -o "(?!Sink Input#)[0-9]+")
- pactl move-sink-input "$SINK_INPUT_INDEX" "$DESCRIPTION_INDEX"
-done
diff --git a/configs/rofi/rofi-power-menu b/configs/rofi/rofi-power-menu
deleted file mode 100755
index 0d08c82..0000000
--- a/configs/rofi/rofi-power-menu
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/usr/bin/env bash
-
-# This script defines just a mode for rofi instead of being a self-contained
-# executable that launches rofi by itself. This makes it more flexible than
-# running rofi inside this script as now the user can call rofi as one pleases.
-# For instance:
-#
-# rofi -show powermenu -modi powermenu:./rofi-power-menu
-#
-# See README.md for more information.
-
-set -e
-set -u
-
-# All supported choices
-all=(shutdown reboot suspend hibernate logout lockscreen)
-
-# By default, show all (i.e., just copy the array)
-show=("${all[@]}")
-
-declare -A texts
-texts[lockscreen]="lock screen"
-texts[switchuser]="switch user"
-texts[logout]="log out"
-texts[suspend]="suspend"
-texts[hibernate]="hibernate"
-texts[reboot]="reboot"
-texts[shutdown]="shut down"
-
-declare -A icons
-icons[lockscreen]="\uf023"
-icons[switchuser]="\uf518"
-icons[logout]="\uf842"
-icons[suspend]="\uf9b1"
-icons[hibernate]="\uf7c9"
-icons[reboot]="\ufc07"
-icons[shutdown]="\uf011"
-icons[cancel]="\u00d7"
-
-declare -A actions
-actions[lockscreen]="loginctl lock-session ${XDG_SESSION_ID-}"
-#actions[switchuser]="???"
-actions[logout]="loginctl terminate-session ${XDG_SESSION_ID-}"
-actions[suspend]="systemctl suspend"
-actions[hibernate]="systemctl hibernate"
-actions[reboot]="systemctl reboot"
-actions[shutdown]="systemctl poweroff"
-
-# By default, ask for confirmation for actions that are irreversible
-confirmations=(reboot shutdown logout)
-
-# By default, no dry run
-dryrun=false
-showsymbols=true
-
-function check_valid {
- option="$1"
- shift 1
- for entry in "${@}"
- do
- if [ -z "${actions[$entry]+x}" ]
- then
- echo "Invalid choice in $1: $entry" >&2
- exit 1
- fi
- done
-}
-
-# Parse command-line options
-parsed=$(getopt --options=h --longoptions=help,dry-run,confirm:,choices:,choose:,symbols,no-symbols --name "$0" -- "$@")
-if [ $? -ne 0 ]; then
- echo 'Terminating...' >&2
- exit 1
-fi
-eval set -- "$parsed"
-unset parsed
-while true; do
- case "$1" in
- "-h"|"--help")
- echo "rofi-power-menu - a power menu mode for Rofi"
- echo
- echo "Usage: rofi-power-menu [--choices CHOICES] [--confirm CHOICES]"
- echo " [--choose CHOICE] [--dry-run] [--symbols|--no-symbols]"
- echo
- echo "Use with Rofi in script mode. For instance, to ask for shutdown or reboot:"
- echo
- echo " rofi -show menu -modi \"menu:rofi-power-menu --choices=shutdown/reboot\""
- echo
- echo "Available options:"
- echo " --dry-run Don't perform the selected action but print it to stderr."
- echo " --choices CHOICES Show only the selected choices in the given order. Use / "
- echo " as the separator. Available choices are lockscreen, logout,"
- echo " suspend, hibernate, reboot and shutdown. By default, all"
- echo " available choices are shown."
- echo " --confirm CHOICES Require confirmation for the gives choices only. Use / as"
- echo " the separator. Available choices are lockscreen, logout,"
- echo " suspend, hibernate, reboot and shutdown. By default, only"
- echo " irreversible actions logout, reboot and shutdown require"
- echo " confirmation."
- echo " --choose CHOICE Preselect the given choice and only ask for a confirmation"
- echo " (if confirmation is set to be requested). It is strongly"
- echo " recommended to combine this option with --confirm=CHOICE"
- echo " if the choice wouldn't require confirmation by default."
- echo " Available choices are lockscreen, logout, suspend,"
- echo " hibernate, reboot and shutdown."
- echo " --[no-]symbols Show Unicode symbols or not. Requires a font with support"
- echo " for the symbols. Use, for instance, fonts from the"
- echo " Nerdfonts collection. By default, they are shown"
- echo " -h,--help Show this help text."
- exit 0
- ;;
- "--dry-run")
- dryrun=true
- shift 1
- ;;
- "--confirm")
- IFS='/' read -ra confirmations <<< "$2"
- check_valid "$1" "${confirmations[@]}"
- shift 2
- ;;
- "--choices")
- IFS='/' read -ra show <<< "$2"
- check_valid "$1" "${show[@]}"
- shift 2
- ;;
- "--choose")
- # Check that the choice is valid
- check_valid "$1" "$2"
- selectionID="$2"
- shift 2
- ;;
- "--symbols")
- showsymbols=true
- shift 1
- ;;
- "--no-symbols")
- showsymbols=false
- shift 1
- ;;
- "--")
- shift
- break
- ;;
- *)
- echo "Internal error" >&2
- exit 1
- ;;
- esac
-done
-
-# Define the messages after parsing the CLI options so that it is possible to
-# configure them in the future.
-
-function write_message {
- icon="$1"
- text="$2"
- if [ "$showsymbols" = "true" ]
- then
- echo -n "\u200e$icon \u2068$text\u2069"
- else
- echo -n "$text"
- fi
-}
-
-function print_selection {
- echo -e "$1" | $(read -r -d '' entry; echo "echo $entry")
-}
-
-declare -A messages
-declare -A confirmationMessages
-for entry in "${all[@]}"
-do
- messages[$entry]=$(write_message "${icons[$entry]}" "${texts[$entry]^}")
-done
-for entry in "${all[@]}"
-do
- confirmationMessages[$entry]=$(write_message "${icons[$entry]}" "Yes, ${texts[$entry]}")
-done
-confirmationMessages[cancel]=$(write_message "${icons[cancel]}" "No, cancel")
-
-if [ $# -gt 0 ]
-then
- # If arguments given, use those as the selection
- selection="${@}"
-else
- # Otherwise, use the CLI passed choice if given
- if [ -n "${selectionID+x}" ]
- then
- selection="${messages[$selectionID]}"
- fi
-fi
-
-# Don't allow custom entries
-echo -e "\0no-custom\x1ftrue"
-# Use markup
-echo -e "\0markup-rows\x1ftrue"
-
-if [ -z "${selection+x}" ]
-then
- echo -e "\0prompt\x1fPower menu"
- for entry in "${show[@]}"
- do
- echo -e "${messages[$entry]}\0icon\x1f${icons[$entry]}"
- done
-else
- for entry in "${show[@]}"
- do
- if [ "$selection" = "$(print_selection "${messages[$entry]}")" ]
- then
- # Check if the selected entry is listed in confirmation requirements
- for confirmation in "${confirmations[@]}"
- do
- if [ "$entry" = "$confirmation" ]
- then
- # Ask for confirmation
- echo -e "\0prompt\x1fAre you sure"
- echo -e "${confirmationMessages[$entry]}\0icon\x1f${icons[$entry]}"
- echo -e "${confirmationMessages[cancel]}\0icon\x1f${icons[cancel]}"
- exit 0
- fi
- done
- # If not, then no confirmation is required, so mark confirmed
- selection=$(print_selection "${confirmationMessages[$entry]}")
- fi
- if [ "$selection" = "$(print_selection "${confirmationMessages[$entry]}")" ]
- then
- if [ $dryrun = true ]
- then
- # Tell what would have been done
- echo "Selected: $entry" >&2
- else
- # Perform the action
- ${actions[$entry]}
- fi
- exit 0
- fi
- if [ "$selection" = "$(print_selection "${confirmationMessages[cancel]}")" ]
- then
- # Do nothing
- exit 0
- fi
- done
- # The selection didn't match anything, so raise an error
- echo "Invalid selection: $selection" >&2
- exit 1
-fi
diff --git a/configs/sway/config b/configs/sway/config
index 74a50d4..8099b27 100644
--- a/configs/sway/config
+++ b/configs/sway/config
@@ -20,12 +20,11 @@ set $up k
set $right l
# Some menus
-set $wofi_scripts ~/.config/wofi
set $quickmenu wofi --show drun
# Screenshot section
set $screenshot_dir ~/Pictures/Screenshots/
-set $grimshot ~/.config/sway/grimshot.sh
+set $grimshot $sway_scripts/grimshot
set $screenclip wl-copy < "$($grimshot --notify save area $screenshot_dir/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png)"
set $screenshot wl-copy < "$($grimshot --notify save screen $screenshot_dir/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png)"
set $windowshot wl-copy < "$($grimshot --notify save window $screenshot_dir/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png)"
@@ -41,20 +40,23 @@ set $bluetooth_mngr blueman-manager
set $calculator flatpak run io.github.Qalculate
set $photo_editor gtk-launch ~/.local/share/applications/photopea.desktop
set $translator com.github.gi_lom.dialect
+set $settings gnome-control-center
# Scripts
-set $config_editor ~/.config/sway/config_editor.sh
-set $debug_window ~/.config/sway/debug_window.sh
-set $settings gnome-control-center
-set $toggle_layout ~/.config/sway/toggle_layout.sh
-set $create_floating ~/.config/sway/create_floating.sh
-set $toggle_gaps ~/.config/sway/toggle_gaps.sh
-set $toggle_bar ~/.config/sway/toggle_bar.sh
-set $web_search $wofi_scripts/web-search.sh
-set $select_window ~/.config/sway/select_window.sh
-set $lock_screen ~/.config/sway/lock_screen.sh
-set $select_emoji $wofi_scripts/wofi-emoji
+
+set $wofi_scripts ~/.config/wofi/scripts/
+set $sway_scripts ~/.config/sway/scripts/
+
+set $debug_window $sway_scripts/debug-window
+set $toggle_layout $sway_scripts/toggle-layout
+set $create_floating $sway_scripts/create-floating
+set $toggle_gaps $sway_scripts/toggle-gaps
+set $toggle_bar $sway_scripts/toggle-bar
+set $select_window $sway_scripts/select-window
+set $lock_screen $sway_scripts/lock-screen
+set $select_emoji $wofi_scripts/select-emoji
set $open_localhost $wofi_scripts/open-localhost
+set $select_wifi $wofi_scripts/select-wifi
# Input configuration
input * {
@@ -76,7 +78,7 @@ output * bg `find $wallpapers_path -type f | shuf -n 1` fill
#
# Example configuration:
#
-# output HDMI-A-1 resolution 1920x1080 position 1920,0
+# output eDP-1 resolution 1920x1080
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
@@ -89,8 +91,7 @@ exec swayidle -w \
timeout 600 'swaymsg "output * dpms off"' \
timeout 660 'systemctl suspend' \
resume 'swaymsg "output * dpms on"' \
- before-sleep '~/.config/sway/lock_screen.sh'
-
+ before-sleep $lock_screen
#
# This will lock your screen after 300 seconds of inactivity, then turn off
@@ -118,12 +119,13 @@ input "1739:24385:Synaptics_TM2438-005" {
bindsym $mod+d exec $quickmenu
bindsym $mod+t exec $translator
bindsym $mod+q kill
- bindsym $mod+Shift+q exec $wofi_scripts/wofi-power-menu.sh
+ bindsym $mod+Shift+q exec $wofi_scripts/power-menu
bindsym $mod+Return exec $term
bindsym $mod+Shift+Return exec $create_floating $term
bindsym $mod+e exec $explorer
bindsym $mod+Comma exec $settings
bindsym $mod+b exec $browser
+ bindsym $mod+Shift+w exec $select_wifi
bindsym $mod+Shift+b exec $bluetooth_mngr
bindsym $mod+Shift+Comma exec $config_editor
bindsym $mod+a exec $web_search
@@ -136,20 +138,20 @@ input "1739:24385:Synaptics_TM2438-005" {
# Reload the configuration file
bindsym $mod+Shift+c reload
- # Multimedia Audio Keys
+ # Multimedia Audio Keys
bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym --locked XF86AudioNext exec playerctl next
bindsym --locked XF86AudioPrev exec playerctl previous
bindsym --locked XF86AudioPlay exec playerctl play-pause
- bindsym --locked XF86AudioLowerVolume exec "pactl -- set-sink-volume @DEFAULT_SINK@ -10%"
- bindsym --locked XF86AudioRaiseVolume exec "pactl -- set-sink-volume @DEFAULT_SINK@ +10%"
+ bindsym --locked XF86AudioLowerVolume exec "pactl -- set-sink-volume @DEFAULT_SINK@ -10%"
+ bindsym --locked XF86AudioRaiseVolume exec "pactl -- set-sink-volume @DEFAULT_SINK@ +10%"
- #Increase brightness
- bindsym XF86MonBrightnessUp exec brightnessctl -d intel_backlight set +20
- bindsym XF86MonBrightnessDown exec brightnessctl -d intel_backlight set 20-
+ #Increase brightness
+ bindsym XF86MonBrightnessUp exec brightnessctl -d intel_backlight set +20
+ bindsym XF86MonBrightnessDown exec brightnessctl -d intel_backlight set 20-
- # Exit sway (logs you out of your Wayland session)
- bindsym $mod+Shift+e exec swaynag -t warning -m 'Do you really want to exit your Wayland session?' -B 'Yes, exit sway' 'swaymsg exit'
+ # Exit sway (logs you out of your Wayland session)
+ bindsym $mod+Shift+e exec swaynag -t warning -m 'Do you really want to exit your Wayland session?' -B 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
@@ -187,7 +189,6 @@ input "1739:24385:Synaptics_TM2438-005" {
for_window [title="Zoom Meeting.*"] inhibit_idle visible
for_window [app_id="firefox" title="^Picture-in-Picture$"] floating enable, move position 1300 600, sticky enable, resize set 600 450
-
set $ws1 "1: Code"
assign [app_id="Alacritty"] $ws1
assign [app_id="Kitty"] $ws1
@@ -198,11 +199,11 @@ input "1739:24385:Synaptics_TM2438-005" {
assign [app_id="google-chrome-beta"] $ws2
assign [class="Google-chrome"] $ws2
assign [app_id="google-chrome"] $ws2
- set $ws3 "3: Music"
- assign [class="Spotify"] $ws3
- assign [class="spotify"] $ws3
- assign [app_id="dev.alextren.Spot"] $ws3
- set $ws4 "4: Chat"
+ set $ws3 "3: Music"
+ assign [class="Spotify"] $ws3
+ assign [class="spotify"] $ws3
+ assign [app_id="dev.alextren.Spot"] $ws3
+ set $ws4 "4: Chat"
# Switch to workspace
bindsym $mod+1 workspace $ws1
@@ -258,8 +259,8 @@ input "1739:24385:Synaptics_TM2438-005" {
# bindsym $mod+a focus parent
# Screenshots
- # -- Entire Screen
- bindsym $mod+s exec $screenshot
+ # -- Entire Screen
+ bindsym $mod+s exec $screenshot
# -- Area Screenshot
bindsym $mod+Shift+s exec $screenclip
# -- Select Window
@@ -268,9 +269,9 @@ input "1739:24385:Synaptics_TM2438-005" {
bindsym $mod+i exec $select_emoji
bindsym $mod+Shift+i exec $debug_window
bindsym $mod+o exec $open_localhost
- bindsym $mod+Control+l exec $lock_screen
- bindsym $mod+c exec $calculator
- bindsym Alt+Tab exec $select_window
+ bindsym $mod+Control+l exec $lock_screen
+ bindsym $mod+c exec $calculator
+ bindsym $mod+Tab exec $select_window
bindsym $mod+m exec $mail
#
# Scratchpad:
@@ -315,8 +316,6 @@ mode "resize" {
}
bindsym $mod+r mode "resize"
-# Do we need that?
-
# Handles notifications
exec_always mako
# Start Audio
@@ -331,13 +330,11 @@ exec wl-paste -t text --watch clipman store --no-persist
#
# Status Bar:
#
-# Read `man 5 sway-bar` for more information about this section.
bar {
- swaybar_command waybar
- mode dock
- position top
+ swaybar_command waybar
+ mode dock
+ position top
}
-include @sysconfdir@/sway/config.d/*
exec "systemctl --user import-environment SWAYSOCK XDG_CURRENT_DESKTOP WAYLAND_DISPLAY";
diff --git a/configs/sway/config_editor.sh b/configs/sway/config_editor.sh
deleted file mode 100755
index f1429fc..0000000
--- a/configs/sway/config_editor.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/zsh
-alacritty -e zsh -c "/home/jim/.asdf/shims/nvim ~/.dotfiles"
diff --git a/configs/sway/create_floating.sh b/configs/sway/scripts/create-floating
similarity index 100%
rename from configs/sway/create_floating.sh
rename to configs/sway/scripts/create-floating
diff --git a/configs/sway/debug_window.sh b/configs/sway/scripts/debug-window
similarity index 100%
rename from configs/sway/debug_window.sh
rename to configs/sway/scripts/debug-window
diff --git a/configs/sway/grimshot.sh b/configs/sway/scripts/grimshot
similarity index 100%
rename from configs/sway/grimshot.sh
rename to configs/sway/scripts/grimshot
diff --git a/configs/sway/lock_screen.sh b/configs/sway/scripts/lock-screen
similarity index 100%
rename from configs/sway/lock_screen.sh
rename to configs/sway/scripts/lock-screen
diff --git a/configs/sway/select_window.sh b/configs/sway/scripts/select-window
similarity index 99%
rename from configs/sway/select_window.sh
rename to configs/sway/scripts/select-window
index 7b77d50..1d8cb24 100755
--- a/configs/sway/select_window.sh
+++ b/configs/sway/scripts/select-window
@@ -1,4 +1,3 @@
-
#!/bin/sh
# ------Get available windows:
diff --git a/configs/sway/toggle_bar.sh b/configs/sway/scripts/toggle-bar
similarity index 100%
rename from configs/sway/toggle_bar.sh
rename to configs/sway/scripts/toggle-bar
diff --git a/configs/sway/toggle_gaps.sh b/configs/sway/scripts/toggle-gaps
similarity index 100%
rename from configs/sway/toggle_gaps.sh
rename to configs/sway/scripts/toggle-gaps
diff --git a/configs/sway/toggle_layout.sh b/configs/sway/scripts/toggle-layout
similarity index 100%
rename from configs/sway/toggle_layout.sh
rename to configs/sway/scripts/toggle-layout
diff --git a/configs/waybar/capture_mp3.sh b/configs/waybar/capture_mp3.sh
deleted file mode 100755
index dd486a8..0000000
--- a/configs/waybar/capture_mp3.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-cd "$(dirname "$0")"
-
-arecord -f cd -t raw -d 4 -q | lame -r -q - output.mp3 2>/dev/null
-
-if [ ! -f "./output.mp3" ]; then
- exit 0
-fi
-
-JSON=$(songrec audio-file-to-recognized-song output.mp3)
-
-RETRYMS=$(echo $JSON | jq '.retryms')
-
-if [ $RETRYMS != null ]; then
- echo $(expr $RETRYMS / 1000)
-else
- SONG=$(echo $JSON | tr '\r\n' ' ' | jq '.track.share.subject')
- echo $SONG
- rm -rf output.mp3
-fi
diff --git a/configs/waybar/config b/configs/waybar/config
index f072893..9597fbc 100644
--- a/configs/waybar/config
+++ b/configs/waybar/config
@@ -1,192 +1,109 @@
{
- "height": 20,
- "spacing": 4,
- "bar_id":"bar-0",
- "ipc": true,
- "mode": "hide",
- "hidden_state": "show",
- "modules-left": ["custom/clock", "custom/waybar-mpris"],
- "modules-center": ["sway/workspaces", "sway/mode"],
- "modules-right": ["custom/theme","pulseaudio", "network", "battery"],
- "sway/workspaces": {
- "disable-scroll": true,
- "all-outputs": false,
- "format": "{name}",
- "format-icons": {
- "urgent": "",
- "focused": "",
- "default": ""
- }
- },
- "keyboard-state": {
- "numlock": true,
- "capslock": true,
- "format": "{name} {icon}",
- "format-icons": {
- "locked": "",
- "unlocked": ""
- }
- },
- "custom/theme":{
- "exec": "~/.config/waybar/theme.sh",
- "on-click": "~/.config/waybar/theme.sh --toggle",
- "restart-interval": 1,
- },
- "custom/spotify": {
- "exec": "/usr/bin/python3 /home/jim/.config/waybar/mediaplayer.py --player spotify",
- "format": "{} ",
- "return-type": "json",
- "on-click": "playerctl play-pause",
- "on-scroll-up": "playerctl next",
- "on-scroll-down": "playerctl previous"
- },
- "sway/mode": {
- "format": "{}"
- },
- "mpd": {
- "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
- "format-disconnected": "",
- "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
- "unknown-tag": "N/A",
- "interval": 2,
- "consume-icons": {
- "on": " "
- },
- "random-icons": {
- "off": " ",
- "on": " "
- },
- "repeat-icons": {
- "on": " "
- },
- "single-icons": {
- "on": "1 "
- },
- "state-icons": {
- "paused": "",
- "playing": ""
- },
- "tooltip-format": "MPD (connected)",
- "tooltip-format-disconnected": "MPD (disconnected)"
- },
- "idle_inhibitor": {
- "format": "{icon}",
- "format-icons": {
- "activated": "",
- "deactivated": ""
- }
- },
- "tray": {
- "spacing": 10
- },
- "clock": {
- "interval": 60,
- "format": "{:%H:%M}",
- "max-length": 25
- },
- "custom/clock": {
- "exec": "date +'%H:%M'",
- "interval": 10,
- "on-click": "nm-applet"
- },
- "cpu": {
- "format": "{usage}% ",
- "tooltip": false
- },
- "memory": {
- "format": "{}% "
- },
- "temperature": {
- // "thermal-zone": 2,media
- // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
- "critical-threshold": 80,
- // "format-critical": "{temperatureC}°C {icon}",
- "format": "{temperatureC}°C {icon}",
- "format-icons": ["", "", ""]
- },
- "backlight": {
- // "device": "acpi_video1",
- "format": "{percent}% {icon}",
- "format-icons": ["", ""]
- },
- "battery": {
- "states": {
- "warning": 30,
- "critical": 15
- },
- "format": "{capacity}% {icon}",
- "format-charging": "{capacity}% ",
- "format-plugged": "{capacity}% ",
- "format-alt": "{time} {icon}",
- // "format-good": "", // An empty format will hide the module
- // "format-full": "",
- "format-icons": ["", "", "", "", ""]
- },
- "battery#bat2": {
- "bat": "BAT2"
- },
- "network": {
- // "interface": "wlp2*", // (Optional) To force the use of this interface
- "format-wifi": "{essid} ({signalStrength}%) ",
- "format-ethernet": "{ipaddr}/{cidr} ",
- "tooltip-format": "{ifname} via {gwaddr} ",
- "format-linked": "{ifname} (No IP) ",
- "format-disconnected": "Disconnected ⚠",
- "format-alt": "{ifname}: {ipaddr}/{cidr}"
- },
- "pulseaudio": {
- // "scroll-step": 1, // %, can be a float
- "format": "{volume}% {icon} {format_source}",
- "format-bluetooth": "{volume}% {icon} {format_source}",
- "format-bluetooth-muted": " {icon} {format_source}",
- "format-muted": " {format_source}",
- "format-source": "{volume}% ",
- "format-source-muted": "",
- "format-icons": {
- "headphone": "",
- "hands-free": "",
- "headset": "",
- "phone": "",
- "portable": "",
- "car": "",
- "default": ["", "", ""]
- },
- "on-click": "pavucontrol"
- },
- "custom/cpu_speed": {
- "interval": 10,
- "return-type": "json",
- "exec": "~/.config/waybar/cpu_speed.sh",
- "format": "{icon} {}",
- "format-icons": [""],
- "escape": true,
- "on-click": "kitty -e htop"
-},
-"custom/waybar-mpris": {
+ "height": 20,
+ "spacing": 4,
+ "bar_id": "bar-0",
+ "ipc": true,
+ "mode": "hide",
+ "hidden_state": "show",
+ "modules-left": [
+ "clock",
+ "custom/waybar-mpris"
+ ],
+ "modules-center": [
+ "sway/workspaces",
+ "sway/mode"
+ ],
+ "modules-right": [
+ "custom/dpi",
+ "custom/theme",
+ "pulseaudio",
+ "network",
+ "battery"
+ ],
+ "sway/workspaces": {
+ "disable-scroll": true,
+ "all-outputs": false,
+ "format": "{name}"
+ },
+ "custom/theme": {
+ "exec": "~/.config/waybar/scripts/toggle-theme",
+ "on-click": "~/.config/waybar/scripts/toggle-theme --toggle",
+ "restart-interval": 1
+ },
+ "custom/dpi": {
+ "exec": "~/.config/waybar/scripts/toggle-hdpi",
+ "on-click": "~/.config/waybar/scripts/toggle-hdpi --toggle",
+ "restart-interval": 1
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "clock": {
+ "interval": 60,
+ "format": "{:%H:%M}",
+ "max-length": 25
+ },
+ "battery": {
+ "states": {
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-charging": "{capacity}% ",
+ "format-plugged": "{capacity}% ",
+ "format-alt": "{time} {icon}",
+ "format-icons": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "network": {
+ // "interface": "wlp2*", // (Optional) To force the use of this interface
+ "format-wifi": "{essid} ({signalStrength}%) ",
+ "format-ethernet": "{ipaddr}/{cidr} ",
+ "tooltip-format": "{ifname} via {gwaddr} ",
+ "format-linked": "{ifname} (No IP) ",
+ "format-disconnected": "Disconnected ⚠",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+ "pulseaudio": {
+ "format": "{volume}% {icon} {format_source}",
+ "format-bluetooth": "{volume}% {icon} {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": " {format_source}",
+ "format-source": "{volume}% ",
+ "format-source-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": [
+ "",
+ "",
+ ""
+ ]
+ },
+ "on-click": "pavucontrol"
+ },
+ "custom/waybar-mpris": {
"max-length": 30,
"return-type": "json",
"exec": "waybar-mpris --position --autofocus",
"on-click": "waybar-mpris --send toggle",
// This option will switch between players on right click.
- "on-click-right": "waybar-mpris --send player-next",
+ "on-click-right": "waybar-mpris --send player-next",
// The options below will switch the selected player on scroll
- // "on-scroll-up": "waybar-mpris --send player-next",
- // "on-scroll-down": "waybar-mpris --send player-prev",
+ // "on-scroll-up": "waybar-mpris --send player-next",
+ // "on-scroll-down": "waybar-mpris --send player-prev",
// The options below will go to next/previous track on scroll
- // "on-scroll-up": "waybar-mpris --send next",
- // "on-scroll-down": "waybar-mpris --send prev",
+ // "on-scroll-up": "waybar-mpris --send next",
+ // "on-scroll-down": "waybar-mpris --send prev",
"escape": true
-},
- "custom/media": {
- "format": "{icon} {}",
- "return-type": "json",
- "max-length": 40,
- "format-icons": {
- "spotify": "",
- "default": "🎜"
- },
- "escape": true,
- "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
- }
+ }
}
-
diff --git a/configs/waybar/cpu_speed.sh b/configs/waybar/cpu_speed.sh
deleted file mode 100755
index f22dda0..0000000
--- a/configs/waybar/cpu_speed.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-class=cpu_speed
-speed_mhz=$(lscpu | grep "CPU MHz" | sed --expression "s/CPU MHz:[[:space:]]*//g" | xargs printf "%.*f\n" 0)
-
-
-
-# speed_ghz=`echo $(($speed_mhz / 1000))`
-
-speed_ghz=`bc -l <<< "$speed_mhz / 1000"`
-
-info=$(echo $speed_ghz | xargs printf "%.*f\n" 2)
-
-echo -e "{\"text\":\""$info GHz"\", \"class\":\""$class"\"}"
diff --git a/configs/waybar/dev.sh b/configs/waybar/dev.sh
deleted file mode 100755
index 470a704..0000000
--- a/configs/waybar/dev.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/*.css $HOME/.config/waybar/*.sh"
-
-killall waybar;
-
-trap "killall waybar" EXIT
-
-while true; do
- waybar &
- inotifywait -e create,modify $CONFIG_FILES
- killall waybar
-done
diff --git a/configs/waybar/mediaplayer.py b/configs/waybar/mediaplayer.py
deleted file mode 100755
index 4206759..0000000
--- a/configs/waybar/mediaplayer.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python3
-import argparse
-import logging
-import sys
-import signal
-import gi
-import json
-from os.path import expanduser
-gi.require_version('Playerctl', '2.0')
-from gi.repository import Playerctl, GLib
-
-logger = logging.getLogger(__name__)
-
-
-def write_output(text, player):
- logger.info('Writing output')
-
- output = {'text': text.replace("\n", " ").strip(),
- 'class': 'custom-' + player.props.player_name,
- 'alt': player.props.player_name}
-
- sys.stdout.write(json.dumps(output) + '\n')
- sys.stdout.flush()
-
-
-def on_play(player, _, manager):
- logger.info('Received new playback status')
- on_metadata(player, player.props.metadata, manager)
-
-
-def on_metadata(player, metadata, _):
- logger.info('Received new metadata')
- track_info = ''
-
- if player.props.player_name == 'spotify' and \
- 'mpris:trackid' in metadata.keys() and \
- ':ad:' in player.props.metadata['mpris:trackid']:
- track_info = 'AD PLAYING'
- elif player.get_artist() != '' and player.get_title() != '':
- track_info = '{artist} - {title}'.format(artist=player.get_artist(),
- title=player.get_title())
- else:
- track_info = player.get_title()
-
- if player.props.status != 'Playing' and track_info:
- track_info = ' ' + track_info
- write_output(track_info, player)
-
-
-def on_player_appeared(manager, player, selected_player=None):
- if player is not None and (selected_player is None or player.name == selected_player):
- init_player(manager, player)
- else:
- logger.debug("New player appeared, but it's not the selected player, skipping")
-
-
-def on_player_vanished(manager, player):
- logger.info('Player has vanished')
- sys.stdout.write('\n')
- sys.stdout.flush()
-
-
-def init_player(manager, name):
- logger.debug('Initialize player: {player}'.format(player=name.name))
- player = Playerctl.Player.new_from_name(name)
- player.connect('playback-status', on_play, manager)
- player.connect('metadata', on_metadata, manager)
- manager.manage_player(player)
- on_metadata(player, player.props.metadata, manager)
-
-
-def signal_handler(sig, frame):
- logger.debug('Received signal to stop, exiting')
- sys.stdout.write('\n')
- sys.stdout.flush()
- # loop.quit()
- sys.exit(0)
-
-
-def parse_arguments():
- parser = argparse.ArgumentParser()
-
- # Increase verbosity with every occurrence of -v
- parser.add_argument('-v', '--verbose', action='count', default=0)
-
- # Define for which player we're listening
- parser.add_argument('--player')
-
- return parser.parse_args()
-
-
-def main():
- arguments = parse_arguments()
-
- # Initialize logging
- # LOG=expanduser("~")+"/.dotfiles/configs/waybar/media.log"
- # logging.basicConfig(level=logging.DEBUG, filename=LOG,
- # format='%(name)s %(levelname)s %(message)s')
-
- # Logging is set by default to WARN and higher.
- # With every occurrence of -v it's lowered by one
- logger.setLevel(max((3 - arguments.verbose) * 10, 0))
- logger.setLevel(0)
-
- # Log the sent command line arguments
- logger.debug('Arguments received {}'.format(vars(arguments)))
-
- manager = Playerctl.PlayerManager()
- loop = GLib.MainLoop()
-
- manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player))
- manager.connect('player-vanished', on_player_vanished)
-
- signal.signal(signal.SIGINT, signal_handler)
- signal.signal(signal.SIGTERM, signal_handler)
-
- for player in manager.props.player_names:
- if arguments.player is not None and arguments.player != player.name:
- logger.debug('{player} is not the filtered player, skipping it'
- .format(player=player.name)
- )
- continue
-
- init_player(manager, player)
-
- loop.run()
-
-
-if __name__ == '__main__':
- main()
diff --git a/configs/waybar/mediaplayer_old.py b/configs/waybar/mediaplayer_old.py
deleted file mode 100755
index 53c3748..0000000
--- a/configs/waybar/mediaplayer_old.py
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/env python3
-import argparse
-import logging
-import sys
-import signal
-import time
-import gi
-import json
-gi.require_version('Playerctl', '2.0')
-from gi.repository import Playerctl, GLib
-import subprocess
-from os.path import expanduser
-home = expanduser("~")
-
-logger = logging.getLogger(__name__)
-
-playerVisible = False
-
-def write_output(text, player_name):
- logger.info('Writing output')
-
- output = {'text': text.replace("&", "&"),
- 'class': 'custom-' + player_name,
- 'alt': player_name}
-
- sys.stdout.write(json.dumps(output) + '\n')
- sys.stdout.flush()
-
-
-def on_play(player, status, manager):
- logger.info('Received new playback status')
- on_metadata(player, player.props.metadata, manager)
-
-def on_metadata(player, metadata, manager):
- logger.info('Received new metadata')
- track_info = ''
-
- if player.props.player_name == 'spotify' and \
- 'mpris:trackid' in metadata.keys() and \
- ':ad:' in player.props.metadata['mpris:trackid']:
- track_info = 'AD PLAYING'
- elif player.get_artist() != '' and player.get_title() != '':
- track_info = '{artist} - {title}'.format(artist=player.get_artist(),
- title=player.get_title())
- else:
- track_info = player.get_title()
-
- if player.props.status != 'Playing' and track_info:
- track_info = ' ' + track_info
- write_output(track_info, player.props.player_name)
-
-
-def update_song():
- global playerVisible
- while not playerVisible:
- result = subprocess.run("./capture_mp3.sh",stdout=subprocess.PIPE)
- resultString = result.stdout.decode("utf-8")
- logger.debug(resultString);
- write_output(resultString, "Spotify")
- time.sleep(6)
-
-def on_player_appeared(manager, player, selected_player=None):
- global playerVisible
- if player is not None and (selected_player is None or player.name == selected_player):
- playerVisible = True
- init_player(manager, player)
- else:
- logger.debug("New player appeared, but it's not the selected player, skipping")
-
-
-def on_player_vanished(manager, player):
- global playerVisible
- logger.info('Player has vanished')
- playerVisible = False
- update_song()
- sys.stdout.write('\n')
- sys.stdout.flush()
-
-
-def init_player(manager, name):
- logger.debug('Initialize player: {player}'.format(player=name.name))
- player = Playerctl.Player.new_from_name(name)
- player.connect('playback-status', on_play, manager)
- player.connect('metadata', on_metadata, manager)
- update_song()
- manager.manage_player(player)
- on_metadata(player, player.props.metadata, manager)
-
-
-def signal_handler(sig, frame):
- logger.debug('Received signal to stop, exiting')
- sys.stdout.write('\n')
- sys.stdout.flush()
- loop.quit()
- sys.exit(0)
-
-
-def parse_arguments():
- parser = argparse.ArgumentParser()
-
- # Increase verbosity with every occurrence of -v
- parser.add_argument('-v', '--verbose', action='count', default=0)
-
- # Define for which player we're listening
- parser.add_argument('--player')
-
- return parser.parse_args()
-
-
-def main():
-
- arguments = parse_arguments()
-
- # Initialize logging
- LOG = home+"/.dotfiles/configs/waybar/media.log" logger.setLevel(max((3 - arguments.verbose) * 10, 0))
- logging.basicConfig(stream=sys.stderr, filename=LOG, level=logging.DEBUG,
- format='%(name)s %(levelname)s %(message)s')
-
- logger.setLevel(0)
-
- # Log the sent command line arguments
- logger.debug('Arguments received {}'.format(vars(arguments)))
-
- manager = Playerctl.PlayerManager()
- loop = GLib.MainLoop()
-
- manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player))
- manager.connect('player-vanished', on_player_vanished)
-
- signal.signal(signal.SIGINT, signal_handler)
- signal.signal(signal.SIGTERM, signal_handler)
-
- for player in manager.props.player_names:
- if arguments.player is not None and arguments.player != player.name:
- logger.debug('{player} is not the filtered player, skipping it'
- .format(player=player.name)
- )
- continue
-
- init_player(manager, player)
-
- update_song()
- loop.run()
-
-if __name__ == '__main__':
- main()
diff --git a/configs/waybar/output.mp3 b/configs/waybar/output.mp3
deleted file mode 100644
index 2e56733..0000000
Binary files a/configs/waybar/output.mp3 and /dev/null differ
diff --git a/configs/waybar/powermode.sh b/configs/waybar/powermode.sh
deleted file mode 100644
index ea4324a..0000000
--- a/configs/waybar/powermode.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-MAX_FREQ=$(lscpu | grep "CPU max MHz" | sed --expression "s/CPU max MHz:[[:space:]]*//g" | xargs printf "%.*f\n" 0)
-CURRENT_MAX_FREG=$(cpufreq-info | grep "c")
-
diff --git a/configs/waybar/recognize-song.sh b/configs/waybar/recognize-song.sh
deleted file mode 100644
index 05a7907..0000000
--- a/configs/waybar/recognize-song.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-
diff --git a/configs/waybar/dark-mode.sh b/configs/waybar/scripts/set-theme
similarity index 100%
rename from configs/waybar/dark-mode.sh
rename to configs/waybar/scripts/set-theme
diff --git a/configs/waybar/scripts/toggle-hdpi b/configs/waybar/scripts/toggle-hdpi
new file mode 100755
index 0000000..e1aaf7e
--- /dev/null
+++ b/configs/waybar/scripts/toggle-hdpi
@@ -0,0 +1,22 @@
+#!/bin/sh
+CURRENT=$(swaymsg -t get_outputs --raw | jq '.[] | [.current_mode.width, .current_mode.height] | join("x")')
+
+HIGH="ﳍ"
+STANDARD="ﳭ"
+
+if [ "$CURRENT" = '"3840x2160"' ]; then
+ if [ "$1" = "--toggle" ]; then
+ swaymsg "output eDP-1 mode --custom 1920x1080@60Hz"
+ killall waybar
+ nohup waybar
+ fi
+ echo $HIGH
+elif [ "$CURRENT" = '"1920x1080"' ]; then
+ if [ "$1" = "--toggle" ]; then
+ swaymsg "output eDP-1 mode --custom 3840x2160@60Hz"
+ killall waybar
+ nohup waybar
+ fi
+ echo $STANDARD
+fi
+
diff --git a/configs/waybar/theme.sh b/configs/waybar/scripts/toggle-theme
similarity index 64%
rename from configs/waybar/theme.sh
rename to configs/waybar/scripts/toggle-theme
index 6b4283e..c7f8b9d 100755
--- a/configs/waybar/theme.sh
+++ b/configs/waybar/scripts/toggle-theme
@@ -3,17 +3,14 @@
DARK_MODE_STATUS_FILE=~/.cache/dark-mode
CURRENT_DARK_MODE=$( cat $DARK_MODE_STATUS_FILE )
-LIGHT="☀️"
-DARK="🌙"
-
-echo "\$1 $1"
-echo "MODE: $CURRENT_DARK_MODE"
+LIGHT="盛"
+DARK=""
if [ "$1" == "--toggle" ]; then
if [ $CURRENT_DARK_MODE == "light" ]; then
- ~/.config/waybar/dark-mode.sh dark
+ ~/.config/waybar/scripts/set-theme dark
else
- ~/.config/waybar/dark-mode.sh light
+ ~/.config/waybar/scripts/set-theme light
fi
fi
diff --git a/configs/wofi/config b/configs/wofi/config
index 23c0d90..2296d28 100644
--- a/configs/wofi/config
+++ b/configs/wofi/config
@@ -4,3 +4,4 @@ width=500
dynamic_lines=true
term=kitty
insensitive=true
+layer=overlay
diff --git a/configs/wofi/open-localhost b/configs/wofi/scripts/open-localhost
similarity index 100%
rename from configs/wofi/open-localhost
rename to configs/wofi/scripts/open-localhost
diff --git a/configs/wofi/wofi-power-menu.sh b/configs/wofi/scripts/power-menu
similarity index 65%
rename from configs/wofi/wofi-power-menu.sh
rename to configs/wofi/scripts/power-menu
index 1055a6f..0d7e3c4 100755
--- a/configs/wofi/wofi-power-menu.sh
+++ b/configs/wofi/scripts/power-menu
@@ -1,8 +1,8 @@
#!/bin/bash
-entries="⏻ Shutdown\n⭮ Reboot\n⇠ Logout\n⏾ Suspend"
+entries="⏻ Shutdown\n↺ Reboot\n⇠ Logout\n⏾ Suspend"
-selected=$(echo -e $entries|wofi --width 250 --height 210 --dmenu --cache-file /dev/null | awk '{print tolower($2)}')
+selected=$(echo -e $entries|wofi --width 250 --height 150 --dmenu --cache-file /dev/null | awk '{print tolower($2)}')
case $selected in
logout)
diff --git a/configs/wofi/wofi-emoji b/configs/wofi/scripts/select-emoji
similarity index 100%
rename from configs/wofi/wofi-emoji
rename to configs/wofi/scripts/select-emoji
diff --git a/configs/wofi/select-vpn.sh b/configs/wofi/scripts/select-vpn
similarity index 100%
rename from configs/wofi/select-vpn.sh
rename to configs/wofi/scripts/select-vpn
diff --git a/configs/wofi/select-wifi.sh b/configs/wofi/scripts/select-wifi
similarity index 100%
rename from configs/wofi/select-wifi.sh
rename to configs/wofi/scripts/select-wifi
diff --git a/configs/wofi/web-search.sh b/configs/wofi/scripts/web-search
similarity index 100%
rename from configs/wofi/web-search.sh
rename to configs/wofi/scripts/web-search
diff --git a/configs/wofi/sway-select-window.sh b/configs/wofi/sway-select-window.sh
deleted file mode 100755
index a59fe02..0000000
--- a/configs/wofi/sway-select-window.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-
-swaymsg -t get_tree | jq -r '
- # descend to workspace or scratchpad
- .nodes[].nodes[].nodes[]
- # save workspace name as .w
- | {"w": .name} + (
- if .nodes then # workspace
- [recurse(.nodes[])]
- else # scratchpad
- []
- end
- + .floating_nodes
- | .[]
- # select nodes with no children (windows)
- | select(.nodes==[])
- )
- | ((.id | tostring) + "\t "
- # remove markup and index from workspace name, replace scratch with "[S]"
- + (.w | gsub("^[^:]*:|<[^>]*>"; "") | sub("__i3_scratch"; "[S]"))
- + "\t " + .name)
- ' | wofi --show dmenu| {
- read -r id name
- swaymsg "[con_id=$id]" focus
-}
diff --git a/configs/wofi/swytcher.sh b/configs/wofi/swytcher.sh
deleted file mode 100755
index e573af2..0000000
--- a/configs/wofi/swytcher.sh
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/bin/bash
-
-# Swytch is a script providing a window switcher for sway using rofi, awk and jq.
-# The script is based on:
-# https://www.reddit.com/r/swaywm/comments/aolf3u/quick_script_for_rofi_alttabbing_window_switcher/
-# Copyright (C) 2019 Björn Sonnenschein
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-
-
-# todo: first, query all existing workspaces from sway and build color dict, so that
-# all workspaces always get the same color, even if no windows at some workspace in between exists.
-
-# obtain command to execute with swaymsg for selected window
-if [ -z "$1" ]
-then
- command_=focus
-else
- command_=$1
-fi
-
-# Obtain the avaliable windows' workspaces, names and IDs as strings
-mapfile -t windows < <(
-swaymsg -t get_tree | jq -r '[
- recurse(.nodes[]?)
- |recurse(.floating_nodes[]?)
- |select(.type=="workspace")
- | . as $workspace | recurse(.nodes[]?)
- |select(.type=="con" and .name!=null)
- |{workspace: $workspace.name, name: .name, id: .id, focused: .focused, app_id: .app_id}]
- |sort_by(.workspace, .name)[]
- |.workspace + if .focused then "* " else " " end + .app_id + " - " + .name + " " + (.id|tostring)'
-)
-rm $HOME/.cache/wofi-dmenu
-
-windows_separators=()
-colors=(blue green orange red magenta)
-workspace_previous=''
-index_workspace_active=0
-num_separators=0
-index_color=0
-bold=-1
-for index_window in "${!windows[@]}"
-do
- window="${windows[$index_window]}"
- # todo: consider arbitraty workspace name length by separating by space instead of simply taking first argument.
- workspace=${window:0:1}
- # obtain index of the active window
- if [ "${window:1:1}" == "*" ]
- then
- index_workspace_active=$(($index_window))
- fi
-
- # if window has different workspace than previous, use next color. Cycle through colors
- if [ "$workspace" != "$workspace_previous" ] && [ ! -z "$workspace_previous" ]
- then
- index_color=$index_color+1
- fi
-
- if (($index_color == ${#colors[@]}))
- then
- index_color=0
- fi
- if (( $bold == 1))
- then
- windows_separators+=("[${workspace}]${window:1}")
- else
- windows_separators+=("[${workspace}]${window:1}")
- fi
- workspace_previous=$workspace
-done
-
-HEIGHT=$(( $(printf '%s\n' "${windows_separators[@]}" | wc -l) * 30 ))
-
-echo $HEIGHT
-# Select window with rofi, obtaining ID of selected window
-idx_selected=$(printf '%s\n' "${windows_separators[@]}" | wofi -d -p "$command_" -m -H $HEIGHT )
-selected=${windows[$idx_selected]}
-id_selected=$(echo $selected | awk '{print $NF}')
-workspace_selected=${selected:0:1}
-
-
-### unmaximize all maximized windows on the workspace of the selected window
-# Obtain the avaliable windows' workspaces, names and IDs as strings
-mapfile -t ids_windows_maximized < <(
-swaymsg -t get_tree | jq -r '[
- recurse(.nodes[]?)
- |recurse(.floating_nodes[]?)
- |select(.type=="workspace")
- | . as $workspace | recurse(.nodes[]?)
- |select(.type=="con" and .name!=null and .fullscreen_mode==1 and $workspace.name=="'"$workspace_selected"'")
- |{workspace: $workspace.name, name: .name, id: .id, focused: .focused, app_id: .app_id}]
- |sort_by(.workspace, .name)[]
- |(.id|tostring)'
-)
-
-# unmaximize the maximized windows that are not the selected one
-for id_window_maximized in "${ids_windows_maximized[@]}"
-do
- if [ "$id_window_maximized" != "$id_selected" ]
- then
- swaymsg "[con_id=$id_window_maximized] fullscreen disable"
- fi
-done
-
-# Tell sway to focus said window
-# todo: do not execute if selected is the separator
-if [ ! -z "$id_selected" ]
-then
- swaymsg "[con_id=$id_selected] $command_"
-fi
diff --git a/configs/wofi/wofi-emoji-new b/configs/wofi/wofi-emoji-new
deleted file mode 100755
index 48fd03d..0000000
--- a/configs/wofi/wofi-emoji-new
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-rofimoji
diff --git a/configs/wofi/wofi-emoji-old-2 b/configs/wofi/wofi-emoji-old-2
deleted file mode 100755
index ee6b6f8..0000000
--- a/configs/wofi/wofi-emoji-old-2
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/usr/bin/env bash
-
-# Source: https://gist.github.com/NearHuscarl/5d366e1a3b788814bcbea62c1f66241d
-#
-# Use wofi to pick emoji because that's what this
-# century is about apparently...
-#
-# Requirements:
-# wofi, wlroots based compositor
-#
-# Usage:
-# 1. Download all emoji
-# $ wofi-emoji --download
-#
-# 2. Run it!
-# $ wofi-emoji
-#
-# Notes:
-# * You'll need a emoji font like "Noto Emoji" or "EmojiOne".
-# * Confirming an item will automatically paste it WITHOUT
-# writing it to your clipboard.
-# * Ctrl+C will copy it to your clipboard WITHOUT pasting it.
-#
-
-# Where to save the emojis file.
-EMOJI_FILE="$HOME/.cache/emojis.txt"
-
-# Urls of emoji to download.
-# You can remove what you don't need.
-URLS=(
-'https://emojipedia.org/people/'
-'https://emojipedia.org/nature/'
-'https://emojipedia.org/food-drink/'
-'https://emojipedia.org/activity/'
-'https://emojipedia.org/travel-places/'
-'https://emojipedia.org/objects/'
-'https://emojipedia.org/symbols/'
-'https://emojipedia.org/flags/'
-)
-
-
-function notify() {
- if [ "$(command -v notify-send)" ]; then
- notify-send "$1" "$2"
- fi
-}
-
-
-function download() {
- notify "$(basename "$0")" 'Downloading all emoji for your pleasure'
-
- echo "" > "$EMOJI_FILE"
-
- for url in "${URLS[@]}"; do
- echo "Downloading: $url"
-
- # Download the list of emoji and remove all the junk around it
- emojis=$(curl -s "$url" | \
- xmllint --html \
- --xpath '//ul[@class="emoji-list"]' - 2>/dev/null)
-
- # Get rid of starting/closing ul tags
- emojis=$(echo "$emojis" | head -n -1 | tail -n +1)
-
- # Extract the emoji and its description
- emojis=$(echo "$emojis" | \
- sed -rn 's/.*(.*)<\/span> (.*)<\/a><\/li>/\1 \2/p')
-
- echo "$emojis" >> "$EMOJI_FILE"
- done
-
- notify "$(basename "$0")" "We're all set!"
-}
-
-function wofi_menu() { # {{{
- wofi -width 25 -lines 7 -dmenu -i -p 'emoji: ' \
- -kb-row-tab '' \
- -kb-row-select Tab \
- -kb-custom-1 Ctrl+c
-}
-# }}}
-
-function repeat() { # {{{
- local rplc str="$1" count="$2"
- rplc="$(printf "%${count}s")"
- echo "${rplc// /"$str"}"
-}
-# }}}
-
-function toclipboard() { # {{{
- wl-copy
-}
-# }}}
-
-function pastedirectly() { #{{{
- wtype -
-}
-# }}}
-
-function display() {
- local emoji line exit_code quantifier
-
- emoji=$(cat "$EMOJI_FILE" | grep -v '#' | grep -v '^[[:space:]]*$')
- line="$(echo "$emoji" | wofi_menu)"
- exit_code=$?
-
- line=($line)
- last=${line[${#line[@]}-1]}
- quantifier="${last:${#last}-1:1}"
- if [[ ! "$quantifier" =~ [0-9] ]]; then
- quantifier=1
- fi
- emoijs="$(repeat "${line[0]}" "$quantifier")"
-
- if [ $exit_code == 0 ]; then
- echo -n "$emoijs" | pastedirectly
- elif [ $exit_code == 10 ]; then
- echo -n "$emoijs" | toclipboard
- fi
-}
-
-
-# Some simple argparsing
-if [[ "$1" =~ -D|--download ]]; then
- download
- exit 0
-elif [[ "$1" =~ -h|--help ]]; then
- echo "usage: $0 [-D|--download]"
- exit 0
-fi
-
-# Download all emoji if they don't exist yet
-if [ ! -f "$EMOJI_FILE" ]; then
- download
-fi
-
-# display displays :)
-display