Git Repos / dotfiles / commit cf58f69
Commit: cf58f69fb82f1002dd399577871f0317d0bf020c
Parent: 9215da4414fb9ac4d27ed1802a01ff8630ef3355
Author: Cameron Vanderzanden, 2024-01-09 11:16
Committer: Cameron Vanderzanden, 2024-01-09 11:16
Commit Message
herbs config changes, move lc.sh, update README
Change List
| ? | File | Add | Del | 
|---|---|---|---|
| M | README.md | +8 | |
| A | attic/bin/lc.sh | +520 | |
| D | bin/lc.sh | -520 | |
| M | config/herbstluftwm/autostart.fix | +38 | -27 | 
Diff README.md
diff --git a/README.md b/README.md
index ee2bd73..6f0c9d0 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,14 @@ IRC client, mail user agent, RSS reader, and editor respectively.
 
 Nothing too unusual in those lists.
 
+### Themes, Color Choices
+
+I'm currently using the McMojave GTK2/GTK3/Metacity theme available from
+<https://github.com/vinceliuice/Mojave-gtk-theme>.
+
+Terminal colors (and the contents of colordef_gruvbox.sh) are gruvbox
+by Morhetz, available here <https://github.com/morhetz/gruvbox>.
+
 ### Shell Scripts
 
 Most of the shell scripts in this repository are generalized frontends
Return to the top of this page or return to the overview of this repo.
Diff attic/bin/lc.sh
diff --git a/attic/bin/lc.sh b/attic/bin/lc.sh
new file mode 100755
index 0000000..eb62642
--- /dev/null
+++ b/attic/bin/lc.sh
@@ -0,0 +1,520 @@
+#!/bin/sh
+#
+#  Copyright (c) 2017-2021, Cameron Vanderzanden. Available under the
+#  terms of the 2-clause BSD license. Please see the file "LICENSE" in
+#  the root dir of this repository for more information.
+#
+#- lc.sh 2017/01/30 cev, last updated 2021/12/07.
+## Usage: lc.sh [-1dDhxvV] <file or directory...>
+## 
+##     List directory contents with pretty (Gruvbox) colors. Requires FreeBSD
+##     stat(1). Should not be aliased as ls.
+## 
+##     I repeat: DO NOT USE AS A REPLACEMENT FOR LS.
+## 
+##       -1     Single column output.
+##       -d     List directories as plain files.
+##       -D     Don't group directories first.
+##       -h     Show help.
+##       -v     Verbose output (for debugging? purposes).
+##       -V     Print version info.
+##       -x     Sort multi-column output across rather than down the columns.
+## 
+#
+
+[ -x $HOME/.local/bin/cev_print.sh ] && . $HOME/.local/bin/cev_print.sh
+
+self="${0##*'/'}"
+
+if [ "$COLUMNS" ]; then
+    termwidth=$COLUMNS
+else
+    termwidth=$(tput cols)
+fi
+
+entries=0
+numcols=1
+numrows=1
+maxwidth="$termwidth"
+inputfields=2
+
+across=""
+directories_as_files=""
+group_directories_first="Y"
+single_column=""
+verbose=""
+
+die_filenotfound() {
+    print_filenotfound "$*"
+    exit 1
+}
+
+print_name() {
+    local width
+    if [ $maxwidth -gt $termwidth ]; then
+        width=${#2}
+    else
+        width=$maxwidth
+    fi
+    printf "%b%-${width}s%b" "$1" "$2" "$3"
+}
+
+# gruvbox red
+# #5E000A;  94;   0;  10
+# #9D0006; 157;   0;   6
+# #B01E18; 176;  30;  24
+# #CC241D; 204;  36;  29
+# #FB4934; 251;  73;  52
+color_executable() {
+    if [ $st_size -lt 10000 ]; then         # 10kb
+        f_color="\033[00;38;2;94;0;10m"
+    elif [ $st_size -lt 100000 ]; then      # 100kb
+        f_color="\033[00;38;2;157;0;6m"
+    elif [ $st_size -lt 1000000 ]; then     # 1mb
+        f_color="\033[00;38;2;176;30;24m"
+    elif [ $st_size -lt 10000000 ]; then    # 10mb
+        f_color="\033[00;38;2;204;36;29m"
+    else
+        f_color="\033[00;38;2;251;73;52m"
+    fi
+}
+
+# gruvbox blue
+# #83A598; 131; 165; 152
+# #458588;  69; 133; 136
+# #076678;   7; 102; 120
+color_audio() {
+    if [ $st_size -gt 10000000 ]; then      # 10 megs
+        f_color="\033[00;38;2;131;165;152m" # bright blue
+    elif [ $st_size -gt 1000000 ]; then     # 1 meg
+        f_color="\033[00;38;2;69;133;136m"  # blue
+    else
+        f_color="\033[00;38;2;7;102;120m"   # faded blue
+    fi
+}
+
+# gruvbox greenish blue / cyan
+#  24 #076678;   7; 102; 120
+#  67 #458588;  69; 133; 136
+# 109 #83A598; 131; 165; 152
+# 152 #9EC7B7; 158; 199; 183
+# 195 #BFF0DD; 191; 240; 221
+color_video() {
+    if [ $st_size -lt 10000000 ]; then      # 10 megs
+        f_color="\033[00;38;2;7;102;120m"
+    elif [ $st_size -lt 100000000 ]; then   # 100 megs
+        f_color="\033[00;38;2;69;133;136m"
+    elif [ $st_size -lt 1000000000 ]; then  # 1 gig
+        f_color="\033[00;38;2;131;165;152m"
+    elif [ $st_size -lt 2000000000 ]; then  # 2 gig
+        f_color="\033[00;38;2;158;199;183m"
+    else
+        f_color="\033[00;38;2;191;240;221m"
+    fi
+}
+
+# gruvbox cyan
+#  23 #044F20;   4;  79;  32
+#  66 #427B58;  66; 123;  88
+#  73 #689D6A; 104; 157; 106
+# 108 #8EC07C; 142; 192; 124
+# 151 #ABC7A1; 171; 199; 161
+# 194 #BDD7B4; 189; 215; 180
+color_image() {
+    if [ $st_size -lt 1000 ]; then          # 1kb
+        f_color="\033[00;38;2;4;79;32m"
+    elif [ $st_size -lt 10000 ]; then       # 10kb
+        f_color="\033[00;38;2;66;123;88m"
+    elif [ $st_size -lt 100000 ]; then      # 100kb
+        f_color="\033[00;38;2;104;157;106m"
+    elif [ $st_size -lt 1000000 ]; then     # 1 meg
+        f_color="\033[00;38;2;142;192;124m"
+    elif [ $st_size -lt 10000000 ]; then    # 10 meg
+        f_color="\033[00;38;2;171;199;161m"
+    else
+        f_color="\033[00;38;2;189;215;180m"
+    fi
+}
+
+# gruvbox; very slightly reddish yellow
+#  94 #784E0D; 120;  78;  13
+# 136 #B57614; 181; 118;  20
+# 178 #D79921; 215; 153;  33
+# 214 #FABD2F; 250; 189;  47
+# 226 #F0C645; 240; 198;  69
+color_archive() {
+    if [ $st_size -lt 10000000 ]; then      # 10 meg
+        f_color="\033[00;38;2;120;78;13m"
+    elif [ $st_size -lt 100000000 ]; then   # 100 megs
+        f_color="\033[00;38;2;181;118;20m"
+    elif [ $st_size -lt 500000000 ]; then   # 500 megs
+        f_color="\033[00;38;2;215;153;33m"
+    elif [ $st_size -lt 1000000000 ]; then  # 1 gig
+        f_color="\033[00;38;2;250;189;47m"
+    else
+        f_color="\033[00;38;2;240;198;69m"
+    fi
+}
+
+# gruvbox; equal parts green and yellow
+#  58 #4F4909;  79;  73;   9
+# 100 #79740E; 121; 116;  14
+# 142 #98971A; 152; 151;  26
+# 184 #B8BB26; 184; 187;  38
+# 226 #F0C645; 240; 198;  69
+color_meta() {
+    if [ $st_size -lt 500 ]; then           # 500 bytes
+        f_color="\033[00;38;2;79;73;9m"
+    elif [ $st_size -lt 1000 ]; then        # 1kb
+        f_color="\033[00;38;2;121;116;14m"
+    elif [ $st_size -lt 100000 ]; then      # 100kb
+        f_color="\033[00;38;2;152;151;26m"
+    else
+        f_color="\033[00;38;2;184;187;38m"
+    fi
+}
+
+# gruvbox; slightly reddish magenta
+#  53 #4F223E;  79;  34;  62
+#  96 #8F3F71; 143;  63; 113
+# 133 #B16286; 177;  98; 134
+# 175 #D3869B; 211; 134; 155
+# 218 #F0A6BA; 240; 166; 186
+color_code() {
+    if [ $st_size -lt 1000 ]; then          # 1kb
+        f_color="\033[00;38;2;79;34;62m"
+    elif [ $st_size -lt 10000 ]; then       # 10kb
+        f_color="\033[00;38;2;143;63;113m"
+    elif [ $st_size -lt 100000 ]; then      # 100kb
+        f_color="\033[00;38;2;177;98;134m"
+    elif [ $st_size -lt 1000000 ]; then     # 1 meg
+        f_color="\033[00;38;2;211;134;155m"
+    else
+        f_color="\033[00;38;2;240;166;186m"
+    fi
+}
+
+# gruvbox light greyscale - some new intermediary values
+# 244 #928374; 146; 131; 116
+# 248 #BDAE93; 189; 174; 147
+# 249 #CABA9D; 202; 186; 157
+# 250 #D5C4A1; 213; 196; 161
+# 251 #E1CFAA; 225; 207; 170
+# 252 #EBDBB2; 235; 219; 178
+# 253 #F2E5BC; 242; 229; 188
+# 254 #FBF1C7; 251; 241; 199
+color_regular() {
+    if [ -z $st_size ]; then                # empty file
+        f_color="\033[00;38;2;146;131;116m"
+    elif [ $st_size -eq 0 ]; then
+        f_color="\033[00;38;2;146;131;116m"
+    elif [ $st_size -lt 500 ]; then         # 500 bytes
+        f_color="\033[00;38;2;189;174;147m"
+    elif [ $st_size -lt 1000 ]; then        # 1kb
+        f_color="\033[00;38;2;202;186;157m"
+    elif [ $st_size -lt 10000 ]; then       # 10kb
+        f_color="\033[00;38;2;213;196;161m"
+    elif [ $st_size -lt 100000 ]; then      # 100kb
+        f_color="\033[00;38;2;225;207;170m"
+    elif [ $st_size -lt 1000000 ]; then     # 1 meg
+        f_color="\033[00;38;2;235;219;178m"
+    elif [ $st_size -lt 10000000 ]; then    # 10 meg
+        f_color="\033[00;38;2;242;229;188m"
+    else
+        f_color="\033[00;38;2;251;241;199m"
+    fi
+}
+
+color_file() {
+    # let's walk the plank
+    case "$shortname" in
+        # audio
+        *.[aA][cC][cC])                 color_audio ;;
+        *.[aA][uU])                     color_audio ;;
+        *.[aA][xX][aA])                 color_audio ;;
+        *.[bB][mM][xX])                 color_audio ;;
+        *.[fF][lL][aA][cC])             color_audio ;;
+        *.[iI][tT])                     color_audio ;;
+        *.[mM][4][aA])                  color_audio ;;
+        *.[mM][iI][dD])                 color_audio ;;
+        *.[mM][iI][dD][iI])             color_audio ;;
+        *.[mM][kK][aA])                 color_audio ;;
+        *.[mM][oO][dD])                 color_audio ;;
+        *.[mM][pP]3)                    color_audio ;;
+        *.[mM][pP][cC])                 color_audio ;;
+        *.[oO][gG][gG])                 color_audio ;;
+        *.[rR][aA])                     color_audio ;;
+        *.[sS]3[mM])                    color_audio ;;
+        *.[sS]3[zZ])                    color_audio ;;
+        *.[sS][tT][mM])                 color_audio ;;
+        *.[sS][pP][xX])                 color_audio ;;
+        *.[wW][aA][vV])                 color_audio ;;
+        *.[xX][mM])                     color_audio ;;
+        *.[xX][mM][zZ])                 color_audio ;;
+        *.[xX][rR][nN][iI])             color_audio ;;
+        *.[xX][rR][nN][lL])             color_audio ;;
+        *.[xX][rR][nN][sS])             color_audio ;;
+        # video
+        *.[aA][vV][iI])                 color_video ;;
+        *.[fF][lL][vV])                 color_video ;;
+        *.[mM]4[vV])                    color_video ;;
+        *.[mM][kK][vV])                 color_video ;;
+        *.[mM][oO][vV])                 color_video ;;
+        *.[mM][pP]4)                    color_video ;;
+        *.[mM][pP][gG])                 color_video ;;
+        *.[mM][pP][eE][gG])             color_video ;;
+        *.[oO][gG][mM])                 color_video ;;
+        *.[vV][oO][bB])                 color_video ;;
+        *.[wW][eE][bB][mM])             color_video ;;
+        *.[wW][mM][vV])                 color_video ;;
+        # images
+        *.[bB][mM][pP])                 color_image ;;
+        *.[dD][dD][sS])                 color_image ;;
+        *.[gG][iI][fF])                 color_image ;;
+        *.[iI][cC][oO])                 color_image ;;
+        *.[jJ][pP][gG])                 color_image ;;
+        *.[jJ][pP][eE][gG])             color_image ;;
+        *.[mM][nN][gG])                 color_image ;;
+        *.[nN][iI][fF])                 color_image ;;
+        *.[pP][bB][mM])                 color_image ;;
+        *.[pP][gG][mM])                 color_image ;;
+        *.[pP][nN][gG])                 color_image ;;
+        *.[pP][pP][mM])                 color_image ;;
+        *.[sS][vV][gG])                 color_image ;;
+        *.[sS][vV][gG][zZ])             color_image ;;
+        *.[tT][gG][aA])                 color_image ;;
+        *.[tT][iI][fF])                 color_image ;;
+        *.[tT][iI][fF][fF])             color_image ;;
+        *.[xX][bB][mM])                 color_image ;;
+        *.[xX][cC][fF])                 color_image ;;
+        *.[xX][pP][mM])                 color_image ;;
+        # archive formats
+        *.7[zZ])                        color_archive ;;
+        *.[aA][rR][jJ])                 color_archive ;;
+        *.[bB][zZ]2)                    color_archive ;;
+        *.[cC][pP][iI][oO])             color_archive ;;
+        *.[dD][eE][bB])                 color_archive ;;
+        *.[gG][pP][gG])                 color_archive ;;
+        *.[gG][zZ])                     color_archive ;;
+        *.[iI][mM][gG])                 color_archive ;;
+        *.[iI][sS][oO])                 color_archive ;;
+        *.[lL][zZ][hH])                 color_archive ;;
+        *.[pP][kK]3)                    color_archive ;;
+        *.[rR][aA][rR])                 color_archive ;;
+        *.[rR][pP][mM])                 color_archive ;;
+        *.[tT][aA][rR])                 color_archive ;;
+        *.[tT][gG][zZ])                 color_archive ;;
+        *.[xX][zZ])                     color_archive ;;
+        *.[zZ][iI][pP])                 color_archive ;;
+        # "metadata" files
+        *.[aA][sS][sS])                 color_meta ;;
+        *.[cC][uU][eE])                 color_meta ;;
+        *.[dD][iI][zZ])                 color_meta ;;
+        *.[eE][gG][gG])                 color_meta ;;
+        *.[lL][oO][gG])                 color_meta ;;
+        *.[mM]3[uU])                    color_meta ;;
+        *.[mM]3[uU]8)                   color_meta ;;
+        *.[nN][fF][oO])                 color_meta ;;
+        *.[rR][eE][aA][dD][mM][eE])     color_meta ;;
+        *.[sS][fF][vV])                 color_meta ;;
+        *.[sS][rR][tT])                 color_meta ;;
+        *.[tT][rR][aA][cC][kK][lL][iI][sS][tT]) color_meta ;;
+        # software source code
+        *.[aA])                         color_code ;;
+        *.[bB][sS][pP])                 color_code ;;
+        *.[cC])                         color_code ;;
+        *.[cC][cC])                     color_code ;;
+        *.[cC][pP][pP])                 color_code ;;
+        *.[dD])                         color_code ;;
+        *.[dD][iI][fF][fF])             color_code ;;
+        *.[hH])                         color_code ;;
+        *.[hH]++)                       color_code ;;
+        *.[hH][hH])                     color_code ;;
+        *.[hH][pP][pP])                 color_code ;;
+        *.[hH][xX][xX])                 color_code ;;
+        *.[lL][aA])                     color_code ;;
+        *.[lL][pP][iI])                 color_code ;;
+        *.[lL][uU][aA])                 color_code ;;
+        *.[mM][aA][pP])                 color_code ;;
+        *.[mM][kK])                     color_code ;;
+        *.[oO])                         color_code ;;
+        *.[pP][aA][sS])                 color_code ;;
+        *.[pP][lL])                     color_code ;;
+        *.[pP][yY])                     color_code ;;
+        *.[pP][yY][cC])                 color_code ;;
+        *.[pP][yY][oO])                 color_code ;;
+        *.[qQ][cC])                     color_code ;;
+        *.[qQ][hH])                     color_code ;;
+        *.[sS][hH])                     color_code ;;
+        *.[sS][rR][cC])                 color_code ;;
+        Makefile)                       color_code ;;
+        # backup files
+        *.default)                      f_color="\033[00;38;2;124;111;100m" ;;
+        *.orig)                         f_color="\033[00;38;2;124;111;100m" ;;
+        *.backup|*.old|*.bak|*.back)    f_color="\033[00;38;2;124;111;100m" ;;
+        *.backup1|*.old1|*.bak1|*.back1) f_color="\033[00;38;2;102;92;84m" ;;
+        *.backup2|*.old2|*.bak2|*.back2) f_color="\033[00;38;2;80;73;69m" ;;
+        *.backup3|*.old3|*.bak3|*.back3) f_color="\033[00;38;2;60;56;52m" ;;
+        *)                              color_regular ;;
+    esac
+}
+
+do_entry() {
+    local f_color f_clear
+    shortname="${st_name##*'/'}"
+    if [ -L "$st_name" ]; then          # link
+        f_color="\033[01;37m"
+    elif [ -d "$st_name" ]; then        # directory
+        f_color="\033[01;33m"
+    elif [ -b "$st_name" ]; then        # block special
+        f_color="\033[00;38;2;254;128;25m" # 208 #FE8019; 254; 128;  25
+    elif [ -c "$st_name" ]; then        # character special
+        f_color="\033[00;38;2;214;93;14m"  # 172 #D65D0E; 214;  93;  14
+    elif [ -p "$st_name" ]; then        # named pipe
+        f_color="\033[00;38;2;175;58;3m"   # 130 #AF3A03; 175;  58;   3
+    elif [ -S "$st_name" ]; then        # socket
+        f_color="\033[00;38;2;175;58;3m"   # 130 #AF3A03; 175;  58;   3
+    elif [ -x "$st_name" ]; then        # executable
+        color_executable
+    else
+        color_file
+    fi
+    f_clear="\033[0m"
+    print_name "$f_color" "$shortname" "$f_clear"
+}
+
+sort_directories_first() {
+    local i=1
+    newout=""
+    while [ $i -lt $# ]; do
+        eval st_name="\${$i}"
+        if [ -d "$st_name" ]; then
+            eval st_size="\${$((i + 1))}"
+            # yes, those are tab characters in the next line.
+            newout="${newout}${st_name}        ${st_size}      "
+        fi
+        i=$((i + inputfields))
+    done
+    i=1
+    while [ $i -lt $# ]; do
+        eval st_name="\${$i}"
+        if [ ! -d "$st_name" ]; then
+            eval st_size="\${$((i + 1))}"
+            # tab characters again.
+            newout="${newout}${st_name}        ${st_size}      "
+        fi
+        i=$((i + inputfields))
+    done
+    statout=${newout}
+    unset newout
+}
+
+find_widths() {
+    local i=1
+    maxwidth=1
+    while [ $i -lt $# ]; do
+        eval st_name="\${$i}"
+        shortname="${st_name##*'/'}"
+        [ ${#shortname} -gt $maxwidth ] && maxwidth=${#shortname}
+        i=$((i + inputfields))
+    done
+    maxwidth=$((maxwidth + 1))
+    entries=$#
+    entries=$((entries / inputfields))
+    if [ $maxwidth -ge $termwidth ]; then
+        numcols=1
+    else
+        numcols=$((termwidth / maxwidth))
+    fi
+    numrows=$((entries / numcols))
+    if [ $((entries % numcols)) -ne 0 ]; then
+        numrows=$((numrows + 1))
+    fi
+}
+
+find_widths_single() {
+    entries=$#
+    entries=$((entries / inputfields))
+    numrows=$entries
+}
+
+loop_across() {
+    local i=1
+    local col=1
+    while [ $i -lt $# ]; do
+        eval st_name="\${$i}"
+        eval st_size="\${$((i + 1))}"
+        do_entry
+        if [ $col -ge $numcols ]; then
+            printf "\n"
+            col=1
+        else
+            col=$((col + 1))
+        fi
+        i=$((i + inputfields))
+    done
+    [ $col -gt 1 ] && printf "\n"
+}
+
+# based on FreeBSD column(1), specifically /usr/src/usr.bin/column/column.c
+# also available at https://cgit.freebsd.org/src/tree/usr.bin/column/column.c
+loop_down() {
+    local base=0
+    local row=1
+    local col=0
+    while [ $row -lt $((numrows * inputfields)) ]; do
+        col=0
+        base=$row
+        while [ $col -lt $numcols ]; do
+            eval st_name="\${$base}"
+            eval st_size="\${$((base + 1))}"
+            do_entry
+            base=$((base + (numrows * inputfields)))
+            col=$((col + 1))
+        done
+        printf "\n"
+        row=$((row + inputfields))
+    done
+}
+
+while getopts "1dDhvVx?" option; do
+    case $option in
+        1) single_column="Y" ;;
+        d) directories_as_files="Y" ;;
+        D) unset group_directories_first ;;
+        h) print_help && exit ;;
+        v) verbose="Y" ;;
+        V) print_version && exit ;;
+        x) across="Y" ;;
+        "?") print_help && exit ;;
+    esac
+    shift $((OPTIND - 1))
+done
+
+target="$*"
+[ $# -lt 1 ] && target="."
+[ ! -e "$target" ] && die_filenotfound "$target"
+
+zIFS="$IFS" && IFS=$(printf "\n\t")
+if [ -d "$target" -a -z "$directories_as_files" ]; then
+    statout=$(stat -f "%N%t%z%t" "$target"/* | sort -t "       " -d -k1)
+else
+    statout=$(stat -f "%N%t%z%t" "$target" | sort -t " " -d -k1)
+fi
+if [ -z "$single_column" ]; then
+    find_widths $statout
+else
+    find_widths_single $statout
+fi
+[ "$group_directories_first" ] && sort_directories_first $statout
+if [ "$verbose" ]; then
+    print_self
+    printf "entries: %s, columns: %s, rows: %s\n" \
+        "$entries" "$numcols" "$numrows"
+fi
+if [ "$across" ]; then
+    loop_across $statout
+else
+    loop_down $statout
+fi
+IFS="$zIFS" && unset zIFS
Return to the top of this page or return to the overview of this repo.
Diff bin/lc.sh
diff --git a/bin/lc.sh b/bin/lc.sh
deleted file mode 100755
index eb62642..0000000
--- a/bin/lc.sh
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/bin/sh
-#
-#  Copyright (c) 2017-2021, Cameron Vanderzanden. Available under the
-#  terms of the 2-clause BSD license. Please see the file "LICENSE" in
-#  the root dir of this repository for more information.
-#
-#- lc.sh 2017/01/30 cev, last updated 2021/12/07.
-## Usage: lc.sh [-1dDhxvV] <file or directory...>
-## 
-##     List directory contents with pretty (Gruvbox) colors. Requires FreeBSD
-##     stat(1). Should not be aliased as ls.
-## 
-##     I repeat: DO NOT USE AS A REPLACEMENT FOR LS.
-## 
-##       -1     Single column output.
-##       -d     List directories as plain files.
-##       -D     Don't group directories first.
-##       -h     Show help.
-##       -v     Verbose output (for debugging? purposes).
-##       -V     Print version info.
-##       -x     Sort multi-column output across rather than down the columns.
-## 
-#
-
-[ -x $HOME/.local/bin/cev_print.sh ] && . $HOME/.local/bin/cev_print.sh
-
-self="${0##*'/'}"
-
-if [ "$COLUMNS" ]; then
-    termwidth=$COLUMNS
-else
-    termwidth=$(tput cols)
-fi
-
-entries=0
-numcols=1
-numrows=1
-maxwidth="$termwidth"
-inputfields=2
-
-across=""
-directories_as_files=""
-group_directories_first="Y"
-single_column=""
-verbose=""
-
-die_filenotfound() {
-    print_filenotfound "$*"
-    exit 1
-}
-
-print_name() {
-    local width
-    if [ $maxwidth -gt $termwidth ]; then
-        width=${#2}
-    else
-        width=$maxwidth
-    fi
-    printf "%b%-${width}s%b" "$1" "$2" "$3"
-}
-
-# gruvbox red
-# #5E000A;  94;   0;  10
-# #9D0006; 157;   0;   6
-# #B01E18; 176;  30;  24
-# #CC241D; 204;  36;  29
-# #FB4934; 251;  73;  52
-color_executable() {
-    if [ $st_size -lt 10000 ]; then         # 10kb
-        f_color="\033[00;38;2;94;0;10m"
-    elif [ $st_size -lt 100000 ]; then      # 100kb
-        f_color="\033[00;38;2;157;0;6m"
-    elif [ $st_size -lt 1000000 ]; then     # 1mb
-        f_color="\033[00;38;2;176;30;24m"
-    elif [ $st_size -lt 10000000 ]; then    # 10mb
-        f_color="\033[00;38;2;204;36;29m"
-    else
-        f_color="\033[00;38;2;251;73;52m"
-    fi
-}
-
-# gruvbox blue
-# #83A598; 131; 165; 152
-# #458588;  69; 133; 136
-# #076678;   7; 102; 120
-color_audio() {
-    if [ $st_size -gt 10000000 ]; then      # 10 megs
-        f_color="\033[00;38;2;131;165;152m" # bright blue
-    elif [ $st_size -gt 1000000 ]; then     # 1 meg
-        f_color="\033[00;38;2;69;133;136m"  # blue
-    else
-        f_color="\033[00;38;2;7;102;120m"   # faded blue
-    fi
-}
-
-# gruvbox greenish blue / cyan
-#  24 #076678;   7; 102; 120
-#  67 #458588;  69; 133; 136
-# 109 #83A598; 131; 165; 152
-# 152 #9EC7B7; 158; 199; 183
-# 195 #BFF0DD; 191; 240; 221
-color_video() {
-    if [ $st_size -lt 10000000 ]; then      # 10 megs
-        f_color="\033[00;38;2;7;102;120m"
-    elif [ $st_size -lt 100000000 ]; then   # 100 megs
-        f_color="\033[00;38;2;69;133;136m"
-    elif [ $st_size -lt 1000000000 ]; then  # 1 gig
-        f_color="\033[00;38;2;131;165;152m"
-    elif [ $st_size -lt 2000000000 ]; then  # 2 gig
-        f_color="\033[00;38;2;158;199;183m"
-    else
-        f_color="\033[00;38;2;191;240;221m"
-    fi
-}
-
-# gruvbox cyan
-#  23 #044F20;   4;  79;  32
-#  66 #427B58;  66; 123;  88
-#  73 #689D6A; 104; 157; 106
-# 108 #8EC07C; 142; 192; 124
-# 151 #ABC7A1; 171; 199; 161
-# 194 #BDD7B4; 189; 215; 180
-color_image() {
-    if [ $st_size -lt 1000 ]; then          # 1kb
-        f_color="\033[00;38;2;4;79;32m"
-    elif [ $st_size -lt 10000 ]; then       # 10kb
-        f_color="\033[00;38;2;66;123;88m"
-    elif [ $st_size -lt 100000 ]; then      # 100kb
-        f_color="\033[00;38;2;104;157;106m"
-    elif [ $st_size -lt 1000000 ]; then     # 1 meg
-        f_color="\033[00;38;2;142;192;124m"
-    elif [ $st_size -lt 10000000 ]; then    # 10 meg
-        f_color="\033[00;38;2;171;199;161m"
-    else
-        f_color="\033[00;38;2;189;215;180m"
-    fi
-}
-
-# gruvbox; very slightly reddish yellow
-#  94 #784E0D; 120;  78;  13
-# 136 #B57614; 181; 118;  20
-# 178 #D79921; 215; 153;  33
-# 214 #FABD2F; 250; 189;  47
-# 226 #F0C645; 240; 198;  69
-color_archive() {
-    if [ $st_size -lt 10000000 ]; then      # 10 meg
-        f_color="\033[00;38;2;120;78;13m"
-    elif [ $st_size -lt 100000000 ]; then   # 100 megs
-        f_color="\033[00;38;2;181;118;20m"
-    elif [ $st_size -lt 500000000 ]; then   # 500 megs
-        f_color="\033[00;38;2;215;153;33m"
-    elif [ $st_size -lt 1000000000 ]; then  # 1 gig
-        f_color="\033[00;38;2;250;189;47m"
-    else
-        f_color="\033[00;38;2;240;198;69m"
-    fi
-}
-
-# gruvbox; equal parts green and yellow
-#  58 #4F4909;  79;  73;   9
-# 100 #79740E; 121; 116;  14
-# 142 #98971A; 152; 151;  26
-# 184 #B8BB26; 184; 187;  38
-# 226 #F0C645; 240; 198;  69
-color_meta() {
-    if [ $st_size -lt 500 ]; then           # 500 bytes
-        f_color="\033[00;38;2;79;73;9m"
-    elif [ $st_size -lt 1000 ]; then        # 1kb
-        f_color="\033[00;38;2;121;116;14m"
-    elif [ $st_size -lt 100000 ]; then      # 100kb
-        f_color="\033[00;38;2;152;151;26m"
-    else
-        f_color="\033[00;38;2;184;187;38m"
-    fi
-}
-
-# gruvbox; slightly reddish magenta
-#  53 #4F223E;  79;  34;  62
-#  96 #8F3F71; 143;  63; 113
-# 133 #B16286; 177;  98; 134
-# 175 #D3869B; 211; 134; 155
-# 218 #F0A6BA; 240; 166; 186
-color_code() {
-    if [ $st_size -lt 1000 ]; then          # 1kb
-        f_color="\033[00;38;2;79;34;62m"
-    elif [ $st_size -lt 10000 ]; then       # 10kb
-        f_color="\033[00;38;2;143;63;113m"
-    elif [ $st_size -lt 100000 ]; then      # 100kb
-        f_color="\033[00;38;2;177;98;134m"
-    elif [ $st_size -lt 1000000 ]; then     # 1 meg
-        f_color="\033[00;38;2;211;134;155m"
-    else
-        f_color="\033[00;38;2;240;166;186m"
-    fi
-}
-
-# gruvbox light greyscale - some new intermediary values
-# 244 #928374; 146; 131; 116
-# 248 #BDAE93; 189; 174; 147
-# 249 #CABA9D; 202; 186; 157
-# 250 #D5C4A1; 213; 196; 161
-# 251 #E1CFAA; 225; 207; 170
-# 252 #EBDBB2; 235; 219; 178
-# 253 #F2E5BC; 242; 229; 188
-# 254 #FBF1C7; 251; 241; 199
-color_regular() {
-    if [ -z $st_size ]; then                # empty file
-        f_color="\033[00;38;2;146;131;116m"
-    elif [ $st_size -eq 0 ]; then
-        f_color="\033[00;38;2;146;131;116m"
-    elif [ $st_size -lt 500 ]; then         # 500 bytes
-        f_color="\033[00;38;2;189;174;147m"
-    elif [ $st_size -lt 1000 ]; then        # 1kb
-        f_color="\033[00;38;2;202;186;157m"
-    elif [ $st_size -lt 10000 ]; then       # 10kb
-        f_color="\033[00;38;2;213;196;161m"
-    elif [ $st_size -lt 100000 ]; then      # 100kb
-        f_color="\033[00;38;2;225;207;170m"
-    elif [ $st_size -lt 1000000 ]; then     # 1 meg
-        f_color="\033[00;38;2;235;219;178m"
-    elif [ $st_size -lt 10000000 ]; then    # 10 meg
-        f_color="\033[00;38;2;242;229;188m"
-    else
-        f_color="\033[00;38;2;251;241;199m"
-    fi
-}
-
-color_file() {
-    # let's walk the plank
-    case "$shortname" in
-        # audio
-        *.[aA][cC][cC])                 color_audio ;;
-        *.[aA][uU])                     color_audio ;;
-        *.[aA][xX][aA])                 color_audio ;;
-        *.[bB][mM][xX])                 color_audio ;;
-        *.[fF][lL][aA][cC])             color_audio ;;
-        *.[iI][tT])                     color_audio ;;
-        *.[mM][4][aA])                  color_audio ;;
-        *.[mM][iI][dD])                 color_audio ;;
-        *.[mM][iI][dD][iI])             color_audio ;;
-        *.[mM][kK][aA])                 color_audio ;;
-        *.[mM][oO][dD])                 color_audio ;;
-        *.[mM][pP]3)                    color_audio ;;
-        *.[mM][pP][cC])                 color_audio ;;
-        *.[oO][gG][gG])                 color_audio ;;
-        *.[rR][aA])                     color_audio ;;
-        *.[sS]3[mM])                    color_audio ;;
-        *.[sS]3[zZ])                    color_audio ;;
-        *.[sS][tT][mM])                 color_audio ;;
-        *.[sS][pP][xX])                 color_audio ;;
-        *.[wW][aA][vV])                 color_audio ;;
-        *.[xX][mM])                     color_audio ;;
-        *.[xX][mM][zZ])                 color_audio ;;
-        *.[xX][rR][nN][iI])             color_audio ;;
-        *.[xX][rR][nN][lL])             color_audio ;;
-        *.[xX][rR][nN][sS])             color_audio ;;
-        # video
-        *.[aA][vV][iI])                 color_video ;;
-        *.[fF][lL][vV])                 color_video ;;
-        *.[mM]4[vV])                    color_video ;;
-        *.[mM][kK][vV])                 color_video ;;
-        *.[mM][oO][vV])                 color_video ;;
-        *.[mM][pP]4)                    color_video ;;
-        *.[mM][pP][gG])                 color_video ;;
-        *.[mM][pP][eE][gG])             color_video ;;
-        *.[oO][gG][mM])                 color_video ;;
-        *.[vV][oO][bB])                 color_video ;;
-        *.[wW][eE][bB][mM])             color_video ;;
-        *.[wW][mM][vV])                 color_video ;;
-        # images
-        *.[bB][mM][pP])                 color_image ;;
-        *.[dD][dD][sS])                 color_image ;;
-        *.[gG][iI][fF])                 color_image ;;
-        *.[iI][cC][oO])                 color_image ;;
-        *.[jJ][pP][gG])                 color_image ;;
-        *.[jJ][pP][eE][gG])             color_image ;;
-        *.[mM][nN][gG])                 color_image ;;
-        *.[nN][iI][fF])                 color_image ;;
-        *.[pP][bB][mM])                 color_image ;;
-        *.[pP][gG][mM])                 color_image ;;
-        *.[pP][nN][gG])                 color_image ;;
-        *.[pP][pP][mM])                 color_image ;;
-        *.[sS][vV][gG])                 color_image ;;
-        *.[sS][vV][gG][zZ])             color_image ;;
-        *.[tT][gG][aA])                 color_image ;;
-        *.[tT][iI][fF])                 color_image ;;
-        *.[tT][iI][fF][fF])             color_image ;;
-        *.[xX][bB][mM])                 color_image ;;
-        *.[xX][cC][fF])                 color_image ;;
-        *.[xX][pP][mM])                 color_image ;;
-        # archive formats
-        *.7[zZ])                        color_archive ;;
-        *.[aA][rR][jJ])                 color_archive ;;
-        *.[bB][zZ]2)                    color_archive ;;
-        *.[cC][pP][iI][oO])             color_archive ;;
-        *.[dD][eE][bB])                 color_archive ;;
-        *.[gG][pP][gG])                 color_archive ;;
-        *.[gG][zZ])                     color_archive ;;
-        *.[iI][mM][gG])                 color_archive ;;
-        *.[iI][sS][oO])                 color_archive ;;
-        *.[lL][zZ][hH])                 color_archive ;;
-        *.[pP][kK]3)                    color_archive ;;
-        *.[rR][aA][rR])                 color_archive ;;
-        *.[rR][pP][mM])                 color_archive ;;
-        *.[tT][aA][rR])                 color_archive ;;
-        *.[tT][gG][zZ])                 color_archive ;;
-        *.[xX][zZ])                     color_archive ;;
-        *.[zZ][iI][pP])                 color_archive ;;
-        # "metadata" files
-        *.[aA][sS][sS])                 color_meta ;;
-        *.[cC][uU][eE])                 color_meta ;;
-        *.[dD][iI][zZ])                 color_meta ;;
-        *.[eE][gG][gG])                 color_meta ;;
-        *.[lL][oO][gG])                 color_meta ;;
-        *.[mM]3[uU])                    color_meta ;;
-        *.[mM]3[uU]8)                   color_meta ;;
-        *.[nN][fF][oO])                 color_meta ;;
-        *.[rR][eE][aA][dD][mM][eE])     color_meta ;;
-        *.[sS][fF][vV])                 color_meta ;;
-        *.[sS][rR][tT])                 color_meta ;;
-        *.[tT][rR][aA][cC][kK][lL][iI][sS][tT]) color_meta ;;
-        # software source code
-        *.[aA])                         color_code ;;
-        *.[bB][sS][pP])                 color_code ;;
-        *.[cC])                         color_code ;;
-        *.[cC][cC])                     color_code ;;
-        *.[cC][pP][pP])                 color_code ;;
-        *.[dD])                         color_code ;;
-        *.[dD][iI][fF][fF])             color_code ;;
-        *.[hH])                         color_code ;;
-        *.[hH]++)                       color_code ;;
-        *.[hH][hH])                     color_code ;;
-        *.[hH][pP][pP])                 color_code ;;
-        *.[hH][xX][xX])                 color_code ;;
-        *.[lL][aA])                     color_code ;;
-        *.[lL][pP][iI])                 color_code ;;
-        *.[lL][uU][aA])                 color_code ;;
-        *.[mM][aA][pP])                 color_code ;;
-        *.[mM][kK])                     color_code ;;
-        *.[oO])                         color_code ;;
-        *.[pP][aA][sS])                 color_code ;;
-        *.[pP][lL])                     color_code ;;
-        *.[pP][yY])                     color_code ;;
-        *.[pP][yY][cC])                 color_code ;;
-        *.[pP][yY][oO])                 color_code ;;
-        *.[qQ][cC])                     color_code ;;
-        *.[qQ][hH])                     color_code ;;
-        *.[sS][hH])                     color_code ;;
-        *.[sS][rR][cC])                 color_code ;;
-        Makefile)                       color_code ;;
-        # backup files
-        *.default)                      f_color="\033[00;38;2;124;111;100m" ;;
-        *.orig)                         f_color="\033[00;38;2;124;111;100m" ;;
-        *.backup|*.old|*.bak|*.back)    f_color="\033[00;38;2;124;111;100m" ;;
-        *.backup1|*.old1|*.bak1|*.back1) f_color="\033[00;38;2;102;92;84m" ;;
-        *.backup2|*.old2|*.bak2|*.back2) f_color="\033[00;38;2;80;73;69m" ;;
-        *.backup3|*.old3|*.bak3|*.back3) f_color="\033[00;38;2;60;56;52m" ;;
-        *)                              color_regular ;;
-    esac
-}
-
-do_entry() {
-    local f_color f_clear
-    shortname="${st_name##*'/'}"
-    if [ -L "$st_name" ]; then          # link
-        f_color="\033[01;37m"
-    elif [ -d "$st_name" ]; then        # directory
-        f_color="\033[01;33m"
-    elif [ -b "$st_name" ]; then        # block special
-        f_color="\033[00;38;2;254;128;25m" # 208 #FE8019; 254; 128;  25
-    elif [ -c "$st_name" ]; then        # character special
-        f_color="\033[00;38;2;214;93;14m"  # 172 #D65D0E; 214;  93;  14
-    elif [ -p "$st_name" ]; then        # named pipe
-        f_color="\033[00;38;2;175;58;3m"   # 130 #AF3A03; 175;  58;   3
-    elif [ -S "$st_name" ]; then        # socket
-        f_color="\033[00;38;2;175;58;3m"   # 130 #AF3A03; 175;  58;   3
-    elif [ -x "$st_name" ]; then        # executable
-        color_executable
-    else
-        color_file
-    fi
-    f_clear="\033[0m"
-    print_name "$f_color" "$shortname" "$f_clear"
-}
-
-sort_directories_first() {
-    local i=1
-    newout=""
-    while [ $i -lt $# ]; do
-        eval st_name="\${$i}"
-        if [ -d "$st_name" ]; then
-            eval st_size="\${$((i + 1))}"
-            # yes, those are tab characters in the next line.
-            newout="${newout}${st_name}        ${st_size}      "
-        fi
-        i=$((i + inputfields))
-    done
-    i=1
-    while [ $i -lt $# ]; do
-        eval st_name="\${$i}"
-        if [ ! -d "$st_name" ]; then
-            eval st_size="\${$((i + 1))}"
-            # tab characters again.
-            newout="${newout}${st_name}        ${st_size}      "
-        fi
-        i=$((i + inputfields))
-    done
-    statout=${newout}
-    unset newout
-}
-
-find_widths() {
-    local i=1
-    maxwidth=1
-    while [ $i -lt $# ]; do
-        eval st_name="\${$i}"
-        shortname="${st_name##*'/'}"
-        [ ${#shortname} -gt $maxwidth ] && maxwidth=${#shortname}
-        i=$((i + inputfields))
-    done
-    maxwidth=$((maxwidth + 1))
-    entries=$#
-    entries=$((entries / inputfields))
-    if [ $maxwidth -ge $termwidth ]; then
-        numcols=1
-    else
-        numcols=$((termwidth / maxwidth))
-    fi
-    numrows=$((entries / numcols))
-    if [ $((entries % numcols)) -ne 0 ]; then
-        numrows=$((numrows + 1))
-    fi
-}
-
-find_widths_single() {
-    entries=$#
-    entries=$((entries / inputfields))
-    numrows=$entries
-}
-
-loop_across() {
-    local i=1
-    local col=1
-    while [ $i -lt $# ]; do
-        eval st_name="\${$i}"
-        eval st_size="\${$((i + 1))}"
-        do_entry
-        if [ $col -ge $numcols ]; then
-            printf "\n"
-            col=1
-        else
-            col=$((col + 1))
-        fi
-        i=$((i + inputfields))
-    done
-    [ $col -gt 1 ] && printf "\n"
-}
-
-# based on FreeBSD column(1), specifically /usr/src/usr.bin/column/column.c
-# also available at https://cgit.freebsd.org/src/tree/usr.bin/column/column.c
-loop_down() {
-    local base=0
-    local row=1
-    local col=0
-    while [ $row -lt $((numrows * inputfields)) ]; do
-        col=0
-        base=$row
-        while [ $col -lt $numcols ]; do
-            eval st_name="\${$base}"
-            eval st_size="\${$((base + 1))}"
-            do_entry
-            base=$((base + (numrows * inputfields)))
-            col=$((col + 1))
-        done
-        printf "\n"
-        row=$((row + inputfields))
-    done
-}
-
-while getopts "1dDhvVx?" option; do
-    case $option in
-        1) single_column="Y" ;;
-        d) directories_as_files="Y" ;;
-        D) unset group_directories_first ;;
-        h) print_help && exit ;;
-        v) verbose="Y" ;;
-        V) print_version && exit ;;
-        x) across="Y" ;;
-        "?") print_help && exit ;;
-    esac
-    shift $((OPTIND - 1))
-done
-
-target="$*"
-[ $# -lt 1 ] && target="."
-[ ! -e "$target" ] && die_filenotfound "$target"
-
-zIFS="$IFS" && IFS=$(printf "\n\t")
-if [ -d "$target" -a -z "$directories_as_files" ]; then
-    statout=$(stat -f "%N%t%z%t" "$target"/* | sort -t "       " -d -k1)
-else
-    statout=$(stat -f "%N%t%z%t" "$target" | sort -t " " -d -k1)
-fi
-if [ -z "$single_column" ]; then
-    find_widths $statout
-else
-    find_widths_single $statout
-fi
-[ "$group_directories_first" ] && sort_directories_first $statout
-if [ "$verbose" ]; then
-    print_self
-    printf "entries: %s, columns: %s, rows: %s\n" \
-        "$entries" "$numcols" "$numrows"
-fi
-if [ "$across" ]; then
-    loop_across $statout
-else
-    loop_down $statout
-fi
-IFS="$zIFS" && unset zIFS
Return to the top of this page or return to the overview of this repo.
Diff config/herbstluftwm/autostart.fix
diff --git a/config/herbstluftwm/autostart.fix b/config/herbstluftwm/autostart.fix
index cc7e1f2..6154d2e 100644
--- a/config/herbstluftwm/autostart.fix
+++ b/config/herbstluftwm/autostart.fix
@@ -70,8 +70,8 @@ hc keybind $mod-Shift-c                cycle -1
 hc keybind $mod-n                      cycle +1
 hc keybind $mod-Shift-n                cycle -1
 hc keybind $mod-i                      jumpto urgent
-hc keybind $mod-Tab                    cycle_all +1
-hc keybind $mod-Shift-Tab              cycle_all -1
+hc keybind $mod-Tab                    use_previous
+hc keybind $mod-Shift-Tab              use_previous
 
 
 # keyboard bindings / layouting
@@ -171,7 +171,7 @@ hc attr theme.floating.reset           0
 hc attr theme.border_width             0                   # 8
 hc attr theme.inner_width              0                   # 0
 hc attr theme.outer_width              0                   # 4 (?)
-hc attr theme.padding_top              8                   # for a not-titelbar
+hc attr theme.padding_top              0                   # for a not-titelbar
 hc attr theme.padding_left             0
 hc attr theme.padding_bottom           4                   # like WindowMaker
 hc attr theme.padding_right            0
@@ -179,6 +179,7 @@ hc attr theme.title_align              'left'              # 'center'
 hc attr theme.title_depth              0                   # 8 is good
 hc attr theme.title_height             0                   # 22 is good
 hc attr theme.title_font               'Inconsolata-20'
+hc attr theme.title_when               'never'
 
 # colors
 hc attr theme.background_color         'xDK0h'
@@ -193,47 +194,57 @@ hc attr theme.active.outer_color       'xDK0'
 hc attr theme.active.title_color       'xLT4'
 hc attr theme.urgent.background_color  'xORNf'
 hc attr theme.urgent.color             'xORNn'
-hc attr theme.urgent.inner_color       'xORNf'
+hc attr theme.urgent.inner_color       'xORNn'
 hc attr theme.urgent.outer_color       'xORNb'
 hc attr theme.urgent.title_color       'xDK0'
+hc attr theme.floating.active.color    'xGRNf'
+hc attr theme.floating.active.inner_color 'xGRNf'
+hc attr theme.floating.active.outer_color 'xGRNn'
+hc attr theme.tiling.active.color      'xAQUf'
+hc attr theme.tiling.active.inner_color 'xAQUf'
+hc attr theme.tiling.active.outer_color 'xAQUn'
 hc attr settings.frame_bg_normal_color 'xDK0h'
 hc attr settings.frame_bg_active_color 'xDK0h'
 hc attr settings.frame_border_normal_color 'xDK0'
 hc attr settings.frame_border_active_color 'xDK2'
 
-# rules
+# generic high-level rules
 hc unrule -F
-hc rule focus=off
-hc rule class=mpv focus=off pseudotile=off
-hc rule class=XConsole focus=off tag="$(nameforidx 3 $tagnames)" index=0
+hc rule fixedsize floating=on
+hc rule focus=off floatplacement=smart
+hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on
+hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on floatplacement=none
 hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
-hc rule class=Dock_applet.py manage=off
-# windows that shouldn't be decorated
+hc rule class~'(.*[Ee][Xx][Ee])' floating=on
+# specific classes: consoles and terminals
+hc rule class=Alacritty focus=on
+hc rule class=Mate-terminal focus=on
+hc rule class=qterminal focus=on
+hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
+hc rule class=XConsole focus=off tag="$(nameforidx 3 $tagnames)" index=0
+hc rule class=xterm-256color focus=on
+# specific classes: desktop applications, desktop environment features
 hc rule class=Caja hook=undecorate
+hc rule class=Dock_applet.py manage=off
 hc rule class=Com.github.jmoerman.go-for-it hook=undecorate
-# windows that should get focus. terminal emulators, image viewers, etc.
-hc rule class=Alacritty focus=on
+hc rule class=Mate-notification-daemon manage=off
+hc rule class=pinentry-qt5 floating=on focus=on floatplacement=center
+# specific classes: games
+hc rule title=Dragonfall floating=on
+hc rule class=SDL_App focus=on floating=on
+hc rule class=steam_proton floating=on
+# specific classes: media editors, players, and viewers
 hc rule class=Eom focus=on
 hc rule class=Gimp-2.10 focus=on
 hc rule class=Io.github.celluloid_player.Celluloid focus=on
 hc rule class=lximage-qt focus=on
-hc rule class=Mate-terminal focus=on
-hc rule class=qterminal focus=on
-hc rule class=steam_proton floating=on
+hc rule class=mpv focus=off pseudotile=off
+hc rule class=obs floating=on
 hc rule class=Sxiv focus=on
+# specific classes; system utilities
+hc rule class=Cpu-x floating=on
 hc rule class=Vncviewer focus=on tag="$(nameforidx 2 $tagnames)" index=0
-hc rule class=xterm-256color focus=on
-hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
-hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
-# windows that should float.
-hc rule class='Cpu-x' floating=on
-hc rule class~'(.*[Ee][Xx][Ee])' floating=on
-hc rule title='Dragonfall' floating=on
-hc rule class=obs floating=on
-hc rule class=pinentry-qt5 floating=on focus=on
-hc rule class=SDL_App focus=on floating=on
-hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on
-# web browsers
+# specific classes: web browsers
 hc rule class=Chromium-browser focus=off tag="$(nameforidx 4 $tagnames)"
 hc rule class=Falkon focus=off tag="$(nameforidx 4 $tagnames)"
 hc rule class=Firefox-esr focus=on
Return to the top of this page or return to the overview of this repo.