feat: some more history
This commit is contained in:
parent
3334866bcb
commit
2fe7f127e5
@ -1,14 +0,0 @@
|
||||
{
|
||||
"0 debug pnpm:scope": {
|
||||
"selected": 1
|
||||
},
|
||||
"1 error pnpm": {
|
||||
"code": "ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND",
|
||||
"err": {
|
||||
"name": "pnpm",
|
||||
"message": "No package.json (or package.yaml, or package.json5) was found in \"/home/jim/.dotfiles/configs\".",
|
||||
"code": "ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND",
|
||||
"stack": "pnpm: No package.json (or package.yaml, or package.json5) was found in \"/home/jim/.dotfiles/configs\".\n at readProjectManifest (/home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:40641:13)\n at async Object.readProjectManifestOnly (/home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:40645:28)\n at async Object.readProjectManifestOnly (/home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:40864:24)\n at async Object.handler (/home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:129763:24)\n at async /home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:133951:20\n at async run (/home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:133926:34)\n at async runPnpm (/home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:134137:5)\n at async /home/jim/.asdf/installs/nodejs/16.11.0/pnpm-global/5/node_modules/.pnpm/pnpm@6.17.2/node_modules/pnpm/dist/pnpm.cjs:134129:7"
|
||||
}
|
||||
}
|
||||
}
|
@ -10,7 +10,7 @@ set -g destroy-unattached
|
||||
unbind C-b
|
||||
set-option -g prefix C-a
|
||||
bind-key C-a send-prefix
|
||||
|
||||
bind b set-option status
|
||||
|
||||
# split panes using | and -
|
||||
bind | split-window -h -c "#{pane_current_path}"
|
||||
|
@ -25,11 +25,15 @@ if u.has_plugin("cmp") then
|
||||
cmd [[set mouse=a]] -- enable mouse interaction
|
||||
cmd [[set undofile]]
|
||||
cmd [[set fcs=eob:\ ]] --disable showing ~ in empty lines
|
||||
|
||||
cmd [[command Format :lua vim.lsp.buf.formatting()]]
|
||||
|
||||
cmd [[set noshowmode]] --to get rid of thing like --INSERT--
|
||||
cmd [[set noshowcmd]] --to get rid of display of last command
|
||||
cmd [[set shortmess+=F]] --to get rid of the file name displayed in the command line bar
|
||||
cmd [[set noruler]]
|
||||
cmd [[set noruler]]
|
||||
|
||||
g.ale_fixers = {"prettier", "eslint"}
|
||||
|
||||
-- Enable Theming / Syntax
|
||||
o.syntax = "enable"
|
||||
|
@ -14,7 +14,7 @@ cmp.setup {
|
||||
end
|
||||
},
|
||||
mapping = {
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-e>"] = cmp.mapping.close(),
|
||||
["<CR>"] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
|
@ -139,6 +139,7 @@ nvim_lsp.diagnosticls.setup {
|
||||
"sh",
|
||||
"markdown",
|
||||
"json",
|
||||
"jsonc",
|
||||
"yaml",
|
||||
"toml"
|
||||
},
|
||||
|
@ -17,7 +17,8 @@ return require("packer").startup(function()
|
||||
use "kyazdani42/nvim-tree.lua"
|
||||
use "nvim-lua/popup.nvim"
|
||||
use "mhinz/vim-startify"
|
||||
|
||||
use "lukas-reineke/indent-blankline.nvim"
|
||||
|
||||
-- Code Navigation
|
||||
use "dense-analysis/ale"
|
||||
use "nathanmsmith/nvim-ale-diagnostic"
|
||||
@ -40,13 +41,14 @@ return require("packer").startup(function()
|
||||
use "weilbith/nvim-code-action-menu" -- Need to find better alternative
|
||||
use "L3MON4D3/LuaSnip"
|
||||
use "windwp/nvim-autopairs"
|
||||
use "neoclide/jsonc.vim"
|
||||
use {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
run = ':TSUpdate'
|
||||
}
|
||||
|
||||
-- Formatting
|
||||
use "mhartington/formatter.nvim"
|
||||
|
||||
use "sbdchd/neoformat"
|
||||
|
||||
-- General Popup Window
|
||||
use "akinsho/nvim-toggleterm.lua"
|
||||
|
@ -38,4 +38,4 @@ function M.has_plugin(pluginName)
|
||||
return status
|
||||
end
|
||||
|
||||
return M
|
||||
return M
|
||||
|
@ -1,13 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Terminate already running bar instances
|
||||
killall -q i3bar
|
||||
killall -q polybar
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch Polybar, using default config location ~/.conig/polybar/config
|
||||
polybar base &
|
||||
|
||||
echo "Polybar launched..."
|
@ -1,120 +0,0 @@
|
||||
;--------------------------------------------
|
||||
; settings ;
|
||||
;--------------------------------------------
|
||||
|
||||
[settings]
|
||||
screenchange-reload = true
|
||||
|
||||
;--------------------------------------------
|
||||
; colors ;
|
||||
;--------------------------------------------
|
||||
|
||||
[colors]
|
||||
|
||||
bar_bg = ${xrdb:color0}
|
||||
bar_fg = ${xrdb:color7}
|
||||
|
||||
border_col = ${xrdb:color0}
|
||||
|
||||
modules_bg = ${xrdb:color7}
|
||||
modules_fg = ${xrdb:color0}
|
||||
|
||||
mod_bg = ${xrdb:color7}
|
||||
|
||||
modules_prefix_bg = ${xrdb:color7}
|
||||
modules_prefix_fg = ${xrdb:color0}
|
||||
|
||||
urgent_bg = ${xrdb:color1}
|
||||
focused_bg = ${xrdb:color10}
|
||||
|
||||
essid_p_bg = ${xrdb:color6}
|
||||
down_p_bg = #5e606c
|
||||
cpu_p_bg = ${xrdb:color5}
|
||||
ram_p_bg = ${xrdb:color11}
|
||||
vol_p_bg = #637b81
|
||||
bright_p_bg = #c29f6f
|
||||
battery_p_bg = ${xrdb:color9}
|
||||
time_p_bg = ${xrdb:color10}
|
||||
|
||||
;--------------------------------------------
|
||||
; bars ;
|
||||
;--------------------------------------------
|
||||
|
||||
[bar/base]
|
||||
dpi = 192
|
||||
width = 100%
|
||||
height = 32
|
||||
offset-x = 0
|
||||
offset-y = 0
|
||||
|
||||
bottom = false
|
||||
|
||||
background = ${xrdb:background}
|
||||
foreground = ${xrdb:color7}
|
||||
|
||||
border-bottom-size = 0
|
||||
border-top-size = ${xrdb:gap}
|
||||
|
||||
border-left-size = ${xrdb:gap}
|
||||
border-right-size = ${xrdb:gap}
|
||||
|
||||
border-bottom-color = #000f0f0f
|
||||
border-top-color = #000f0f0f
|
||||
|
||||
border-left-color = #000f0f0f
|
||||
border-right-color = #000f0f0f
|
||||
|
||||
spacing = 0
|
||||
padding-left = 0
|
||||
padding-right = 2
|
||||
module-margin-left = 0
|
||||
|
||||
font-N = <fontconfig pattern>;<vertical offset>
|
||||
font-0 = FiraMono Nerd:size=4;2
|
||||
font-1 = Font Awesome 5 Free Regular:pixelsize=14;-1
|
||||
font-2 = Font Awesome 5 Brands:pixelsize=4;2
|
||||
|
||||
fixed-center = true
|
||||
|
||||
modules-left = i3
|
||||
modules-center = date
|
||||
modules-right = cpu ram
|
||||
|
||||
;--------------------------------------------
|
||||
; modules ;
|
||||
;--------------------------------------------
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 1.0
|
||||
time = "%I:%M %p"
|
||||
label = "%time%"
|
||||
|
||||
format = <label>
|
||||
format-padding = 0
|
||||
|
||||
label-padding = 4
|
||||
|
||||
[module/i3]
|
||||
type = internal/i3
|
||||
|
||||
; Only show workspaces defined on the same output as the bar
|
||||
pin-workspaces = true
|
||||
|
||||
; This will split the workspace name on ':'
|
||||
strip-wsnumbers = true
|
||||
|
||||
index-sort = true
|
||||
enable-scroll = false
|
||||
label-separator = |
|
||||
label-separator-padding = 2
|
||||
|
||||
[module/ram]
|
||||
type = internal/memory
|
||||
|
||||
format = <label>
|
||||
label = " MEM: %mb_free% | %percentage_free%%"
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
format = <label>
|
||||
label = CPU %percentage%%
|
@ -1,15 +1,15 @@
|
||||
configuration {
|
||||
modi: "window,run,ssh";
|
||||
/* width: 50;*/
|
||||
width: 10;
|
||||
lines: 4;
|
||||
/* columns: 1;*/
|
||||
/*columns: 1;*/
|
||||
/* font: "mono 12";*/
|
||||
/* bw: 1;*/
|
||||
/* location: 0;*/
|
||||
padding: 5;
|
||||
/* yoffset: 0;*/
|
||||
/* xoffset: 0;*/
|
||||
/* fixed-num-lines: true;*/
|
||||
/*fixed-num-lines: true;*/
|
||||
show-icons: true;
|
||||
/* terminal: "rofi-sensible-terminal";*/
|
||||
/* ssh-client: "ssh";*/
|
||||
@ -29,7 +29,7 @@ configuration {
|
||||
/* sorting-method: ;*/
|
||||
/* case-sensitive: false;*/
|
||||
/* cycle: true;*/
|
||||
/* sidebar-mode: false;*/
|
||||
/*sidebar-mode: true;*/
|
||||
eh: 1;
|
||||
/* auto-select: false;*/
|
||||
/* parse-hosts: false;*/
|
||||
@ -38,7 +38,7 @@ configuration {
|
||||
/* matching: "normal";*/
|
||||
/* tokenize: true;*/
|
||||
/* m: "-5";*/
|
||||
/* line-margin: 2;*/
|
||||
line-margin: 0;
|
||||
/* line-padding: 1;*/
|
||||
/* filter: ;*/
|
||||
/* separator-style: "dash";*/
|
||||
@ -49,7 +49,7 @@ configuration {
|
||||
/* threads: 0;*/
|
||||
/* scrollbar-width: 8;*/
|
||||
/* scroll-method: 0;*/
|
||||
/* fake-background: "screenshot";*/
|
||||
/*fake-background: "screenshot";*/
|
||||
/* window-format: "{w} {c} {t}";*/
|
||||
/* click-to-exit: true;*/
|
||||
/* show-match: true;*/
|
||||
|
246
configs/rofi/rofi-power-menu
Executable file
246
configs/rofi/rofi-power-menu
Executable file
@ -0,0 +1,246 @@
|
||||
#!/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="<span font_size=\"medium\">$1</span>"
|
||||
text="<span font_size=\"medium\">$2</span>"
|
||||
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
|
@ -1,15 +1,17 @@
|
||||
* {
|
||||
background-color: #2b303b;
|
||||
* {
|
||||
background-color: #2b303b;
|
||||
background-color: black;
|
||||
border-color: #2e343f;
|
||||
text-color: #8ca0aa;
|
||||
border-radius: 5px;
|
||||
spacing: 0;
|
||||
width: 512px;
|
||||
border-radius: 0px;
|
||||
spacing: 0px;
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
inputbar {
|
||||
border: 0 0 1px 0;
|
||||
children: [prompt,entry];
|
||||
children: [entry];
|
||||
}
|
||||
|
||||
prompt {
|
||||
@ -17,15 +19,8 @@ prompt {
|
||||
border: 0 1px 0 0;
|
||||
}
|
||||
|
||||
textbox {
|
||||
background-color: #2e343f;
|
||||
border: 0 0 1px 0;
|
||||
border-color: #282C33;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
|
||||
entry {
|
||||
padding: 16px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
listview {
|
||||
@ -37,6 +32,8 @@ listview {
|
||||
element {
|
||||
border: 0 0 1px 0;
|
||||
padding: 16px;
|
||||
padding-left: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
element selected {
|
||||
|
@ -19,6 +19,12 @@ set $term alacritty
|
||||
# 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.
|
||||
set $menu "rofi -combi-modi window,drun,ssh,run -show combi -show-icons"
|
||||
set $powermenu "rofi -show p -modi p:~/.dotfiles/configs/rofi/rofi-power-menu -lines 6"
|
||||
set $screenclip slurp | grim -g - ~/Pictures/Screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png
|
||||
set $screenshot grim ~/Pictures/screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png
|
||||
set $windowshot swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | $screenclip
|
||||
set $toggle_layout ~/.config/sway/toggle_layout.sh
|
||||
|
||||
|
||||
# Input configuration
|
||||
input * {
|
||||
@ -35,7 +41,7 @@ default_border none
|
||||
### Output configuration
|
||||
#
|
||||
# Default wallpaper (more resolutions are available in @datadir@/backgrounds/sway/)
|
||||
#output * bg @datadir@/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
|
||||
output * bg `find ~/.customization/background -type f | shuf -n 1` fill
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
@ -74,27 +80,29 @@ default_border none
|
||||
#
|
||||
# Basics:
|
||||
#
|
||||
# Start a terminal
|
||||
bindsym $mod+q exec $powermenu
|
||||
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
|
||||
bindsym $mod+e exec nautilus
|
||||
|
||||
# Drag and resize floating windows with mouse right/left drag
|
||||
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'
|
||||
# Multimedia Audio Keys
|
||||
bindsym XF86AudioMute exec "pactl list sinks | grep -q Mute:.no && pactl set-sink-mute 0 1 || pactl set-sink-mute 0 0"
|
||||
bindsym XF86AudioLowerVolume exec "pactl -- set-sink-volume 0 -10%"
|
||||
bindsym XF86AudioRaiseVolume exec "pactl -- set-sink-volume 0 +10%"
|
||||
|
||||
#Increase brightness
|
||||
bindsym XF86MonBrightnessUp exec brightnessctl -d intel_backlight set +10
|
||||
bindsym XF86MonBrightnessDown exec brightnessctl -d intel_backlight set 10-
|
||||
|
||||
# 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:
|
||||
#
|
||||
@ -123,11 +131,16 @@ default_border none
|
||||
# Workspaces:
|
||||
#
|
||||
|
||||
set $ws1 " Code"
|
||||
set $ws2 " Browser"
|
||||
set $ws3 " Music"
|
||||
set $ws4 " Chat"
|
||||
|
||||
# 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+1 workspace $ws1
|
||||
bindsym $mod+2 workspace $ws2
|
||||
bindsym $mod+3 workspace $ws3
|
||||
bindsym $mod+4 workspace $ws4
|
||||
bindsym $mod+5 workspace number 5
|
||||
bindsym $mod+6 workspace number 6
|
||||
bindsym $mod+7 workspace number 7
|
||||
@ -147,6 +160,11 @@ default_border none
|
||||
bindsym $mod+Shift+0 move container to workspace number 10
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
|
||||
assign [class="Firefox"] $ws2
|
||||
assign [class="Chromium"] $ws2
|
||||
assign [class="Google-chrome-beta"] $ws2
|
||||
assign [class="google-chrome"] ""
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
@ -157,9 +175,7 @@ default_border none
|
||||
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
|
||||
bindsym $mod+w exec $toggle_layout
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
@ -172,6 +188,17 @@ default_border none
|
||||
|
||||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# Screenshots
|
||||
# -- Area Screenshot
|
||||
bindsym $mod+Shift+s exec $screenclip
|
||||
# -- Select Window
|
||||
bindsym $mod+Control+s exec $windowshot
|
||||
# -- Entire Screen
|
||||
bindsym $mod+s exec $screenshot
|
||||
|
||||
|
||||
bindsym Alt+Tab exec rofi -show window -modi window
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
|
161
configs/sway/swytcher.sh
Executable file
161
configs/sway/swytcher.sh
Executable file
@ -0,0 +1,161 @@
|
||||
#!/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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# 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, class: .window_properties.class}]
|
||||
|sort_by(.workspace, .name)[]
|
||||
|.workspace + if .focused then "* " else " " end + if .app_id then .app_id else .class end + " - " + .name + " " + (.id|tostring)'
|
||||
)
|
||||
|
||||
# Obtain window list index of last active window
|
||||
# todo
|
||||
index_window_last_active=0
|
||||
for index_window in "${!windows[@]}"
|
||||
do
|
||||
window="${windows[$index_window]}"
|
||||
# obtain index of the active window
|
||||
if [ "${window:1:1}" == "*" ]
|
||||
then
|
||||
index_window_last_active=$(($index_window))
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# get window list to display
|
||||
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+=("<b><span foreground=\"${colors[$index_color]}\">[${workspace}]</span>${window:1}</b>")
|
||||
else
|
||||
windows_separators+=("<span foreground=\"${colors[$index_color]}\">[${workspace}]</span>${window:1}")
|
||||
fi
|
||||
workspace_previous=$workspace
|
||||
done
|
||||
|
||||
# TODO: this breaks when using i3. Comment out for now. Should only execute if running sway.
|
||||
# Select window with rofi, obtaining ID of selected window
|
||||
#screen_pos=$(swaymsg -t get_outputs \
|
||||
# | jq -r \
|
||||
# '.[] | select(.focused).rect | "\(.width)x\(.height)\\+\(.x)\\+\(.y)"')
|
||||
|
||||
# ripgrep
|
||||
#xwayland_output=$(xrandr | rg -oP "[A-Z]+[0-9]+(?= [a-z]+ $screen_pos)")
|
||||
|
||||
#monitor_id=$(rofi --help | rg $xwayland_output -B1 \
|
||||
# | sed -sr '/ID/!d;s/[^:]*:\s([0-9])/\1/')
|
||||
|
||||
|
||||
# Select window with rofi, obtaining ID of selected window
|
||||
# TODO: Use multiple columns while inserting appropriate empty lines
|
||||
# and adjusting line number accordingly in order to visually
|
||||
# separate the list by workspace
|
||||
|
||||
if [ -z "$monitor_id" ]
|
||||
then
|
||||
idx_selected=$printf '%s\n' "${windows_separators[@]}" | rofi -dmenu -i -p "$command_" -a "$index_workspace_active" -format i -selected-row "$index_window_last_active" -no-custom -s -width 80 -lines 30 -markup-rows)
|
||||
else
|
||||
idx_selected=$(printf '%s\n' "${windows_separators[@]}" | rofi -monitor $monitor_id -dmenu -i -p "$command_" -a "$index_workspace_active" -format i -selected-row "$index_window_last_active" -no-custom -s -width 80 -lines 30 -markup-rows)
|
||||
fi
|
||||
|
||||
# if no entry selected (e.g. user exitted with escape), end
|
||||
if [ -z "$idx_selected" ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
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
|
||||
if [ ! -z "$id_selected" ]
|
||||
then
|
||||
swaymsg "[con_id=$id_selected] $command_"
|
||||
fi(
|
26
configs/sway/toggle_layout.sh
Executable file
26
configs/sway/toggle_layout.sh
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
|
||||
WORKSPACE=$(swaymsg -t get_workspaces --raw | jq '.[] | select(.focused == true)')
|
||||
|
||||
WORKSPACE_ID=$(echo $WORKSPACE | jq ".name")
|
||||
WORKSPACE_MODE=$(echo $WORKSPACE | jq ".layout");
|
||||
|
||||
MODE_SPLITH='"splith"'
|
||||
MODE_SPLITV='"splitv"'
|
||||
MODE_TABBED='"tabbed"'
|
||||
MODE_STACKED='"stacked"'
|
||||
|
||||
echo $WORKSPACE_MODE
|
||||
|
||||
if [ $WORKSPACE_MODE = $MODE_SPLITH ]; then
|
||||
swaymsg "workspace $WORKSPACE_ID; layout splitv"
|
||||
elif [ $WORKSPACE_MODE = $MODE_SPLITV ]; then
|
||||
swaymsg "workspace $WORKSPACE_ID; layout tabbed"
|
||||
elif [ $WORKSPACE_MODE = $MODE_TABBED ]; then
|
||||
swaymsg "workspace $WORKSPACE_ID; layout stacking"
|
||||
elif [ $WORKSPACE_MODE = $MODE_STACKED ]; then
|
||||
swaymsg "workspace $WORKSPACE_ID; layout splith"
|
||||
fi
|
||||
|
||||
echo $WORKSPACE_ID;
|
||||
|
@ -1,171 +1,160 @@
|
||||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||
"height": 20, // 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", "custom/media"],
|
||||
"modules-center": ["custom/clock", "custom/spotify"],
|
||||
"modules-right": ["pulseaudio", "network", "cpu", "memory", "battery", "battery#bat2"],
|
||||
// Modules configuration
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"all-outputs": true,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": " Terminal",
|
||||
"2": " Browser",
|
||||
"3": "",
|
||||
"4": "",
|
||||
"5": "",
|
||||
"urgent": "",
|
||||
"focused": "",
|
||||
"default": ""
|
||||
}
|
||||
},
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
"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"
|
||||
"height": 20,
|
||||
"spacing": 4,
|
||||
"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
|
||||
"modules-center": ["custom/spotify"],
|
||||
"modules-right": ["pulseaudio", "network", "cpu", "memory", "battery", "custom/clock" ],
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"all-outputs": true,
|
||||
"format": "{name}",
|
||||
"format-icons": {
|
||||
"urgent": "",
|
||||
"focused": "",
|
||||
"default": ""
|
||||
}
|
||||
},
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
"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": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
"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": " "
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
"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": "<span color=\"#f53c3c\"></span> ",
|
||||
"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": {
|
||||
"interval": 60,
|
||||
"format": "{:%H:%M}",
|
||||
"max-length": 25
|
||||
"random-icons": {
|
||||
"off": "<span color=\"#f53c3c\"></span> ",
|
||||
"on": " "
|
||||
},
|
||||
"custom/clock": {
|
||||
"exec": "date +'%H:%M'",
|
||||
"interval": 10
|
||||
"repeat-icons": {
|
||||
"on": " "
|
||||
},
|
||||
"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-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/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
|
||||
}
|
||||
"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
|
||||
},
|
||||
"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-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/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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/style.css"
|
||||
|
||||
killall waybar;
|
||||
|
||||
trap "killall waybar" EXIT
|
||||
|
||||
while true; do
|
||||
|
@ -1,51 +1,41 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
font-family: Font Awesome, Hack Nerd Font;
|
||||
font-size: 13px;
|
||||
transition-duration: 0s;
|
||||
/*color: #c0c5ce;*/
|
||||
border: none;
|
||||
font-family: Font Awesome, Hack Nerd Font;
|
||||
font-size: 13px;
|
||||
opacity: 0.95;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: transparent;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
window > box {
|
||||
margin: 10px;
|
||||
margin-bottom: 0px;
|
||||
background: #2b303b;
|
||||
padding: 3px;
|
||||
background: black;
|
||||
padding: 5px;
|
||||
/*border-bottom: 3px solid rgba(100, 114, 125, 0.5);*/
|
||||
}
|
||||
|
||||
window {
|
||||
background: #2b303b;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
margin: 0 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0px 8px;
|
||||
padding: 0px 9px;
|
||||
color: white;
|
||||
background: transparent;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#workspaces button:hover{
|
||||
opacity: 0.9;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background-color: white;
|
||||
background-color: white;
|
||||
color: #2b303b;
|
||||
}
|
||||
|
||||
#battery, #network, #pulseaudio, #clock, #custom-power, #custom-qbitstats {
|
||||
margin: 0px 3px 0px 1px;
|
||||
min-width: 10px;
|
||||
|
||||
/*margin: 0px 3px 0px 1px;*/
|
||||
}
|
||||
|
||||
#clock {
|
||||
@ -54,8 +44,8 @@ window {
|
||||
}
|
||||
|
||||
.custom-spotify {
|
||||
padding: 0 10px;
|
||||
margin: 0 4px;
|
||||
/*padding: 0 10px;*/
|
||||
/*margin: 0 4px;*/
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
@ -67,7 +57,7 @@ window {
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: #689d6a;
|
||||
color: #689d6a;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
@ -91,6 +81,6 @@ window {
|
||||
}
|
||||
|
||||
#waybar > box:nth-child(2) > box:nth-child(3) > * > label {
|
||||
padding: 0 3px;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user