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

@@ -133,8 +133,6 @@
seahorse
libgnome-keyring
acpid
# For setting the necessary permissions for gnome.nautilus.
lxqt.lxqt-policykit # provides a default authentication client for policykit
];
@@ -185,13 +183,6 @@
# Disable powerbutton => for use with eww
services.logind.extraConfig = ''HandlePowerKey=ignore'';
services.acpid.enable = true;
environment.etc = {
"acpi/events/power".text = ''
event=button/power.*
action=/home/elias/eww/scripts/powermenu.sh
'';
};
# Set stateVersion. Leave it as set.
system.stateVersion = "23.11";

40
flake.lock generated
View File

@@ -243,11 +243,11 @@
]
},
"locked": {
"lastModified": 1746177088,
"narHash": "sha256-hmHKl4meWr6ryzqQAwRD3+3Ihfb/Y/0CbK+WnE+oa6Q=",
"lastModified": 1746243165,
"narHash": "sha256-DQycVmlyLQNLjLJ/FzpokVmbxGQ8HjQQ4zN4nyq2vII=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f045bd46b73c3b0ed4e46cdb6036b3d5823d7dee",
"rev": "c0962eeeabfb8127713f859ec8a5f0e86dead0f2",
"type": "github"
},
"original": {
@@ -269,11 +269,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1746168726,
"narHash": "sha256-ZkgW3U37lTwzqUo2rfko+utld5ChnYWDunJ2hAcJOQo=",
"lastModified": 1746256223,
"narHash": "sha256-a97mwMJcE0cYGfwB5N5v+Ey+by1poGTc/fsrd47Fom8=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "d4e6959d82e9e9dc609dcbf7a29fd293fad9c912",
"rev": "02ec02529a5d602a9e9d273531d776d160fae182",
"type": "github"
},
"original": {
@@ -285,11 +285,11 @@
"neovim-src": {
"flake": false,
"locked": {
"lastModified": 1746141998,
"narHash": "sha256-CYxer9cRvlMySr76epuh5Ub3ryyDV94yVwDC1M/MPvw=",
"lastModified": 1746214751,
"narHash": "sha256-FlGgG3A9oJwGP0YTWU2Nw9fwdnqPMapjx3twonu0Vkg=",
"owner": "neovim",
"repo": "neovim",
"rev": "ce8b755a86c10496a81675c49b3bc9a42c79d80f",
"rev": "5a2edc483dff93cc94847b6950713d80a51087c0",
"type": "github"
},
"original": {
@@ -360,10 +360,12 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 0,
"narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=",
"path": "/nix/store/s8b6phy15mzjvx56vjdd1rdd8hr07qw5-source",
"type": "path"
"lastModified": 1746206129,
"narHash": "sha256-JA4DynBKhY7t4DdJZTuomRLAiXFDUgCGGwxgt+XGiik=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9a7caecf30a0494c88b7daeeed29244cd9a52e7d",
"type": "github"
},
"original": {
"id": "nixpkgs",
@@ -377,11 +379,11 @@
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1746175988,
"narHash": "sha256-Zcq3UcnsZis/3bAevz2yBWP5hp6LBGIsoO+dIAPqy+o=",
"lastModified": 1746267210,
"narHash": "sha256-bwvvkCXoy88F9xJZoXhRU6QLQyijyVFcORA+MJ7TrY4=",
"owner": "nix-community",
"repo": "NUR",
"rev": "68db141101c20602e175a53b290bc6064e83bf30",
"rev": "e42236846f62fda1479b1c7a3a709bca8f60e3c0",
"type": "github"
},
"original": {
@@ -474,11 +476,11 @@
]
},
"locked": {
"lastModified": 1745929750,
"narHash": "sha256-k5ELLpTwRP/OElcLpNaFWLNf8GRDq4/eHBmFy06gGko=",
"lastModified": 1746216483,
"narHash": "sha256-4h3s1L/kKqt3gMDcVfN8/4v2jqHrgLIe4qok4ApH5x4=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "82bf32e541b30080d94e46af13d46da0708609ea",
"rev": "29ec5026372e0dec56f890e50dbe4f45930320fd",
"type": "github"
},
"original": {

View File

@@ -46,10 +46,6 @@
users.elias = import ./home/default-laptop.nix;
};
nixpkgs.overlays = [
(final: prev: {
xmobar = final.haskellPackages.callPackage
./home/programs/xmonad/src/xmobar/default.nix { };
})
inputs.neovim-nightly-overlay.overlays.default
inputs.wpaperd.overlays.default
inputs.nur.overlays.default
@@ -74,10 +70,6 @@
users.elias = import ./home/default-desktop.nix;
};
nixpkgs.overlays = [
(final: prev: {
xmobar = final.haskellPackages.callPackage
./home/programs/xmonad/src/xmobar/default.nix { };
})
inputs.neovim-nightly-overlay.overlays.default
inputs.wpaperd.overlays.default
inputs.nur.overlays.default

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" ]