diff --git a/fish/config.fish b/fish/config.fish
index 5aa33a6..c946caf 100644
--- a/fish/config.fish
+++ b/fish/config.fish
@@ -1,3 +1,7 @@
+if test -f $HOME/.local/bin/mise
+ $HOME/.local/bin/mise activate fish | source
+end
+
if status is-interactive
set -g fish_key_bindings fish_vi_key_bindings
@@ -8,10 +12,13 @@ if status is-interactive
else if test -x /usr/local/bin/starship
/usr/local/bin/starship init fish | source
end
-end
-if test -f $HOME/.local/bin/mise
- $HOME/.local/bin/mise activate fish | source
+ # Start or re-use a gpg-agent.
+ gpgconf --launch gpg-agent
+
+ # Ensure that GPG Agent is used as the SSH agent
+ set -e SSH_AUTH_SOCK
+ set -U -x SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket)
end
set -U fish_greeting
@@ -24,3 +31,5 @@ if test -f "$HOME/.config/fish/local.fish"
source "$HOME/.config/fish/local.fish"
end
+fish_add_path -g ~/bin
+fish_add_path -g ~/.local/bin
diff --git a/fish/fish_variables b/fish/fish_variables
index 56cf986..df8f398 100644
--- a/fish/fish_variables
+++ b/fish/fish_variables
@@ -1,6 +1,10 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
-SETUVAR __fish_initialized:3800
+SETUVAR --export SSH_AUTH_SOCK:/run/user/1000/gnupg/S\x2egpg\x2dagent\x2essh
+SETUVAR __fish_initialized:3400
+SETUVAR _fish_abbr_hist:history\x20\x7c\x20fzf\x20\x7c\x20fish_clipboard_copy
+SETUVAR _fish_abbr_lzd:lazydocker
+SETUVAR _fish_abbr_lzg:lazygit
SETUVAR _fisher_dracula_2F_fish_files:\x7e/\x2econfig/fish/themes/Dracula\x20Official\x2etheme\x1e\x7e/\x2econfig/fish/conf\x2ed/dracula\x2efish
SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish
SETUVAR _fisher_plugins:patrickf1/fzf\x2efish\x1edracula/fish
@@ -34,4 +38,3 @@ SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr
-SETUVAR fish_user_paths:/Users/jsc/Applications/flutter/bin\x1e/opt/homebrew/bin
diff --git a/gitconfig b/gitconfig
new file mode 100644
index 0000000..1a5a0e5
--- /dev/null
+++ b/gitconfig
@@ -0,0 +1,6 @@
+[user]
+ signingkey = D4F80EF04E164D46393BD7C580D8850D127E6070
+ email = jeffrey.clement@gmail.com
+ name = Jeff Clement
+[commit]
+ gpgsign = true
diff --git a/gpg/gpg.conf b/gpg/gpg.conf
new file mode 100644
index 0000000..8b793b4
--- /dev/null
+++ b/gpg/gpg.conf
@@ -0,0 +1,20 @@
+# Use modern encryption algorithms
+personal-cipher-preferences AES256,AES192,AES
+personal-digest-preferences SHA512,SHA384,SHA256
+
+# Set default preferences for key creation
+default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB ZIP Uncompressed
+
+# Use SHA512 for certifying keys
+cert-digest-algo SHA512
+
+# Enforce encrypted communication with keyservers
+keyserver hkps://hkps.pool.sks-keyservers.net
+keyserver-options no-honor-keyserver-url
+
+# Enable agent usage
+use-agent
+
+# Automatically locate keys locally first
+auto-key-locate local
+
diff --git a/install.sh b/install.sh
index 65fc781..1c55050 100755
--- a/install.sh
+++ b/install.sh
@@ -55,6 +55,14 @@ SYMLINKS=(
"fish:$HOME/.config/fish"
"starship.toml:$HOME/.config/starship.toml"
"mise-global.toml:$HOME/.config/mise/config.toml"
+ "sway/config:$HOME/.config/sway/config"
+ "sway/config.d:$HOME/.config/sway/config.d"
+ "sway/wallpaper.jpg:$HOME/.config/sway/wallpaper.jpg"
+ "sway/lock.jpg:$HOME/.config/sway/lock.jpg"
+ "waybar/config.jsonc:$HOME/.config/waybar/config.jsonc"
+ "waybar/style.css:$HOME/.config/waybar/style.css"
+ "gitconfig:$HOME/.gitconfig"
+ "gpg/gpg.conf:$HOME/.gnupg/gpg.conf"
)
TARGET_SHELL="fish"
@@ -113,19 +121,17 @@ install_packages() {
done
elif [ "${os}" = "linux" ]; then
- if ! command -v apt-get >/dev/null 2>&1; then
- echo "Error: This script currently only supports apt-based distros on Linux."
- exit 1
+ if command -v apt-get >/dev/null 2>&1; then
+ echo "Warning: This script currently only supports apt-based distros on Linux."
+
+ # Install each Linux package if missing
+ for pkg in "${PACKAGES_LINUX[@]}"; do
+ install_package_linux "${pkg}"
+ done
+
+ # No packages for lazygit on Linux :(
+ install_lazygit_linux
fi
-
- # Install each Linux package if missing
- for pkg in "${PACKAGES_LINUX[@]}"; do
- install_package_linux "${pkg}"
- done
-
- # No packages for lazygit on Linux :(
- install_lazygit_linux
-
fi
}
diff --git a/mise-global.toml b/mise-global.toml
index 5bec564..aa2ff04 100644
--- a/mise-global.toml
+++ b/mise-global.toml
@@ -1,6 +1,12 @@
[tools]
-elixir = "1.18"
-erlang = "27"
-go = "1.24"
+bat = "latest"
+cloudflared = "latest"
jq = "latest"
+lazygit = "latest"
python = "3.13"
+starship = "latest"
+age = "latest"
+fzf = "latest"
+fd = "latest"
+age-plugin-yubikey = "latest"
+rg = "latest"
diff --git a/sway/config b/sway/config
new file mode 100644
index 0000000..3ecda49
--- /dev/null
+++ b/sway/config
@@ -0,0 +1,239 @@
+# Default config for sway
+#
+# Copy this to ~/.config/sway/config and edit it to your liking.
+#
+# Read `man 5 sway` for a complete reference.
+
+# https://gitlab.com/rigopoui/dotfiles-and-themes/-/blob/master/laptop/.config/sway/config?ref_type=heads
+
+seat * hide_cursor 10000
+#font Roboto:size=11
+focus_follows_mouse no
+
+input * xkb_options "caps:escape"
+
+# turn off titles
+#default_border none
+
+### Variables
+
+# Logo key. Use Mod1 for Alt.
+set $mod Mod4
+
+# Home row direction keys, like vim
+set $left h
+set $down j
+set $up k
+set $right l
+
+# Your preferred terminal emulator
+# Recommends: foot
+set $term foot
+
+# Your preferred application launcher
+# Note: pass the final command to swaymsg so that the resulting window can be opened
+# on the original workspace that the command was run on.
+# Recommends: rofi-wayland
+set $rofi_cmd rofi \
+ -terminal '$term'
+
+# Shows a combined list of the applications with desktop files and
+# executables from PATH.
+# TODO: add window with the next release of rofi-wayland
+set $menu $rofi_cmd -show combi -combi-modes drun#run -modes combi
+
+### Output configuration
+output * bg ${HOME}/.config/sway/wallpaper.jpg fill
+
+#
+# Example configuration:
+#
+# output HDMI-A-1 resolution 1920x1080 position 1920,0
+#
+# You can get the names of your outputs by running: swaymsg -t get_outputs
+
+### Input configuration
+#
+# Example configuration:
+#
+# input "2:14:SynPS/2_Synaptics_TouchPad" {
+# dwt enabled
+# tap enabled
+# natural_scroll enabled
+# middle_emulation enabled
+# }
+#
+# You can get the names of your inputs by running: swaymsg -t get_inputs
+# Read `man 5 sway-input` for more information about this section.
+
+### Key bindings
+#
+# Basics:
+#
+ # Start a terminal
+ bindsym $mod+Return exec $term
+
+ # Kill focused window
+ bindsym $mod+Shift+q kill
+
+ # Start your launcher
+ bindsym $mod+d exec $menu
+
+ # Drag floating windows by holding down $mod and left mouse button.
+ # Resize them with right mouse button + $mod.
+ # Despite the name, also works for non-floating windows.
+ # Change normal to inverse to use left mouse button for resizing and right
+ # mouse button for dragging.
+ floating_modifier $mod normal
+
+ # Reload the configuration file
+ bindsym $mod+Shift+c reload
+
+ # Exit sway (logs you out of your Wayland session)
+ bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
+#
+# Moving around:
+#
+ # Move your focus around
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+ # Or use $mod+[up|down|left|right]
+ bindsym $mod+Left focus left
+ bindsym $mod+Down focus down
+ bindsym $mod+Up focus up
+ bindsym $mod+Right focus right
+
+ # Move the focused window with the same, but add Shift
+ bindsym $mod+Shift+$left move left
+ bindsym $mod+Shift+$down move down
+ bindsym $mod+Shift+$up move up
+ bindsym $mod+Shift+$right move right
+ # Ditto, with arrow keys
+ bindsym $mod+Shift+Left move left
+ bindsym $mod+Shift+Down move down
+ bindsym $mod+Shift+Up move up
+ bindsym $mod+Shift+Right move right
+#
+# Workspaces:
+#
+ # Switch to workspace
+ bindsym $mod+1 workspace number 1
+ bindsym $mod+2 workspace number 2
+ bindsym $mod+3 workspace number 3
+ bindsym $mod+4 workspace number 4
+ bindsym $mod+5 workspace number 5
+ bindsym $mod+6 workspace number 6
+ bindsym $mod+7 workspace number 7
+ bindsym $mod+8 workspace number 8
+ bindsym $mod+9 workspace number 9
+ bindsym $mod+0 workspace number 10
+
+ # Move focused container to workspace
+ bindsym $mod+Shift+1 move container to workspace number 1
+ bindsym $mod+Shift+2 move container to workspace number 2
+ bindsym $mod+Shift+3 move container to workspace number 3
+ bindsym $mod+Shift+4 move container to workspace number 4
+ bindsym $mod+Shift+5 move container to workspace number 5
+ bindsym $mod+Shift+6 move container to workspace number 6
+ bindsym $mod+Shift+7 move container to workspace number 7
+ bindsym $mod+Shift+8 move container to workspace number 8
+ bindsym $mod+Shift+9 move container to workspace number 9
+ bindsym $mod+Shift+0 move container to workspace number 10
+
+#
+# Layout stuff:
+#
+ # You can "split" the current object of your focus with
+ # $mod+b or $mod+v, for horizontal and vertical splits
+ # respectively.
+ bindsym $mod+b splith
+ bindsym $mod+v splitv
+
+ # Switch the current container between different layout styles
+ bindsym $mod+s layout stacking
+ bindsym $mod+w layout tabbed
+ bindsym $mod+e layout toggle split
+
+ # Make the current focus fullscreen
+ bindsym $mod+f fullscreen
+
+ # Toggle the current focus between tiling and floating mode
+ bindsym $mod+Shift+space floating toggle
+
+ # Swap focus between the tiling area and the floating area
+ bindsym $mod+space focus mode_toggle
+
+ # Move focus to the parent container
+ bindsym $mod+a focus parent
+#
+# Scratchpad:
+#
+ # Sway has a "scratchpad", which is a bag of holding for windows.
+ # You can send windows there and get them back later.
+
+ # Move the currently focused window to the scratchpad
+ bindsym $mod+Shift+minus move scratchpad
+
+ # Show the next scratchpad window or hide the focused scratchpad window.
+ # If there are multiple scratchpad windows, this command cycles through them.
+ bindsym $mod+minus scratchpad show
+#
+# Resizing containers:
+#
+mode "resize" {
+ # left will shrink the containers width
+ # right will grow the containers width
+ # up will shrink the containers height
+ # down will grow the containers height
+ bindsym $left resize shrink width 40px
+ bindsym $down resize grow height 40px
+ bindsym $up resize shrink height 40px
+ bindsym $right resize grow width 40px
+
+ # Ditto, with arrow keys
+ bindsym Left resize shrink width 40px
+ bindsym Down resize grow height 40px
+ bindsym Up resize shrink height 40px
+ bindsym Right resize grow width 40px
+
+ # Return to default mode
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+bindsym $mod+r mode "resize"
+
+for_window {
+ [instance="google-chrome"] inhibit_idle fullscreen; border none; max_render_time off
+}
+
+assign [class="Signal"] workspace 10
+assign [app_id="org.telegram.desktop"] workspace 10
+assign [class="discord"] workspace 10
+assign [class="steam"] workspace steam
+
+
+
+# Include configs from 3 locations:
+# - /usr/share/sway/config.d
+# - /etc/sway/config.d
+# - $XDG_CONFIG_HOME/sway/config.d ($HOME/.config/sway/config.d)
+#
+# If multiple directories contain the files with the same name, the later
+# directory takes precedence; `$XDG_CONFIG_HOME/sway/config.d/20-swayidle.conf`
+# will always be loaded instead of `/usr/share/sway/config.d/20-swayidle.conf`
+# or `/etc/sway/config.d/20-swayidle.conf`
+#
+# This mechanism permits overriding our default configuration per-system
+# (/etc) or per-user ($XDG_CONFIG_HOME) basis. Just create the file you
+# want to modify/override in the higher-level directory.
+#
+# For example, to disable the default bar from Fedora configs, you'll need to
+# $ echo -n > "$HOME/.config/sway/config.d/90-bar.conf"
+#
+# Note the quoting, the $() and the arguments quoting. All the parts are equally
+# important to make the magic work. And if you want to learn the secret behind
+# the trick, it's all in the `wordexp(3)`.
+#
+include '$(/usr/libexec/sway/layered-include "/usr/share/sway/config.d/*.conf" "/etc/sway/config.d/*.conf" "${XDG_CONFIG_HOME:-$HOME/.config}/sway/config.d/*.conf" "${XDG_CONFIG_HOME:-$HOME/.config}/sway/local.d/*.conf")'
diff --git a/sway/config.d/.01-steam.conf.swp b/sway/config.d/.01-steam.conf.swp
new file mode 100644
index 0000000..d945850
Binary files /dev/null and b/sway/config.d/.01-steam.conf.swp differ
diff --git a/sway/config.d/90-swayidle.conf b/sway/config.d/90-swayidle.conf
new file mode 100644
index 0000000..65ac29f
--- /dev/null
+++ b/sway/config.d/90-swayidle.conf
@@ -0,0 +1,30 @@
+# Idle and lock configuration
+#
+# This will lock your screen after 300 seconds of inactivity, then turn off
+# your displays after another 60 seconds, and turn your screens back on when
+# resumed. It will also lock your screen before your computer goes to sleep.
+# The timeouts can be customized via `$lock_timeout` and `$screen_timeout`
+# variables. For a predictable behavior, keep the `$screen_timeout` value
+# lesser than the `$lock_timeout`.
+#
+# You can also lock the screen manually by running `loginctl lock-session` or
+# add a binding for the command. Example:
+# bindsym $mod+Shift+Escape exec loginctl lock-session
+#
+# Note that all swaylock customizations are handled via /etc/swaylock/config and
+# can be overridden via $XDG_CONFIG_HOME/swaylock/config (~/.config/swaylock/config).
+#
+# Requires: swayidle
+# Requires: swaylock
+# Requires: /usr/bin/pkill, /usr/bin/pgrep
+
+exec LT="$lock_timeout" ST="$screen_timeout" LT=${LT:-300} ST=${ST:-60} && \
+ swayidle -w \
+ timeout $LT 'swaylock -f -i $HOME/.config/sway/lock.jpg' \
+ timeout $((LT + ST)) 'swaymsg "output * power off"' \
+ resume 'swaymsg "output * power on"' \
+ timeout $ST 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * power off"' \
+ resume 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * power on"' \
+ before-sleep 'swaylock -f -i $HOME/.config/sway/lock.jpg' \
+ lock 'swaylock -f -i $HOME/.config/sway/lock.jpg' \
+ unlock 'pkill -xu "$USER" -SIGUSR1 swaylock'
diff --git a/sway/lock.jpg b/sway/lock.jpg
new file mode 100644
index 0000000..1f5fa93
Binary files /dev/null and b/sway/lock.jpg differ
diff --git a/sway/wallpaper.jpg b/sway/wallpaper.jpg
new file mode 100644
index 0000000..89c1efb
Binary files /dev/null and b/sway/wallpaper.jpg differ
diff --git a/waybar/config.jsonc b/waybar/config.jsonc
new file mode 100644
index 0000000..d2ebcaf
--- /dev/null
+++ b/waybar/config.jsonc
@@ -0,0 +1,210 @@
+// -*- mode: jsonc -*-
+{
+ // "layer": "top", // Waybar at top layer
+ // "position": "bottom", // Waybar position (top|bottom|left|right)
+ "height": 30, // Waybar height (to be removed for auto height)
+ // "width": 1280, // Waybar width
+ "spacing": 4, // Gaps between modules (4px)
+ // Choose the order of the modules
+ "modules-left": [
+ "sway/workspaces",
+ "sway/mode",
+ "sway/scratchpad"
+ ],
+ "modules-center": [
+ "sway/window"
+ ],
+ "modules-right": [
+ "idle_inhibitor",
+ "pulseaudio",
+ "network",
+ "power-profiles-daemon",
+ "cpu",
+ "memory",
+ "temperature",
+ "backlight",
+// "sway/language",
+ "battery",
+ "clock",
+ "tray"
+ ],
+ // Modules configuration
+ // "sway/workspaces": {
+ // "disable-scroll": true,
+ // "all-outputs": true,
+ // "warp-on-scroll": false,
+ // "format": "{name}: {icon}",
+ // "format-icons": {
+ // "1": "",
+ // "2": "",
+ // "3": "",
+ // "4": "",
+ // "5": "",
+ // "urgent": "",
+ // "focused": "",
+ // "default": ""
+ // }
+ // },
+ "keyboard-state": {
+ "numlock": true,
+ "capslock": true,
+ "format": "{name} {icon}",
+ "format-icons": {
+ "locked": "",
+ "unlocked": ""
+ }
+ },
+ "sway/mode": {
+ "format": "{}"
+ },
+ "sway/scratchpad": {
+ "format": "{icon} {count}",
+ "show-empty": false,
+ "format-icons": ["", ""],
+ "tooltip": true,
+ "tooltip-format": "{app}: {title}"
+ },
+ "mpd": {
+ "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
+ "format-disconnected": "Disconnected ",
+ "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
+ "unknown-tag": "N/A",
+ "interval": 5,
+ "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": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "clock": {
+ // "timezone": "America/New_York",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%Y-%m-%d}"
+ },
+ "cpu": {
+ "format": "{usage}% ",
+ "tooltip": false
+ },
+ "memory": {
+ "format": "{}% "
+ },
+ "temperature": {
+ // "thermal-zone": 2,
+ // "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": {
+ // "good": 95,
+ "warning": 30,
+ "critical": 15
+ },
+ "format": "{capacity}% {icon}",
+ "format-full": "{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"
+ },
+ "power-profiles-daemon": {
+ "format": "{icon}",
+ "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
+ "tooltip": true,
+ "format-icons": {
+ "default": "",
+ "performance": "",
+ "balanced": "",
+ "power-saver": ""
+ }
+ },
+ "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/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
+ // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
+ },
+ "custom/power": {
+ "format" : "⏻ ",
+ "tooltip": false,
+ "menu": "on-click",
+ "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
+ "menu-actions": {
+ "shutdown": "shutdown",
+ "reboot": "reboot",
+ "suspend": "systemctl suspend",
+ "hibernate": "systemctl hibernate"
+ }
+ }
+}
diff --git a/waybar/style.css b/waybar/style.css
new file mode 100644
index 0000000..e98f839
--- /dev/null
+++ b/waybar/style.css
@@ -0,0 +1,170 @@
+* {
+ border: none;
+ border-radius: 0;
+ font-family: RobotoMono NerdFont, Roboto, Noto Sans CJK JP, sans-serif;
+ font-weight: bold;
+ font-size: 12px;
+ min-height: 0;
+}
+
+window#waybar {
+ background: transparent;
+ color: #ffffff;
+}
+
+window > box {
+ /*margin: 0 0 0 16px;*/
+ background: #171717;/*#282a36;*/
+ border-bottom: 3px transparent;
+ color: white;
+}
+
+tooltip {
+ color: white;
+ background-color: #171717;
+ text-shadow: none;
+}
+
+#workspaces {
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+#workspaces button {
+ padding: 0 3px;
+ margin: 0px;
+ min-width: 0px;
+ color: #ffffff;
+ background: transparent;
+ border-bottom: 3px solid transparent;
+ border-top: 2px solid transparent;
+}
+
+#workspaces button.focused {
+ padding: 0 3px;
+ border-bottom: 3px solid #ffffff;
+ border-top: 2px solid #171717;
+ /*border-radius: 3px;*/
+}
+
+#window {
+ /*margin: 0 240;*/
+}
+
+#mode {
+ background: #64727D;
+ border-bottom: 3px solid #ffb52a;
+}
+
+#window, #clock, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #custom-disk, #custom-weather, #language, #tray, #mode, #idle_inhibitor {
+ padding: 0 2px;
+ margin: 0 5px;
+ background: transparent;
+ border-top: 2px solid transparent;
+}
+
+#clock {
+ border-bottom: 3px solid #ff6e67;
+}
+
+#battery {
+ border-bottom: 3px solid #ffb52a;
+}
+
+#battery.charging {
+ /*border-bottom: 3px solid #51e258;*/
+ animation-name :blink;
+ animation-duration: 1.0s;
+ animation-timing-function: ease-out;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+@keyframes blink {
+ 0%{
+ border-bottom: 3px solid transparent;
+ }
+ 100% {
+ border-bottom: 3px solid #ffb52a;
+ }
+}
+
+@keyframes blinkLow {
+ from {
+ border-bottom: 3px solid transparent;
+ }
+ to {
+ border-bottom: 3px solid #ff6e67;
+ }
+}
+
+*#battery.critical:not(.charging) {
+ animation-name: blinkLow;
+ animation-duration: 0.7s;
+ animation-timing-function: ease-out;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#cpu {
+ border-bottom: 3px solid #51e258;
+}
+
+#memory {
+ border-bottom: 3px solid #8ae8fd;
+}
+
+#backlight {
+ border-bottom: 3px solid #90b1b1;
+}
+
+#network {
+ border-bottom: 3px solid #eb3e86;
+}
+
+#network.disconnected {
+ border-bottom: 3px solid #ff676e; /*#ff676e;*/
+}
+
+#pulseaudio {
+ border-bottom: 3px solid #3f87f6;
+}
+
+#pulseaudio.muted {
+ border-bottom: 3px solid #bfbfbf;
+}
+
+#custom-disk {
+ border-bottom: 3px solid #51e258;
+}
+
+#custom-weather {
+ border-bottom: 3px solid #3f87f6;
+}
+
+#language {
+ border-bottom: 3px solid #fbbc01;
+}
+
+#temperature {
+ border-bottom: 3px solid #f0932b;
+}
+
+#temperature.critical {
+ background: #eb4d4b;
+}
+
+#tray {
+ border-bottom: 3px solid #3f87f6; /* #ff676e; */
+}
+
+#idle_inhibitor {
+ background-color: #171717;
+}
+
+#idle_inhibitor.activated {
+ background-color: #ecf0f1;
+ color: #2d3436;
+}
+
diff --git a/waybar/style.css.old b/waybar/style.css.old
new file mode 100644
index 0000000..e031037
--- /dev/null
+++ b/waybar/style.css.old
@@ -0,0 +1,326 @@
+* {
+ font-family: 'Noto Sans Mono', 'Font Awesome 6 Free', 'Font Awesome 6 Brands', monospace;
+ font-size: 13px;
+}
+
+window#waybar {
+ background-color: rgba(43, 48, 59, 0.5);
+ border-bottom: 3px solid rgba(100, 114, 125, 0.5);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+/*
+window#waybar.empty {
+ background-color: transparent;
+}
+window#waybar.solo {
+ background-color: #FFFFFF;
+}
+*/
+
+window#waybar.termite {
+ background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+ background-color: #000000;
+ border: none;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+/* you can set a style on hover for any module like this */
+#pulseaudio:hover {
+ background-color: #a37800;
+}
+
+#workspaces button {
+ padding: 0 5px;
+ background-color: transparent;
+ color: #ffffff;
+}
+
+#workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#workspaces button.focused {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#workspaces button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ box-shadow: inset 0 -3px #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#power-profiles-daemon,
+#mpd {
+ padding: 0 10px;
+ color: #ffffff;
+}
+
+#window,
+#workspaces {
+ margin: 0 4px;
+}
+
+/* If workspaces is the leftmost module, omit left margin */
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+/* If workspaces is the rightmost module, omit right margin */
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+#clock {
+ background-color: #64727D;
+}
+
+#battery {
+ background-color: #ffffff;
+ color: #000000;
+}
+
+#battery.charging, #battery.plugged {
+ color: #ffffff;
+ background-color: #26A65B;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+/* Using steps() instead of linear as a timing function to limit cpu usage */
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: #ffffff;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#power-profiles-daemon {
+ padding-right: 15px;
+}
+
+#power-profiles-daemon.performance {
+ background-color: #f53c3c;
+ color: #ffffff;
+}
+
+#power-profiles-daemon.balanced {
+ background-color: #2980b9;
+ color: #ffffff;
+}
+
+#power-profiles-daemon.power-saver {
+ background-color: #2ecc71;
+ color: #000000;
+}
+
+label:focus {
+ background-color: #000000;
+}
+
+#cpu {
+ background-color: #2ecc71;
+ color: #000000;
+}
+
+#memory {
+ background-color: #9b59b6;
+}
+
+#disk {
+ background-color: #964B00;
+}
+
+#backlight {
+ background-color: #90b1b1;
+}
+
+#network {
+ background-color: #2980b9;
+}
+
+#network.disconnected {
+ background-color: #f53c3c;
+}
+
+#pulseaudio {
+ background-color: #f1c40f;
+ color: #000000;
+}
+
+#pulseaudio.muted {
+ background-color: #90b1b1;
+ color: #2a5c45;
+}
+
+#wireplumber {
+ background-color: #fff0f5;
+ color: #000000;
+}
+
+#wireplumber.muted {
+ background-color: #f53c3c;
+}
+
+#custom-media {
+ background-color: #66cc99;
+ color: #2a5c45;
+ min-width: 100px;
+}
+
+#custom-media.custom-spotify {
+ background-color: #66cc99;
+}
+
+#custom-media.custom-vlc {
+ background-color: #ffa000;
+}
+
+#temperature {
+ background-color: #f0932b;
+}
+
+#temperature.critical {
+ background-color: #eb4d4b;
+}
+
+#tray {
+ background-color: #2980b9;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+#idle_inhibitor {
+ background-color: #2d3436;
+}
+
+#idle_inhibitor.activated {
+ background-color: #ecf0f1;
+ color: #2d3436;
+}
+
+#mpd {
+ background-color: #66cc99;
+ color: #2a5c45;
+}
+
+#mpd.disconnected {
+ background-color: #f53c3c;
+}
+
+#mpd.stopped {
+ background-color: #90b1b1;
+}
+
+#mpd.paused {
+ background-color: #51a37a;
+}
+
+#language {
+ background: #00b093;
+ color: #740864;
+ padding: 0 5px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#keyboard-state {
+ background: #97e1ad;
+ color: #000000;
+ padding: 0 0px;
+ margin: 0 5px;
+ min-width: 16px;
+}
+
+#keyboard-state > label {
+ padding: 0 5px;
+}
+
+#keyboard-state > label.locked {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad {
+ background: rgba(0, 0, 0, 0.2);
+}
+
+#scratchpad.empty {
+ background-color: transparent;
+}
+
+#privacy {
+ padding: 0;
+}
+
+#privacy-item {
+ padding: 0 5px;
+ color: white;
+}
+
+#privacy-item.screenshare {
+ background-color: #cf5700;
+}
+
+#privacy-item.audio-in {
+ background-color: #1ca000;
+}
+
+#privacy-item.audio-out {
+ background-color: #0069d4;
+}