1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | #!/usr/bin/env bash
wm=monsterwm
ff="/tmp/$RANDOM.monsterwm.fifo"
tags=('■' '■' '■' '■' '■')
layouts=('' '' '' '' '')
[[ -p $ff ]] || mkfifo -m 600 "$ff"
function statusbar
{
sdate=" \b0\f7\u0 \b0\f1\u0" date="$(date +"%H:%M")"
music="$(mpc current -f "%artist% - [%title%|%file%]")"
if [ -z "$music" ]; then
music="" smusic=""
else
smusic="$(mpc | sed -rn '2s/\[([[:alpha:]]+)].*/\1/p')"
[ "$smusic" == "paused" ] && smusic=" \b0\f6\u0 \b0\f1\u0" || smusic=" \b0\f6\u0 \b0\f1\u0"
fi
if [ "$(amixer get Master | sed -nr '$ s:.*\[(.+)]$:\1:p')" == "off" ]; then
vol="" svol=""
else
vol="$(amixer get Master | sed -nr '$ s:.*\[(.+%)].*:\1:p')"
if [ "${vol%\%}" -le 10 ]; then
svol=" \b0\f6\u0 \b0\f1\u0"
elif [ "${vol%\%}" -le 20 ]; then
svol=" \b0\f6\u0 \b0\f1\u0"
else
svol=" \b0\f6\u0 \b0\f1\u0"
fi
fi
mem=$(free -m | awk '/buffers\/cache/ {print $3 MB}')
if [ $mem -ge 1500 ]; then
mem="$mem MB" smem="\b0\f3\u0 \b0\f1\u3"
elif [ $mem -ge 800 ]; then
mem="$mem MB" smem="\b0\f6\u0 \b0\f1\u0"
else
mem=""
fi
win=$(xdotool getactivewindow getwindowname)
echo -n "$win \r $smem$mem$svol$vol$smusic$music$sdate$date "
}
while read -t "0.1" -r wmout || true; do
if [[ $wmout =~ ^(([[:digit:]]+:)+[[:digit:]]+ ?)+$ ]]; then
read -ra desktops <<< "$wmout"
tmp=
for desktop in "${desktops[@]}"; do
IFS=':' read -r d w m c u <<< "$desktop"
# Tags labels
label=${tags[$d]}
# Current desktop color and enclosing char (yes/no)
((c)) && fg="7" bg="2" lc="\u7 " rc=" \ur" && layout=${layouts[$m]} || fg="1" bg="0" lc=" " rc=" "
# Has windows ?
((w == 1)) && ((! c)) &&
fg="6" lc="\u0 " rc=" \ur"
((w == 2)) && ((! c)) &&
fg="5" lc="\u0 " rc=" \ur"
((w == 3)) && ((! c)) &&
fg="4" lc="\u0 " rc=" \ur"
((w >= 4)) && ((! c)) &&
fg="3" lc="\u0 " rc=" \ur"
# Urgent windows ?
((u)) && fg="3" bg="1" lc="\u3 " rc=" \ur"
tmp+="\f$fg\b$bg$lc$label$rc\fr\br"
done
# Merge the clients indications and the tile mode
tmp+=" \u0\f7\b0|\u0\b0\f1 $layout \u0\b0\f7|\u0\b0\f1 "
fi
echo "$tmp $(statusbar)"
done < "$ff" | bar &
$wm > "$ff"
rm $ff
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | /* see LICENSE for copyright and license */
#ifndef CONFIG_H
#define CONFIG_H
/** modifiers **/
#define MOD1 Mod1Mask /* ALT key */
#define MOD4 Mod4Mask /* Super/Windows key */
#define CONTROL ControlMask /* Control key */
#define SHIFT ShiftMask /* Shift key */
/** generic settings **/
#define MASTER_SIZE 0.52
#define SHOW_PANEL True /* show panel by default on exec */
#define TOP_PANEL True /* False means panel is on bottom */
#define PANEL_HEIGHT 19 /* 0 for no space for panel, thus no panel */
#define DEFAULT_MODE TILE /* initial layout/mode: TILE MONOCLE BSTACK GRID FLOAT */
#define ATTACH_ASIDE True /* False means new window is master */
#define FOLLOW_WINDOW False /* follow the window when moved to a different desktop */
#define FOLLOW_MOUSE False /* focus the window the mouse just entered */
#define CLICK_TO_FOCUS True /* focus an unfocused window when clicked */
#define FOCUS_BUTTON Button3 /* mouse button to be used along with CLICK_TO_FOCUS */
#define BORDER_WIDTH 3 /* window border width */
#define FOCUS "#6F6F6F" /* focused window border color */
#define UNFOCUS "#0C0C0C" /* unfocused window border color */
#define MINWSZ 50 /* minimum window size in pixels */
#define DEFAULT_DESKTOP 0 /* the desktop to focus initially */
#define DESKTOPS 5 /* number of desktops - edit DESKTOPCHANGE keys to suit */
#define USELESSGAP 10 /* the size of the useless gap in pixels */
/**
* open applications to specified desktop with specified mode.
* if desktop is negative, then current is assumed
*/
static const AppRule rules[] = { \
/* class desktop follow float */
{ "MPlayer", 4, True, False },
{ "Firefox", 3, False, False },
{ "Gimp", 4, False, True },
{ "Scratchpad", -1, False, True },
};
/* helper for spawning shell commands */
#define SHCMD(cmd) {.com = (const char*[]){"/bin/sh", "-c", cmd, NULL}}
/**
* custom commands
* must always end with ', NULL };'
*/
/* static const char *termcmd[] = { "xterm", NULL }; */
static const char *menucmd[] = { "dmenu_run", NULL };
#define DESKTOPCHANGE(K,N) \
{ MOD1, K, change_desktop, {.i = N}}, \
{ MOD1|ShiftMask, K, client_to_desktop, {.i = N}},
/**
* keyboard shortcuts
*/
static Key keys[] = {
/* modifier key function argument */
{ MOD1, XK_b, togglepanel, {NULL}},
{ MOD1, XK_BackSpace, focusurgent, {NULL}},
{ MOD1|SHIFT, XK_c, killclient, {NULL}},
{ MOD1, XK_j, next_win, {NULL}},
{ MOD1, XK_k, prev_win, {NULL}},
{ MOD1, XK_h, resize_master, {.i = -10}}, /* decrease size in px */
{ MOD1, XK_l, resize_master, {.i = +10}}, /* increase size in px */
{ MOD1, XK_o, resize_stack, {.i = -10}}, /* shrink size in px */
{ MOD1, XK_p, resize_stack, {.i = +10}}, /* grow size in px */
{ MOD1|CONTROL, XK_h, rotate, {.i = -1}},
{ MOD1|CONTROL, XK_l, rotate, {.i = +1}},
{ MOD1|SHIFT, XK_h, rotate_filled, {.i = -1}},
{ MOD1|SHIFT, XK_l, rotate_filled, {.i = +1}},
{ MOD1, XK_Tab, last_desktop, {NULL}},
{ MOD1|SHIFT, XK_Return, swap_master, {NULL}},
{ MOD1|SHIFT, XK_j, move_down, {NULL}},
{ MOD1|SHIFT, XK_k, move_up, {NULL}},
{ MOD1|SHIFT, XK_t, switch_mode, {.i = TILE}},
{ MOD1|SHIFT, XK_m, switch_mode, {.i = MONOCLE}},
{ MOD1|SHIFT, XK_b, switch_mode, {.i = BSTACK}},
{ MOD1|SHIFT, XK_g, switch_mode, {.i = GRID}},
{ MOD1|SHIFT, XK_f, switch_mode, {.i = FLOAT}},
{ MOD1|CONTROL, XK_r, quit, {.i = 0}}, /* quit with exit value 0 */
{ MOD1|CONTROL, XK_q, quit, {.i = 1}}, /* quit with exit value 1 */
/** { MOD1, XK_Return, spawn, {.com = termcmd}},
{ MOD4, XK_v, spawn, {.com = menucmd}}, **/
{ MOD4, XK_j, moveresize, {.v = (int []){ 0, 25, 0, 0 }}}, /* move down */
{ MOD4, XK_k, moveresize, {.v = (int []){ 0, -25, 0, 0 }}}, /* move up */
{ MOD4, XK_l, moveresize, {.v = (int []){ 25, 0, 0, 0 }}}, /* move right */
{ MOD4, XK_h, moveresize, {.v = (int []){ -25, 0, 0, 0 }}}, /* move left */
{ MOD4|SHIFT, XK_j, moveresize, {.v = (int []){ 0, 0, 0, 25 }}}, /* height grow */
{ MOD4|SHIFT, XK_k, moveresize, {.v = (int []){ 0, 0, 0, -25 }}}, /* height shrink */
{ MOD4|SHIFT, XK_l, moveresize, {.v = (int []){ 0, 0, 25, 0 }}}, /* width grow */
{ MOD4|SHIFT, XK_h, moveresize, {.v = (int []){ 0, 0, -25, 0 }}}, /* width shrink */
DESKTOPCHANGE( XK_1, 0)
DESKTOPCHANGE( XK_2, 1)
DESKTOPCHANGE( XK_3, 2)
DESKTOPCHANGE( XK_4, 3)
DESKTOPCHANGE( XK_5, 4)
};
/**
* mouse shortcuts
*/
static Button buttons[] = {
{ MOD1, Button1, mousemotion, {.i = MOVE}},
{ MOD1, Button3, mousemotion, {.i = RESIZE}},
{ MOD4, Button3, spawn, {.com = menucmd}},
};
#endif
/* vim: set expandtab ts=4 sts=4 sw=4 : */
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /* The height of the bar (in pixels) */
#define BAR_HEIGHT 18
/* The width of the bar. Set to -1 to fit screen */
#define BAR_WIDTH -1
/* Offset from the left. Set to 0 to have no effect */
#define BAR_OFFSET 0
/* Choose between an underline or an overline */
#define BAR_UNDERLINE 1
/* The thickness of the underline (in pixels). Set to 0 to disable. */
#define BAR_UNDERLINE_HEIGHT 2
/* Default bar position, overwritten by '-b' switch */
#define BAR_BOTTOM 0
/* The fonts used for the bar, comma separated. Only the first 2 will be used.
* */
#define BAR_FONT "-*-stlarch-*-*-*-*-*-*-*-*-*-*-*-*","-*-termsynu-medium-*-*-*-*-*-*-*-*-*-*-*"
/* Some fonts don't set the right width for some chars, pheex it */
#define BAR_FONT_FALLBACK_WIDTH 6
/* Color palette */
#define COLOR0 0x1A1A1A /* background */
#define COLOR1 0xA9A9A9 /* foreground */
#define COLOR2 0x303030
#define COLOR3 0xF92672
#define COLOR4 0xA6E22E
#define COLOR5 0xFD971F
#define COLOR6 0x66D9EF
#define COLOR7 0x9E6FFE
#define COLOR8 0xAF875F
#define COLOR9 0xCCCCC6
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #!/bin/sh
WM=/home/knakis/.wmrun.sh
userresources=$HOME/.Xresources
if [ -f $userresources ]; then
/usr/bin/xrdb -merge $userresources
fi
export GTK_RC_FILES="$HOME/.gtkrc-2.0"
setxkbmap -layout ch -variant fr
xset +fp $HOME/.fonts
sh ~/.fehbg
urxvtd &
redshift -l 8.8383:13.2344 &
if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
exec ssh-agent ck-launch-session dbus-launch --exit-with-session $WM
else
exec ssh-agent dbus-launch --exec-with-session $WM
fi
|
x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | alt + Return
urxvtc
super + v
$HOME/Scripts/dmenu_run.sh
alt + x
xdotool search --onlyvisible --classname Scratchpad windowunmap || xdotool search --classname Scratchpad windowmap || urxvtc -name Scratchpad -title Scratchpad -e screen &
Print
import -w root $HOME/Pictures/bureau-$(date +"%F").jpg
XF86AudioPlay
ncmpcpp toggle
XF86AudioPrev
ncmpcpp prev
XF86AudioNext
ncmpcpp next
XF86AudioStop
ncmpcpp stop
XF86AudioMute
amixer set Master toggle
XF86AudioLowerVolume
amixer set Master 5%-
XF86AudioRaiseVolume
amixer set Master 5%+
|
x
Notes
Monsterwm with uselessgaps and monocleborders patch.
http://image.noelshack.com/fichiers/2014/13/1396209788-mon-gif.gif
nounoursheureux said about 10 years ago
C'est quoi le logiciel qui affiche plein de lettres ?
What’s this software which prints lots of characters ?
Knakis said about 10 years ago
It’s cmatrix.
http://www.asty.org/cmatrix/