Add new symbols to xmobar
This commit is contained in:
parent
26d889cd4d
commit
e857efd65a
@ -1,3 +1,4 @@
|
|||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
|
||||||
-- ░▀█▀░█▄█░█▀█░█▀█░█▀▄░▀█▀░█▀▀
|
-- ░▀█▀░█▄█░█▀█░█▀█░█▀▄░▀█▀░█▀▀
|
||||||
-- ░░█░░█░█░█▀▀░█░█░█▀▄░░█░░▀▀█
|
-- ░░█░░█░█░█▀▀░█░█░█▀▄░░█░░▀▀█
|
||||||
@ -18,7 +19,7 @@ import qualified Data.Map as M
|
|||||||
|
|
||||||
import XMonad.Util.Run (spawnPipe, hPutStrLn, runProcessWithInput)
|
import XMonad.Util.Run (spawnPipe, hPutStrLn, runProcessWithInput)
|
||||||
import XMonad.Util.NamedScratchpad
|
import XMonad.Util.NamedScratchpad
|
||||||
-- import XMonad.Util.SpawnOnce
|
import XMonad.Util.SpawnOnce
|
||||||
|
|
||||||
import XMonad.Layout.Spacing
|
import XMonad.Layout.Spacing
|
||||||
import XMonad.Layout.Fullscreen
|
import XMonad.Layout.Fullscreen
|
||||||
@ -37,7 +38,7 @@ import Graphics.X11.ExtraTypes.XF86
|
|||||||
-- colors
|
-- colors
|
||||||
|
|
||||||
type Color = String
|
type Color = String
|
||||||
|
|
||||||
background = "#272822"
|
background = "#272822"
|
||||||
foreground = "#f8f8f2"
|
foreground = "#f8f8f2"
|
||||||
red = "#f92672"
|
red = "#f92672"
|
||||||
@ -47,7 +48,7 @@ blue = "#66d9ef"
|
|||||||
magenta = "#ae81ff"
|
magenta = "#ae81ff"
|
||||||
cyan = "#a1efe4"
|
cyan = "#a1efe4"
|
||||||
|
|
||||||
|
|
||||||
-- ░█▀▀░█▀█░█▀█░█▀▀░▀█▀░█▀▀
|
-- ░█▀▀░█▀█░█▀█░█▀▀░▀█▀░█▀▀
|
||||||
-- ░█░░░█░█░█░█░█▀▀░░█░░█░█
|
-- ░█░░░█░█░█░█░█▀▀░░█░░█░█
|
||||||
-- ░▀▀▀░▀▀▀░▀░▀░▀░░░▀▀▀░▀▀▀
|
-- ░▀▀▀░▀▀▀░▀░▀░▀░░░▀▀▀░▀▀▀
|
||||||
@ -72,7 +73,7 @@ myModMask :: KeyMask
|
|||||||
myModMask = mod4Mask
|
myModMask = mod4Mask
|
||||||
|
|
||||||
myWorkspaces :: [WorkspaceId]
|
myWorkspaces :: [WorkspaceId]
|
||||||
myWorkspaces = ["gen","www","emx","dev","slk","6","7","8","9"]
|
myWorkspaces = ["gen","www","emx","dev","slk","6","7","8","com"]
|
||||||
|
|
||||||
myNormalBorderColor = "#dddddd"
|
myNormalBorderColor = "#dddddd"
|
||||||
myFocusedBorderColor = "#ff0000"
|
myFocusedBorderColor = "#ff0000"
|
||||||
@ -95,13 +96,13 @@ myScratchpads = [ NS "ncmpcpp" spawnNC findNC layoutNC
|
|||||||
spawnTM = myTerminal ++ " --class instanceClass,floatingTerminal -e tmux new-session -A -s floating"
|
spawnTM = myTerminal ++ " --class instanceClass,floatingTerminal -e tmux new-session -A -s floating"
|
||||||
findTM = className =? "floatingTerminal"
|
findTM = className =? "floatingTerminal"
|
||||||
layoutTM = customFloating $ W.RationalRect (1/6) (1/6) (2/3) (2/3)
|
layoutTM = customFloating $ W.RationalRect (1/6) (1/6) (2/3) (2/3)
|
||||||
|
|
||||||
spawnSC = "sxiv ~/uni/schedule.png"
|
spawnSC = "sxiv ~/uni/schedule.png"
|
||||||
findSC = className =? "sxiv"
|
findSC = className =? "sxiv"
|
||||||
|
|
||||||
spawnH = "echo \"" ++ help ++ "\" | xmessage -file -"
|
spawnH = "echo \"" ++ help ++ "\" | xmessage -file -"
|
||||||
findH = className =? "Xmessage"
|
findH = className =? "Xmessage"
|
||||||
|
|
||||||
-- ░█░█░█▀▀░█░█░█▀▀
|
-- ░█░█░█▀▀░█░█░█▀▀
|
||||||
-- ░█▀▄░█▀▀░░█░░▀▀█
|
-- ░█▀▄░█▀▀░░█░░▀▀█
|
||||||
-- ░▀░▀░▀▀▀░░▀░░▀▀▀
|
-- ░▀░▀░▀▀▀░░▀░░▀▀▀
|
||||||
@ -126,7 +127,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||||||
, ((modm , xK_comma ), sendMessage (IncMasterN 1))
|
, ((modm , xK_comma ), sendMessage (IncMasterN 1))
|
||||||
, ((modm , xK_period), sendMessage (IncMasterN (-1)))
|
, ((modm , xK_period), sendMessage (IncMasterN (-1)))
|
||||||
-- , ((modm , xK_b ), sendMessage ToggleStruts)
|
-- , ((modm , xK_b ), sendMessage ToggleStruts)
|
||||||
, ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
|
, ((modm .|. shiftMask, xK_q ), io exitSuccess)
|
||||||
, ((modm , xK_c ), myRestartHook )
|
, ((modm , xK_c ), myRestartHook )
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -140,7 +141,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||||||
|
|
||||||
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
|
||||||
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
|
||||||
|
|
||||||
[((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
|
[((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
|
||||||
| (key, sc) <- zip [xK_u, xK_i] [0..]
|
| (key, sc) <- zip [xK_u, xK_i] [0..]
|
||||||
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
|
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
|
||||||
@ -162,7 +163,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||||||
, ((modm , xK_p), spawn "mpc toggle")
|
, ((modm , xK_p), spawn "mpc toggle")
|
||||||
, ((modm , xK_q), namedScratchpadAction myScratchpads "ncmpcpp")
|
, ((modm , xK_q), namedScratchpadAction myScratchpads "ncmpcpp")
|
||||||
, ((modm , xK_minus), namedScratchpadAction myScratchpads "schedule")
|
, ((modm , xK_minus), namedScratchpadAction myScratchpads "schedule")
|
||||||
, ((modm , xK_F7), spawn "amixer set Master 2%-")
|
, ((modm , xK_F7), spawn "amixer set Master 2%-")
|
||||||
, ((modm , xK_F8), spawn "amixer set Master 2%+")
|
, ((modm , xK_F8), spawn "amixer set Master 2%+")
|
||||||
-- , ((modm , xK_c), spawn myTerminal ++ " -e cfile")
|
-- , ((modm , xK_c), spawn myTerminal ++ " -e cfile")
|
||||||
, ((modm , xK_n), spawn "fcitx-remote -s fcitx-keyboard-no")
|
, ((modm , xK_n), spawn "fcitx-remote -s fcitx-keyboard-no")
|
||||||
@ -178,13 +179,13 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||||||
|
|
||||||
, ((0, xF86XK_AudioRaiseVolume ), spawn "amixer set Master 2%+")
|
, ((0, xF86XK_AudioRaiseVolume ), spawn "amixer set Master 2%+")
|
||||||
, ((0, xF86XK_AudioLowerVolume ), spawn "amixer set Master 2%-")
|
, ((0, xF86XK_AudioLowerVolume ), spawn "amixer set Master 2%-")
|
||||||
, ((0, xF86XK_AudioMute ), spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
|
, ((0, xF86XK_AudioMute ), spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
|
||||||
|
|
||||||
, ((0, xF86XK_AudioPlay ), spawn "mpc toggle")
|
, ((0, xF86XK_AudioPlay ), spawn "mpc toggle")
|
||||||
, ((0, xF86XK_AudioPrev ), spawn "mpc prev")
|
, ((0, xF86XK_AudioPrev ), spawn "mpc prev")
|
||||||
, ((0, xF86XK_AudioNext ), spawn "mpc next")
|
, ((0, xF86XK_AudioNext ), spawn "mpc next")
|
||||||
|
|
||||||
, ((0, xF86XK_MonBrightnessUp ), spawn "light -A 5")
|
, ((0, xF86XK_MonBrightnessUp ), spawn "light -A 5")
|
||||||
, ((0, xF86XK_MonBrightnessDown ), spawn "light -U 5")
|
, ((0, xF86XK_MonBrightnessDown ), spawn "light -U 5")
|
||||||
|
|
||||||
, ((modm .|. shiftMask, xK_slash ), namedScratchpadAction myScratchpads "help")
|
, ((modm .|. shiftMask, xK_slash ), namedScratchpadAction myScratchpads "help")
|
||||||
@ -205,18 +206,17 @@ viewDropboxStatus = spawn =<< ((++) "notify-send -t 3000 " . unpack) <$> status
|
|||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- Mouse bindings: default actions bound to mouse events
|
-- Mouse bindings: default actions bound to mouse events
|
||||||
--
|
--
|
||||||
myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
|
myMouseBindings XConfig {XMonad.modMask = modm} = M.fromList
|
||||||
|
|
||||||
-- mod-button1, Set the window to floating mode and move by dragging
|
-- mod-button1, Set the window to floating mode and move by dragging
|
||||||
[ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
|
[ ((modm, button1), \w -> focus w >> mouseMoveWindow w
|
||||||
>> windows W.shiftMaster))
|
>> windows W.shiftMaster)
|
||||||
|
|
||||||
-- mod-button2, Raise the window to the top of the stack
|
-- mod-button2, Raise the window to the top of the stack
|
||||||
, ((modm, button2), (\w -> focus w >> windows W.shiftMaster))
|
, ((modm, button2), \w -> focus w >> windows W.shiftMaster)
|
||||||
|
|
||||||
-- mod-button3, Set the window to floating mode and resize by dragging
|
-- mod-button3, Set the window to floating mode and resize by dragging
|
||||||
, ((modm, button3), (\w -> focus w >> mouseResizeWindow w
|
, ((modm, button3), \w -> focus w >> mouseResizeWindow w
|
||||||
>> windows W.shiftMaster))
|
>> windows W.shiftMaster)
|
||||||
|
|
||||||
-- you may also bind events to the mouse scroll wheel (button4 and button5)
|
-- you may also bind events to the mouse scroll wheel (button4 and button5)
|
||||||
]
|
]
|
||||||
@ -227,7 +227,7 @@ myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
|
|||||||
-- layout
|
-- layout
|
||||||
|
|
||||||
|
|
||||||
myLayout =
|
myLayout =
|
||||||
fullscreenFull $
|
fullscreenFull $
|
||||||
avoidStruts $
|
avoidStruts $
|
||||||
smartBorders $
|
smartBorders $
|
||||||
@ -274,6 +274,7 @@ myManageHook = composeAll
|
|||||||
, resource =? "kdesktop" --> doIgnore
|
, resource =? "kdesktop" --> doIgnore
|
||||||
, resource =? "fcitx-config" --> doFloat
|
, resource =? "fcitx-config" --> doFloat
|
||||||
, className =? "copyq" --> doFloat
|
, className =? "copyq" --> doFloat
|
||||||
|
, className =? "discord" --> doShift "com"
|
||||||
] <+> namedScratchpadManageHook myScratchpads
|
] <+> namedScratchpadManageHook myScratchpads
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
@ -311,6 +312,14 @@ myLogHook xmproc = dynamicLogWithPP $ xmobarPP
|
|||||||
, ppSep = "<fc=#666666> <fn=0>|</fn> </fc>"
|
, ppSep = "<fc=#666666> <fn=0>|</fn> </fc>"
|
||||||
, ppUrgent = xmobarColor red "" . wrap "!" "!"
|
, ppUrgent = xmobarColor red "" . wrap "!" "!"
|
||||||
, ppExtras = [windowCount]
|
, ppExtras = [windowCount]
|
||||||
|
, ppLayout =
|
||||||
|
wrap "<fn=4>" "</fn>" .
|
||||||
|
(\case
|
||||||
|
"Spacing Full" -> "🖵"
|
||||||
|
"Spacing Tall" -> "🗗"
|
||||||
|
"Spacing Magnifier Tall" -> "\128269" -- 🔍
|
||||||
|
"Spacing Mirror Tall" -> "\129694" -- 🪞
|
||||||
|
)
|
||||||
, ppOrder = \(ws:l:t:ex) -> [ws,l] ++ ex ++ [t]
|
, ppOrder = \(ws:l:t:ex) -> [ws,l] ++ ex ++ [t]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,7 +333,7 @@ myLogHook xmproc = dynamicLogWithPP $ xmobarPP
|
|||||||
myStartupHook :: X ()
|
myStartupHook :: X ()
|
||||||
myStartupHook = do
|
myStartupHook = do
|
||||||
spawn "stalonetray &"
|
spawn "stalonetray &"
|
||||||
-- spawnOnce "$HOME/.xmonad/xinit.sh"
|
spawnOnce "$HOME/.xmonad/setup-script/xinit.sh"
|
||||||
|
|
||||||
myRestartHook :: X ()
|
myRestartHook :: X ()
|
||||||
myRestartHook = do
|
myRestartHook = do
|
||||||
|
18
laptop/.config/xmobar/scripts/mpd_status.sh
Executable file
18
laptop/.config/xmobar/scripts/mpd_status.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
MPD_STATUS=$(mpc 2>/dev/null | sed -n '2{p;q}' | cut -d ' ' -f1)
|
||||||
|
case "$MPD_STATUS" in
|
||||||
|
"[playing]")
|
||||||
|
echo "<fn=2><fc=#00ff00>▶</fc></fn>"
|
||||||
|
# echo "[<fn=2><fc=#00ff00>行</fc></fn>]"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"[paused]")
|
||||||
|
echo "<fn=2><fc=#ff0000>⏸</fc></fn>"
|
||||||
|
# echo "[<fn=1><fc=#ff0000>止</fc></fn>]"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "<fn=2><fc=#AA0000>⏼</fc></fn>"
|
||||||
|
# echo "[<fn=1><fc=#AA0000>無</fc></fn>]"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
43
laptop/.config/xmobar/scripts/volume.py
Executable file
43
laptop/.config/xmobar/scripts/volume.py
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/python
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
USE_SYMBOLS = True
|
||||||
|
VOLUME_COMMAND = 'amixer get Master'.split(' ')
|
||||||
|
VOLUME_SYMBOLS = {
|
||||||
|
"0": "𝒫", # "∅"
|
||||||
|
"10": "−",
|
||||||
|
"20": "=",
|
||||||
|
"30": "≡",
|
||||||
|
"40": "∫",
|
||||||
|
"50": "∮",
|
||||||
|
"60": "∬",
|
||||||
|
"70": "∯",
|
||||||
|
"80": "∭",
|
||||||
|
"90": "∰",
|
||||||
|
"100": "⨌",
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_volume():
|
||||||
|
volumeData = subprocess \
|
||||||
|
.check_output(VOLUME_COMMAND) \
|
||||||
|
.decode() \
|
||||||
|
.split('\n')[5] \
|
||||||
|
.strip() \
|
||||||
|
.split(' ')
|
||||||
|
|
||||||
|
volume_level = int(volumeData[-2][1:-2])
|
||||||
|
|
||||||
|
if USE_SYMBOLS:
|
||||||
|
volume = VOLUME_SYMBOLS[str((volume_level // 10) * 10)]
|
||||||
|
if volumeData[-1] == '[off]':
|
||||||
|
volume = 'Ψ'
|
||||||
|
else:
|
||||||
|
volume = f'{volume_level}%'
|
||||||
|
if volumeData[-1] == '[off]':
|
||||||
|
volume = 'M'
|
||||||
|
|
||||||
|
return volume
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print(get_volume())
|
33
laptop/.config/xmobar/scripts/wireless.sh
Executable file
33
laptop/.config/xmobar/scripts/wireless.sh
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
NETWORK_CARD=$(ip -br link | grep UP | grep -v lo | head -n 1 | awk '{print $1}')
|
||||||
|
|
||||||
|
iwconfig $NETWORK_CARD 2>&1 | grep -q no\ wireless\ extensions\. && {
|
||||||
|
echo wired
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
essid=`iwconfig $NETWORK_CARD | awk -F '"' '/ESSID/ {print $2}'`
|
||||||
|
stngth=`iwconfig $NETWORK_CARD | awk -F '=' '/Quality/ {print $2}' | cut -d '/' -f 1`
|
||||||
|
bars=`expr $stngth / 20`
|
||||||
|
|
||||||
|
case $bars in
|
||||||
|
# 0) bar='[-----]' ;;
|
||||||
|
# 1) bar='[/----]' ;;
|
||||||
|
# 2) bar='[//---]' ;;
|
||||||
|
# 3) bar='[///--]' ;;
|
||||||
|
# 4) bar='[////-]' ;;
|
||||||
|
# 5) bar='[/////]' ;;
|
||||||
|
# *) bar='[--!--]' ;;
|
||||||
|
0) bar='[<fn=1>〇</fn>]' ;;
|
||||||
|
1) bar='[<fn=1>壱</fn>]' ;;
|
||||||
|
2) bar='[<fn=1>弐</fn>]' ;;
|
||||||
|
3) bar='[<fn=1>参</fn>]' ;;
|
||||||
|
4) bar='[<fn=1>肆</fn>]' ;;
|
||||||
|
5) bar='[<fn=1>伍</fn>]' ;;
|
||||||
|
*) bar='[<fn=1>無</fn>]' ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "$essid $bar"
|
||||||
|
|
||||||
|
exit 0
|
72
laptop/.config/xmobar/xmobarrc
Normal file
72
laptop/.config/xmobar/xmobarrc
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
Config {
|
||||||
|
font = "xft:Fira Code Retina:pixelsize=15:antialias=true:hinting=true"
|
||||||
|
, additionalFonts = [
|
||||||
|
"xft:Droid Sans Japanese:pixelsize=20:antialias=true:hinting=true",
|
||||||
|
"xft:Symbola:pixelsize=20",
|
||||||
|
"xft:Asana Math:pixelsize=20",
|
||||||
|
"xft:Noto Sans Symbols2",
|
||||||
|
"xft:FiraCode Nerd Font"
|
||||||
|
]
|
||||||
|
, borderColor = "black"
|
||||||
|
, border = TopB
|
||||||
|
, bgColor = "#272822"
|
||||||
|
, fgColor = "grey"
|
||||||
|
, alpha = 255
|
||||||
|
, position = Static { xpos = 0 , ypos = 0, width = 1920, height = 40 }
|
||||||
|
, textOffset = -1
|
||||||
|
, iconOffset = -1
|
||||||
|
, lowerOnStart = True
|
||||||
|
, pickBroadest = False
|
||||||
|
, persistent = False
|
||||||
|
, hideOnStart = False
|
||||||
|
, iconRoot = "/home/h7x4/.config/xmobar/"
|
||||||
|
, allDesktops = True
|
||||||
|
, overrideRedirect = True
|
||||||
|
, commands = [
|
||||||
|
-- Run Weather "ENVA"
|
||||||
|
-- [
|
||||||
|
-- "-t","<tempC>C",
|
||||||
|
-- "-L","6",
|
||||||
|
-- "-H","18",
|
||||||
|
-- "--normal","green",
|
||||||
|
-- "--high","red",
|
||||||
|
-- "--low","lightblue"
|
||||||
|
-- ] 36000,
|
||||||
|
|
||||||
|
Run Network "wlp59s0"
|
||||||
|
[
|
||||||
|
"-t", "<rx><fn=3>↓</fn> <tx><fn=3>↑</fn>",
|
||||||
|
"-L","0",
|
||||||
|
"-H","32",
|
||||||
|
"--normal","green",
|
||||||
|
"--high","red"
|
||||||
|
] 10,
|
||||||
|
|
||||||
|
Run Memory ["-t","<usedratio>%"] 10,
|
||||||
|
Run Swap ["-t", "<usedratio>%"] 100,
|
||||||
|
Run Date "%a %_d %b %H:%M" "date" 10,
|
||||||
|
Run Com "/home/h7x4/.config/xmobar/scripts/mpd_status.sh" [] "mpc" 10,
|
||||||
|
-- Run Com "/home/h7x4/.config/xmobar/scripts/wireless.sh" [] "wi" 100,
|
||||||
|
Run Com "/home/h7x4/.config/xmobar/scripts/volume.py" [] "vol" 10,
|
||||||
|
Run UnsafeStdinReader,
|
||||||
|
|
||||||
|
Run BatteryP ["BAT0"]
|
||||||
|
[
|
||||||
|
"-t", "<fn=2><acstatus></fn> (<left>%)",
|
||||||
|
"--Low", "20",
|
||||||
|
"--High", "50",
|
||||||
|
"--low", "red",
|
||||||
|
"--normal", "yellow",
|
||||||
|
"--high", "green",
|
||||||
|
"--",
|
||||||
|
"-O", "<fc=green>🔌</fc>",
|
||||||
|
"-o", "<fc=yellow>🔋</fc>"
|
||||||
|
] 50
|
||||||
|
|
||||||
|
]
|
||||||
|
, sepChar = "%"
|
||||||
|
, alignSep = "}{" -- <fc=#7700ff><icon=/home/h7x4/.config/xmobar/lambda-30.xbm/></fc>
|
||||||
|
, template = " <icon=lambda_30.xpm/> %mpc% %UnsafeStdinReader% }\
|
||||||
|
\ <fc=#ee9a00>%date%</fc> \
|
||||||
|
\{ <fc=lightgreen><fn=2>🐏</fn> %memory%</fc> | <fc=cyan>%wlp59s0%</fc> | <fc=#f5f1bc><fn=3>%vol%</fn></fc> | %battery% "
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user