Compare commits
30 Commits
5e56166650
...
master
Author | SHA1 | Date | |
---|---|---|---|
2e108ba613
|
|||
bf5a5d2356
|
|||
08e5e080f5
|
|||
87707efe0d
|
|||
cb21220206
|
|||
0c0ab0acec
|
|||
d36941b3d1
|
|||
4de2de5cf7 | |||
8ef05d2a11
|
|||
257c6a0b38
|
|||
fd9de58b0f
|
|||
263aeed08f | |||
e986f0eabb | |||
267e505265 | |||
3f7e576869 | |||
f683d77a39 | |||
065f16607f | |||
a502df8e81 | |||
8bac906e77 | |||
9fef9181e1 | |||
430064c8de | |||
0aa36e8575 | |||
f5ab4aad25 | |||
5623991a73 | |||
2158f65d7a | |||
ff4ad34194 | |||
a018d06955 | |||
0ea7a9251f | |||
d9cca35b59 | |||
52e892a323 |
@@ -5,35 +5,7 @@ function log_this() {
|
||||
echo "$TSTMP : " $1 >> $DWL_LOG_FILE
|
||||
}
|
||||
|
||||
log_this "Entourage: $XDG_RUNTIME_DIR - $DWL_TAGS_FILE"
|
||||
|
||||
NUM_DISPS=$(wlr-randr | grep -E "^\w+" | wc -l)
|
||||
log_this "Entourage: Configuring ${NUM_DISPS} displays"
|
||||
|
||||
if [[ $NUM_DISPS > 1 ]]; then
|
||||
# Dual screen
|
||||
# wlr-randr --output HDMI-A-1 --on --pos 0,0 --output eDP-1 --on --pos 0,1050
|
||||
# wlr-randr --output HDMI-A-1 --on --pos 0,0 --output eDP-1 --on --pos 2560,0
|
||||
|
||||
# With Dell 1920x1200 display - vertical arrangement
|
||||
#
|
||||
# .--------------------------------.
|
||||
# | |
|
||||
# | DELL 24" 1920x1200 |
|
||||
# | (HDMI-A-1) |
|
||||
# | |
|
||||
# `--------------------------------'
|
||||
# | |
|
||||
# | LAPTOP 13" 1366x768 |
|
||||
# | (eDP-1) |
|
||||
# | |
|
||||
# `-------------------------'
|
||||
#
|
||||
wlr-randr --output HDMI-A-1 --on --pos 0,0 --output eDP-1 --on --pos 300,1200
|
||||
else
|
||||
# Single laptop screen
|
||||
wlr-randr --output HDMI-A-1 --off --output eDP-1 --on --pos 0,0
|
||||
fi
|
||||
log_this "Entourage: $XDG_RUNTIME_DIR"
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# Let DWL start
|
||||
@@ -44,32 +16,27 @@ do
|
||||
sleep 1
|
||||
done
|
||||
log_this "DWL ready!"
|
||||
log_this "Entourage: $DWL_TAGS_FILE"
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# Background
|
||||
# Background and support tasks
|
||||
# ----------------------------------------------------------
|
||||
# TODO: Consuimng too much CPU - keeps fan spinning
|
||||
# swaybg --mode fill --image ~/.config/wallpaper.jpg &
|
||||
# source ~/bin/dwl.wallpaper_setup
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# Lock when idle
|
||||
# ----------------------------------------------------------
|
||||
log_this "Entourage: Starting screen locker with 10min idle time"
|
||||
swayidle -w timeout 600 swaylock &
|
||||
source ~/bin/dwl.idle_setup
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# Redirect STDIN to STDOUT and pass along to tags script
|
||||
# ----------------------------------------------------------
|
||||
DWL_BAR=$DWL_BAR_PATH/somebar
|
||||
log_this "Entourage: Configuring $(wlr-randr | grep -E "^\w+" | wc -l) displays"
|
||||
source ~/bin/dwl.randr_setup
|
||||
|
||||
log_this "Entourage: Setting up notification"
|
||||
source ~/bin/dwl.notification_setup
|
||||
|
||||
log_this "Entourage: Setting up MPD support"
|
||||
source ~/bin/dwl.mpd_support_setup
|
||||
|
||||
export SOMEBAR_FIFO=$XDG_RUNTIME_DIR/somebar.fifo
|
||||
mkfifo $SOMEBAR_FIFO -m666
|
||||
log_this "Entourage: Starting somebar using $SOMEBAR_FIFO"
|
||||
conky -c ~/.conkyrc > $SOMEBAR_FIFO &
|
||||
|
||||
(while read line
|
||||
do
|
||||
echo $line
|
||||
done) | ($DWL_BAR -s $SOMEBAR_FIFO > $XDG_RUNTIME_DIR/somebar.log 2>&1)
|
||||
source ~/bin/dwl.bar_setup
|
||||
|
||||
pipewire &
|
||||
wireplumber &
|
||||
|
11
dwl.service
11
dwl.service
@@ -1,9 +1,12 @@
|
||||
# Systemd service to start DWL
|
||||
# ----------------------------------------------------------
|
||||
#
|
||||
# Put this file in following directory:
|
||||
# Symlink this file in following directory as follows:
|
||||
#
|
||||
# ~/.config/systemd/user
|
||||
# $ cd ~/.config/systemd/user
|
||||
# $ ln -s <snips>/dwl.service dwl@.service
|
||||
#
|
||||
# Be sure to link it as a named service with (@.service)
|
||||
#
|
||||
# Start this service with something like this:
|
||||
#
|
||||
@@ -36,7 +39,11 @@ Environment=XDG_RUNTIME_DIR=%I
|
||||
Environment=DWL_TAGS_FILE=%I/dwl.tags
|
||||
Environment=DWL_LOG_FILE=%I/dwl.log
|
||||
Environment=DWLTAGS_FMT=DZEN
|
||||
Environment=XDG_CURRENT_DESKTOP=DWL
|
||||
Environment=XKB_DEFAULT_VARIANT=altgr-intl
|
||||
Environment=XKB_DEFAULT_OPTIONS=caps:escape,compose:rctrl
|
||||
Environment=PIPEWIRE_RUNTIME_DIR=/run/user/501
|
||||
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/501/bus
|
||||
ExecStart=%h/bin/dwl.session
|
||||
Restart=on-failure
|
||||
RestartSec=1
|
||||
|
@@ -4,9 +4,11 @@ echo $XDG_RUNTIME_DIR used for Wayland session
|
||||
export WLR_LIBINPUT_NO_DEVICES=1
|
||||
|
||||
export DWL_PATH=/usr/local/bin
|
||||
# export DWL_PATH=/home/mahesh/git/dwl_20240101
|
||||
# export DWL_PATH=/home/mahesh/git/furnish/heshapps_dwl
|
||||
export DWL_BAR_PATH=/usr/local/bin
|
||||
# export DWL_BAR_PATH=/home/mahesh/git/somebar_20240217/build
|
||||
export DWL_BAR=$DWL_BAR_PATH/somebar
|
||||
export SOMEBAR_FIFO=$XDG_RUNTIME_DIR/somebar.fifo
|
||||
|
||||
# export DWLTAGS_SHOW_MON=1
|
||||
export PATH=~/bin:$PATH
|
||||
|
16
dwl.switch_context
Executable file
16
dwl.switch_context
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
function log_this() {
|
||||
TSTMP=$(date)
|
||||
echo "$TSTMP : " $1 >> $DWL_LOG_FILE
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# Let DWL start
|
||||
# ----------------------------------------------------------
|
||||
|
||||
log_this "Switch Context: Configuring $(wlr-randr | grep -E "^\w+" | wc -l) displays"
|
||||
source ~/bin/dwl.randr_setup
|
||||
|
||||
log_this "Switch Context: Starting somebar using $SOMEBAR_FIFO"
|
||||
source ~/bin/dwl.bar_setup
|
70
dwl_act
70
dwl_act
@@ -11,17 +11,79 @@ echo "$0 - $timestamp - $act" >> ~/dwl_key_act.log
|
||||
#
|
||||
|
||||
case $act in
|
||||
# Without modifier
|
||||
vol_mute) wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle;;
|
||||
vol_lower) wpctl set-volume --limit 1.0 @DEFAULT_AUDIO_SINK@ 10%-;;
|
||||
vol_raise) wpctl set-volume --limit 1.0 @DEFAULT_AUDIO_SINK@ 10%+;;
|
||||
# mic_mute) ;;
|
||||
# bright_low) ;;
|
||||
# bright_high) ;;
|
||||
# disp) ;;
|
||||
mic_mute) rofi -show sound -modes "sound:~/bin/rofi_sound.pl";;
|
||||
bright_low) echo 20 >> /sys/class/backlight/intel_backlight/brightness;;
|
||||
bright_high) echo 200 >> /sys/class/backlight/intel_backlight/brightness;;
|
||||
media_toggle) mpc toggle;; # XF86AudioPlay
|
||||
media_stop) mpc stop;; # XF86AudioStop
|
||||
media_prev) mpc prev;; # XF86AudioPrev
|
||||
media_next) mpc next;; # XF86AudioNext
|
||||
disp) /home/mahesh/bin/switch_context.sh;;
|
||||
# wlan) ;;
|
||||
# tools) ;;
|
||||
# search) ;;
|
||||
launch) wldash;;
|
||||
# explore) ;;
|
||||
print) grim -c -g "$(slurp -o -r -c '#ff0000ff')" -t ppm - | satty --filename - --fullscreen --output-filename ~/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png ;;
|
||||
|
||||
# With CTRL modifier
|
||||
# C_vol_mute) ;;
|
||||
# C_vol_lower) ;;
|
||||
# C_vol_raise) ;;
|
||||
# C_mic_mute) ;;
|
||||
# C_bright_low) ;;
|
||||
# C_bright_high) ;;
|
||||
# C_media_toggle) ;;
|
||||
# C_media_stop) ;;
|
||||
# C_media_prev) ;;
|
||||
# C_media_next) ;;
|
||||
# C_disp) ;;
|
||||
# C_wlan) ;;
|
||||
# C_tools) ;;
|
||||
# C_search) ;;
|
||||
# C_launch) ;;
|
||||
# C_explore) ;;
|
||||
C_print) grim -c -g "$(slurp -d -c '#0000ffff')" -t ppm - | satty --filename - --fullscreen --output-filename ~/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png ;;
|
||||
|
||||
# With SHIFT modifier
|
||||
# S_vol_mute) ;;
|
||||
# S_vol_lower) ;;
|
||||
# S_vol_raise) ;;
|
||||
# S_mic_mute) ;;
|
||||
# S_bright_low) ;;
|
||||
# S_bright_high) ;;
|
||||
# S_media_toggle) ;;
|
||||
# S_media_stop) ;;
|
||||
# S_media_prev) ;;
|
||||
# S_media_next) ;;
|
||||
# S_disp) ;;
|
||||
# S_wlan) ;;
|
||||
# S_tools) ;;
|
||||
# S_search) ;;
|
||||
# S_launch) ;;
|
||||
# S_explore) ;;
|
||||
# S_print) ;;
|
||||
|
||||
# With SHIFT+CTRL modifiers
|
||||
# SC_vol_mute) ;;
|
||||
# SC_vol_lower) ;;
|
||||
# SC_vol_raise) ;;
|
||||
# SC_mic_mute) ;;
|
||||
# SC_bright_low) ;;
|
||||
# SC_bright_high) ;;
|
||||
# SC_media_toggle) ;;
|
||||
# SC_media_stop) ;;
|
||||
# SC_media_prev) ;;
|
||||
# SC_media_next) ;;
|
||||
# SC_disp) ;;
|
||||
# SC_wlan) ;;
|
||||
# SC_tools) ;;
|
||||
# SC_search) ;;
|
||||
# SC_launch) ;;
|
||||
|
||||
*) echo "Unknown action '$act'";;
|
||||
esac
|
||||
|
12
dwl_entourage/dwl.bar_setup
Normal file
12
dwl_entourage/dwl.bar_setup
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
# killall conky
|
||||
killall unibar
|
||||
killall somebar
|
||||
SOMEBAR_INST_FIFO=$(mktemp --dry-run --suffix=.fifo --tmpdir=$XDG_RUNTIME_DIR somebar_XXXXXX)
|
||||
|
||||
mkfifo $SOMEBAR_INST_FIFO -m666
|
||||
# conky -c ~/.conkyrc > $SOMEBAR_INST_FIFO &
|
||||
nohup unibar --music-progress > $SOMEBAR_INST_FIFO &
|
||||
|
||||
$DWL_BAR -s $SOMEBAR_INST_FIFO > $SOMEBAR_INST_FIFO.log 2>&1
|
||||
|
3
dwl_entourage/dwl.idle_setup
Normal file
3
dwl_entourage/dwl.idle_setup
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
swayidle -w \
|
||||
timeout 6000 'systemctl hybrid-sleep' &
|
2
dwl_entourage/dwl.mpd_support_setup
Normal file
2
dwl_entourage/dwl.mpd_support_setup
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
musnify-mpd -h localhost -p 6600 &
|
9
dwl_entourage/dwl.notification_setup
Normal file
9
dwl_entourage/dwl.notification_setup
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# mako --font "Iosevka Term" \
|
||||
# --background-color "#777777AA" \
|
||||
# --text-color "#EEEEEE" \
|
||||
# --border-color "#777777AA" \
|
||||
# --border-radius 5 \
|
||||
# --default-timeout 5000 &
|
||||
|
||||
swaync &
|
3
dwl_entourage/dwl.randr_setup
Normal file
3
dwl_entourage/dwl.randr_setup
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
cmd=$(get_randr.pl)
|
||||
$cmd
|
3
dwl_entourage/dwl.wallpaper_setup
Normal file
3
dwl_entourage/dwl.wallpaper_setup
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
swaybg --mode fill --image ~/.config/wallpaper.jpg &
|
||||
|
59
get_neovim.sh
Executable file
59
get_neovim.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
|
||||
function die() {
|
||||
echo "ERROR! $1" && exit 1
|
||||
}
|
||||
|
||||
START_DIR=$(pwd)
|
||||
FILE_DIR="/opt/neovim"
|
||||
FILE_NAME="nvim-linux-x86_64.appimage"
|
||||
FILE_URL="https://github.com/neovim/neovim/releases/download/nightly"
|
||||
TMP_FILE=$(mktemp $FILE_DIR/nvim.XXXXXX.appimage)
|
||||
|
||||
echo "Downloading latest nightly $FILE_NAME to $TMP_FILE"
|
||||
# curl -L -o $TMP_FILE $FILE_URL/$FILE_NAME || die "Can't cURL $FILE_NAME"
|
||||
wget -O $TMP_FILE $FILE_URL/$FILE_NAME > /dev/null 2>&1 || die "Can't cURL $FILE_NAME"
|
||||
|
||||
chmod +x $TMP_FILE || die "Can't chmod $TMP_FILE"
|
||||
|
||||
NEWVER=$($TMP_FILE --version | head -1)
|
||||
EXTVER=$(test -e $FILE_DIR/.version && cat $FILE_DIR/.version || echo "")
|
||||
echo "Version check - New version ($NEWVER) =?= current ($EXTVER)"
|
||||
|
||||
if [ "$NEWVER" == "$EXTVER" ]; then
|
||||
echo "Not updating. New version ($NEWVER) same as current ($EXTVER)"
|
||||
else
|
||||
if [ -e $FILE_NAME ]; then
|
||||
rm $FILE_NAME || die "Can't remove $FILE_NAME"
|
||||
echo "Removed $FILE_NAME"
|
||||
fi
|
||||
cp $TMP_FILE $FILE_DIR/$FILE_NAME || die "Can't copy $TMP_FILE to $FILE_NAME"
|
||||
|
||||
echo "Making $FILE_DIR/$FILE_NAME executable"
|
||||
chmod +x $FILE_DIR/$FILE_NAME || die "Can't chmod $FILE_DIR/$FILE_NAME"
|
||||
|
||||
echo $NEWVER > $FILE_DIR/.version || die "Can't write $FILE_DIR/.version"
|
||||
|
||||
# Extract nvim for other (non-root) users to run
|
||||
if [ -d "$FILE_DIR/squashfs-root" ]; then
|
||||
rm -rf $FILE_DIR/squashfs-root || die "Can't delete $FILE_DIR/squashfs-root"
|
||||
fi
|
||||
|
||||
cd $FILE_DIR
|
||||
|
||||
echo "Extracting $NEWVER"
|
||||
$TMP_FILE --appimage-extract > /dev/null 2>&1 || die "Can't extract appimage $FILE_NAME"
|
||||
if [ -L "$FILE_DIR/nvim" ]; then
|
||||
rm $FILE_DIR/nvim || die "Can't remove $FILE_DIR/nvim"
|
||||
fi
|
||||
if [ -x "$FILE_DIR/squashfs-root/AppRun" ]; then
|
||||
ln -s $FILE_DIR/squashfs-root/AppRun nvim
|
||||
else
|
||||
die "$FILE_DIR/squash-root/AppRun not executable"
|
||||
fi
|
||||
cd $START_DIR
|
||||
|
||||
echo "Version $NEWVER ready!"
|
||||
fi
|
||||
rm $TMP_FILE || die "Can't delete $TMP_FILE"
|
||||
echo "Done with Neovim"
|
176
get_randr.pl
Executable file
176
get_randr.pl
Executable file
@@ -0,0 +1,176 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Data::Dumper;
|
||||
|
||||
unless (exists $ENV{'WAYLAND_DISPLAY'}) {
|
||||
die "Not running in WAYLAND";
|
||||
}
|
||||
|
||||
my $app = {};
|
||||
$app->{'displays'} = {};
|
||||
$app->{'setup'} = "";
|
||||
|
||||
get_display_info($app);
|
||||
show_debug(Data::Dumper->Dump([$app]));
|
||||
my $wlr_line = get_wlr_line($app);
|
||||
notify($app);
|
||||
print "${wlr_line}\n";
|
||||
|
||||
# -----------
|
||||
# Subroutines
|
||||
# -----------
|
||||
sub get_display_info {
|
||||
my ($app) = @_;
|
||||
|
||||
open (my $RANDRH, "wlr-randr |") or die "Couldn't run wlr-randr";
|
||||
my @lines = map { chomp(); $_ } <$RANDRH>;
|
||||
close ($RANDRH);
|
||||
|
||||
my $state = "IDLE";
|
||||
my $curr_disp = "UNDEF";
|
||||
my $disp_info = {};
|
||||
|
||||
foreach my $ln (@lines) {
|
||||
if (my ($dn, $dd) = $ln =~ /^(\S+)\s+"([^"]+)"$/) {
|
||||
$state = "IN_DISP";
|
||||
|
||||
unless (exists $disp_info->{$dn}) {
|
||||
$disp_info->{$dn} = {};
|
||||
$disp_info->{$dn}->{'name'} = $dn;
|
||||
$curr_disp = $dn;
|
||||
|
||||
$disp_info->{$dn}->{'desc'} = $dd;
|
||||
|
||||
}
|
||||
}
|
||||
if (($state eq "IN_DISP") || ($state eq "IN_MODES")) {
|
||||
if (my ($k,$v) = $ln =~ /\s+(\w+)\s*:\s*(.*)?$/) {
|
||||
if ($k eq "Modes") {
|
||||
$state = "IN_MODES";
|
||||
$disp_info->{$curr_disp}->{'modes'} = [];
|
||||
} else {
|
||||
$disp_info->{$curr_disp}->{$k} = $v;
|
||||
$state = "IN_DISP"
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($state eq "IN_MODES") {
|
||||
if (my ($mode_string) = $ln =~ /\s+(.+)$/) {
|
||||
# 1920x1080 px, 60.000999 Hz (preferred, current)
|
||||
my ($h, $v, $f, $a) = $mode_string =~ /(\d+)x(\d+)\s*px,\s*(\S+)\s*Hz\s*\((.*)\)$/;
|
||||
my $mode_info = {};
|
||||
$mode_info->{'horizontal'} = $h;
|
||||
$mode_info->{'vertical'} = $v;
|
||||
$mode_info->{'refresh_freq'} = $f;
|
||||
if (defined $a) {
|
||||
$mode_info->{'attributes'} = [split (/\s*,\s*/, $a)];
|
||||
if ($a =~ /current/) {
|
||||
$disp_info->{$curr_disp}->{'current_mode'} = $mode_info;
|
||||
}
|
||||
if ($a =~ /preferred/) {
|
||||
$disp_info->{$curr_disp}->{'preferred_mode'} = $mode_info;
|
||||
}
|
||||
}
|
||||
|
||||
push(@{$disp_info->{$curr_disp}->{'modes'}}, $mode_info);
|
||||
|
||||
}
|
||||
}
|
||||
# show_debug("$state: $ln");
|
||||
}
|
||||
|
||||
$app->{'displays'} = $disp_info;
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub get_wlr_line {
|
||||
my ($app) = @_;
|
||||
my $matching_disps;
|
||||
|
||||
my $wlr_line = "UNKNOWN";
|
||||
|
||||
my $num_disps = scalar(keys(%{$app->{'displays'}}));
|
||||
if ($num_disps == 1) {
|
||||
show_debug("Single display configuration");
|
||||
$app->{'setup'} = "Single display configuration";
|
||||
$wlr_line = "wlr-randr --output HDMI-A-1 --off --output eDP-1 --on --pos 0,0"
|
||||
} elsif ($num_disps > 1) {
|
||||
# Determine setup (Custom)
|
||||
#
|
||||
# - Den room (DELL 27" monitor on the left of laptop display)
|
||||
$matching_disps = has_display_with_name($app, "DELL U27");
|
||||
if (scalar (@{$matching_disps}) == 1) {
|
||||
my ($h, $v) = get_display_current_dimensions($app, $matching_disps->[0]);
|
||||
my $disp_name = $matching_disps->[0]->{'name'};
|
||||
show_debug("Multiple display configuration: Den room");
|
||||
$app->{'setup'} = "Multiple display configuration: Den room";
|
||||
|
||||
$wlr_line = "wlr-randr --output ${disp_name} --on --pos 0,0 --output eDP-1 --on --pos ${h},0";
|
||||
}
|
||||
|
||||
#
|
||||
# - Media room (DELL 24" monitor above laptop display)
|
||||
$matching_disps = has_display_with_name($app, "DELL U24");
|
||||
if (scalar (@{$matching_disps}) == 1) {
|
||||
my ($h, $v) = get_display_current_dimensions($app, $matching_disps->[0]);
|
||||
my $disp_name = $matching_disps->[0]->{'name'};
|
||||
show_debug("Multiple display configuration: Media room");
|
||||
$app->{'setup'} = "Multiple display configuration: Media room";
|
||||
|
||||
$wlr_line = "wlr-randr --output ${disp_name} --on --pos 0,0 --output eDP-1 --on --pos 0,${v}";
|
||||
}
|
||||
} else {
|
||||
show_debug("No displays?!");
|
||||
}
|
||||
|
||||
# Adjust scale on Apple pane. Assumes that above lines always put eDP-1 as the last display
|
||||
$matching_disps = has_display_with_name($app, "Apple Computer");
|
||||
if (scalar (@{$matching_disps}) == 1) {
|
||||
show_debug("Scaling Apple MacBook Pro display");
|
||||
|
||||
$wlr_line .= " --scale 1.5";
|
||||
}
|
||||
|
||||
return $wlr_line;
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub has_display_with_name {
|
||||
my ($app, $name) = @_;
|
||||
my $found = [];
|
||||
|
||||
foreach my $k (keys %{$app->{'displays'}}) {
|
||||
if ($app->{'displays'}->{$k}->{'desc'} =~ /$name/) {
|
||||
push(@{$found}, $app->{'displays'}->{$k});
|
||||
}
|
||||
}
|
||||
|
||||
return $found;
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub get_display_current_dimensions {
|
||||
my ($app, $disp) = @_;
|
||||
|
||||
return ($disp->{'current_mode'}->{'horizontal'}, $disp->{'current_mode'}->{'vertical'});
|
||||
}
|
||||
# -----------
|
||||
sub notify {
|
||||
my ($app) = @_;
|
||||
|
||||
system("notify-send",
|
||||
"--app-name=get_randr.pl",
|
||||
"--icon=/usr/share/icons/Adwaita/scalable/devices/video-display.svg",
|
||||
"--expire-time=5000",
|
||||
"Display Configuration Changed", "Now set to - $app->{'setup'}");
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub show_debug {
|
||||
my ($str) = @_;
|
||||
# UNCOMMENT TO DEBUG # print "[DEBUG] $str\n";
|
||||
}
|
||||
|
59
get_wezterm.sh
Executable file
59
get_wezterm.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
|
||||
function die() {
|
||||
echo "ERROR! $1" && exit 1
|
||||
}
|
||||
|
||||
START_DIR=$(pwd)
|
||||
FILE_DIR="/opt/wezterm"
|
||||
FILE_NAME="WezTerm-nightly-Ubuntu20.04.AppImage"
|
||||
FILE_URL="https://github.com/wez/wezterm/releases/download/nightly"
|
||||
TMP_FILE=$(mktemp $FILE_DIR/wezterm.XXXXXX.appimage)
|
||||
|
||||
echo "Downloading latest nightly $FILE_NAME to $TMP_FILE"
|
||||
# curl -L -o $TMP_FILE $FILE_URL/$FILE_NAME || die "Can't cURL $FILE_NAME"
|
||||
wget -O $TMP_FILE $FILE_URL/$FILE_NAME > /dev/null 2>&1 || die "Can't cURL $FILE_NAME"
|
||||
|
||||
chmod +x $TMP_FILE || die "Can't chmod $TMP_FILE"
|
||||
|
||||
NEWVER=$($TMP_FILE --version | head -1)
|
||||
EXTVER=$(test -e $FILE_DIR/.version && cat $FILE_DIR/.version || echo "")
|
||||
echo "Version check - New version ($NEWVER) =?= current ($EXTVER)"
|
||||
|
||||
if [ "$NEWVER" == "$EXTVER" ]; then
|
||||
echo "Not updating. New version ($NEWVER) same as current ($EXTVER)"
|
||||
else
|
||||
if [ -e $FILE_NAME ]; then
|
||||
rm $FILE_NAME || die "Can't remove $FILE_NAME"
|
||||
echo "Removed $FILE_NAME"
|
||||
fi
|
||||
cp $TMP_FILE $FILE_DIR/$FILE_NAME || die "Can't copy $TMP_FILE to $FILE_NAME"
|
||||
|
||||
echo "Making $FILE_DIR/$FILE_NAME executable"
|
||||
chmod +x $FILE_DIR/$FILE_NAME || die "Can't chmod $FILE_DIR/$FILE_NAME"
|
||||
|
||||
echo $NEWVER > $FILE_DIR/.version || die "Can't write $FILE_DIR/.version"
|
||||
|
||||
# Extract wezterm for other (non-root) users to run
|
||||
if [ -d "$FILE_DIR/squashfs-root" ]; then
|
||||
rm -rf $FILE_DIR/squashfs-root || die "Can't delete $FILE_DIR/squashfs-root"
|
||||
fi
|
||||
|
||||
cd $FILE_DIR
|
||||
|
||||
echo "Extracting $NEWVER"
|
||||
$TMP_FILE --appimage-extract > /dev/null 2>&1 || die "Can't extract appimage $FILE_NAME"
|
||||
if [ -L "$FILE_DIR/wezterm" ]; then
|
||||
rm $FILE_DIR/wezterm || die "Can't remove $FILE_DIR/wezterm"
|
||||
fi
|
||||
if [ -x "$FILE_DIR/squashfs-root/AppRun" ]; then
|
||||
ln -s $FILE_DIR/squashfs-root/AppRun wezterm
|
||||
else
|
||||
die "$FILE_DIR/squash-root/AppRun not executable"
|
||||
fi
|
||||
cd $START_DIR
|
||||
|
||||
echo "Version $NEWVER ready!"
|
||||
fi
|
||||
rm $TMP_FILE || die "Can't delete $TMP_FILE"
|
||||
echo "Done with Wezterm"
|
23
ghostty.config
Normal file
23
ghostty.config
Normal file
@@ -0,0 +1,23 @@
|
||||
# Ghostty configuration
|
||||
# ---------------------
|
||||
|
||||
# Font
|
||||
font-family = Iosevka Term
|
||||
font-size = 15
|
||||
|
||||
# Theme
|
||||
# theme = MaterialOcean
|
||||
theme = 0x96f
|
||||
|
||||
# Cursor
|
||||
cursor-color = #aa2222
|
||||
cursor-opacity = 0.8
|
||||
cursor-style = block
|
||||
cursor-style-blink = false
|
||||
shell-integration-features = no-cursor
|
||||
|
||||
# Window
|
||||
window-decoration = false
|
||||
window-padding-x = 5
|
||||
window-padding-y = 5
|
||||
window-padding-balance = true
|
@@ -35,7 +35,7 @@ require("lazy").setup({
|
||||
"nathanaelkane/vim-indent-guides",
|
||||
-- "https://github.com/intel-sandbox/vim-iosf.git", -- intel
|
||||
-- "https://github.com/intel-sandbox/vim-pcietrk", -- intel
|
||||
"vhda/verilog_systemverilog.vim",
|
||||
--"vhda/verilog_systemverilog.vim",
|
||||
{
|
||||
'nvim-telescope/telescope.nvim', tag = '0.1.2',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' }
|
||||
@@ -44,14 +44,107 @@ require("lazy").setup({
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
-- build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build'
|
||||
build = 'make'
|
||||
}
|
||||
},
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
branch = 'master',
|
||||
lazy = false,
|
||||
build = ":TSUpdate"
|
||||
},
|
||||
"gmlarumbe/tree-sitter-systemverilog",
|
||||
-- Copilot setup
|
||||
-- "github/copilot.vim",
|
||||
"zbirenbaum/copilot.lua",
|
||||
"ofseed/copilot-status.nvim",
|
||||
-- {
|
||||
-- "zbirenbaum/copilot-cmp",
|
||||
-- config = function ()
|
||||
-- require("copilot_cmp").setup()
|
||||
-- end
|
||||
-- }
|
||||
})
|
||||
|
||||
-- Coppilot settings
|
||||
-- * Disable by default
|
||||
vim.g.copilot_filetypes = {
|
||||
["*"] = false,
|
||||
}
|
||||
|
||||
-- Copilot.lua setup
|
||||
require("copilot").setup({
|
||||
panel = {
|
||||
auto_refresh = false,
|
||||
keymap = {
|
||||
accept = "<CR>",
|
||||
jump_prev = "[[",
|
||||
jump_next = "]]",
|
||||
refresh = "gr",
|
||||
open = "<M-CR>",
|
||||
},
|
||||
},
|
||||
suggestion = {
|
||||
auto_trigger = true,
|
||||
keymap = {
|
||||
accept = "<M-c>",
|
||||
prev = "<M-[>",
|
||||
next = "<M-]>",
|
||||
dismiss = "<C-]>",
|
||||
},
|
||||
},
|
||||
})
|
||||
-- Treesitter
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
||||
ensure_installed = { "comment", "perl", "ruby", "verilog", "verilog", "rust" },
|
||||
|
||||
-- Install parsers synchronously (only applied to `ensure_installed`)
|
||||
sync_install = false,
|
||||
|
||||
-- Automatically install missing parsers when entering buffer
|
||||
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
|
||||
auto_install = true,
|
||||
|
||||
-- List of parsers to ignore installing (or "all")
|
||||
--ignore_install = { "javascript" },
|
||||
|
||||
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
|
||||
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
|
||||
|
||||
highlight = {
|
||||
enable = true,
|
||||
|
||||
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
|
||||
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
|
||||
-- the name of the parser)
|
||||
-- list of language that will be disabled
|
||||
--disable = { "c", "rust" },
|
||||
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
|
||||
disable = function(lang, buf)
|
||||
local max_filesize = 100 * 1024 -- 100 KB
|
||||
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||
if ok and stats and stats.size > max_filesize then
|
||||
return true
|
||||
end
|
||||
end,
|
||||
|
||||
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
|
||||
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
|
||||
-- Using this option may slow down your editor, and you may see some duplicate highlights.
|
||||
-- Instead of true it can also be a list of languages
|
||||
additional_vim_regex_highlighting = false,
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
disable = { "verilog" }, -- Add verilog to the list
|
||||
},
|
||||
}
|
||||
|
||||
-- LuaLine
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
icons_enabled = false,
|
||||
icons_enabled = true,
|
||||
theme = 'nightfly',
|
||||
-- theme = 'gruvbox',
|
||||
section_separators = { left = '', right = '' },
|
||||
component_separators = { left = '', right = '' }
|
||||
},
|
||||
@@ -66,7 +159,13 @@ require('lualine').setup {
|
||||
directory = ' ▶', -- Text to show when the buffer is a directory
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
lualine_x = {
|
||||
"copilot",
|
||||
"encoding",
|
||||
"fileformat",
|
||||
"filetype",
|
||||
},
|
||||
},
|
||||
tabline = {
|
||||
lualine_a = {
|
||||
@@ -117,7 +216,7 @@ require('onedark').load()
|
||||
-- See `:help vim.o`
|
||||
|
||||
if vim.g.neovide then
|
||||
vim.o.guifont = "Iosevka Term:h12"
|
||||
vim.o.guifont = "Iosevka Term:h15"
|
||||
vim.g.neovide_scale_factor = 1.0
|
||||
end
|
||||
|
||||
@@ -209,6 +308,8 @@ vim.api.nvim_set_keymap('n', 'Q', 'gq', { noremap =
|
||||
vim.api.nvim_set_keymap('n', '<leader>td', 'i<C-R>=strftime(\'%Y/%m/%d\')<CR><Esc>', { noremap = 1 }) -- 'Insert [T]imestamp - [d]ate'
|
||||
vim.api.nvim_set_keymap('n', '<leader>tt', 'i<C-R>=strftime(\'%Y/%m/%d %H:%M:%S\')<CR><Esc>', { noremap = 1 }) -- 'Insert [T]imestamp - date[t]ime'
|
||||
|
||||
-- Copilot: Explicitly request for copilot suggestions in insert mode C-;
|
||||
vim.keymap.set('i', '<C-;>', '<Plug>(copilot-suggest)')
|
||||
vim.g.rainbow_active = 1 -- 0 if you want to enable it later via :RainbowToggle
|
||||
|
||||
-- vim.g.iosftrk_folddisable = 1 -- intel
|
||||
@@ -239,9 +340,12 @@ vim.g.NERDTreeKeepTreeInNewTab = 1
|
||||
vim.g.nerdtree_tabs_open_on_gui_startup = 0
|
||||
|
||||
-- Filetype assignments - TODO: Is there an automatic way for this?
|
||||
vim.cmd("au! BufRead,BufNewFile *.sv,*.svh set filetype=verilog_systemverilog")
|
||||
-- vim.cmd("au! BufRead,BufNewFile *.sv,*.svh set filetype=verilog_systemverilog")
|
||||
-- vim.cmd("au! BufRead,BufNewFile *.sv,*.svh set filetype=verilog")
|
||||
vim.cmd("au! BufRead,BufNewFile *iosfsb_trk.out set filetype=iosfsbtrk")
|
||||
vim.cmd("au! BufRead,BufNewFile *iosf_trk.out set filetype=iosftrk")
|
||||
-- Disable Copilot by default
|
||||
vim.cmd("au! VimEnter * Copilot disable")
|
||||
|
||||
-- [[ Configure Telescope ]]
|
||||
-- See `:help telescope` and `:help telescope.setup()`
|
||||
|
114
rofi_sound.pl
Executable file
114
rofi_sound.pl
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Data::Dumper;
|
||||
|
||||
my $selection = $ARGV[0];
|
||||
|
||||
my $app = {};
|
||||
|
||||
if (defined $selection) {
|
||||
select_sink($app, $selection);
|
||||
} else {
|
||||
show_sinks($app);
|
||||
}
|
||||
|
||||
# -----------
|
||||
# Subroutines
|
||||
# -----------
|
||||
sub show_sinks {
|
||||
my ($app) = @_;
|
||||
|
||||
my @sinks = get_sinks($app);
|
||||
print join("\n", @sinks);
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub select_sink {
|
||||
my ($app, $sink) = @_;
|
||||
|
||||
my $wp_h;
|
||||
my ($id,$name) = $sink =~ /(\d+):(.*)/;
|
||||
my $seld_sink = "NONE";
|
||||
my $seld_id = "NONE";
|
||||
|
||||
open($wp_h, "pw-cli info $id |") or die "Could not run pw-cli command";
|
||||
|
||||
while (my $ln = <$wp_h>) {
|
||||
if (my ($node_name) = $ln =~ /node.name\s*=\s*"(.*)"/) {
|
||||
warn "Selected [$id] ($name) - $node_name\n";
|
||||
$seld_sink = $node_name;
|
||||
$seld_id = $id;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
enable_sink($app, $seld_sink, $seld_id);
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub enable_sink {
|
||||
my ($app, $sink, $id) = @_;
|
||||
|
||||
`wpctl set-default $id`;
|
||||
unmute_master($app);
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub unmute_master {
|
||||
my ($app) = @_;
|
||||
|
||||
`amixer -c 0 set Master unmute`;
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub parse_wpctl {
|
||||
my $wp_h;
|
||||
|
||||
open($wp_h, "wpctl status |") or die "Could not run wpctl command";
|
||||
|
||||
my @lines = <$wp_h>;
|
||||
|
||||
my $section = "None";
|
||||
my $sub_section = "None";
|
||||
my $wp_data = {};
|
||||
|
||||
foreach my $ln (@lines) {
|
||||
# Section
|
||||
if (my ($mat) = $ln =~ /(^(PipeWire)|^(\w+)$)/) {
|
||||
$section = $mat;
|
||||
$wp_data->{$section} = {} unless (exists $wp_data->{$section});
|
||||
}
|
||||
|
||||
# Sub-section
|
||||
if (my ($mat) = $ln =~ /\s+(\w+):$/) {
|
||||
$sub_section = $mat;
|
||||
$wp_data->{$section}->{$sub_section} = [] unless (exists $wp_data->{$section}->{$sub_section});
|
||||
}
|
||||
|
||||
# Entries
|
||||
if (($section ne "None") && ($sub_section ne "None")) {
|
||||
if (my ($sel, $id, $name) = $ln =~ /\s+(\*)?\s+(\d+)\.\s+(.*?)(\[|$)/) {
|
||||
my $seld = (defined $sel) ? 1 : 0;
|
||||
$name =~ s/^\s*//; $name =~ s/\s*$//;
|
||||
push(@{$wp_data->{$section}->{$sub_section}}, {
|
||||
'sel' => $seld,
|
||||
'id' => $id,
|
||||
'name' => $name
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
$app->{'wp_data'} = $wp_data;
|
||||
}
|
||||
|
||||
# -----------
|
||||
sub get_sinks {
|
||||
my ($app) = @_;
|
||||
|
||||
parse_wpctl($app);
|
||||
# warn Data::Dumper->Dump([$app->{'wp_data'}]);
|
||||
|
||||
return map { "$_->{'id'}:$_->{'name'}" } @{$app->{'wp_data'}->{'Audio'}->{'Sinks'}}
|
||||
}
|
36
root.bashrc
36
root.bashrc
@@ -3,14 +3,23 @@
|
||||
# --------------------------------
|
||||
# Shell RC
|
||||
# --------------------------------
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;41m\]$(hostname)\[\033[00m\]\[\033[01;34m\] \w\[\033[00m\] \$ '
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;41m\]$(hostnamectl hostname)\[\033[00m\]\[\033[01;34m\] \w\[\033[00m\] \$ '
|
||||
|
||||
#
|
||||
# Variables
|
||||
#
|
||||
export EDITOR=nvim
|
||||
export PATH=~/bin:$PATH
|
||||
|
||||
#
|
||||
# Editor setup
|
||||
#
|
||||
export PATH=/opt/neovim:$PATH
|
||||
export EDITOR=nvim
|
||||
|
||||
function n () {
|
||||
/opt/neovim/nvim $* || nvim $*
|
||||
}
|
||||
|
||||
#
|
||||
# Aliases
|
||||
#
|
||||
@@ -18,25 +27,28 @@ alias ls='ls -al --color'
|
||||
alias q=exit
|
||||
alias a=clear
|
||||
alias h=history
|
||||
alias e=$EDITOR
|
||||
alias n=nvim
|
||||
|
||||
#
|
||||
# Functions
|
||||
#
|
||||
function myvim () {
|
||||
gvim $1 >& /dev/null &
|
||||
disown %1
|
||||
}
|
||||
|
||||
function hgrep () {
|
||||
history | grep $1
|
||||
history | grep $1
|
||||
}
|
||||
|
||||
function pgrep () {
|
||||
ps aux | grep $1
|
||||
ps aux | grep $1
|
||||
}
|
||||
|
||||
function u2d () {
|
||||
apt update && apt full-upgrade -y && apt autoremove -y
|
||||
~mahesh/git/snips/get_neovim.sh
|
||||
# ~mahesh/git/snips/get_wezterm.sh
|
||||
cd
|
||||
if [ -e /etc/arch-release ]; then
|
||||
pacman --sync --refresh --sysupgrade --noconfirm
|
||||
elif [ -e /etc/debian_version ]; then
|
||||
apt update && apt full-upgrade -y && apt autoremove -y
|
||||
else
|
||||
echo "Auto update not supported."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@@ -8,18 +8,28 @@
|
||||
if [ -f /etc/bash_completion.d/git-prompt ]; then
|
||||
source /etc/bash_completion.d/git-prompt
|
||||
fi
|
||||
if [ -f ~/bin/git-prompt.sh ]; then
|
||||
source ~/bin/git-prompt.sh
|
||||
if [ -f /usr/share/git/git-prompt.sh ]; then
|
||||
source /usr/share/git/git-prompt.sh
|
||||
fi
|
||||
export GIT_PS1_SHOWDIRTYSTATE=1
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;92m\]$(hostname)\[\033[01;34m\] \w\[\033[01;35m\]$(__git_ps1 " %s") \[\033[0m\]$ '
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;92m\]$(hostnamectl hostname)\[\033[01;34m\] \w\[\033[01;35m\]$(__git_ps1 " %s") \[\033[0m\]$ '
|
||||
|
||||
#
|
||||
# Variables
|
||||
#
|
||||
#export EDITOR=vim
|
||||
export PATH=~/bin:~/.local/bin:$PATH
|
||||
export IGNOREEOF=50 # Ignore first 50 Ctrl-D on shell
|
||||
export GPG_TTY=$(tty)
|
||||
|
||||
#
|
||||
# Editor setup
|
||||
#
|
||||
export PATH=/opt/neovim:$PATH
|
||||
export EDITOR=nvim
|
||||
export PATH=~/bin:$PATH
|
||||
|
||||
function n () {
|
||||
/opt/neovim/nvim $* || nvim $*
|
||||
}
|
||||
|
||||
#
|
||||
# Aliases
|
||||
@@ -28,16 +38,11 @@ alias ls='ls -altrh --color'
|
||||
alias q=exit
|
||||
alias a=clear
|
||||
alias h=history
|
||||
alias e=$EDITOR
|
||||
alias n=nvim
|
||||
alias gn='neovide --fork'
|
||||
|
||||
#
|
||||
# Functions
|
||||
#
|
||||
function myvim () {
|
||||
gvim $1 >& /dev/null &
|
||||
disown %1
|
||||
}
|
||||
function pyedit () {
|
||||
gedit $1 >& /dev/null &
|
||||
disown %1
|
||||
@@ -52,5 +57,9 @@ function pgrep () {
|
||||
}
|
||||
|
||||
function start_tmux () {
|
||||
TERM=screen-256color tmux new -A -s DevEnv
|
||||
TERM=screen-256color tmux -u new -A -s DevEnv
|
||||
}
|
||||
|
||||
function start_gitui() {
|
||||
GPG_TTY=$(tty) gitui
|
||||
}
|
||||
|
14
user.conkyrc
14
user.conkyrc
@@ -39,21 +39,26 @@ conky.config = {
|
||||
--[[ For Somebar ]]
|
||||
conky.text = [[
|
||||
${if_existing /usr/local/bin/somebar}status${endif} \
|
||||
${if_mpd_playing}${if_match "${mpd_status}" == "Paused"}⏸${else}𝄞${endif} [${mpd_percent}] ${mpd_smart 50}${endif} \
|
||||
💻 ${cpu}% \
|
||||
💾 ${memperc}% \
|
||||
${if_existing /sys/class/net/enp0s20f0u1u1u2/operstate up}🌎 ${addr enp0s20f0u1u1u2}${else}\
|
||||
${if_existing /sys/class/net/enp0s20f0u1u1/operstate up}🌎 ${addr enp0s20f0u1u1}${else}\
|
||||
${if_existing /sys/class/net/wlp0s20f3/operstate up}📶 ${addr wlp0s20f3}${else}\
|
||||
${if_existing /sys/class/net/enp3s0/operstate up}🌎 ${addr enp3s0}${else}\
|
||||
${if_existing /sys/class/net/wlp4s0/operstate up}📶 ${addr wlp4s0}${else}\
|
||||
${if_up eth0}🌎 ${addr eth0}${else}\
|
||||
network down ${endif}${endif}${endif} \
|
||||
${execi 600 curl 'wttr.in/~45.54,-122.83?u&format=%c%t'} \
|
||||
🔊 ${execi 10 wpctl get-volume 54 | tail -1 | perl -ne 'm/([\d\.]+)/; print scalar (($1>1) ? 100 : ($1*100))'} \
|
||||
🔋 ${battery_percent}% \
|
||||
network down ${endif}${endif}${endif}${endif}${endif}${endif} \
|
||||
${execi 600 curl 'wttr.in/~45.5202471,-122.6741948?u&format=%c%t'} \
|
||||
🔊 ${execi 10 wpctl get-volume 53 | tail -1 | perl -ne 'm/([\d\.]+)/; print scalar (($1>1) ? 100 : ($1*100))'} \
|
||||
${if_existing /sys/class/power_supply/ADP0/online 1}🔌${else}🔋${endif} ${battery_percent}% \
|
||||
📅 ${time %Y %h %d} \
|
||||
🕑 ${time %I:%M%p %Z}
|
||||
]]
|
||||
--[[
|
||||
Reference
|
||||
|
||||
${execi 600 curl 'wttr.in/~45.54,-122.83?u&format=%c%t'} \
|
||||
|
||||
🌡 ${execi 600 weather fips4105192520 | grep Tempera | awk '{print $2}'}°F | \
|
||||
${execi 1 cat /tmp/dwl.tags.out} | \
|
||||
@@ -80,3 +85,4 @@ ${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
|
||||
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
|
||||
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
|
||||
]]
|
||||
|
||||
|
Reference in New Issue
Block a user