fix powerbutton - with xmonad | remove xmobar

This commit is contained in:
2025-05-03 12:33:35 +02:00
parent 228215db5e
commit 3704615cd4
11 changed files with 32 additions and 279 deletions

View File

@@ -1,9 +1,9 @@
bat=$(cat /sys/class/power_supply/BAT0/capacity)
stat=$(cat /sys/class/power_supply/BAT0/status)
stat=$(cat /sys/class/power_supply/AC/online)
class="batteryFull"
if [[ $stat == "Charging" ]]; then
if [[ $stat == 1 ]]; then
class="batteryCharging"
elif [[ $bat -le 10 ]]; then
class="batteryEmpty"

View File

@@ -1,9 +1,9 @@
bat=$(cat /sys/class/power_supply/BAT0/capacity)
stat=$(cat /sys/class/power_supply/BAT0/status)
stat=$(cat /sys/class/power_supply/AC/online)
icon=""
if [[ $stat == "Charging" ]]; then
if [[ $stat == 1 ]]; then
icon=""
elif [[ $bat -le 10 ]]; then
icon=""

View File

@@ -1,5 +1,9 @@
WINDOW_NAME="power"
if eww windows | grep -q "$WINDOW_NAME"; then
echo "Power button pressed" >>/tmp/acpi_log.txt
# Check if the window is already open
if eww active-windows | grep -q "$WINDOW_NAME"; then
eww close "$WINDOW_NAME"
else
eww open "$WINDOW_NAME"

View File

@@ -1,33 +0,0 @@
module Plugins.Audio where
import Xmobar
import System.Process
import Control.Concurrent
data Audio = Audio Int deriving (Read, Show)
instance Exec Audio where
alias (Audio _) = "audio"
start (Audio r) cb = if r > 0 then go cb r else go cb 1000
where
go :: (String -> IO ()) -> Int -> IO ()
go cb r = do
response <- readProcess "/bin/sh" ["-c", "pulseaudio-ctl full-status"] ""
let list = [w | w <- words (init response)]
audio (head list) (list !! 1) (last list) cb
threadDelay r
go cb r
audio :: String -> String -> String -> (String -> IO ()) -> IO ()
audio vol speaker mic cb
| speaker == "yes" = chooseMic vol "#f38ba8" "\xf466" mic cb
| elem vol [show i | i <- [0..49]] = chooseMic vol "#a6e3a1" "\xf027" mic cb
| otherwise = chooseMic vol "#a6e3a1" "\xf028" mic cb
| otherwise = formatAudio vol "a" "c" "d" "e" cb
where
chooseMic :: String -> String -> String -> String -> (String -> IO ()) -> IO ()
chooseMic vol speakerC speakerI mic cb
| mic == "yes" = formatAudio vol speakerC speakerI "#f38ba8" "\xf036d" cb
| otherwise = formatAudio vol speakerC speakerI "#a6e3a1" "\xf036c" cb
formatAudio :: String -> String -> String -> String -> String -> (String -> IO ()) -> IO ()
formatAudio vol speakerC speakerI micC micI cb = cb ("<fc=" ++ speakerC ++ "><fn=1>" ++ speakerI ++ "</fn></fc> " ++ vol ++ "% <fc=" ++ micC ++ "><fn=1>" ++ micI ++ "</fn></fc>")

View File

@@ -1,13 +0,0 @@
{ pkgs ? import <nixpkgs> { } }:
with pkgs;
haskellPackages.mkDerivation {
pname = "xmobar";
version = "0.1.0.0";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = with haskellPackages; [ base xmobar ];
license = "unknown";
hydraPlatforms = lib.platforms.none;
}

View File

@@ -1,54 +0,0 @@
cabal-version: 3.0
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'xmobar-custom' generated by
-- 'cabal init'. For further documentation, see:
-- http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name: xmobar-custom
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.1.0.0
-- The package author(s).
author: einfischy
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: accounts.codeberg@kstn.in
-- A copyright notice.
-- copyright:
build-type: Simple
common warnings
ghc-options: -Wall -threaded
executable xmobar
-- Import common warning flags.
import: warnings
-- .hs or .lhs file containing the Main module.
main-is: xmobar.hs
-- Other library packages from which modules are imported.
build-depends: base >= 4.11.0 && < 4.20,
xmobar ^>=0.48
-- Directories containing source files.
hs-source-dirs: .
-- Base language which the package is written in.
default-language: Haskell2010

View File

@@ -1,138 +0,0 @@
import Xmobar
--import Plugins.Audio
--import Xmobar.Run.Exec
--import Xmobar (Command(ComX))
--import GHC.Real (Integral(rem))
config :: Config
config =
defaultConfig
{ font = "Fira Code 10"
, position = TopH 25
, borderColor = "#11111b"
, border = FullB
, borderWidth = 2
, bgColor = "#1e1e2e"
, fgColor = "#f5e0dc"
, commands =
[
--Run $ Audio 10
Run $ Com "/bin/sh" ["-c", "Status=$(pulseaudio-ctl full-status); Volume=$(cut -d ' ' -f 1 <<<$Status); Mute=$(cut -d ' ' -f 2 <<<$Status); Microphone=$(cut -d ' ' -f 3 <<<$Status); SpeakerColor=\"#a6e3a1\"; MicColor=\"#a6e3a1\"; if [[ $Mute == \"yes\" ]]; then Symbol=\"\xf466\"; SpeakerColor=\"#f38ba8\"; elif [[ $Volume -le 100 ]]; then Symbol=\"\xf027\"; elseSymbol=\"\xf028\"; fi; if [[ $Microphone == \"yes\" ]]; then MicOut=\"\xf036d\"; MicColor=\"#f38ba8\"; else MicOut=\"\xf036c\"; fi; Volume=$(( Volume/2 )); echo \"<fc=$SpeakerColor><fn=1>$Symbol</fn></fc> $Volume% <fc=$MicColor><fn=1>$MicOut</fn></fc>\""] "audio" 10
--Run $ Com "/bin/sh" ["-c", "Status=$(pulseaudio-ctl full-status);
-- Volume=$(cut -d ' ' -f 1 <<<$Status);
-- Mute=$(cut -d ' ' -f 2 <<<$Status);
-- Microphone=$(cut -d ' ' -f 3 <<<$Status);
-- SpeakerColor=\"#a6e3a1\";
-- MicColor=\"#a6e3a1\";
-- if [[ $Mute == \"yes\" ]];
-- then
-- Symbol=\"\xf466\";
-- SpeakerColor=\"#f38ba8\";
-- elif [[ $Volume -le 50 ]];
-- then
-- Symbol=\"\xf027\";
-- else Symbol=\"\xf028\";
-- fi;
--
-- if [[ $Microphone == \"yes\" ]];
-- then
-- MicOut=\"\xf036d\";
-- MicColor=\"#f38ba8\";
-- else MicOut=\"\xf036c\";
-- fi;xmobar.Run not found
--
-- echo \"<fc=$SpeakerColor><fn=1>$Symbol</fn></fc> $Volume% <fc=$MicColor><fn=1>$MicOut</fn></fc>\""] "audio" 10
--Run $ Audio
--[
-- "--template", "<fc=<speakerColor>><fn=1><speakerIcon></fn></fc> <Volume>% <fc=<micColor>><fn=1><micIcon></fn></fc>"
-- , "" ""
--] 10
-- Run $ Audio "#f38ba8" "#a6e3a1" "\xf466" "\xf027" "\xf027" "\xf036d" "\xf036c" 10
--Run $ Audio "<fc=#fab387><fn=1>\xf017</fn></fc> %a %d.%m.%y %H:%M" "date" 300
, Run $ Com "/bin/sh" ["-c", "echo \"<fc=#f9e2af><fn=1>\xf00e0</fn></fc> $(xbacklight -get)%\""] "backlight" 10
, Run $ Cpu
[
"--template", "<fc=#b4befe><fn=1>\xf085</fn></fc> <total>%"
, "--Low","3"
, "--High","50"
, "--low","#f5e0dc"
, "--normal","#f5e0dc"
, "--high","#f38ba8"
] 50
, Run $ Memory
[
"-t","<fc=#74c7ec><fn=1>\xF2DB</fn></fc> <usedratio>%"
,"-H","80"
,"-L","10"
,"-l","#f5e0dc"
,"-n","#f5e0dc"
,"-h","#f38ba8"
] 50
, Run $ Date "<fc=#fab387><fn=1>\xf017</fn></fc> %a %d.%m.%y %H:%M" "date" 300
, Run $ DynNetwork
[
"-t","<fc=#74c7ec><fn=1>\xf063</fn></fc> <rx> <fc=#f38ba8><fn=1>\xf062</fn></fc> <tx>"
,"-H","200"
,"-L","10"
,"-h","#f5e0dc"
,"-l","#f5e0dc"
,"-n","#f38ba8"
] 50
, Run $ BatteryP [ "BAT0" ]
[
"--template" , "<fc=#a6e3a1><fn=1>\xf240</fn></fc> <acstatus>"
, "--Low" , "10" -- units: %
, "--High" , "80" -- units: %
, "--low" , "#f38ba8"
, "--normal" , "#f5e0dc"
, "--high" , "#a6e3a1"
, "--" -- battery specific options
-- discharging status
, "-o" , "<left>% (<timeleft>)"
-- AC "on" status
, "-O" , "<left>% (<fc=#a6e3a1>Charging</fc>)"
-- charged status
, "-i" , "<fc=#f9e2af>Charged</fc>"
] 50
, Run XMonadLog
]
, sepChar = "%"
, alignSep = "}{"
, template = "%XMonadLog% }{ %audio% | %backlight% | %cpu% | %memory% | %battery% | %dynnetwork% | %date% "
}
--instance Exec Audio where
-- alias (Audio _ _ ) = "audio"
-- start (Audio a r) = startAudio a r
-- where
-- startAudio :: [String] -> Int -> (String -> IO ()) -> IO ()
-- startAudio =
--Run $ Com "/bin/sh" ["-c", "Status=$(pulseaudio-ctl full-status);
-- Volume=$(cut -d ' ' -f 1 <<<$Status);
-- Mute=$(cut -d ' ' -f 2 <<<$Status);
-- Microphone=$(cut -d ' ' -f 3 <<<$Status);
-- SpeakerColor=\"#a6e3a1\";
-- MicColor=\"#a6e3a1\";
-- if [[ $Mute == \"yes\" ]];
-- then
-- Symbol=\"\xf466\";
-- SpeakerColor=\"#f38ba8\";
-- elif [[ $Volume -le 50 ]];
-- then
-- Symbol=\"\xf027\";
-- else Symbol=\"\xf028\";
-- fi;
--
-- if [[ $Microphone == \"yes\" ]];
-- then
-- MicOut=\"\xf036d\";
-- MicColor=\"#f38ba8\";
-- else MicOut=\"\xf036c\";
-- fi;
--
-- echo \"<fc=$SpeakerColor><fn=1>$Symbol</fn></fc> $Volume% <fc=$MicColor><fn=1>$MicOut</fn></fc>\""] "audio" 10
main :: IO ()
main = xmobar config

View File

@@ -59,6 +59,8 @@ myKeys =
, ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ +10%")
, ("<XF86AudioLowerVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ -10%")
, ("<XF86AudioMicMute>", spawn "pactl set-source-mute @DEFAULT_SOURCE@ toggle")
, -- Powerbutton
("<XF86PowerOff>", spawn "/home/$USER/.config/eww/scripts/powermenu.sh")
]
-- `removeKeysP` [ "M-S-q" ]