Compare commits

...

2635 Commits

Author SHA1 Message Date
a194755b4f
fixup! modules/custom: Allow json fields as format specifiers 2023-09-07 02:49:43 +02:00
165814a57f
modules/custom: Allow json fields as format specifiers 2023-08-30 07:57:11 +02:00
Alexis Rouillard
b665843085
Merge pull request #2429 from khaneliman/hyprland-urgent
Hyprland urgent class support
2023-08-24 17:00:40 +02:00
Austin Horstman
ee4fbc58f7
hyprland add urgent ipc support 2023-08-23 12:52:29 -05:00
Austin Horstman
3081b0c576
flake lock update 2023-08-23 12:14:35 -05:00
Alexis Rouillard
b7a527b122
Merge pull request #2424 from asas1asas200/feat-keyboard-bindingkey 2023-08-20 09:40:36 +02:00
asas1asas200
54a6668846 feat(keyboard-state): add binding-keys options 2023-08-20 08:33:34 +08:00
Alexis Rouillard
ed0f7453c9
Merge pull request #2420 from Alexays/chore-subprojects
chore: update subprojects
2023-08-18 10:39:15 +02:00
Alex
19fe929d1f chore: update subprojects 2023-08-18 09:48:03 +02:00
Alexis Rouillard
0a28b50a8c
Merge pull request #2413 from PucklaJ/bluetooth-no-controller
Add format-no-controller to bluetooth module and fix it still being visible if the format string is empty
2023-08-16 17:08:48 +02:00
PucklaJ
70bc318a01 Fix bluetooth module still being visible if format is empty 2023-08-16 16:30:59 +02:00
PucklaJ
22817089db Add no-controller format to bluetooth module 2023-08-16 15:34:06 +02:00
Alexis Rouillard
aecd80702e
Merge pull request #2412 from jpalus/simpleclock-fmt-compile-fix
Fix simpleclock module compilation with recent fmt
2023-08-16 14:35:39 +02:00
Jan Palus
abd7a0cf25
Fix simpleclock module compilation with recent fmt
both `format_` and `tooltip_format` are dynamically provided formats so
wrap them in `fmt::runtime()`
2023-08-16 14:32:48 +02:00
Alex
e30fba0b8f chore: 0.9.22 2023-08-16 13:34:05 +02:00
Alex
b5ea14c896 revert: release event 2023-08-16 13:31:24 +02:00
Alexis Rouillard
5b33a5917c
Merge pull request #2404 from eltociear/master-1
fix: typo in taskbar.cpp
2023-08-16 08:55:33 +02:00
Alexis Rouillard
66b71cc857
Merge pull request #2409 from jpalus/fmt-cast-ustring-to-string 2023-08-15 22:35:46 +02:00
Jan Palus
c8237437d2
Explicitly cast ustring to string when passing to fmt
don't rely on implicit conversion which is no longer present in fmt
10.1.0

Fixes #2403
2023-08-15 20:57:07 +02:00
Ikko Eltociear Ashimine
57544fe694
fix: typo in taskbar.cpp
ocurred -> occurred
2023-08-15 00:45:09 +09:00
Alex
e90c66a102 chore: 0.9.21 2023-08-14 15:33:52 +02:00
Alex
db1d859881 fix: lint 2023-08-14 14:20:08 +02:00
Alexis Rouillard
cc961d40b3
Merge pull request #2402 from frankebel/master
docs: fix Arch repository name
2023-08-14 13:28:54 +02:00
Frank Ebel
29cebaa0a7
docs: fix Arch repository name 2023-08-14 12:42:33 +02:00
Alexis Rouillard
2c7bbe9852
Merge pull request #2393 from zjeffer/hyprland/fixes
Hyprland/workspaces: use named icons instead of searching by id
2023-08-14 11:46:55 +02:00
Alexis Rouillard
eb74623b7d
Merge pull request #2399 from KosmX/click_release_action
Button release action
2023-08-14 11:46:27 +02:00
Alexis Rouillard
b9260575e5
Merge pull request #2401 from zjeffer/master
Updated hyprland-workspaces manpage
2023-08-14 11:23:35 +02:00
zjeffer
8cf676176d Updated hyprland-workspaces manpage 2023-08-14 11:17:49 +02:00
KosmX
3db5673e70
register key hander 2023-08-13 18:48:23 +02:00
KosmX
46f5034030
Add button release events to eventMap 2023-08-13 18:20:43 +02:00
zjeffer
6f7e7c5199 formatting 2023-08-10 20:37:42 +02:00
zjeffer
2ba11e8401 Hyprland/workspaces: use named icons instead of searching by id 2023-08-10 20:09:30 +02:00
Alexis Rouillard
b084bf721e
Merge pull request #2377 from marshallmoats/master
Change default workspace format
2023-08-09 08:16:52 +02:00
Marshall Moats
e40860c3e9 keep id 2023-08-08 17:17:58 -05:00
Marshall Moats
2bcd0eb09f
Change default workspace format 2023-08-02 16:02:50 -05:00
Alexis Rouillard
94c34a29c4
Merge pull request #2370 from spikespaz/nix-fix-overlay
flake: fix infrec in package overlay
2023-08-02 08:41:39 +02:00
Alexis Rouillard
7fb37c0069
Merge pull request #2373 from marshallmoats/master 2023-08-02 08:35:10 +02:00
Marshall Moats
ce2ede70f2 Fix logical errors, formatting error 2023-08-01 15:55:37 -05:00
Jacob Birkett
b91adc9f29 flake: fix infrec in package overlay 2023-07-31 09:37:33 -07:00
Alexis Rouillard
86b3e456e1
Merge pull request #2341 from zjeffer/hyprland/workspaces
Persistent workspaces in hyprland/workspaces
2023-07-31 08:34:30 +02:00
Alexis Rouillard
1eb4684b60
Merge pull request #2367 from diederikdehaas/more-manpage-fixes
man: Fix several whitespace formatting issues
2023-07-31 08:33:09 +02:00
Diederik de Haas
a3904ff039
man: Fix several whitespace formatting issues
Fix the following whitespace formatting issues:
- Indentation in scdoc source files should be done with tabs.
- Lines where there (clearly) should be a line break, need to have '++'
  at the end, but several were missing them.
- The scdoc manual (clearly) states that lines should be hard wrapped
  at 80 columns, but when line(s) are indented, that causes rendering
  issues. So lines where a line break was not clearly intended or
  clearly not intended, have been put onto 1 line to circumvent the
  rendering issue.

Link: https://lists.sr.ht/~sircmpwn/public-inbox/%3C8251560.T7Z3S40VBb%40bagend%3E
2023-07-30 17:37:30 +02:00
Alexis Rouillard
88828265c0
Merge pull request #2366 from zjeffer/fix/build-warnings
Fixed sway IPC compile warnings
2023-07-30 11:52:11 +02:00
zjeffer
600653538b Persistent workspaces in hyprland/workspaces 2023-07-30 11:47:37 +02:00
zjeffer
28635c1f6d Fixed sway IPC compile warnings 2023-07-30 11:43:34 +02:00
Alexis Rouillard
b09f6cc731
Merge pull request #2365 from diederikdehaas/manpage-fixes
Manpage fixes
2023-07-30 10:07:03 +02:00
Diederik de Haas
c8910901e5
man: Make NAME-ing consistent
Tools like `apropos` and `whatis` use the NAME section to generate their
database, so make sure every manpage has it.
Also make sure they all have a brief description and make it consistent
across the manpages.
2023-07-30 10:00:02 +02:00
Diederik de Haas
6b7fd36863
man/waybar-clock: Fix typo and formatting
typo: Adressed -> Addressed
formatting: Add missing spaces
2023-07-30 09:56:19 +02:00
Alexis Rouillard
20b091dcd8
Merge pull request #2360 from LukashonakV/ISSUE_2356 2023-07-30 01:12:40 +02:00
Viktar Lukashonak
106535e3eb
tooltip-format spaces breaks pango format
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-29 23:46:35 +03:00
Alexis Rouillard
d3520536c4
Merge pull request #2352 from Mr-Pine/hyprland-window-fix 2023-07-29 11:02:39 +02:00
MisterPine
05e5a7e5fd
Document icon for hyprland/window 2023-07-29 00:35:01 +02:00
MisterPine
2b07dea3a6
Fix broken start behavior for hyprland/window 2023-07-29 00:30:33 +02:00
Alexis Rouillard
629686f760
Merge pull request #2347 from MightyPlaza/typo
hyprland/workspaces fix typo
2023-07-28 09:58:09 +02:00
MightyPlaza
c71c0fca6e
fix typo 2023-07-25 14:48:20 +00:00
Alexis Rouillard
9207fff627
Merge pull request #2345 from LukashonakV/ISSUE_2344
Clock. Narrow seconds precision
2023-07-24 23:19:19 +02:00
Viktar Lukashonak
dae7794bdf
Clock. Narrow seconds precision
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-25 00:08:13 +03:00
Alexis Rouillard
c087d8c318
Merge pull request #2316 from MightyPlaza/workspaces
hyprland/workspaces improvements
2023-07-24 13:40:23 +02:00
Alexis Rouillard
6dfa74bd5d
Merge pull request #2322 from zjeffer/master
Use C++20 by default
2023-07-24 09:27:18 +02:00
Alexis Rouillard
e9b29613b2
Merge pull request #2340 from LukashonakV/ISSUE_2331
time conversion between time zones
2023-07-24 09:26:02 +02:00
Viktar Lukashonak
d01ce7d812
Rewview changes.
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-24 10:16:38 +03:00
Alexis Rouillard
8ce1d15885
Merge pull request #2323 from zjeffer/mediaplayer-improvements
Mediaplayer improvements
2023-07-24 08:56:46 +02:00
Viktar Lukashonak
4d9e0ea802
time conversion between time zones
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-24 01:21:33 +03:00
Tuur Vanhoutte
2f04a49129
Merge branch 'Alexays:master' into master 2023-07-23 14:30:14 +02:00
zjeffer
6dc33fe88f Mediaplayer improvements 2023-07-23 13:55:25 +02:00
Alexis Rouillard
effad1a5c3
Merge pull request #2336 from Anakael/pr/anakael/add-high-priority-workspaces
[sway/workspaces] feat: add high-priority-named optiion
2023-07-21 17:33:10 +02:00
dmitry
05efdb74f0 format 2023-07-20 22:57:33 +03:00
dmitry
d3bcff31e5 add high-priority-named optiion 2023-07-20 22:56:15 +03:00
Alexis Rouillard
430f0e5d65
Merge pull request #2333 from LukashonakV/cava_man
cava man page
2023-07-19 21:47:33 +02:00
Viktar Lukashonak
4dff1d4b2b
cava man page
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-19 20:44:52 +03:00
Alexis Rouillard
56df72f61c
Merge pull request #2328 from LukashonakV/ISSUE_2281
cava bump
2023-07-18 16:59:38 +02:00
Viktar Lukashonak
8fdd456fa9
cava bump
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-18 17:51:23 +03:00
Alex
3e1176e896 fix: lint 2023-07-18 08:35:46 +02:00
Alexis Rouillard
52a8b1d911
Merge pull request #2234 from kris7t/offscreen-app-id
sway/window: app_id on unfocused workspaces
2023-07-18 08:32:32 +02:00
Alex
3ecd4030e3 chore: v0.9.20 2023-07-18 08:29:32 +02:00
Alex
841a004acd fix: lint 2023-07-18 08:28:19 +02:00
Alexis Rouillard
839975c348
Merge pull request #2318 from calvinchd/hyprland-window-remove-empty-css
hyprland/window remove duplicate empty css
2023-07-18 08:22:27 +02:00
Alexis Rouillard
185aa104b0
Merge pull request #2326 from czM1K3/master
hyprland/language: Differentiating keyboard layout variants
2023-07-18 08:21:52 +02:00
MightyPlaza
24d56023fd
last fixes 2023-07-17 22:38:58 +00:00
MightyPlaza
d3e7a8c797
Merge branch 'Alexays:master' into workspaces 2023-07-17 22:38:13 +00:00
czM1K3
b2279c9565 Differencing keyboard layout variant for hyprland/language 2023-07-17 22:20:50 +02:00
MightyPlaza
52906407af
Merge pull request #3 from zjeffer/pr-fixes
Some more small improvements
2023-07-17 14:27:38 +00:00
zjeffer
2721e19ee6 small improvements 2023-07-17 16:22:59 +02:00
Alexis Rouillard
388912d4a7
Merge pull request #2324 from xytovl/fix-crash-on-resume 2023-07-17 08:26:53 +02:00
Patrick Nicolas
f62b3d0e9d Ensure signal is disconnected in destructor 2023-07-16 23:29:28 +02:00
MightyPlaza
2d0fdaeec6
special fix 2023-07-16 18:22:14 +00:00
MightyPlaza
b9348180f5
Merge branch 'Alexays:master' into workspaces 2023-07-16 18:21:36 +00:00
Alexis Rouillard
1e2b9cb5ed
Merge pull request #2306 from stefonarch/patch-1
Fix wrong name for {name}
2023-07-16 18:21:00 +02:00
zjeffer
62702a4878 fixed lint 2023-07-16 16:00:26 +02:00
zjeffer
c85738574c Use C++20 by default 2023-07-16 16:00:26 +02:00
MightyPlaza
96a8e5df83
Merge branch 'Alexays:master' into workspaces 2023-07-16 13:19:24 +00:00
Alexis Rouillard
85b4ff4f81
Merge pull request #2321 from calvinchd/hyprland-runtime-err 2023-07-16 15:10:03 +02:00
Calvin Chu
0f6eff1f20
hyprland: fix json parser runtime err from socket read ending early 2023-07-16 22:18:27 +10:00
Alexis Rouillard
7a5e702334
Merge pull request #2317 from m4rch3n1ng/backlight-percent 2023-07-16 09:34:47 +02:00
Calvin Chu
8687ed2068
Update man for hyprland/window to replace #window.empty with window#waybar.empty #window 2023-07-16 16:41:50 +10:00
Calvin Chu
2be0e966e1
hyprland/window: remove .empty css class for #window 2023-07-16 16:40:54 +10:00
may
facb53e81f
backlight: do not convert percent to string in fmt 2023-07-16 04:14:43 +02:00
MightyPlaza
2bfc0e1da6
moves createWorkspace to update() 2023-07-16 01:49:46 +00:00
MightyPlaza
6d24b22b21
moves createWorkspace to update() 2023-07-16 01:43:54 +00:00
MightyPlaza
5f0fa71f32
moves createWorkspace to update() 2023-07-16 01:43:25 +00:00
MightyPlaza
4f81e55e41
workspaces.hpp 2023-07-16 01:20:30 +00:00
MightyPlaza
ca0122c3cb
workspaces.cpp 2023-07-16 01:18:41 +00:00
MightyPlaza
7200b16520
documentation 2023-07-16 01:02:39 +00:00
MightyPlaza
e488daae16
Merge pull request #2 from zjeffer/pr-fixes
use IPC for click events, clang-tidy fixes
2023-07-15 22:18:24 +00:00
zjeffer
f3df15650a use IPC for click events, clang-tidy fixes 2023-07-15 23:48:12 +02:00
MightyPlaza
f8a9a970b2
removes "sort-by-number" 2023-07-15 18:43:46 +00:00
MightyPlaza
75e21c4853
Update waybar-hyprland-workspaces.5.scd 2023-07-15 18:36:55 +00:00
MightyPlaza
495b63d7dc
workspaces.hpp 2023-07-15 17:44:57 +00:00
MightyPlaza
52983c7188
workspaces.cpp 2023-07-15 17:43:22 +00:00
Alexis Rouillard
2211a79840
Merge pull request #2308 from gardenappl/hidden-fix
hyprland/window: rename .hidden to .swallowing (and fix grouped windows)
2023-07-12 18:13:50 +02:00
gardenapple
daca57129f
hyprland/window: rename .hidden to .swallowing (and fix grouped windows) 2023-07-12 19:01:45 +03:00
Alexis Rouillard
19c7c0763f
Merge pull request #2307 from gardenappl/hidden-fix
hyprland/window: Fix overlap with .hidden class from default style
2023-07-12 17:27:37 +02:00
gardenapple
14c6550593
hyprland/window: Fix overlap with .hidden class from default style 2023-07-12 17:56:12 +03:00
Standreas
7aae93e7ed
Fix wrong name for {name} 2023-07-12 16:31:58 +02:00
Alexis Rouillard
dffba78401
Merge pull request #2303 from Mr-Pine/hyprland-window-icon 2023-07-11 08:08:20 +02:00
MisterPine
a8a1a4985f
Add removed secondary identifier
(class for xwayland under sway)
2023-07-10 23:48:18 +02:00
MisterPine
31683d9e2a
Implemented AAppIconLabel for sway/window 2023-07-10 22:55:46 +02:00
MisterPine
00e143d47e
Introducce AAppIconLabel class
Implemented for hyprland
2023-07-10 22:50:58 +02:00
MisterPine
6e9ba3fc01
Fix spacing if icon is false 2023-07-10 22:26:02 +02:00
MisterPine
a373f6b654
Icon working 2023-07-10 22:02:03 +02:00
Alexis Rouillard
91bd28d410
Merge pull request #2294 from Mr-Pine/hyprland-window-data
`hyprland/window` expose more data
2023-07-09 10:18:26 +02:00
Alexis Rouillard
acde076913
Merge pull request #2288 from LukashonakV/arch_cava
Arch CI cava
2023-07-09 10:17:55 +02:00
Alexis Rouillard
f5655526d0
Merge pull request #2296 from m-bdf/clock-tz-changes 2023-07-09 04:22:15 +02:00
Maëlys Bras de fer
56f956ff90
clock: handle timezone changes (again) 2023-07-09 01:44:39 +02:00
MisterPine
f97c1c7136
remove getWindowData 2023-07-08 23:22:29 +02:00
MisterPine
9ee883ee1b
No dashes is format arg name 2023-07-08 23:11:11 +02:00
MisterPine
1887512ba1
Update scd 2023-07-08 22:40:16 +02:00
MisterPine
2ae13c4092
consitent naming 2023-07-08 22:40:16 +02:00
MisterPine
c5f1771375
Use already existing queryActiveWorkspace() 2023-07-08 22:40:16 +02:00
MisterPine
c4bace504c
Separate query and struct 2023-07-08 22:40:16 +02:00
Alexis Rouillard
3bfeed31bc
Merge pull request #2293 from sigboe/master 2023-07-08 21:47:04 +02:00
sigboe
d774de6c46 fix, default to true, sway/workspaces: warp-on-scroll 2023-07-08 21:32:19 +02:00
ViktarL
b20041d85d
cava dependencies 2023-07-08 08:41:37 +00:00
Alexis Rouillard
e4900db9a2
Merge pull request #2286 from calvinchd/hyprland-window-noinfo 2023-07-06 08:24:11 +02:00
Calvin Chu
e2bfa5e019
hyprland/window: fix no info with separate-outputs=true 2023-07-06 11:01:24 +10:00
Alexis Rouillard
423d8495e4
Merge pull request #2284 from jbeich/dbus 2023-07-05 20:17:51 +02:00
Jan Beich
1fb2b8efd5 fix(util): don't abort modules from SleeperThread after 3c9cbc99d736
[warning] module sway/workspaces: Disabling module "sway/workspaces", Unable to connect to the SYSTEM Bus!...
[warning] module sway/mode: Disabling module "sway/mode", Unable to connect to the SYSTEM Bus!...
[warning] module sway/scratchpad: Disabling module "sway/scratchpad", Unable to connect to the SYSTEM Bus!...
[warning] module custom/media: Disabling module "custom/media", Unable to connect to the SYSTEM Bus!...
[warning] module sway/window: Disabling module "sway/window", Unable to connect to the SYSTEM Bus!...
[warning] module cpu: Disabling module "cpu", Unable to connect to the SYSTEM Bus!...
[warning] module memory: Disabling module "memory", Unable to connect to the SYSTEM Bus!...
[warning] module temperature: Disabling module "temperature", Unable to connect to the SYSTEM Bus!...
[warning] module sway/language: Disabling module "sway/language", Unable to connect to the SYSTEM Bus!...
[warning] module battery: Disabling module "battery", Unable to connect to the SYSTEM Bus!...
[warning] module battery#bat2: Disabling module "battery#bat2", Unable to connect to the SYSTEM Bus!...
2023-07-05 17:47:24 +00:00
Alexis Rouillard
3299d4a25c
Merge pull request #2270 from gardenappl/hypr-backend
hyprland/window: Add .hidden CSS class, account for hidden & fullscreen windows
2023-07-05 08:14:49 +02:00
gardenapple
e125bbeb4d
hyprland/window: properly check visibility for .floating class 2023-07-05 03:43:03 +03:00
gardenapple
55c59253d6
Update man pages 2023-07-05 03:15:59 +03:00
Alexis Rouillard
e7deab92c7
Merge pull request #2282 from zjeffer/fix/build-warnings
Fixed build warnings
2023-07-04 23:09:13 +02:00
zjeffer
d21f29cb14 Fixed build warnings 2023-07-04 23:05:26 +02:00
Alex
d8a808f76c chore: 0.9.19 2023-07-04 23:03:50 +02:00
Alexis Rouillard
5ef6636237
Merge pull request #2265 from tengyifei/master
Partially revert 3af1853260 to fix use-after-free
2023-07-04 22:59:45 +02:00
Alex
fc632f50ec fix: lint 2023-07-04 22:52:24 +02:00
Alexis Rouillard
31e4c9023e
Merge pull request #1872 from HarHarLinks/patch-1
Add output parameter format to manpage
2023-07-04 22:46:06 +02:00
Alexis Rouillard
3e1c341933
Merge branch 'master' into patch-1 2023-07-04 22:45:15 +02:00
Alexis Rouillard
0d1016d4d2
Merge pull request #2203 from rodrgz/mprisImprovement
mpris: dynamic tag ordering and separator customization
2023-07-04 22:44:21 +02:00
Alexis Rouillard
12725f4418
Merge pull request #2220 from sigboe/warp-on-scroll-toggle
sway/workspaces: setting to not warp to window when scrolling
2023-07-04 22:42:53 +02:00
Alexis Rouillard
5c64d034a2
Merge pull request #2010 from chayleaf/improve-flake
improve nix dev shell; override the nixpkgs waybar
2023-07-04 22:40:52 +02:00
Alexis Rouillard
14fa9cf7b7
Merge pull request #2128 from Alan-Kuan/image-tooltip
Image tooltip
2023-07-04 22:40:04 +02:00
Alex
6c196b8f8d fix: lint 2023-07-04 22:35:27 +02:00
Alex
18d6dfea88 feat(man): start_hidden 2023-07-04 22:35:15 +02:00
Alexis Rouillard
d2eb8eb9fc
Merge pull request #2175 from maqrrr/start_hidden
Add a new start_hidden flag
2023-07-04 22:33:33 +02:00
Alexis Rouillard
65f73d3e95
Merge pull request #2269 from Arcus92/master
wlr/taskbar: add support for rewrite rules
2023-07-04 22:31:37 +02:00
Alexis Rouillard
265b4edb2e
Merge pull request #2276 from skligys/fix_mpris_ui_spamming
Stop MPRIS module from updating every ~20ms
2023-07-04 22:29:48 +02:00
Alexis Rouillard
18f5af835f
Merge pull request #2280 from zjeffer/fix/hyprland/workspaces 2023-07-04 19:58:07 +02:00
zjeffer
7ef80d563b Formatting fixes 2023-07-04 19:48:04 +02:00
zjeffer
d3be9a7363 Fix rare segfault when destroying workspace 2023-07-04 19:40:43 +02:00
Alexis Rouillard
5f29e5a5e8
Merge pull request #2279 from LukashonakV/Catch_bump 2023-07-04 18:37:30 +02:00
Viktar Lukashonak
cf4d58f30a Catch2 bump 2023-07-04 11:30:44 -04:00
Alexis Rouillard
bb61461aad
Merge pull request #2278 from Anakael/pr/anakael/hyprland-workspaces 2023-07-04 08:02:45 +02:00
Alexis Rouillard
c91c8bbc45
Merge pull request #2277 from Aparicio99/fix_icon_theme_segfault 2023-07-04 08:01:45 +02:00
dmitry
f26a125d15 format 2023-07-04 01:26:16 +03:00
dmitry
de626dcbbc format 2023-07-04 01:24:34 +03:00
dmitry
c9b963e82b fix segfault 2023-07-04 01:17:26 +03:00
André Aparício
a1cd0acac5 Fix random segfault on GTK icon functions
The segfaults were happening on GTK icon theme functions, which are
called via the C++ interface functions such as Gtk::IconTheme::has_icon.

There are multiple modules and threads using this functions on the default
icon theme by calling Gtk::IconTheme::get_default(), which returns the same
object for all callers, and was causing concurrent access to the same internal
data structures on the GTK lib. Even a seemingly read-only function such as
has_icon can cause writes due to the internal icon cache being updated.

To avoid this issues, a program wide global mutex must be used to ensure
a single thread is accessing the default icon theme instance.

This commit implements wrappers for the existing IconTheme function calls,
ensuring the global lock is held while calling the underling GTK functions.
2023-07-03 22:32:24 +01:00
Skirmantas Kligys
c2f9d889f4 Stop MPRIS module from updating every ~20ms as onPlayerMetadata(), onPlayerPlay()
callbacks get triggered without regard for update interval.
2023-07-03 13:52:57 -07:00
gardenapple
cdece498c1
hyprland/window: .solo class accounts for hidden & fullscreen windows 2023-07-02 20:58:42 +03:00
David Schulte
58bdc6a41c fix spaces in waybar-wlr-taskbar.5.scd 2023-07-02 12:51:54 +02:00
David Schulte
c55cd82b39 wlr/taskbar: add support for rewrite rules 2023-07-02 12:23:36 +02:00
Alexis Rouillard
91588fb8bb
Merge pull request #2212 from evyatark2/wpscroll
wireplumber: Support for scrolling
2023-07-02 11:46:56 +02:00
Alexis Rouillard
6b9600fecd
Merge pull request #2267 from korylprince/reverse-scrolling
Don't apply reverse scrolling to mice wheels
2023-07-02 11:45:44 +02:00
Alexis Rouillard
0bfb29789c
Merge pull request #2268 from zjeffer/hyprland/workspaces
Fixes for hyprland/workspaces
2023-07-02 11:45:09 +02:00
zjeffer
f6a62e258e fixes for hyprland/workspaces 2023-07-01 18:53:17 +02:00
Kory Prince
1ba05d1ffa add reverse-mouse-scrolling to configure mouse wheel reverse scrolling 2023-07-01 10:35:37 -05:00
Kory Prince
7a01143359 ignore reverse-scrolling from mouse wheel 2023-07-01 10:33:55 -05:00
Kory Prince
35496f461f fix regression from #2232: reverse-scrolling was not applied to
GTK_SCROLL_SMOOTH events
2023-07-01 10:33:55 -05:00
Alex
b9cd0287f4 fix: typo 2023-07-01 11:12:46 +02:00
Alex
9d741f89e2 fix: lint 2023-07-01 11:12:14 +02:00
Alex
cc4370f1b2 fix: build 2023-07-01 11:08:31 +02:00
Alexis Rouillard
85854c71d6
Merge pull request #2219 from xytovl/wake_threads_on_resume
Wake all sleeping threads when leaving suspend
2023-07-01 11:02:13 +02:00
Alexis Rouillard
6ed550117c
Merge pull request #2237 from LukashonakV/Gentoo_CI
Refresh Gentoo docker
2023-07-01 10:57:33 +02:00
Alexis Rouillard
15fe85d18d
Merge pull request #2264 from Anakael/pr/anakael/hyprland-workspaces
feat: hyprland/workspaces
2023-07-01 10:55:24 +02:00
Alexis Rouillard
b62e5eb822
Merge pull request #2266 from zjeffer/master
Fixed some build warnings
2023-07-01 10:53:24 +02:00
zjeffer
25c2aaabcb Fixed build warnings 2023-07-01 10:12:24 +02:00
Yifei Teng
cd49eef229 Partially revert 3af1853260 to fix use-after-free
After upgrading to the latest release of Waybar the bar will crash
whenever I close the laptop lid. After some debugging I believe it is
because the watching added by watch_name is not being correctly canceled
using unwatch_name. After the Tray object and Host object are destroyed,
additional callbacks will become use-after-free.

Looks like commit 3af1853260dafc43c992fc2357a3f3bace3bccaa removed the
unwatch_name. I'm not sure why it did that, but it seemed dangerous.

Additionally, bus_name_id_ is created by own_name. According to that
function's documentation, the correct inverse operation is unown_name.
2023-06-30 23:25:24 -07:00
dmitry
4f9fbbfa54 fix format 2023-07-01 02:25:15 +03:00
dmitry
0b602632f2 return catch2 2023-07-01 02:23:37 +03:00
dmitry
dbc7471f83 add docs 2023-07-01 02:13:36 +03:00
dmitry
887c44bf68 finish MVP 2023-07-01 00:18:57 +03:00
dmitry
33236c222f save 2023-06-28 02:52:01 +03:00
Alexis Rouillard
4116490535
Merge pull request #2256 from luttermann/master
Add output port (display) of workspace to template function of sway/workspace
2023-06-27 13:50:54 +02:00
Lasse Luttermann
08e18387c9 Add output port of workspace to template 2023-06-27 13:41:42 +02:00
Alexis Rouillard
0fff38c751
Merge pull request #2258 from Anakael/pr/anakael/hide-empty-taskbar
[wrl/taskbare] fix: use empty class for empty taskbar
2023-06-27 08:58:54 +02:00
dmitry
afc489869a fix format 2023-06-27 00:18:49 +03:00
dmitry
ce4da59f34 finish 2023-06-27 00:07:40 +03:00
Lasse Luttermann
43434254e0 Add output port of workspace to template 2023-06-26 11:01:50 +02:00
Erik Rodriguez
66ce74d29b
mpris: Rename dynamic-priority to dynamic-importance-order keeping backward compatibility 2023-06-22 02:13:44 -03:00
Erik Rodriguez
77a8420aaf
mpris: Add dynamic-order and dynamic-separator
This commit allows better handling of ordering and exclusion of the tags in Dynamics tags.
It also becomes possible to choose the separator between the tags.
2023-06-22 02:13:34 -03:00
Alexis Rouillard
b0f89f2bc1
Merge pull request #2241 from yangyingchao/master
support multiple items in hwmon-path of temperature module
2023-06-20 13:22:36 +02:00
Alexis Rouillard
7cda2dfd1a
Merge pull request #2245 from gardenappl/main
hyprland/window: Add CSS customization similar to sway/window
2023-06-20 13:22:12 +02:00
Alexis Rouillard
238cfa9547
Merge pull request #2247 from gardenappl/hypr-backend
More robust Hyprland backend
2023-06-20 13:21:34 +02:00
gardenapple
b163b21ace
More robust Hyprland backend 2023-06-20 13:36:48 +03:00
gardenapple
30c4f08773
hyprland/window: Correct application of .solo class 2023-06-20 03:54:02 +03:00
gardenapple
fd7c2a2012
hyprland/language: Show language on startup 2023-06-20 00:43:33 +03:00
gardenapple
4f14ce3285
hyprland/window: add .floating and .fullscreen CSS classes 2023-06-20 00:42:19 +03:00
gardenapple
e233022d1a
hyprland/window: Rework, add .empty, .solo and .<app_id> CSS classes 2023-06-19 23:44:20 +03:00
yangyingchao
e403c3b71b support multiple items in hwmon-path of temperature module
So user can share configuration file among different machines with different hardware
configurations.
2023-06-17 11:33:14 +08:00
Alexis Rouillard
d367b7e1d6
Merge pull request #2229 from LukashonakV/Upower_nativePath
Upower native-path filter
2023-06-16 15:38:58 +02:00
Alexis Rouillard
038644f8d9
Merge pull request #2238 from LukashonakV/ISSUE#2204
Issue#2204
2023-06-16 15:38:20 +02:00
Viktar Lukashonak
d650c597f9
Renew clock man page
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-15 16:36:33 +03:00
Viktar Lukashonak
5196009656
Refresh Gentoo docker
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-15 13:58:33 +03:00
Viktar Lukashonak
4d8515930f
Use local TZ, when user sets blank TZ in config
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-13 23:32:28 +03:00
Viktar Lukashonak
192cea97f2
Upower man
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-13 18:44:29 +03:00
Kristóf Marussy
5bfdbf116d
sway/window: app_id on unfocused workspaces
If the unfocused workspace has a single window, use window-specific
styling when offscreen-css is enabled.
2023-06-13 01:52:13 +02:00
Alex
83f3c2321e
Merge pull request #2231 from RobertMueller2/appid-fix
sway/window: fix appid style not cleared
2023-06-12 15:40:56 +02:00
Alex
dff0583c12
Merge pull request #2232 from robertgzr/reverse-scroll
Lift reverse-scrolling option into AModule
2023-06-12 08:54:38 +02:00
Robert Günzler
73c7e54535
pulseaudio: document reverse-scrolling option
Signed-off-by: Robert Günzler <r@gnzler.io>
2023-06-12 14:08:22 +09:00
Robert Günzler
0f8c156f24
Lift reverse-scrolling option into AModule
The option is generally useful when scrolling is used, when configuring
input devices to use "natural scroll direction".
Both backlight and pulseaudio were using different implementations, this
unifies and documents them.

Signed-off-by: Robert Günzler <r@gnzler.io>
2023-06-12 14:08:18 +09:00
Rene D. Obermueller
fff4509723 sway/window: fix appid style not cleared (#2227)
Probably a rebase error during development of #1419. The code block now
removed was not supposed to be there anymore.
2023-06-11 08:41:20 +02:00
Viktar Lukashonak
17af49d421
Upower native-path filter
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-09 18:22:24 +03:00
Alex
9f38631c7f
Merge pull request #2223 from Anakael/pr/shchemel/fix-class-priority 2023-06-09 08:36:34 +02:00
dmitry
62f4125927 change order 2023-06-08 23:31:14 +03:00
sigboe
a67e692d4a sway: warp-on-scroll toggle 2023-06-07 15:49:11 +02:00
Patrick Nicolas
3c9cbc99d7 Wake all sleeping threads when leaving suspend
std::condition_variable::wait_for does not count time spent in sleep
mode, resulting in longer than expected waits.
2023-06-07 10:17:42 +02:00
Alex
c5379fa52d
Merge pull request #2218 from LukashonakV/Wdeprecated
deprecated: implicit capture of 'this' via '[=]'
2023-06-06 22:56:27 +02:00
Alex
070110af0c
Merge pull request #2217 from LukashonakV/g_bus_unwatch_name
Tray module causes: Invalid id passed to g_bus_unwatch_name()
2023-06-06 22:37:46 +02:00
Viktar Lukashonak
6bf5b15c13
deprecated: implicit capture of 'this' via '[=]'
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-06 23:31:12 +03:00
Viktar Lukashonak
a9779c2aa2
Happy Linter
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-06 23:06:11 +03:00
Viktar Lukashonak
3af1853260
Tray module cause error g_bus_unwatch_name()
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-06 23:02:36 +03:00
Alex
d638610db1
Merge pull request #2216 from LukashonakV/small_fixies
Small performance fixies
2023-06-06 13:03:52 +02:00
Viktar Lukashonak
87023c39f8
Small performance fixies
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-06-06 13:58:05 +03:00
Evyatar Stalinsky
e96610e31a Use consistent tabbing 2023-06-06 12:01:25 +03:00
Evyatar Stalinsky
d61b1d54de Document new wireplumber module functionality 2023-06-06 11:44:17 +03:00
Evyatar Stalinsky
e397f568b7 Round volume instead of truncating it 2023-06-06 11:42:31 +03:00
Evyatar Stalinsky
d22fd3bbd1 Use a minimum step as provided by wireplubmer; Default step to 1 2023-06-06 11:42:02 +03:00
Evyatar Stalinsky
75990c2867 Fix linting 2023-06-05 22:23:46 +03:00
Evyatar Stalinsky
88a1a702b4 wireplumber: Support for scrolling 2023-06-05 22:03:46 +03:00
Alex
24407dbf4a
Merge pull request #2196 from calvinchd/hyprland-window-empty-css
[hyprland/window] Add css class for empty window name
2023-06-05 16:48:59 +02:00
Alex
108285e9ac
Merge pull request #2210 from D3vil0p3r/patch-1
Fixing 'incomplete type error' during building
2023-06-05 16:30:00 +02:00
D3vil0p3r
b728a37b6d
Fixing 'incomplete type error' during building
Fixing errors during the building due to missing library after latest GCC updates.
2023-06-05 16:28:32 +02:00
Alex
938a93a0d7
Merge pull request #2209 from Matias-Hall/river_window_tooltip 2023-06-05 12:39:38 +02:00
Matias-Hall
ff6f727631 river/window: Add tooltip. 2023-06-05 18:29:19 +08:00
Alex
84077e0253
Merge pull request #2207 from dejor/dwl-module 2023-06-04 18:39:03 +02:00
dejor
d2787cc2d8 fix: typo to avoid null pointer 2023-06-04 12:45:33 +02:00
Calvin Chu
17a56aa4f7
hyprland/window: use empty() for empty window name check 2023-06-03 12:29:36 +10:00
Alex
ca52892ab9
Merge pull request #2200 from Visne/patch-1 2023-06-01 22:52:54 +02:00
Visne
655bc8f215
Fix broken link 2023-06-01 22:08:54 +02:00
Calvin Chu
a3912436be
hyprland/window: add css class for empty label 2023-06-01 21:38:27 +10:00
Alex
47193a3d2f chore: v0.9.18 2023-05-29 09:25:01 +02:00
Alex
097cbc0c53 fix: lint 2023-05-29 09:24:33 +02:00
Alex
13a9c4a08b
Merge pull request #2185 from xdavidel/dwl-module
Update to new ipc version
2023-05-29 09:16:22 +02:00
David Delarosa
ebba529682 Apply clang-format 2023-05-25 01:29:28 +03:00
David Delarosa
b97b0ae605 Fix linter complains 2023-05-25 01:25:55 +03:00
David Delarosa
7e9bfc504c Update to new ipc version 2023-05-25 00:27:50 +03:00
Alex
7b0d2e8043
Merge pull request #2184 from lfos/fix-battery-segfault
Fix SEGFAULT in battery module
2023-05-22 16:19:13 +02:00
Lukas Fleischer
75eacb95ef Fix SEGFAULT in battery module
In waybar::modules::Battery::~Battery(), store a copy of the batteries_
iterator before calling erase(), as erase() invalidates the iterator.

Prior to this change, disconnecting outputs resulted in a SEGFAULT when
using the battery module; e.g.,

    [debug] Received SIGCHLD in signalThread
    [debug] Cmd exited with code 0
    [debug] Received SIGCHLD in signalThread
    [debug] Cmd exited with code 0
    [debug] Received SIGCHLD in signalThread
    [debug] Cmd exited with code 0
    [debug] Output removed: AU Optronics 0x2336
    [info] Bar configured (width: 1280, height: 25) for output: eDP-1
    [info] Bar configured (width: 1280, height: 25) for output: eDP-1
    zsh: segmentation fault (core dumped)  ./build/waybar -l trace

Signed-off-by: Lukas Fleischer <lfleischer@lfos.de>
2023-05-22 10:16:30 -04:00
Alex
2b24b16023
Merge pull request #2182 from cptpcrd/fd-closing 2023-05-22 07:40:14 +02:00
cptpcrd
5cbbfd5c8a Close pipe if fork() fails when spawning processes
Prevents potential file descriptor leakage, albeit in a bit of an edge
case.
2023-05-21 12:15:49 -04:00
cptpcrd
6163be687d Open network module eventfd as close-on-exec
Ensures that it is not leaked to child processes.
2023-05-21 12:13:17 -04:00
cptpcrd
df65cab17a Open command pipes as close-on-exec
Avoids a race where the pipe could be inherited by another process
spawning at about the same time. If the other process didn't exit
quickly (e.g. if it was a custom script that did its own looping), it
would keep the write end of the pipe open, and so reading from the pipe
to try to get the command's output would block.

This bug manifested as some custom modules randomly not appearing in the
bar, requiring a reload to fix. The custom script had run and exited,
but the pipe had been inherited by another process, and the thread that
updated the module's output was blocked trying to read from it.
2023-05-21 12:10:44 -04:00
maqrrr
339bea1213 Add a new start_hidden bool 2023-05-15 07:01:00 -04:00
Alex
7b704071ff
Merge pull request #2171 from FintasticMan/fix_mpris_man
mpris: Fix incorrect format replacement names
2023-05-13 23:25:30 +02:00
Finlay Davidson
5748e56aeb mpris: Fix incorrect format replacement names 2023-05-13 21:45:29 +02:00
Alex
5b29119dab
Merge pull request #2170 from FintasticMan/hide_mpris_if_empty
mpris: Hide label if empty
2023-05-13 18:26:12 +02:00
Finlay Davidson
4bc30e040f mpris: Hide label if empty 2023-05-10 13:43:43 +02:00
Alex
919ad0a8bb
Merge pull request #2156 from theRealCarneiro/master
Add persistent format-icon to wlr/workspaces
2023-05-05 14:05:32 +02:00
theRealCarneiro
5df43be11f add persistent format-icon 2023-05-05 08:52:37 -03:00
Alex
56fa6b6afc
Merge pull request #2153 from MonstrousOgre/master 2023-05-04 22:21:13 +02:00
MonstrousOgre
c04485a5d0 separate css class for empty workspaces 2023-05-05 00:09:32 +05:30
Alex
b06953757e
Merge pull request #2144 from LukashonakV/cava_bump 2023-04-29 00:13:25 +02:00
Viktar Lukashonak
f5ef13c7f1
Gentoo docker. Add iniparser
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-28 15:46:51 +03:00
Viktar Lukashonak
8c83af75a1
happy linter
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-28 15:38:34 +03:00
Viktar Lukashonak
e253c34cd4
cava bump
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-28 13:38:35 +03:00
Alex
e4faf252b2
Merge pull request #2140 from 257/master 2023-04-26 21:35:46 +02:00
Paymon
3da3732cc9 network: detect if link is p2p and use local addr
without this we endup with peer's addr

Signed-off-by: Paymon MARANDI <darwinskernel@gmail.com>
2023-04-26 13:52:17 -04:00
Alex
757f20fc04
Merge pull request #2135 from eneshecan/master 2023-04-23 13:47:28 +02:00
Enes Hecan
f00602058c Fix misinterpreting return value of getaddrinfo call which caused an early return for Hyprland language 2023-04-23 13:31:02 +02:00
Alan-Kuan
9389c8d854
chore: update manual of the image modle 2023-04-21 16:51:04 +08:00
Alan-Kuan
6a17139423
feat: tooltip for image module 2023-04-21 16:38:21 +08:00
Alex
a9a2223469 fix: lint 2023-04-17 09:09:13 +02:00
Alex
33d1ee413f fix: typo 2023-04-17 09:07:59 +02:00
Alex
0b4c1cb877
Merge pull request #1950 from tleydxdy/shironeko 2023-04-17 09:06:43 +02:00
Alex
5e5569bb10
Merge pull request #1858 from uncomfyhalomacro/replace-gethostbyname-getaddrinfo 2023-04-17 09:05:35 +02:00
Alex
272d672953 fix: add missing man 2023-04-17 09:03:01 +02:00
Alex
ede1d25440 fix: lint 2023-04-17 09:01:14 +02:00
Alex
8be889c5aa
Merge pull request #2103 from xdavidel/dwl-module
Add DWL tags module
2023-04-17 09:01:00 +02:00
Alex
b1e3347fca
Merge pull request #2089 from MonstrousOgre/master 2023-04-17 08:59:22 +02:00
Alex
da2163ae41
Merge pull request #2092 from chayleaf/mpris-fix-non-dynamic-tag-escapes 2023-04-17 08:58:40 +02:00
Alex
1d7d1a8fe8
Merge pull request #2108 from yeheng282/backlight-fix 2023-04-17 08:58:03 +02:00
Alex
7d20034067
Merge pull request #2095 from alex-courtis/2094-pulseaudio-states 2023-04-17 08:56:26 +02:00
Alex
8aafe817bf
Merge pull request #2102 from LukashonakV/Cava 2023-04-16 18:06:53 +02:00
Viktar Lukashonak
a5607b66ca
Cava module
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-15 02:36:15 +03:00
Alex
61648c55d9
Merge pull request #2113 from LukashonakV/ISSUE#2073 2023-04-13 16:29:34 +02:00
David Delarosa
4dff1b91fe
Merge branch 'Alexays:master' into dwl-module 2023-04-13 17:18:27 +03:00
David Delarosa
1368ba64b5 Fix segfault in destructor 2023-04-13 17:16:37 +03:00
Viktar Lukashonak
6de3b58d6a
ISSUE#2073
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-13 17:16:03 +03:00
David Delarosa
731eaeb0be Addapt to DWL new tag system
- tagscount is being used instead of tag array
2023-04-13 03:58:57 +03:00
yeheng282
022c9abad4 backlight: support tooltip 2023-04-11 21:01:02 +08:00
Alex
a46b8a0109
Merge pull request #2105 from skylar779/master
Made use of node_id_
2023-04-11 11:12:38 +02:00
skylar779
3b2dfeec01
Made use of node_id_
Checking against names for volume changes seems a bit weird to me and
also didn't really work, so I've made use of node_id_ to check against
this instead and also fixed an issue, where the volume update would
refuse to do its thing despite it being the same id that was used on launch.
2023-04-11 10:51:25 +02:00
Alex
e62d339b57
Merge pull request #2104 from numas13/master 2023-04-11 07:44:52 +02:00
Denis Drakhnia
18a2b90fc0 fix: generate wireplumber module man page 2023-04-11 08:17:45 +03:00
David Delarosa
60cdf10e64 Add DWL tags module 2023-04-11 04:50:21 +03:00
Alexander Courtis
51f0fc6b72 #2094 pulseaudio apply states 2023-04-07 14:19:45 +10:00
MonstrousOgre
6f3a27905d preventing persistent_workspaces and all-outputs from being used together 2023-04-06 12:14:44 +05:30
chayleaf
659fea07ee mpris: fix non-dynamic tags not being html escaped 2023-04-06 13:24:28 +07:00
Alex
bd908f6d97
Merge pull request #2090 from chayleaf/mpris-css-fix 2023-04-06 07:26:34 +02:00
chayleaf
cb82326b22 mpris: fix css class application
apply styles to label rather than event_box (fixes play/pause state and
per-player selectors)
2023-04-06 04:50:32 +07:00
MonstrousOgre
33c4964187 replacing spdlog::info with spdlog::debug 2023-04-06 00:34:52 +05:30
Alex
3d980f92a3 fix: build 2023-04-03 10:59:29 +02:00
Alex
626a1f58be fix: build 2023-04-03 10:51:36 +02:00
Alex
1445dc4151 fix: lint 2023-04-03 10:06:01 +02:00
Alex
a6084ea7e6
Merge pull request #2068 from TheRealLorenz/master 2023-04-03 09:44:04 +02:00
Alex
60467ad7f2
Merge pull request #2064 from en3wton/hyprland-language-format-replacements 2023-04-03 09:43:28 +02:00
Alex
ef99b0226c
Merge pull request #1932 from ldelossa/wlr-taskbar-sort-app-id 2023-04-03 09:42:19 +02:00
Alex
60e0584d16 fix: lint 2023-04-03 09:41:24 +02:00
Alex
ba6faa7859
Merge pull request #2011 from chayleaf/improve-mpris 2023-04-03 09:40:01 +02:00
Alex
02b3c125a1 fix: init optional to null 2023-04-03 09:38:12 +02:00
Alex
20a8039a25
Merge pull request #2080 from cdump/master 2023-03-31 19:17:56 +02:00
Maxim Andreev
ffeef7f40f modules/clock: fix calendar shift in months with 31 days 2023-03-31 20:07:59 +03:00
chayleaf
0cfd1c7094 mpris: don't put ellipsis after whitespace 2023-03-31 19:54:44 +07:00
chayleaf
e5524d5059 mpris: switch base class from AModule to ALabel 2023-03-31 19:54:39 +07:00
chayleaf
774d8880cd mpris: fix potentially invalid seconds count on >1h media 2023-03-31 19:54:39 +07:00
chayleaf
a301b8c4cd mpris: update docs 2023-03-31 19:54:27 +07:00
chayleaf
5383f7bd56 mpris: add unicode support; add position tag 2023-03-31 19:54:20 +07:00
chayleaf
a53c97f7f6 mpris: add tooltip and length limits 2023-03-31 19:53:53 +07:00
Alex
9fd2703cb9
Merge pull request #2077 from lilydjwg/master 2023-03-30 20:45:17 +02:00
lilydjwg
918de59988 custom module: free memory returned by libc's getline 2023-03-29 21:18:13 +08:00
TheRealLorenz
4b27385da2 Update manpage for sway/window module 2023-03-25 17:41:09 +01:00
TheRealLorenz
f557697e92 Rewrite entire label in sway/window module
Closes #1742
2023-03-25 17:37:49 +01:00
TheRealLorenz
63525ec956 Rename function name 2023-03-25 17:33:01 +01:00
MonstrousOgre
5791a6abc6 Reading persistent workspaces 2023-03-24 23:11:47 +05:30
en3wton
bbcfb5e138 remove use of new on Layout 2023-03-21 19:30:35 +00:00
en3wton
4ab4ff790e add more format replacements for hyprland/language 2023-03-19 15:12:11 +00:00
Alex
473eb0982b
Merge pull request #2053 from paul-ri/exlude-in-array 2023-03-13 11:04:25 +01:00
Paul Riou
fa9f3a6dc5 make:Add phony 'test' rule 2023-03-13 00:50:19 +00:00
Paul Riou
c26849217e test:Add test for output config with multiple exclusion/wildcard 2023-03-13 00:49:18 +00:00
Paul Riou
90206f55be config:output:Allow multiple exclusions & wildcard
Covers the use case where needing to exclude more than 1 output but
still include all other displays.

e.g. I have 3 monitors: laptop + HD + 4K; and 3 bar types:
- The main bar is on the laptop. `output: "laptop-monitor-id"`
- The 4K has a specific waybar bar-1 configuration. `output: "4K-monitor-id"`
- I want all other displays (3rd HD monitor / any HDMI output when presenting)
  to have a plain bar: `output: ["!laptop-monitor-id", "!4k-monitor-id", "*"]`
2023-03-13 00:44:07 +00:00
Alex
9a0dbd555d
Merge pull request #2049 from 2e0byo/lint 2023-03-08 15:46:41 +01:00
John Maximilian
a9015c7c98
refactor: make linter happy. 2023-03-08 14:35:07 +00:00
Alex
5b6e9d4e34
Merge pull request #2048 from LDAP/patch-1 2023-03-08 15:29:17 +01:00
Lucas Alber
8ccf00f0fe
Wireplumber: Free the default node name
The `default_node_name_` is reassigned without calling `g_free` on the old string.
2023-03-08 15:21:52 +01:00
Alex
823c13a8c0
Merge pull request #2046 from 2e0byo/fix/mpd 2023-03-07 18:12:40 +01:00
John Maximilian
3c96881a59
fix: mpd bug paused with no song. 2023-03-07 16:48:05 +00:00
Alex
b34d325a71
Merge pull request #2037 from LukashonakV/Happy_clang
Happy clang
2023-03-02 19:42:38 +01:00
Alex
3bda22da72
Merge pull request #1589 from qubidt/module-group-orientation
group module: configurable orientation
2023-03-02 19:42:22 +01:00
Viktar Lukashonak
61a6c00c02
Happy clang 2023-03-02 16:57:32 +03:00
Alex
39bc54e3ad
Merge pull request #2036 from LukashonakV/Clock_TZ_try_catch 2023-03-02 08:48:56 +01:00
Viktar Lukashonak
4cb7e55a91
ISSUE #878. Try catch Clock timezones
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-03-02 10:10:34 +03:00
Viktar Lukashonak
43862ceb34
ISSUE #878. Try catch Clock timezones 2023-03-02 10:07:10 +03:00
Alex
f29a400c97
Merge pull request #2035 from LukashonakV/AModule_forceEvents 2023-03-01 23:24:18 +01:00
Viktar Lukashonak
ce16e029ed
Issue #2030. AModule enable_click & enable_scroll
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-03-01 23:39:36 +03:00
Louis DeLosSantos
79eb2f5bc1 wlr-taskbar: allow sorting by app_id
some users (maybe only myself) may want to sort the task bar by app_id
which then places occurrences of the same task next to each other.

Signed-off-by: Louis DeLosSantos <louis.delos@gmail.com>
2023-03-01 12:16:28 +00:00
Alex
b7e6a2dc25
Merge pull request #2034 from pascal-huber/master 2023-03-01 11:06:27 +01:00
Pascal Huber
23f39938fb Revert "feat(sway): add workspace css class"
This reverts commit a10464d9bb67ba75d3c9159bd027b67a565318e1.
2023-03-01 10:55:15 +01:00
Alex
8cc8820369
Merge pull request #2017 from pascal-huber/master 2023-03-01 09:43:44 +01:00
Alex
c9c8b09e3f
Merge pull request #1991 from alex-courtis/add-river-layout 2023-03-01 09:42:39 +01:00
Alex
fb1f550c1a
Merge pull request #2019 from LukashonakV/ISSUE#1977 2023-03-01 09:38:28 +01:00
Viktar Lukashonak
e25a7c9719
ISSUE#1977. AModule implements module actions call
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-02-28 15:32:28 +03:00
Alex
09142fa322
Merge pull request #2025 from ElyesH/master 2023-02-25 10:49:59 +01:00
Elyes Haouas
1af25094b7 Fix some typos
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
2023-02-25 09:55:04 +01:00
Elyes Haouas
0d99d38089 modules/network.cpp: Remove repeated "the"
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
2023-02-25 09:51:40 +01:00
Pascal Huber
a10464d9bb feat(sway): add workspace css class 2023-02-18 20:31:12 +01:00
chayleaf
3f23792df0 use the recommended way of using flake-compat 2023-02-16 20:31:02 +07:00
chayleaf
529031f44f fix typo 2023-02-16 20:26:57 +07:00
chayleaf
f51894614d after updating nix.lock all this soup isn't needed 2023-02-16 20:25:07 +07:00
chayleaf
a7dbab79e5 add default.nix for compatibility; update flake.lock 2023-02-16 20:02:39 +07:00
chayleaf
4dcce810d2 improve nix dev shell; override the nixpkgs waybar
for example, the update from 0.9.16 to 0.9.17 broke this flake, after
this change the derivation will be the same as the nixpkgs one. This is
the better option since the flake is unmaintained in this repo (although
it may still break inbetween releases)
2023-02-16 19:45:58 +07:00
Alexander Courtis
43958ef560 fix: compilation errors with cpp_std=c++20 2023-02-11 13:26:03 +11:00
Alexander Courtis
5e4a47c0a8 Merge branch 'master' into add-river-layout 2023-02-11 13:22:46 +11:00
Alex
ea38eec2af fix: lint 2023-02-09 13:25:39 +01:00
Alex
286a3c70f4
Merge pull request #1978 from kpanuragh/master 2023-02-09 13:25:15 +01:00
Alex
9049de583e
Merge pull request #1996 from Kuruyia/feat/brightness-control
Closes https://github.com/Alexays/Waybar/issues/1411
2023-02-09 13:24:35 +01:00
Alex
a6eaaad97f
Merge pull request #1998 from LukashonakV/Clock_revision 2023-02-09 09:32:57 +01:00
Alex
d25930793c
Merge pull request #2004 from bwaite/fix-memory-leak-upower 2023-02-08 09:02:06 +01:00
Bryan Waite
67ab269706
Fixing memory leak on update UPower tooltip 2023-02-08 17:19:51 +11:00
Alex
48312f4c91
Merge pull request #2001 from LukashonakV/ISSUE#1988 2023-02-04 23:30:12 +01:00
Viktar Lukashonak
677cbb3384
When no one timezone is provided use system's TZ
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-02-04 23:48:25 +03:00
Kuruyia
973aa09f8b refactor(backlight): fix linter 2023-02-03 18:18:44 +01:00
Kuruyia
e8c4b85328 feat(backlight): use dbus to set the brightness 2023-02-03 12:58:52 +01:00
Viktar Lukashonak
b5ad77ea8c
Avoid of unnecessary string transformation
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-02-02 13:26:05 +03:00
Anuragh K P
74a8464c09 updating man page 2023-02-01 21:22:10 +05:30
Kuruyia
a78f0124d2 feat(backlight): add brightness control 2023-02-01 14:46:55 +01:00
Alex
8da5425189
Merge pull request #1994 from smoak/fix_wireplumber_invalid_pointer 2023-02-01 08:25:05 +01:00
Sasha Moak
a9c9f1d705 fix(wireplumber): free(): invalid pointer
When freeing the `default_node_name_` pointer using `free`, the `&`
operator was used to try to free the reference rather than the pointer.
This caused a core dump. In order to fix this, the pointer is freed
instead (ie the `&` operator is no longer used).
2023-01-31 17:56:58 -08:00
Alexander Courtis
301b106c48 add river/layout clang-format 2023-01-31 16:41:36 +11:00
Alexander Courtis
757a450324 add river/layout 2023-01-31 16:34:38 +11:00
Anuragh K P
7b3a6fbaa7 created local variable for _output 2023-01-30 18:35:06 +05:30
Alex
c93811b158
Merge pull request #1987 from adamant-pwn/patch-2 2023-01-30 08:57:28 +01:00
Anuragh K P
7554d7f071 Fixing build issue in image module 2023-01-29 19:13:01 +05:30
Oleksandr Kulkov
220b859948
Fix kbName initialization
Second argument of substr is the length of the substring, _not_ the position. With positions, it's better to do like this.

Example:
```sh
[2023-01-29 13:08:00.927] [debug] hyprland IPC received activelayout>>ITE Tech. Inc. ITE Device(8910) Keyboard,Russian (with Ukrainian-Belorussian layout)
[2023-01-29 13:08:00.927] [debug] kbName is ITE Tech. Inc. ITE Device(8910) Keyboard,Russian (with
```

After the fix it's correct:
```sh
[2023-01-29 13:11:11.408] [debug] hyprland IPC received activelayout>>ITE Tech. Inc. ITE Device(8910) Keyboard,Russian (with Ukrainian-Belorussian layout)
[2023-01-29 13:11:11.408] [debug] kbName is ITE Tech. Inc. ITE Device(8910) Keyboard
```
2023-01-29 13:14:05 +01:00
Anuragh K P
012baadaca added exec condition check on image module 2023-01-29 10:41:24 +05:30
Alex
0ecfce9c61
Merge pull request #1975 from bd-g/fix-image 2023-01-27 14:38:26 +01:00
Alex
d2116acb62
Merge pull request #1982 from LukashonakV/ClockSimplify 2023-01-27 14:33:28 +01:00
Viktar Lukashonak
5d8f9a8273
Clock. Formating simplify
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-01-27 15:57:18 +03:00
Anuragh K P
9068b7548f for image module get path from executable file 2023-01-25 22:29:33 +05:30
Anuragh K P
1495b957f1 for image module get path from executable file 2023-01-25 22:28:07 +05:30
Alex
47cdd6f988
Merge pull request #1976 from LukashonakV/ClockAltMode 2023-01-25 15:10:08 +01:00
Viktar Lukashonak
f3f0b008c6
Clock. Proper handletoggle propagation
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-01-25 16:56:45 +03:00
Brent George
c1ceb7ac42 fix linting issues 2023-01-24 14:53:49 -05:00
Brent George
e128c48573 image module CSS fix 2023-01-24 14:34:02 -05:00
Alex
dd9e3d0172
Merge pull request #1871 from Narice/feat/nix-flake-support 2023-01-24 09:34:03 +01:00
Alex
a9613892bb
Rename .envrc to .envrc.sample 2023-01-24 09:33:38 +01:00
Alex
e7af29ac1e
Merge pull request #1971 from LukashonakV/YearCalendar 2023-01-23 17:07:21 +01:00
Viktar Lukashonak
3b28af8b51
Merge remote-tracking branch 'origin/master' into YearCalendar
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-01-23 18:49:45 +03:00
Viktar Lukashonak
ed31b20c26
Merge branch 'master' into YearCalendar
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-01-23 18:42:32 +03:00
Alex
fea7ec9133
Merge pull request #1941 from eneshecan/master
Fixes https://github.com/Alexays/Waybar/issues/1940
2023-01-23 10:24:44 +01:00
Enes Hecan
3c8ca009ff Sanitize hyprland language string only instead of the whole format. Fixes #1940 2023-01-23 09:50:40 +01:00
Alex
f4cfafd238 fix: lint 2023-01-23 09:25:02 +01:00
Alex
5182fadede
Merge pull request #1944 from PolpOnline/master 2023-01-23 09:22:27 +01:00
Alex
18e0e0c7c1
Merge pull request #1964 from tactikauan/master 2023-01-23 09:20:46 +01:00
Alex
69b95e6d71
Merge pull request #1959 from alebastr/gcc-13 2023-01-23 09:18:13 +01:00
Alex
5e2895ccb3
Merge pull request #1966 from asas1asas200/zeng-doc-image 2023-01-22 13:39:39 +01:00
asas1asas200
0ca1c3957a docs(image): add image doc in meson and fix title 2023-01-22 20:16:46 +08:00
Kauan Decarli
de77787b60 Allow any module to implement signal handling 2023-01-21 21:57:28 -03:00
Aleksei Bavshin
51b6c22cab
ci: add glibc locales for date formatting tests.
Add some missing dependencies for Fedora.
2023-01-21 02:18:46 -08:00
Aleksei Bavshin
01cee153a4
ci: try to build with cpp_std=c++20
Add an extra job to build with `-std=c++20` on Fedora.
Update actions/checkout to v3.
2023-01-21 02:18:45 -08:00
Aleksei Bavshin
93e340a081
feat(clock): support chrono Time Zone extensions.
Use chrono Calendars and Time Zones (P0355R7, P1466R3) when available
instead of the `date` library.
Verified with a patched build of a recent GCC 13 snapshot.
2023-01-21 02:18:44 -08:00
Aleksei Bavshin
6225db0a48
test: refactor date formatter tests.
- Add tests for global locale.
- Warn about missing locales.
- Downgrade REQUIRE to CHECK.
- Skip tests if localized formatting does not work as expected.
2023-01-21 02:18:43 -08:00
Aleksei Bavshin
ea17a66dfc
fix: compilation errors with cpp_std=c++20
There were two main issues with fmtlib and C++20 mode:

 - `fmt::format` defaults to compile-time argument checking and requires
   using `fmt::runtime(format_string)` to bypass that.
 - `std::format` implementation introduces conflicting declarations and
   we have to specify the namespace for all `format`/`format_to` calls.
2023-01-20 22:50:02 -08:00
Aleksei Bavshin
67efe1af89
refactor(clock): remove struct waybar_time
The structure was used to pass the locale instance to the date
formatter. All the supported versions of `fmt` are passing the locale
parameter via `FormatContext.locale()` so we can remove the struct and
simplify the code.

While we at it, drop `date::make_zoned` in favor of CTAD on a
`date::zoned_time` constructor.
2023-01-20 22:50:01 -08:00
Aleksei Bavshin
ba498869c5
fix(clock): delete outdated warning 2023-01-20 22:50:00 -08:00
Aleksei Bavshin
43d52c59d9
test: fix build with Catch2 v2.x
Use smaller includes for Catch2 v3.
2023-01-20 22:49:59 -08:00
Aleksei Bavshin
ca9d237b00
fix(sway): add missing includes for GCC 13
See also: https://gcc.gnu.org/gcc-13/porting_to.html
2023-01-20 22:49:58 -08:00
Alex
bc07a82579
Merge pull request #1962 from maximbaz/hyprland-submap-init 2023-01-20 23:46:08 +01:00
Maxim Baz
6e9f21fc6b
hyprland/submap: run initial render on startup 2023-01-20 23:40:08 +01:00
Alex
eb9d2d9c5d
Merge pull request #1935 from multun/master 2023-01-17 09:40:45 +01:00
Alex
be3df41ae0
Merge pull request #1942 from smoak/fix-wireplumber-crashes
Fixes https://github.com/Alexays/Waybar/issues/1907
2023-01-17 09:36:05 +01:00
Sasha Moak
4e8ccf36b5 fix(wireplumber): waybar crashes when default node changes
In order to fix the issue, the default node name is cached rather than
the default node id. This is due to ids being unstable. So now when the
object manager is installed (ie ready), the default node name is
retrieved and stored for later.

Now when the mixer changed signal is emitted, the id of the changed node
is used to get the node from the object manager. The nodes name is
grabbed off that node and compared against the default node name, if
they match the volume is updated. Some safeguarding has been added such
that if the node cannot be found off the object manager, it's ignored.

Additionally, the "changed" signal on the default nodes api is now
utilized to update the default node name if it has changed. This way if
the default node changes, the module will be updated with the correct
volume and node.nick.

This adds additional debug logging for helping diagnose wireplumber
issues.

This also adds the wireplumber man page entry to the main waybar
supported section.
2023-01-16 10:29:35 -08:00
shironeko
5649c3f552 river/tags: refactor to support special purpose tags
adds the set-tags and toggle-tags setting so it's possible to have
different tags set vs toggled. This enables the use of e.g. sticky tags

Also clean-up the code a bit.
2023-01-15 12:16:30 -05:00
PolpOnline
a4b1b0a211
modules/custom: Added percentage rounding 2023-01-13 22:39:59 +01:00
Alex
6c8e186586
Merge pull request #1939 from RobertMueller2/master 2023-01-13 15:31:50 +01:00
Rene D. Obermueller
544c6deb88 sway/window: fix manpage 2023-01-13 15:08:59 +01:00
Alex
e59b4e4c93
Merge pull request #1419 from RobertMueller2/sway-window-newstyles 2023-01-13 13:58:43 +01:00
Alex
d71a4569fe
Merge pull request #1937 from cyrinux/fix/battery-time-remaining
fix https://github.com/Alexays/Waybar/pull/1867#pullrequestreview-1246756355
2023-01-13 09:51:40 +01:00
Cyril LEVIS
120cba0f5e
fix: battery time remaining
time is reported in second and should be divided by 3600 and not 1000.
2023-01-13 09:44:39 +01:00
Rene D. Obermueller
328573332f sway-window, Issue 1399: new style classes
Provides CSS classes empty, floating, tabbed, tiled, solo, stacked and
app_id.

Adds offscreen-css bool option (default false), only effective when
"all-outputs" is true. This adds styles on outputs without focused
node, according to its focused workspaces window situation.

Adds an "offscreen-css-text" string option (default empty), only
effective when "all-outputs" and "offscreen-style" are set. This
is shown as a text on outputs without a focused node.

Adds a "show-focused-workspace" bool option (default false) to indicate
the workspace name if the whole workspace is focused when nodes are
also present. If not set, empty text is shown, but css classes
according to nodes in the workspace are still applied.

Limitation:
When the top level layout changes, there is no sway event so the
module cannot react. Perhaps in the future recurring polling can
be added to go around this limitation.
2023-01-12 05:53:59 +01:00
Victor "multun" Collod
df0fdce92b get_desktop_app_info: fix crash on failed DesktopAppInfo::create
Even though it makes little sense for this call to fail,
it sometimes randomly does, and takes down waybar with it.
2023-01-11 23:02:12 +01:00
Alex
f0bead34d4 chore: 0.9.17 2023-01-11 11:39:30 +01:00
Alex
d6bd440027 fix: lint 2023-01-09 15:48:31 +01:00
Alex
c692d7bf64
Merge pull request #1929 from julianschuler/monitor-reconnect-fix
Fixes https://github.com/Alexays/Waybar/issues/1783
2023-01-08 19:56:27 +01:00
Julian Schuler
2045aac5b0 Fix crash upon reconnecting monitor 2023-01-08 18:49:24 +01:00
Alex
a92223c316
Merge pull request #1926 from robertgzr/mpris-module 2023-01-07 09:23:25 +01:00
Robert Günzler
24d03d13ce
mpris: fix build errors
to address https://github.com/Alexays/Waybar/pull/1520#issuecomment-1374229080

Signed-off-by: Robert Günzler <r@gnzler.io>
2023-01-07 01:44:25 +01:00
Robert Günzler
b3b5d8f9ab
Activate ci for mpris module
Signed-off-by: Robert Günzler <r@gnzler.io>
2023-01-07 01:44:25 +01:00
Alex
86850f5c7a
Merge pull request #1520 from robertgzr/mpris-module 2023-01-06 22:35:24 +01:00
Robert Günzler
0bc5314e08
Add mpris module
Uses libplayerctl to use the MPRIS dbus protocol to query, listen and
control media players.

Signed-off-by: Robert Günzler <r@gnzler.io>
2023-01-06 20:55:31 +01:00
Alex
1d6cfe7ce6
Merge pull request #1921 from Jonher937/cpu-load-pushed-back-twice 2023-01-05 08:52:22 +01:00
Jonathan Herlin
2a3ebc12de fix: cpu_load pushed twice to the vector 2023-01-05 01:10:04 +01:00
Alex
1938bb5d28 fix: lint 2023-01-04 16:26:50 +01:00
Alex
a35861b3b9
Merge pull request #1918 from ldelossa/sway-workspaces-alpha-sort 2023-01-03 11:52:39 +01:00
Louis DeLosSantos
8b512e7b22 sway,feat: allow alphabetical sort
for users who do not utilize any form of "workspace prev/next" commands,
it can be very handle to sort the workspaces alphabetically.

this commit adds a new "alphabetical_sort" to the `sway/workspaces`
module which allows the module to alway sort workspaces alphabetically.

this docs are updated to warn the user of the implications involved.

Signed-off-by: Louis DeLosSantos <louis.delos@gmail.com>
2023-01-02 17:03:28 -05:00
Alex
fb083f93dc
Merge pull request #1911 from cdump/master 2022-12-31 13:35:46 +01:00
Maxim Andreev
f795e7a308 modules/clock: improve ux when calendar_shift is used:
1. change only date, but not time
  2. use shifted values only in tooltip
  3. reset shift when mouse leaves (popup closes)
2022-12-28 10:13:10 +03:00
Alex
21abd4f9f9
Merge pull request #1910 from eneshecan/master 2022-12-27 15:44:42 +01:00
Enes Hecan
f724cc3f9d Fix wrong layout name in hyprland language module when a variant is used 2022-12-27 15:29:10 +01:00
Alex
bfbb2f9a40
Merge pull request #1906 from Arisa-Snowbell/gitignore 2022-12-26 09:33:55 +01:00
Arisa Snowbell
91357f210d
Ignore .cache generated by clangd 2022-12-26 06:39:15 +01:00
Alex
3e48551f25
Merge pull request #1897 from eneshecan/master 2022-12-21 09:43:08 +01:00
Enes Hecan
c05f41d732 Make linter happy 2022-12-21 01:55:39 +01:00
Enes Hecan
4d59de42af Implement hyprland submap module 2022-12-21 01:45:57 +01:00
Enes Hecan
6e296838e4 Update hyprland language module docs 2022-12-21 00:20:16 +01:00
Alex
e00e36981e
Merge pull request #1890 from eneshecan/master 2022-12-16 10:37:54 +01:00
Enes Hecan
4136ffaecb Minor refactorings and formatting fixes for hyprland language module 2022-12-16 10:01:58 +01:00
Alex
bd199e414b
Merge pull request #1888 from eneshecan/master
Fixes undefined
2022-12-16 09:20:49 +01:00
Enes Hecan
531bdfb8bb Fix hyprland language initialization issues 2022-12-15 01:48:14 +01:00
Alex
c1ea7626b9
Merge pull request #1887 from LukashonakV/ISSUE#1874 2022-12-14 16:08:36 +01:00
Viktar Lukashonak
995802e8ae
ISSUE#1874 - happy linter 2022-12-14 16:49:03 +03:00
Viktar Lukashonak
0079092699
ISSUE#1874
1. Calendar. Weeks. Fix right paddings when first days of the week is
Monday
2. Fix small perfomrance penalty(avoid of defining parameter in the
month loop)
3. Small name convention for format string variables
2022-12-14 16:43:23 +03:00
Alex
b5c686c0dd
Merge pull request #1882 from LukashonakV/ISSUE#1877 2022-12-12 09:18:10 +01:00
Viktar Lukashonak
4c4d09992e
Regular expression improved 2022-12-10 18:36:58 +03:00
Viktar Lukashonak
9218968d2f
Wrong assigning 2022-12-10 17:55:21 +03:00
Viktar Lukashonak
a08967e008
Happy linter 2022-12-10 16:54:26 +03:00
Viktar Lukashonak
272c638f7e
Happy linter 2022-12-10 16:48:22 +03:00
Viktar Lukashonak
57ad7f9536
ISSUE#1877 Calendar week numbers
1. Let's do code simplier
2. Week format using regexp. Needs when user provide additional
characters in format string and need to align week days according
3. Week format has got default formats: ":%U",":%V"
4. Week number is based on the first day of the week now. The output is
the same as of date library now.
5. Avoiding of unnecessary operations
2022-12-10 14:02:15 +03:00
Alex
2a76d8e5b9
Merge pull request #1862 from alebastr/battery-ignore-scope-device 2022-12-07 15:01:26 +01:00
Kim Brose
1130e8c8ec
Add output parameter format to manpage 2022-12-06 19:05:08 +01:00
Narice
d5a86526bc dev: Added Nix Flake support
- Enables Nix users to get the git version of waybar
- Enables Nix users to develop waybar easily
- Adds a fully reproducible development environment
  - The user only has to install Nix, no other depencencies
  - Automatic dev env on directory entry through .envrc
2022-12-06 18:44:26 +01:00
Alex
c5babb4c44
Merge pull request #1868 from prohornikitin/calendar-week-numbers
Fix https://github.com/Alexays/Waybar/issues/1802
2022-12-06 09:01:18 +01:00
Prokhor40
328575a721 fix: calendar week numbers
fix their format to correct

fix last number hide if the last day of the month is the last day of the week

some refactoring(mostly renaming abbreviations to the full phrases)
2022-12-06 03:47:28 +03:00
Alex
ea9078d887
Merge pull request #1867 from cyrinux/feat/macsmc-battery-support 2022-12-05 22:30:47 +01:00
Cyril Levis
b1833b1f36
feat: add macsmc-battery time remaining support for asahi
use time_to_empty_now and time_to_full_now
2022-12-05 22:09:05 +01:00
Alex
53e89dace7
Merge pull request #1865 from Dordovel/master
Fix https://github.com/Alexays/Waybar/pull/1854#issue-1469577538
2022-12-05 09:01:45 +01:00
Dordovel
3cbcef61cf fix AIconLabel spacing between image and label 2022-12-05 10:02:38 +03:00
Aleksei Bavshin
22084691ff
fix(battery): ignore non-system power supplies
Linux power_supply sysfs interface allows checking if the battery powers
the whole system or a specific device/tree of devices with `scope`
attribute[1]. We can use it to skip the non-system power supplies in the
battery module and avoid adding HIDs or other peripheral devices to the
total.

The logic is based on UPower, where it is assumed that "Unknown" devices
or devices without a `scope` are system power supplies.

[1]: https://lore.kernel.org/lkml/alpine.LNX.2.00.1201031556460.24984@pobox.suse.cz/T/
2022-12-04 00:14:42 -08:00
Alex
f4afa59861
Merge pull request #1860 from prohornikitin/hide-module-if-empty 2022-12-03 15:32:12 +01:00
Prokhor40
ce8c13788a fix formatting issues 2022-12-02 19:32:03 +03:00
Prokhor40
b74f3c7aaa hide mdp/pulseaudio/sndio if text 'resolves' to be empty. 2022-12-02 18:15:51 +03:00
Soc Virnyl S. Estela
55d7868f86
fix(2): use getaddrinfo() instead of gethostbyname() 2022-12-02 22:18:32 +08:00
Soc Virnyl S. Estela
0540977e45
format: remove some newlines 2022-12-02 21:42:58 +08:00
Soc Virnyl S. Estela
385726e701
fix: use getaddrinfo() instead of gethostbyname() 2022-12-02 21:36:14 +08:00
Alex
2111865efe
refactor: remove warning 2022-12-01 08:45:12 +01:00
Alex
94d6ae9741
Merge pull request #1845 from adamant-pwn/patch-1 2022-11-29 10:47:20 +01:00
Alex
e6760bf9dd
Merge pull request #1846 from Dordovel/master 2022-11-29 08:46:06 +01:00
Dordovel
7671ccfbc6 added file existence check 2022-11-29 09:00:12 +03:00
Oleksandr Kulkov
459541ed89
Don't search "Keyboard at" from hyprland/language
The current output form of `hyprctl devices` is like this:
```
        Keyboard at 6f80ad70:
                ITE Tech. Inc. ITE Device(8910) Keyboard
                        rules: r "", m "", l "us,ru", v "", o "grp:alt_shift_toggle"
                        active keymap: Russian
                        main: no
```

That is, `Keyboard at` goes _before_ the keyboard name, so looking for `Keyboard at` only makes it skip to the keyboard _after_ the one that the user specified.
2022-11-29 01:11:25 +01:00
Alex
da3d9533d1
Merge pull request #1841 from encbar5/inverted-date-scroll 2022-11-28 07:43:48 +01:00
encbar5
8db1996ccc Allow calendar_shift_init_ to be negative 2022-11-27 21:24:56 -06:00
Alex
cfef78a5bc
Merge pull request #1837 from smoak/smoak/fix-wireplumber-bluetooth 2022-11-26 20:45:29 +01:00
Sasha Moak
60fa5e9f67 fix: wireplumber module when used with a bluetooth device
This fixes #1811 by falling back to `node.description` if `node.nick` is
not available. This can happen for bluetooth devices that do not have a
`node.nick`.
2022-11-26 11:35:45 -08:00
Alex
cea59ddc6c
Merge pull request #1836 from smoak/smoak/wireplumber-icon-support 2022-11-26 20:23:17 +01:00
Sasha Moak
3730793197 feat: add icon support to the wireplumber module
Adds basic icon support for the wireplumber module.

This can be achieved by using `{icon}` in the `format` config and
pairing it with the `format-icons` config as well.

Example:

```
"wireplumber": {
    "format": "{volume}% {icon}",
    "format-icons": ["", "", ""]
}
```
2022-11-26 10:02:16 -08:00
Alex
d2b4076ac8
Merge pull request #1799 from Keloran/upower-click 2022-11-25 09:04:31 +01:00
Alex
e63e3a0ca9
Update upower.cpp 2022-11-25 09:03:27 +01:00
Alex
99d370d9ed
Update README.md 2022-11-24 20:51:54 +01:00
Alex
80b2b29a77
Merge pull request #1397 from JakeStanger/feat/image-module
Resolves https://github.com/Alexays/Waybar/issues/1191
2022-11-24 20:40:56 +01:00
Alex
27ad9ec267
Update README.md 2022-11-24 20:37:30 +01:00
Alex
9eb6c4e296 chore: v0.9.16 2022-11-24 20:34:12 +01:00
Alex
748c6125d0
Merge pull request #1810 from pinselimo/revert-1120 2022-11-24 15:20:29 +01:00
Simon Plakolb
235861fd3d button: Remove AButton class 2022-11-24 13:08:16 +01:00
Simon Plakolb
5e9bbe5c76 modules: Revert button to label 2022-11-24 13:08:16 +01:00
Alex
74fa131ebe
Merge pull request #1809 from herlev/hyprland-named-workspace-crash 2022-11-24 07:46:17 +01:00
herlev
2c7cb0e9d4 Fix crashes when using named workspaces in Hyprland
The first crash occurs when trying to parse the
ID of a workspace as an uint, since named
workspaces has negative IDs. This is fixed by
using ints for workspace IDs instead of uints.

The second crash occurs when converting a
workspace name that isn't a number to an integer.
This is fixed by wrapping std::stoi in a try
block and only sorting by number, when both names
can successfully be converted to integers.
2022-11-24 02:16:44 +01:00
Alex
ce8ae5bf17
Merge pull request #1748 from lilydjwg/fix-zombies
fixes https://github.com/Alexays/Waybar/issues/1713
2022-11-23 21:31:47 +01:00
Alex
062e7bb9b4
Merge pull request #1797 from smoak/wireplumber-support 2022-11-22 12:44:39 +01:00
Keloran
3acd31c3e9
syntax issue 2022-11-21 09:48:41 +00:00
Keloran
456e06c4b5
exact opposite, lol 2022-11-21 09:46:57 +00:00
Keloran
a2751cfcd6
alt text readded 2022-11-18 14:25:16 +00:00
Keloran
d9cc995405
added onclick to upower 2022-11-18 13:10:04 +00:00
Keloran
00a2ebf00d
added onclick to upower 2022-11-18 13:09:38 +00:00
Sasha Moak
c2f98d07ef feat: wireplumber support
Adds basic support for showing volume via wireplumber. Allows specifying
the node-id or falling back to the default Audio/Sink node id if node-id
is not set. If tooltip on hover is enabled, will show `{node_name}` by
default otherwise `tooltip-format`.

Format replacements:

`{volume}` - Volume in percentage
`{node_name}` - The node's nickname (`node.nick` property)
2022-11-16 23:23:07 -08:00
Alex
833dcc1bb8
Merge pull request #1795 from schmidma/bluez-output-detection 2022-11-16 19:07:46 +01:00
Maximilian Schmidt
8c24e26f0e
Recognize outputs with 'bluez' in monitor name as bluetooth class 2022-11-16 19:01:12 +01:00
Alex
56b4a11a9c
Merge pull request #1793 from Dordovel/master 2022-11-16 07:41:29 +01:00
Dordovel
1111763251 added path settings 2022-11-16 08:04:18 +03:00
Dordovel
769858fbb4 fix call parent event handle, added commang to open user folder 2022-11-15 16:15:26 +03:00
Alex
2695815bcc
Merge pull request #1787 from Dordovel/master 2022-11-15 08:41:12 +01:00
Dordovel
49afb87e34
Merge branch 'Alexays:master' into master 2022-11-13 16:17:04 +03:00
Alex
5250123dcb
Merge pull request #1788 from grfrederic/normalize-battery-capacity 2022-11-12 23:41:00 +01:00
Frederic Grabowski
c0b3e9ee35 normalize capacity by number of batteries 2022-11-12 22:39:53 +01:00
Dordovel
454ba610f4 clicking on the user label opens the default file manager 2022-11-11 15:15:12 +03:00
Alex
3718902b9d
Merge pull request #1785 from ElJeffe/hyprland_monitor_remove 2022-11-10 09:21:52 +01:00
Jef Steelant
9f0a14c22b make linter happy 2022-11-10 09:19:49 +01:00
Alex
781da93f3d
Merge pull request #1780 from ElJeffe/hyprland_monitor_remove 2022-11-09 23:09:30 +01:00
Jef Steelant
8f4f67f69f Do not crash when a monitor is removed 2022-11-09 09:34:19 +01:00
Alex
8be5bab8ad
Merge pull request #1734 from baltitenger/backlight-hide-when-powered-off
closes https://github.com/Alexays/Waybar/issues/393
2022-11-07 14:09:54 +01:00
Baltazár Radics
d02e23c759 feat(backlight): hide if the display is powered off 2022-11-07 13:57:21 +01:00
Alex
d2b22c6ec5 fix: lint 2022-11-07 09:23:47 +01:00
Alex
ed898cd211
Merge pull request #1773 from kj/backlight-format-states 2022-11-07 09:23:17 +01:00
Alex
1a1c617520
Merge pull request #1772 from kj/fix-states-documentation 2022-11-07 09:13:41 +01:00
Kelsey Judson
253222d31c Make backlight module respect format-<state> config 2022-11-07 21:06:16 +13:00
Kelsey Judson
51e6fc6250 Fix states documentation 2022-11-07 20:30:01 +13:00
Alex
af1668dfd0
Merge pull request #1770 from Scrumplex/fix-mpd-double-encode 2022-11-06 09:52:31 +01:00
Sefa Eyeoglu
cf5877073a
fix: don't escape mpd label twice
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-05 20:23:00 +01:00
Alex
bd567800c9
Merge pull request #1769 from ericliou/master 2022-11-04 22:01:36 +01:00
Eric L
6477e539d0 Battery: Plugged status has higher priority 2022-11-04 20:01:53 +00:00
Alex
242e19a07d
Merge pull request #1767 from b1rger/fix-typos 2022-11-04 15:07:31 +01:00
Birger Schacht
0e53c37d6b Fix typos in manual pages 2022-11-04 15:03:10 +01:00
Alex
3030850b22 refactor: inherit disabled button 2022-11-04 08:39:59 +01:00
Alex
92cc01f401 fix: label default style 2022-11-03 15:53:45 +01:00
Alex
d48eebd4d3 fix: use GTK_STYLE_PROVIDER_PRIORITY_APPLICATION 2022-11-03 14:10:18 +01:00
Alex
eb705533b5 feat: jsoncpp wrap 2022-11-03 14:08:22 +01:00
Alex
3cf027fc56
fix: button default style 2022-11-03 14:04:29 +01:00
Alex
09120caf17
Merge pull request #1762 from jpalus/jsoncpp-version 2022-11-03 11:02:19 +01:00
Jan Palus
73495df377
build: require jsoncpp >= 1.9.2
with #1719 Waybar started using Json::Value.as() available since jsoncpp
1.9.2.
2022-11-03 10:59:03 +01:00
Alex
fd417c0805 chore: 0.9.15 2022-11-03 09:43:05 +01:00
Alex
afa590f781
Merge pull request #1758 from Alexays/revert-1687-fix-custom-module-markup
Revert "Escape text in custom module"
2022-11-02 06:00:00 +01:00
Alex
df36ac3408
Revert "Escape text in custom module" 2022-11-02 05:59:50 +01:00
Alex
ebdf575d45 fix: lint 2022-10-28 14:44:48 +02:00
Alex
a4d27ea806 fix: checking router id in handleEvent function 2022-10-28 14:44:04 +02:00
Alex
a10266ceee fix: add power to tooltip format 2022-10-28 14:35:18 +02:00
lilydjwg
31137c30fb fix custom module leaves zombie processes behind when bars are removed
fixes #1713.
2022-10-27 18:12:14 +08:00
Alex
c374c412d3 chore: remove unwanted file 2022-10-27 10:00:38 +02:00
Alex
2fec1d4907 fix: typo 2022-10-27 09:14:07 +02:00
Alex
be28ee3d7e fix(#1707): hide module when no controller found 2022-10-27 09:00:31 +02:00
Alex
2d7e21ed7d fix: lint 2022-10-26 17:26:15 +02:00
Alex
930a3e168b
Merge pull request #1747 from bi4k8/taskbar-task-reorder 2022-10-26 17:25:55 +02:00
Alex
7948d03d25
Merge pull request #1744 from Quantenzitrone/master 2022-10-26 17:14:58 +02:00
bi4k8
ff61e7bf4e taskbar: implement drag-and-drop task reordering 2022-10-25 19:39:23 +00:00
Quantenzitrone
64849f52c9 fixed memory module not rounding numbers 2022-10-22 02:31:14 +02:00
Alex
1374b0fce4
Merge pull request #1740 from ErikReider/gamemode-segfault-fix 2022-10-20 13:09:50 +02:00
Erik Reider
1ceaff27c2 Fixed gamemode module segfaulting when disconnecting monitor 2022-10-20 12:38:52 +02:00
Alex
527017baca chore: update date wrap 2022-10-20 11:05:19 +02:00
Alex
f330e51472 fix: typo 2022-10-20 10:57:27 +02:00
Alex
411c6f4b4b chore: update catch 2022-10-20 10:56:47 +02:00
Alex
e8e8ccb6cf
Merge pull request #1661 from asas1asas200/zeng-feat-improve_keyboard 2022-10-20 10:50:35 +02:00
Alex
a24f2d72a7
Merge pull request #1730 from herlev/hyprland-window-rewrite 2022-10-20 10:48:57 +02:00
Alex
ffa458223d
Merge pull request #1724 from llyyr/fix-build-with-catch2 2022-10-20 10:47:52 +02:00
Alex
aa8bd51952
Merge pull request #1738 from pinselimo/fix-button-padding 2022-10-20 10:46:08 +02:00
Simon Plakolb
05dbfe261a style: Revert set default minimal width of buttons to zero #1737 2022-10-20 10:34:20 +02:00
Simon Plakolb
1f591e36f1 button: Hardcode min-width property set to zero
Buttons come with an intrinsic min-width but lack a method to alter this
property. Setting the requested size to zero has also no effect on it.
The only way found to work is to hard code the CSS into the button.
2022-10-20 10:31:11 +02:00
Alex
d0677c1801
Merge pull request #1737 from pinselimo/fix-button-padding 2022-10-19 14:59:49 +02:00
Simon Plakolb
c18c6b080a Set default minimal width of buttons to zero
Even if all margins, padding and borders of buttons are removed the
label inside the buttons may still be padded if they are too short.
Setting the minimal width of buttons to zero fixes this issue.
2022-10-19 14:48:56 +02:00
Alex
7240611d87
Merge pull request #1736 from pinselimo/fix-battery-module 2022-10-19 13:39:20 +02:00
herlev
e1045381fe Fix linter 2022-10-19 13:30:28 +02:00
herlev
e660a3634d Fix linter 2022-10-19 13:29:05 +02:00
herlev
54e04b5a30 Refactor rewriteTitle 2022-10-19 13:25:08 +02:00
Simon Plakolb
662a250705 Fix battery indicator crash on linux
A pre-processor flag was misspelled and is now corrected.
2022-10-19 13:15:21 +02:00
herlev
f72c1a54d3
Merge branch 'Alexays:master' into hyprland-window-rewrite 2022-10-19 12:18:22 +02:00
Alex
6b221133c2
Merge pull request #1703 from lbartoletti/freebsd_battery 2022-10-19 09:08:47 +02:00
Alex
d01fda6fae
Merge pull request #1721 from herlev/sort-workspaces-by-number 2022-10-19 09:08:03 +02:00
Loïc Bartoletti
692b90c995 fix build 2022-10-19 08:36:15 +02:00
Alex
dea2d721eb
Merge pull request #1733 from ItsDrike/master 2022-10-18 19:45:42 +02:00
Loïc Bartoletti
72a2ada82c remove clang-format lines 2022-10-18 19:30:43 +02:00
Loïc Bartoletti
6156a62294 fix time_remaining. FreeBSD sysctl returns minutes and not hours 2022-10-18 19:30:43 +02:00
Loïc Bartoletti
d4d35e2f89 apply clang-format 2022-10-18 19:30:43 +02:00
Loïc Bartoletti
a58988ea9d Battery: replace #else by #elif defined(__linux__)
Cannot use #else here when inotify_init1() is hidden behind #if defined(__Linux__).

Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
2022-10-18 19:30:43 +02:00
Loïc Bartoletti
0ada5ac8b0 Battery::getAdapterStatus: better code format 2022-10-18 19:30:41 +02:00
Loïc Bartoletti
1421163df3 remove useless include <sys/types.h> 2022-10-18 19:30:23 +02:00
Loïc Bartoletti
9d5f0e45c0 Add test if there is battery 2022-10-18 19:30:23 +02:00
Loïc Bartoletti
45e44e03bd Apply jbeich suggestion for if defined(__linux__) 2022-10-18 19:30:21 +02:00
Loïc Bartoletti
830c5cd5d0 FreeBSD: Add support to battery
This commit aims to propose a FreeBSD to gain battery support using sysctl on hw.acpi.battery.*
2022-10-18 19:30:04 +02:00
ItsDrike
90f206f92a
Fix crash on quickly switching workspaces
The hyprland/window widget had an assertion ensuring that the output
from hyprctl matched the currently selected workspace id. However this
assertion fails if workspaces are switched too quickly, causing the
selected workspace to differ in id from the one in hyprctl, failing this
assertion which then crashes the entire program.

This fix simply changes this assertion into an if statement, and if a
mismatch is found, empty string is returned as the window name.
2022-10-18 18:36:00 +02:00
herlev
59e7f1974c Document hyprland/window rewrite option 2022-10-18 13:21:20 +02:00
herlev
97ae2ff343 Add rewrite option to hyprland/window 2022-10-18 13:18:43 +02:00
herlev
3d63080346 Document sort-by-number option in man page 2022-10-18 12:25:22 +02:00
herlev
cb842d9d50
Merge branch 'Alexays:master' into sort-workspaces-by-number 2022-10-18 12:19:00 +02:00
Alex
a7e6330078
Merge pull request #1729 from pinselimo/use_gtk_button_v2 2022-10-18 11:27:17 +02:00
Simon Plakolb
93807b0b3e resources: Remove border effect on hover
Moves the ``border = none;`` attribute from workspace buttons to the
global scope. The hover effects on all buttons are now consistent in the
default stylesheet.
2022-10-18 11:25:20 +02:00
Alex
6e73c58e60 fix: lint 2022-10-18 09:01:45 +02:00
Alex
209225e381
Merge pull request #1701 from Dordovel/master 2022-10-18 09:01:00 +02:00
Alex
7746328daa
Merge pull request #1667 from asas1asas200/zeng-feat-sway_scratchpad 2022-10-18 09:00:31 +02:00
Alex
c7d475ee86
Merge pull request #1728 from lilydjwg/fixpa 2022-10-18 08:45:45 +02:00
Dordovel
4ed13df092
Merge branch 'Alexays:master' into master 2022-10-17 19:00:21 +03:00
herlev
33c3ab35a8 Fix linter error (formatting) 2022-10-17 10:13:37 +02:00
herlev
4dfea72db0
Merge branch 'Alexays:master' into sort-workspaces-by-number 2022-10-17 10:01:12 +02:00
Alex
504132dc55
Merge pull request #1719 from herlev/master 2022-10-17 09:53:05 +02:00
Alex
debbfccf07
Merge pull request #1705 from lbartoletti/freebsd_temperature_use_thermal-zone_config 2022-10-17 09:52:54 +02:00
herlev
56ec72c31c
Merge branch 'master' into master 2022-10-17 09:44:17 +02:00
Loïc Bartoletti
27c6c96b37
Merge branch 'master' into freebsd_temperature_use_thermal-zone_config 2022-10-17 09:34:06 +02:00
Alex
8551c4bbe3 fix: lint 2022-10-17 09:19:00 +02:00
Alex
58362abfaf
Merge pull request #1630 from duxovni/pow_format 2022-10-17 09:16:47 +02:00
Alex
2abeba2b52
Merge pull request #1679 from tomcharnock/master 2022-10-17 09:10:54 +02:00
Alex
bfa3adcfd6
Merge pull request #1120 from pinselimo/use_gtk_button_v2 2022-10-17 09:09:12 +02:00
Alex
2db6fc8b1b
Merge pull request #1687 from sespiros/fix-custom-module-markup 2022-10-17 09:08:01 +02:00
Alex
c2dd296d31
Merge pull request #1704 from gunslingerfry/master 2022-10-17 09:07:26 +02:00
Alex
5b0c5ea9ce
Merge pull request #1720 from IanManske/inhibitor-default-state 2022-10-17 09:06:26 +02:00
Alex
c7bb0ae0af
Merge pull request #1636 from IsaacWoods/master 2022-10-17 09:05:03 +02:00
Alex
b2f90dffe1
Merge pull request #1710 from m-braunschweig/filename 2022-10-17 09:04:21 +02:00
Mika Braunschweig
f86dff60e6
utils: add sanitize_str to encode '&' etc.
gtk requires some chars (<>&"') to be encoded for them to render
properly. `sanitize_str` sanitizes raw strings that have such chars and
returns a properly encoded string
2022-10-17 00:31:19 +02:00
llyyr
1db3c55b48 Fix build with catch2>=3.0.0 2022-10-16 19:21:43 +05:30
lilydjwg
35254ee834 pulseaudio: disconnect on destruction 2022-10-16 15:24:17 +08:00
herlev
9a0013cb10 Add option to wlr/workspaces to sort workspaces by number 2022-10-15 01:44:58 +02:00
Ian Manske
cca5227210 Add config value for inhibitor default state. 2022-10-13 21:47:57 -04:00
herlev
cf9d98a0be remove <optional> dependency 2022-10-13 23:49:41 +02:00
herlev
015409acaf Allow hyprland/window to show active window on a per monitor basis 2022-10-13 23:41:56 +02:00
Simon Plakolb
2b735f44bc modules: Set tooltip on button
Mouse-over tooltips set on the label only appear once the mouse hovers
over exactly the label. Other apps (e.g. firefox) show the tooltip once
the pointer hovers the button. Not solely its label. With this commit we
get the same behaviour.
2022-10-12 10:25:30 +02:00
Simon Plakolb
8fa5d9b838 modules: Set style-context on button
Fixes issue where the class parameters in style.css would have no
effect.

The CSS now references the GtkButton instead of the GtkLabel. Removing
all style-classes from the custom module GtkButton however removes
any properties set via style.css. Thus, the default classes 'flat' and
'text-button' are added on every update of these modules.
2022-10-12 10:25:30 +02:00
Simon Plakolb
0012bcbd74 resources: Set button hover effects globally
Since now modules as well as workspaces are buttons, the fix for
the 'strange hover effects' has to be applied on a global level.
In return there is a nice hover effect also on the modules.
2022-10-12 10:25:30 +02:00
Simon Plakolb
b8322c4b4b button: Add AButton class
The AButton class is designed as full a substitute to ALabel. The
GtkButton attribute 'button_' is initialized with a label. This
label can the be referenced by the subsequent inheritors of AButton
instead of the GtkLabel attribute 'label_' of ALabel.
For convenience a GtkLabel* 'label_' attribute is added to AButton.

If the button cannot be clicked it is disabled, effectively acting
like its label predecessor.

GtkButton seems to catch one-click mouse events regardless of the
flags set on it. Therefore, 'signal_pressed' is connected to a
function creating a fake GdkEventButton* and calling 'handleToggle'
(for details on this possible bug in GTK see:
https://stackoverflow.com/questions/45334911 )

In accordance with other GtkButtons (i.e. the sway/workspace ones)
set_relief(Gtk::RELIEF_NONE) is called on the 'button_' instance.
2022-10-12 10:25:29 +02:00
Dordovel
07050cf354
Merge branch 'Alexays:master' into master 2022-10-04 15:37:36 +03:00
Loïc Bartoletti
ddf3e11240 remove clang-format lines 2022-10-04 11:28:32 +02:00
Loïc Bartoletti
1ca660460a apply clang-format 2022-10-04 08:03:54 +02:00
Loïc Bartoletti
0898236586 remove useless include <sys/types.h> 2022-10-04 07:37:05 +02:00
Loïc Bartoletti
c3e91cd228 [FreeBSD] Use thermal-zone
The zone was hardcoded in #1702.
This commit allows to use the "thermal-zone"
variable.

Follow up #1702
2022-10-04 07:29:16 +02:00
Matthew Fry
c500c7d9a1 Fixed pulseaudio max-volume configuration. Fixed issue where volume stepping would cause the max volume to go above the max and never reach 0. 2022-09-30 15:25:12 -06:00
Alex
5da45ece9d
Merge pull request #1702 from lbartoletti/freebsd_temperature 2022-09-30 21:24:05 +02:00
Loïc Bartoletti
024777a5bc FreeBSD: Add support to temperature
This commit aims to propose a FreeBSD to gain temperature support using
sysctl on hw.acpi.thermal.tz0.temperature.
2022-09-30 21:12:28 +02:00
Dordovel
9758833027 added user module 2022-09-30 14:33:23 +03:00
Tom Charnock
9a958f6848 Merge branch 'master' of https://github.com/Alexays/Waybar 2022-09-22 09:52:45 +02:00
Spyros Seimenis
9e03bb61c7 Escape text in custom module 2022-09-16 01:19:44 +03:00
Alex
710f89599e
Merge pull request #1686 from Alexays/revert-1685-master 2022-09-15 15:47:20 +02:00
Alex
d1700bf202
Revert "added checking router id in handleEvent function, because module does…" 2022-09-15 15:47:14 +02:00
Alex
e1b31db42b
Merge pull request #1685 from Dordovel/master 2022-09-15 13:10:54 +02:00
User
52e9f624be added checking router id in handleEvent function, because module doesn't update state 2022-09-15 14:03:32 +03:00
Tom Charnock
e75eafcb34 Merge branch 'master' of https://github.com/tomcharnock/Waybar 2022-09-09 07:19:12 +00:00
Isaac Woods
6558a156b3 Add man entry for the ignored-sinks option 2022-09-09 00:54:32 +01:00
Isaac Woods
faf8954712 Add config option to ignore Pulseaudio Sinks
Fixes #1347
2022-09-09 00:51:25 +01:00
Alex
e58f1fd3e0
Merge pull request #1412 from eigenbrot/battery_zero_pad_minutes
Add battery format-time option for zero-padded minutes
2022-09-07 16:54:28 +02:00
Arthur Eigenbrot
6b83360e76 Add "{m}" battery format-time option for zero-pad minutes 2022-09-07 08:53:07 -06:00
Alex
03ca8de6d7
Update config.cpp 2022-09-07 10:33:57 +02:00
Alex
ac193ae669
Merge pull request #1646 from LukashonakV/ISSUE#1545
Issue#1545. Calendar scrolling opportunity
2022-09-07 09:16:59 +02:00
Alex
38d2815425
Merge pull request #1678 from asas1asas200/zeng-feat-idle_inhibitor_tooltip
feat(idle-inhibitor): add tooltip format
2022-09-05 17:52:27 +02:00
Alex
79f21c0d7b
Merge pull request #1600 from leophys/master
Add support for reading the config path from env
2022-09-05 10:56:01 +02:00
Tom Charnock
0306c97173 Merge branch 'master' of https://github.com/Alexays/Waybar 2022-09-05 09:54:04 +02:00
Alex
8a82cdff16
Merge pull request #1659 from TheRealLorenz/master
Add 'max-volume' option to pulseaudio
2022-09-05 09:13:01 +02:00
Alex
29bdff5314
Merge pull request #1657 from vaxerski/hyprlandLanguage
Added a basic hyprland/language module
2022-09-05 09:12:17 +02:00
Blallo
eb017347b8
Add support for reading the config path from env
This commit adds support to reading the config base path from the
environment variable `WAYBAR_CONFIG_DIR`. If it is set, but no
configuration is found there, it falls back to the previous mechanism
of using the default paths, without erroring.
2022-09-05 08:21:36 +02:00
Bao Trinh
f5a24d12e5
group module: configurable orientation
currently, the orientation of group modules is always the opposite of
the bar. Change it so that:

* the default orientation of the group module is always the opposite of
  its parent, even for nested groups
* the orientation can be overridden in the config
* css ID and class are set for the group element
2022-09-03 18:37:35 -05:00
Tom Charnock
912d7f8588 Making calculations uint64_t 2022-09-03 18:08:26 +02:00
Tom Charnock
5647146ac0 Added Discharging clause and corrected typo 2022-09-03 17:52:11 +02:00
Tom Charnock
af2a3f8bda Added alternative calculations for time remaining 2022-09-03 16:06:13 +02:00
asas1asas200
55e83f90d1 feat(idle-inhibitor): add tooltip format 2022-09-03 19:21:32 +08:00
Tom Charnock
0d94853613 Added alternative variable calculations 2022-09-02 15:37:23 +02:00
Tom Charnock
120c68e014 Updated logic in battery module 2022-09-02 11:42:46 +02:00
Alex
4deb6d812d
Merge pull request #1653 from kennypm/dsp
add JACK module
2022-09-02 08:12:57 +02:00
asas1asas200
bc201fd0eb doc(sway/scratchpad): add man page 2022-08-31 16:27:25 +08:00
asas1asas200
d2ff116c92 feat(sway/scratchpad): add some configs
Add some configs for displaying.
Remove draft codes.
2022-08-31 16:27:25 +08:00
asas1asas200
e3342467fc feat(sway/scratchpad): add basic counter 2022-08-31 16:27:25 +08:00
Alex
ce10ce0d5e
Merge pull request #1672 from asas1asas200/zeng-style-lint 2022-08-31 10:06:43 +02:00
asas1asas200
4a929240df style(lint): fix some files lint 2022-08-31 15:51:50 +08:00
Alex
33d13af6d1
Merge pull request #1670 from akliuxingyuan/master 2022-08-30 20:43:51 +02:00
Alex
90878a5c98
Merge pull request #1669 from asas1asas200/zeng-fix-network 2022-08-30 20:43:03 +02:00
akliuxingyuan
0d27949f0a scale icons for HiDPI monitor 2022-08-30 23:13:38 +08:00
asas1asas200
f6322d2dd1 fix(network): dont escape essid in tooltip
Like #1256 , but escape by calling `set_tooltip_markup()`, because the
label text uses `set_markup()`.
2022-08-30 23:05:34 +08:00
Alex
330d166c82
Merge pull request #1668 from alex-courtis/1591-river-escape-window-and-mode 2022-08-29 08:26:40 +02:00
Alexander Courtis
5f2dd99e6d #1591 river escape window and mode 2022-08-29 16:22:08 +10:00
asas1asas200
8b03e38594 fix(keyboard): correct device-path config behavior 2022-08-24 14:08:34 +08:00
asas1asas200
5944989a8a doc(keyboard): add deprecated warning 2022-08-24 02:41:12 +08:00
asas1asas200
58a399b9af chore(ci, meson): add inotify dependency for BSD 2022-08-24 02:22:40 +08:00
asas1asas200
dcd75b3b40 feat(keybaord): enable hotplug support
Use inotify listening devices path changes to implement hotplug support.
The new hotplug thread is also an event loop, so the interval value has
no effect.
The evdev is now open on demand.

Fix libinput_interface object life-time.
2022-08-23 23:30:16 +08:00
ViktarL
17f91391b6
Merge branch 'Alexays:master' into ISSUE#1545 2022-08-23 09:00:08 +00:00
asas1asas200
061f4550f4 feat(keyboard): improve keyboard response time
Use libinput event for keyboard state updates.
The state will update when CAPS_LOCK, NUM_LOCK or SCROLL_LOCK has been
released,
`interval` will have no effect after this change.
2022-08-22 22:49:59 +08:00
Alex
fd24d7bcf6
Merge pull request #1660 from asas1asas200/master 2022-08-21 08:09:35 +02:00
asas1asas200
51670f0506 Fix typo 2022-08-21 12:35:33 +08:00
TheRealLorenz
4e930ba50a Add 'max-volume' option to pulseaudio. Fixes #1607 2022-08-20 22:21:57 +02:00
ViktarL
8839a86afe
Merge branch 'Alexays:master' into ISSUE#1545 2022-08-19 13:52:52 +00:00
kennypm
f4bfe777d9 oops 2022-08-18 20:56:26 -04:00
kennypm
59e57ab9a0 man page and adjust default format 2022-08-18 17:05:04 -04:00
Vaxry
f00f30a5ae
Merge pull request #5 from NotAShelf/hyprlandLanguage
Add man docs for Hyprland language module
2022-08-18 19:23:06 +02:00
NotAShelf
40bc2e96db
wording 2022-08-18 20:21:14 +03:00
NotAShelf
9ac9dc368e
Merge branch 'hyprlandLanguage' of https://github.com/vaxerski/Waybar into hyprlandLanguage 2022-08-18 20:16:42 +03:00
vaxerski
39c170bf10 remove one comment that I forgot to 2022-08-18 19:13:24 +02:00
NotAShelf
5fea01300c
Merge branch 'hyprlandLanguage' of github.com:NotAShelf/Waybar into hyprlandLanguage 2022-08-18 20:12:44 +03:00
NotAShelf
b181cd04b6
update man docs for format-<lang> option 2022-08-18 20:11:44 +03:00
NotAShelf
d786f9a0e6
Merge branch 'vaxerski:hyprlandLanguage' into hyprlandLanguage 2022-08-18 20:10:31 +03:00
NotAShelf
c5910ae19a
Merge branch 'hyprlandLanguage' of https://github.com/vaxerski/Waybar into hyprlandLanguage 2022-08-18 20:09:34 +03:00
vaxerski
ed6467e785 fix linter 2022-08-18 19:02:46 +02:00
vaxerski
43c3ca1d38 added the thing i was talking about 2022-08-18 18:59:34 +02:00
NotAShelf
97f0d6fa42
remove redundant formatting 2022-08-18 19:35:40 +03:00
NotAShelf
b8a68b8085
man documentation for hl language module 2022-08-18 19:32:26 +03:00
vaxerski
8881b9a6ef fix linter the most 2022-08-18 18:06:34 +02:00
vaxerski
e8942feefc fix linter more 2022-08-18 18:05:40 +02:00
vaxerski
a23d58e900 fix linter 2022-08-18 18:04:39 +02:00
vaxerski
16d5619f3b added a basic hyprland/language module 2022-08-18 18:00:27 +02:00
Alex
bcee4e15d3 fix: lint files 2022-08-18 15:22:25 +02:00
Alex
b7bd06ad8f
Update window.cpp 2022-08-18 15:21:50 +02:00
Alex
e50c246601
Merge pull request #1651 from TheRealLorenz/master
Feature: sway/window can show 'shell' parameter
2022-08-18 15:21:09 +02:00
Alex
ee504b826d
Update README.md 2022-08-18 15:16:28 +02:00
Alex
848ae1f818
Merge pull request #1656 from vaxerski/hyprland
Added a Hyprland backend and a Window module
2022-08-18 15:15:45 +02:00
Vaxry
406eb0ee9a
Merge pull request #4 from NotAShelf/hyprland
Init man documentation
2022-08-18 15:10:42 +02:00
NotAShelf
112d481ae7
Init man documentation 2022-08-18 15:59:00 +03:00
Vaxry
872cd6083d
Merge pull request #3 from vaxerski/revert-2-master
Revert "init man documentation"
2022-08-18 14:54:30 +02:00
Vaxry
8dc78e4e40
Revert "init man documentation" 2022-08-18 14:54:20 +02:00
Vaxry
e662b8c624
Merge pull request #2 from NotAShelf/master
init man documentation
2022-08-18 14:53:15 +02:00
NotAShelf
e0451816e2
init man documentation 2022-08-18 15:29:59 +03:00
vaxerski
e2e59a52df make the linter happy 2022-08-17 22:03:49 +02:00
vaxerski
123ed36739 remove workspaces module as its buggy and unnecessary 2022-08-17 21:58:33 +02:00
vaxerski
c64058c947 stabilize window module 2022-08-17 21:54:23 +02:00
kennypm
56d46e62c1 add samplerate callback since pipewire supports dynamic samplerate changes 2022-08-12 11:30:12 -04:00
kennypm
89a57f6722 simplify build option description 2022-08-11 18:35:33 -04:00
kennypm
4336f10b29 Merge branch 'dsp' of https://github.com/kennypm/Waybar into dsp 2022-08-11 17:26:45 -04:00
kennypm
a7979a3e56 add locks and refactor for clarity 2022-08-11 17:26:27 -04:00
kennypm
bfed2114e4 jack_client_close working properly now 2022-08-11 15:49:24 -04:00
Kenny Phelps-McKeown
f65a372855
Merge branch 'Alexays:master' into dsp 2022-08-11 07:46:20 +00:00
Lorenzo Bellina
6f3fe6d339
Update waybar-sway-window.5.scd 2022-08-11 08:41:10 +02:00
TheRealLorenz
c287b0c82b Update manpage for sway/window 2022-08-10 22:24:48 +02:00
TheRealLorenz
5b1cd65e20 Fix: better formatting 2022-08-10 10:41:18 +02:00
TheRealLorenz
99ed2bb7fa Feature: sway/window can show 'shell' parameter 2022-08-10 10:34:51 +02:00
kennypm
ddd5b4e157 refactor 2022-08-07 15:29:42 -04:00
Viktar Lukashonak
e9e5780aae
Calendar scrolling opportunity 2022-08-06 13:55:20 +03:00
Viktar Lukashonak
061ad13082
Bug: tripple click uses wrong event type 2022-08-06 13:52:00 +03:00
Alex
77bea7c182
Merge pull request #1631 from m-braunschweig/filename
mpd: add filename formatter
2022-08-04 10:05:14 +02:00
Alex
c2ab2e6d19
Merge pull request #1627 from datMaffin/master
sni: Use the pixmap if for the given icon name an icon could not be found
2022-08-04 10:04:48 +02:00
Mika Braunschweig
11239a4900
mpd: add filename formatter 2022-08-03 20:52:18 +02:00
Marvin Dostal
95b5348c24 sni: change missing icon in theme logging from info to trace 2022-08-03 17:34:34 +02:00
Kenny Phelps-McKeown
9616df58da
Merge branch 'Alexays:master' into dsp 2022-08-01 03:30:45 +00:00
Alex
7b115913de
Merge pull request #1638 from ErikReider/master 2022-07-31 21:27:05 +02:00
Erik Reider
4029c5423f
Added UPower to README 2022-07-31 10:56:42 +02:00
Alex
3996764880
Merge pull request #1637 from jbeich/ci 2022-07-30 09:09:26 +02:00
Jan Beich
60821257ac chore(ci): adjust FreeBSD to follow upstream recommendations
- use macos-12 as macos-10.15 will be removed on 2022-08-30
- use major version to transparently pick up updates
2022-07-29 20:05:24 +00:00
Faye Duxovni
e14005a6aa Fix binary pow formatting for values between 1000 and 1024 2022-07-21 16:37:43 -04:00
kennypm
15dbe8965e fix Linter error 2022-07-19 22:36:59 -04:00
kennypm
decc5bcd68 namespace cleanup 2022-07-19 22:34:35 -04:00
kennypm
92870cab2a namespace cleanup 2022-07-19 22:30:42 -04:00
kennypm
4cb2cc9f21 fix Linter errors 2022-07-19 21:54:36 -04:00
kennypm
02df861829 fix Linter errors 2022-07-19 21:53:32 -04:00
kennypm
23eaffc04b fix Linter errors 2022-07-19 21:49:56 -04:00
kennypm
714451e4f9 cleanup 2022-07-19 19:40:23 -04:00
kennypm
4cd6024f07 move issue from comment to Issues 2022-07-19 19:36:48 -04:00
kennypm
8b5f42d934 remove unnecessary libprocps dependency 2022-07-19 19:27:39 -04:00
kennypm
b65c976bc1 fix build type 2022-07-19 01:41:32 -04:00
kennypm
5e7c9378df update fork 2022-07-19 01:40:05 -04:00
kennypm
a9569e7d5c Merge branch 'dsp' of https://github.com/kennypm/Waybar into dsp 2022-07-19 01:39:19 -04:00
kennypm
318a6e0969 fix segfault when stopping JACK2 server 2022-07-19 01:38:56 -04:00
Kenny Phelps-McKeown
a1d046b2e7 Update README.md 2022-07-19 01:38:56 -04:00
kennypm
c7b09eea11 changed callbacks to use static_cast 2022-07-19 01:38:56 -04:00
kennypm
bc8517fd08 fix callbacks 2022-07-19 01:38:56 -04:00
kennypm
9439e4183c fix callbacks 2022-07-19 01:38:56 -04:00
Kenny Phelps-McKeown
8fc8bb40bf Initial commit for Waybar JACK monitoring module
-DSP load
  -xruns
  -connected/disconnected state
  -only tested with Pipewire so far but should work with JACK2 as well

 On branch dsp
 Changes to be committed:
	modified:   include/factory.hpp
	new file:   include/modules/jack.hpp
	modified:   meson.build
	modified:   meson_options.txt
	modified:   src/factory.cpp
	new file:   src/modules/jack.cpp
2022-07-19 01:38:35 -04:00
Alex
d906080f26
Merge pull request #1617 from alebastr/fmt-9
fix: adapt to fmt 9.0.0 breaking changes
2022-07-18 10:00:46 +02:00
Marvin Dostal
04d66de866 sni: remove unnecesary parameter 2022-07-17 22:20:24 +02:00
Marvin Dostal
699f732146 sni: Remove unnecessary getIconByName call 2022-07-17 22:15:14 +02:00
Marvin Dostal
f437bf96e3 sni: Prefer system icons over pixmap 2022-07-17 22:15:12 +02:00
Marvin Dostal
fc9a390977 sni: Use the given pixmap even if there is a name given 2022-07-17 22:14:57 +02:00
Alex
56a45e962b
Merge pull request #1628 from carlosV2/master 2022-07-17 18:15:23 +02:00
Carlos Ortega
48d2759df5 add layout as class to language module 2022-07-17 16:13:32 +01:00
Alex
1116ff0d67
Merge pull request #1624 from ersen0/fix-man
battery: fix wrong definition for "format"
2022-07-15 10:44:09 +02:00
Oğuz Ersen
0c04aea108
battery: fix wrong definition for "format" 2022-07-15 11:01:14 +03:00
Aleksei Bavshin
a44622aa9f
fix: fmt 9.x deprecation warning for implicit enum conversions 2022-07-13 22:36:37 -07:00
Aleksei Bavshin
3117aefdf3
fix: drop conditionals for ancient fmt versions 2022-07-13 22:36:33 -07:00
Aleksei Bavshin
24a8332b62
fix: adapt to fmt 9.0.0 breaking changes 2022-07-13 22:36:32 -07:00
Alex
84e7689521
Merge pull request #1621 from jbeich/ci 2022-07-14 07:33:06 +02:00
Jan Beich
0708573fa4 chore(ci): upgrade FreeBSD to 13.1
FreeBSD doesn't support /latest and /quarterly package repos on EOL
versions. 13.0 reaches EOL on 2022-08-31, so avoid CI breakage.
2022-07-13 21:26:45 +00:00
Alex
08d472d1b1
Merge pull request #1612 from LukashonakV/Gentoo_CI
New Gentoo CI
2022-07-12 16:24:10 +02:00
ViktarL
c35f91ed7a
Update linux.yml
New Gentoo CI container
2022-07-06 09:50:21 +00:00
ViktarL
9c3af1b6ad
Gentoo docker file 2022-07-06 09:47:24 +00:00
vaxerski
17b60bc737 minor changes 2022-07-01 15:35:25 +02:00
vaxerski
c1f92d2a3c added workspaces 2022-07-01 15:16:54 +02:00
vaxerski
72f478c195 added backend and hyprland/window 2022-07-01 12:46:28 +02:00
Alex
5128a5d9f3
Merge pull request #1599 from LukashonakV/ISSUE#1565
Last weekday applies Unix fmt
2022-06-27 10:18:12 +02:00
Viktar Lukashonak
36aa22189b
Last weekday applies Unix fmt 2022-06-24 16:44:06 +03:00
Alex
d10d9b8202
Merge pull request #1590 from qubidt/pulseaudio-fix
pulseaudio: avoid retaining outdated form factor
2022-06-15 09:15:50 +02:00
Bao Trinh
e57899c0c5
pulseaudio: avoid retaining outdated form factor
when the module fails to get the pulseaudio device form factor, the
module persists the existing value, resulting in the incorrect
format-icon being used to format the label on device changes.

reset the form factor value so that the icon lookup properly falls back
to "default" when missing
2022-06-14 13:57:03 -05:00
Alex
249c0aad73 fix: lint 2022-06-14 09:17:40 +02:00
Alex
18a4f87a59
Merge pull request #1588 from qubidt/custom-module-class
Retain instance name css class for custom modules
2022-06-14 09:15:42 +02:00
Bao Trinh
458c03bf95
retain instance name css class for custom modules
When adding a custom module with a name, e.g.:

```jsonc
{
  ...,
  "custom/foo#bar": { },
  ...
}
```

The custom module does not retain the `bar` class as it should, because
all the classes are replaced with the runtime output:

1b4a7b02f4/src/modules/custom.cpp (L141-L147)

Avoid removing the module instance name class so css class behavior is
consistent between all modules.
2022-06-13 16:10:41 -05:00
Alex
1b4a7b02f4
Merge pull request #1575 from cosandr/bandwidth-update
Add total bandwidth formatting options
2022-06-11 11:45:18 +02:00
Alex
fb2ac8a765
Merge pull request #1580 from tiosgz/river-mode-readme
README.md: add river/mode to feature list
2022-06-02 16:48:46 +02:00
tiosgz
13100326b0 README.md: add river/mode to feature list 2022-06-02 14:36:18 +00:00
Alex
ca0d35286d
Merge pull request #1579 from tiosgz/river-mode
river/mode: new module
2022-06-02 14:22:21 +02:00
tiosgz
f3a049c6df river/mode: new module
This module shows river's current mapping mode (e.g. normal, locked).
2022-06-01 15:35:08 +00:00
Alex
074b7c4b99
Merge pull request #1578 from NickHastings/readme-river
Advertise river modules
2022-06-01 10:18:03 +02:00
Nick Hastings
b24fd35add Advertise river modules 2022-06-01 09:10:26 +09:00
Alex
c27dab9379
Merge pull request #1576 from daangoossens22/fix_bluetooth 2022-05-28 15:28:20 +02:00
Daan Goossens
6857691679 style(bluetooth): apply project style 2022-05-28 12:58:37 +02:00
Daan Goossens
a475be7cf7 feat(bluetooth): add format-icons 2022-05-28 12:35:33 +02:00
Daan Goossens
00c11c64ca fix(bluetooth): tooltip-format-connected-battery 2022-05-28 12:33:47 +02:00
Andrei Costescu
4e2305639b
Add option for displaying total bandwidth 2022-05-28 10:54:10 +02:00
Andrei Costescu
e0f29dbf71
Add bandwidth in bytes to 5 waybar-network 2022-05-28 10:39:43 +02:00
Alex
36d3d511d6
Merge pull request #1571 from daangoossens22/position_bar
fix: vertical bar not anchored when width is set
2022-05-25 16:42:20 +02:00
Daan Goossens
ae9fb57790 fix: vertical bar not anchored when width is set 2022-05-25 16:09:21 +02:00
Alex
b8ee448e71
Merge pull request #1567 from jbeich/freebsd 2022-05-23 20:47:45 +02:00
Jan Beich
632058a4f6 chore(ci): test upower module on freebsd 2022-05-23 16:33:48 +00:00
Jan Beich
d25278f710 fix(upower): add missing include for libc++
In file included from src/modules/upower/upower.cpp:1:
include/modules/upower/upower.hpp:25:16: error: no template named 'unordered_map' in namespace 'std'
  typedef std::unordered_map<std::string, UpDevice *> Devices;
          ~~~~~^
In file included from src/modules/upower/upower_tooltip.cpp:1:
include/modules/upower/upower_tooltip.hpp:13:16: error: no template named 'unordered_map' in namespace 'std'
  typedef std::unordered_map<std::string, UpDevice*> Devices;
          ~~~~~^
2022-05-23 16:27:32 +00:00
Alex
2dfd64e1c9
Merge pull request #1566 from ErikReider/master
Added gamemode man file to meson
2022-05-23 14:43:58 +02:00
Erik Reider
3c182c9ca9 Added gamemode man file to meson 2022-05-23 14:13:30 +02:00
Alex
aa5f55bbe3 chore: v0.9.13 2022-05-23 13:54:24 +02:00
Alex
7ab9a560ae fix: lint 2022-05-23 13:47:14 +02:00
Alex
a5299af3c2
Merge pull request #1562 from trevnels/river-window
River Window Module
2022-05-23 13:43:28 +02:00
Alex
4d1aeb7eb8
Merge pull request #1525 from FlexW/feature/icon-heuristics
sway/window: Add heuristics for finding icons
2022-05-23 13:42:26 +02:00
Alex
38a846ae51
Merge pull request #1555 from LukashonakV/ISSUE#1552
Calendar module: localization issue #1552
2022-05-23 13:40:48 +02:00
Alex
03bbc9df64
Merge pull request #1554 from ErikReider/gamemode-module
Gamemode Module
2022-05-23 13:40:09 +02:00
Alex
1e4fe0bee8
Merge pull request #1557 from LukashonakV/ISSUE#1556
Issue#1556. Battery module: a lot of warnings when battery dissapears
2022-05-23 13:39:23 +02:00
Alex
5e2067d51f
Merge pull request #1563 from groknull/crash-on-empty-cpuvec
Prevent segfault in getCpuFrequency
2022-05-23 13:38:53 +02:00
Erik Reider
7ea0a2348b Man page example now uses default values 2022-05-21 12:08:05 +02:00
Erik Reider
fd306e184a Added man page 2022-05-21 12:06:45 +02:00
Erik Reider
f4f2989e85 Added tooltip-format 2022-05-21 12:02:45 +02:00
Erik Reider
8d4c7176f8 Renamed not-running-bide to hide-not-running 2022-05-21 12:02:35 +02:00
Ed Ralston
7abcbe80e5
Prevent segfault in getCpuFrequency
When parseCpuFrequencies returns an empty vector, getCpuFrequency
would attempt to dereference an invalid iterator.

Return early from getCpuFrequency when parseCpuFrequencies returns an
empty vector.

Resolves a segfault when waybar is run within a VM on apple silicon.
2022-05-19 20:01:57 -04:00
trevnels
165c5a861d manpage fixes 2022-05-19 16:41:05 -04:00
trevnels
d84c0f13e6 forgot to commit meson build 2022-05-19 16:33:50 -04:00
trevnels
01ffe2c290 add inherited ALabel options to river window manpage 2022-05-19 15:53:25 -04:00
trevnels
b900c01381 add manpage and make format option work 2022-05-19 15:32:10 -04:00
trevnels
e2b676b800 add river/window module 2022-05-19 15:20:04 -04:00
Viktar Lukashonak
7f995507fe
std::filesystem::path is a string representation 2022-05-14 17:10:44 +03:00
Viktar Lukashonak
b39a8ede6c
Issue#1556. Battery module: wrong string comparison
1. battery.hpp - added local bool variable. Force to print warnings the
only once in order to warn user about wrong battery configuraion. And
does not bring a mess when the battery is turned off (gamepads, etc.)
2. dir_name is an object which takes a part in comparison. So converted to the string.
2022-05-14 16:56:46 +03:00
Viktar Lukashonak
315ea991bc
Calendar module: localization issue #1552 Linter #60 2022-05-13 23:56:08 +03:00
Viktar Lukashonak
bd0f6128d3
Revert "Waybar. Issue#1552. Calendar module, LC_TIME variable"
This reverts commit 7b7ee41e13372fbbbb0fb5ab49cb95cbfd02577c.
2022-05-13 22:58:38 +03:00
Viktar Lukashonak
5a014305ec
Revert "Issue#1552. Calendar module, LC_TIME variable"
This reverts commit 448b413eca7022be7580e28719ded6e0ee147694.
2022-05-13 22:58:00 +03:00
Erik Reider
3411236697 Initial implementation 2022-05-13 21:30:45 +02:00
Viktar Lukashonak
e615612bf4
Calendar module: localization issue #1552 2022-05-13 18:51:32 +03:00
Viktar Lukashonak
448b413eca
Issue#1552. Calendar module, LC_TIME variable 2022-05-13 12:54:18 +03:00
Viktar Lukashonak
7b7ee41e13
Waybar. Issue#1552. Calendar module, LC_TIME variable 2022-05-12 19:04:45 +03:00
Alex
9bc821bdac
Merge pull request #1551 from loserMcloser/keyboard-state-css-classes
Add classes to individual keyboard state labels
2022-05-12 13:55:32 +02:00
loserMcloser
bfcb936d87 Add classes to individual keyboard state labels 2022-05-11 08:08:28 -06:00
Alex
3d023a0421
Merge pull request #1540 from daangoossens22/bluetooth
feat: extend bluetooth module
2022-05-11 09:26:38 +02:00
Daan Goossens
e235f48245 feat: hide module if empty 2022-05-07 13:42:27 +02:00
Daan Goossens
3043d42a89 style: apply projects clang-format 2022-05-06 17:01:43 +02:00
Daan Goossens
733fb8c62a docs: update + add experimental section 2022-05-06 16:43:53 +02:00
Daan Goossens
954bed3f5e refactor: adapter renamed to controller
Since it is also called controller in bluetoothctl
2022-05-06 16:37:48 +02:00
Daan Goossens
13df878bc3 refactor: logic for enumerating devices in tooltip 2022-05-06 16:37:40 +02:00
Alex
4592dd4a6c
Merge pull request #1527 from siikamiika/network-current-iface-bandwidth
network: calculate bandwidth for current interface
2022-05-05 09:44:44 +02:00
Daan Goossens
794610a1ca feat: display all connected devices in tooltip 2022-05-04 19:27:39 +02:00
Alex
7bbf7c99a3 fix: lint 2022-05-04 17:29:08 +02:00
Alex
eec0a8255f
Merge pull request #1454 from Psykar/idle_inhibitor_timeout
Add a config to set a timeout for the idle_inhibitor module
2022-05-04 17:27:21 +02:00
Daan Goossens
638b4e6573 feat: extend bluetooth module 2022-05-02 18:11:21 +02:00
Alex
caee2e611f
Merge pull request #1530 from qubidt/backlight-fix
Backlight: avoid crash on getting brightness fails
2022-04-22 09:17:54 +02:00
Bao Trinh
96746142d2
Backlight: don't reset value when failing to read
Avoids the brightness percentage resetting to 0 on intermittent failures
2022-04-21 22:19:05 -05:00
Bao Trinh
1af7191740
Backlight: avoid crash on getting brightness fails
Reading brightness value for backlight device can fail intermittently
(particularly when using ddcci-driver-linux). Handle this more
gracefully rather than crashing
2022-04-21 22:02:45 -05:00
Alex
89be55b00b
Merge pull request #1510 from towoe/sway-bar-show
Show hidden bar
2022-04-20 05:13:53 +02:00
Alex
23369aa14c
Merge pull request #1500 from RobertMueller2/clock-thread-sleep
Replace sleep_until with sleep_for to prevent clock from getting stuck with system time adjustment
2022-04-20 05:11:49 +02:00
Alex
a16e54573e
Merge pull request #1524 from berbiche/fix/gtk-layer-shell-anchors
bar: don't set layer-shell anchor for edges when width is not 'auto'
2022-04-20 05:09:36 +02:00
siikamiika
7231c47244 network: calculate bandwidth for current interface 2022-04-18 13:56:30 +03:00
Alex
6184e43c84
Merge pull request #1523 from FlexW/feature/icon-size
sway/window: Allow the user to change the size of the app icon
2022-04-18 08:59:36 +02:00
Felix Weilbach
3f123d9c4e sway/window: Add heuristics for finding icons
This adds heuristics for finding the applications icon.
2022-04-18 03:09:25 +02:00
Nicolas Berbiche
6851e26450
bar: don't set layer-shell anchor for edges
Don't set the anchor for certain edges when the width or the height
is not set to a value of 'auto' (1).

When the bar is vertical, the top and bottom edges are not anchored
otherwise the left and right edges are not anchored.

This resolves an issue wherein the width and height set for the
layer-shell were ignored because the layer was set to anchor to all
edges.
2022-04-17 18:19:36 -04:00
Felix Weilbach
fc6f5741b1 sway/window: Allow the user to change the size of the app icon
Fixes #1461
2022-04-17 23:57:57 +02:00
Alex
264e2c3983
Merge pull request #1522 from FlexW/bugfix/app-icon 2022-04-17 23:32:59 +02:00
Felix Weilbach
45988b3dbb Sway/window: Only update icon from main thread
If Gtk objects get updated from other threads than the main thread GTK
can get confused. This is a regression of bcadf64031ee0520212aa8f092f5ac14122cd924.

Fixes #1464, #1474
2022-04-17 22:55:58 +02:00
Rene D. Obermueller
4e3f91d237 Issue 1226/1497: align updates with times divisible by interval 2022-04-16 14:21:28 +02:00
Rene D. Obermueller
e5d05baba3 Issue 1226/1497: Replace sleep_until with sleep_for to prevent clock from getting stuck with system time adjustment 2022-04-16 14:21:28 +02:00
Tobias Wölfel
7763d50691 Add reset behaviour of modifier key
Add an option to change the behaviour of the modifier key to reset the
visibility.
2022-04-15 20:04:58 +02:00
Tobias Wölfel
5a0e42cc76 Limit visibility updates
Prevent visibility updates to occur for inactive modules.
Check active modules and subscribe to only those events.
2022-04-15 20:04:56 +02:00
Tobias Wölfel
1dcd36b06c Show bar on sway mode
Display the bar if the sway mode is not the default mode.
2022-04-15 19:58:50 +02:00
Tobias Wölfel
93f9b3d213 Clear urgency hint with modifier press
If the modifier is pressed and release without another event, the
intended behaviour is to clear an urgency hint and hide the bar again.

Note that if multiple workspaces have the urgency hint set, the bar is
hidden again and an urgent workspace is focused, the bar does not stay
hidden anymore.
2022-04-15 19:55:06 +02:00
Alex
54b1df69a9 fix: lint clock 2022-04-15 14:39:13 +02:00
Alex
73cd156a7a
Merge pull request #1492 from LukashonakV/master
#1315. Add option to display week number on calendar
2022-04-15 14:37:46 +02:00
Tobias Wölfel
e3700b924e Show bar if a workspace becomes urgent
Add a second reason to show the bar besides visible by modifier.
Update the visibility based on changes in the workspace urgency.
Check all workspaces for urgency and keep the bar visible if at least
one has an urgency hint.
2022-04-14 19:08:11 +02:00
Alex
d87cf8a8f2
Merge pull request #1518 from towoe/bluetooth-format
Add disabled bluetooth style
2022-04-12 10:35:54 +02:00
Tobias Wölfel
e8b022c096 Add disabled bluetooth style
Allow to set a different style if the bluetooth adapter is disabled.
2022-04-12 10:31:20 +02:00
Alex
503fe9a7ea
Merge pull request #1516 from alebastr/ipc-enum-type
refactor: change `enum ipc_command_type` to uint32_t
2022-04-11 08:49:43 +02:00
Alex
b812596080
Update lint.yml 2022-04-11 08:49:20 +02:00
Aleksei Bavshin
13fdbc13c3
refactor: change enum ipc_command_type to uint32_t
As we always use the enum to compare or initialize uint32_t values, it
would be better to declare it with the right type. This way we could
avoid `-Wnarrowing` warnings or unnecessary type casts.
2022-04-10 12:52:46 -07:00
Louis des Landes
1071b9f7c5 Add a config to set a timeout for the idle_inhibitor module 2022-04-10 22:47:52 +09:30
LukashonakV
6ad1f6b853
Merge branch 'master' into master 2022-04-10 09:54:50 +00:00
Alex
a1129c4c87 fix: bsd 2022-04-06 14:55:08 +02:00
Alex
2e12ea6a81 fix: add missing include 2022-04-06 08:43:31 +02:00
Alex
f2fcadbf62 refactor: lint 2022-04-06 08:37:19 +02:00
Alex
168ba2ca5b
Create lint.yml 2022-04-06 08:27:52 +02:00
LukashonakV
46f07d24dd
Merge branch 'master' into master 2022-04-05 15:28:55 +00:00
Alex
ed3e2ffdc3
Merge pull request #1499 from LukashonakV/ISSUE#1068
Waybar. Issue#1068. Double/Triple events
2022-04-05 16:40:52 +02:00
Alex
d5b76bd8b5
Merge pull request #1495 from 0cc4m/master
Battery module support for rk817
2022-04-05 16:39:08 +02:00
Alex
1d03034fbb
Merge pull request #1493 from ErikReider/upower-fixes
Upower fixes
2022-04-05 16:37:36 +02:00
vaxerski
e094480684 Very basic hypr window title module 2022-04-02 21:08:43 +02:00
Viktar Lukashonak
f4cc088d2f
Waybar. Issue#1068. Double/Triple events. Removed unnecessary including 2022-03-29 13:47:38 +03:00
Viktar Lukashonak
b086e2f995
Waybar. Issue#1068. Double/Triple events 2022-03-29 12:26:05 +03:00
Viktar Lukashonak
4a457648f9
Waybar. Clock module. Calendar - custom output formats 2022-03-27 11:15:56 +03:00
0cc4m
3a95f8f599 Add battery module fallback for batteries without capacity or with _avg instead of _cur files 2022-03-26 19:42:06 +01:00
Erik Reider
a7ed1ed570 Don't call dp.emit() when UPower service active status changes 2022-03-25 17:35:37 +01:00
Erik Reider
e0f0931e2d Hide module if UPower service isn't running 2022-03-25 17:27:36 +01:00
Erik Reider
0140606226 Fixed segfault on upower service restart 2022-03-25 16:57:25 +01:00
Viktar Lukashonak
1d2a381b5f
Waybar. Clock module - weeknum fix for the left side 2022-03-25 18:51:59 +03:00
Erik Reider
d1d73b5003 Added missing "fulL" and "empty" CSS classes 2022-03-25 14:57:04 +01:00
Erik Reider
9dc09d2702 Added upower man page into man_files meson variable 2022-03-25 14:53:46 +01:00
Erik Reider
2ca4dcac49 Set box widget name to "upower" 2022-03-25 14:52:12 +01:00
Viktar Lukashonak
2d87bcb1ab
https://github.com/Alexays/Waybar/issues/1315. Option to display week number on calendar 2022-03-24 15:41:50 +03:00
Alex
d4a07483b2
Merge pull request #1484 from ErikReider/upower-module
Upower module
2022-03-22 10:00:28 +01:00
Erik Reider
84dc82e1c1 Added tooltip-padding 2022-03-21 13:50:46 +01:00
Erik Reider
e06316c80b Only set label text if string doesn't only contain spaces 2022-03-20 00:36:53 +01:00
Erik Reider
7b071567ea Removed goto in update method 2022-03-20 00:36:13 +01:00
Erik Reider
2633ff3fb9 Fixed time_left string not being set properly 2022-03-19 23:10:15 +01:00
Erik Reider
0764e9ad6e Added format and format-alt config properties 2022-03-19 21:15:48 +01:00
Erik Reider
c4282cfacc Made tooltip getDeviceIcon return const string 2022-03-19 19:22:21 +01:00
Erik Reider
05effad18b Added CSS status classes 2022-03-19 19:22:00 +01:00
Erik Reider
5f19a54deb Added man page 2022-03-19 17:25:43 +01:00
Erik Reider
7fac2afb85 Added custom tooltip with device icon, device name and battery status 2022-03-19 17:09:55 +01:00
Erik Reider
4196e0d5d1 Unref all devices on destruct 2022-03-19 11:35:13 +01:00
Erik Reider
14a2a7027f Moved upower into its own directory 2022-03-19 11:34:34 +01:00
Erik Reider
2b2ac311d5 Fixed not visible when only battery is plugged in 2022-03-19 11:19:39 +01:00
Erik Reider
d7a030daf3 Lowered default icon size to 20 2022-03-19 11:19:08 +01:00
Erik Reider
7345918f84 Added mutex locking to resetDevices 2022-03-19 11:18:51 +01:00
Erik Reider
105f1cefe1 Fixed device unrefed 2022-03-19 10:52:05 +01:00
Erik Reider
175d82858b Merge branch 'upower-module' of github.com:ErikReider/Waybar into upower-module 2022-03-19 10:48:43 +01:00
Erik Reider
c8d785071f
Merge branch 'master' into upower-module 2022-03-19 10:48:02 +01:00
Alex
8c6063d181
Merge pull request #1485 from LukashonakV/master
Hide/Unhide temperature module when "format*" is empty.
2022-03-19 10:24:59 +01:00
Alex
799125fb73
Merge pull request #1489 from momokrono/master
feat: added network speed in Bytes
2022-03-19 10:24:26 +01:00
momokrono
fcf93a6c45 feat: added network speed in Bytes 2022-03-18 10:35:19 +01:00
Viktar Lukashonak
6946288053
PR #1485 review 2022-03-17 11:31:06 +03:00
Erik Reider
2a563f54e7 Change name to upower 2022-03-16 15:33:39 +01:00
Viktar Lukashonak
9f337db2d2
Hide/Unhide module when "format*" is empty. 2022-03-16 15:50:00 +03:00
Erik Reider
136b47ce0d Fixed percentage not getting rounded 2022-03-15 23:03:13 +01:00
Erik Reider
6eb187a23e Moved upower.*pp out of the upower directories 2022-03-15 23:00:09 +01:00
Erik Reider
9b9e42fc5f use device variable instead of getting the device from the map 2022-03-15 22:50:11 +01:00
Erik Reider
d47073ef13 Reload all devices after wake from suspend 2022-03-15 22:49:40 +01:00
Erik Reider
5396ffb71f Added "icon-size" and "hide-if-empty" config options 2022-03-15 20:22:32 +01:00
Erik Reider
5e9faeb2d0 Now shows the percentage and the correct icon 2022-03-15 20:22:04 +01:00
Erik Reider
4ee81c8dea Added all callbacks 2022-03-15 17:54:06 +01:00
Alex
a37ef74fb1
Merge pull request #1479 from dorgnarg/master
Use user-defined mode when toggling visibility rather than resetting to default
2022-03-15 09:06:08 +01:00
Alex
07034d561c
Merge pull request #1481 from LukashonakV/master
Battery module. Gamepads support
2022-03-14 17:42:26 +01:00
Viktar Lukashonak
37d87be3c1
Add supporting of the gamepads batteries 2022-03-14 17:53:19 +03:00
Viktar Lukashonak
8aee7492d4
Plug/Unplug batteries on hot(useful for gamepads) 2022-03-14 17:12:05 +03:00
Alex
5c1c07a035
Merge pull request #1480 from avdv/xkb-load-exotic-rules
sway/language: Load exotic xkb rules too
2022-03-13 22:32:00 +01:00
Claudio Bley
caa24f0647 sway/language: Load exotic xkb rules too 2022-03-13 09:40:32 +01:00
Daniel Moore
f4c6dfcddc Uses user-defined mode when toggling visibility rather than resetting to default mode 2022-03-12 13:32:08 -07:00
Alex
2b3fc3acff
Merge pull request #1478 from Artturin/moonemoji 2022-03-12 16:03:50 +01:00
Artturin
25536f70a4 use moon phases for backlight format-icons 2022-03-12 16:05:06 +02:00
Alex
74ca1a42c6
Merge pull request #1476 from Psykar/fix-bsd-action
Fix freebsd action
2022-03-10 15:00:32 +01:00
Louis des Landes
8b6bc215cc
Fix freebsd action 2022-03-10 14:48:40 +01:00
Alex
3c1ba0a240 chore: v0.9.12 2022-03-10 09:53:25 +01:00
Alex
6c7acf18b5
Update network.cpp 2022-03-10 09:53:02 +01:00
Alex
ead1b2f0dc
Merge pull request #1467 from Pound-Hash/docs
Edited README
2022-03-10 09:51:12 +01:00
Alex
115c6e36e6 chore: v0.9.11 2022-03-10 09:50:04 +01:00
Alex
210f4454f0
Update waybar-sway-window.5.scd 2022-03-10 09:49:14 +01:00
Alex
77d8376fef
refactor: disable icon by default 2022-03-10 09:48:50 +01:00
Pound_Hash
0e580236ce Fixed English mechanics: grammar, punctuation, and styling. 2022-03-08 15:52:20 -08:00
Alex
1aa7587cac
Merge pull request #1333 from dartkron/list_of_times
Feature Clock: show list of time in other timezones in a tooltip
2022-03-08 10:00:04 +01:00
Alex
b6655e475b
Merge branch 'master' into list_of_times 2022-03-08 09:59:22 +01:00
Alex
903fc2b6a2
Merge pull request #1459 from grmat/master
man: document icon in sway/window module
2022-03-07 15:17:35 +01:00
Matthias Groß
50fc63b749 man: document icon in sway/window module
Default changed in bcadf64031ee0520212aa8f092f5ac14122cd924 and it
wasn't documented.
2022-03-07 14:56:37 +01:00
Alex
383d999fec chore: v0.9.10 2022-03-06 14:54:48 +01:00
Alex
56ebb09e5f
Merge pull request #1440 from TheDaemoness/patch-1
Add 1 to songPosition in the MPD module
2022-03-06 14:51:20 +01:00
Alex
35d6da3965
Merge pull request #1292 from FlexW/feature/sway-app-icon
Show application icon when using sway window module
2022-03-06 14:50:41 +01:00
Alex
be1d2a02ca
Merge pull request #1422 from technic/fixes
minor string utils methods refactoring
2022-03-06 14:50:02 +01:00
Alex
5e7ba0c9e3
Merge pull request #1445 from GrantMoyer/keyboard_state_errors
Improve keyboard_state error messages
2022-03-06 14:49:38 +01:00
Grant Moyer
18717d4b12 Merge remote-tracking branch 'upstream/master' into keyboard_state_errors 2022-03-04 12:14:23 -05:00
Alex
4dc1989744
Merge pull request #1451 from euclio/use-after-free 2022-03-04 06:10:25 +01:00
Andy Russell
54085dbde0
avoid use-after-free in lambda 2022-03-03 19:40:43 -05:00
Alex
4635e8c5f8
Merge pull request #1450 from Xiretza/style-css-use-fontawesome 2022-03-03 18:38:05 +01:00
Xiretza
adc67b6f75 style.css: add fontawesome to beginning of font list
If there is some other font installed that 1) matches the four existing
font families and 2) provides its own glyph in the private use area used
by Awesome, then that font's glyph will be used instead of the intended
icon.

For example, the following character (U+F001, "music"): 
...looks like a pair of musical notes in fontawesome, but DejaVu Sans
also provides a glyph, which looks like a couple of squares. DejaVu Sans
matches first when "sans-serif" is requested, so its (unrelated) glyph
is used.
2022-03-03 18:18:21 +01:00
Grant Moyer
ebe4424795 Fix remaining posix compatability issues in keyboard_state 2022-02-25 13:28:47 -05:00
Grant Moyer
e3f56b8110 Don't use gnu extensions which are too new for debian and ubuntu 2022-02-25 13:13:43 -05:00
Grant Moyer
8f3fbebede Make error messages portable 2022-02-25 12:56:22 -05:00
Grant Moyer
a595b61e0f Improve keyboard_state error messages 2022-02-25 12:27:08 -05:00
kennypm
ccce2b700b fix segfault when stopping JACK2 server 2022-02-24 02:46:45 -05:00
Alex
91339f6ad4
Merge pull request #1444 from bd-g/feat/cpu-load-fix
CPU Load Formatting Fix
2022-02-23 09:12:53 +01:00
Jake Stanger
41dea6e46c
Merge branch 'master' into feat/image-module 2022-02-22 23:40:59 +00:00
Brent George
3c18c43b9a limit cpu load figure to 2 points 2022-02-22 16:33:33 -07:00
TheDaemoness
ac20428fdf
Add 1 to songPosition in the MPD module 2022-02-18 17:41:33 -08:00
kennypm
65c3f0a132 Merge branch 'dsp' of https://github.com/kennypm/Waybar into dsp 2022-02-18 02:14:51 -05:00
kennypm
e6262b870c changed callbacks to use static_cast 2022-02-18 02:13:43 -05:00
Alex
ad5ea7ad2b
Merge pull request #1436 from jbeich/ci 2022-02-13 18:13:42 +01:00
Jan Beich
851508df5e ci: explicitly install wayland-protocols on FreeBSD
meson.build:86:0: ERROR: Dependency "wayland-protocols" not found, tried pkgconfig
2022-02-13 11:14:35 +00:00
Jan Beich
fc818dd794 ci: update freebsd-vm to 0.1.6 2022-02-13 11:12:52 +00:00
Kenny Phelps-McKeown
823ed887ab
Update README.md 2022-02-12 05:53:32 -05:00
kennypm
3bf815f6de fix callbacks 2022-02-12 01:52:51 -05:00
kennypm
c1cda1553a fix callbacks 2022-02-12 01:51:11 -05:00
kennypm
f6ee90e5ba Merge branch 'dsp' of https://github.com/kennypm/Waybar into dsp 2022-02-12 01:49:14 -05:00
Alex
e066e3080e
Merge pull request #1432 from DorianRudolph/fix-unplug
fix #1431: audio output does not update on unplug
2022-02-09 15:29:36 +01:00
Dorian Rudolph
1a93a6cfa5 fix #1431: audio output does not update on unplug 2022-02-09 14:20:09 +01:00
Kenny Phelps-McKeown
d5c400c0cc Initial commit for Waybar JACK monitoring module
-DSP load
  -xruns
  -connected/disconnected state
  -only tested with Pipewire so far but should work with JACK2 as well

 On branch dsp
 Changes to be committed:
	modified:   include/factory.hpp
	new file:   include/modules/jack.hpp
	modified:   meson.build
	modified:   meson_options.txt
	modified:   src/factory.cpp
	new file:   src/modules/jack.cpp
2022-02-09 02:53:52 -05:00
Alex
074b559da5
Merge pull request #1423 from technic/fmt-refactor
move Glib ustring format helper to utils
2022-02-08 18:25:55 +01:00
Alex
7a61a00fb3
Merge pull request #1421 from gemmelos/patch-2
Update man page clock module - tooltip
2022-02-08 18:25:13 +01:00
Alex Maystrenko
d4da04a750 move Glib ustring format helper to utils
this formatter is useful for other modules
which want to print Glib exceptions messages
2022-02-05 21:26:48 +01:00
Alex Maystrenko
f3819ee954 remove duplicated string manipulation methods 2022-02-05 21:02:58 +01:00
Alex Maystrenko
2697d432a4 ltrim and rtrim take argument by const-ref 2022-02-05 21:02:58 +01:00
Alex Maystrenko
061cb76fc4 make functions in header file inline
added header guard
now string utils can be used in any part of the project
2022-02-05 21:02:58 +01:00
gemmelos
6c188455a4
Update man page clock module - tooltip
Add tooltip documentation to the clock man page now that this is works.
2022-02-05 19:05:50 +01:00
Alex
12caae8fd2
Merge pull request #1410 from ErikReider/reverse-tray
Reverse the tray icon order
2022-02-02 12:56:25 +01:00
Alex
26ea6fae32
Merge pull request #1413 from snehrbass/patch-1
Fix typo in example for sway/mode man page
2022-02-02 12:55:34 +01:00
Alex
26419e45b7
Merge pull request #1418 from gemmelos/patch-1
Fix disabled tooltip on clock module
2022-02-02 12:55:10 +01:00
gemmelos
6be741afc9
Fix disabled tooltip on clock module
Seems like the tooltip text should only be set if both `if (tooltipEnabled())` and `if (config_["tooltip-format"].isString())` passes.
2022-02-02 12:41:06 +01:00
snehrbass
c80cc873af
Update spotify example to work on copy paste 2022-02-02 00:01:18 -05:00
Alex
2b42872b6c
Merge pull request #1417 from evyatark2/master 2022-02-01 22:00:29 +01:00
Evyatar Stalinsky
895bc878f8 Properly initialize distance_scrolled members.
When they were uninitialized it caused getScrollDir() to incorrectly return SCROLL_DIR::NONE in some circumstances
2022-02-01 22:42:03 +02:00
snehrbass
a0ee9e7fc1
Fix Typo in Example for sway/mode 2022-01-29 14:19:53 -05:00
Erik Reider
941cf47693 Add config option "reverse-direction" 2022-01-28 19:14:46 +01:00
Erik Reider
32d42749f9 use pack_end instead of pack_start 2022-01-28 18:42:52 +01:00
Alex
96caa9f094
Merge pull request #1406 from Spiffyk/language-segfault
sway/language: fix segmentation fault for layouts not found in XKBContext
2022-01-25 23:08:32 +01:00
Oto Šťáva
f4f1267a71 sway/language: fix segmentation fault for layouts not found in XKBContext 2022-01-25 20:03:19 +01:00
Felix Weilbach
bcadf64031 Show application icon when using sway window module
Signed-off-by: Felix Weilbach <felix.weilbach@t-online.de>
2022-01-24 17:37:51 +01:00
Alex
8974bbf7b4
Merge pull request #1312 from mazunki/master
Changed a setting to include {gwaddr} by default
2022-01-24 09:23:43 +01:00
Alex
1c08d26af0
Merge branch 'master' into master 2022-01-24 09:23:23 +01:00
Alex
c4cc7ae396
Update client.cpp 2022-01-24 09:22:47 +01:00
Alex
65dd245362
Update clock.cpp 2022-01-24 09:21:56 +01:00
Alex
667d0a45f4
Update command.hpp 2022-01-24 09:20:43 +01:00
Alex
53fc750fc3
Merge pull request #1404 from kevinoid/fix-issue-1139 2022-01-24 09:02:53 +01:00
Kevin Locke
27df7a9aa7 battery: read status with spaces
According to the [sysfs class power ABI],
/sys/class/power_supply/<supply_name>/status may contain "Not charging".
This is already handled by status_gt() and update() (where ' ' is
converted to '-' for use in config keys) but was not being read due to
skipws.  Read with std::getline() to handle this case.

[sysfs class power ABI]: https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-power

Fixes: #1139
Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
2022-01-23 18:36:59 -07:00
Alex
d575646c2d
Merge pull request #1394 from nullobsi/patch-1
fix: Use locale when formatting clock
2022-01-18 11:35:55 +01:00
Jake Stanger
a650c7d90c feat: image module
Module which renders an image onto the bar.
2022-01-16 23:55:13 +00:00
nullobsi
3a6e5be59d
Use locale when formatting clock 2022-01-14 10:36:24 -08:00
Alex
81f0bcb3a3
Merge pull request #1388 from ericonr/man2
fix(man): add missing newlines to wlr docs.
2022-01-12 11:09:09 +01:00
Alex
9ae99c2621
Merge pull request #1386 from Anakael/pr/anakael/add-swap-flags
[Memory] feat: Add swap flags
2022-01-12 11:08:50 +01:00
Érico Nogueira
5abdecc402 fix(man): add missing newlines to wlr docs. 2022-01-11 17:29:17 -03:00
Alex
1540797cd9 chore: v0.9.9 2022-01-10 09:58:29 +01:00
Alex
5d8bc35476
Merge pull request #1385 from mvdan/css-checkboxes
resources: don't break tray icon checkboxes via CSS
2022-01-09 13:25:31 +01:00
Daniel Martí
5c574975b7 resources: don't break tray icon checkboxes via CSS
These three lines break checkboxes and other forms of UI in status
indicator dropdowns. For instance, they break checkboxes on
NetworkManager's "nm-applet --indicator" via libappindicator-gtk3.

First, disabling borders completely hides those UI elements,
as they seem to render entirely via borders.
Second, min-height makes checkboxes just flat lines.

When removed entirely, the border settings seem to have had an effect on
the workspaces widget, which now renders with round underline borders.
To undo that, re-add those two lines inside its section.

The min-height setting doesn't seem to affect anything that I can see.
Remove it entirely, for now.

Fixes #1148.
2022-01-09 10:32:16 +00:00
Alex
18cbd2aa1a
Merge pull request #1380 from alebastr/fmt-build-fix
Fix build with fmt 8.1.0
2022-01-08 13:48:41 +01:00
Aleksei Bavshin
ce404199de
chore: add tzdata to the alpine builder
Fixes date formatting test execution on alpine.
2022-01-07 22:50:23 -08:00
Aleksei Bavshin
7f6bef2049
fix(util): make waybar_time formatter compatible with fmt 8.1.0
Stop using private implementation details of the `formatter<std::tm>`.
We never needed anything from the class besides the format specifier,
which is easily obtainable with public API.
2022-01-07 22:34:00 -08:00
Aleksei Bavshin
1489a539f8
chore: bump supported fmt ver to 7.0.0
Certain features we use were added only in 7.0 and the code no longer
compiles with any earlier versions.
2022-01-07 22:33:52 -08:00
Aleksei Bavshin
766c8a1035
test: add tests for waybar_time formatter 2022-01-07 22:33:50 -08:00
Aleksei Bavshin
8c41aaae04
refactor(test): use single executable 2022-01-07 19:21:51 -08:00
Aleksei Bavshin
c0d84853ea
refactor(clock): extract waybar_time to util/waybar_time.hpp 2022-01-07 18:09:44 -08:00
mazunki
2301788a81 created a hotfix for libfmt-8.1.0 and above 2022-01-08 01:44:46 +01:00
mazunki
d22d6a4522 Merge branch 'master' of github.com:Alexays/Waybar 2022-01-08 01:02:57 +01:00
Alex
d9b5c2595a
Merge pull request #1376 from languitar/bugfix/sway-workspace-sorting
fix: match sway workspace order with sway one
2022-01-07 10:30:19 +01:00
Johannes Wienke
4a85ec0f59 fix: match sway workspace order with sway one
Ensure that sway workspaces are always displayed in the same order as
used internally by sway. The previous sorting code always sorted
unnumbered workspaces lexicographically. This isn't the order used by
sway internally. Therefore, commands such as "workspace next" might have
jumped arbitrarily in waybar.

This commit reworks the sorting code such that the internal order is
always obeyed. Additionally, numbered persistent workspaces are inserted
at their natural position at the front of the workspace list while
unnumbered ones are appended. This should match the expectations of
workspace ordering known from sway's behavior.

The changes make the configuration property "numeric-first" unnecessary
as this will always be the case now. There's also no reasonable way
around this behavior now. Otherwise, persistent workspaces would jump
around in the visual representation as soon as they become known to
sway.

Fixes #802
2022-01-07 10:26:27 +01:00
Alex
621d686310
Merge pull request #1375 from Anakael/pr/anakael/fix-invisible-application
[wlr/taskbar] fix: Missing tasks
2022-01-05 13:49:31 +01:00
dmitry
812832d38a fix: Missing tasks 2022-01-05 15:38:52 +03:00
dmitry
19069482e2 Merge branch 'master' of https://github.com/Alexays/Waybar into pr/anakael/fix-invisible-application 2022-01-05 14:57:32 +03:00
dmitry
1e560cf0c9 merge 2022-01-05 14:47:44 +03:00
Alex
0c9cdf7e0b
Merge pull request #1370 from volucris1/patch-1 2022-01-04 09:00:28 +01:00
Yura Shatunov
5a4f7a70ef
fix indent 2022-01-04 14:53:59 +07:00
Alex
ce56a80792
Merge pull request #1353 from bd-g/master
Network Module Enhancements
2021-12-30 10:03:04 +01:00
Alex
db95644d26
Merge pull request #1364 from ilkecan/master
Add `fixed-center` option
2021-12-30 10:01:04 +01:00
ilkecan
548bd2ab1a Add fixed-center option
Resolves #957
2021-12-28 16:00:25 +03:00
bd-g
7b9b10afc6
Merge branch 'master' into master 2021-12-26 20:14:26 -07:00
Alex
8ec321ddaf
Merge pull request #1221 from Anakael/pr/anakael/add-name-to-taskbar
[Taskbar] feat: Add name format replacementf feat: Add app ids mapping (ready for review)
2021-12-23 23:01:21 +01:00
Brent George
13d25d403e add to network module - signalStrengthApp shows what applications can run at current signal strength 2021-12-14 11:37:39 -07:00
Brent George
3218612d3b change frequency to GHz 2021-12-14 11:36:46 -07:00
Brent George
9bc86347be change signal strength to penalize overly strong signals 2021-12-14 11:34:15 -07:00
Brent George
d1f8b42d22 add Debian build dependency to README 2021-12-14 11:28:13 -07:00
Alex
0e3be30e01
Merge pull request #1352 from fhost/fhost/inhibitor-man
man: Add waybar-inhibitor man page
2021-12-14 08:47:08 +01:00
Alexis Cellier
795246263f man: Add waybar-inhibitor man page 2021-12-14 08:30:28 +01:00
Alex
89a8bd976e
Merge pull request #1337 from 187Qrly/patch-1
Add Gentoo to README.md
2021-12-14 07:44:07 +01:00
Alex
9b399ea2bb
Merge pull request #1334 from bd-g/master
Adjust max wifi strength that is possible
2021-12-14 07:43:41 +01:00
Alex
9608e0dabf
Merge pull request #1341 from fhost/fhost/logind
Add logind feature, with its 'inhibitor' module
2021-12-14 07:43:15 +01:00
Alex
1d1cfda90d
Merge pull request #1289 from aashu/master
Add reverse scrolling config option for pulseaudio module
2021-12-14 07:42:13 +01:00
aashu
ad20c0af2d
Merge branch 'master' into master 2021-12-14 10:22:25 +05:30
Alexis Cellier
eae65099d0 Add logind feature, with its 'inhibitor' module
The logind feature adds a new inhibitor module which allows to acquire
the inhibitor locks that logind presents.

Signed-off-by: Alexis Cellier <kernelserror@gmail.com>
2021-12-12 17:52:26 +01:00
Alex
39f42cdd7e
Merge pull request #1338 from jfred9/master
bar: Fix crash when unplugging HDMI
2021-12-08 10:42:22 +01:00
John Fredriksson
f573e32d0b bar: Fix crash when unplugging HDMI
There is a double delete situation which causes a SIGSEGV to happen
during destruction of bar.

This was introduced by the group feature patch.

The same object pointer is stored in two different vectors of
unique_ptr<AModule> element. Replace with shared_ptr to handle
reference counting correctly and avoid double delete.
2021-12-05 10:55:07 +01:00
187Qrly
5cbbd65ac4
Add Gentoo 2021-12-03 20:11:25 +01:00
Brent George
2240c79b1a Adjust max wifi strength that is possible 2021-12-01 18:24:35 -07:00
Sergey Mishin
ece86c96d7
Feature Clock: show list of time in other timezones in a tooltip
Introducing new tooltip placeholder: {timezoned_time_list}. It will be replaced with the list of times in different time zones.
I've found it useful to hover the mouse pointer on time and see time in all my timezones at once.
Current timezone excluding from the list, so if you will scroll over the time module and change the active timezone, this timezone will be excluded from the list and the previous active zone will be added.
2021-12-01 17:08:05 +00:00
Alex
9e8a71c4ef
Merge pull request #1277 from dartkron/master
Refactor Clock: generalize multi timezones and single timezone cases
2021-12-01 11:51:35 +01:00
Alex
7069429c03
Merge pull request #1229 from kraftwerk28/sway-language-country-flag
`sway/language` country flag
2021-12-01 11:49:39 +01:00
Alex
d41a60d2d9
Merge pull request #1244 from alebastr/swaybar-ipc
Yet another swaybar ipc implementation
2021-12-01 11:48:49 +01:00
Alex
05f7727dae
Merge branch 'master' into swaybar-ipc 2021-12-01 11:48:03 +01:00
Alex
9bc6fae15b
Merge pull request #1331 from xytovl/per-device-pulse-icon
Allow sink in addition to source for pulse icon
2021-11-30 16:36:22 +01:00
Patrick Nicolas
9dac851f6d Allow sink in addition to source for pulse icon 2021-11-30 16:31:41 +01:00
Alex
b6e24bd527
Merge pull request #1305 from njoyard/feat/groups
Add module group feature
2021-11-29 15:19:48 +01:00
Aleksei Bavshin
b6d0a4b63f
feat(bar): allow customization of bar modes
Allow changing existing modes and adding new ones via `modes`
configuration key.
`modes` accepts a JSON object roughly described by the following type
```typescript
type BarMode = {
    layer: 'bottom' | 'top' | 'overlay';
    exclusive: bool;
    passthrough: bool;
    visible: bool;
};
type BarModeList = {
    [name: string]: BarMode;
};
```
and will be merged with the default modes defined in `bar.cpp`.

Note that with absence of other ways to set mode, only those defined in
the `sway-bar(5)`[1] documentation could be used right now.

[1]: https://github.com/swaywm/sway/blob/master/sway/sway-bar.5.scd
2021-11-28 12:19:45 -08:00
Aleksei Bavshin
cf5ddb2a5e
fix(swaybar-ipc): avoid unnecessary copy of struct swaybar_config 2021-11-28 11:34:21 -08:00
Aleksei Bavshin
4b5dc1bb3a
test: count copies and moves done by SafeSignal 2021-11-28 09:52:18 -08:00
Alex
22ff26252b
Merge pull request #1328 from Anakael/pr/anakael/experimental-flag
build: Add experimental build option
2021-11-28 11:27:12 +01:00
Alex
a832814b41
Merge pull request #1329 from m-bdf/patch-1
mediaplayer.py: Exit properly on SIGPIPE
2021-11-28 11:26:41 +01:00
dmitry
2fb671f5fa Revert protocol build 2021-11-28 01:19:21 +03:00
dmitry
3c2fa1625d Finish 2021-11-28 01:12:35 +03:00
Maëlys Bras de fer
d5112678c3
mediaplayer.py: Exit properly on SIGPIPE 2021-11-27 23:07:26 +01:00
Nicolas Joyard
0c18e57937 add group feature 2021-11-25 12:01:17 +01:00
Aleksei Bavshin
b4e19678b7
ci: increase FreeBSD VM memory to 2048MB
Intermittent CI failures without any useful diagnostics could be caused
by the OOM killer. 1024MB is not really enough to run 3 parallel jobs
with a modern C++ compiler.
2021-11-23 19:48:31 -08:00
Aleksei Bavshin
8fe42ebd2e
doc: update exclusive and passthrough defaults 2021-11-23 19:18:24 -08:00
mazunki
bb7b376fa6 removed commented useless runtime errors 2021-11-24 01:37:21 +01:00
kraftwerk28
89afa8e149 Checking if emoji byte doesn't get out of bounds 2021-11-24 02:15:10 +02:00
kraftwerk28
59040c53e4 Move definition to .cpp 2021-11-24 02:15:10 +02:00
kraftwerk28
02560a6537 Update manpage 2021-11-24 02:15:10 +02:00
kraftwerk28
0472d279e4 Add {flag} format replacement 2021-11-24 02:15:10 +02:00
dmitry
166504256a Merge branch 'master' of https://github.com/Alexays/Waybar into pr/anakael/add-name-to-taskbar 2021-11-23 23:10:49 +03:00
Aleksei Bavshin
2290fe10aa
fix(bar): handle ipc connection errors.
Try to use the default bar id (`bar-0`) if none is set.
2021-11-23 08:46:58 -08:00
Alex
9fa7bfc0cb
Merge pull request #720 from jbeich/disk
disk: make {used} match df(1)
2021-11-23 13:54:46 +01:00
Alex
6712cd05a3
Merge branch 'master' into disk 2021-11-23 13:54:17 +01:00
Alex
977d21b5f6
Merge pull request #805 from Anakael/workspace-manager-implementation
WLR Workspace manager implementation
2021-11-23 13:52:17 +01:00
Alex
0a4841371b
Merge branch 'master' into workspace-manager-implementation 2021-11-23 13:52:08 +01:00
Alex
deab028e52
Merge pull request #1325 from Alexays/revert-1256-patch-1
Revert "dont escape essid in tooltip"
2021-11-23 10:10:24 +01:00
Alex
c51a973d60
Revert "dont escape essid in tooltip" 2021-11-23 10:10:14 +01:00
Alex
5a5f8c3b9f
Merge pull request #1256 from WuerfelDev/patch-1
dont escape essid in tooltip
2021-11-23 10:04:59 +01:00
Alex
b1dc3005b7
Merge pull request #1294 from Anakael/pr/anakael/ignore-by-title
feat: Ignore by title
2021-11-23 10:03:41 +01:00
dmitry
98f7a10a51 Fix sort 2021-11-23 03:18:00 +03:00
dmitry
23991b6543 Finish 2021-11-23 03:10:44 +03:00
Alex
331dfa87da
Merge pull request #1230 from ciarand/if-changes-isolate
Switch network module to read /proc/net/dev
2021-11-22 08:00:54 +01:00
Alex
29a8f52464
Merge pull request #1322 from alebastr/freebsd-ci-update
ci: update FreeBSD configuration
2021-11-22 07:59:31 +01:00
Aleksei Bavshin
6bfb674d1b
fix(swaybar-ipc): better logs 2021-11-21 17:28:47 -08:00
dmitry
ef4c6a9ba3 Update to proto. Fix displaying. Rename classes. 2021-11-22 01:12:55 +03:00
dmitry
ffeecf626c Update names 2021-11-21 15:01:25 +03:00
Aleksei Bavshin
4154492603
ci: update FreeBSD configuration
Use latest action v0.1.5.
Pin runner to macos-10.15. macos-latest will start using macos-11 images
without VirtualBox in less than a month[1].

[1] https://github.com/actions/virtual-environments/issues/4060
2021-11-19 21:17:55 -08:00
Aleksei Bavshin
5baffbf8f8
doc: document swaybar ipc options, ipc and id 2021-11-19 20:28:57 -08:00
Anakael
60c1706273
Update taskbar.cpp 2021-11-19 18:54:37 +03:00
Anakael
cb6af026f6
Update taskbar.hpp 2021-11-19 18:51:28 +03:00
Anakael
18ea53fcbc
Update taskbar.hpp 2021-11-19 18:39:49 +03:00
Anakael
23955fdcc2
Update taskbar.hpp 2021-11-19 18:38:59 +03:00
Alex
a06ed00727
Merge pull request #1317 from jfred9/master
river/tags: Add possibility for mouse clicks
2021-11-19 16:33:29 +01:00
dmitry
15761ef802 Merge branch 'master' of https://github.com/Alexays/Waybar into workspace-manager-implementation 2021-11-16 21:44:50 +03:00
John Fredriksson
ad3f46214d river/tags: Add possibility for mouse clicks
Left mouse click - set-focused-tags
Right mouse click - toggle-focused-tags
2021-11-15 22:31:38 +01:00
Alex
13fda1607f
Merge pull request #1311 from b1rger/patch-2
Fix typo
2021-11-12 09:04:41 +01:00
Alex
9fda6695ea
Merge pull request #1314 from Scrumplex/fix-negative-mpd-vol
Ensure MPD volume is not negative
2021-11-12 09:04:21 +01:00
Sefa Eyeoglu
b24f9ea569
Ensure MPD volume is not negative
If the primary output does not support changing volume MPD will report
-1. Ensure that negative volume levels will be represented as 0 instead.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2021-11-11 21:42:05 +01:00
mazunki
e10c9dd011 changing want_route_dump to default to true, since we say we have gwaddr support 2021-11-09 19:04:05 +01:00
mazunki
b0eab5d793 maybe we shouldn't actually runtime error, but still doing a check 2021-11-09 19:03:15 +01:00
mazunki
17bb5643ae explicitly checking for errors to silence unused variable warnings when writing to fd 2021-11-09 18:38:07 +01:00
Birger Schacht
769b12f16a
Fix typo 2021-11-06 09:00:15 +00:00
Alex
b511103fd9
Merge pull request #1301 from jonbakke/patch-1
Clarify less than/greater than in warning.
2021-10-29 13:23:28 +02:00
Alex
122fe33636
Merge pull request #1302 from marwing/master
Mark memory used by zfs arc as free in memory
2021-10-29 13:22:58 +02:00
Alex
8498ddefca
Merge pull request #1304 from mamins1376/fix-1303
Fix divide by zero (#1303)
2021-10-29 13:22:01 +02:00
Mohammad Amin Sameti
48117a2e97 Fix divide by zero (#1303) 2021-10-29 14:12:48 +03:30
Marwin Glaser
decb13eef0
mark zfs arc size as free in memory 2021-10-28 19:10:46 +02:00
jonbakke
a015b2e3db
Clarify less than/greater than in warning.
I was seeing "[warning] Requested height: 20 exceeds the minimum height: 30 required..."
Lines 114-134 are relevant; 133 overrides the requested height with the minimum height when GTK wants more pixels to work with. So, the code is behaving as expected, and "less than" matches the code's logic.
2021-10-28 09:37:11 -07:00
Alex
562e4157c0
Merge pull request #1297 from Molytho/master
Add spacing config option
2021-10-22 11:02:53 +02:00
Robin Ebert
01bfbc4656
Use spacing in config 2021-10-20 11:30:53 +02:00
Robin Ebert
7669029bfe
Add man documentation for spacing config option 2021-10-20 11:30:49 +02:00
Robin Ebert
0b66454d5c
Add spacing config option
This option allows to add spaces between the modules. It uses Gtk:Box's spacing property.
2021-10-20 11:30:40 +02:00
dmitry
75a6dddea5 Finish 2021-10-20 01:23:00 +03:00
Ashutosh Malviya
08b4a83331 Add reverse scrolling config option for pulseaudio
When natural scrolling is enabled, the behaviour of scrolling on pulseaudio
module is reversed, this commit reverses the direction of scroll variable
if "reverse-scrolling" is set to 1 in config file.
2021-10-15 19:07:25 +05:30
Sergey Mishin
c5e4d26320
Fix working without timezone 2021-10-05 10:20:06 +00:00
Sergey Mishin
d8bc6c92bb
Fix style and spelling 2021-10-05 09:55:30 +00:00
Sergey Mishin
110c66dd32
Refactor Clock: generalize multi timezones and single timezone cases
After this refactoring:
1. Timezones parses only once on start and the we refer to saved values. All time_zone.isString() checks gone to the constructor.
2. Single timezone case handling as case of multi timezoned logic.
3. Scroll event seems more clear now.
4. Tooltip template parses on start to check if there calendar placeholder or not. To do not calculate calendar_text() if not necessary.
2021-10-03 16:57:55 +00:00
Alex
6eb9606f23
Merge pull request #1274 from RobertMueller2/master
sway/window: include floating_nodes when considering window count for class
2021-10-03 10:27:26 +02:00
Alex
03ebbf6d98
Merge pull request #1275 from dartkron/master
Fix Clock crash on empty string in timezones field
2021-10-03 10:26:05 +02:00
Sergey Mishin
174db444d6
Fix Clock crash on empty string in timezones field
Also fixed timezones behavior: now waybar starting with the first timezone in timezones list and falling back to timezone field only if timezones omit or has no elements.
2021-10-03 03:27:54 +00:00
Rene D. Obermueller
9972384597 sway/window: include floating_nodes when considering window count for class 2021-10-02 18:35:38 +02:00
Alex
8b4dafd701
Merge pull request #1273 from ElyesH/master
Fix spelling errors
2021-10-02 18:29:41 +02:00
Elyes HAOUAS
f18eb71ad7 Fix spelling errors
Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr>
2021-10-02 18:13:17 +02:00
Alex
7af6e8413c
Merge pull request #1271 from alebastr/sni-passive-visibility
fix(tray): fix visibility of Passive items
2021-10-02 09:49:57 +02:00
Aleksei Bavshin
fbedc3d133
fix(tray): fix visibility of Passive items
`show_all` call from `Tray::update` attempts to walk the widget tree and
make every widget visible. Since we control individual tray item
visibility based on `Status` SNI property, we don't want that to happen.

Modify `Tray::update` to control the visibility of a whole tray module
only and ensure that the children of `Item` are still visible when
necessary.
2021-10-02 00:08:45 -07:00
Alex
fe5ac0fe08
Merge pull request #1257 from tokyovigilante/fix-catch2
Update catch2 dependency 2.13.3 -> 2.13.7
2021-09-23 22:40:31 +02:00
Ryan Walklin
f638fe473a Update catch2 dependency 2.13.3 -> 2.13.7 2021-09-22 11:43:25 +12:00
WuerfelDev
8d04da1551
dont escape essid in tooltip
just like https://github.com/Alexays/Waybar/pull/834 but for the network name.
2021-09-21 13:15:36 +02:00
Alex
8534175c59
Merge pull request #1252 from gavinbeatty/fix-sway-language-tabs
sway/language: remove tabs, indent with 2 spaces
2021-09-19 19:08:28 +02:00
Alex
6778a79033
Merge pull request #1253 from Darkclainer/per-core-cpu-usage
Add cpu usage for every core
2021-09-19 19:00:46 +02:00
Darkclainer
6e5a0bc80a Add cpu usage for every core 2021-09-19 14:02:25 +03:00
Gavin Beatty
fe547901fa sway/language: remove tabs, indent with 2 spaces 2021-09-18 15:28:45 -05:00
Alex
cee08eccd1
Merge pull request #1251 from Alexays/revert-1250-master
Revert "Add CPU usage for every core"
2021-09-18 13:50:25 +02:00
Alex
67c7302938
Revert "Add CPU usage for every core" 2021-09-18 13:50:16 +02:00
Alex
8489646b66
Merge pull request #1250 from Darkclainer/master
Add CPU usage for every core
2021-09-18 13:48:39 +02:00
Alex
6938921e92
Merge pull request #1239 from mazunki/default-gateway
Added support for {gwaddr} as a variable
2021-09-18 13:47:32 +02:00
mazunki
7b73cc472f Merge branch 'default-gateway' of github.com:mazunki/waybar into default-gateway 2021-09-18 02:09:57 +02:00
mazunki
1c91c71dcd updated original debug message with gateway ip, similar, yet not identical to ip route 2021-09-18 02:09:25 +02:00
mazunki
6142dfba6a updated original debug message with gateway ip, similar, yet not identical to default via 10.13.37.100 dev enp7s0 metric 2
10.13.37.0/24 dev enp7s0 proto kernel scope link src 10.13.37.97 's output
2021-09-18 01:51:16 +02:00
mazunki
13239417d8 fixed wrong dependency for make target 2021-09-18 01:20:16 +02:00
mazunki
5f083193e4 fixed tab indentation to spaces, removed debug 2021-09-18 01:12:58 +02:00
Darkclainer
a51ac59252 Merge remote-tracking branch 'origin/master' 2021-09-17 22:30:31 +03:00
Darkclainer
8da940f929 Update man pages for cpu usage 2021-09-17 22:22:14 +03:00
Alex
ce9e8aead3
Merge pull request #1222 from mswiger/use_g_memdup2
Use g_memdup2 instead of g_memdup
2021-09-17 20:56:47 +02:00
Alex
73ce2a99ff
Merge pull request #1238 from Matan1x/master
round brightness
2021-09-17 20:56:28 +02:00
Alex
b028a47d57
Merge pull request #1243 from alebastr/config-unittest
Unit-tests for configuration includes
2021-09-17 20:56:09 +02:00
Darkclainer
4bf577e89b Add CPU usage for every core 2021-09-17 21:18:21 +03:00
Aleksei Bavshin
5991bbb741
ci: run unit-tests 2021-09-15 22:20:46 +07:00
Aleksei Bavshin
d7d606b721
doc: update documentation for 'include' 2021-09-15 22:20:45 +07:00
Aleksei Bavshin
0c1d3e30b6
fix(config): preserve explicit null when merging objects 2021-09-15 22:20:44 +07:00
Aleksei Bavshin
ccc60b4245
refactor(config): more sensible multi-bar include behavior 2021-09-15 22:15:27 +07:00
Aleksei Bavshin
8912bd3ed0
test: multi-bar config with includes 2021-09-15 21:34:56 +07:00
Aleksei Bavshin
9f3b34e4d9
test: validate configuration load 2021-09-15 21:34:55 +07:00
Aleksei Bavshin
6eba62f060
test: add build configs for catch2 2021-09-15 21:34:55 +07:00
Aleksei Bavshin
1f16d7955d
refactor(config): drop getValidPath 2021-09-15 21:34:54 +07:00
Aleksei Bavshin
1f7d399b8e
refactor(config): remove style handling from Config 2021-09-15 21:34:53 +07:00
Aleksei Bavshin
4fff2eaaa0
refactor(client): change config visibility to public 2021-09-15 21:34:10 +07:00
Aleksei Bavshin
b377520a38
refactor(client): extract config handling into a new class 2021-09-14 13:15:54 +07:00
Rolf Vidar Mazunki Hoksaas
95ecff0551 added example tooltip usage 2021-09-09 20:12:20 +02:00
Rolf Vidar Mazunki Hoksaas
2c380a53ca added support for the {gwaddr} variable 2021-09-09 20:05:18 +02:00
Matan1x
aacd0fcc65 round brightness 2021-09-08 17:12:30 +03:00
Michael Swiger
4f76c9bd43 Only use g_memdup2 for glib >= 2.68 2021-08-29 13:11:04 -07:00
dmitry
8d9e322507 Add man 2021-08-29 16:37:02 +03:00
dmitry
94e53c3777 Add swap flags 2021-08-29 16:34:29 +03:00
dmitry
12c42fc6e4 Merge branch 'master' of https://github.com/Alexays/Waybar into pr/anakael/add-name-to-taskbar 2021-08-27 01:43:31 +03:00
Ciaran Downey
5186dd27e6 Use while (getline) instead of a for loop
Also make the comments surrounding the /proc/net/dev parsing clearer and
remove the apparently redundant "is the netdev file still good?" check.
2021-08-26 11:33:52 -07:00
Ciaran Downey
9d9f959769 Switch network module to read /proc/net/dev
This fixes issue #610 by reading bandwidth usage per-interface from
/proc/net/dev instead of globally via /proc/net/netstat. It supports the
same matching logic as elsewhere, so setting interface to '*' should
display the same sum-total bandwidth usage as the previous
implementation.
2021-08-25 15:00:05 -07:00
Alex
4e256cf3f0
Merge pull request #1223 from xi/cpu-mem-format-icon
add format-icons for cpu und memory
2021-08-23 09:22:02 +02:00
Alex
eae94ee14a
Merge pull request #1224 from xi/rm-travis-shield
rm travis-ci shield
2021-08-23 09:10:07 +02:00
Tobias Bengfort
e0260ac4fc rm travis-ci shield 2021-08-23 08:02:08 +02:00
Tobias Bengfort
7b4b5e55a2 support format-icon for cpu und memory 2021-08-23 07:30:19 +02:00
Michael Swiger
cb49650ea4 Use g_memdup2 instead of g_memdup
This fixes a compile warning.

See: https://discourse.gnome.org/t/port-your-module-from-g-memdup-to-g-memdup2-now/5538
2021-08-22 14:46:40 -07:00
dmitry
d60bb90b77 Fix typo 2021-08-22 20:43:37 +03:00
dmitry
ddfe036f00 Format 2021-08-22 20:42:16 +03:00
dmitry
38afa345dd Finish 2021-08-22 20:18:03 +03:00
Alex
ab38f13052
Merge pull request #1217 from gavinbeatty/patch-1
Fix memory leak and data race
2021-08-21 20:44:51 +02:00
Gavin Beatty
9ee701974f
Fix memory leak and data race
- Delete previous Layout before creating next one, and in destructor
- Use stack XKBContext instead of local new+delete
- Lock mutex in update() as it is called from a different thread than onEvent(res)
2021-08-20 10:06:35 -05:00
Alex
8940c3bbe8
Merge pull request #1211 from mswiger/fix_multi_display_tray_icon_scaling
Fix tray icon scaling on multi-display setups
2021-08-20 17:00:41 +02:00
Alex
51f2c6bc46
Merge pull request #1216 from Anakael/pr/anakael/add-short-desc-to-lang
fix: Add number to shortDescripton
2021-08-20 09:04:35 +02:00
dmitry
c058a2d196 Add number to shortDescripton 2021-08-20 01:09:16 +03:00
Alex
a4fff66bec
Merge pull request #1215 from ifreund/river-urgent
river/tags: support urgent tags
2021-08-19 15:07:35 +02:00
Isaac Freund
024fd42e27
river/tags: support urgent tags
Upstream river has a concept of urgent views/tags as of commit e59c2a73.
Introduce a new urgent style to expose this in the waybar module.
2021-08-19 15:01:49 +02:00
Alex
c413c1ec23
Merge pull request #1209 from Anakael/pr/anakael/add-short-desc-to-lang
feat: Add short desc to lang
2021-08-17 09:11:55 +02:00
Michael Swiger
2d80d31527 Fix tray icon scaling on multi-display setups 2021-08-16 23:33:29 -07:00
dmitry
a87a967a97 Fix leak 2021-08-17 05:29:35 +03:00
dmitry
a57e431437 Add shortDescription 2021-08-17 05:28:41 +03:00
dmitry
61783aafaa save 2021-08-17 04:31:17 +03:00
Alex
e5787a2617 chore: 0.9.8 2021-08-16 15:47:34 +02:00
Alex
9aec6bbed4
Merge pull request #1190 from mswiger/fix_incorrect_tray_icon_scale
Fix incorrect tray icon scaling
2021-08-01 13:39:29 +02:00
Michael Swiger
4f6a9b1bc2 Fix incorrect tray icon scaling 2021-07-31 18:01:31 -07:00
Alex
28e7a96e37
Merge pull request #1188 from WhyNotHugo/patch-1
Don't start if graphical-session is not running
2021-07-31 20:36:52 +02:00
Hugo Osvaldo Barrera
710f933fa6 Don't start if graphical-session is not running
Currently waybar _can_ try to start even if there's no graphical session (and
no sway) running. Adding `Requisite=` prevents this. From `systemd.unit(5)`:

    Requisite=
       Similar to Requires=. However, if the units listed here are not
       started already, they will not be started and the starting of
       this unit will fail immediately.  Requisite= does not imply an
       ordering dependency, even if both units are started in the same
       transaction. Hence this setting should usually be combined with
       After=, to ensure this unit is not started before the other
       unit.

       When Requisite=b.service is used on a.service, this dependency
       will show as RequisiteOf=a.service in property listing of
       b.service.  RequisiteOf= dependency cannot be specified directly.
2021-07-31 16:56:55 +02:00
Alex
bad72de960
Merge pull request #1105 from Amanieu/fix_power_calc
Fix power calculation when battery units are in μA instead of μW
2021-07-25 15:07:27 +02:00
Alex
65166109c9
Merge branch 'master' into fix_power_calc 2021-07-25 15:07:01 +02:00
Alex
91156dfc75
Merge pull request #1178 from Anakael/pr/anakael/add-languge-tooltip-format
[sway/language] Add tooltip-format
2021-07-25 15:05:58 +02:00
dmitry
af2113931a fix typo 2021-07-24 17:26:49 +03:00
dmitry
68e4457f3a Add tooltip-formay 2021-07-24 17:24:37 +03:00
Alex
1b4ddbca3a
Merge pull request #1024 from GrantMoyer/keyboard_state
Keyboard state module
2021-07-23 16:15:02 +02:00
Alex
445ad22580
Merge branch 'master' into keyboard_state 2021-07-23 15:59:08 +02:00
Grant Moyer
88a5f713ed Prefer keyboard-state over keyboard_state 2021-07-23 09:45:07 -04:00
Alex
2009ceb350
Update opensuse 2021-07-23 15:01:29 +02:00
Alex
77a2eff2ce
Update opensuse 2021-07-23 14:49:03 +02:00
Alex
cf832798fb
Update debian 2021-07-23 14:46:03 +02:00
Alex
3f3f2d9c2c
Merge pull request #1159 from Anakael/pr/anakael/sway-language-impr
[sway/language] Improve sway/language
2021-07-23 14:42:22 +02:00
Alex
b47705ac21
Merge branch 'master' into pr/anakael/sway-language-impr 2021-07-23 09:07:43 +02:00
Alex
b33be38877
Merge pull request #1145 from alebastr/sni-enhancements
tray module enhancements
2021-07-23 09:05:54 +02:00
Aleksei Bavshin
a5fe6f40b8
feat(tray): handle Status property
On the `Passive` value of `Status` tray items would be hidden unless
`show-passive-items` is set to true.
On the `NeedsAttention` value of `Status` tray items will have a
`.needs-attention` CSS class.
2021-07-22 08:04:06 -07:00
Aleksei Bavshin
245f7f4b11
feat(tray): handle scroll events 2021-07-22 08:04:05 -07:00
Aleksei Bavshin
1418f96e46
feat(tray): fallback to Title for items without ToolTip 2021-07-22 08:04:04 -07:00
Aleksei Bavshin
84a8f79bbe
feat(tray): implement tooltips (text only) for tray items 2021-07-22 08:04:03 -07:00
Aleksei Bavshin
4b6253e810
refactor(tray): infer changed properties from signal name
Comparing two GVariants is too expensive; let's collect the set of
properties updated by each signal and apply them unconditionally.
2021-07-22 08:04:00 -07:00
Aleksei Bavshin
929fc16994
fix(tray): ignore unused WindowId property 2021-07-22 08:01:25 -07:00
Alex
811f0896c9
Merge pull request #1174 from mswiger/fix_blurry_tray_icons
Fix blurry tray icons for HiDPI displays
2021-07-21 10:36:16 +02:00
Alex
7729ca3427
Update debian 2021-07-21 10:28:56 +02:00
Alex
100d4d3499
Merge branch 'master' into pr/anakael/sway-language-impr 2021-07-21 09:40:19 +02:00
Alex
7f5fd1ac86
Update opensuse 2021-07-21 09:30:47 +02:00
Alex
1f5c07a07f
Update debian 2021-07-21 09:27:54 +02:00
Alex
67d482d28b
Update opensuse 2021-07-21 09:23:52 +02:00
Michael Swiger
1440ed29d4 Fix blurry tray icons for HiDPI displays 2021-07-20 22:29:34 -07:00
Grant Moyer
311c5779ea Remove unused variable 2021-07-20 23:03:41 -04:00
Grant Moyer
9880c6929f Install libevdev in FreeBSD workflow 2021-07-20 23:03:41 -04:00
Grant Moyer
99138ffdcd Add man page for keyboard_state module 2021-07-20 21:09:00 -04:00
Grant Moyer
08e886ebc6 Search for device automatically if none given 2021-07-20 21:09:00 -04:00
Grant Moyer
6fdbc27998 Add default style 2021-07-20 21:09:00 -04:00
Grant Moyer
40e6360722 Update css class when locked/unlocked 2021-07-20 21:09:00 -04:00
Grant Moyer
642e28166b Add more configuaration 2021-07-20 21:09:00 -04:00
Grant Moyer
6dfa31fb17 Basic keyboard state module 2021-07-20 21:09:00 -04:00
Alex
c91cc2218b
Merge pull request #1170 from larsch/default_name_fix
Fix pulseaudio icon name compilation error
2021-07-20 15:26:18 +02:00
Lars Christensen
6f2bfd43bf Fix pulseaudio icon name compilation error 2021-07-20 15:25:05 +02:00
Alex
f43f8773c4
Merge pull request #1169 from roosemberth/pa-control-active-sink
pulseaudio: Control currently running sink
2021-07-20 14:01:23 +02:00
Alex
bb072675ba
Merge pull request #1161 from xytovl/per-device-pulse-icon
Support per-device icon in pulseaudio
2021-07-20 14:00:14 +02:00
Alex
fa43072be7
Merge pull request #1163 from Anakael/pr/anakael/update-dockerfiles
Update dockerfiles
2021-07-20 13:59:09 +02:00
Roosembert Palacios
86a43b9042
pulseaudio: Control currently running sink
In a system with multiple sinks, the default sink may not always be
the once currently being used. It is more useful to control the
currently active sink rather than an unused one.

This patch does not make any difference if the system only uses the
default sink.

Signed-off-by: Roosembert Palacios <roosemberth@posteo.ch>
2021-07-20 10:16:53 +02:00
Anakael
2506c0104a
Update Dockerfiles/fedora
Co-authored-by: Aleksei Bavshin <alebastr89@gmail.com>
2021-07-16 11:37:58 +03:00
dmitry
948eba92a5 Update dockerfiles 2021-07-16 03:03:11 +03:00
Alex
ad09072a6d
Merge branch 'master' into pr/anakael/sway-language-impr 2021-07-15 22:17:38 +02:00
Patrick Nicolas
9c2b5efe7b Support per-device icon in pulseaudio 2021-07-15 09:20:43 +02:00
Alex
91cdf80c65
Merge pull request #1157 from tiosgz/multi-bar-fix
Do not fail to parse a multi-bar config
2021-07-14 09:04:24 +02:00
dmitry
9cce5ea6b5 Update dockerfiles 2021-07-13 04:49:19 +03:00
dmitry
8310700bbb Improve sway/language 2021-07-13 04:33:12 +03:00
tiosgz
78aaa5c1b4 Do not fail to parse a multi-bar config 2021-07-10 20:22:37 +00:00
Alex
7c1303f57c
Merge pull request #1147 from alebastr/github-ci-linux
Add GitHub CI jobs on Linux
2021-07-03 01:08:39 +02:00
Alex
569517c531
chore: update freebsd-vm to 0.1.4 2021-07-03 00:55:59 +02:00
Alex
1c2e0083ba
Merge pull request #1144 from ajakk/master
libfmt >=8.0.0 compatibility
2021-07-03 00:30:33 +02:00
Alex
a8edc0886d
Delete .travis.yml 2021-07-03 00:28:43 +02:00
Alex
8e1f85e1c3
Update archlinux 2021-07-03 00:27:57 +02:00
Aleksei Bavshin
5420a91046
chore: update FreeBSD action to address ntp sync issue 2021-07-01 00:13:30 -07:00
Aleksei Bavshin
2a52efa99a
chore: update fedora dockerfile 2021-06-30 23:51:28 -07:00
Aleksei Bavshin
d3c59c42ef
feat(ci): add GitHub CI jobs on Linux 2021-06-30 23:51:09 -07:00
John Helmert III
368e4813de
libfmt >=8.0.0 compatibility 2021-06-30 13:12:38 -05:00
Alex
36857ae72b
Merge pull request #995 from OskarCarl/master
Add recursive config includes
2021-06-23 23:35:56 +02:00
Oskar Carl
982d571b2e
Add include man section 2021-06-23 23:08:47 +02:00
Oskar Carl
e62b634f72
Workaround for circular imports 2021-06-21 19:29:09 +02:00
Oskar Carl
e8278431d2
Proper formatting 2021-06-21 19:05:01 +02:00
Oskar Carl
14f626d422
Add recursive config includes 2021-06-21 19:05:01 +02:00
Alex
d08fbb2ef2
Merge pull request #1132 from alebastr/fix-noexcept-condvar-crash
fix(util): protect std::condition_variable methods from pthread_cancel
2021-06-15 13:20:05 +02:00
Aleksei Bavshin
5da268077c
fix(util): protect std::condition_variable methods from pthread_cancel
The changes in GCC 11.x made `std::condition_variable` implementation
internals `noexcept`. `noexcept` is known to interact particularly bad
with `pthread_cancel`, i.e. `__cxxabiv1::__force_unwind` passing through
the `noexcept` call stack frame causes a `std::terminate` call and
immediate termination of the program

Digging through the GCC ML archives[1] lead me to the idea of patching
this with a few pthread_setcancelstate's. As bad as the solution is, it
seems to be the best we can do within C++17 limits and without major
rework.

[1]: https://gcc.gnu.org/legacy-ml/gcc/2017-08/msg00156.html
2021-06-12 12:56:44 -07:00
Alex
20160749e7
Merge pull request #1130 from tperard/fix-network-format-config
network: Fix mix use of default and state specific format
2021-06-08 22:53:10 +02:00
Anthony PERARD
194f4c2f18 network: Fix mix use of default and state specific format
Whenever the network module is configured with both "format" and
"format-$state" and when the module use "format-$state" once, it
override the value that was saved from "format".

For example, if both "format" and "format-disconnect" are configured,
and only those, as soon as the module show information about a
disconnected interface, it will keep showing the format for
disconnected, even if the interface is connected again later.

Fix that by always setting a value to default_format_ in update() and
thus use the intended default format when needed.

Fixes #1129
2021-06-08 18:50:32 +01:00
Alex
9e34be7b16
Merge pull request #1126 from tperard/fix-network-auto-detection
Fix network interface auto detection
2021-06-05 18:06:30 +02:00
Alex
6e041d5275
Merge pull request #1125 from maximbaz/sway-language-ignore-empty 2021-06-05 18:01:26 +02:00
Anthony PERARD
33617b67f0 network: Fix one case where default route is deleted without notification
When an interface's state is change to "down", all the route
associated with it are deleted without an RTM_DELROUTE event.

So when this happen, reset the module to start looking for a new
external interface / default route.

Fixes #1117
2021-06-05 16:52:04 +01:00
Anthony PERARD
efaac20d82 network: Handle ip route priority
When there's a new default route with higher priority, switch to it.
2021-06-05 16:51:54 +01:00
Anthony PERARD
ce97df34e6 network: Also clear ifname in clearIface()
Since we reset `ifid_`, clear `ifname_` as well.
2021-06-05 16:51:40 +01:00
Anthony PERARD
23b9923eeb network: Parse whole RTM_NEWROUTE msg before interpreting it
The check to figure out if we have the default route should be after
the for loop that parses the route attributes, to avoid acting on
incomplete information. We are going to use more fields from the
message.
2021-06-05 16:51:35 +01:00
Maxim Baz
999c1b6b81
sway-language: ignore events with empty layout 2021-06-05 15:03:52 +02:00
Amanieu d'Antras
1a98ecf6b0
Merge branch 'master' into fix_power_calc 2021-05-30 11:17:54 +01:00
Alex
5444a66e71
Merge pull request #1116 from tperard/fix-network-rework
Fix network module rework
2021-05-27 21:24:07 +02:00
Anthony PERARD
f49a7a1acb network: Update WiFi information when available
The module doesn't update the `essid_` as soon as a WiFi interface is
connected, but that happens at some point later, depending on
"interval" configuration.

Fix that by rerunning the get WiFi information thread when the
`carrier` state changes. Also, we will clear the state related to WiFi
when the connection is drop to avoid stale information.
2021-05-27 19:36:14 +01:00
Anthony PERARD
28dfb0ba41 network: Fix use of carrier information
Some RTM_NEWLINK messages may not have the IFLA_CARRIER information.
This is the case when a WiFi interface report scan result are
available. `carrier` is used regardless of if it is present in the
message or not. This would result in the interface appearing
"disconnected" in waybar when it isn't.

This patch now check that `carrier` is available before using it.

The same thing could potentially happen to `ifname` so check if it's
set before recording it.

Fixes: c1427ff (network: Handle carrier information)
Fixes #388
2021-05-26 19:23:20 +01:00
Alex
94a882bf95
Merge pull request #1113 from alebastr/exclusive-and-passthrough
Add config options for exclusive zone and input event passthrough
2021-05-22 10:34:39 +02:00
Aleksei Bavshin
da2d603b53
doc: add man for exclusive and passthrough flags 2021-05-21 22:44:19 -07:00
Aleksei Bavshin
7aaa3df701
feat(bar): add config flag to disable exclusive zone 2021-05-21 22:44:18 -07:00
Aleksei Bavshin
729553d3bc
feat(bar): add config flag for pointer event passthrough 2021-05-21 22:44:17 -07:00
Alex
f78a802d11
Merge pull request #1106 from tperard/network-module-reword
Network module rework
2021-05-21 17:02:28 +02:00
Alex
826a549d1f
Merge pull request #1112 from yonatan8070/master
Add options to use a .json extension for the config filename
2021-05-21 17:00:02 +02:00
Yonatan Avhar
99918205ed Correct .json to .jsonc 2021-05-21 17:53:43 +03:00
Yonatan Avhar
c65ec9e14f Add options to use a .json extension for the config filename 2021-05-21 15:54:48 +03:00
Anthony PERARD
c1427ff807 network: Handle carrier information
IFLA_CARRIER allows to know when a cable is plugged to the Ethernet
card or when the WiFi is connected. If there's no carrier, the
interface will be considered disconnected.
2021-05-15 16:38:00 +01:00
Anthony PERARD
0bb436f949 network: Rework interface auto detection, handle route change events
Last part of the rework of handleEvents(), this time we take the
getExternalInterface() function and add it to the handleEvents()
function. That way, waybar can react immediately when a new "external
interface" is available and doesn't need to probe. Also that avoid to
have two different functions consuming from the same socket and we
don't need to recode some of the functions that are already available
via libnl (to send and receive messages).
2021-05-15 16:38:00 +01:00
Anthony PERARD
0fc7ef6685 network: Rework address lookup to use only events
In order to get the IP address of an interface, we can get the
information out of NEWADDR events without needed to call getifaddrs().
And when now events are expected, we can requests a dump of all
addresses and handle addresses changes the same way via handleEvents()
only.
2021-05-15 16:38:00 +01:00
Anthony PERARD
c9bbaa7241 network: Rework initial interface search by using a dump
Instead of using an alternative way to list all links in order to
choose one when an "interface" is in the configuration, we can ask for
a dump of all interface an reuse the handleEvents() function.

This patch also start to rework the handleEvents() function to grab
more information out of each event, like the interface name.
2021-05-15 16:38:00 +01:00
Anthony PERARD
63fdf66ad6 network: Read all available messages on ev_sock_
When more than one message is available to read on the ev_sock_
socket, only the first one is read.

Make some changes to be able to read all the messages available by
setting the socket to non-blocking. This way we can detect when
there's nothing left to read and loop back to wait with epoll.
2021-05-15 16:38:00 +01:00
Anthony PERARD
9357a6cb88 network: Start the module with some text in the label_
Fix modules starting with no text, but not hidding.

Start with some "text" in the module's label_, update() will then
update it. Since the text should be different, update() will be able
to show or hide the event_box_. This is to work around the case where
the module start with no text, but the the event_box_ is shown.
2021-05-15 16:38:00 +01:00
Anthony PERARD
dbc06abf18 network: Initialise cidr_ like clearIface() does 2021-05-15 16:38:00 +01:00
Amanieu d'Antras
4d067619a8 Fix power calculation when battery units are in μA instead of μW 2021-05-15 15:55:38 +01:00
Alex
cf3d6545c3
Merge pull request #1101 from Max1Truc/master
fix: incorrect battery percentage on Pinebook Pro
2021-05-11 10:41:38 +02:00
Max1Truc
f3a6e2d494 fix: incorrect battery percentage on Pinebook Pro 2021-05-10 21:00:14 +02:00
Alex
cdce3e03ea
Update meson.build 2021-04-30 14:25:48 +02:00
Alex
b25b7d29fc
Update spdlog.wrap 2021-04-30 14:25:26 +02:00
Alex
71d7596b6f
fix: bluetooth status tooltip 2021-04-30 14:23:49 +02:00
Alex
06e699c862
Merge pull request #1087 from Synthetica9/multiple-rewrites
rewriteTitle: allow multiple sequential rewrites
2021-04-27 00:00:53 +02:00
Patrick Hilhorst
a03283d65f
rewriteTitle: allow multiple sequential rewrites 2021-04-26 20:26:43 +02:00
Alex
ef38061edd
Merge pull request #1084 from gabegorelick/battery-discharging-full
[modules/battery] allow format-discharging-full
2021-04-26 09:28:00 +02:00
Gabe Gorelick
7e13e26c29
[modules/battery] allow format-discharging-full
`format-discharging-full` has been impossible since #923 made it
impossible to be full and discharging at the same time. This should
fix that by only making `format-charging-full` impossible. Whether
or not that should be allowed is a good question, but beyond the
scope of this change.

Fixes #1031
2021-04-25 22:00:24 -04:00
Alex
5f7329f5b9
Merge pull request #1081 from David96/master
[modules/pulseaudio] fix bluetooth class for PipeWire
2021-04-25 14:03:00 +02:00
David96
2213380dc0 [modules/pulseaudio] fix bluetooth class for PipeWire
apparently, pipewire-pulse slightly changed the naming of the sink.
2021-04-25 11:19:35 +02:00
Alex
66d8035ed1
Merge pull request #1055 from vrld/feature-rewrite-window-title
Add option to rewrite sway/window title
2021-04-21 14:23:45 +02:00
Matthias Richter
7cdf178f8d Document changes in manpage
Add section on rewrite rules and extend example
2021-04-21 12:24:47 +02:00
Matthias Richter
af3c868a5b Catch exception on erroneous rules
std::regex and std::regex_replace may throw an std::regex_error if the
expression or replacement contain errors.

Log this error and carry on with the next rule, so that the title is
shown even if the config contains errors.
2021-04-21 12:24:47 +02:00
Matthias Richter
b16c8972c7 Add option to rewrite sway/window title
Rewrites window title according to config option "rewrite".
"rewrite" is an object where keys are regular expressions and values are
rewrite rules if the expression matches. Rules may contain references to
captures of the expression. Regex and replacement follow ECMA-script
rules. If no regex matches, the title is left unchanged.

example:
"sway/window": {
  "rewrite": {
    "(.*) - Mozilla Firefox": " $1",
    "(.*) - zsh": " $1",
  }
}
2021-04-21 12:24:47 +02:00
Alex
1c9b62de07
Merge pull request #1076 from Scrumplex/add-mpd-volume-status
Implement MPD volume status format template
2021-04-20 09:38:19 +02:00
Sefa Eyeoglu
fc89b01ba6
feat: implement mpd volume format template
Allow the user to show the current volume from MPD status via the
`format` and/or `tooltip-format` configuration options.

The values are provided by libmpdclient and are integers, generally
between 0-100 (without %). Values above 100 are also possible, as mpd
output plugins like `pulse` support volumes above 100%.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2021-04-20 08:35:47 +02:00
Alex
70e67c5daa
Merge pull request #1074 from Anakael/feature/taskbar-ignore-list
[wlr/taskbar] Add ignore-list param
2021-04-18 20:02:14 +02:00
dmitry
5ad3b6018a Remove exceed protected 2021-04-18 21:37:58 +03:00
dmitry
ba278985e8 Add ignore-list param to wlr/taskbar 2021-04-18 21:34:29 +03:00
Alex
5300461c79 chore: v0.9.7 2021-04-15 21:17:54 +02:00
Alex
d0f60c47bf
Merge pull request #1070 from jgmdev/cpumodulefix
[Module CPU] fix crash due to empty frequencies.
2021-04-15 21:17:00 +02:00
Alex
07f2470e36
Merge pull request #974 from kamushadenes/patch-1
Improve Pulseaudio sink/source separation
2021-04-15 21:09:35 +02:00
jgmdev
f8f1e791a3 [Module CPU] fix crash due to empty frequencies.
On some systems (eg: ARM) the supported frequencies of the CPU are not
properly reported by /proc/cpuinfo so if that fails try to retrieve them
from /sys/devices/system/cpu/cpufreq/policy[0-9]/cpuinfo_[max|min]_freq.
2021-04-15 14:30:29 -04:00
Alex
729a4fe37e chore: v0.9.6 2021-04-15 16:09:45 +02:00
Alex
97e4b53cf3
Merge pull request #1061 from akheron/multi-battery-status
Use the correct battery status when multiple batteries are present
2021-03-28 19:35:51 +02:00
Petri Lehtinen
c850212288 Use the correct battery status when multiple batteries are present 2021-03-28 20:07:35 +03:00
Alex
600afaf530
Merge pull request #1037 from Moonlight-Angel/cpu-frequency
Add cpu min/max/avg frequencies
2021-03-25 12:09:42 +01:00
Alex
c21dc681c9
Merge pull request #1052 from Logarithmus/fix-sway-language-manpage
meson.build: add missing waybar-sway-language manpage
2021-03-23 14:57:06 +01:00
Artur Sinila
f4ad5d36ec meson.build: add missing waybar-sway-language manpage 2021-03-23 16:51:08 +03:00
Alex
f627fe3a39
Merge pull request #1051 from lunik1/disk-css
Add default styling for disk module
2021-03-23 12:31:52 +01:00
Alex
7b6dc33824
Merge pull request #1056 from martin2250/patch-1
Add style for battery state "plugged"
2021-03-23 12:30:50 +01:00
Martin Pittermann
b4ee994515
Add style for battery state "plugged" 2021-03-23 00:26:45 +01:00
Alex
b1dd62078f
Merge pull request #1002 from nullobsi/master
add length limits for MPD module tags
2021-03-15 09:15:09 +01:00
nullobsi
bf3efdb89c
Merge branch 'master' into master 2021-03-14 21:34:25 -07:00
lunik1
354de5f13f
style: add styling to disk module 2021-03-13 15:17:11 +00:00
Alex
b4ffb8af45
Merge pull request #1050 from cmovcc/cmovcc/load-values
Fix: CPU load values
2021-03-13 16:11:39 +01:00
Antonin Reitz
a49b12b66b Fix CPU load values 2021-03-12 20:58:51 +01:00
nullobsi
1573e1eb97
change variable instead of substr(len) 2021-02-26 13:29:58 -08:00
nullobsi
9b9daaee6f
Merge branch 'master' into master 2021-02-26 13:22:34 -08:00
Genesis
99643ba2e6
Stub parseCpuFrequencies on *BSD platforms 2021-02-25 09:14:51 +01:00
Genesis
08ea5ebe1f
Add cpu frequency 2021-02-25 09:14:51 +01:00
Alex
cb1c7ea12c
Merge pull request #1032 from matteodelabre/terminate-custom-on-exit
Terminate custom module scripts on exit
2021-02-23 09:40:05 +01:00
Alex
1026100c9d
Merge pull request #1035 from alebastr/deferred-output-removal
fix: schedule output destruction on idle callback
2021-02-23 09:39:09 +01:00
Aleksei Bavshin
943ba3a2da
fix: schedule output destruction on idle callback
Defer destruction of bars for the output to the next iteration of the
event loop to avoid deleting objects referenced by currently executed
code.
2021-02-22 18:35:09 -08:00
nullobsi
bfa9f1e69b
Merge branch 'master' into master 2021-02-22 09:34:58 -08:00
Alex
4d150e9340
Merge pull request #1036 from WhyNotHugo/systemd-reload
Configure systemd.service file to allow reloading
2021-02-19 15:21:15 +01:00
Hugo Osvaldo Barrera
2019028688 Configure systemd.service file to allow reloading
This allows `systemctl --user reload waybar` to reload waybar's config
as expected.
2021-02-19 14:33:38 +01:00
nullobsi
b4728f2e1d
Merge branch 'master' into master 2021-02-16 21:51:31 -08:00
Mattéo Delabre
d8706af2ea
Terminate custom module scripts on exit
(Fixes #358.)

Subprocesses created for custom module scripts were previously left
running when the parent Waybar process exited. This patch sets the
parent-death signal of child processes (PR_SET_PDEATHSIG on Linux,
PROC_PDEATHSIG_CTL on FreeBSD) to SIGTERM.

Caveats:

* This uses Linux-specific or FreeBSD-specific calls. I don’t know if
  this project targets other systems?
* There is a possibility that Waybar exits after calling `fork()`, but
  before calling `prctl` to set the parent-death signal. In this case,
  the child will not receive the SIGTERM signal and will continue to
  run. I did not handle this case as I consider it quite unlikely, since
  module scripts are usually launched only when Waybar starts. Please
  let me know if you think it needs to be handled.

Testing:

* With `htop` open, run Waybar v0.9.5 with a custom module that has an
  `exec` script. Terminate the Waybar process and notice that the
  script’s subprocess stays alive and is now a child of the init
  process.
* Run Waybar with this patch and follow the same steps as above. Notice
  that this time the script’s subprocess terminates when the parent
  exits.
2021-02-12 21:14:46 +01:00
Alex
08e19602f7
Merge pull request #1015 from alebastr/rfkill-events
rfkill code refactoring
2021-02-11 10:20:13 +01:00
nullobsi
b12b500bfc
Merge branch 'master' into master 2021-02-10 09:39:03 -08:00
Aleksei Bavshin
e786ea601e
fix(rfkill): handle EAGAIN correctly 2021-02-10 08:26:21 -08:00
Alex
36da8117c0
Merge pull request #1026 from euclio/idle-inhibit-fix
disable Idle Inhibitor module if unsupported
2021-02-10 10:32:09 +01:00
Aleksei Bavshin
6d5afdaa5f
fix(network): don't block the main thread on rfkill update
Moving rfkill to the main event loop had unexpected side-effects.
Notably, the network module mutex can block all the main thread events
for several seconds while the network worker thread is sleeping.

Instead of waiting for the mutex let's hope that the worker thread
succeeds and schedule timer thread wakeup just in case.
2021-02-09 21:27:22 -08:00
Aleksei Bavshin
52dd3d2446
refactor(bluetooth): remove interval and timer thread
The timer thread was always reading the same value from Rfkill state.
2021-02-09 21:27:21 -08:00
Aleksei Bavshin
ecc32ddd18
refactor(bluetooth): remove Bluetooth::status_
The string was always overwritten in `update()`; don't need to store
temporary value in the class.
2021-02-09 21:27:20 -08:00
Aleksei Bavshin
38c29fc242
refactor(rfkill): poll rfkill events from Glib main loop
Open rfkill device only once per module.
Remove rfkill threads and use `Glib::signal_io` as a more efficient way
to poll the rfkill device.
Handle runtime errors from rfkill and stop polling of the device instead
of crashing waybar.
2021-02-09 21:27:19 -08:00
Aleksei Bavshin
40f4dc9ecf
fix(rfkill): accept events larger than v1 event size
Kernel 5.11 added one more field to the `struct rfkill_event` and broke
unnecessarily strict check in `rfkill.cpp`. According to `linux/rfkill.h`,
we must accept events at least as large as v1 event size and should be
prepared to get additional fields at the end of a v1 event structure.
2021-02-09 21:27:18 -08:00
Andy Russell
95a6689077
disable Idle Inhibitor module if unsupported 2021-02-09 18:37:13 -05:00
Alex
c5f875dc5f
Merge pull request #1027 from alebastr/output-fixes
Fix more issues with duplicated bars
2021-02-09 11:17:16 +01:00
Aleksei Bavshin
89b5e819a3
fix(client): improve guard from repeated xdg_output.done events
Multiple .done events may arrive in batch. In this case libwayland would
queue xdg_output.destroy and dispatch all pending events, triggering
this callback several times for the same output.

Delete xdg_output pointer immediately on the first event and use the
value as a guard for reentering.
2021-02-08 23:25:58 -08:00
Aleksei Bavshin
6585381230
fix(client): remove unnecessary wl_output_roundtrip
At this point we're not awaiting any protocol events and flushing
wayland queue makes little sense. As #1019 shows, it may be even harmful
as an extra roundtrip could process wl_output disappearance and delete
output object right from under our code.
2021-02-08 22:30:01 -08:00
Alex
f3ce7ff86c
Merge pull request #1021 from jgmdev/taskbar-icons
[wlr/taskbar] Check StartupWMClass
2021-02-07 16:52:34 +01:00
jgmdev
e4a65c72dd Added missing 'if' space. 2021-02-07 04:27:16 -04:00
jgmdev
f14a73584f [wlr/taskbar] Added break when matching StartupWMClass is found. 2021-02-07 01:01:57 -04:00
jgmdev
fffb52dd93 [wlr/taskbar] Check StartupWMClass on list returned by g_desktop_app_info_searchi() 2021-02-07 00:50:52 -04:00
Alex
71f9ed3099
Merge pull request #1018 from jgmdev/taskbar-icons
[wlr/taskbar] Fix unhandled exception crash when icon name is a path.
2021-02-04 10:05:02 +01:00
jgmdev
e293b89f6b [wlr/taskbar] Removed unnecessary catch statement. 2021-02-04 04:57:08 -04:00
jgmdev
8a284e7c74 [wlr/taskbar] Declared load_icon_from_file() static. 2021-02-03 21:14:04 -04:00
jgmdev
22ed153004 [wlr/taskbar] Fix unhandled exception crash when icon name is a path. 2021-02-03 21:04:10 -04:00
Alex
ff9f09a24e
Merge pull request #1014 from Moonlight-Angel/disable-auto-back-and-forth
Add a way to configure auto_back_and_forth on Sway workspaces
2021-02-03 09:57:05 +01:00
Genesis
7eb2a6b709
Add a configuration entry to disable auto_back_and_forth on Sway workspaces 2021-02-02 21:58:26 +01:00
Alex
f2e9bb54f0
Merge pull request #1011 from jgmdev/taskbar-icons
[wlr/taskbar] More icon search improvements.
2021-02-02 09:03:35 +01:00
jgmdev
ac6667b1c9 [wlr/taskbar] More icon search improvements.
* Added ~/.local/share prefix to search in user defined apps.
* Add support for apps that don't properly set an id like pamac.
2021-02-02 01:03:28 -04:00
Alex
7d78a3aeef
Merge pull request #1001 from max-k/master
[sway/window] Add app_id to usable fields in title
2021-02-01 22:23:49 +01:00
Alex
aa088721c3
Merge pull request #1008 from nullobsi/label-sizing
improve module sizing options
2021-02-01 22:22:33 +01:00
nullobsi
97f7050d7d
Update man pages 2021-02-01 08:34:51 -08:00
Alex
e21be3382b
Merge pull request #1007 from nullobsi/fullwidth-length
[calendar] CJK locale formatting
2021-02-01 11:15:30 +01:00
nullobsi
72cd753c02
align should use rotate property 2021-02-01 01:44:51 -08:00
nullobsi
c8d7b6fa92
rename fixed-length to min-length 2021-01-31 14:03:49 -08:00
nullobsi
8c70513a24
add common align config property to set text alignment
add fixed-length property to set the fixed width of the label
2021-01-31 13:58:41 -08:00
nullobsi
35062ceb99
Merge branch 'master' into master 2021-01-31 12:01:49 -08:00
nullobsi
f05afb5468
Merge branch 'master' into fullwidth-length 2021-01-31 11:58:12 -08:00
nullobsi
ecba117dc0
remove unnessecary logging 2021-01-31 11:56:25 -08:00
nullobsi
d2a1f41750
Use g_unichar_iswide to properly align calendar on CJK locales 2021-01-31 11:53:53 -08:00
Alex
be777b8525
Merge pull request #1006 from jgmdev/taskbar-icons
Improved wlr/taskbar icon search.
2021-01-31 20:47:23 +01:00
jgmdev
3881af4bbe Improved wlr/taskbar icon search. 2021-01-31 15:37:26 -04:00
Alex
933e0f5280
Merge pull request #1003 from joshuachp/patch-1
Update waybar-bluetooth.5.scd
2021-01-31 15:44:00 +01:00
Joshua Chapman
149c1c2f1b
Update waybar-bluetooth.5.scd
Remove the `status` from the `tooltip-format` example since it will
throw error. Related to #685
2021-01-31 11:37:41 +01:00
nullobsi
6cc3212605
add length limits for MPD module tags 2021-01-30 18:04:59 -08:00
Thomas Sarboni
e19aa1d43a
[sway/window] Add app_id to usable fields in title 2021-01-30 01:41:45 +01:00
Alex
69a366dced
Merge pull request #996 from martin2250/master
add power formatter to battery module
2021-01-24 23:33:12 +01:00
Alex
c9ef731fd0
Merge pull request #992 from alebastr/990-duplicated-bars-on-output-events
Fix duplicate bars on xdg_output property changes
2021-01-24 23:31:34 +01:00
Martin Pittermann
cd97bdb30f document power formatter in battery module 2021-01-24 21:49:00 +01:00
Martin Pittermann
3bcf390484 add power to battery formatter 2021-01-24 21:39:14 +01:00
Aleksei Bavshin
7fa1c11833
fix(client): unsubscribe after receiving xdg_output.done event
Ignore any further xdg_output events. Name and description are constant
for the lifetime of wl_output in xdg-output-unstable-v1 version 2 and we
don't need other properties.

Fixes #990.
2021-01-21 08:35:38 -08:00
Aleksei Bavshin
ab0f2c13af
fix(client): attach styles only once
Gdk >= 3.10 has only one GdkScreen. No need to reattach styles on every
output change.
2021-01-21 08:32:44 -08:00
Kamus Hadenes
dc38640341
Merge branch 'master' into patch-1 2021-01-18 10:55:40 -03:00
Alex
66e5fda418
Merge pull request #964 from Ocisra/master
Add an option to use battery design capacity
2021-01-18 13:48:03 +01:00
Alex
e06d603154
Merge pull request #830 from Markaos/battery-custom-tooltip
Allow customization of battery module tooltip
2021-01-18 13:46:57 +01:00
Ocisra
392b0679c9
Merge branch 'master' into master 2021-01-18 12:39:25 +01:00
ocisra
336cc9f336 . 2021-01-18 12:39:41 +01:00
ocisra
0bd96f339e typo 2021-01-18 12:38:02 +01:00
Marek Černoch
ce0bf6269b
battery: use timeTo as the default format name 2021-01-18 12:32:51 +01:00
Marek Černoch
fdaba72974
Merge branch 'master' into battery-custom-tooltip 2021-01-18 12:22:44 +01:00
Alex
a2d98ddde8
Merge pull request #842 from rdnetto/config-reloading
Implement support for reloading of config files.
2021-01-18 12:06:25 +01:00
Alex
51bfe9eaf6
Merge pull request #881 from olemartinorg/master
Support format-{state} for cpu/disk/memory
2021-01-18 12:02:59 +01:00
Alex
a25cf4d188
Merge pull request #891 from danieldg/temp-tooltip
Add "tooltip-format" to temperature module
2021-01-18 12:01:34 +01:00
Alex
ede1146ddc
Merge pull request #903 from spk/simpleclock
Add simpleclock as fallback when hhdate is not available
2021-01-18 12:00:48 +01:00
Alex
b916ed3cae
Merge pull request #980 from sjtio/master
add option 'tag-labels' to river/tags
2021-01-18 11:56:37 +01:00
sjtio
9d5ce45f3b add option tag-labels to river/tags 2021-01-15 01:07:56 +00:00
Kamus Hadenes
a7941a00c5
fix missing parentheses 2021-01-12 19:10:34 -03:00
Kamus Hadenes
f4ffb21c8c
improve sink/source separation
Add additional fields, namely `source_volume` and `source_desc`
Add `tooltip-format`, reverting to default behavior if not specified
Add additional CSS classes, namely `sink-muted` and `source-muted`
2021-01-12 18:51:44 -03:00
Alex
29cba22405
Merge pull request #969 from alebastr/wlr-taskbar-fixes
Fix issues in wlr/taskbar
2021-01-11 09:23:40 +01:00
Aleksei Bavshin
b79301a5bd
fix(wlr/taskbar): protocol error when reconnecting outputs
Destroy request is not specified for foreign toplevel manager and it
does not prevent the compositor from sending more events.
Libwayland would ignore events to a destroyed objects, but that could
indirectly cause a gap in the sequence of new object ids and trigger
error condition in the library.

With this commit waybar sends a `stop` request to notify the compositor
about the destruction of a toplevel manager. That fixes abnormal
termination of the bar with following errors:
```
(waybar:11791): Gdk-DEBUG: 20:04:19.778: not a valid new object id (4278190088), message toplevel(n)

Gdk-Message: 20:04:19.778: Error reading events from display: Invalid argument
```
2021-01-08 15:41:48 -08:00
Aleksei Bavshin
ef9c3ef1cb
fix(wlr/taskbar): fix wl_array out-of-bounds access
wl_array->size contains the number of bytes in the array instead of the
number of elements.
2021-01-08 15:28:29 -08:00
Alex
1f620828c2
Merge pull request #965 from ofwinterpassed/master
Fixing logic in getIcon
2021-01-03 19:55:33 +01:00
Johannes Christenson
f20dbbbd74 Fixing logic in getIcon 2021-01-03 19:08:06 +01:00
ocisra
00046d309d add an option to use battery design capacity as a reference for percentage informations 2021-01-03 15:25:19 +01:00
Alex
7b7edc9029
Merge pull request #949 from jbeich/ci
CI: add FreeBSD to Actions
2021-01-02 11:56:08 +01:00
Alex
bd208fcec6
Merge pull request #956 from AndreasBackx/feature/output-identifier
Added waybar_output.identifier support. #602
2021-01-02 11:52:14 +01:00
Alex
f233d27b78
Merge pull request #959 from dorgnarg/fix-section-css-classes
Fix for group module selectors when bar is vertical
2020-12-28 23:15:46 +01:00
dorgnarg
42e8667773 Better way of doing it by just moving the original delcarations after everything's for sure been set 2020-12-28 13:44:16 -07:00
dorgnarg
c0361e8546 A hopeful fix to the module section classes when the bar is vertical 2020-12-28 13:34:59 -07:00
Andreas Backx
3fbbbf8541
Removed redundant log line. 2020-12-25 23:31:29 +00:00
Andreas Backx
e5684c6127
Separated name and description setup and moved bar creation to done callback. 2020-12-25 23:03:01 +00:00
Andreas Backx
0233e0eeec
Added waybar_output.identifier support.
Resolves #602.
2020-12-25 20:54:38 +00:00
Alex
7fbd3657e8
Merge pull request #955 from ilpianista/bugfix/revert-pipewire-pulse
Revert "Fix waybar-pulseaudio with pipewire-pulse"
2020-12-25 17:50:01 +01:00
Andrea Scarpino
005af7f7b7 Revert "Fix waybar-pulseaudio with pipewire-pulse"
This reverts commit 0d03c1d4da50ef248b197c29301e7cd879f98336.
2020-12-25 17:37:21 +01:00
Alex
94f8f74f51
Merge pull request #953 from Alexays/revert-901-patch-1
Revert "Replace lowercase "k" with uppercase "K" to make it look more consistent"
2020-12-25 09:28:22 +01:00
Alex
f391186749
Revert "Replace lowercase "k" with uppercase "K" to make it look more consistent" 2020-12-25 09:28:05 +01:00
Jan Beich
e4340a7536 CI: add FreeBSD to Actions 2020-12-23 20:40:44 +00:00
Alex
dd2792b204
Merge pull request #937 from ilpianista/bugfix/pipewire-pulse
Fix waybar-pulseaudio with pipewire-pulse
2020-12-23 21:39:40 +01:00
Alex
08ee5385ec
Merge pull request #942 from danielrainer/patch-1
Fix typo in states man page
2020-12-23 21:37:47 +01:00
Alex
73eb517b86
Merge pull request #946 from narilth/sway-solo-css-fix
Fix Sway #waybar.solo CSS rule applying on split
2020-12-23 21:37:25 +01:00
Alex
4b29aef048
chore: v0.9.5 2020-12-23 21:33:40 +01:00
Harit Kapadia
cb7baee045 Fixed compile error 2020-12-18 18:17:17 -05:00
Harit Kapadia
85ca5027f4 Fix Sway #waybar.solo CSS rule applying on split
This error occurs because of an incorrect assumption that the size of
the list of nodes that contains the focused window is the number of
windows in a workspace.

The windows in a workspace are stored as a tree by Sway, rather than a
list, so the number of windows has to be found by counting the leaves of
a workspace tree.
2020-12-18 18:14:14 -05:00
danielrainer
50ecc97284
Fix typo 2020-12-12 23:21:17 +01:00
Andrea Scarpino
d382734698
Merge branch 'master' into bugfix/pipewire-pulse 2020-12-09 18:14:22 +01:00
Alex
f91dc7fb6e
Merge pull request #935 from alebastr/ignore-emulated-scroll-events
fix(sway/workspaces): ignore emulated scroll events
2020-12-05 21:02:24 +01:00
Andrea Scarpino
0d03c1d4da Fix waybar-pulseaudio with pipewire-pulse 2020-12-04 23:51:10 +01:00
Aleksei Bavshin
68b6136989
fix(sway/workspaces): ignore emulated scroll events
GDK Wayland backend can emit two events for mouse scroll: one is a
GDK_SCROLL_SMOOTH and the other one is an emulated scroll event with
direction. We only receive emulated events on a window, thus it is not
possible to handle these in a module and stop propagation.

Ignoring emulated events should be safe since those are duplicates of
smooth scroll events anyways.

Fixes #386
2020-12-04 01:09:42 -08:00
Alex
930bb4ba97
Merge pull request #934 from l3nkz/wlr-taskbar-updates
Update to the latest version of the foreign toplevel manager protocol
2020-12-04 09:37:07 +01:00
Till Smejkal
18f129a712 Spit out a warning when trying to set/unset fullscreen without server supporting it
Previously we only checked when connecting to the server whether it had
the minimum required version but didn't act accordingly in the various
functions that use the functionality of later versions. If there were a
server in the wild, that actually would not have this functionality,
there would have been a crash. Fix this by checking the version before
using the functionality and gracefully abort it.
2020-12-04 08:04:02 +01:00
Till Smejkal
bb60e68b9d Update to the latest version of the foreign toplevel manager protocol
There was an update the of the toplevel manager protocol. Unfortunately,
there are no new interesting updates with regard to the taskbar
implementation. Nonetheless, update the protocol xml files to the latest
version so that the implementation is up-to-date.

While being there, also change the debug warning that is shown when
there is a version mismatch between the server and client version of the
protocol.
2020-12-04 08:03:43 +01:00
Alex
a70468a2ea
Merge pull request #932 from pedrocr/speedup-battery-updates
Don't update battery list on every update
2020-12-03 11:35:51 +01:00
Pedro Côrte-Real
09c89bcd20 Don't update battery list on every update
Speedup battery state update by only updating the battery list when we
get a CREATE/DELETE event in the directory or whenever we do a full
refresh on the interval.
2020-12-03 09:52:33 +00:00
Alex
cc365a8175
Merge pull request #923 from pedrocr/fix-battery-calculations
Simplify and improve battery state calculations
2020-12-02 14:35:56 +01:00
Alex
ff0d3292a4
Merge pull request #844 from tchebb/add-sway-module-margins
style: add 4px margins to window and workspaces modules
2020-12-02 14:34:45 +01:00
Thomas Hebb
1fe0bcacc0 style: add 4px margins to window and workspaces modules
These modules, unlike others, have no horizontal margins by default.
This means that they'll appear uncomfortably close together in any
config that puts them side-by-side. In general, the default style should
make configs with any module ordering look good. Add the same 4px
horizontal margins that other module have to these.

To preserve the current default appearance, exempt the workspace module
from a margin on the appropriate side when it's the leftmost or
rightmost module on the bar.
2020-12-02 05:12:48 -08:00
Alex
f74c22e851
Merge pull request #930 from tchebb/fix-compiler-warnings
Fix a few compiler warnings
2020-12-01 09:09:02 +01:00
Alex
1ea662a08d
Merge pull request #928 from tchebb/fix-uninitialized-value
clock: initialize cached date
2020-12-01 09:08:19 +01:00
Alex
881bb62f88
Merge pull request #927 from tchebb/log-gtk-tree
Add debug log message to print each bar's widget tree
2020-12-01 09:07:33 +01:00
Alex
f6ef8b41df
Merge pull request #929 from tchebb/update-fmt
Update fmt subproject to 7.1.3
2020-12-01 09:06:55 +01:00
Alex
c1640ed16c
Merge pull request #931 from jtheoof/jtheoof/fix/service
fix(systemd): restart when service fails
2020-12-01 09:05:23 +01:00
Jeremy Attali
dd596a5c6c fix(systemd): restart when service fails
The current service doesn't play too nice with Sway when it is started
from [sway service](https://github.com/xdbob/sway-services).

Waybar is started before the system has a display.

```
Nov 30 22:11:23 ansan waybar[1352]: Unable to init server: Could not
connect: Connection refused
Nov 30 22:11:23 ansan waybar[1352]: cannot open display:
Nov 30 22:11:23 ansan systemd[1306]: waybar.service: Main process
exited, code=exited, status=1/FAILURE
Nov 30 22:11:23 ansan systemd[1306]: waybar.service: Failed with result
'exit-code'.
```

Restarting the service after the system has been initialized works nicely,
so this restart rule should do the trick without tinkering with the
target.
2020-11-30 23:24:30 -05:00
Thomas Hebb
29f78e0426 Fix a few compiler warnings
There was one uninitialized value warning and two mismatched-sign
compare warnings. They both appear valid, the first occurring when MPD's
"format-stopped" contains {songPosition} or {queueLength} and the second
occurring when the clock's "timezones" array is more than 2 billion
items long (not likely, I admit). Fix both issues.
2020-11-30 18:07:22 -08:00
Thomas Hebb
407bf27401 Update fmt subproject to 7.1.3
There is no particular change in this update that we require. However,
our previous version, 5.3.0, is nearly two years old, so it seems
prudent to pull in all the upstream fixes that have been made since
then.

New wrap file taken from https://wrapdb.mesonbuild.com/fmt and modified
to download from GitHub as per commit 99dde1aff8db ("Download patch
files from Github instead of wrapdb").
2020-11-30 17:35:02 -08:00
Thomas Hebb
85df7ce2da Add debug log message to print each bar's widget tree
This is very useful when writing CSS that affects more than just a
single widget. Pass `-l debug` to enable debug logging and show this
information.

Example output:

    [2020-11-30 12:38:51.141] [debug] GTK widget tree:
    window#waybar.background.bottom.eDP-1.:dir(ltr)
      decoration:dir(ltr)
      box.horizontal:dir(ltr)
        box.horizontal.modules-left:dir(ltr)
          widget:dir(ltr)
            box#workspaces.horizontal:dir(ltr)
          widget:dir(ltr)
            label#mode:dir(ltr)
          widget:dir(ltr)
            label#window:dir(ltr)
        box.horizontal.modules-center:dir(ltr)
        box.horizontal.modules-right:dir(ltr)
          widget:dir(ltr)
            box#tray.horizontal:dir(ltr)
          widget:dir(ltr)
            label#idle_inhibitor:dir(ltr)
          widget:dir(ltr)
            label#pulseaudio:dir(ltr)
          widget:dir(ltr)
            label#network:dir(ltr)
          widget:dir(ltr)
            label#cpu:dir(ltr)
          widget:dir(ltr)
            label#memory:dir(ltr)
          widget:dir(ltr)
            label#temperature:dir(ltr)
          widget:dir(ltr)
            label#backlight:dir(ltr)
          widget:dir(ltr)
            label#battery:dir(ltr)
          widget:dir(ltr)
            label#clock:dir(ltr)
2020-11-30 17:23:02 -08:00
Thomas Hebb
ad40511358 Update spdlog subproject to 1.8.1
Among other changes, this adds spdlog::should_log(), which lets us
easily determine whether a log message will be printed so that we can
avoid extra computation when unnecessary.

New wrap file taken from https://wrapdb.mesonbuild.com/spdlog and
modified to download from GitHub as per commit 99dde1aff8db ("Download
patch files from Github instead of wrapdb").
2020-11-30 17:11:33 -08:00
Thomas Hebb
e8dbdee238 Make spdlog use the same version of fmt we use
spdlog bundles a version of fmt. However, we also depend on and use fmt
directly. If we don't tell spdlog not to use its bundled version, we end
up with two versions of fmt in our include path, since both libraries
are header-only, meaning any slight API mismatches will cause build
failures and undesired behavior.

We seem to have gotten lucky so far, but I ran into all sorts of issues
when I tried to update to a newer version of spdlog. This change
prevents them.
2020-11-30 17:04:19 -08:00
Thomas Hebb
c784e8170e clock: initialize cached date
We are currently using this value once before it's initialized, since we
check it before we set it in Clock::calendar_text(). This was caught by
Valgrind, producing the following error:

    ==8962== Conditional jump or move depends on uninitialised value(s)
    ==8962==    at 0x138285: date::operator==(date::year_month_day const&, date::year_month_day const&) (date.h:2793)
    ==8962==    by 0x135F11: waybar::modules::Clock::calendar_text[abi:cxx11](waybar::modules::waybar_time const&) (clock.cpp:111)
    ==8962==    by 0x13587C: waybar::modules::Clock::update() (clock.cpp:62)
    ==8962==    by 0x156EFA: waybar::Bar::getModules(waybar::Factory const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}::operator()() const (bar.cpp:577)
    ==8962==    by 0x157F39: sigc::adaptor_functor<waybar::Bar::getModules(waybar::Factory const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}>::operator()() const (adaptor_trait.h:256)
    ==8962==    by 0x157D94: sigc::internal::slot_call0<waybar::Bar::getModules(waybar::Factory const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, void>::call_it(sigc::internal::slot_rep*) (slot.h:136)
    ==8962==    by 0x5177B21: Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (in /usr/lib/libglibmm-2.4.so.1.3.0)
    ==8962==    by 0x517DB5B: Glib::IOSource::dispatch(sigc::slot_base*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
    ==8962==    by 0x5188B96: Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
    ==8962==    by 0x5CBC913: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6600.2)
    ==8962==    by 0x5D107D0: ??? (in /usr/lib/libglib-2.0.so.0.6600.2)
    ==8962==    by 0x5CBB120: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.6600.2)

Initialize the value to prevent the error.
2020-11-30 12:49:48 -08:00
Pedro Côrte-Real
31a4aff1f8 Don't show battery estimate at 0
If we think we're done might as well not show 0h 0min as the estimate
and just not show anything.
2020-11-27 14:23:37 +00:00
Pedro Côrte-Real
89ca155c43 Support hotplugging of batteries
Refresh the list of batteries on update to handle hotplug correctly.
Probably fixes #490.
2020-11-27 13:56:04 +00:00
Pedro Côrte-Real
908fa2c6c2 Make the battery full-at go to 100%
full-at was capped at the value instead of allowing the battery to show
100% when you were at the full-at value. Uncapping makes more sense as
it makes the full-at value the new 100% and the scale goes down from
there. Whereas before the battery would stay at the full-at value until
it went down enough which is unrealistic.
2020-11-27 11:02:11 +00:00
Pedro Côrte-Real
f45d582957 Always mark battery as full at 100%
Since we're now clamping at 100% and rounding, mark as full at that
point. Some batteries will stay in charging state for a long time while
stuck at the same charge level. Just mark them as full to not be
confusing.
2020-11-27 11:02:11 +00:00
Pedro Côrte-Real
eb3f4216d4 Show battery state as rounded number
Round the battery charge state so that 99.9% shows as 100%.
2020-11-27 11:02:11 +00:00
Pedro Côrte-Real
e0cdcb6e30 Handle charging above 100% gracefully
When calibrating a battery it's possible to go above 100%. Handle that
gracefully by just presenting the battery as full and 100%.
2020-11-27 11:02:11 +00:00
Pedro Côrte-Real
a7056f7cce Calculate battery state from just energy values
The energy values are all that's needed to calculate the battery state.
Using other values for the total capacity results in broken results in
some cases. This matches the output of TLP and i3status, while also
being more straightforward.
2020-11-27 11:02:11 +00:00
Alex
14a6cec6d1
Merge pull request #924 from alebastr/build-fixes
Build fixes
2020-11-27 09:01:50 +01:00
Daniel De Graaf
3b576ae12d Add "tooltip-format" to temperature module 2020-11-26 20:23:19 -05:00
Aleksei Bavshin
2695985da0
fix: compilation error with gcc 11
../src/modules/network.cpp:22:6: error: ‘optional’ in namespace ‘std’ does not name a template type
   22 | std::optional<unsigned long long> read_netstat(std::string_view category, std::string_view key) {
      |      ^~~~~~~~
../src/modules/network.cpp:7:1: note: ‘std::optional’ is defined in header ‘<optional>’; did you forget to ‘#include <optional>’?
    6 | #include "util/format.hpp"
  +++ |+#include <optional>
    7 | #ifdef WANT_RFKILL
2020-11-26 15:42:44 -08:00
Aleksei Bavshin
85e00b2aab
fix: build fails with meson < 0.53.0
meson.build:12:0: ERROR: Module "fs" does not exist

Fixes #909
2020-11-26 15:40:24 -08:00
Alex
05b12602d4
fix: don't check against nullptr 2020-11-26 15:16:55 +01:00
Alex
374d5ae5a1
fix: check get_icon return non nullpt 2020-11-26 15:10:33 +01:00
Alex
fd11711673
Merge pull request #920 from Arnaudv6/patch-2
update actions on taskbar man page
2020-11-22 13:09:28 +01:00
Arnaud Vallette d'Osia
8282385074
update actions on taskbar man page 2020-11-22 13:06:46 +01:00
Alex
ef7638d45a
Merge pull request #918 from Arnaudv6/patch-1
add minimize-raise() action
2020-11-22 11:08:16 +01:00
Arnaud Vallette d'Osia
d8dafa7ecc
add minimize-raise() action 2020-11-18 20:12:07 +01:00
Alex
faacd76f62
Merge pull request #892 from alebastr/layer-surfaces-v3
Refactor layer surface implementations (again)
2020-11-02 10:17:57 +01:00
Alex
c21e0f6cf3
Merge pull request #906 from JordanL2/master
Fix for syncing idle inhibitor across outputs
2020-11-02 10:16:24 +01:00
Jordan Leppert
9785a89013 Making active a bool 2020-11-01 18:25:41 +00:00
Jordan Leppert
b015836e7b Ensure style class is removed from all IdleInhibitor instances by moving it to update(). 2020-11-01 18:17:51 +00:00
Jordan Leppert
a9dae931c7 Renaming idle_inhibitor_modules and idle_inhibitor_status to shorter, more convenient names. 2020-11-01 17:14:05 +00:00
Jordan Leppert
071cb86b45 Moving idle inhibitor shared stuff out of Client and into idle_inhibitor module as static members. 2020-11-01 17:09:48 +00:00
Jordan Leppert
c6743988d3 Removing 'click_param' as it is no longer used. 2020-11-01 16:03:39 +00:00
Jordan Leppert
bb33427f65 Making idle_inhibitor_ private and initialised in constructor, as it was before. 2020-11-01 13:38:58 +00:00
Jordan Leppert
4889e655eb Since idle_inhibitor's have a surface, we should have one for each inhibitor module. Therefore, the status is stored on the Client, and all modules create or destroy their inhibitors depending on Client's idle_inhibitor_status. Also, when modules are destroyed they remove themselves from Client's idle_inhibitor_modules. 2020-11-01 13:33:28 +00:00
Jordan Leppert
aa4fc3dd29 Idle inhibitor toggle no longer update all modules - a list of idle inhibitors is maintained on the Client. 2020-10-31 17:30:25 +00:00
Jordan Leppert
188611a767 Merge from master 2020-10-31 16:37:20 +00:00
Jordan Leppert
4872091442 Draft fix for syncing idle inhibitor across outputs. The idle_inhibitor surface has been moved to Client, all instances of idle inhibitor module now use one surface between them. Any time an idle inhibitor is clicked, currently it force updates ALL modules on all outputs, this needs work. 2020-10-31 16:31:27 +00:00
Alex
5600783151
Merge pull request #905 from JordanL2/master
Tooltips no longer completely break if a custom module updates too frequently
2020-10-31 14:04:41 +01:00
Jordan Leppert
abe1fa5bd4 Custom module - only call label_.set_tooltip_markup if tooltip markup has actually changed - fixes tooltips not appearing at all if a custom module is updating too frequently. 2020-10-31 12:21:51 +00:00
Laurent Arnoud
96d965fe04
Add simpleclock as fallback when hhdate is not available
ref https://github.com/Alexays/Waybar/issues/668
2020-10-29 19:40:28 +01:00
Aleksei Bavshin
9c566564e1
fix(bar): address some of RawSurfaceImpl resizing issues 2020-10-28 08:22:26 -07:00
Aleksei Bavshin
fc5906dbd4
feat(bar): change layer to bottom when hidden
Invisible bar on a `top` layer would still intercept pointer events and
stop them from reaching windows below. Always changing the layer to
to `bottom` along with making bar invisible would prevent that.
2020-10-28 08:18:49 -07:00
Aleksei Bavshin
fe3aeb36c5
refactor(bar): wrap layer_surface pointer in unique_ptr 2020-10-28 08:15:02 -07:00
Aleksei Bavshin
591a417b7d
fix(bar): rework surface commit calls for RawSurfaceImpl
wayland log shows that some changes were committed twice and some
weren't committed until the next redraw.
2020-10-28 08:14:57 -07:00
Aleksei Bavshin
d4d35e6b2b
chore(subprojects): update gtk-layer-shell to 0.4.0 2020-10-28 08:08:04 -07:00
Aleksei Bavshin
f97de599dd
refactor: header cleanup
Replace a couple of header includes with forward declarations.
2020-10-28 08:08:03 -07:00
Aleksei Bavshin
f01996ae99
fix(bar): CamelCase SurfaceImpl method names 2020-10-28 08:07:40 -07:00
Aleksei Bavshin
7735c80d0e
refactor(bar): Split GLS and raw layer-shell implementations
Extract two surface implementations from the bar class: GLSSurfaceImpl
and RawSurfaceImpl. This change allowed to remove _all_ surface type
conditionals and significantly simplify the Bar code.

The change also applies PImpl pattern to the Bar, allowing to remove
some headers and fields from `bar.hpp`.
2020-10-28 07:53:37 -07:00
Aleksei Bavshin
2b3d7be9cb
feat(bar): let gtk-layer-shell manage exclusive zone
Previous attempts to use auto exclusive zone from gtk-layer-shell failed
because gls was expecting real booleans (`TRUE`/`FALSE`) as set_anchor
arguments. With that being fixed, gtk_layer_auto_exclusive_zone_enable
makes gls handle everything related to the bar resizing.

The only remaining purpose of onConfigureGLS is to log warnings and bar
size changes; gtk-layer-shell code path no longer needs saved width_ or
height_ values.
2020-10-28 07:53:32 -07:00
Alex
9fa2cc45d2
Merge pull request #901 from 1sixth/patch-1
Replace lowercase "k" with uppercase "K" to make it look more consistent
2020-10-28 13:53:15 +01:00
1sixth
7a0c0ca613
replace lowercase "k" with uppercase "K"
Other units are all uppercased, so using an uppercased "K" makes it look more consistent (especially when {bandwidthUpBits} or something like that is used).
2020-10-28 19:39:50 +08:00
Alex
48a8dbece9
Merge pull request #898 from alebastr/fix-globals-versions
fix(wlr/taskbar): do not bind to unsupported protocol versions
2020-10-25 20:43:18 +01:00
Aleksei Bavshin
67d54ef3d5
fix(wlr/taskbar): do not bind to unsupported protocol versions
It's not allowed to bind to a higher version of a wayland protocol than
supported by the client. Binding wlr-foreign-toplevel-manager-v1 v3 to
a generated code for v2 causes errors in libwayland due to a missing
handler for `zwlr_foreign_toplevel_handle_v1.parent` event.
2020-10-25 10:26:44 -07:00
Alex
d5fa20dd33
Merge pull request #895 from Flakebi/mpd
Fix various mpd bugs
2020-10-24 10:47:14 +02:00
Flakebi
be3f47b374
Fix various mpd bugs
- Add elapsedTime and totalTime to tooltip format arguments
- Catch format exceptions and print error
- Copy mpd connection error message before it gets freed
- Update display after connection to mpd was lost
2020-10-23 21:13:20 +02:00
Alex
9ea13e790d
Merge pull request #879 from niktob560/sway-language-module
Feature: created sway language submodule
2020-10-20 12:43:26 +02:00
nikto_b
f13f49ccb5
Merge branch 'master' into sway-language-module 2020-10-20 12:22:22 +03:00
nikto_b
2cc00ab853
Merge branch 'sway-language-module' of https://github.com/niktob560/Waybar into sway-language-module 2020-10-20 12:21:38 +03:00
nikto_b
ed402d7583
feature: language submodule - created man page 2020-10-20 12:20:58 +03:00
Alex
acf990743e
Merge pull request #888 from jbenden/mpd-password
mpd: support password protected MPD
2020-10-20 09:06:32 +02:00
Aleksei Bavshin
ebdeb86703
feat(swaybar-ipc): handle visibility_by_modifier update 2020-10-19 19:35:55 -07:00
Aleksei Bavshin
bc13453155
feat(swaybar-ipc): handle mode update 2021-09-15 22:39:51 +07:00
Aleksei Bavshin
23e5181cac
feat(swaybar-ipc): add swaybar IPC client 2020-10-19 19:34:48 -07:00
Aleksei Bavshin
452dcaa5d3
feat(client): store bar_id argument 2021-11-19 20:28:41 -08:00
Aleksei Bavshin
5905078e56
doc: document mode option of the bar config 2021-11-19 21:02:29 -08:00
Aleksei Bavshin
52361ed360
refactor(bar): make setVisible switch between "default" and "invisible" modes 2021-11-21 11:00:57 -08:00
Aleksei Bavshin
87b43c2171
feat(bar): attach CSS class mode-{mode} to window when setting mode 2021-11-19 20:02:57 -08:00
Aleksei Bavshin
ae88d7d8dc
feat(bar): use "default" mode to store global options
Read `layer`, `exclusive`, `passthrough` into a special mode "default".
Drop `overlay` layer hacks, as it's easier to use `"mode": "overlay"`
for the same result.
2021-11-19 19:31:41 -08:00
Aleksei Bavshin
6d2ba7a75b
feat(bar): store modes as a map of presets
This allows to apply the mode atomically and adds possibility of
defining custom modes (to be implemented).
2021-11-19 19:29:51 -08:00
Aleksei Bavshin
03a641ed83
feat(bar): support swaybar mode for configuring window
Use `mode` (`waybar::Bar::setMode`) as a shorthand to configure bar
visibility, layer, exclusive zones and input event handling in the same
way as `swaybar` does.
See `sway-bar(5)` for a description of available modes.
2021-09-15 22:35:50 +07:00
Aleksei Bavshin
3e2197a82a
test(util): add tests for SafeSignal
Add a fixture for writing tests that require interaction with Glib event
loop and a very basic test for SafeSignal.
2020-12-28 17:28:03 -08:00
Aleksei Bavshin
79883dbce4
feat(util): optimize SafeSignal for events from the main thread 2020-12-28 17:31:23 -08:00
Aleksei Bavshin
8a0e76c8d8
fix(util): avoid creating temporary functor for each event 2020-10-19 18:42:25 -07:00
Aleksei Bavshin
285a264aae
feat(util): SafeSignal class for cross-thread signals with arguments
Implement a wrapper over Glib::Dispatcher that passes the arguments to
the signal consumer via synchronized `std::queue`.
Arguments are always passed by value and the return type of the signal
is expected to be `void`.
2020-12-28 17:26:55 -08:00
Joseph Benden
587eb5fdb4
mpd: support password protected MPD
- Add MPD module option `password`, and document it.
- Add logic to send the password, directly after connecting to
  MPD.

Fixes: #576
Signed-off-by: Joseph Benden <joe@benden.us>
2020-10-19 11:54:36 -07:00
Alex
f151d435a8
Merge pull request #887 from jbenden/jbenden/mpd-module
mpd: revamped to event-driven, single-threaded v2
2020-10-19 09:05:54 +02:00
Joseph Benden
8f961ac397
mpd: revamped to event-driven, single-threaded
Fix MPD connection issues by converting/rewriting module into a
state-machine driven system. It is fully single-threaded and uses
events for transitioning between states. It supports all features
and functionality of the previous MPD module.

Signed-off-by: Joseph Benden <joe@benden.us>
2020-10-18 10:37:57 -07:00
Alex
cf5db8f663
Merge pull request #886 from Alexays/revert-877-jbenden/mpd-module
Revert "mpd: revamped to event-driven, single-threaded"
2020-10-18 10:45:44 +02:00
Alex
54beabb9dc
Revert "mpd: revamped to event-driven, single-threaded" 2020-10-18 10:45:31 +02:00
Alex
41752ad5a2
Merge pull request #877 from jbenden/jbenden/mpd-module
mpd: revamped to event-driven, single-threaded
2020-10-18 10:39:12 +02:00
nikto_b
8349316fcd
Merge branch 'master' into sway-language-module 2020-10-12 13:31:39 +03:00
Ole Martin Handeland
4229e9b2ca Implemented format-{state} for cpu/disk/memory 2020-10-12 02:05:26 +02:00
Alex
5e86014443
Merge pull request #825 from Anakael/taskbar/remove-trim
Remove trim usage in format
2020-10-11 23:06:51 +02:00
Alex
d6381eeaff
Merge branch 'master' into taskbar/remove-trim 2020-10-11 23:06:32 +02:00
Alex
45f7f9b07a
Merge branch 'master' into config-reloading 2020-10-11 23:00:25 +02:00
Alex
6dc1892494
Merge pull request #880 from ChilloManiac/master
added module group selectors for styling
2020-10-11 22:58:09 +02:00
Christoffer Noerbjerg
e9b2d275c8 added module group selectors for styling 2020-10-11 22:36:30 +02:00
Alex
7b78a29f3f
Merge pull request #843 from tchebb/align-workspace-text
style(workspaces): align text with other modules
2020-10-11 14:40:45 +02:00
Alex
f270d317bb
Merge pull request #869 from lrhel/master
Add format-icons for workspace's name entry in sway/workspaces module
2020-10-11 14:39:39 +02:00
nikto_b
cc3acf8102
feature: created sway language submodule; added styles & config part for a sway language submodule 2020-10-10 19:09:18 +03:00
Joseph Benden
21fdcf41c3
mpd: revamped to event-driven, single-threaded
Fix MPD connection issues by converting/rewriting module into a
state-machine driven system. It is fully single-threaded and uses
events for transitioning between states. It supports all features
and functionality of the previous MPD module.

Signed-off-by: Joseph Benden <joe@benden.us>
2020-10-08 16:43:22 -07:00
Alex
bcb63b8ccb
Merge pull request #849 from ericonr/sndio
Add sndio module.
2020-10-04 20:51:00 +02:00
Érico Rolim
22e46ea6cc sndio: Add reconnection support. 2020-10-04 14:59:20 -03:00
Érico Rolim
aa625f5196 .travis.yml: add sndio to FreeBSD run.
Also add necessary environment variables and move to /latest, which has
sndio-1.7.0.
2020-10-04 02:54:57 -03:00
Érico Rolim
1f66b06f93 Dockerfiles/alpine: add sndio-dev. 2020-10-04 02:54:57 -03:00
Érico Rolim
e4427cb017 sndio: Add module.
- can control sndio: change volume, toggle mute
- appearance is somewhat dynamic: takes muted status into account
- uses polling inside sleeper thread to update values
- uses sioctl_* functions, requires sndio>=1.7.0.
2020-10-04 02:54:57 -03:00
Alex
93afe5113a
Merge pull request #870 from minijackson/add-global-config-directory
Add back unprefixed global config directory
2020-10-02 20:17:06 +02:00
Minijackson
73681a30e5
man: add the prefixed path were config is loaded 2020-09-29 22:31:28 +02:00
Minijackson
e9b5be9adb
fix: add global /etc/xdg/waybar back. fixes #714 2020-09-29 22:28:39 +02:00
lrhel
83d679bf72 Add format-icons for workspace's name entry 2020-09-26 23:06:12 +00:00
Alex
b9f83dc77d
Merge pull request #868 from danieldg/fix-backward-forward
Fix "on-click-backward" when "on-click-forward" is not present
2020-09-26 22:29:03 +02:00
Daniel De Graaf
7ba14c2097 Fix "on-click-backward" when "on-click-forward" is not present 2020-09-26 15:55:06 -04:00
Alex
3014082ba2
Merge pull request #862 from xenrox/disk-state
Add state to disk module
2020-09-23 14:18:12 +02:00
Thorben Günther
12016d35bb
disk module: add state for percentage_used 2020-09-23 14:01:25 +02:00
Alex
6db795401a chore: v0.9.4 2020-09-21 12:18:42 +02:00
Alex
43ca8f7050
Merge pull request #861 from Alexays/fix-network
revert: restore eventfd
2020-09-21 12:10:01 +02:00
Alex
063c5a5ace
Merge branch 'master' into fix-network 2020-09-21 12:09:54 +02:00
Alex
fcab026512
Merge pull request #850 from z3ntu/poll-h
Fix non-standard usage of <sys/poll.h>
2020-09-21 10:58:27 +02:00
Alex
95f505a457 revert: restore eventfd 2020-09-21 10:56:40 +02:00
Alex
577dc1fa00
Merge branch 'master' into poll-h 2020-09-21 10:40:46 +02:00
Alex
dc625490f8
Merge pull request #855 from Koffeinfriedhof/master
Added song position and queue length.
2020-09-14 09:36:37 +02:00
koffeinfriedhof
c651670222 Added song position and queue length. 2020-09-13 18:49:47 +02:00
Alex
459df4e0c9
Merge pull request #851 from tamirzb/exec-on-event
Add an "exec-on-event" config for the custom module
2020-09-08 09:18:32 +02:00
Alex
eb53fa8d0e
Merge pull request #847 from MusiKid/memory-tooltip
Add format for memory tooltip
2020-09-07 12:15:26 +02:00
Tamir Zahavi-Brunner
9e3e4368c7 custom: Add "exec-on-event" config
This config allows disabling the default behavior of re-executing the
script whenever an event that has a command set is triggered.

Fixes #841
2020-09-06 22:49:18 +03:00
Luca Weiss
98b6d7f283
Fix non-standard usage of <sys/poll.h>
Fixes the following build warning with musl libc:

In file included from ../src/util/rfkill.cpp:24:
/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
    1 | #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
      |  ^~~~~~~
2020-09-06 21:48:42 +02:00
MusiKid
225a0eccdd
Add support for memory tooltip 2020-09-02 14:35:39 +02:00
Thomas Hebb
1b22e2b320 style(workspaces): align text with other modules
Currently, the bottom border on workspace buttons eats into the box size
and causes the text to sit higher than in other modules. This is ugly
when there are other modules (like the window title) right next to the
workspace module. To fix the issue, create the bottom border using an
inset box-shadow, which doesn't affect the box's content sizing.
2020-08-29 22:56:26 -07:00
Alex
44119db436
Merge pull request #840 from tamirzb/fix-restart-interval
Fix "restart-interval" in the custom module
2020-08-28 15:38:41 +02:00
Renee D'Netto
943b6bc51b Implement support for reloading of config files.
Fixes #759.
2020-08-28 22:34:24 +10:00
Alex
4a22057138
Merge pull request #814 from danieldg/markup-fixes
Allow enabing pango markup in the taskbar string
2020-08-28 09:01:32 +02:00
Tamir Zahavi-Brunner
ba78199dd1 custom: Fix "restart-interval"
This commit fixes the issue where the process would restart immediately
and the thread would sleep after the process has restarted, and not
before.

Fixes #621
2020-08-28 01:43:19 +03:00
Marek Černoch
9b51094743
Merge branch 'master' into battery-custom-tooltip 2020-08-20 13:52:25 +02:00
Alex
3c5fd4ba84
Merge pull request #828 from pedrocr/fix-multiline-labels
Prevent line breaks in ellipsized labels
2020-08-20 08:57:54 +02:00
Daniel De Graaf
ea722615c4 Allow enabing pango markup in the taskbar string
The fix for taskbar tooltips in 6a2d214b55 was incomplete: it causes the label
to contain escaped titles.  Use set_markup so that GTK decodes markup again,
but only if requested by the user (disabling markup is needed if using format
strings like "{title:.15}" to avoid terminating the string in the middle of an
XML entity).
2020-08-19 22:26:11 -04:00
Pedro Côrte-Real
6f7d7e645a Prevent line breaks in ellipsized labels
If a label is being ellipsized it doesn't make sense to allow it to use
line breaks to have multiple lines.

Fixes #827
2020-08-19 23:38:59 +01:00
Marek Černoch
8fb54f47ea battery: allow custom tooltip format 2020-08-19 23:13:03 +02:00
Alex
447fad34c7
Merge pull request #826 from Markaos/fix-typo
network: fix typo - update tooltip only when it changes
2020-08-19 11:02:49 +02:00
Marek Černoch
d263607b27 network: fix typo - update tooltip only when it changes 2020-08-18 23:09:35 +02:00
dmitry
b54fb24745 Remove trim usage in format
Some clang-tidy fixes
2020-08-16 15:54:21 +03:00
Alex
0cf3b25d50
Merge pull request #824 from alebastr/gls-resize
Fix resizing of the bar with gtk-layer-shell
2020-08-15 10:59:12 +02:00
Alex
033f0b01b7
Fix rfkill condition 2020-08-15 10:36:15 +02:00
Aleksei Bavshin
f4e15dd93d
chore(subprojects): update gtk-layer-shell to 0.3.0
Fixes warning about xdg_wm_base.version mismatch.
Fixes potential crash when GTK does not expect wl_surface to be committed.
2020-08-14 23:53:44 -07:00
Aleksei Bavshin
3663b9193d
refactor(bar): separate GTK event handlers for gtk-layer-shell
Cleanly separate resizing logic for gtk-layer-shell and manually managed
layer surface code.
2020-08-14 22:47:57 -07:00
Alex
591eb2ea38
Merge pull request #821 from danieldg/new-clock-features
New clock features
2020-08-14 22:12:48 +02:00
Alex
69f5d19455
Merge pull request #823 from W-joe/rfkill_optional
Rfkill optional
2020-08-14 21:56:52 +02:00
wjoe
4d775008df only return a bluetooth module from factory if the rfkill feature is enabled. 2020-08-14 20:59:30 +02:00
wjoe
4565f7f8b9 only compile rfkill into the network module if the feature is enabled. 2020-08-14 20:58:48 +02:00
wjoe
fdfb60c633 meson feature: make rfkill optional 2020-08-14 20:56:45 +02:00
Daniel De Graaf
62082bdb01 clock: scroll through multiple timezones 2020-08-13 18:53:18 -04:00
Daniel De Graaf
8cd6e13308 clock: allow custom formatting for today in calendar 2020-08-13 18:53:18 -04:00
Alex
31243cdc20
Merge pull request #820 from pedrocr/sway-workspaces-id
Add missing * in man page
2020-08-13 21:38:02 +02:00
Pedro Côrte-Real
0aa8c03bea Add missing * in man page 2020-08-13 20:11:55 +01:00
Alex
51a66d5919
Merge pull request #819 from pedrocr/sway-workspaces-id
Add IDs to sway workspace buttons for CSS styling
2020-08-13 13:17:30 +02:00
Pedro Côrte-Real
29fa74f621 Add IDs to sway workspace buttons for CSS styling
In case you want to style a specific workspace add IDs to the workspace
buttons. Styling is done by matching button#sway-workspace-${name}.
2020-08-13 11:36:19 +01:00
Alex
4c4691dc2e
Merge pull request #817 from pedrocr/sway-workspaces-disable-click
Add option for no workspace switch on click
2020-08-12 20:45:04 +02:00
Pedro Côrte-Real
8f10c9056c Add option for no workspace switch on click
In sway/workspaces, just like disable-scroll turns on/off the ability to
change workspaces by scrolling the mouse add disable-click that turns
on/off the ability to change workspaces by clicking.
2020-08-12 11:38:48 +01:00
dmitry
22409d27c5 Fix docs typos
Add removing buttons
Adjust handling multiple outputs.
2020-08-11 00:28:56 +03:00
Alex
3bb04e82a5
Merge pull request #813 from xenrox/fmt-fix
Fix crash with fmt
2020-08-10 20:57:00 +02:00
Thorben Günther
9b41b95934
Fix crash with fmt 2020-08-10 20:53:29 +02:00
Alex
fb56f89ced
Merge pull request #801 from maximbaz/systemd-use-standard-targets
systemd: use standard targets, update service type
2020-08-10 18:11:28 +02:00
Alex
56cbdd1403
Merge pull request #807 from nschloe/readme-ppa
add repo info to README
2020-08-08 16:35:09 +02:00
Nico Schlömer
50e8f7ca86
add repo info to README 2020-08-08 13:17:56 +02:00
dmitry
42b6c089f3 Add docs and adjust sorting 2020-08-08 00:09:35 +03:00
dmitry
0ad29a5960 Finish base implementation 2020-08-07 23:46:47 +03:00
Alex
5ebd3594e4
Merge pull request #778 from excellentname/handle-sigchld
Handle SIGCHLD for exec/forkExec
2020-08-07 13:33:27 +02:00
dmitry
4c251578e9 Add formatting and states handling 2020-08-07 02:45:08 +03:00
Maxim Baz
d51adfe7bc
systemd: use standard targets, update service type 2020-08-06 23:21:53 +02:00
Alex
a446cd692d
Fix MPD, add missing while loop 2020-08-06 21:57:02 +02:00
Alex
4d6e20a96d
Merge pull request #800 from NotAFile/patch-1
switch workspace on mouse-down to match swaybar
2020-08-06 16:14:57 +02:00
NotAFile
9ebfc54eb5
switch workspace on mouse-down to match swaybar
fixes #686
2020-08-06 16:04:30 +02:00
Alex
f5efb50871
Merge pull request #798 from danieldg/master
Minor string fixes to wlr/taskbar
2020-08-06 09:03:02 +02:00
Daniel De Graaf
4cd31cf3c3 Fix wlr/taskbar all-outputs config string 2020-08-05 20:39:12 -04:00
Daniel De Graaf
6a2d214b55 Fix titles containing & and other HTML entities 2020-08-05 20:39:12 -04:00
dmitry
7638f5c595 Add base name representation 2020-08-06 01:42:57 +03:00
Alex
01c682c41e chore: v0.9.3 2020-08-05 23:27:06 +02:00
Alex
7d5da1df5e
Merge pull request #797 from alebastr/update-subprojects
chore: update subprojects for date, gtk-layer-shell
2020-08-05 23:12:32 +02:00
Alex
2ca20f9050 chore: remove unwanted typo 2020-08-05 23:01:37 +02:00
Alex
99f3e37ccf chore: update archlinux, debian dockerfiles 2020-08-05 23:00:36 +02:00
dmitry
edd4d8ee11 Finish implement wlr 2020-08-05 23:10:08 +03:00
Aleksei Bavshin
dcc0201b45
chore(protocol): update wlr-layer-shell-unstable-v1 protocol.
Statically linked gtk-layer-shell would use layer-shell protocol object
file from waybar and print runtime warning if the version does not match
2020-08-05 09:46:21 -07:00
Aleksei Bavshin
66aa3574d9
chore(subprojects): update gtk-layer-shell to 0.2.0
Fixes: #530, fixes #750
2020-08-05 09:46:10 -07:00
Aleksei Bavshin
40d3f1c1fe
chore(subprojects): update date to 3.0.0
Fixes #776, fixes #780
2020-08-05 09:46:01 -07:00
Alex
1e2ce29f57
Merge pull request #796 from ifreund/man-see-also
fix: add missing modules to list in waybar.5
2020-08-05 09:08:31 +02:00
dmitry
2b11b7ef8c Base wlr impl (Manager, Group) 2020-08-05 02:17:38 +03:00
Isaac Freund
74018167ff
fix: add missing modules to list in waybar.5 2020-08-04 20:54:14 +02:00
Alex
0625bc7688
Merge pull request #793 from uggedal/non-fatal-missing-nl80211
network: make missing nl80211 non-fatal
2020-08-02 11:21:13 +02:00
Eivind Uggedal
fb8cda9d90 network: make missing nl80211 non-fatal
This will enable the networking module to be used for ethernet
interfaces on kernels without nl80211 support.

It should be reasonable to allow desktop systems without
wireless interfaces to run custom kenrel configs
without nl80211 compiled in.
2020-07-31 08:15:16 +02:00
Alex
a213aed4da
Merge pull request #788 from JonasToth/fix_date_dependency
Fix 'date' dependency in meson
2020-07-28 21:05:20 +02:00
Jonas Toth
17967da676 Fix 'date' dependency in meson
The 'date' library dependency was incompletly imported with meson.
Only the target 'date::date' seemed to be caught by meson, but
'date::date-tz' not, which lead to build errors in gentoos sandbox
environment.

See this question, too:
https://stackoverflow.com/questions/62951569/meson-doesnt-link-library

Adding the modules in meson imports them all and the library builds
nice.
Note, that this did not happen with a standard checkout and local build
on my system, but only when creating an ebuild for the package.
2020-07-28 20:04:28 +02:00
Alex
1f6277e35b
Merge pull request #783 from f0rki/duplicate-num-assignment
make waybar itself assign numbers to workspaces like sway
2020-07-27 11:44:39 +02:00
Michael Rodler
006850ea5e Changed helper function for workspace->num assignment to a static method of Workspaces class
and adapted comments/method name to be consistent with the rest
2020-07-27 10:56:49 +02:00
excellentname
c3359dec1b Replace signal handler with signal handling thread 2020-07-25 21:02:59 +10:00
Michael Rodler
15fe73a252 duplicate the logic to assign numbers to workspaces from sway into waybar to handle perisstent workspaces 2020-07-22 16:13:24 +02:00
excellentname
246f7bf555 Handle SIGCHLD for exec/forkExec
When forkExec is called it begins to ignore all SIGCHLD signals for
the rest of the progam's execution so that they are automatically
reaped. However, this means that subsequent waitpid calls in the exec
function will always fail. So instead handle SIGCHLD by reaping any
processes created by forkExec and ignoring all others so that they can be
handled directly by the exec function.
2020-07-21 12:36:48 +10:00
Alex
759602af64
Update mpd.cpp 2020-07-18 10:23:04 +02:00
Alex
273c2f3a8f
Merge pull request #772 from jbeich/ci
CI: unbreak FreeBSD
2020-07-17 09:01:38 +02:00
Jan Beich
a1f6e38624 CI: switch FreeBSD to /quarterly packages
devel/libffi on /latest was recently updated to 3.3, breaking ABI.
However, TravisCI has lang/python37 preinstalled likely from /quarterly.
Instead of calling `pkg upgrade -y` or `pkg upgrade -y python37` switch to
/quarterly until a newer dependency is required to justify /latest.

$ meson build -Dman-pages=enabled
[...]
ImportError: Shared object "libffi.so.6" not found, required by "_ctypes.so"
2020-07-16 17:34:55 +00:00
Alex
e3fdd6d94a
fix: don't a warning for a width/height of 0 2020-07-12 11:57:47 +02:00
Alex
27f89bdcc3
Update .travis.yml 2020-07-08 22:02:47 +02:00
Alex
15623ec487
Merge pull request #766 from l3nkz/taskbar-changes
Support for multiple icon themes and XDG_DATA_DIRS
2020-07-08 21:54:27 +02:00
Till Smejkal
bc112eaae1 Convert icon-theme option to array|string
Use the config support of using arrays in its options instead of the
complicated and error-prone parsing of the string.
2020-07-07 11:22:08 +02:00
Till Smejkal
70e368a1c6 Refactor the lower_app_id logic
Move the lower_app_id lookup logic completely in the image_load_icon
method and use it also when looking up the icon from the desktop files
as well as icon themes.
2020-07-07 10:39:28 +02:00
Till Smejkal
7d9f6096fe Respect XDG_DATA_DIRS when looking for icons.
Use the base folders as defined in $XDG_DATA_DIRS and only fall back to
/usr/share and /usr/local/share if the environment variable does not
exist.
2020-07-05 13:16:41 +02:00
Till Smejkal
06ad35c42b Add support for multiple icon themes in the config
If there are multiple icon themes defined in the config option
'icon-theme' the module will try from left to right to find an icon.
The system default will always be added to this list.
2020-07-05 13:16:38 +02:00
Till Smejkal
b7e8275d90 Properly trim when splitting up the format string
Previously only single spaces would be trimmed and not multiple ones.
Now use a proper trim implementation for strings.
2020-07-05 13:13:34 +02:00
Alex
b9cf0a9c9a
Merge pull request #763 from excellentname/manpage-typo
Fix mpd typo in man page
2020-07-03 13:50:33 +02:00
excellentname
14bc842e77 Fix mpd typo in man page 2020-07-03 20:14:01 +10:00
Alex
7d9217b14a
Merge pull request #761 from Anakael/pr/anakael/taskbar-icons
Change find icon priority and to_lower for app_id
2020-07-01 23:17:44 +02:00
dmitry
8a13ed59bc Fix lower 2020-07-01 03:05:17 +03:00
dmitry
43500a9983 Move lower to load_icon phase 2020-07-01 02:56:44 +03:00
dmitry
8e6cbc1021 Change find icon priority and to_lower app_id 2020-07-01 02:10:22 +03:00
Alex
d35e92569d
Merge pull request #755 from l3nkz/master
Fix and extend the wlr/taskbar example in the man page
2020-06-25 10:45:34 +02:00
Till Smejkal
b6067c7569 Fix and extend the wlr/taskbar example in the man page
The example incorrectly used 'on-middle-click' as option although it
should be 'on-click-middle'. Fix this and also add some other options.
2020-06-25 08:05:06 +02:00
Alex
8f684f703e
Merge pull request #753 from spk/reproductible-builds
Remove date macro on version for reproducible builds
2020-06-24 18:22:36 +02:00
Alex
5662f80c43
Merge pull request #752 from spk/remove-if-meson
chore: always include sway module
2020-06-24 18:21:29 +02:00
Laurent Arnoud
5e044e5bba
Remove date macro on version for reproducible builds
cf https://reproducible-builds.org/
2020-06-24 15:09:11 +02:00
Laurent Arnoud
732ce7a27c
chore: always include sway module 2020-06-24 14:55:41 +02:00
Alex
fa6bf597cf
Merge pull request #751 from l3nkz/tabkbar-fixes
Fixes for wlr/taskbar
2020-06-24 11:10:45 +02:00
Till Smejkal
b7a8e8e544 Fix format option for the taskbar module
When using additional format options in addition to {icon} the format is
separated into text before and text after the icon. Each of the texts is
displayed in a separate label one before and one after the image for the
icon.

The code updating the labels on changes used the wrong format strings
when updating the label after the icon.
2020-06-24 09:47:34 +02:00
Till Smejkal
7429d1f9cc Fix click events for the taskbar module
When only the option 'on-click-right' was set and no other 'on-click'
option than the taskbar module wouldn't register for click events and
hence those events were handled by the generic AModule::on-click code.
This code would try to start a shell with the specified command, which
wouldn't make any sense in this circumstances.

The taskbar code falsely checked for the 'on-click-left' option instead
for the 'on-click-right' when deciding to register for click events.
2020-06-24 09:36:28 +02:00
Alex
2c25153506
Merge pull request #747 from Jannusch/master
Only real batteries are counted as batteries
2020-06-22 11:31:37 +02:00
Jannusch Bigge
401ea05dd8 add check that all batteries from type battery 2020-06-16 12:30:21 +02:00
Alex
b23ba00cff
Merge pull request #745 from ifreund/river-status
river/tags: add module
2020-06-14 12:21:37 +02:00
Isaac Freund
343a8bef22
river/tags: add module 2020-06-12 15:19:46 +02:00
Alex
181fde254f
Merge pull request #736 from Xyene/sway-workspaces-no-auto-back-and-forth 2020-06-11 10:31:26 +02:00
Tudor Brindus
0080feb9af sway/workspaces: make clicking on workspaces idempotent
Previously, clicking on the same workspace you were on would throw you
to another workspace if `workspace_auto_back_and_forth yes` was
specified in your sway config. This also fixes workspace output moving
misbehaving and doing the same.
2020-06-09 20:43:43 -04:00
Alex
91a2c4743e
Merge pull request #737 from tbm/typos 2020-06-09 23:05:25 +02:00
Martin Michlmayr
a50c12b6ae
Fix typos 2020-06-08 11:01:06 +08:00
Alex
4b2e6b54a7
Update FUNDING.yml 2020-06-01 13:29:41 +02:00
Till Smejkal
adaf843048
foreign-toplevel-manager based taskbar module (#692)
Co-authored-by: Alex <alexisr245@gmail.com>
2020-05-30 12:07:38 +02:00
Alex
e96a0bf799 refactor(custom): tooltip markup 2020-05-30 11:59:22 +02:00
Alex
6e7f22ac3a fix: cancel thread and fix window close 2020-05-27 09:10:38 +02:00
Jan Beich
94a4d41a65 disk: make used calculation match df(1) output
Substract space only available to superuser as well.
2020-05-26 07:47:08 +00:00
Alex
3b16946c25 fix(custom): avoid hide outside update 2020-05-25 09:21:04 +02:00
Alex
1d92d78de7 refactor: prefer spdlog 2020-05-24 22:14:17 +02:00
Alex
eb624c929d fix: fmt format 2020-05-24 22:08:10 +02:00
Alex
e72b153f87 fix: ignore gtk unknown options 2020-05-24 22:03:41 +02:00
Alex
7b4ded306b fix: restart-interval 2020-05-24 21:33:38 +02:00
Alex
49ae944d65 fix: check git root 2020-05-24 19:14:46 +02:00
Jan Beich
2585360a3e
Simplify .travis.yml (#719) 2020-05-24 19:05:44 +02:00
Alex
2ffc96d0b2 fix: hide box by default 2020-05-24 19:02:52 +02:00
Alex
9a123052a0 refactor: check conn 2020-05-24 18:47:50 +02:00
Alex
9b9d13ab0d feat: execNoRead 2020-05-24 18:27:21 +02:00
Alex
6ca4e14b29
Feat icons vector (#716) 2020-05-22 21:23:04 +02:00
Alex
6b32aca094 feat: debug cmd 2020-05-22 20:57:41 +02:00
Alex
b251c51936 fix: spdlog 2020-05-22 20:02:09 +02:00
Alex
a9b17681b0
Merge pull request #715 from Alexays/fix-clock 2020-05-22 19:10:11 +02:00
Alex
60bad8279e feat: add comment 2020-05-22 19:09:50 +02:00
Alex
a871dcaebe fix: type 2020-05-22 18:56:32 +02:00
Alex
cef5b27b48 fix: prefer default fmt date formatting unless timezone specified 2020-05-22 18:52:26 +02:00
Alex
c5bbedfabb
Merge pull request #665 from BlueGone/layout-dockerfiles 2020-05-19 17:50:55 +02:00
Alex
e7367c75aa
Merge pull request #425 from jbeich/freebsd 2020-05-19 13:55:47 +02:00
Jan Beich
8d8c048924 CI: Switch FreeBSD to manual install due to pkg addon not working 2020-05-19 10:49:56 +00:00
Jan Beich
4f646543fc CI: add FreeBSD job 2020-05-19 10:44:33 +00:00
Jan Beich
1885ecc958 bluetooth: limit to Linux due to missing /dev/rfkill
../src/modules/bluetooth.cpp:3:10: fatal error: 'linux/rfkill.h' file not found
 #include <linux/rfkill.h>
          ^~~~~~~~~~~~~~~~
2020-05-19 10:44:31 +00:00
Jan Beich
71b7b4e0f4 disk: properly calculate free/total size
On most Unix systems `f_blocks`, `f_bfree`, and `f_bavail` are
reported in units of `f_frsize`.
2020-05-19 10:43:45 +00:00
Jan Beich
4e567d0483 cpu: port parseCpuinfo to BSDs 2020-05-19 10:43:42 +00:00
Jan Beich
c4f7cdeec4 memory: port parseMeminfo to BSDs 2020-05-19 10:42:21 +00:00
Jan Beich
c844d7ac2e tray: drop std::filesystem dependency 2020-05-19 10:37:27 +00:00
Jan Beich
496e782544 battery: limit to Linux due to /sys/class/power_supply
../include/modules/battery.hpp:9:10: fatal error: 'sys/inotify.h' file not found
 #include <sys/inotify.h>
          ^~~~~~~~~~~~~~~
2020-05-19 10:37:27 +00:00
Jan Beich
cfd7577e1b backlight: require libepoll on non-Linux
../src/modules/backlight.cpp:9:10: fatal error: 'sys/epoll.h' file not found
 #include <sys/epoll.h>
          ^~~~~~~~~~~~~
2020-05-19 10:37:27 +00:00
Jan Beich
d5df185ac6 cpu: make getCpuLoad more portable
../include/modules/cpu.hpp:4:10: fatal error: 'sys/sysinfo.h' file not found
 #include <sys/sysinfo.h>
          ^~~~~~~~~~~~~~~
2020-05-19 10:37:27 +00:00
Jan Beich
c94ef092ff build: drop -Dout in favor of --prefix
$ meson --prefix=/tmp/foo _build
$ ninja install -C _build
[49/50] Installing files.
Installing waybar to /tmp/foo/bin
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/mesonbuild/mesonmain.py", line 127, in run
    return options.run_func(options)
  File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 514, in run
    installer.do_install(datafilename)
  File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 346, in do_install
    self.install_data(d)
  File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 375, in install_data
    d.dirmaker.makedirs(outdir, exist_ok=True)
  File "/usr/lib/python3.6/site-packages/mesonbuild/minstall.py", line 55, in makedirs
    os.makedirs(path, exist_ok=exist_ok)
  File "/usr/lib/python3.6/os.py", line 210, in makedirs
    makedirs(head, mode, exist_ok)
  File "/usr/lib/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/etc/xdg'
FAILED: meson-install
2020-05-19 10:37:27 +00:00
Jan Beich
74db69dcb7 build: drop libinput as it was never used 2020-05-19 10:37:27 +00:00
Jan Beich
fe2dd1e843 build: handle systems where libc++ is default
ld: error: unable to find library -lstdc++fs
ld: error: unable to find library -lc++abi
2020-05-19 10:37:27 +00:00
Jan Beich
1dc557456e Add missing includes for libc++
In file included from ../src/modules/custom.cpp:1:
In file included from ../include/modules/custom.hpp:7:
../include/util/command.hpp:15:25: error: implicit instantiation of undefined template 'std::__1::array<char, 128>'
  std::array<char, 128> buffer = {0};
                        ^
../src/modules/pulseaudio.cpp:175:41: error: implicit instantiation of undefined template 'std::__1::array<std::__1::basic_string<char>, 9>'
static const std::array<std::string, 9> ports = {
                                        ^
/usr/include/c++/v1/__tuple:223:64: note: template is declared here
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
                                                               ^
In file included from ../src/factory.cpp:1:
In file included from ../include/factory.hpp:8:
../include/modules/sway/workspaces.hpp:39:8: error: no template named 'unordered_map' in namespace 'std'
  std::unordered_map<std::string, Gtk::Button> buttons_;
  ~~~~~^
../src/factory.cpp:20:14: error: cannot initialize return object of type 'waybar::AModule *' with an rvalue of type 'waybar::modules::sway::Workspaces *'
      return new waybar::modules::sway::Workspaces(id, bar_, config_[name]);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-05-19 10:37:27 +00:00
Alex
45deb2472c fix: use strcmp 2020-05-19 12:14:59 +02:00
Alex
8fbaf06cbe refactor(mpd): prefer debug over warn 2020-05-16 09:29:37 +02:00
Alex
08dce576bd refactor(mpd): prefer debug over info 2020-05-16 09:28:30 +02:00
Alex
4b28518cd5
Merge pull request #701 from josteink/patch-2
Confirm build-instructions for Ubuntu 20.04 too.
2020-05-07 08:58:58 +02:00
Jostein Kjønigsen
c9ee528880
Confirm build-instructions for Ubuntu 20.04 too. 2020-05-07 07:01:20 +02:00
Alex
0e869e3aab
Merge pull request #696 from f0rki/sort_by_sway_num
sway/workspaces: sort by the "num" property provided by sway
2020-05-06 12:38:12 +02:00
Michael Rodler
6fe764540c sway/workspaces: sort by the "num" property provided by sway, configurable whether numeric workspace names come first
Sway provides the workspace "num" property which is an integer number of
the workspace, i.e., workspace "3" -> 3 and also "3dev" -> "3". This
commit uses this property to sort the workspaces, which makes sense when
persistent workspaces or all-output is specified. This commit also adds
a new configuration option, whether the numeric workspaces come in front
or after workspaces that have non-numeric name.
2020-05-05 09:15:20 +02:00
Alex
81abd9bb67
Merge pull request #693 from f0rki/current_output
sway/workspaces added current_output CSS class to buttons.
2020-05-04 17:36:36 +02:00
Michael Rodler
c602d38c8e sway/workspaces added current_output CSS class to buttons.
All workspace buttons that are visible on the same output as the current waybar can be styled with the `current_output` css class.

This is really only useful in combination with the `"all-outputs":
true`. Then the workspaces that are on the current output can be styled
differently than the workspace on other outputs, while all are visible
in the waybar.
2020-05-04 16:16:09 +02:00
Alex
c45adddd8e
Merge pull request #673 from maximbaz/patch-1
Add missing dependencies to README
2020-05-02 21:01:45 +02:00
Alex
25648ed9c0
Merge branch 'master' into patch-1 2020-05-02 21:01:31 +02:00
Maxim Baz
c8daa48e66
Add build dependencies 2020-05-02 13:06:15 +02:00
Alex
6a95179456
Merge pull request #684 from DiegoGuidaF/fix_bluetoothman
Build bluetooth module man page
2020-05-01 20:35:56 +02:00
Diego GF
ea4dec96e6 Build bluetooth module man page 2020-04-28 17:40:44 +02:00
Alex
44ed61b2c3
Merge pull request #680 from akobel/master
Fix round to 0 or 1 in capacity computation with given full-at
2020-04-27 08:47:22 +02:00
Alex
64f10f8f69
Merge pull request #683 from phosit/master
Add kelvin-scale
2020-04-27 08:46:00 +02:00
phosit
7b18bfd1a7 Add kelvin in man 2020-04-25 18:57:56 +02:00
phosit
6e946bf872 Add kelvin-scale 2020-04-25 18:44:48 +02:00
Alex
e01a081f2f fix(brightness): amd brightness 2020-04-21 09:11:56 +02:00
Alexander Kobel
df0d34dbd4 Fix round to 0 or 1 in capacity computation with given full-at 2020-04-21 00:58:17 +02:00
Alex
b18262f6d0
Merge pull request #677 from mastertinner/master
Make bluetooth example valid
2020-04-20 15:27:49 +02:00
Tobi Fuhrimann
d30b775d25
Make bluetooth example valid 2020-04-20 15:23:03 +02:00
Alex
82c3cccd72 fix(typo): man, remove trailing dot 2020-04-20 14:04:02 +02:00
Alex
1814b3b593 chore(arch): update Dockerfile 2020-04-19 19:52:03 +02:00
Alex
ff7a28274f chore(debian): update Dockerfile 2020-04-19 19:19:21 +02:00
Maxim Baz
8909086b58
Add wayland-protocols 2020-04-19 02:46:21 +02:00
Maxim Baz
a851dd1198
Add missing dependencies to README 2020-04-19 02:30:08 +02:00
Alex
9817955fef
Merge pull request #596 from vesim987/output-exclusion
Add a way to exclude specific output
2020-04-17 23:58:25 +02:00
Alex
774d8ffdba
Merge branch 'master' into output-exclusion 2020-04-17 23:42:58 +02:00
Alex
4a80874da9
Update client.cpp 2020-04-17 23:41:32 +02:00
Alex
4e19ec93dc
Update README.md 2020-04-17 09:09:30 +02:00
Alex
976d3332d4
Merge pull request #568 from marcplustwo/master
Add rfkill status to network module and new bluetooth module
2020-04-17 09:09:07 +02:00
Marc Radau
2d02ae5e97
Merge branch 'master' into master 2020-04-16 14:43:10 +02:00
Alex
967001d9d3
Merge pull request #667 from DanySpin97/memory-missing-header
fix(memory): add missing unordered_map include
2020-04-13 20:48:21 +02:00
Danilo Spinella
09ec40e38d fix(memory): add missing unordered_map include 2020-04-13 18:02:50 +02:00
Alex
345c7da384 chore: update fedora base 2020-04-13 17:07:16 +02:00
Thomas Plaçais
9350595158
fix(layout): fix opensuse dockerfile pugixml dep 2020-04-13 09:50:58 +02:00
Thomas Plaçais
a0d5826cbc
fix(layout): fix alpine dockerfile pugixml dep 2020-04-13 09:39:48 +02:00
Alex
7859bf2c60
Merge pull request #402 from 0xdec/on-update
feat(modules): call user on-update if configured
2020-04-12 18:49:00 +02:00
Alex
acc3ae6e62 refactor(man): add missing : 2020-04-12 18:41:44 +02:00
Alex
d1c4897f31 feat: update man 2020-04-12 18:38:51 +02:00
Alex
4a7dd400fe
Merge branch 'master' into on-update 2020-04-12 18:32:19 +02:00
Alex
687c50dc13 refactor: remove old stuff 2020-04-12 18:31:07 +02:00
Alex
b40cdcb5bd refactor: call parent update 2020-04-12 18:30:21 +02:00
Alex
b9338c72c9 chore: 0.9.2 2020-04-11 12:24:49 +02:00
Alex
8f6273e9d0 refactor(config): comment default config layer 2020-04-11 12:08:30 +02:00
Alex
1fd708cda8
Merge pull request #661 from BlueGone/layout-dockerfiles
feat(layout): add pugixml dependency to dockerfiles
2020-04-10 16:41:27 +02:00
Thomas Plaçais
ac3126b6cf
feat(layout): add pugixml dependency to dockerfiles 2020-04-10 16:38:50 +02:00
Alex
7c4ea39774 fix: add missing comma 2020-04-06 12:49:41 +02:00
Alex
27fbea2b5a refactor(workspaces): default value unstripped, fix man 2020-04-06 12:42:29 +02:00
Marc Radau
f34163a065
Merge pull request #9 from Alexays/master
Changes
2020-04-06 12:20:31 +02:00
Alex
6570aefeec
Merge pull request #651 from JohnHolmesII/pulse-patch
Pulse: Start wait for server
2020-04-05 20:52:12 +02:00
JohnHolmesII
5c5031fd69
pulse: do not die when a server hasn't been started. wait first. 2020-04-05 11:42:27 -07:00
Alex
8e0f3c7ddf
feat: full-at (#649)
* feat: full-at

* fix(man): typo
2020-04-05 16:56:51 +02:00
Marc Radau
8a5c3af949
Merge pull request #8 from Alexays/master
Merge Alexays:master into marcplustwo:master
2020-04-05 16:13:56 +02:00
Alex
d5bd3be8de chore: use native git 2020-04-05 16:12:25 +02:00
Alex
bb2c16386b feat: format-icon for persistent workspaces 2020-04-04 21:13:25 +02:00
Alex
ec451b5908 fix(command): check WIFEXITED 2020-03-30 10:36:24 +02:00
Alex
ae3d4b9d28
Merge pull request #636 from masm11/fix/restore-sigchld-setting
restore SIGCHLD settings to SIG_DFL. #600
2020-03-29 11:00:43 +02:00
Yuuki Harano
af96150f5c restore SIGCHLD settings to SIG_DFL. 2020-03-28 01:35:21 +09:00
Alex
10b152ac3e fix: process last line, restart-interval 2020-03-26 09:18:47 +01:00
Alex
9acf5587fa refactor(pulseaudio): fallback to default muted format 2020-03-25 22:53:09 +01:00
Alex
c302116e73
Merge pull request #634 from Alexays/restart-interval
feat(custom): restart_interval for continuous script
2020-03-25 22:42:31 +01:00
Alex
ff36154c4b fix: typo 2020-03-25 22:31:04 +01:00
Alex
d12ad1128e fix: man 2020-03-25 22:30:22 +01:00
Alex
cb2f5c154c feat(custon): restart_interval for continuous script 2020-03-25 22:25:30 +01:00
Alex
c3cdd516ef
Merge pull request #629 from Xyene/pre-3.4-meminfo
fix(memory): provide better free memory approximation on old kernels
2020-03-24 20:57:23 +01:00
Tudor Brindus
19743f3085 fix(memory): provide better free memory approximation on old kernels
The approximation should include SReclaimable, and subtract Shmem. To
prevent the parsing code from ballooning in size, this commit also
refactors the parsing into a map.
2020-03-20 17:37:22 -04:00
Alex
5db06d99bb
Merge pull request #624 from BoostCookie/master
Added support for absolute device paths for the temperature module.
2020-03-15 11:56:00 +01:00
Alex
384200f27e
Merge pull request #625 from Xyene/patch-1
Switch default Makefile rule from run to build
2020-03-15 11:54:22 +01:00
Tudor Brindus
5e712ca255
Switch default Makefile rule from run to build
This commit makes it so that running `make` without arguments builds
rather than builds and runs, which is unconventional and surprising
behaviour.
2020-03-14 16:25:33 -04:00
BoostCookie
d405f28622
Indent now uses spaces. 2020-03-13 16:42:05 +01:00
BoostCookie
2f975f870a Added support for absolute device paths for the temperature module. 2020-03-12 22:04:00 +01:00
Alex
4471d4aba1
Merge pull request #615 from hypergig/master
readme: ubuntu dependencies
2020-03-08 10:34:07 +01:00
Jordan Cohen
3945c77668 readme: adding libspdlog-dev to list of ubuntu dependencies, also sorting and cleaning up list to make it easier to read and copy 2020-03-05 08:57:19 -05:00
Alex
6c27af35e9
Merge pull request #612 from gdamjan/fix-service-ordering
systemd service: fix start up ordering
2020-03-04 16:29:42 +01:00
Alex
2a7e8f7d94
Merge pull request #613 from alebastr/set-exclusive-zone
fix(bar): set exclusive zone early for gtk-layer-shell
2020-03-04 16:29:06 +01:00
Aleksei Bavshin
dd0144c3cd
fix(bar): set exclusive zone early for gtk-layer-shell
If the bar is using initial size from the config (i.e both width and
height are set and resize is not required), GtkWindow configure event
is is not emitted. Initialize exclusive zone earlier for that case.

Fixes #609
2020-03-04 06:56:25 -08:00
Дамјан Георгиевски
03130b7565 systemd service: fix start up ordering
the service needs to have After=wayland-session.target otherwise it'll
be started in parallel to the compositor which might not be fully
configured
2020-03-03 22:35:48 +01:00
Vesim
4eb462426d
Merge branch 'master' into output-exclusion 2020-02-28 07:53:20 +01:00
Vesim
1209022492 Return true when outputs are not specified 2020-02-28 07:54:00 +01:00
Vesim
bb88038c17 Dont exclude outputs in arrays 2020-02-27 21:49:09 +01:00
Alex
37b1b35035
Merge pull request #603 from layus/track_defaults
pulseaudio: track only the default sink and source
2020-02-24 10:53:26 +00:00
Guillaume Maudoux
190b2dd922 pulseaudio: track only the default sink and source
When you have multiple sinks (resp. sources), the module used to display
the state of the most recently changed one. This changes remembers the
default sink name, and only records changes to that one.
2020-02-24 11:30:35 +01:00
Marc
dd7d78cd60 changes requested 2020-02-23 23:09:05 +01:00
Marc Radau
9abe1e2790
Merge branch 'master' into master 2020-02-23 23:00:09 +01:00
Vesim
7bebfebe5f
Merge branch 'master' into output-exclusion 2020-02-20 22:17:13 +01:00
Alex
2d8dc83480
Merge pull request #598 from layus/sni-watcher
Use the same StatusNotifierWatcher for all trays
2020-02-19 14:22:51 +01:00
Alex
382cf76503
Merge pull request #599 from layus/pulse-track
pulse: track default source/sink changes
2020-02-19 14:10:47 +01:00
Guillaume Maudoux
9a5f5114c4 pulse: track default source/sink changes 2020-02-19 12:28:36 +01:00
Guillaume Maudoux
047c2929c1 Use the same StatusNotifierWatcher for all trays 2020-02-19 12:06:35 +01:00
Vesim
9525663014
Update src/client.cpp
Co-Authored-By: Alex <alexisr245@gmail.com>
2020-02-18 22:40:21 +01:00
Vesim
3ff1f28533 Update man page 2020-02-18 22:24:59 +01:00
Vesim
4fcf06a164 Add a way to exclude specific output 2020-02-18 22:24:59 +01:00
Alex
9b0660e751
Merge pull request #592 from Alexays/pulseaudio-alt
Fix alt on pulseaudio module
2020-02-16 21:53:36 +00:00
Alex
543589a97b
Update pulseaudio.cpp 2020-02-16 21:48:22 +00:00
Alex
82d0c87934
Merge pull request #589 from JordanL2/master
Fix for 'Network label text not updated properly when formats contain…
2020-02-15 18:13:14 +00:00
Jordan Leppert
4f8a396692 Fix for 'Network label text not updated properly when formats contain Unicode characters' (#588) 2020-02-15 16:51:18 +00:00
Alex
6141a26a09
Merge pull request #584 from DanySpin97/sway-fix
fix(sway): add missing unordered_map include
2020-02-11 17:46:32 +00:00
Alex
bb7596045f
Merge pull request #583 from DanySpin97/cxxfs
fix(meson): Support libc++ >=9.0.0
2020-02-11 17:44:50 +00:00
Danilo Spinella
16c68ee132 fix(meson): Support libc++ >=9.0.0
From LLVM libc++ documentation:
"Prior to LLVM 9.0, libc++ provides the implementation of the
filesystem library in a separate static library."

Now the filesystem library (not the experimental one) is shipped
inside the libc++.so library.

Check if '-lc++fs' link flag is needed and supported before adding
it.
2020-02-11 14:42:24 +01:00
Danilo Spinella
e0c42ae415 fix(sway): add missing unordered_map include 2020-02-11 14:31:17 +01:00
Alex
aae105c998 chore: 0.9.1 2020-02-10 23:47:23 +00:00
Alex
b719569243
Merge pull request #579 from alebastr/date-fractional-seconds
fix(clock): lower precision of zoned_time to avoid fractional seconds in output
2020-02-06 21:27:01 +00:00
Aleksei Bavshin
e70f8d8730
fix(clock): lower precision of zoned_time to avoid fractional seconds in output 2020-02-06 10:04:22 -08:00
Alex
e1215a6d17
Merge pull request #578 from alebastr/ipc-use-after-free
fix(sway): resolve destruction dependency between Ipc and SleeperThread
2020-02-06 17:36:11 +00:00
Alex
119446d538
Merge pull request #570 from skligys/simple_calendar
Current month calendar in clock tooltip.
2020-02-06 17:32:27 +00:00
Skirmantas Kligys
d1f427618f Cache calendar per clock instance, weekdays properly handle locales. 2020-02-05 11:07:47 -08:00
Skirmantas Kligys
3c268d83c2 Merge branch 'master' into simple_calendar 2020-02-05 11:07:09 -08:00
Aleksei Bavshin
ae6ca36fa7
fix(sway): resolve destruction dependency between Ipc and SleeperThread
Ipc destructor closes socket and thus wakes up SleeperThread which was
waiting for socket data in Ipc::handleEvent.
Ipc::handleEvent then proceeds with sending signal to already destroyed
object, causing heap-use-after-free Address Sanitizer error.
2020-02-04 23:22:43 -08:00
Alex
83b12fc8a7
Merge pull request #577 from torstehu/finish-PA-audiotype
Finish #571
2020-02-04 19:36:32 +00:00
Torstein Husebø
f107aaddc3 Finish #571 2020-02-04 12:16:50 +01:00
Skirmantas Kligys
cd2db19267 Detect presence, call nl_langinfo() to get first day of week. 2020-02-03 17:18:34 -08:00
Skirmantas Kligys
4c40f9c635 Stop using a mutex for guarding CachedCalendar. 2020-02-03 17:18:34 -08:00
Alex
84e5b0e8c2
Merge pull request #574 from torstehu/fix-typo
Fix typos
2020-02-03 10:46:51 +00:00
Torstein Husebø
34a710cce3 Fix typos 2020-02-03 10:40:26 +01:00
Skirmantas Kligys
218bb3bc2b Simpify calendar generation, single loop handles both first week and subsequent weeks. 2020-02-02 16:06:27 -08:00
Skirmantas Kligys
f6b2005687 Cache calendar tooltip text to reduce computations. 2020-02-02 15:59:24 -08:00
Skirmantas Kligys
ea9591baea Switch from utfcpp to Glib::ustring for UTF-8 string mangling. 2020-02-02 15:59:24 -08:00
Skirmantas Kligys
af2528952b Merge branch 'master' of github.com:skligys/Waybar into temp 2020-02-02 15:58:40 -08:00
Alex
414bf741f3
Merge pull request #571 from Trundle/adapt-icon-names-to-form-factors
pulseaudio: adapt icon names to form factors
2020-02-01 11:20:32 +00:00
Andreas Stührk
527fa982d2 pulseaudio: adapt icon names to form factors 2020-01-31 22:47:26 +01:00
Skirmantas Kligys
8e05aab4d9 Current month calendar in clock tooltip. 2020-01-31 10:36:40 -08:00
Marc
6ae9f436a9 add copyright notice for rfkill util 2020-01-30 00:25:37 +01:00
Marc
58eb8ad11f Merge branch 'master' of github.com:marcplustwo/Waybar 2020-01-26 05:35:34 +01:00
Marc
c045288ce4 add man page for bluetooth, fix bluetooth race-condition 2020-01-26 05:34:31 +01:00
Marc Radau
f9618d30f3
Merge pull request #7 from Alexays/master
Merge latest changes from upstream
2020-01-23 17:30:33 +01:00
Marc
e3bf6b968c bluetooth module handles rfkill events instantly 2020-01-23 17:17:29 +01:00
Alex
e9b0365327
Merge pull request #560 from mjec/master
Add timezone support to clock module (closes #223)
2020-01-23 14:03:40 +00:00
Michael Cordover
97554b3532
Merge branch 'master' into master 2020-01-23 08:28:13 -05:00
Michael Cordover
1e969a48ae Use github instead of mesonbuild for hinnant-date patch 2020-01-23 08:27:13 -05:00
Guillaume Maudoux
84b671f6b2 Attempt at supporting locale and timezones (#1) 2020-01-23 08:27:10 -05:00
Michael Cordover
6e30b7af3c Remove duplicate dependency, use current locale 2020-01-23 08:27:00 -05:00
Michael Cordover
3130a57622 Add timezone support to clock module (closes #223) 2020-01-23 08:26:49 -05:00
Marc Radau
d85f0e1060
Merge pull request #3 from marcplustwo/addbluetoothmodule
Add bluetooth module
2020-01-22 11:44:25 +01:00
Marc
89cb9673d4 bluetooth module working 2020-01-22 11:37:47 +01:00
Marc
f0dbd8b78d properly structure rfkill util 2020-01-21 17:48:45 +01:00
Marc
626af1ddc1 add rudimentary bluetooth module functionality 2020-01-21 17:04:54 +01:00
Marc
2c4369a653 add basis for bluetooth module implementation 2020-01-21 15:46:08 +01:00
Marc Radau
b8aeda794c
Merge pull request #2 from marcplustwo/airplane_mode
distinguish between wifi disabled and disconnected
2020-01-20 10:46:59 +01:00
Marc
2dc4ae78fc distinguish between wifi disabled and disconnected 2020-01-20 00:35:37 +01:00
Marc Radau
bd67c9e620
Merge pull request #1 from Alexays/master
Integrate changes from Alexays/Waybar
2020-01-19 16:08:46 +01:00
Alex
a555a72d7f
Merge pull request #557 from thomaswucher/fix-meson-wrapdb-urls
Download patch files from Github instead of wrapdb
2020-01-16 10:34:20 +00:00
Thomas Wucher
99dde1aff8 Download patch files from Github instead of wrapdb
Currently wrapdb.mesonbuild.com is offline and its not clear when it
will be up again. Github seems to be the more reliable source for these
files.
2020-01-16 11:09:32 +01:00
Alex
d5875c468f
Merge pull request #550 from PlusMinus0/use_form_factor
Use PA_PROP_DEVICE_FORM_FACTOR for device icon.
2020-01-15 10:05:34 +00:00
Alex
9e877d3f57
Merge pull request #555 from alebastr/outputs-remove-unique_ptr
refactor(client): use std::list<waybar_output> to store outputs
2020-01-15 08:12:18 +00:00
Aleksei Bavshin
f80270519b
refactor(client): use std::list<waybar_output> to store outputs
std::unique_ptr is not required here as the only benefit it gives is
stability of address on vector resize and it's easy to invalidate it
accidentaly. std::list provides the same guarantee of stable addresses
of the elements and correct destruction while avoiding smart pointer
overhead.

Also fixes #554, caused by incorrect usage of std::remove_if.
2020-01-14 07:27:08 -08:00
PlusMinus0
8fb3211594 Use PA_PROP_DEVICE_FORM_FACTOR for device icon. 2020-01-13 11:34:33 +01:00
Alex
b9cd51a9cc
Merge pull request #548 from Psykar/icon-width
Keep aspect ratio when scaling tray icons.
2020-01-09 09:00:09 +01:00
Louis des Landes
569f40de9b
Keep aspect ratio when scaling tray icons. 2020-01-09 17:27:10 +10:30
Alex
9c8d0865d1
Merge pull request #546 from z3ntu/cassert
fix(network): add missing include
2020-01-07 20:30:02 +01:00
Luca Weiss
129713fe1b
fix(network): add missing include
Fixes:
../src/modules/network.cpp:68:3: error: 'assert' was not declared in this scope
   68 |   assert(starts_with(read, category));
      |   ^~~~~~
../src/modules/network.cpp:6:1: note: 'assert' is defined in header '<cassert>'; did you forget to '#include <cassert>'?
    5 | #include "util/format.hpp"
  +++ |+#include <cassert>
    6 |
2020-01-07 20:27:31 +01:00
Alex
e66c3bc965
Merge pull request #543 from cole-h/master
mpd: add paused format string
2020-01-07 19:18:53 +01:00
Cole Helbling
75c6e2e7d5
mpd: add paused format string 2020-01-07 09:15:54 -08:00
Alex
d294352845
Merge pull request #529 from fuzxi/master
[Corrected] Add info on "on-click-middle" option to custom module man page
2020-01-06 13:37:08 +01:00
fuzxi
35f7fdf684 Update waybar-temperature.5.scd 2020-01-06 13:31:16 +01:00
fuzxi
33798c31d0 Update waybar-sway-window.5.scd 2020-01-06 13:31:06 +01:00
fuzxi
ee0db26021 Update waybar-sway-mode.5.scd 2020-01-06 13:30:56 +01:00
fuzxi
abcac464fa Update waybar-pulseaudio.5.scd 2020-01-06 13:30:48 +01:00
fuzxi
9602360d28 Update waybar-network.5.scd 2020-01-06 13:30:38 +01:00
fuzxi
1d087f96bd Update waybar-idle-inhibitor.5.scd 2020-01-06 13:30:28 +01:00
fuzxi
01b8527333 Update waybar-disk.5.scd 2020-01-06 13:30:19 +01:00
fuzxi
abeb406166 Update waybar-custom.5.scd 2020-01-06 13:30:11 +01:00
fuzxi
443281f0bc Update waybar-cpu.5.scd 2020-01-06 13:30:02 +01:00
fuzxi
de3be8b2ab Update waybar-clock.5.scd 2020-01-06 13:29:52 +01:00
fuzxi
4d7e19ae66 Update waybar-battery.5.scd 2020-01-06 13:29:41 +01:00
fuzxi
e8f2bd3ad1 Update waybar-backlight.5.scd 2020-01-06 13:29:20 +01:00
fuzxi
c41cedd407 Update waybar-mpd.5.scd 2020-01-06 13:29:04 +01:00
fuzxi
f6864e4a43 Update waybar-memory.5.scd 2020-01-06 13:28:31 +01:00
Alex
a833c51a28
Merge pull request #540 from jomority/network
fix(network): display of IPv6 address
2020-01-06 13:25:22 +01:00
Moritz Jordan
1145788ab3
fix(network): display of IPv6 address 2020-01-06 13:15:28 +01:00
Alex
c0d4867421
Merge pull request #541 from jomority/man
man: adding and clarification of configuration options
2020-01-06 11:47:23 +01:00
Alex
d18ece13f2
Merge pull request #536 from xPMo/master
Fix: WindowId recieves 'u'
2020-01-06 09:21:26 +01:00
gammafn
1f379fa5f6 Don't specify WindowId property
https://github.com/Alexays/Waybar/pull/536#issuecomment-570847035
2020-01-05 10:22:52 -06:00
Moritz Jordan
1125119dc6
man: add icon and format-icon to network module 2020-01-04 04:33:04 +01:00
Moritz Jordan
173a7bb8cd
man: fix layout in battery module 2020-01-04 04:31:24 +01:00
Moritz Jordan
4836333bff
man: document family configuration option in network module 2020-01-04 03:26:06 +01:00
Moritz Jordan
f01ddb9ab3
man: clarify options for layer configuration 2020-01-03 16:22:29 +01:00
Moritz Jordan
2f6a70f34e
man: document gtk-layer-shell configuration option 2020-01-03 16:20:56 +01:00
Alex
def4466953
Merge pull request #534 from AdrienLemaire/chore/mediaplayer
feat: show title if artist isn't available
2020-01-01 15:51:50 +01:00
Adrien Lemaire
db1136d647
feat: show title if artist isn't available 2020-01-01 13:50:29 +09:00
Alex
c8821a5e7f fix(Battery): replace spaces w/ dashes 2019-12-30 13:56:34 +01:00
Alex
d40cc6f23a fix(Battery): replace spaces w/ underscores 2019-12-30 13:55:49 +01:00
Alex
c885be369e feat(Network): hide on empty format 2019-12-30 13:46:12 +01:00
Alex
631695ec74
Merge pull request #525 from Akasch/master
add dependencies of gtk-layer-shell to readme
2019-12-28 15:27:46 +01:00
Nils Rokita
50275ae529 add dependencies of gtk-layer-shell to readme 2019-12-28 15:19:42 +01:00
Alex
35d806b801 chore: 0.9.0 2019-12-28 12:35:09 +01:00
Alex
220028051f chore: auto gtk-layer-shell option 2019-12-28 12:13:33 +01:00
Alex
7f73a8cd45
Merge pull request #441 from alebastr/gtk-layer-shell
Use gtk-layer-shell library for correct positioning of popups
2019-12-28 11:56:46 +01:00
Aleksei Bavshin
dde700f2c9
feat: use gtk-layer-shell library for correct positioning of popups
To enable: use sway >= 1.2, compile waybar with `-Dgtk-layer-shell=enabled` meson option.
Original behavior could be restored at runtime by setting `"gtk-layer-shell": false` in waybar config.
2019-12-27 16:42:14 -08:00
Aleksei Bavshin
0e87b3938a
deps: meson dependencies for gtk-layer-shell feature 2019-12-27 16:42:13 -08:00
Aleksei Bavshin
d1637d34cf
refactor: fetch outputs from Gtk::Display instead of wl_registry.
gtk-layer-shell wants Gdk::Monitor instead of wl_output;
change code to deal with Gdk objects and slightly simplify it.
Requires gtkmm 3.22.0+ (first release with Gdk::Monitor support).
2019-12-27 16:42:12 -08:00
Alex
2277ddd156
Merge pull request #520 from Alexays/revert-517-master
Revert "Add info on "on-click-middle" option to custom module man page"
2019-12-17 11:58:42 +01:00
Alex
f9543e47dd
Revert "Add info on "on-click-middle" option to custom module man page" 2019-12-17 11:58:30 +01:00
Alex
4c548a95e8
Merge pull request #517 from fuzxi/master
Add info on "on-click-middle" option to custom module man page
2019-12-16 15:19:44 +01:00
fuzxi
6c3cb7c85a
Update waybar-temperature.5.scd 2019-12-15 15:11:06 -08:00
fuzxi
a307042d6b
Update waybar-sway-window.5.scd 2019-12-15 15:10:26 -08:00
fuzxi
548589ee5d
Update waybar-sway-mode.5.scd 2019-12-15 15:10:14 -08:00
fuzxi
b2cec74c04
Update waybar-pulseaudio.5.scd 2019-12-15 15:09:44 -08:00
fuzxi
6895b3b6b6
Update waybar-network.5.scd 2019-12-15 15:09:33 -08:00
fuzxi
ac8e892cbd
Update waybar-mpd.5.scd 2019-12-15 15:09:08 -08:00
fuzxi
1a05e230b9
Update waybar-memory.5.scd 2019-12-15 15:08:41 -08:00
fuzxi
ad08130b52
Update waybar-idle-inhibitor.5.scd 2019-12-15 15:08:27 -08:00
fuzxi
a94d5c5ff2
Update waybar-disk.5.scd 2019-12-15 15:08:15 -08:00
fuzxi
ecce607afe
Update waybar-cpu.5.scd 2019-12-15 15:07:38 -08:00
fuzxi
73bb42d40c
Update waybar-clock.5.scd 2019-12-15 15:07:23 -08:00
fuzxi
3bb03852fe
Update waybar-battery.5.scd 2019-12-15 15:07:07 -08:00
fuzxi
2aaf5510b8
Update waybar-backlight.5.scd 2019-12-15 15:06:23 -08:00
fuzxi
278f26e597
add info on "on-click-middle" option 2019-12-14 22:28:31 -08:00
Alex
03dab1bbdd
Merge pull request #512 from josteink/patch-1
Provide easy bootstrap command for Ubuntu-users
2019-12-09 12:39:40 +00:00
Jostein Kjønigsen
0572f75055
Provide easy bootstrap command for Ubuntu-users 2019-12-09 13:20:29 +01:00
Jordi Pakey-Rodriguez
0f0765e517 feat(modules): call user on-update if configured 2019-12-05 14:42:36 -08:00
Alex
de0a3cb020
Merge pull request #510 from HardDie/master
Toggle opacity
2019-11-28 21:05:00 +00:00
HardDie
eb4c76f5e4 Toggle opacity 2019-11-28 20:28:28 +03:00
Alex
502b33b64a
Merge pull request #507 from xaiki/master
pulseaudio: export desc as a format
2019-11-25 21:33:36 +00:00
Niv Sardi
6d5b502bbb pulseaudio: export desc as a format
Signed-off-by: Niv Sardi <xaiki@evilgiggle.com>
2019-11-25 05:16:58 -03:00
Alex
2faf629c88
Merge pull request #502 from maxice8/master
Add Alpine Linux to list of distros
2019-11-11 13:39:57 +00:00
Leo
c0355a3fd3 Add Alpine Linux to list of distros 2019-11-11 07:46:10 -03:00
Alex
67f6dad717 feat: clang-format 2019-10-23 15:03:32 +01:00
Alex
7f7ebb5367 fix(workspaces): add int comparison 2019-10-19 16:19:35 +01:00
Alex
b97ca2ec9b
Merge pull request #485 from Ventto/fix-on-click-options
fix: No need to format string with unused 'arg' named argument (#484)
2019-10-18 16:18:04 +01:00
Thomas Venriès
358426cb1c fix: No need to format string with unused 'arg' named argument (#484)
The fmt::format() function looks for the "{arg}" named argument
in the given "format" string which does not exist. It will fail
if the string contains any {...} curled-brace substring.

Consequently, any "on-click*" option's command line containing for
instance substring like "${var}" or "awk '{...}'" will crash the program.

Signed-off-by: Thomas Venriès <thomas.venries@gmail.com>
2019-10-16 22:39:45 +02:00
Alex
5e4fdb1530
Detect timezone changes (#480)
Detect timezone changes
2019-10-07 08:23:00 +01:00
Guillaume Maudoux
1e82982dbd
Detect timezone changes
Fixes #479, because upstream does not intend to.

It may be less expensive to do that only once in a while, or to inotify-watch on /etc/timezone, but this is good enough.
2019-10-04 23:25:09 +02:00
Alex
048d8d328e refactor(Battery): ouput 'Plugged' instead of 'Charging' in the fallback 2019-10-03 09:37:37 +01:00
Alex
6d5e328928 feat(style): add comment about icons font 2019-10-02 10:27:46 +01:00
Alex
97e3226801
Merge pull request #475 from SJK132/SJK132-audio-bound
change audio scroll bound
2019-10-01 10:09:54 +01:00
Hetian Huo
3d1fd4f5ea
change audio scroll bound
Change default behavior from 0% - 99% to 0% - 100%.
2019-09-28 18:05:31 -05:00
Alex
3131eb0774
Add a custom formatter for "pow" numbers. (#472)
Add a custom formatter for "pow" numbers.
2019-09-25 13:17:18 +01:00
Guillaume Maudoux
f4d2ca2736 custom formatter for numbers in 'pow' units format 2019-09-25 12:53:06 +02:00
Alex
b3f9425d70 fix: ci 2019-09-25 09:59:07 +01:00
Alex
211b1c2785 fix: no need to wait on start 2019-09-25 09:32:22 +01:00
Alex
9e13161385 chore: update README 2019-09-25 09:27:53 +01:00
Alex
bd5a215d2a
Add a disk module (#471)
Add a disk module
2019-09-25 09:23:02 +01:00
Guillaume Maudoux
247589efbb Add some documentation for disks 2019-09-25 09:11:03 +02:00
Guillaume Maudoux
1d39ef5c8e Add a disk module 2019-09-25 08:47:33 +02:00
Alex
4667afaa98 fix: avoid pulling submodule on ci 2019-09-25 00:02:07 +01:00
Alex
bae83ee4e3 fix: static_cast clamp 2019-09-19 22:07:38 +01:00
Alex
52db1e8e68
Merge pull request #467 from jspngh/bugfix/mpd_module
Add more locking in mpd module
2019-09-19 22:03:23 +01:00
Alex
334bc1e52a fix(Network): clamp signal strength 2019-09-19 21:59:28 +01:00
Jonas Spanoghe
e6599d8ed5 modules/mpd: take lock in waitForEvent to prevent SIGABORT
+ replaced deprecated MPD_IDLE_PLAYLIST with MPD_IDLE_QUEUE
+ add mutex for periodic_updater
2019-09-19 21:43:12 +02:00
Alex
5ee4c54b13
Merge pull request #465 from krystiancha/fix-mpd-style
add padding for mpd module in default style
2019-09-17 19:38:10 +01:00
Krystian Chachuła
8830247b9e add padding for mpd module in default style
In the default style.css many modules (clock, battery, cpu, ...) get horizontal padding, but mpd module does not. This commit adds mpd to the list of modules that get the padding.
2019-09-17 19:50:53 +02:00
Alex
db74a46d7b
Merge pull request #460 from gdamjan/master
service file: allow for waybar installed in different prefix
2019-09-12 17:40:03 +02:00
Дамјан Георгиевски
4b24c19fa7 add prefix to the configuration data 2019-09-10 14:12:52 +02:00
Дамјан Георгиевски
ce50249c04 service file: allow for waybar installed in different prefix 2019-09-10 13:56:34 +02:00
Alex
02811293e0
Revert "service file: allow for waybar installed in different pr… (#459)
Revert "service file: allow for waybar installed in different prefix"
2019-09-10 12:06:19 +02:00
Alex
5bb6fa384d
Revert "service file: allow for waybar installed in different prefix" 2019-09-10 12:06:06 +02:00
Alex
b6cb02ce85
service file: allow for waybar installed in different prefix (#458)
service file: allow for waybar installed in different prefix
2019-09-10 11:56:20 +02:00
Дамјан Георгиевски
a0a218c6e2
Merge branch 'master' into master 2019-09-09 19:05:51 +02:00
Дамјан Георгиевски
f152ad9fa9 service file: allow for waybar installed in different prefix 2019-09-08 14:04:34 +02:00
Alex
05d083726c
Merge pull request #456 from gdamjan/master
install a systemd user service unit
2019-09-08 10:25:09 +02:00
Дамјан Георгиевски
a0a3c01e79 install a systemd user unit
add a systemd --user unit/service file, so that one can run waybar as a
--user systemd service. when the service is enabled, Waybar will start
when the wayland-session.target is started.

this feature is automatically enabled if systemd is found, but can be disabled
with -Dsystemd=disabled
2019-09-07 22:16:03 +02:00
Alex
228078d538 chore: remove opensuse as broken atm 2019-09-07 11:52:14 +02:00
Alex
e43b63ff02
Merge pull request #455 from lolzballs/master
Add configurable time display for battery module
2019-09-07 11:50:58 +02:00
Benjamin Cheng
dc93fa8218
Documentation for format-time 2019-09-06 14:53:43 -04:00
Benjamin Cheng
a63bc84918
Add configurable time display for battery module
Adds a `format-time` configuration for the battery module so that users
can configure how they want their remaining time to be displayed.

The default format remains the same as before, i.e. `{H} h {M} min`,
but users can choose something like `{H}:{M:02d}` to give an output
like `4:29` if wanted.
2019-09-04 14:43:52 -04:00
Alex
060b614eb3
Merge pull request #449 from MichaelAquilina/fix_typo
Fix some issues in man pages
2019-09-03 13:06:34 +02:00
Michael Aquilina
dfb5ec0c65
Fix formatting in waybar-puluseaudio 2019-09-03 10:34:12 +01:00
Michael Aquilina
1f84936639
Add vim ft=Dockerfile for syntax highlight detection in editors 2019-09-02 18:07:49 +01:00
Michael Aquilina
f9b65baa2e
Build scdocs in travis to pervent breakages 2019-09-02 17:37:46 +01:00
Michael Aquilina
ec23984c4d
Fix minor typo in waybar-states 2019-09-02 17:33:31 +01:00
Alex
56d9cdc245
Merge pull request #447 from alebastr/exclusive-zone
Fix some issues with exclusive zone and margins
2019-09-02 10:24:29 +02:00
Aleksei Bavshin
529daedcec
fix: correct handling of margins on anchored axis 2019-09-01 01:08:15 -07:00
Aleksei Bavshin
089d1299c4
fix: correct calculation of exclusive zone 2019-09-01 01:08:07 -07:00
Alex
36fc8365ee
Merge pull request #446 from bschacht/fix-typo-persistant
Fix typo: persistant -> persistent
2019-08-31 21:13:31 +02:00
Alex
f2f1c4f9cb
Merge pull request #445 from bschacht/patch-1
Fix typo
2019-08-31 21:11:38 +02:00
Birger Schacht
2646390e28 Fix typo: persistant -> persistent 2019-08-31 19:57:44 +02:00
Birger Schacht
66f2cbed51
Fix typo
ouput -> output
2019-08-31 17:50:56 +00:00
Alex
19d7bd4ecf
Merge pull request #444 from MichaelAquilina/fix_memory_man
fix: correct man memory description
2019-08-30 13:57:17 +02:00
Michael Aquilina
2e4de1ae3e
fix: correct man memory description 2019-08-30 09:41:01 +01:00
Alex
ce909eea0b
Merge pull request #443 from jbeich/man
Allow downstream to disable manpages even if scdoc is found
2019-08-29 13:27:27 +02:00
Jan Beich
0b008154d9 Add man-pages option like swaywm/sway@ba16f16e4d 2019-08-29 10:25:13 +00:00
Alex
fe88a3fa81 chore: 0.8.0 2019-08-29 11:56:57 +02:00
Alex
02e43a38d2
Merge pull request #439 from jbeich/fmt
Unbreak with fmtlib 6.0.0
2019-08-29 11:29:54 +02:00
Alex
f592e3d38b
Merge branch 'master' into fmt 2019-08-29 11:29:48 +02:00
Alex
c6d7a779b8
Merge pull request #442 from xPMo/master
sway/mode: enable pango markup on supported modes
2019-08-29 11:06:01 +02:00
Alex
ceedc689ec
Merge branch 'master' into master 2019-08-29 11:05:55 +02:00
Alex
b314cb16a9
Merge pull request #437 from alebastr/asan-fixes
fix(network): stack-use-after-return found by address sanitizer
2019-08-29 11:04:30 +02:00
Alex
a257126685
Merge branch 'master' into asan-fixes 2019-08-29 11:04:24 +02:00
Alex
baaeda0ab7
Merge pull request #438 from alebastr/tray-fixes
Tray fixes
2019-08-29 11:03:09 +02:00
Alex
e3dff6e0d8
Merge branch 'master' into tray-fixes 2019-08-29 11:02:50 +02:00
Alex
e8a1e6ae35
Merge pull request #431 from MichaelAquilina/man_waybar
Add support for man pages
2019-08-29 11:00:59 +02:00
Michael Aquilina
3a86125495
Merge pull request #1 from xPMo/man_waybar
Add supported xdg-spec directory
2019-08-29 09:39:51 +01:00
xPMo
da43336409
man: add supported xdg-spec directory
$XDG_CONFIG_HOME
2019-08-28 22:05:03 -05:00
Jan Beich
712424f9a8 Unbreak build with fmtlib 6.0.0
In file included from ../src/factory.cpp:1:
In file included from ../include/factory.hpp:4:
../include/modules/clock.hpp:5:10: fatal error: 'fmt/time.h' file not found
 #include "fmt/time.h"
          ^~~~~~~~~~~~
In file included from ../src/bar.cpp:4:
In file included from ../include/factory.hpp:4:
In file included from ../include/modules/clock.hpp:3:
In file included from /usr/include/fmt/chrono.h:12:
/usr/include/fmt/locale.h:19:35: error: parameter type 'fmt::v5::internal::buffer' (aka 'basic_buffer<char>') is an abstract class
    const std::locale& loc, buffer<Char>& buf,
                                  ^
/usr/include/spdlog/fmt/bundled/core.h:238:16: note: unimplemented pure virtual method 'grow' in 'basic_buffer'
  virtual void grow(std::size_t capacity) = 0;
               ^
In file included from ../src/modules/sni/host.cpp:3:
/usr/include/fmt/ostream.h:22:9: error: expected member name or ';' after declaration specifiers
  buffer<Char>& buffer_;
  ~~~~~~^
/usr/include/fmt/ostream.h:25:19: error: expected ')'
  formatbuf(buffer<Char>& buf) : buffer_(buf) {}
                  ^
/usr/include/fmt/ostream.h:25:12: note: to match this '('
  formatbuf(buffer<Char>& buf) : buffer_(buf) {}
           ^
/usr/include/fmt/ostream.h:25:42: error: use of undeclared identifier 'buf'; did you mean 'prettify_handler::buf'?
  formatbuf(buffer<Char>& buf) : buffer_(buf) {}
                                         ^~~
                                         prettify_handler::buf
/usr/include/spdlog/fmt/bundled/format-inl.h:551:11: note: 'prettify_handler::buf' declared here
  buffer &buf;
          ^
2019-08-29 01:38:54 +00:00
xPMo
e38df047fd
sway/mode: enable pango markup on supported modes
IPC reports {"mode": "mode_string", "pango_markup": bool}.
Use this to conditionally enable pango markup.
2019-08-28 19:48:33 -05:00
Michael Aquilina
0b237246f0
Fixes to man pages 2019-08-27 10:40:19 +01:00
Aleksei Bavshin
01ad3d96d8
fix(tray): pre-create dbusmenu for tray items
It seems that dbusmenu is not ready to display menu immediately and
needs some time to sync data via DBus.
Fixes LIBDBUSMENU-GLIB-CRITICAL: dbusmenu_menuitem_send_about_to_show:
assertion 'DBUSMENU_IS_MENUITEM(mi)' failed.
Also fixes initial render of the menu with layer shell popups support patch.
2019-08-27 00:34:00 -07:00
Aleksei Bavshin
642fd48af1
fix(tray): restore Activate support for compliant SNI implementation
Set ItemIsMenu to true by default because libappindicator supports
neither ItemIsMenu nor Activate method and compiant SNI implementations
are expected to reset the flag during initial property fetch.
To be revisited if anyone finds the implementation that has Activate
but does not set ItemIsMenu.
2019-08-27 00:33:59 -07:00
Aleksei Bavshin
8f9e6c132d
fix(network): stack-use-after-return found by address sanitizer
Fixes compilation with clang.
2019-08-27 00:11:40 -07:00
Michael Aquilina
ba5592c86a
Add waybar-states(5) 2019-08-26 22:49:04 +01:00
Michael Aquilina
2a3f40bc02
Minor fixes to waybar(5) 2019-08-26 22:34:19 +01:00
Michael Aquilina
c60b905831
replace `` with ** 2019-08-26 22:31:05 +01:00
Michael Aquilina
6536f7adb6
Consistent header names 2019-08-26 22:29:10 +01:00
Michael Aquilina
8134215839
s/config/configuration where it makes sense 2019-08-26 22:29:05 +01:00
Michael Aquilina
e6fa37164c
List supported modules in waybar(5) 2019-08-26 18:20:22 +01:00
Michael Aquilina
436fc94549
Add waybar-tray(5) 2019-08-26 18:15:58 +01:00
Michael Aquilina
4f9c3d2413
Add waybar-temperature(5) 2019-08-26 18:13:48 +01:00
Michael Aquilina
c19a63e85e
Add waybar-sway-workspaces(5) 2019-08-26 18:08:59 +01:00
Michael Aquilina
05e212f67a
Add waybar-sway-window(5) 2019-08-26 18:00:46 +01:00
Michael Aquilina
e01e3be488
Add waybar-sway-mode(5) 2019-08-26 17:55:20 +01:00
Michael Aquilina
f380844d61
Add waybar-pulseaudio(5) 2019-08-26 17:50:16 +01:00
Michael Aquilina
7f6e4801eb
Add waybar-network(5) 2019-08-26 17:42:30 +01:00
Michael Aquilina
ac461f38f4
Add waybar-mpd(5) 2019-08-26 15:27:32 +01:00
Michael Aquilina
30efd28b6a
Add waybar-memory(5) 2019-08-26 15:12:42 +01:00
Michael Aquilina
87392ef653
Add waybar-idle-inhibitor(5) 2019-08-26 15:11:07 +01:00
Michael Aquilina
db85224d59
Add waybar-custom(5) 2019-08-26 13:44:09 +01:00
Michael Aquilina
07d6a8e936
Use tabs not spaces in scd files 2019-08-26 13:31:57 +01:00
Michael Aquilina
53614ab50c
Add waybar-cpu(5) 2019-08-26 13:23:11 +01:00
Michael Aquilina
fba1f5c8af
Move scd files to man/ folder 2019-08-26 13:11:06 +01:00
Michael Aquilina
df83404c8c
Format headers 2019-08-24 21:46:56 +01:00
Michael Aquilina
dd3da7b6ef
Minor fixes to waybar(5) 2019-08-24 21:44:11 +01:00
Michael Aquilina
cda9eb683f
Add waybar-clock(5) 2019-08-24 18:09:08 +01:00
Michael Aquilina
f0ad918feb
Add waybar-battery(5) 2019-08-24 17:53:56 +01:00
Michael Aquilina
8696ac77f9
Replace table with simpler format in waybar.5.scd 2019-08-24 17:19:32 +01:00
Michael Aquilina
9484cdff7d
Add waybar-backlight.5.scd 2019-08-24 15:39:46 +01:00
Michael Aquilina
9b9818e95d
Set scdoc dependency to required: false 2019-08-22 17:13:04 +01:00
Michael Aquilina
cf72dee60c
Add scdoc dependency to Dockerfiles 2019-08-22 17:11:24 +01:00
Michael Aquilina
2e037df045
Add scdoc to meson build process 2019-08-22 17:04:09 +01:00
Michael Aquilina
798fe1a622
Add initial man 5 waybar 2019-08-20 19:58:33 +01:00
Alex
9d0842db48
Merge pull request #429 from tufteddeer/#420_mute_bt
add support for muted bluetooth audio, fix #420
2019-08-19 10:00:30 +02:00
tufteddeer
d8b1b0d0af
add support for muted bluetooth audio, fix #420 2019-08-18 16:15:21 +02:00
Alex
e9b6380c18 chore: 0.7.2 2019-08-08 12:25:31 +02:00
Alex
43beefb00d
Merge pull request #421 from SibrenVasse/media_fix
fix(custom): ignore selected_player if not defined. Fixes #419
2019-07-31 12:13:45 +02:00
Sibren Vasse
12f869ccba chore: add player filter example in config 2019-07-31 11:59:33 +02:00
Sibren Vasse
7e9207d75c fix(custom): ignore selected_player if not defined. Fixes #419 2019-07-31 11:53:59 +02:00
Alex
7a2dee7377
Fix typo in log warning (#411)
Fix typo in log warning
2019-07-15 13:38:23 +02:00
Joel Nordström
21a89ac46d
Typo 2019-07-15 12:21:31 +02:00
Alex
bb99e6cf5b fix: check before destroy 2019-07-15 10:06:01 +02:00
Alex
0834551161 chore: 0.7.1 2019-07-11 17:02:47 +02:00
Alex
ccd1586c65
Merge pull request #405 from crwxrws/fix-400
fix(pulseaudio): connect scroll event handler
2019-07-09 09:46:05 +02:00
crwxrws
617b370104 fix(pulseaudio): connect scroll event handler
Reconnect the event handler that was removed in commit 527144a.

Fixes Alexays#400
2019-07-06 15:51:00 +02:00
Alex
d607a4e33f
Fix deadlock on workspace scrolling (#403)
Fix deadlock on workspace scrolling
2019-07-06 10:30:57 +02:00
sheenobu
a6c0bc5a52 Fix deadlock on workspace scrolling
Make the mutex guard lifecycle finish before the send ipc command
by adding scope around the code.

Fixes #395 .
2019-07-05 20:47:44 -07:00
Alex
67ad0e69ce
Merge pull request #397 from Jamedjo/jej/add-css-classes-for-multiple-bars
Allow CSS to select specific waybars when multiple are in use
2019-07-04 14:20:03 +02:00
James Edwards-Jones
ae88d6bc3c feat(bar): individual bars can be named for CSS
Allows CSS to select individual waybars when multiple are configured
2019-07-04 02:15:56 +01:00
James Edwards-Jones
4f3c38c542 feat(bar): add CSS class for window position 2019-07-04 02:15:50 +01:00
Alex
a6980fca7f feat: ellipsize modules 2019-06-28 14:16:09 +02:00
Alex
bd5146fdcf fix(Label): ELLIPSIZE all label modules 2019-06-28 13:49:04 +02:00
Alex
22ddbde394 style(workspaces): update hover style 2019-06-28 13:41:53 +02:00
Alex
c916fe258e fix(network): no need to check family here 2019-06-25 07:55:55 +02:00
Alex
9c8e39c30c chore: 0.7.0 2019-06-22 18:17:16 +02:00
Alex
5b270dae0d
refactor: AModule (#387)
refactor: AModule
2019-06-22 18:15:50 +02:00
Alex
c621afb0c4
Merge branch 'master' into clean 2019-06-22 18:15:34 +02:00
Alex
bcf4725349
Cleanup on clean branch (#391)
Cleanup on clean branch
2019-06-18 09:43:34 +02:00
Patrick Hilhorst
12b30ca25f
AModule::getScrollDir: convert reset if-else into switch 2019-06-17 20:42:19 +02:00
Patrick Hilhorst
86d6668ed4
AModule::getScrollDir: convert if-else chain into switch statement 2019-06-17 20:40:13 +02:00
Patrick Hilhorst
7c85aec8e0
AModule::getScrollDir: get deltas in a more C++ way 2019-06-17 20:29:37 +02:00
Patrick Hilhorst
2c038d1977
AModule::getScrollDir: move dir inside the only scope it is relevant 2019-06-17 20:09:53 +02:00
Alex
ff9d598c16 fix: add proper mutex 2019-06-17 11:39:45 +02:00
Alex
71a9a75aad refactor: remove fix workaround 2019-06-16 15:14:31 +02:00
Alex
05f796158b fix: typo 2019-06-16 15:13:40 +02:00
Alex
1d2dd953e7 revert: default config 2019-06-16 15:09:26 +02:00
Alex
527144a440 refactor(pulseaudio): proper scroll override 2019-06-16 15:08:08 +02:00
Alex
cda6282277
Merge pull request #389 from Synthetica9/x-scroll
AModule: handle X axis scrolling
2019-06-16 14:54:53 +02:00
Patrick Hilhorst
7f13478396
AModule: handle X axis scrolling 2019-06-16 13:17:34 +02:00
Alex
90a9c0e25f refactor: get rid of some mutex 2019-06-15 15:01:03 +02:00
Alex
340ec7be91 refactor: AModule 2019-06-15 14:57:52 +02:00
Alex
e7eef6b493
Merge pull request #385 from nenad/patch/add-total-memory
Expose total memory to the formatting directive
2019-06-15 11:16:30 +02:00
Nenad Stojanovikj
1b7068e61d Expose total memory to the formatting directive 2019-06-14 22:48:16 +02:00
Alex
dabe2bebbb feat(sway/window): handle floating nodes 2019-06-14 11:27:40 +02:00
Alex
486b5a5d38 fix(sway/window): check output recursively 2019-06-14 10:57:22 +02:00
Alex
11bbc3b24d
Fix twitchy scrolling on touchpads (#381)
Fix twitchy scrolling on touchpads
2019-06-14 10:38:25 +02:00
Alex
7f74de977c chore: 0.6.9 2019-06-14 10:27:41 +02:00
Alex
028b184f7b fix(workspaces): persistant class with empty outputs 2019-06-12 09:50:33 +02:00
Alex
564fdcb369 fix(custom): exit status 2019-06-11 22:09:47 +02:00
Patrick Hilhorst
396f7d4525
Workspaces: implement horizontal continuous scrolling 2019-06-11 18:44:54 +02:00
Alex
3c9b533997 fix(window): avoid hexpand 2019-06-11 17:57:17 +02:00
Patrick Hilhorst
ae397c8fa2
ALabel: add smooth-scrolling-threshold 2019-06-11 17:56:10 +02:00
Alex
ec75be0bc3 fix(Tray): click behaviour 2019-06-11 17:53:16 +02:00
Patrick Hilhorst
ed4521d113
Workspaces: fix twitchy scrolling on touchpads
Previously, any and all scroll events were interpreted as reason to switch
workspaces. This resulted in twitchy behaviour, where the scrolling was
practically unusable.

Now, we pool all scroll values, and only scroll if the value is larger than the
new config option "smooth-scrolling-threshold". If this option is not set, the
behaviour is unchanged.
2019-06-11 17:22:24 +02:00
Alex
c2e9ed6091 feat(workspaces): add class to persistant workspaces 2019-06-11 14:08:48 +02:00
Alex
a37b4687ff Revert "refactor(window): we don't need to subscribe workspace events"
This reverts commit 648eecdd8330af91ad31cfec199a0da5bd563766.
2019-06-11 14:06:31 +02:00
Alex
ee29a35aa5
Update README.md 2019-06-11 13:55:35 +02:00
Alex
0be8e200ce
adds the wl output name as a css class (#373)
adds the wl output name as a css class
2019-06-10 12:15:05 +02:00
razic
46e5dd93d4
adds the wl output name as a css class
now you can have a custom styling for each bar
2019-06-08 11:04:34 -07:00
Alex
2ee4a51546 chore: 0.6.8 2019-06-08 18:33:17 +02:00
Alex
91996a85c1
Merge pull request #372 from rianadon/patch-1
Increase specificity of media stylings
2019-06-08 18:28:42 +02:00
rianadon
460d25ac45
Increase specificity of media stylings
Because of CSS specificity rules, the `#custom-media` style will always override the `custom-spotify` and `custom-vlc` styles, so the background of the media element is always green rather than sometimes orange when VLC is running. I added `#custom-media` in front of each of the class selectors to increase their specificity so they take precedence.
2019-06-07 22:18:06 -07:00
Alex
648eecdd83 refactor(window): we don't need to subscribe workspace events 2019-06-07 15:08:33 +02:00
Alex
f04ff38567
Merge pull request #370 from toke/bugfix/upstream-369
Prevent zombie apocalypse by ignoring SIGCHLD
2019-06-06 12:07:03 +02:00
Thomas Kerpe
d20a586734 Prevent zombie apocalypse by ignoring SIGCHLD
Fixes Issue #369
2019-06-05 14:35:25 +02:00
Alex
1962caf144 refactor(window): gtk stuff in update method 2019-06-04 17:34:00 +02:00
Alex
9dbf057f58 fix(custom): hide on empty format 2019-06-03 09:50:35 +02:00
Alex
918146c16b style: prefer background-color property 2019-05-31 17:20:14 +02:00
Alex
0b01b35c76 refactor(pulseaudio): only watch changes 2019-05-31 16:21:01 +02:00
Alex
f3fb955d75 chore: 0.6.7 2019-05-31 12:15:01 +02:00
Alex
fcf2d18a01 refactor: destroy threads first 2019-05-29 17:53:22 +02:00
Alex
b05d4cd413 fix(network): retry around all getExternalInterface 2019-05-29 16:17:40 +02:00
Alex
9b89fc6470 refactor: disable bar scroll by default 2019-05-28 16:11:33 +02:00
Alex
c06725aa69 fix(network): better disconnect handler 2019-05-28 11:21:59 +02:00
Alex
5ae5821929 refactor(network): re-add MAX_RETRY in order to detect external interface 2019-05-28 11:08:48 +02:00
Alex
74e40432e5 fix(network): linked state 2019-05-28 09:58:48 +02:00
Alex
6e69af8967 refactor(custon): avoid useless logic 2019-05-27 00:08:16 +02:00
Alex
be2fa743eb refactor(custon): hide on empty text 2019-05-27 00:05:29 +02:00
Alex
5fdb122829
Create FUNDING.yml 2019-05-26 23:55:46 +02:00
Alex
6e73c6db61 refactor(network): remove last_ext_iface_ 2019-05-26 23:16:09 +02:00
Alex
253366baf4 refactor(network): remove useless assignment 2019-05-26 22:40:29 +02:00
Alex
ecec02c8be refactor(network): better events handler 2019-05-26 22:36:26 +02:00
Alex
070619fa34 revert: restore idle fix 2019-05-26 20:09:05 +02:00
Alex
d4ace4b4d8 fix(network): subscribe only wanted family 2019-05-26 20:06:27 +02:00
Alex
5fd92b3c28 fix(network): don't check IFF_UP 2019-05-26 19:53:10 +02:00
Alex
c0a39f34cd refactor(network): don't clear ipaddr 2019-05-25 18:02:36 +02:00
Alex
2a9fa1a4b9 refactor(bar): onRealize, onMap 2019-05-25 17:50:45 +02:00
Alex
07147878a9 refactor(network): code cleaning 2019-05-24 09:49:56 +02:00
Alex
ffadd5c1a7 refactor: avoid useless class vars 2019-05-24 09:49:09 +02:00
Alex
2b34f3a30f refactor: parse args before app creation 2019-05-23 10:13:49 +02:00
Alex
85d60f95c4 refactor(network): const methods 2019-05-22 22:20:50 +02:00
Alex
755d38d4d6 fix(custom): bad alloc 2019-05-22 19:46:56 +02:00
Alex
b673279a43 style: remove non wanted comment 2019-05-22 12:22:56 +02:00
Alex
9e1200ae32 refactor: also pass id to custom modules 2019-05-22 12:20:13 +02:00
Alex
e999cca7a6 style: don't specify included namespaces 2019-05-22 12:15:59 +02:00
Alex
d24d85bebf refactor: move label name and id to label contructor 2019-05-22 12:06:24 +02:00
Alex
97bd637f5d refactor(clock): avoid usless time_point_cast 2019-05-22 11:51:33 +02:00
Alex
23d4a811db refactor(clock): avoid usless duration_cast 2019-05-22 11:48:02 +02:00
Alex
bf5c00ff2a chore: 0.6.6 2019-05-22 10:16:14 +02:00
Alex
14ace24a26 style(battery): format 2019-05-22 10:09:05 +02:00
Alex
2fa581c7ea fix(battery): multiple paths 2019-05-22 10:06:54 +02:00
Alex
6ff013e25b
Estimate of time remaining until empty|full on tooltip (#331)
Estimate of time remaining until empty|full on tooltip
2019-05-22 09:44:55 +02:00
Max Reppen
cf3cb4c61f feat(Battery) Format argument for time to full|empty 2019-05-21 13:44:05 -04:00
Max Reppen
00ada46dfc feat(Battery) Time remaining on tooltip 2019-05-21 13:36:14 -04:00
Max Reppen
2db81a6107 fix(Battery) "current" unused and removed 2019-05-21 13:35:39 -04:00
Alex
3e76984ce7 chore: update network config 2019-05-21 17:44:46 +02:00
Alex
48a58cd979 fix(network): switch between ifaces upon disconnection 2019-05-21 17:38:47 +02:00
Alex
296b448d06 chore: update pulseaudio config 2019-05-21 14:58:03 +02:00
Alex
7a3febf6a7 fix(pulseaudio): default source format 2019-05-21 14:55:17 +02:00
Alex
bb4af295bc feat(pulseaudio): source info 2019-05-21 14:53:31 +02:00
Alex
cf7663153d fix(pulseaudio): allow to scroll to 0 2019-05-21 09:29:39 +02:00
Alex
12a251c3a4 fix(mode): escape text 2019-05-20 20:51:19 +02:00
Alex
4accdd4524 fix(Workspace): ordering 2019-05-20 20:46:59 +02:00
Alex
032ad925af
Merge pull request #339 from alebastr/master
Tray error handling and logging improvements
2019-05-20 20:34:29 +02:00
Aleksei Bavshin
50bfe78aed refactor(tray): improve error handling and add debug logs 2019-05-20 08:00:07 -07:00
Aleksei Bavshin
afd291a566 fix(tray): Fix glib assertion when old property value is missing
xembedsniproxy sets WindowId as 'i' instead of 'u' and DBus::Proxy
ignores incorrectly typed value.
2019-05-20 07:16:08 -07:00
Aleksei Bavshin
316a9be656 refactor(tray): Use spdlog for SNI::Item error messages 2019-05-20 07:16:08 -07:00
Aleksei Bavshin
cdb347aaca Add --log-level command line option 2019-05-20 06:48:44 -07:00
Alex
ed240ac105 feat: add warning about tray requirements 2019-05-20 15:21:13 +02:00
Alex
232073ca17
Fix clock is always a second off (#333)
Fix clock is always a second off
2019-05-20 14:45:34 +02:00
Alex
5314b74dae fix: remove workaround 2019-05-20 14:39:49 +02:00
Alex
e3879559a2
Merge pull request #330 from Organic-Code/master
Adding sway/workspaces:persistant_workspaces
2019-05-20 14:33:31 +02:00
Lucas Lazare
0ec8774a08 Fixing: missing argument for fmt, workspace order
Persistant workspaces would reorder upon their first creation
2019-05-20 08:23:42 -04:00
Alex
071b4928dc fix(workspaces): order 2019-05-20 13:31:02 +02:00
Alex
7c4d75d428 feat: create new workspace on the wanted output 2019-05-20 13:21:22 +02:00
Alex
67593b8c0f
Merge pull request #332 from Organic-Code/enhancement/spdlog
Adding spdlog
2019-05-20 12:07:58 +02:00
Alex
cff39bc7cf fix: remove watcher_id fixme comment as fixed on master 2019-05-20 11:56:55 +02:00
Alex
f2edc8f965 feat(Watcher): define watcher_id 2019-05-20 11:47:52 +02:00
Alex
7b11283b73
Allow formatting memory with used and available memory (#334)
Allow formatting memory with used and available memory
2019-05-20 11:30:19 +02:00
Alex
03e43fb31d refactor: remove wlroots dependency 2019-05-20 09:49:54 +02:00
Alex
913d0f7ad0
backlight: fix for percentage output for amdgpu_bl0 device (#336)
backlight: fix for percentage output for amdgpu_bl0 device
2019-05-20 09:40:03 +02:00
isheshukov
5feb478611
Merge branch 'master' into amd_fix 2019-05-19 22:40:47 +03:00
RX14
6bf64cd04d
Allow formatting memory with used and available memory 2019-05-19 16:34:42 +01:00
RX14
5e43b4f587
Fix clock is always a second off 2019-05-19 13:30:19 +01:00
Lucas Lazare
e8dd1e2d2c Adding missing ; and _
I'll admit I don't have libmpd on my computer
2019-05-18 20:10:42 -04:00
Lucas Lazare
51be97f9aa Adding spdlog 2019-05-18 19:44:45 -04:00
Lucas Lazare
a00f812cd1 Typo 2019-05-18 18:21:01 -04:00
Lucas Lazare
863e0babd8 Adding break when sorted_workspaces is filled 2019-05-18 12:09:30 -04:00
Lucas Lazare
8ba3052dd1 Adding comments & fixing code style 2019-05-18 12:04:09 -04:00
Lucas Lazare
1a76aa0c8c Improving ordering 2019-05-18 11:58:01 -04:00
Lucas Lazare
85f177a213 Adding sway/workspaces:persistant_workspaces in config file
c.f. https://github.com/Alexays/Waybar/issues/210
2019-05-18 10:58:55 -04:00
Alex
6ffc7ee3b3 chore: 0.6.5 2019-05-18 16:12:19 +02:00
Alex
ff28de0482 feat(custom): update on click/scroll 2019-05-18 16:07:55 +02:00
Alex
d5e8a37e63
Adding bandwidth support for network module (#328)
Adding bandwidth support for network module
2019-05-18 15:52:37 +02:00
Alex
67786c32a8 fix(merge): re-add missing code 2019-05-18 15:45:18 +02:00
Alex
93a644eec4
Merge branch 'master' into master 2019-05-18 15:42:27 +02:00
Alex
aa385e28b6 refactor: execute update on idle 2019-05-18 15:32:40 +02:00
Lucas Lazare
2c1a3d0430 Adding logging 2019-05-18 09:27:47 -04:00
Lucas Lazare
b31a64ad00 Displaying in ko/s and kb/s instead of interval dependant unit 2019-05-18 09:13:00 -04:00
Alex
4865a9ad6c fix(network): reset frequency 2019-05-18 13:57:50 +02:00
Alex
e70d8aff73
Merge pull request #327 from RX14/feature/disable-scroll-wraparound-option
Add option to disable scroll wraparound on workspaces
2019-05-18 13:50:35 +02:00
RX14
3e1c77d158
Add option to disable scroll wraparound on workspaces 2019-05-18 12:15:35 +01:00
Alex
d34c3a801c fix(Network): less updates 2019-05-18 12:27:10 +02:00
Lucas Lazare
794fb12e8c Adding bandwidth support for network module [linux only] 2019-05-17 23:39:51 -04:00
Ilia Sheshukov
f743882baa Merge branch 'master' into amd_fix 2019-05-17 22:33:02 +03:00
Ilia Sheshukov
9fa0eb7068 more elegant amd fix 2019-05-17 22:30:45 +03:00
Alex
43d724ebad
Merge pull request #326 from RX14/rename-bar-scroll
Rename the "disable-workspace-scroll" option to "disable-bar-scroll"
2019-05-17 20:24:15 +02:00
Alex
c862fde986
Merge pull request #325 from RX14/bugfix/scroll-broken
Fix workspace scroll wrapping off the end of the list
2019-05-17 20:23:51 +02:00
RX14
0d59f7b7d1
Rename the "disable-workspace-scroll" option to "disable-bar-scroll" 2019-05-17 17:42:11 +01:00
RX14
1e95f5d9b6
Fix workspace scroll wrapping off the end of the list 2019-05-17 17:37:24 +01:00
Alex
9234be8544 revert: re-add rountrip before widgets setup 2019-05-17 14:45:02 +02:00
Alex
9d3255fe9f fix: remove redundant roundtrip 2019-05-17 14:41:12 +02:00
Alex
d2d9db23b5 fix: uninitialized bool 2019-05-17 14:23:52 +02:00
Alex
d8be72e4b6 refactor: unexport tray watcher 2019-05-17 13:51:55 +02:00
Alex
f8a47598ba fix: roundtrip before bar creation 2019-05-17 13:40:04 +02:00
Alex
cb2d6e1997 feat(Network): frequency 2019-05-17 11:27:38 +02:00
Alex
17291dffdf fix(Battery): plugged state 2019-05-17 10:59:54 +02:00
Alex
9a091d7740 chore: 0.6.4 2019-05-17 10:18:05 +02:00
Alex
2cb70c7324
Merge pull request #322 from RX14/feature/generic-scroll
Allow scrolling on the entire bar surface
2019-05-17 10:03:52 +02:00
Alex
4d4cadb5ae refactor: simpler code 2019-05-17 09:59:37 +02:00
Alex
cddee2626a
Change scroll-step unit to percent (#316)
Change scroll-step unit to percent
2019-05-17 09:44:34 +02:00
Olegs Jeremejevs
d5c1e6f312 Change scroll-step unit to percent 2019-05-17 11:19:58 +08:00
RX14
b45dcdf74e
Allow scrolling on the entire bar surface 2019-05-16 22:18:43 +01:00
Alex
a1ffa7fa9f chore: enable alpine on Travis 2019-05-16 17:20:27 +02:00
Alex
4b4b74db0c feat(Battery): get icon by state 2019-05-16 17:18:27 +02:00
Alex
8901df9702 chore: add alpine dockerfile 2019-05-16 17:10:35 +02:00
Alex
e12766a656 fix: compilation on some os 2019-05-16 17:09:25 +02:00
Alex
31f63398dc
Merge pull request #319 from Alexays/network
Network improvements
2019-05-16 14:11:32 +02:00
Alex
0a14e7f3ab feat: ipv6 family 2019-05-16 12:22:08 +02:00
Alex
31416ffae6 fix: bar removed 2019-05-16 12:19:47 +02:00
Alex
fbe19d886a fix: drop memberships 2019-05-16 12:16:44 +02:00
Alex
9c67150884 refactor: prepare ipv6 2019-05-16 12:14:12 +02:00
Alex
f3c467cc46 refactor: remove non wanted headers 2019-05-16 11:27:22 +02:00
Alex
a09d2222be style: remove non wanted tags 2019-05-16 11:26:48 +02:00
Alex
45ebee52a6 fix: typo 2019-05-16 11:26:06 +02:00
Alex
841576497a refactor: cleaner events 2019-05-16 11:22:22 +02:00
Alex
e730105950
Merge pull request #318 from unresolvedsymbol/patch
Fix state behavior
2019-05-16 09:40:09 +02:00
Alex
963d4f68e4 refactor: remove useless param 2019-05-16 09:39:06 +02:00
unresolvedsymbol
7e8eee0571 fix state behavior 2019-05-15 22:14:51 -05:00
Alex
37f87be9dd
Merge pull request #317 from jorgenbele/master
fix(battery): change comparison expr. to assignment
2019-05-15 21:02:04 +02:00
Jørgen Bele Reinfjell
380fc58f3c fix(battery): change comparison expr. to assignment 2019-05-15 19:19:00 +02:00
Alex
22bf0b161a fix(Network): do not stop thread 2019-05-15 10:24:35 +02:00
Alex
5b3402e110 feat(Battery): plugged status 2019-05-14 15:43:57 +02:00
Alex
d209d350fe style(media): reduce min-width 2019-05-13 15:48:18 +02:00
Alex
0968170074 style(media): min-width 2019-05-13 15:40:02 +02:00
Alex
362c393b1d refactor: try/catch, sigc trackable 2019-05-13 15:15:50 +02:00
Alex
0c3c548bc0 fix(Window): avoid concurrency 2019-05-13 14:35:45 +02:00
Alex
b54160e02f fix(Tray): add item if not exist 2019-05-13 14:27:01 +02:00
Alex
db14fac038 style: remove chromium style 2019-05-13 13:23:32 +02:00
Alex
4f1defe6d5 fix(Pulseaudio): avoid handleScroll override 2019-05-13 11:46:12 +02:00
Alex
92967c7c06 fix(Label): reverse only battery states 2019-05-13 11:36:34 +02:00
Alex
fcb23d3104 feat(temperature): format-icons 2019-05-13 11:31:05 +02:00
Alex
62f8af8a39 fix(Window): avoid multiple same classes 2019-05-13 10:56:48 +02:00
Alex
d5a9eccb7b chore: v0.6.3 2019-05-12 20:02:53 +02:00
Alex
80e9ea746b fix(battery): use path for the / operator 2019-05-12 19:53:22 +02:00
Alex
84728f6fab
Merge pull request #313 from apiote/master
remove empty and solo classes when they do not apply
2019-05-12 12:13:07 +02:00
Alex
10a17187a1
Merge pull request #309 from dlasky/btaudio
fix(btformat): fixes an issue where btformat was not detected
2019-05-12 12:12:16 +02:00
Adam Pioterek
7cdde05568
remove empty and solo classes when they do not apply 2019-05-11 20:36:10 +02:00
Dan
e343cf4b00 fix(btformat): fixes an issue where btformat was not being correctly detected 2019-05-10 12:07:17 -04:00
Alex
e4756cf24e refactor: don't print an error when a watcher is already present 2019-05-10 14:56:28 +02:00
Alex
131dae5818 chore: v0.6.2 2019-05-10 13:40:45 +02:00
Alex
4688002f23 feat: margins 2019-05-09 15:10:13 +02:00
Alex
5bf0ca85ac refactor: try/catch around json parse 2019-05-09 10:30:54 +02:00
Alex
fd9b34adf8 chore: add fedora to travis 2019-05-07 14:04:45 +02:00
Alex
8a011e6d90 refactor(Dockerfile): fix fedora 2019-05-07 13:45:49 +02:00
Alex
5a44c8c6de refactor: avoid unneeded json parsing 2019-05-07 13:43:48 +02:00
Alex
74137befba fix(window): title flickers 2019-05-07 13:31:41 +02:00
Alex
b75e0bb0d0 refactor: remove useless bar param 2019-05-07 13:21:18 +02:00
Alex
77d9dd06af chore: fedora dockerfile 2019-05-07 13:15:59 +02:00
Alex
e5d5735e9d
feat(percent): adds a percent class to numeric modules (#297)
feat(percent): adds a percent class to numeric modules
2019-05-03 17:35:21 +02:00
Dan
dd0ebe117c chore(cr): cr cleanup 2019-05-03 08:08:55 -04:00
Dan
5f0a3063d1 feat(states): add getState to other percent based modules 2019-05-02 22:24:29 -04:00
Dan
3bac96945c Revert "feat(percent): adds a percent class to numeric modules"
This reverts commit 82302e58f3b611f7ff6d686d1783b1c32914f7c9.
2019-05-02 22:24:29 -04:00
Dan
e158a3e132 feat(states): add generic 'states' to all labels 2019-05-02 22:24:29 -04:00
Dan
472363a623 feat(percent): adds a percent class to numeric modules 2019-05-02 22:24:29 -04:00
Alex
1a024db03c fix(idle_inhibitor): overload 2019-05-02 17:51:01 +02:00
Alex
5623bbecfe feat(idle_inhibitor): pass status to click events exec 2019-05-02 16:56:45 +02:00
Alex
1e871b2353 refactor: propagate the event further 2019-05-02 16:46:53 +02:00
Alex
82bed9dd5e chore: v0.6.1 2019-05-02 14:31:02 +02:00
Alex
d027243a19 fix: json thread safe 2019-05-02 14:24:54 +02:00
Alex
e6d59f05cc
fix s/hidded/hidden/ typo (#295)
fix s/hidded/hidden/ typo
2019-05-02 13:59:57 +02:00
Eric Engestrom
4d4562aade fix s/hidded/hidden/ typo 2019-05-01 12:40:12 +01:00
Alex
e8f31a0c4f revert: infinite seconds for once custom modules 2019-04-26 21:57:15 +02:00
Alex
f8c06b27ae Revert "feat(Cpu): dynamic fmt args"
This reverts commit 2d9bcb1a2df916e4a6846659ce91c5cd8038097e.
2019-04-26 21:49:16 +02:00
Alex
717a07d584 refactor(Window): simpler conditions 2019-04-26 15:29:54 +02:00
Alex
2d9bcb1a2d feat(Cpu): dynamic fmt args 2019-04-26 14:07:31 +02:00
Alex
4dd36890c1 style: background color transition 2019-04-26 12:37:35 +02:00
Alex
66acaeca7f style: workspaces button color for chromium class 2019-04-26 12:01:42 +02:00
Alex
20cf7592aa
Merge pull request #287 from jonvaldes/master
Allow rotating label contents by specifying a new "rotate" property
2019-04-26 09:39:52 +02:00
Jon Valdés
9fe29c37b4 Fix indentation 2019-04-25 22:56:14 +02:00
Jon Valdés
f8ae1534db Allow rotating label contents by specifying a new "rotate" property in the label config 2019-04-25 22:47:58 +02:00
Alex
46c91a26ac style: workspaces button color for chromium class 2019-04-25 17:14:16 +02:00
Alex
07c592cc86 chore: v0.6.0 2019-04-25 16:59:22 +02:00
Alex
bb8ff5a99f feat(Bar): add class depend of window in the workspace 2019-04-25 16:47:51 +02:00
Alex
79a5e9ecee feat: multiple bar with same process 2019-04-25 13:25:06 +02:00
Alex
9504b7ac03 fix(Bar): typo 2019-04-24 12:42:16 +02:00
Alex
311c34ecbc feat(Bar): handle widget size changes 2019-04-24 12:37:24 +02:00
Alex
90d89fe974 refactor: kill custom modules scripts en destroy 2019-04-23 15:56:38 +02:00
Alex
cccf60c30e fix(Workspaces): fix concurrence and move json parser to ipc client 2019-04-23 11:42:08 +02:00
Alex
07dba791cf
Update fmt build dependency (#284)
Update fmt build dependency
2019-04-23 09:46:03 +02:00
Hendrik Schröter
3ee99946c7 chore: update fmt build dependency
Closes #279
2019-04-23 04:40:27 +02:00
Alex
0d0f5ed7db chore: update fmt wrap 2019-04-21 19:19:38 +02:00
Alex
263a32c9af
Merge pull request #278 from minijackson/mpd-timeout
fix(mpd): regularly timeout the event listener to prevent timeout
2019-04-21 19:13:38 +02:00
Minijackson
b50650f63f
fix(mpd): regularly timeout the event listener to prevent timeout
The MPD server has a connection_timeout that defaults to 60. If no data
is transferred in this timespan, the connection is closed. If the
connection is closed while the event listener is listening for events,
it will block forever. By timing out the event listening and
re-connecting regularly, we prevent this issue. An option "timeout" has
been added for users that have a lower server connection_timeout than
default. Fixes #277
2019-04-21 10:58:40 +02:00
Alex
768bc29bc1
Merge pull request #275 from cole-h/issue-273
Ensure no NULL tags are set
2019-04-20 23:32:13 +02:00
Cole Helbling
12e1233d38
Fix compile-time warning of catch by value 2019-04-20 09:16:11 -07:00
Cole Helbling
160837b900
Ensure no NULL tags are set
Because `mpd_song_get_tag` from libmpdclient can return NULL, verify the
value of tag is valid. Otherwise, set a default string of "N/A". Also
adds configuration to specify what this default string should be.
2019-04-20 09:12:30 -07:00
Alex
d03997bdaa
Merge pull request #272 from Alexays/refactoring
Refactoring
2019-04-19 17:33:49 +02:00
Alex
471b5b1ea1
Merge branch 'master' into refactoring 2019-04-19 17:33:18 +02:00
Alex
29d8f365f8 refactor(Tray): proper lookup in the default theme 2019-04-19 17:30:40 +02:00
Alex
8cf19826aa fix(Tray): Unexport on exit 2019-04-19 17:03:46 +02:00
Alex
cbb6f2a307 refactor(Workspaces, IPC): no more mutex in the workspaces modules, moved to the IPC client for a proper handling 2019-04-19 16:48:02 +02:00
Alex
e77c155ede fix(workspaces): avoid mutex block 2019-04-19 12:11:55 +02:00
Alex
811468c0ab
Merge pull request #274 from minijackson/mpd-escape
fix(mpd): Escape MPD values in the label
2019-04-19 11:57:36 +02:00
Alex
171ecd53aa refactor(Bar): roundtrip before setup widgets 2019-04-19 11:56:40 +02:00
Minijackson
66b0420391
fix(mpd): Escape MPD values in the label 2019-04-19 11:11:44 +02:00
Alex
42dc0c4c71 fix(ipc): typo 2019-04-19 11:10:48 +02:00
Alex
bb1cf7570e refactor(IPC): use sigc signal 2019-04-19 11:09:06 +02:00
Alex
a14b933d3e fix(config): add missing comma 2019-04-18 17:55:02 +02:00
Alex
4c8f4f82dc fix(config): add missing comma 2019-04-18 17:54:38 +02:00
Alex
6ed8f94dab refactor: format code 2019-04-18 17:52:00 +02:00
Alex
807ef32357 refactor: format && better output management 2019-04-18 17:47:40 +02:00
Alex
817c42841b
Merge pull request #268 from minijackson/mpd
Add MPD support
2019-04-18 16:11:16 +02:00
Minijackson
3e54c3c669
fix(mpd): better sample theme 2019-04-18 15:57:58 +02:00
Minijackson
3656035c89
fix(mpd): slightly better and safer error handling 2019-04-18 15:57:57 +02:00
Minijackson
0ce8821aec
feat(mpd): Add playing / paused classes 2019-04-18 15:57:57 +02:00
Minijackson
38e37f3680
chore(mpd): add sample MPD config 2019-04-18 15:57:57 +02:00
Minijackson
ab43d34a1e
refactor(mpd): Add module name to log messages 2019-04-18 15:57:57 +02:00
Minijackson
22eccc2ac2
feat(mpd): reset player state when connection drops 2019-04-18 15:57:57 +02:00
Minijackson
cd92b475ad
chore: Add clang-format configuration and format MPD module 2019-04-18 15:57:57 +02:00
Minijackson
235997fa73
feat(mpd): Add support for elapsed and total time 2019-04-18 15:55:46 +02:00
Minijackson
80a12d0238
feat(mpd): play/pause on click & stop on right-click 2019-04-18 15:55:46 +02:00
Minijackson
07dab2baec
feat(mpd): Add support for options (random, repeat, etc.) 2019-04-18 15:55:45 +02:00
Minijackson
cbfcec4867
feat(mpd): Add support for play/pause icons 2019-04-18 15:55:45 +02:00
Minijackson
557b786ce0
feat(mpd): Allow for specifying the reconnect interval 2019-04-18 15:55:45 +02:00
Minijackson
8c9dd94670
feat(mpd): Add support for setting tooltip label when disconnected 2019-04-18 15:55:45 +02:00
Minijackson
06aff70e2e
feat: Add basic support for MPD 2019-04-18 15:55:45 +02:00
Minijackson
85b6e6f709
chore: Add EditorConfig file 2019-04-18 15:55:45 +02:00
Alex
6d6df4be00 refactor(sni-item): better way to search in default theme 2019-04-17 22:15:18 +02:00
Alex
9564adb5b4 refactor(Bar): avoid reinterpret_cast 2019-04-17 19:33:49 +02:00
Alex
aeaa1927d9 fix: add default_paths on init 2019-04-17 19:23:52 +02:00
Alex
346ec68578 refactor: format tray && partial fix for #235 2019-04-17 14:19:04 +02:00
Alex
93a1bafb46 chore: add clang-format 2019-04-17 13:47:34 +02:00
Alex
5f37abbd3f
Update README.md 2019-04-16 13:42:49 +02:00
Alex
3273ee8b42 fix(Tray): icon size lookup 2019-04-15 12:10:37 +02:00
Alex
d05b8398fa fix: prefer to hold running even when no window is open 2019-04-15 11:42:16 +02:00
Alex
ecc5f48dd7 feat: partially hide waybar on toggle 2019-04-15 11:11:16 +02:00
Alex
316b948d86
Merge pull request #265 from Alexays/custom-multiple-classes
Custom: Ability to add multiple classes
2019-04-15 10:58:34 +02:00
Alex
5828d34fa0
Merge branch 'master' into custom-multiple-classes 2019-04-15 10:58:27 +02:00
Alex
bc9a49787a feat: enable pango markup on sway workspaces 2019-04-15 10:55:44 +02:00
Alex
6aee51479d feat: ability to add multiple classes 2019-04-15 10:18:27 +02:00
Alex
57c99dc526 refactor(Tray): also search in default theme 2019-04-11 15:28:38 +02:00
Alex
78067462be fix(Tray): icons update 2019-04-11 15:20:39 +02:00
Alex
5870421f84 refactor(temperature): check if file exist on init 2019-04-11 15:08:23 +02:00
Alex
24684ca71b chore: v0.5.1 2019-04-04 12:01:00 +02:00
Alex
8351dea292 refactor(network): process all messages 2019-04-04 11:58:27 +02:00
Alex
a68011bce6 style(workspaces): urgent style 2019-04-02 09:31:40 +02:00
Alex
1f6f443c48 Revert "refactor(network): fix skipped messages"
This reverts commit 1ccf372f8e9d74cb18e92220c18a0729832fe69e.
2019-04-01 11:41:43 +02:00
Alex
7fac483530 fix: don't bind RTMGRP_IPV(4|6)_ROUTE 2019-03-31 16:33:01 +02:00
Alex
0ad9a03d3d
Merge pull request #256 from SibrenVasse/spotify-json
Convert spotify module to generic json version
2019-03-31 16:30:16 +02:00
Sibren Vasse
0f689b733d feat(custom): make spotify module generic
Set class via json attribute
Choose icon via alt attribute
2019-03-31 16:20:43 +02:00
Sibren Vasse
618fe80670 chore(custom): fix typo and quoting style 2019-03-31 16:10:42 +02:00
Alex
3a8cd91cc0 Revert "refactor: partial revert of 1ccf372f8e9d74cb18e92220c18a0729832fe69e"
This reverts commit 949a4ecf2e4619bd5eb74c84bccc0e06e79f9594.
2019-03-30 09:20:28 +01:00
Alex
30725824d0
Merge pull request #251 from DanielVoogsgerd/feature-select-player
Feature select player
2019-03-30 09:19:24 +01:00
Alex
6522a7acb4 chore: let compile sway modules even if we can't find the binary 2019-03-30 09:15:51 +01:00
Alex
fd3e4ab2d4
Merge branch 'master' into feature-select-player 2019-03-30 09:07:31 +01:00
Alex
949a4ecf2e refactor: partial revert of 1ccf372f8e9d74cb18e92220c18a0729832fe69e 2019-03-30 09:03:31 +01:00
Alex
860a6a1b81
Merge pull request #252 from alebastr/tray-items-refresh
Process tray icon updates
2019-03-30 08:40:55 +01:00
Aleksei Bavshin
5a2b5624dc feat(tray): process tray icon update signals 2019-03-29 18:40:28 -07:00
Aleksei Bavshin
82fcee33b3 refactor(tray): use Gio::DBus bindings in SNI Item class 2019-03-29 18:28:29 -07:00
Aleksei Bavshin
842e8501f9 fix(tray): free icon data on pixbuf update 2019-03-28 10:52:25 -07:00
Alex
7bd5454e43
Merge pull request #250 from DanielVoogsgerd/feature-arguments-logging
Feature: Command line arguments/Logging
2019-03-28 09:38:33 +01:00
Alex
8340e88795
Merge pull request #249 from DanielVoogsgerd/refactor-main_method
refactor: Add main method / Clean global scope
2019-03-28 09:38:07 +01:00
Daniel Voogsgerd
095294389b feat(Spotify): Add option to select player 2019-03-27 22:27:23 +01:00
Daniel Voogsgerd
3bcf3befec chore(Spotify): Add logging for events 2019-03-27 17:28:02 +01:00
Daniel Voogsgerd
db69b449ba feat(Spotify): Add logger 2019-03-27 16:37:59 +01:00
Daniel Voogsgerd
ed358ef024 feat(Spotify): Add argument parser 2019-03-27 16:33:15 +01:00
Daniel Voogsgerd
faa79ea216 refactor: Add main method / Clean global scope 2019-03-27 16:10:36 +01:00
Alex
b17984f75e
Merge pull request #248 from ndrewtl/patch-1
Note availability in Arch community repository
2019-03-27 08:15:44 +01:00
Andrew Lee
4521db66ce
Note availability in Arch community repository 2019-03-26 18:20:09 -07:00
Alex
7912b7f119
Merge pull request #245 from SibrenVasse/json-icon
[custom] Allow icon selection based on json alt attribute
2019-03-26 09:26:58 +01:00
Sibren Vasse
55a6e4907b feat(custom): allow icon selection based on json alt attribute 2019-03-26 00:35:49 +01:00
Alex
dda0cc793e fix: check vertical after parsing multiple outputs 2019-03-25 21:02:00 +01:00
Alex
5144426f0e fix(workspace): scroll direction 2019-03-25 11:55:01 +01:00
Alex
98c028226d
Merge pull request #241 from jlbribeiro/fix/essid-unescaped-input
Fix #240: Escape ESSID text before interpreting as pango
2019-03-24 10:28:00 +01:00
José Ribeiro
3eb901f800 Escape ESSID text before interpreting as pango
Fixes #240.
2019-03-24 03:11:54 +00:00
Alex
47142a61ae feat: allow waybar to be positioned on left/right 2019-03-22 12:25:05 +01:00
Alex
f700319d7f chore: v0.5.0 2019-03-20 10:51:40 +01:00
Alex
418767c405
Merge pull request #228 from hoellen/feat-rtsignal
Add pkill signals to custom modules
2019-03-18 19:53:02 +01:00
hoellen
1f924c9c06
Merge branch 'master' into feat-rtsignal 2019-03-18 19:04:11 +01:00
hoellen
38fa7ceab1 add signalhandler for module update 2019-03-18 18:46:44 +01:00
Alex
22cddc5e26 refactor(workspaces): scroll output aware 2019-03-18 14:44:07 +01:00
Alex
1ccf372f8e refactor(network): fix skipped messages 2019-03-18 11:07:36 +01:00
Alex
3257968a28
Merge pull request #222 from alebastr/pulseaudio-ci-icon-lookup
fix(pulseaudio) use case-insensitive comparison for icon lookup
2019-03-15 09:43:02 +01:00
Alex
6fc06fe9db
Merge branch 'master' into pulseaudio-ci-icon-lookup 2019-03-15 09:41:40 +01:00
Alex
75afcd3ad1
Merge pull request #221 from alebastr/sway-ipc-string-assertion
fix(sway): ipc client crash when compiled with -D_GLIBCXX_ASSERTIONS
2019-03-15 09:40:41 +01:00
Aleksei Bavshin
9ad80849b1 fix(pulseaudio): Avoid allocation of string vector on every call of getPortIcon() 2019-03-14 18:35:16 -07:00
Aleksei Bavshin
492d151079 fix(pulseaudio) use case-insensitive comparison for icon lookup 2019-03-14 18:08:12 -07:00
Aleksei Bavshin
00176c9514 fix(sway): ipc client crash when compiled with -D_GLIBCXX_ASSERTIONS
reserve() does not change string size and any access beyond data() + size() is UB
2019-03-14 17:53:45 -07:00
Alex
6d2dcd8ac7 fix(temperature): default thermal zone 2019-03-14 14:01:10 +01:00
Alex
7d6079bb06 style: update default temperature style/config 2019-03-13 22:39:39 +01:00
Alex
c820ed3495
Merge pull request #216 from Groggy/temperature
Add temperature module
2019-03-13 22:21:11 +01:00
Groggy
0314bf70b3
feat(temperature): update README 2019-03-13 16:56:13 +01:00
Groggy
7ae549dc9e
Add temperature module 2019-03-13 13:35:43 +01:00
Alex
cd13180199
Merge pull request #213 from jubalh/rdmos
Add available on openSUSE
2019-03-12 11:41:05 +01:00
Michael Vetter
8d6d8e8210 Add available on openSUSE 2019-03-12 11:01:18 +01:00
Alex
2995da845d fix: config per output 2019-03-10 10:34:56 +01:00
Alex
973cec1713 feat(idle): add status class 2019-03-10 10:29:06 +01:00
Alex
94d7b083c5 fix(Pulseaudio): switch case 2019-03-08 15:30:41 +01:00
Alex
ef88f0a223 fix: clock rounding 2019-03-07 12:34:21 +01:00
Alex
ab0dcbfb2e
Merge pull request #204 from Organic-Code/master
Improving mouse buttons support
2019-03-05 10:16:19 +01:00
Alex
1974766125
Merge branch 'master' into master 2019-03-05 10:15:05 +01:00
Jonas
9c0c0d262e
Using "inclusive or" for format-alt-click and other click events
c.f. https://github.com/Alexays/Waybar/pull/204#discussion_r262009635

Co-Authored-By: Organic-Code <Lazarelucas@yahoo.fr>
2019-03-04 15:00:44 -05:00
Alex
768e57dd37
Merge pull request #208 from jonfin/idle_inhibitor_bugfix
[bugfix] idle_inhibitor: handle click events correctly
2019-03-04 11:20:23 +01:00
Alex
67c756b28e
Merge branch 'master' into idle_inhibitor_bugfix 2019-03-04 11:19:14 +01:00
Alex
584750d0fe
Merge pull request #207 from jonfin/tooltip-network
Add custom tooltip format for network module
2019-03-04 11:17:52 +01:00
Jonas
80ef63791d [bugfix] idle_inhibitor handles click events correctly
- Declare event handler in ALabel virtual so the idle_inhibitor can
  overriding them
- Handle the right click event in idle_inhibitor and call ALabel handler if needed
2019-03-03 22:02:34 +01:00
Jonas
a9f680b06e Add custom tooltip format for network module 2019-03-03 21:35:35 +01:00
Alex
7e4fed8218
Merge pull request #206 from dikeert/issue/205-add-option-to-show-current-workspace-only
resolves #205
2019-03-03 18:04:03 +01:00
John Doe
737da3615f resolves #205 2019-03-03 21:35:32 +11:00
Lucas Lazare
d0f56b7bdd Improving mouse buttons support
Adding support for middle, backward, and forward mouse buttons click events, adds config keys : "on-click-middle", "on-click-forward" and "on-click-backward"
Adding the key "format-alt-click" to choose what mouse clicks toggles the alternative format, when present. Possible values (in config): "click-right", "click-left", "click-middle", "click-forward", "click-backward". Other values have the same effect than "click-left". Previous behaviour was to toggle it whenever any click was registered and any click that was not handled by "on-click-right" or "on-click-left" occurred
2019-03-02 14:07:12 -05:00
Alex
f47492c371 chore: v0.4.0 2019-03-01 17:12:02 +01:00
Alex
79b0367e6c feat(custom): escape option 2019-03-01 17:03:01 +01:00
Alex
2c411b9848
Merge pull request #199 from ianhattendorf/fix/backlight-disable-not-found
Disable backlight module if no backlights found
2019-03-01 09:31:49 +01:00
Ian Hattendorf
ac6d833d4d
Ignore all potential build directories
This is useful when using multiple build directories, eg:
- build-debug
- build-release
- build-sanitize
2019-02-28 19:57:49 -07:00
Ian Hattendorf
39de8e544c
Disable backlight module if no backlight found 2019-02-28 19:50:57 -07:00
Alex
0271e9bc1a Revert "fix: Escape user controlled input"
This reverts commit 7247360e2972798cd525b8a9493ab4f15c546712.
2019-02-28 19:30:27 +01:00
Alex
470f539346
Merge pull request #193 from Robinhuett/custom_alt
feat(custom): Add field for additional data to json
2019-02-26 12:18:47 +01:00
Alex
6633e34bbd
Merge branch 'master' into custom_alt 2019-02-26 12:18:34 +01:00
Alex
4b3725ec31
Merge pull request #194 from ianhattendorf/fix/backlight-crash-unplug-monitor
Fix crash when monitor unplugged
2019-02-26 12:18:19 +01:00
Ian Hattendorf
c1295c8fd6
Fix crash when monitor unplugged
`Backlight#devices_` was being destructed before
`Backlight#udev_thread_`. Also check if thread is still running after
`epoll_wait`
2019-02-25 20:05:44 -07:00
Robinhuett
39bf403505 feat(custom): Add field for additional data to json 2019-02-25 22:04:09 +01:00
Alex
4499a23e51
Merge pull request #192 from DutchMofo/clock-tooltip
Fix tooltip format
2019-02-25 20:39:31 +01:00
Piet van der Loo
821a009c32 Fix tooltip format 2019-02-25 19:25:19 +01:00
Alex
961a05bedf
Merge pull request #191 from Robinhuett/escape_userinput
fix: Escape user controlled input
2019-02-25 18:46:17 +01:00
Robinhuett
7247360e29 fix: Escape user controlled input 2019-02-25 18:28:56 +01:00
Alex
abfa428dab
Merge pull request #190 from Robinhuett/fix_backlight_fmtalt
fix(backlight) Allow format-alt
2019-02-25 10:52:42 +01:00
Robinhuett
63e97df9ff fix(backlight) Allow format-alt 2019-02-24 22:15:41 +01:00
Alex
5a7f801922
Merge pull request #189 from DutchMofo/clock-tooltip
Added clock tooltip with optional alternate format
2019-02-24 12:10:01 +01:00
Piet van der Loo
8fa30f8ce3 Forgot comma in json 2019-02-24 11:54:59 +01:00
Piet van der Loo
da4661f97c Removed clock tooltip from example config 2019-02-24 11:49:58 +01:00
Piet van der Loo
7245fb5d0a Added clock tooltip with optional alternate format 2019-02-24 09:25:34 +01:00
Alex
b4f36436c3 style: update idle inhibitor color 2019-02-22 17:34:13 +01:00
Alex
eb7e265eb1
Merge pull request #187 from jonfin/idle_inhibitor
Add module Idle inhibitor
2019-02-22 17:31:51 +01:00
Jonas
c2ed0cb832 Add the possibility to disable the tooltip 2019-02-22 16:58:36 +01:00
Jonas
d708ce2be9 Add idle inhibitor module 2019-02-22 16:55:46 +01:00
Alex
83a6475510 feat: can disable tooltip 2019-02-22 11:35:47 +01:00
Alex
331b28393a
Merge pull request #181 from ianhattendorf/feature/module-brightness
Add backlight module
2019-02-21 16:04:32 +01:00
Alex
afbf2de1b9
Merge branch 'master' into feature/module-brightness 2019-02-21 15:29:17 +01:00
Ian Hattendorf
e67347f6ad
Gate backlight module behind libudev availability 2019-02-18 21:11:18 -07:00
Alex
bef8520937 Remove opensuse ci for now 2019-02-18 12:33:40 +01:00
Alex
8bfcb106c0 style: comment about workspace hover effect 2019-02-18 12:30:41 +01:00
Ian Hattendorf
875306804c
Add backlight module
Monitor the backlight level via udev. Poll every `interval` as well,
in case backlight udev events aren't supported.
2019-02-17 15:29:49 -07:00
Alex
6bf4f65228 fix: two finger scroll 2019-02-16 09:56:53 +01:00
Alex
0c9edb0c4b fix(custom): check exist_status in endless script before clean the output 2019-02-16 09:48:27 +01:00
Alex
3e18673451 fix: remove bluetooth class on else 2019-02-12 17:55:50 +01:00
Alex
d0370acb21 refactor(network): better network disconnection 2019-02-11 19:06:39 +01:00
Alex
aeec80f375 fix(Tray): big icon 2019-02-07 13:34:30 +01:00
Alex
dc9fe04d11 refactor: add retry to get external interface 2019-02-06 10:33:12 +01:00
Alex
01cec9fcb7 fix(bar): multi screens 2019-02-04 22:09:01 +01:00
Alex
6fb25ade7e chore: update opensuse Dockerfile 2019-02-04 11:20:18 +01:00
Alex
e10e9554ab
Update README.md 2019-02-04 10:32:16 +01:00
Alex
93173851d3 fix(Workspaces): index 2019-02-02 12:07:59 +01:00
Alex
add9e925f4 fix(Workspaces): button order 2019-02-02 00:36:52 +01:00
Alex
60af51fc17 chore: update opensuse dockerfile 2019-02-01 21:56:34 +01:00
Alex
3021ef2d51
Update README.md 2019-02-01 21:52:38 +01:00
Alex
0ddcf26a45 feat: output configuration 2019-02-01 21:45:59 +01:00
Alex
4d3c2191cb chore: v0.3.0 2019-01-28 19:38:58 +01:00
Alex
38fc62ea27 feat: bar id 2019-01-28 19:26:16 +01:00
Alex
2f7b2677d7
Merge pull request #155 from Robinhuett/window_ignore_self_fix
fix(window): Fix #154
2019-01-27 12:06:58 +01:00
Robinhuett
6d03d9f6a9 fix(window): Fix #154 2019-01-27 11:59:07 +01:00
Alex
6f2d784d4e
Merge pull request #154 from Robinhuett/window_ignore_self
fix(window): Ignore waybar
2019-01-27 02:09:44 +01:00
Robinhuett
ce6816737c fix(window): Ignore waybar
With this, the window title waybar will be ignored so it wont flicker as decribed in #148
2019-01-26 19:02:11 +01:00
Alex
a0fd99b112
Merge pull request #152 from jubalh/fmt
Add fmt dependency to README.md
2019-01-25 16:42:41 +01:00
Michael Vetter
12a48b70ae Add fmt dependency to README.md 2019-01-25 16:38:38 +01:00
Alex
aedf133b16
Merge pull request #146 from Alexays/network_alt
fix(Network): format-alt
2019-01-14 09:05:52 +01:00
Alex
02aed73295
Merge branch 'master' into network_alt 2019-01-13 22:39:04 +01:00
Alex
9348e88592
Merge pull request #130 from Alexays/destructor
refactor: proper modules destruction
2019-01-13 22:37:19 +01:00
Alexis
eace8c549f fix(Network): format-alt 2019-01-13 22:36:37 +01:00
Alexis
f8116132a7 fix(Workspaces): check thread is running before parse response 2019-01-13 22:23:09 +01:00
Alexis
171e0e5ae3 revert: don't disable seq check 2019-01-13 22:22:22 +01:00
Alexis
30781757e3 revert: prefer nl_send_sync 2019-01-13 22:22:22 +01:00
Alexis
800d2f388e refactor(network): proper signal strength type 2019-01-13 22:22:22 +01:00
Alexis
1647e31b48 refactor: free netlink message 2019-01-13 22:22:22 +01:00
Alexis
399f61df98 refactor: proper modules destruction 2019-01-13 22:22:22 +01:00
Alex
8af813c2f1
Merge pull request #140 from Robinhuett/headers
refactor: replace all gtkmm.h includes
2019-01-09 01:00:00 +01:00
Robinhuett
29a2ee1744 refactor: Replace all occurencec of gtkmm.h and only use the necessary headers 2019-01-08 21:05:44 +01:00
Alex
afa1cc8287
Update README.md 2018-12-29 00:06:59 +01:00
Alex
ab78698ffd
Merge pull request #139 from cjbassi/master
Remove ws index from sway ws names
2018-12-28 18:45:58 +01:00
Caleb Bassi
8ea0659ee2 Remove ws index from sway ws names 2018-12-28 09:36:02 -08:00
Alex
aa6da11ba4
Merge pull request #138 from cjbassi/master
Add install and build-debug commands to makefile
2018-12-28 15:58:51 +01:00
Caleb Bassi
6a5a4881ad Add install and build-debug commands to makefile 2018-12-28 06:37:07 -08:00
Alex
3a9bf932b4
Merge pull request #133 from cjbassi/feature/makefile
Add simple makefile
2018-12-28 01:23:23 +01:00
Alex
a078be991a
Merge branch 'master' into feature/makefile 2018-12-28 01:16:56 +01:00
Alex
83ae5ec5c9
Merge pull request #134 from cjbassi/fix/typo
Fix typo
2018-12-28 01:16:31 +01:00
Caleb Bassi
b4d38294a7 Fix typo 2018-12-27 16:03:29 -08:00
Caleb Bassi
7804514c5c Add simple makefile 2018-12-27 15:56:47 -08:00
Alex
513278597a
Merge pull request #129 from Robinhuett/custom-module-icon
Add format-icons to custom module
2018-12-26 11:42:25 +01:00
Robinhuett
4698c9d2cf chore(custom): Change int conversion 2018-12-26 11:35:58 +01:00
Robinhuett
11c98f13e3 feat(custom): Add format-icons to custom module
This commit allows custom modules (json only) to set a percentage. This can be displayed either by using {percentage} or by using {icon} with format-icons set.
2018-12-26 03:52:05 +01:00
Alex
76bbdd0425
Merge pull request #128 from Robinhuett/wifiicon
Use SignalStrength for format icons
2018-12-25 21:07:25 +01:00
Robinhuett
34df2b0695 fix(ALabel): Better fix for getIcon 2018-12-25 21:03:13 +01:00
Robinhuett
ad638357b5 feat(network): Use Signal Strength for format-icons 2018-12-25 14:17:34 +01:00
Robinhuett
7404f80122 fix(ALabel): getIcon 2018-12-25 14:15:59 +01:00
Alexis
de0ee9fcb2 fix(battery): adapter status 2018-12-24 12:17:07 +01:00
Alexis
755fad6bc3 fix(battery): typo 2018-12-24 08:50:58 +01:00
Alexis
e3c0624c48 fix(battery): typo 2018-12-24 08:38:37 +01:00
Alexis
87e55ea993 feat(battery): check adapter online as fallback when battery status report unknown 2018-12-24 08:37:10 +01:00
Alexis
3b8bfb08a4 fix(network): typo 2018-12-22 14:00:56 +01:00
Alex
00728fe877
Merge pull request #125 from chep/master
fix(pulseaudio): return puleseaudio port string if unknown
2018-12-20 10:24:55 +01:00
Cédric Chépied
a4062455cd fix(pulseaudio): return puleseaudio port string if unknown 2018-12-20 09:54:10 +01:00
Alexis
3691d84543 chore: v0.2.3 2018-12-18 17:42:35 +01:00
Alexis
b554094c7e feat: args && class id 2018-12-18 17:30:54 +01:00
Alexis
66ad2864c2 fix(Pulseaudio): use markup 2018-12-17 09:00:40 +01:00
Alexis
c7b0639f32 fix(workspaces): check thread is running 2018-12-09 10:49:28 +01:00
Alexis
0acc50264e fix(custom): failed getline after closed pipe 2018-12-08 13:57:56 +01:00
Alexis
1b13f9e38c fix(custom): close endless scripts 2018-12-08 12:58:47 +01:00
Alexis
7befd27059 fix: clock interval 2018-12-04 09:38:08 +01:00
Alexis
2ec34e4adb feat: add $HOME to valid path 2018-12-03 20:12:34 +01:00
Alexis
812a7a9861 fix: typo 2018-12-03 11:13:56 +01:00
Alexis
1d96d57b75 feat: warn user about stopped endless custom module 2018-12-03 09:35:10 +01:00
Alexis
691fb88057 refactor(modules): const bar 2018-12-01 00:10:41 +01:00
Alexis
281bab4943 feat(ci): opensuse 2018-11-30 21:48:42 +01:00
Alexis
8e93fd3ae0 revert: Update to new Sway IPC protocol 2018-11-29 09:50:00 +01:00
Alex
37c7e586d6
Merge pull request #110 from tokyovigilante/ipc-fix
Update to new Sway IPC protocol
2018-11-29 00:40:57 +01:00
Ryan Walklin
3a5a470d90 Update to new Sway IPC protocol 2018-11-28 22:27:06 +00:00
Alex
c051b517ca
Merge pull request #108 from SibrenVasse/spotify
fix(custom): fix conditional statement
2018-11-26 20:09:21 +01:00
Sibren Vasse
a0cdef569b fix(custom): fix conditional statement 2018-11-26 19:35:03 +01:00
Alexis
a123711a8d fix(network): disconnected forced interface 2018-11-25 21:32:50 +01:00
Alexis
391a7de94a fix(window): escape window name 2018-11-25 15:21:00 +01:00
Alex
952d877652
Merge pull request #103 from SibrenVasse/spotify
Event based mediaplayer script
2018-11-24 18:13:08 +01:00
Alex
5356d25a9b
Merge branch 'master' into spotify 2018-11-24 18:11:48 +01:00
Alex
65b9911df4
Merge pull request #105 from David96/master
Allow custom plugins that don't execute anything
2018-11-24 18:01:31 +01:00
David96
2aed121903 Allow custom plugins that don't execute anything 2018-11-24 17:24:02 +01:00
Alexis
08bfdda4cb revert(network): wait interface 2018-11-24 16:01:22 +01:00
Alexis
8f8ec3b999 feat(Label): on-click-right 2018-11-24 15:56:16 +01:00
Alexis
a17220054d feat(client): pefix module name on update error 2018-11-24 11:20:03 +01:00
Alexis
4cc48b3cfd fix(client): catch error on update 2018-11-24 11:13:52 +01:00
Alexis
087de4e956 refactor(client): lambda to method 2018-11-24 11:04:56 +01:00
Alexis
2c2a0473f4 feat(client): throw when we don't have required resources files 2018-11-23 19:31:40 +01:00
Alexis
2e1f8b2fc5 fix(network): check len of netlinkResponse 2018-11-23 17:52:10 +01:00
Alexis
686bc4828e refactor(network): only get info when there is an interface 2018-11-23 17:46:14 +01:00
Alexis
f6c2a8d9b7 fix(network): free the message instead of the socket 2018-11-23 17:42:26 +01:00
Alexis
baa7f52e21 refactor(network): wait for new address 2018-11-23 16:04:29 +01:00
Sibren Vasse
c4c0c01a2f
feat(custom): event based mediaplayer script 2018-11-23 12:08:15 +01:00
Alexis
2b05b8e69a chore: v0.2.2 2018-11-23 12:03:23 +01:00
Alexis
ad7400d5ce refactor(ALabel): add interval 2018-11-23 11:57:37 +01:00
Alexis
36652158ad refactor(tray): more cpp binding 2018-11-23 10:46:58 +01:00
Alexis
8db94f7efd revert(ALabel): ref on format 2018-11-22 16:50:42 +01:00
Alexis
aaaa17d94f fix(config): remove duplicate tray 2018-11-22 16:21:46 +01:00
Alexis
0b1b0eb1a7 feat(tray): multiple hosts 2018-11-22 16:20:49 +01:00
Alexis
f00be0b552 refactor(tray): remove useless variable 2018-11-22 15:51:55 +01:00
Alexis
ba79b4d397 refactor(tray): cleanup and fixes 2018-11-22 15:47:23 +01:00
Alexis
bd62c4cbc5 feat(Label): use set_markup 2018-11-21 20:49:09 +01:00
Alexis
b3559328f1 fix(window): ellipsize 2018-11-20 23:24:33 +01:00
Alexis
69fceb1c92 fix(tray): sigsev on click when multiple icons is available 2018-11-16 12:01:03 +01:00
Alexis
33f138c16e chore: v0.2.1 2018-11-16 10:15:27 +01:00
Alexis
01692b719a chore: update README 2018-11-16 10:07:20 +01:00
Alexis
8c26a6aab7 chore: update README 2018-11-16 10:06:24 +01:00
Alexis
e42fae32ab feat(network): network info interval 2018-11-16 10:02:12 +01:00
Alexis
c910767378 refactor: remove usless using 2018-11-15 14:48:49 +01:00
Alexis
94b9f0a399 feat(cpu): add both usage and load 2018-11-15 14:44:43 +01:00
Alexis
1665003d23 fix: sigsev 2018-11-14 19:14:51 +01:00
Alex
e5573c20e6
Merge pull request #96 from Robinhuett/module_network_ipaddr
Module network ipaddr
2018-11-14 10:44:27 +01:00
Robinhuett
75cc1bc318 refactor(network): codestyle and error handling 2018-11-14 10:31:17 +01:00
Robinhuett
50e782e028 chore: update example config 2018-11-13 21:40:47 +01:00
Robinhuett
5c66b1a770 feat(network): display ip address and subnetmask 2018-11-13 21:31:26 +01:00
Alex
3dc0f7ccf9
Merge pull request #94 from Robinhuett/cpu_fix
Use /proc/stat for cpu load
2018-11-11 13:41:11 +01:00
Robinhuett
e1d98f0ad9 fix(cpu): show correct load
feat(cpu): show cores in tooltip
2018-11-11 03:11:32 +01:00
Alexis
7222668326 refactor: disable battery timer stop on inotify event for now 2018-11-09 23:02:46 +01:00
Alex
315e2defde
Merge pull request #93 from Robinhuett/pulseaudio_scroll
Add config option for volume change scroll step size
2018-11-09 22:55:51 +01:00
Alexis
45bb8b1a1f refactor: simpler memory code 2018-11-09 22:55:25 +01:00
Robinhuett
e21df5ae36 Add config option for volume change scroll step size 2018-11-09 22:48:27 +01:00
Alex
a5bca24f9b
Merge pull request #91 from Robinhuett/ram_free_used
Use /proc/meminfo for Memory module
2018-11-09 22:34:11 +01:00
Alex
c07037d6b8
Update README.md 2018-11-09 17:27:35 +01:00
Alexis
a9751545fa fix: update travis 2018-11-09 17:15:19 +01:00
Robinhuett
9ea0815dea Use ifstream to reaad /proc/meminfo 2018-11-09 16:24:13 +01:00
Alexis
b8b799a187 [ci skip] remove .SRCINFO at root 2018-11-09 15:36:21 +01:00
Alexis
39dfa66261 feat(ci): archlinux 2018-11-09 15:19:17 +01:00
Alex
13702012a4
CI (#90) 2018-11-09 12:07:16 +01:00
Robinhuett
6b62079d8a rewind stream instead of opening a new one 2018-11-09 00:17:30 +01:00
Robinhuett
ac0963c608 Use /proc/meminfo for Memory module 2018-11-08 21:09:56 +01:00
Alexis
2d2fb88040 fix: fmt 2018-11-08 09:57:24 +01:00
Alex
0933aad75f
Merge pull request #87 from David96/master
Fix workspaces not being removed from bar when moved to another output
2018-11-05 21:06:53 +01:00
David96
adcd956c24 Fix workspaces not being removed from bar when moved to another output 2018-11-05 20:59:28 +01:00
Alex
6c9e37699b
Merge pull request #86 from David96/master
Fix clicking and scrolling through workspaces
2018-11-05 20:35:48 +01:00
David96
168415440f Fix clicking and scrolling through workspaces
The way waybar used the workspace "num", clicking a workspace called "1:
something" resulted in going to a newly created workspace called "1",
because the workspace ipc command expects the workspace name, not its number.
2018-11-05 20:16:19 +01:00
Alexis
d6af63d84a chore: add travis 2018-11-05 11:59:05 +01:00
Alex
26182c222b
Merge pull request #79 from vberger/master
Don't call layer_surface.set_size on configure
2018-11-03 13:36:04 +01:00
Alexis
43cd80fb31 chore: 0.2.0 2018-11-03 13:20:05 +01:00
Victor Berger
2f6abfda59 Don't call layer_surface.set_size on configure 2018-11-03 13:16:13 +01:00
Alex
5ece0d98ee
Merge pull request #78 from mithodin/filesystem-experimental
add option for when filesystem still lives in the experimental namespace
2018-11-03 13:00:04 +01:00
Lucas L. Treffenstädt
0637888460 even simpler check 2018-11-03 12:44:15 +01:00
Lucas L. Treffenstädt
ebbdaa168c automatically detect where filesystem lives 2018-11-02 23:15:42 +01:00
Alexis
6ab01b1ad4 fix(style): not charging 2018-11-02 23:00:38 +01:00
Alex
cf921a5e14
Merge pull request #76 from mithodin/charging-full
Add class for full battery and give option to interpret unknown as full
2018-11-02 22:51:57 +01:00
Lucas L. Treffenstädt
25f31b19f6 formatting is hard. 2018-11-02 22:50:01 +01:00
Lucas L. Treffenstädt
d8b6201632 ...and fix the function signature in the header 2018-11-02 22:15:54 +01:00
Lucas L. Treffenstädt
123ce083b4 fix typo and initialize old_status_ 2018-11-02 22:08:55 +01:00
Lucas L. Treffenstädt
0522577fe5 make status and state fully configurable formats 2018-11-02 22:04:43 +01:00
Alex
1ff9fd06af
Merge pull request #77 from mithodin/old-gdbus-codegen
fix compilation on systems with old gdbus-codegen
2018-11-02 21:23:10 +01:00
Lucas L. Treffenstädt
b6cad05489 fix formatting 2018-11-02 21:13:57 +01:00
Lucas L. Treffenstädt
236be90c2f add option for when filesystem still lives in the experimental namespace 2018-11-02 20:59:41 +01:00
Lucas L. Treffenstädt
f137090d55 fix compilation on systems with old gdbus-codegen 2018-11-02 20:13:09 +01:00
Lucas L. Treffenstädt
9c57df505c Add class for full battery and give option to interpret unknown as full 2018-11-02 19:41:00 +01:00
Alexis
00e7e87f55 fix: style 2018-11-02 17:39:00 +01:00
Alexis
836c543c62 fix: style 2018-11-02 17:07:51 +01:00
Alexis
7bca5fd6bd feat(Bar): add a warning about minimum height 2018-11-02 12:35:26 +01:00
Alex
61e9f0803d
Merge pull request #75 from ForTheReallys/proper_height
Fix #54
2018-11-02 12:26:14 +01:00
Alexis
9b201c77d7 feat: battery states && format-full/charging 2018-11-02 11:23:29 +01:00
Alex Maese
4b68840212 Fix #54 2018-11-01 16:00:38 -05:00
Alexis
9d4048983d refactor: remove useless tmp variable 2018-11-01 09:27:00 +01:00
Alex
0670225e69
Merge pull request #72 from Robinhuett/custom_module_states
Custom modules can control tooltip and CSS class
2018-11-01 09:11:15 +01:00
Robinhuett
e23fbd0add Added return-type json to custom module 2018-11-01 00:40:44 +01:00
Robinhuett
341d3300fa Custom modules can control tooltip and CSS class 2018-10-30 21:28:31 +01:00
Alex
c3e185546d
Merge pull request #68 from harishkrupo/master
Add configuration options for widgets on mouse events
2018-10-30 16:32:37 +01:00
Alex
0e93de9c0a
Merge pull request #71 from Robinhuett/configurable_battery_levels
Added second warning stage to battery module
2018-10-30 16:31:01 +01:00
Harish Krupo
3e34137ac7 pulseaudio: Change volume on scroll event
Subscribe for mouse scroll events on the pulseaudio widget
and change volume when event is received.
Scroll up increments the volume and scroll down decrements it.
These events are only subscibed when there are no user defined
commands present for them.

Signed-off-by: Harish Krupo <harishkrupo@gmail.com>
2018-10-30 20:53:43 +05:30
Robinhuett
4c8621c7a5 Added second warning stage to battery module
Also naming is a bit more consistent
2018-10-30 16:23:36 +01:00
Harish Krupo
d7d1ebd736 ALabel: Add support for configurable mouse events
This patch adds 3 new configuration options applicable for
subclasses of ALabel. The options can be used to execute
user defined code in response to the 3 mouse events:
* on-click: The left mouse button click
* on-scroll-up
* on-scroll-down
This patch also modifies the behaviour of the format-alt toggle
such that when the on-click event is configured, format-alt is
toggled on any mouse click other than left click. When on-click
is not defined, any mouse button would toggle format-alt.

Signed-off-by: Harish Krupo <harishkrupo@gmail.com>
2018-10-30 20:52:23 +05:30
Alex
e93c5e7957
Merge pull request #70 from Robinhuett/mode_module
Add module to show sway binding mode
2018-10-30 14:26:43 +01:00
Robinhuett
668b7b736c Added default config for sway binding mode 2018-10-30 13:44:44 +01:00
Robinhuett
a042eea384 Add module to show sway binding mode 2018-10-30 13:39:30 +01:00
Alexis
c9a8a07976 fix(window): title on new workspace 2018-10-29 21:52:53 +01:00
Alexis
4307e4fd8e chore: upgrade fmt to 5.2.0 2018-10-28 14:40:25 +01:00
Alexis
daf613f8ca feat: add debug about tray beta 2018-10-28 08:43:48 +01:00
Alexis
3f2eb0b492 chore: 0.1.3 2018-10-28 08:39:33 +01:00
Alex
4f773ea268
Merge pull request #65 from maxice8/fix-musl
add missing <cstring> include for strncpy, fixes musl
2018-10-28 08:29:56 +01:00
maxice8
047473e5a4
add missing <cstring> include for strncpy, fixes musl
I/usr/include/libdbusmenu-glib-0.4 -flto -fdiagnostics-color=always -DNDEBUG -pipe -D_FILE_OFFSET_BITS=64 -std=c++17 -DHAVE_SWAY -DHAVE_LIBPULSE -DHAVE_DBUSMENU -D_FORTIFY_SOURCE=2 -mtune=generic -O2 -D_REENTRANT -pthread  -MD -MQ 'waybar@exe/src_modules_sway_ipc_client.cpp.o' -MF 'waybar@exe/src_modules_sway_ipc_client.cpp.o.d' -o 'waybar@exe/src_modules_sway_ipc_client.cpp.o' -c ../src/modules/sway/ipc/client.cpp
../src/modules/sway/ipc/client.cpp: In member function 'int waybar::modules::sway::Ipc::open(const string&) const':
../src/modules/sway/ipc/client.cpp:47:3: error: 'strncpy' was not declared in this scope
   strncpy(addr.sun_path, socketPath.c_str(), sizeof(addr.sun_path) - 1);
   ^~~~~~~
../src/modules/sway/ipc/client.cpp:47:3: note: 'strncpy' is defined in header '<cstring>'; did you forget to '#include <cstring>'?
../src/modules/sway/ipc/client.cpp:2:1:
+#include <cstring>

../src/modules/sway/ipc/client.cpp:47:3:
   strncpy(addr.sun_path, socketPath.c_str(), sizeof(addr.sun_path) - 1);
   ^~~~~~~
[36/44] Compiling C++ object 'waybar@exe/src_modules_custom.cpp.o'.
[37/44] Compiling C++ object 'waybar@exe/src_client.cpp.o'.
[38/44] Compiling C++ object 'waybar@exe/src_modules_cpu.cpp.o'.
ninja: build stopped: subcommand failed.
2018-10-28 04:06:07 -03:00
Alexis
ed3e4b1395 fix(pulseaudio): check active_port is set 2018-10-27 11:23:43 +02:00
Alex
16b01e1059
Merge pull request #62 from colemickens/giounix20
meson: fix 'gio-unix-2.0' dependency
2018-10-27 09:35:47 +02:00
Alex
1ae490c8f7
Merge pull request #61 from colemickens/outdir
meson: make extra output directory configurable
2018-10-27 09:16:11 +02:00
Cole Mickens
0d0a3be483 meson: fix 'gio-unix-2.0' dependency 2018-10-26 23:21:03 -07:00
Cole Mickens
a1c4b9bb0c meson: make extra output directory configurable 2018-10-26 23:20:38 -07:00
Alexis
a55a1ae866 fix(tray): icons size 2018-10-26 14:53:39 +02:00
Alexis
07d8dfb3d6 feat(tray): spacing config 2018-10-26 12:08:50 +02:00
Alexis
5010227e6b fix(tray): icons 2018-10-26 11:59:03 +02:00
Alexis
e8f3c1c6b3 chore: v0.1.2 2018-10-26 11:21:04 +02:00
Alexis
7e6c701659 chore: update README 2018-10-26 11:16:17 +02:00
Alexis
adc38c3dfe feat(sni): set protocol version 2018-10-26 10:56:45 +02:00
Alexis
b10907ee44 refactor: remove useless code 2018-10-26 10:39:25 +02:00
Alexis
0c9699b076 fix: check before set is host registered 2018-10-26 10:27:15 +02:00
Alexis
63e86fbe9e fix: check type 2018-10-26 10:12:34 +02:00
Alexis
f20441fa92 refactor: simpler sni naming 2018-10-26 10:05:54 +02:00
Alexis
3f269ff463 fix: check json::value type 2018-10-26 09:27:16 +02:00
Alexis
fd76e98552 fix: ifdef include 2018-10-25 19:12:28 +02:00
260 changed files with 29022 additions and 2493 deletions

View File

5
.clang-format Normal file
View File

@ -0,0 +1,5 @@
---
BasedOnStyle: Google
AlignConsecutiveDeclarations: false
ColumnLimit: 100
...

19
.editorconfig Normal file
View File

@ -0,0 +1,19 @@
# EditorConfig configuration for Waybar
# http://EditorConfig.org
# Top-most EditorConfig file
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
[*.{build,css}]
indent_style = space
indent_size = 4
[*.{hpp,cpp}]
indent_style = space
indent_size = 2

1
.envrc.sample Normal file
View File

@ -0,0 +1 @@
use flake

4
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,4 @@
# These are supported funding model platforms
github: Alexays
custom: https://paypal.me/ARouillard

29
.github/workflows/freebsd.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: freebsd
on: [ push, pull_request ]
jobs:
clang:
# Run actions in a FreeBSD VM on the macos-12 runner
# https://github.com/actions/runner/issues/385 - for FreeBSD runner support
# https://github.com/actions/virtual-environments/issues/4060 - for lack of VirtualBox on MacOS 11 runners
runs-on: macos-12
steps:
- uses: actions/checkout@v3
- name: Test in FreeBSD VM
uses: vmactions/freebsd-vm@v0
with:
mem: 2048
usesh: true
prepare: |
export CPPFLAGS=-isystem/usr/local/include LDFLAGS=-L/usr/local/lib # sndio
sed -i '' 's/quarterly/latest/' /etc/pkg/FreeBSD.conf
pkg install -y git # subprojects/date
pkg install -y catch evdev-proto gtk-layer-shell gtkmm30 jsoncpp \
libdbusmenu libevdev libfmt libmpdclient libudev-devd meson \
pkgconf pulseaudio scdoc sndio spdlog wayland-protocols upower \
libinotify
run: |
meson build -Dman-pages=enabled
ninja -C build
meson test -C build --no-rebuild --print-errorlogs --suite waybar

14
.github/workflows/lint.yml vendored Normal file
View File

@ -0,0 +1,14 @@
name: Linter
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: DoozyX/clang-format-lint-action@v0.13
with:
source: '.'
extensions: 'h,cpp,c'
clangFormatVersion: 12

32
.github/workflows/linux.yml vendored Normal file
View File

@ -0,0 +1,32 @@
name: linux
on: [push, pull_request]
jobs:
build:
strategy:
matrix:
distro:
- alpine
- archlinux
- debian
- fedora
- opensuse
- gentoo
cpp_std: [c++20]
include:
- distro: fedora
cpp_std: c++20
runs-on: ubuntu-latest
container:
image: alexays/waybar:${{ matrix.distro }}
steps:
- uses: actions/checkout@v3
- name: configure
run: meson -Dman-pages=enabled -Dcpp_std=${{matrix.cpp_std}} build
- name: build
run: ninja -C build
- name: test
run: make test

7
.gitignore vendored
View File

@ -2,10 +2,12 @@
*~
vgcore.*
/.vscode
/.idea
/.cache
*.swp
packagecache
/subprojects/fmt-4.1.0
/build
/subprojects/**/
/build*
/dist
/meson.egg-info
@ -41,3 +43,4 @@ packagecache
*.exe
*.out
*.app
/.direnv/

5
Dockerfiles/alpine Normal file
View File

@ -0,0 +1,5 @@
# vim: ft=Dockerfile
FROM alpine:latest
RUN apk add --no-cache git meson alpine-sdk libinput-dev wayland-dev wayland-protocols mesa-dev libxkbcommon-dev eudev-dev pixman-dev gtkmm3-dev jsoncpp-dev pugixml-dev libnl3-dev pulseaudio-dev libmpdclient-dev sndio-dev scdoc libxkbcommon tzdata playerctl-dev

7
Dockerfiles/archlinux Normal file
View File

@ -0,0 +1,7 @@
# vim: ft=Dockerfile
FROM archlinux:base-devel
RUN pacman -Syu --noconfirm && \
pacman -S --noconfirm git meson base-devel libinput wayland wayland-protocols pixman libxkbcommon mesa gtkmm3 jsoncpp pugixml scdoc libpulse libdbusmenu-gtk3 libmpdclient gobject-introspection libxkbcommon playerctl iniparser fftw && \
sed -Ei 's/#(en_(US|GB)\.UTF)/\1/' /etc/locale.gen && locale-gen

7
Dockerfiles/debian Normal file
View File

@ -0,0 +1,7 @@
# vim: ft=Dockerfile
FROM debian:sid
RUN apt-get update && \
apt-get install -y build-essential meson ninja-build git pkg-config libinput10 libpugixml-dev libinput-dev wayland-protocols libwayland-client0 libwayland-cursor0 libwayland-dev libegl1-mesa-dev libgles2-mesa-dev libgbm-dev libxkbcommon-dev libudev-dev libpixman-1-dev libgtkmm-3.0-dev libjsoncpp-dev scdoc libdbusmenu-gtk3-dev libnl-3-dev libnl-genl-3-dev libpulse-dev libmpdclient-dev gobject-introspection libgirepository1.0-dev libxkbcommon-dev libxkbregistry-dev libxkbregistry0 libplayerctl-dev && \
apt-get clean

34
Dockerfiles/fedora Normal file
View File

@ -0,0 +1,34 @@
# vim: ft=Dockerfile
FROM fedora:latest
RUN dnf install -y @c-development \
git-core glibc-langpack-en meson scdoc \
'pkgconfig(catch2)' \
'pkgconfig(date)' \
'pkgconfig(dbusmenu-gtk3-0.4)' \
'pkgconfig(fmt)' \
'pkgconfig(gdk-pixbuf-2.0)' \
'pkgconfig(gio-unix-2.0)' \
'pkgconfig(gtk-layer-shell-0)' \
'pkgconfig(gtkmm-3.0)' \
'pkgconfig(jack)' \
'pkgconfig(jsoncpp)' \
'pkgconfig(libevdev)' \
'pkgconfig(libinput)' \
'pkgconfig(libmpdclient)' \
'pkgconfig(libnl-3.0)' \
'pkgconfig(libnl-genl-3.0)' \
'pkgconfig(libpulse)' \
'pkgconfig(libudev)' \
'pkgconfig(playerctl)' \
'pkgconfig(pugixml)' \
'pkgconfig(sigc++-2.0)' \
'pkgconfig(spdlog)' \
'pkgconfig(upower-glib)' \
'pkgconfig(wayland-client)' \
'pkgconfig(wayland-cursor)' \
'pkgconfig(wayland-protocols)' \
'pkgconfig(wireplumber-0.4)' \
'pkgconfig(xkbregistry)' && \
dnf clean all -y

11
Dockerfiles/gentoo Normal file
View File

@ -0,0 +1,11 @@
# vim: ft=Dockerfile
FROM gentoo/stage3:latest
RUN export FEATURES="-ipc-sandbox -network-sandbox -pid-sandbox -sandbox -usersandbox" && \
emerge --sync && \
eselect news read --quiet new 1>/dev/null 2>&1 && \
emerge --verbose --update --deep --with-bdeps=y --backtrack=30 --newuse @world && \
USE="wayland gtk3 gtk -doc X pulseaudio minimal" emerge dev-vcs/git dev-libs/wayland dev-libs/wayland-protocols =dev-cpp/gtkmm-3.24.6 x11-libs/libxkbcommon \
x11-libs/gtk+:3 dev-libs/libdbusmenu dev-libs/libnl sys-power/upower media-libs/libpulse dev-libs/libevdev media-libs/libmpdclient \
media-sound/sndio gui-libs/gtk-layer-shell app-text/scdoc media-sound/playerctl dev-libs/iniparser sci-libs/fftw

9
Dockerfiles/opensuse Normal file
View File

@ -0,0 +1,9 @@
# vim: ft=Dockerfile
FROM opensuse/tumbleweed:latest
RUN zypper -n up && \
zypper addrepo https://download.opensuse.org/repositories/X11:Wayland/openSUSE_Tumbleweed/X11:Wayland.repo | echo 'a' && \
zypper -n refresh && \
zypper -n install -t pattern devel_C_C++ && \
zypper -n install git meson clang libinput10 libinput-devel pugixml-devel libwayland-client0 libwayland-cursor0 wayland-protocols-devel wayland-devel Mesa-libEGL-devel Mesa-libGLESv2-devel libgbm-devel libxkbcommon-devel libudev-devel libpixman-1-0-devel gtkmm3-devel jsoncpp-devel libxkbregistry-devel scdoc playerctl-devel

27
Makefile Normal file
View File

@ -0,0 +1,27 @@
.PHONY: build build-debug run clean default install
default: build
build:
meson build
ninja -C build
build-debug:
meson build --buildtype=debug
ninja -C build
install: build
ninja -C build install
run: build
./build/waybar
debug-run: build-debug
./build/waybar --log-level debug
test:
meson test -C build --no-rebuild --verbose --suite waybar
.PHONY: test
clean:
rm -rf build

109
README.md
View File

@ -1,36 +1,123 @@
# Waybar [![Licence](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)<br>![Waybar](https://raw.githubusercontent.com/alexays/waybar/master/preview-2.png)
**Proof of concept**
# Waybar [![Licence](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Paypal Donate](https://img.shields.io/badge/Donate-Paypal-2244dd.svg)](https://paypal.me/ARouillard)<br>![Waybar](https://raw.githubusercontent.com/alexays/waybar/master/preview-2.png)
> Highly customizable Wayland bar for Sway and Wlroots based compositors.<br>
> Available on [AUR](https://aur.archlinux.org/packages/waybar-git/)
> Available in Arch [extra](https://www.archlinux.org/packages/extra/x86_64/waybar/) or
[AUR](https://aur.archlinux.org/packages/waybar-git/), [Gentoo](https://packages.gentoo.org/packages/gui-apps/waybar), [openSUSE](https://build.opensuse.org/package/show/X11:Wayland/waybar), and [Alpine Linux](https://pkgs.alpinelinux.org/packages?name=waybar).<br>
> *Waybar [examples](https://github.com/Alexays/Waybar/wiki/Examples)*
**Current features**
- Sway Workspaces
- Sway focused window name
#### Current features
- Sway (Workspaces, Binding mode, Focused window name)
- River (Mapping mode, Tags, Focused window name)
- Hyprland (Focused window name)
- DWL (Tags) [requires dwl ipc patch](https://github.com/djpohly/dwl/wiki/ipc)
- Tray [#21](https://github.com/Alexays/Waybar/issues/21)
- Local time
- Battery
- UPower
- Network
- Bluetooth
- Pulseaudio
- Wireplumber
- Disk
- Memory
- Cpu load average
- Temperature
- MPD
- Custom scripts
- And much more customizations
- Custom image
- Multiple output configuration
- And many more customizations
**Configuration and Customization**
#### Configuration and Styling
[See the wiki for more details](https://github.com/Alexays/Waybar/wiki).
**How to build**
### Installation
Waybar is available from a number of Linux distributions:
[![Packaging status](https://repology.org/badge/vertical-allrepos/waybar.svg)](https://repology.org/project/waybar/versions)
An Ubuntu PPA with more recent versions is available
[here](https://launchpad.net/~nschloe/+archive/ubuntu/waybar).
#### Building from source
```bash
$ git clone https://github.com/Alexays/Waybar
$ cd Waybar
$ meson build
$ ninja -C build
$ ./build/waybar
# If you want to install it
$ ninja -C build install
$ waybar
```
Contributions welcome! - have fun :)<br>
The style guidelines is [Google's](https://google.github.io/styleguide/cppguide.html)
**Dependencies**
```
gtkmm3
jsoncpp
libsigc++
fmt
wayland
chrono-date
spdlog
libgtk-3-dev [gtk-layer-shell]
gobject-introspection [gtk-layer-shell]
libgirepository1.0-dev [gtk-layer-shell]
libpulse [Pulseaudio module]
libnl [Network module]
libappindicator-gtk3 [Tray module]
libdbusmenu-gtk3 [Tray module]
libmpdclient [MPD module]
libsndio [sndio module]
libevdev [KeyboardState module]
xkbregistry
upower [UPower battery module]
```
**Build dependencies**
```
cmake
meson
scdoc
wayland-protocols
```
On Ubuntu, you can install all the relevant dependencies using this command (tested with 19.10 and 20.04):
```
sudo apt install \
clang-tidy \
gobject-introspection \
libdbusmenu-gtk3-dev \
libevdev-dev \
libfmt-dev \
libgirepository1.0-dev \
libgtk-3-dev \
libgtkmm-3.0-dev \
libinput-dev \
libjsoncpp-dev \
libmpdclient-dev \
libnl-3-dev \
libnl-genl-3-dev \
libpulse-dev \
libsigc++-2.0-dev \
libspdlog-dev \
libwayland-dev \
scdoc \
upower \
libxkbregistry-dev
```
Contributions welcome!<br>
Have fun :)<br>
The style guidelines are [Google's](https://google.github.io/styleguide/cppguide.html)
## License

10
default.nix Normal file
View File

@ -0,0 +1,10 @@
(import
(
let lock = builtins.fromJSON (builtins.readFile ./flake.lock); in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
)
{ src = ./.; }
).defaultNix

129
flake.lock generated Normal file
View File

@ -0,0 +1,129 @@
{
"nodes": {
"devshell": {
"inputs": {
"nixpkgs": "nixpkgs",
"systems": "systems"
},
"locked": {
"lastModified": 1692523566,
"narHash": "sha256-VDJDihK6jNebVw9y3qKCVD6+6QaC/x8kxZzL4MaIPPY=",
"owner": "numtide",
"repo": "devshell",
"rev": "d208c58e2f7afef838add5f18a9936b12a71d695",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1677383253,
"narHash": "sha256-UfpzWfSxkfXHnb4boXZNaKsAcUrZT9Hw+tao1oZxd08=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9952d6bc395f5841262b006fbace8dd7e143b634",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1692638711,
"narHash": "sha256-J0LgSFgJVGCC1+j5R2QndadWI1oumusg6hCtYAzLID4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "91a22f76cd1716f9d0149e8a5c68424bb691de15",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

89
flake.nix Normal file
View File

@ -0,0 +1,89 @@
{
description = "Highly customizable Wayland bar for Sway and Wlroots based compositors.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
devshell.url = "github:numtide/devshell";
flake-utils.url = "github:numtide/flake-utils";
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
};
outputs = { self, flake-utils, devshell, nixpkgs, flake-compat }:
let
inherit (nixpkgs) lib;
genSystems = lib.genAttrs [
"x86_64-linux"
];
pkgsFor = genSystems (system:
import nixpkgs {
inherit system;
});
mkDate = longDate: (lib.concatStringsSep "-" [
(builtins.substring 0 4 longDate)
(builtins.substring 4 2 longDate)
(builtins.substring 6 2 longDate)
]);
in
{
overlays.default = final: prev: {
waybar = final.callPackage ./nix/default.nix {
version = prev.waybar.version + "+date=" + (mkDate (self.lastModifiedDate or "19700101")) + "_" + (self.shortRev or "dirty");
};
};
packages = genSystems
(system:
(self.overlays.default pkgsFor.${system} pkgsFor.${system})
// {
default = self.packages.${system}.waybar;
});
} //
flake-utils.lib.eachDefaultSystem (system: {
devShell =
let pkgs = import nixpkgs {
inherit system;
overlays = [ devshell.overlays.default ];
};
in
pkgs.devshell.mkShell {
imports = [ "${pkgs.devshell.extraModulesDir}/language/c.nix" ];
devshell.packages = with pkgs; [
clang-tools
gdb
# from nativeBuildInputs
gnumake
meson
ninja
pkg-config
scdoc
] ++ (map lib.getDev [
# from buildInputs
wayland wlroots gtkmm3 libsigcxx jsoncpp spdlog gtk-layer-shell howard-hinnant-date libxkbcommon
# optional dependencies
gobject-introspection glib playerctl python3.pkgs.pygobject3
libevdev libinput libjack2 libmpdclient playerctl libnl
libpulseaudio sndio sway libdbusmenu-gtk3 udev upower wireplumber
# from propagated build inputs?
at-spi2-atk atkmm cairo cairomm catch2 fmt_8 fontconfig
gdk-pixbuf glibmm gtk3 harfbuzz pango pangomm wayland-protocols
]);
env = with pkgs; [
{ name = "CPLUS_INCLUDE_PATH"; prefix = "$DEVSHELL_DIR/include"; }
{ name = "PKG_CONFIG_PATH"; prefix = "$DEVSHELL_DIR/lib/pkgconfig"; }
{ name = "PKG_CONFIG_PATH"; prefix = "$DEVSHELL_DIR/share/pkgconfig"; }
{ name = "PATH"; prefix = "${wayland.bin}/bin"; }
{ name = "LIBRARY_PATH"; prefix = "${lib.getLib sndio}/lib"; }
{ name = "LIBRARY_PATH"; prefix = "${lib.getLib zlib}/lib"; }
{ name = "LIBRARY_PATH"; prefix = "${lib.getLib howard-hinnant-date}/lib"; }
];
};
});
}

27
include/AAppIconLabel.hpp Normal file
View File

@ -0,0 +1,27 @@
#pragma once
#include <gtkmm/box.h>
#include <gtkmm/image.h>
#include "AIconLabel.hpp"
namespace waybar {
class AAppIconLabel : public AIconLabel {
public:
AAppIconLabel(const Json::Value &config, const std::string &name, const std::string &id,
const std::string &format, uint16_t interval = 0, bool ellipsize = false,
bool enable_click = false, bool enable_scroll = false);
virtual ~AAppIconLabel() = default;
auto update() -> void override;
protected:
void updateAppIconName(const std::string &app_identifier,
const std::string &alternative_app_identifier);
void updateAppIcon();
unsigned app_icon_size_{24};
bool update_app_icon_{true};
std::string app_icon_name_;
};
} // namespace waybar

25
include/AIconLabel.hpp Normal file
View File

@ -0,0 +1,25 @@
#pragma once
#include <gtkmm/box.h>
#include <gtkmm/image.h>
#include "ALabel.hpp"
namespace waybar {
class AIconLabel : public ALabel {
public:
AIconLabel(const Json::Value &config, const std::string &name, const std::string &id,
const std::string &format, uint16_t interval = 0, bool ellipsize = false,
bool enable_click = false, bool enable_scroll = false);
virtual ~AIconLabel() = default;
auto update() -> void override;
protected:
Gtk::Image image_;
Gtk::Box box_;
bool iconEnabled() const;
};
} // namespace waybar

View File

@ -1,26 +1,32 @@
#pragma once
#include <glibmm/markup.h>
#include <gtkmm/label.h>
#include <json/json.h>
#include "IModule.hpp"
#include "AModule.hpp"
namespace waybar {
class ALabel : public IModule {
public:
ALabel(const Json::Value&, const std::string format);
virtual ~ALabel() = default;
virtual auto update() -> void;
virtual std::string getIcon(uint16_t, const std::string& alt = "");
virtual operator Gtk::Widget &();
protected:
Gtk::EventBox event_box_;
Gtk::Label label_;
const Json::Value& config_;
std::string format_;
private:
bool handleToggle(GdkEventButton* const& ev);
bool alt = false;
const std::string default_format_;
class ALabel : public AModule {
public:
ALabel(const Json::Value &, const std::string &, const std::string &, const std::string &format,
uint16_t interval = 0, bool ellipsize = false, bool enable_click = false,
bool enable_scroll = false);
virtual ~ALabel() = default;
auto update() -> void override;
virtual std::string getIcon(uint16_t, const std::string &alt = "", uint16_t max = 0);
virtual std::string getIcon(uint16_t, const std::vector<std::string> &alts, uint16_t max = 0);
protected:
Gtk::Label label_;
std::string format_;
const std::chrono::seconds interval_;
bool alt_ = false;
std::string default_format_;
bool handleToggle(GdkEventButton *const &e) override;
virtual std::string getState(uint8_t value, bool lesser = false);
};
}
} // namespace waybar

63
include/AModule.hpp Normal file
View File

@ -0,0 +1,63 @@
#pragma once
#include <glibmm/dispatcher.h>
#include <glibmm/markup.h>
#include <gtkmm/eventbox.h>
#include <json/json.h>
#include "IModule.hpp"
namespace waybar {
class AModule : public IModule {
public:
virtual ~AModule();
auto update() -> void override;
virtual auto refresh(int) -> void{};
operator Gtk::Widget &() override;
auto doAction(const std::string &name) -> void override;
Glib::Dispatcher dp;
protected:
// Don't need to make an object directly
// Derived classes are able to use it
AModule(const Json::Value &, const std::string &, const std::string &, bool enable_click = false,
bool enable_scroll = false);
enum SCROLL_DIR { NONE, UP, DOWN, LEFT, RIGHT };
SCROLL_DIR getScrollDir(GdkEventScroll *e);
bool tooltipEnabled();
const std::string name_;
const Json::Value &config_;
Gtk::EventBox event_box_;
virtual bool handleToggle(GdkEventButton *const &ev);
virtual bool handleScroll(GdkEventScroll *);
private:
std::vector<int> pid_;
gdouble distance_scrolled_y_;
gdouble distance_scrolled_x_;
std::map<std::string, std::string> eventActionMap_;
static const inline std::map<std::pair<uint, GdkEventType>, std::string> eventMap_{
{std::make_pair(1, GdkEventType::GDK_BUTTON_PRESS), "on-click"},
{std::make_pair(1, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click"},
{std::make_pair(1, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click"},
{std::make_pair(2, GdkEventType::GDK_BUTTON_PRESS), "on-click-middle"},
{std::make_pair(2, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-middle"},
{std::make_pair(2, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-middle"},
{std::make_pair(3, GdkEventType::GDK_BUTTON_PRESS), "on-click-right"},
{std::make_pair(3, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-right"},
{std::make_pair(3, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-right"},
{std::make_pair(8, GdkEventType::GDK_BUTTON_PRESS), "on-click-backward"},
{std::make_pair(8, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-backward"},
{std::make_pair(8, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-backward"},
{std::make_pair(9, GdkEventType::GDK_BUTTON_PRESS), "on-click-forward"},
{std::make_pair(9, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-forward"},
{std::make_pair(9, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-forward"}};
};
} // namespace waybar

View File

@ -1,15 +1,15 @@
#pragma once
#include <gtkmm.h>
#include <gtkmm/widget.h>
namespace waybar {
class IModule {
public:
virtual ~IModule() = default;
virtual auto update() -> void = 0;
virtual operator Gtk::Widget &() = 0;
Glib::Dispatcher dp; // Hmmm Maybe I should create an abstract class ?
public:
virtual ~IModule() = default;
virtual auto update() -> void = 0;
virtual operator Gtk::Widget&() = 0;
virtual auto doAction(const std::string& name) -> void = 0;
};
}
} // namespace waybar

View File

@ -1,59 +1,125 @@
#pragma once
#include <gdkmm/monitor.h>
#include <glibmm/refptr.h>
#include <gtkmm/box.h>
#include <gtkmm/cssprovider.h>
#include <gtkmm/main.h>
#include <gtkmm/window.h>
#include <json/json.h>
#include <gtkmm.h>
#include "wlr-layer-shell-unstable-v1-client-protocol.h"
#include <memory>
#include <vector>
#include "AModule.hpp"
#include "xdg-output-unstable-v1-client-protocol.h"
#include "IModule.hpp"
namespace waybar {
class Client;
class Factory;
struct waybar_output {
Glib::RefPtr<Gdk::Monitor> monitor;
std::string name;
std::string identifier;
class Bar {
public:
Bar(const Client&, std::unique_ptr<struct wl_output *>&&, uint32_t);
Bar(const Bar&) = delete;
auto toggle() -> void;
const Client& client;
Gtk::Window window;
struct wl_surface *surface;
struct zwlr_layer_surface_v1 *layer_surface;
std::unique_ptr<struct wl_output *> output;
std::string output_name;
uint32_t wl_name;
bool visible = true;
private:
static void handleLogicalPosition(void *, struct zxdg_output_v1 *, int32_t,
int32_t);
static void handleLogicalSize(void *, struct zxdg_output_v1 *, int32_t,
int32_t);
static void handleDone(void *, struct zxdg_output_v1 *);
static void handleName(void *, struct zxdg_output_v1 *, const char *);
static void handleDescription(void *, struct zxdg_output_v1 *,
const char *);
static void layerSurfaceHandleConfigure(void *,
struct zwlr_layer_surface_v1 *, uint32_t, uint32_t, uint32_t);
static void layerSurfaceHandleClosed(void *,
struct zwlr_layer_surface_v1 *);
auto setupConfig() -> void;
auto setupWidgets() -> void;
auto setupCss() -> void;
void getModules(const Factory&, const std::string&);
uint32_t width_ = 0;
uint32_t height_ = 30;
Json::Value config_;
Glib::RefPtr<Gtk::StyleContext> style_context_;
Glib::RefPtr<Gtk::CssProvider> css_provider_;
struct zxdg_output_v1 *xdg_output_;
std::vector<std::unique_ptr<waybar::IModule>> modules_left_;
std::vector<std::unique_ptr<waybar::IModule>> modules_center_;
std::vector<std::unique_ptr<waybar::IModule>> modules_right_;
std::unique_ptr<struct zxdg_output_v1, decltype(&zxdg_output_v1_destroy)> xdg_output = {
nullptr, &zxdg_output_v1_destroy};
};
enum class bar_layer : uint8_t {
BOTTOM,
TOP,
OVERLAY,
};
struct bar_margins {
int top = 0;
int right = 0;
int bottom = 0;
int left = 0;
};
struct bar_mode {
bar_layer layer;
bool exclusive;
bool passthrough;
bool visible;
};
#ifdef HAVE_SWAY
namespace modules::sway {
class BarIpcClient;
}
#endif // HAVE_SWAY
class BarSurface {
protected:
BarSurface() = default;
public:
virtual void setExclusiveZone(bool enable) = 0;
virtual void setLayer(bar_layer layer) = 0;
virtual void setMargins(const struct bar_margins &margins) = 0;
virtual void setPassThrough(bool enable) = 0;
virtual void setPosition(const std::string_view &position) = 0;
virtual void setSize(uint32_t width, uint32_t height) = 0;
virtual void commit(){};
virtual ~BarSurface() = default;
};
class Bar {
public:
using bar_mode_map = std::map<std::string_view, struct bar_mode>;
static const bar_mode_map PRESET_MODES;
static const std::string_view MODE_DEFAULT;
static const std::string_view MODE_INVISIBLE;
Bar(struct waybar_output *w_output, const Json::Value &);
Bar(const Bar &) = delete;
~Bar();
void setMode(const std::string_view &);
void setVisible(bool visible);
void toggle();
void handleSignal(int);
struct waybar_output *output;
Json::Value config;
struct wl_surface *surface;
bool visible = true;
bool vertical = false;
Gtk::Window window;
#ifdef HAVE_SWAY
std::string bar_id;
#endif
private:
void onMap(GdkEventAny *);
auto setupWidgets() -> void;
void getModules(const Factory &, const std::string &, Gtk::Box *);
void setupAltFormatKeyForModule(const std::string &module_name);
void setupAltFormatKeyForModuleList(const char *module_list_name);
void setMode(const bar_mode &);
/* Copy initial set of modes to allow customization */
bar_mode_map configured_modes = PRESET_MODES;
std::string last_mode_{MODE_DEFAULT};
std::unique_ptr<BarSurface> surface_impl_;
Gtk::Box left_;
Gtk::Box center_;
Gtk::Box right_;
Gtk::Box box_;
std::vector<std::shared_ptr<waybar::AModule>> modules_left_;
std::vector<std::shared_ptr<waybar::AModule>> modules_center_;
std::vector<std::shared_ptr<waybar::AModule>> modules_right_;
#ifdef HAVE_SWAY
using BarIpcClient = modules::sway::BarIpcClient;
std::unique_ptr<BarIpcClient> _ipc_client;
#endif
std::vector<std::shared_ptr<waybar::AModule>> modules_all_;
};
} // namespace waybar

View File

@ -1,39 +1,58 @@
#pragma once
#include <unistd.h>
#include <wordexp.h>
#include <fmt/format.h>
#include <gdk/gdk.h>
#include <wayland-client.h>
#include <gdk/gdkwayland.h>
#include <wayland-client.h>
#include "bar.hpp"
#include "config.hpp"
struct zwlr_layer_shell_v1;
struct zwp_idle_inhibitor_v1;
struct zwp_idle_inhibit_manager_v1;
namespace waybar {
class Client {
public:
Client(int argc, char *argv[]);
int main(int argc, char *argv[]);
public:
static Client *inst();
int main(int argc, char *argv[]);
void reset();
Glib::RefPtr<Gtk::Application> gtk_app;
std::string css_file;
std::string config_file;
Glib::RefPtr<Gdk::Display> gdk_display;
struct wl_display *wl_display = nullptr;
struct wl_registry *registry = nullptr;
struct zwlr_layer_shell_v1 *layer_shell = nullptr;
struct zxdg_output_manager_v1 *xdg_output_manager = nullptr;
struct wl_seat *seat = nullptr;
std::vector<std::unique_ptr<Bar>> bars;
Glib::RefPtr<Gtk::Application> gtk_app;
Glib::RefPtr<Gdk::Display> gdk_display;
struct wl_display *wl_display = nullptr;
struct wl_registry *registry = nullptr;
struct zwlr_layer_shell_v1 *layer_shell = nullptr;
struct zxdg_output_manager_v1 *xdg_output_manager = nullptr;
struct zwp_idle_inhibit_manager_v1 *idle_inhibit_manager = nullptr;
std::vector<std::unique_ptr<Bar>> bars;
Config config;
std::string bar_id;
private:
void bindInterfaces();
auto setupCss();
private:
Client() = default;
const std::string getStyle(const std::string &style);
void bindInterfaces();
void handleOutput(struct waybar_output &output);
auto setupCss(const std::string &css_file) -> void;
struct waybar_output &getOutput(void *);
std::vector<Json::Value> getOutputConfigs(struct waybar_output &output);
static void handleGlobal(void *data, struct wl_registry *registry,
uint32_t name, const char *interface, uint32_t version);
static void handleGlobalRemove(void *data,
struct wl_registry *registry, uint32_t name);
static void handleGlobal(void *data, struct wl_registry *registry, uint32_t name,
const char *interface, uint32_t version);
static void handleGlobalRemove(void *data, struct wl_registry *registry, uint32_t name);
static void handleOutputDone(void *, struct zxdg_output_v1 *);
static void handleOutputName(void *, struct zxdg_output_v1 *, const char *);
static void handleOutputDescription(void *, struct zxdg_output_v1 *, const char *);
void handleMonitorAdded(Glib::RefPtr<Gdk::Monitor> monitor);
void handleMonitorRemoved(Glib::RefPtr<Gdk::Monitor> monitor);
void handleDeferredMonitorRemoval(Glib::RefPtr<Gdk::Monitor> monitor);
Glib::RefPtr<Gtk::StyleContext> style_context_;
Glib::RefPtr<Gtk::CssProvider> css_provider_;
std::list<struct waybar_output> outputs_;
};
}
} // namespace waybar

40
include/config.hpp Normal file
View File

@ -0,0 +1,40 @@
#pragma once
#include <json/json.h>
#include <optional>
#include <string>
#ifndef SYSCONFDIR
#define SYSCONFDIR "/etc"
#endif
namespace waybar {
class Config {
public:
static const std::vector<std::string> CONFIG_DIRS;
static const char *CONFIG_PATH_ENV;
/* Try to find any of provided names in the supported set of config directories */
static std::optional<std::string> findConfigPath(
const std::vector<std::string> &names, const std::vector<std::string> &dirs = CONFIG_DIRS);
Config() = default;
void load(const std::string &config);
Json::Value &getConfig() { return config_; }
std::vector<Json::Value> getOutputConfigs(const std::string &name, const std::string &identifier);
private:
void setupConfig(Json::Value &dst, const std::string &config_file, int depth);
void resolveConfigIncludes(Json::Value &config, int depth);
void mergeConfig(Json::Value &a_config_, Json::Value &b_config_);
std::string config_file_;
Json::Value config_;
};
} // namespace waybar

View File

@ -1,34 +1,108 @@
#pragma once
#include <json/json.h>
#if defined(HAVE_CHRONO_TIMEZONES) || defined(HAVE_LIBDATE)
#include "modules/clock.hpp"
#ifdef HAVE_SWAY
#include "modules/sway/workspaces.hpp"
#include "modules/sway/window.hpp"
#else
#include "modules/simpleclock.hpp"
#endif
#ifdef HAVE_SWAY
#include "modules/sway/language.hpp"
#include "modules/sway/mode.hpp"
#include "modules/sway/scratchpad.hpp"
#include "modules/sway/window.hpp"
#include "modules/sway/workspaces.hpp"
#endif
#ifdef HAVE_WLR
#include "modules/wlr/taskbar.hpp"
#include "modules/wlr/workspace_manager.hpp"
#endif
#ifdef HAVE_RIVER
#include "modules/river/layout.hpp"
#include "modules/river/mode.hpp"
#include "modules/river/tags.hpp"
#include "modules/river/window.hpp"
#endif
#ifdef HAVE_DWL
#include "modules/dwl/tags.hpp"
#endif
#ifdef HAVE_HYPRLAND
#include "modules/hyprland/backend.hpp"
#include "modules/hyprland/language.hpp"
#include "modules/hyprland/submap.hpp"
#include "modules/hyprland/window.hpp"
#include "modules/hyprland/workspaces.hpp"
#endif
#if defined(__FreeBSD__) || (defined(__linux__) && !defined(NO_FILESYSTEM))
#include "modules/battery.hpp"
#include "modules/memory.hpp"
#endif
#if defined(HAVE_CPU_LINUX) || defined(HAVE_CPU_BSD)
#include "modules/cpu.hpp"
#endif
#include "modules/idle_inhibitor.hpp"
#if defined(HAVE_MEMORY_LINUX) || defined(HAVE_MEMORY_BSD)
#include "modules/memory.hpp"
#endif
#include "modules/disk.hpp"
#ifdef HAVE_DBUSMENU
#include "modules/sni/tray.hpp"
#endif
#ifdef HAVE_MPRIS
#include "modules/mpris/mpris.hpp"
#endif
#ifdef HAVE_LIBNL
#include "modules/network.hpp"
#endif
#ifdef HAVE_LIBUDEV
#include "modules/backlight.hpp"
#endif
#ifdef HAVE_LIBEVDEV
#include "modules/keyboard_state.hpp"
#endif
#ifdef HAVE_GAMEMODE
#include "modules/gamemode.hpp"
#endif
#ifdef HAVE_UPOWER
#include "modules/upower/upower.hpp"
#endif
#ifdef HAVE_LIBPULSE
#include "modules/pulseaudio.hpp"
#endif
#ifdef HAVE_LIBMPDCLIENT
#include "modules/mpd/mpd.hpp"
#endif
#ifdef HAVE_LIBSNDIO
#include "modules/sndio.hpp"
#endif
#ifdef HAVE_GIO_UNIX
#include "modules/bluetooth.hpp"
#include "modules/inhibitor.hpp"
#endif
#ifdef HAVE_LIBJACK
#include "modules/jack.hpp"
#endif
#ifdef HAVE_LIBWIREPLUMBER
#include "modules/wireplumber.hpp"
#endif
#ifdef HAVE_LIBCAVA
#include "modules/cava.hpp"
#endif
#include "bar.hpp"
#include "modules/custom.hpp"
#include "modules/image.hpp"
#include "modules/temperature.hpp"
#include "modules/user.hpp"
namespace waybar {
class Bar;
class Factory {
public:
Factory(Bar& bar, const Json::Value& config);
IModule* makeModule(const std::string &name) const;
private:
Bar& bar_;
const Json::Value& config_;
public:
Factory(const Bar& bar, const Json::Value& config);
AModule* makeModule(const std::string& name) const;
private:
const Bar& bar_;
const Json::Value& config_;
};
}
} // namespace waybar

22
include/group.hpp Normal file
View File

@ -0,0 +1,22 @@
#pragma once
#include <gtkmm/box.h>
#include <gtkmm/widget.h>
#include <json/json.h>
#include "AModule.hpp"
#include "bar.hpp"
#include "factory.hpp"
namespace waybar {
class Group : public AModule {
public:
Group(const std::string&, const std::string&, const Json::Value&, bool);
~Group() = default;
auto update() -> void override;
operator Gtk::Widget&() override;
Gtk::Box box;
};
} // namespace waybar

View File

@ -0,0 +1,69 @@
#pragma once
#include <optional>
#include <string>
#include <string_view>
#include <vector>
#include "ALabel.hpp"
#include "giomm/dbusproxy.h"
#include "util/json.hpp"
#include "util/sleeper_thread.hpp"
struct udev;
struct udev_device;
namespace waybar::modules {
class Backlight : public ALabel {
class BacklightDev {
public:
BacklightDev() = default;
BacklightDev(std::string name, int actual, int max, bool powered);
std::string_view name() const;
int get_actual() const;
void set_actual(int actual);
int get_max() const;
void set_max(int max);
bool get_powered() const;
void set_powered(bool powered);
friend inline bool operator==(const BacklightDev &lhs, const BacklightDev &rhs) {
return lhs.name_ == rhs.name_ && lhs.actual_ == rhs.actual_ && lhs.max_ == rhs.max_;
}
private:
std::string name_;
int actual_ = 1;
int max_ = 1;
bool powered_ = true;
};
public:
Backlight(const std::string &, const Json::Value &);
virtual ~Backlight();
auto update() -> void override;
private:
template <class ForwardIt>
static const BacklightDev *best_device(ForwardIt first, ForwardIt last, std::string_view);
template <class ForwardIt, class Inserter>
static void upsert_device(ForwardIt first, ForwardIt last, Inserter inserter, udev_device *dev);
template <class ForwardIt, class Inserter>
static void enumerate_devices(ForwardIt first, ForwardIt last, Inserter inserter, udev *udev);
bool handleScroll(GdkEventScroll *e) override;
const std::string preferred_device_;
static constexpr int EPOLL_MAX_EVENTS = 16;
std::optional<BacklightDev> previous_best_;
std::string previous_format_;
std::mutex udev_thread_mutex_;
std::vector<BacklightDev> devices_;
// thread must destruct before shared data
util::SleeperThread udev_thread_;
Glib::RefPtr<Gio::DBus::Proxy> login_proxy_;
};
} // namespace waybar::modules

View File

@ -1,32 +1,58 @@
#pragma once
#ifdef FILESYSTEM_EXPERIMENTAL
#include <experimental/filesystem>
#else
#include <filesystem>
#include <fstream>
#include <iostream>
#endif
#include <fmt/format.h>
#if defined(__linux__)
#include <sys/inotify.h>
#endif
#include <algorithm>
#include "util/chrono.hpp"
#include <fstream>
#include <string>
#include <vector>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
#ifdef FILESYSTEM_EXPERIMENTAL
namespace fs = std::experimental::filesystem;
#else
namespace fs = std::filesystem;
#endif
class Battery : public ALabel {
public:
Battery(const Json::Value&);
~Battery();
auto update() -> void;
private:
static inline const fs::path data_dir_ = "/sys/class/power_supply/";
void worker();
public:
Battery(const std::string&, const Json::Value&);
virtual ~Battery();
auto update() -> void override;
util::SleeperThread thread_;
util::SleeperThread threadTimer_;
std::vector<fs::path> batteries_;
int fd_;
private:
static inline const fs::path data_dir_ = "/sys/class/power_supply/";
void refreshBatteries();
void worker();
const std::string getAdapterStatus(uint8_t capacity) const;
const std::tuple<uint8_t, float, std::string, float> getInfos();
const std::string formatTimeRemaining(float hoursRemaining);
int global_watch;
std::map<fs::path, int> batteries_;
fs::path adapter_;
int battery_watch_fd_;
int global_watch_fd_;
std::mutex battery_list_mutex_;
std::string old_status_;
bool warnFirstTime_{true};
util::SleeperThread thread_;
util::SleeperThread thread_battery_update_;
util::SleeperThread thread_timer_;
};
}
} // namespace waybar::modules

View File

@ -0,0 +1,80 @@
#pragma once
#include "ALabel.hpp"
#ifdef WANT_RFKILL
#include "util/rfkill.hpp"
#endif
#include <gio/gio.h>
#include <optional>
#include <string>
#include <vector>
namespace waybar::modules {
class Bluetooth : public ALabel {
struct ControllerInfo {
std::string path;
std::string address;
std::string address_type;
// std::string name; // just use alias instead
std::string alias;
bool powered;
bool discoverable;
bool pairable;
bool discovering;
};
// NOTE: there are some properties that not all devices provide
struct DeviceInfo {
std::string path;
std::string paired_controller;
std::string address;
std::string address_type;
// std::optional<std::string> name; // just use alias instead
std::string alias;
std::optional<std::string> icon;
bool paired;
bool trusted;
bool blocked;
bool connected;
bool services_resolved;
// NOTE: experimental feature in bluez
std::optional<unsigned char> battery_percentage;
};
public:
Bluetooth(const std::string&, const Json::Value&);
virtual ~Bluetooth() = default;
auto update() -> void override;
private:
static auto onInterfaceAddedOrRemoved(GDBusObjectManager*, GDBusObject*, GDBusInterface*,
gpointer) -> void;
static auto onInterfaceProxyPropertiesChanged(GDBusObjectManagerClient*, GDBusObjectProxy*,
GDBusProxy*, GVariant*, const gchar* const*,
gpointer) -> void;
auto getDeviceBatteryPercentage(GDBusObject*) -> std::optional<unsigned char>;
auto getDeviceProperties(GDBusObject*, DeviceInfo&) -> bool;
auto getControllerProperties(GDBusObject*, ControllerInfo&) -> bool;
// Returns std::nullopt if no controller could be found
auto findCurController() -> std::optional<ControllerInfo>;
auto findConnectedDevices(const std::string&, std::vector<DeviceInfo>&) -> void;
#ifdef WANT_RFKILL
util::Rfkill rfkill_;
#endif
const std::unique_ptr<GDBusObjectManager, void (*)(GDBusObjectManager*)> manager_;
std::string state_;
std::optional<ControllerInfo> cur_controller_;
std::vector<DeviceInfo> connected_devices_;
DeviceInfo cur_focussed_device_;
std::string device_enumerate_;
std::vector<std::string> device_preference_;
};
} // namespace waybar::modules

46
include/modules/cava.hpp Normal file
View File

@ -0,0 +1,46 @@
#pragma once
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
extern "C" {
#include <cava/common.h>
}
namespace waybar::modules {
using namespace std::literals::chrono_literals;
class Cava final : public ALabel {
public:
Cava(const std::string&, const Json::Value&);
virtual ~Cava();
auto update() -> void override;
auto doAction(const std::string& name) -> void override;
private:
util::SleeperThread thread_;
util::SleeperThread thread_fetch_input_;
struct error_s error_ {}; // cava errors
struct config_params prm_ {}; // cava parameters
struct audio_raw audio_raw_ {}; // cava handled raw audio data(is based on audio_data)
struct audio_data audio_data_ {}; // cava audio data
struct cava_plan* plan_; //{new cava_plan{}};
// Cava API to read audio source
ptr input_source_;
// Delay to handle audio source
std::chrono::milliseconds frame_time_milsec_{1s};
// Text to display
std::string text_{""};
int rePaint_{1};
std::chrono::seconds fetch_input_delay_{4};
std::chrono::seconds suspend_silence_delay_{0};
bool silence_{false};
int sleep_counter_{0};
// Cava method
void pause_resume();
// ModuleActionMap
static inline std::map<const std::string, void (waybar::modules::Cava::*const)()> actionMap_{
{"mode", &waybar::modules::Cava::pause_resume}};
};
} // namespace waybar::modules

View File

@ -1,18 +1,79 @@
#pragma once
#include <fmt/format.h>
#include "fmt/time.h"
#include "util/chrono.hpp"
#include "ALabel.hpp"
#include "util/date.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Clock : public ALabel {
public:
Clock(const Json::Value&);
auto update() -> void;
private:
waybar::util::SleeperThread thread_;
const std::string kCalendarPlaceholder = "calendar";
const std::string KTimezonedTimeListPlaceholder = "timezoned_time_list";
enum class WeeksSide {
LEFT,
RIGHT,
HIDDEN,
};
}
enum class CldMode { MONTH, YEAR };
class Clock final : public ALabel {
public:
Clock(const std::string&, const Json::Value&);
virtual ~Clock() = default;
auto update() -> void override;
auto doAction(const std::string& name) -> void override;
private:
util::SleeperThread thread_;
std::locale locale_;
std::vector<const date::time_zone*> time_zones_;
int current_time_zone_idx_;
bool is_calendar_in_tooltip_;
bool is_timezoned_list_in_tooltip_;
auto first_day_of_week() -> date::weekday;
const date::time_zone* current_timezone();
auto timezones_text(std::chrono::system_clock::time_point now) -> std::string;
/*Calendar properties*/
WeeksSide cldWPos_{WeeksSide::HIDDEN};
/*
0 - calendar.format.months
1 - calendar.format.weekdays
2 - calendar.format.days
3 - calendar.format.today
4 - calendar.format.weeks
5 - tooltip-format
*/
std::map<int, std::string const> fmtMap_;
CldMode cldMode_{CldMode::MONTH};
uint cldMonCols_{3}; // Count of the month in the row
int cldMonColLen_{20}; // Length of the month column
int cldWnLen_{3}; // Length of the week number
date::year_month_day cldYearShift_;
date::year_month cldMonShift_;
date::months cldCurrShift_{0};
date::months cldShift_{0};
std::string cldYearCached_{};
std::string cldMonCached_{};
date::day cldBaseDay_{0};
/*Calendar functions*/
auto get_calendar(const date::year_month_day& today, const date::year_month_day& ymd,
const date::time_zone* tz) -> const std::string;
/*Clock actions*/
void cldModeSwitch();
void cldShift_up();
void cldShift_down();
void tz_up();
void tz_down();
// ModuleActionMap
static inline std::map<const std::string, void (waybar::modules::Clock::*const)()> actionMap_{
{"mode", &waybar::modules::Clock::cldModeSwitch},
{"shift_up", &waybar::modules::Clock::cldShift_up},
{"shift_down", &waybar::modules::Clock::cldShift_down},
{"tz_up", &waybar::modules::Clock::tz_up},
{"tz_down", &waybar::modules::Clock::tz_down}};
};
} // namespace waybar::modules

View File

@ -1,18 +1,35 @@
#pragma once
#include <fmt/format.h>
#include <sys/sysinfo.h>
#include "util/chrono.hpp"
#include <cstdint>
#include <fstream>
#include <numeric>
#include <string>
#include <utility>
#include <vector>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Cpu : public ALabel {
public:
Cpu(const Json::Value&);
auto update() -> void;
private:
waybar::util::SleeperThread thread_;
public:
Cpu(const std::string&, const Json::Value&);
virtual ~Cpu() = default;
auto update() -> void override;
private:
double getCpuLoad();
std::tuple<std::vector<uint16_t>, std::string> getCpuUsage();
std::tuple<float, float, float> getCpuFrequency();
std::vector<std::tuple<size_t, size_t>> parseCpuinfo();
std::vector<float> parseCpuFrequencies();
std::vector<std::tuple<size_t, size_t>> prev_times_;
util::SleeperThread thread_;
};
}
} // namespace waybar::modules

View File

@ -1,24 +1,48 @@
#pragma once
#include <fmt/format.h>
#include <iostream>
#include "util/chrono.hpp"
#include "util/command.hpp"
#include <fmt/args.h>
#include <csignal>
#include <string>
#include "ALabel.hpp"
#include "util/command.hpp"
#include "util/json.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Custom : public ALabel {
public:
Custom(const std::string, const Json::Value&);
auto update() -> void;
private:
void delayWorker();
void continuousWorker();
public:
Custom(const std::string&, const std::string&, const Json::Value&);
virtual ~Custom();
auto update() -> void override;
void refresh(int /*signal*/) override;
const std::string name_;
waybar::util::SleeperThread thread_;
waybar::util::command::res output_;
private:
void delayWorker();
void continuousWorker();
void parseOutputRaw();
void parseOutputJson();
void handleEvent();
bool handleScroll(GdkEventScroll* e) override;
bool handleToggle(GdkEventButton* const& e) override;
const std::string name_;
std::string text_;
std::string id_;
std::string alt_;
std::string tooltip_;
std::vector<std::string> class_;
fmt::dynamic_format_arg_store<fmt::format_context> fields_;
int percentage_;
FILE* fp_;
int pid_;
util::command::res output_;
util::JsonParser parser_;
util::SleeperThread thread_;
};
}
} // namespace waybar::modules

25
include/modules/disk.hpp Normal file
View File

@ -0,0 +1,25 @@
#pragma once
#include <fmt/format.h>
#include <sys/statvfs.h>
#include <fstream>
#include "ALabel.hpp"
#include "util/format.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Disk : public ALabel {
public:
Disk(const std::string&, const Json::Value&);
virtual ~Disk() = default;
auto update() -> void override;
private:
util::SleeperThread thread_;
std::string path_;
};
} // namespace waybar::modules

View File

@ -0,0 +1,34 @@
#pragma once
#include <gtkmm/button.h>
#include <wayland-client.h>
#include "AModule.hpp"
#include "bar.hpp"
#include "dwl-ipc-unstable-v2-client-protocol.h"
#include "xdg-output-unstable-v1-client-protocol.h"
namespace waybar::modules::dwl {
class Tags : public waybar::AModule {
public:
Tags(const std::string &, const waybar::Bar &, const Json::Value &);
virtual ~Tags();
// Handlers for wayland events
void handle_view_tags(uint32_t tag, uint32_t state, uint32_t clients, uint32_t focused);
void handle_primary_clicked(uint32_t tag);
bool handle_button_press(GdkEventButton *event_button, uint32_t tag);
struct zdwl_ipc_manager_v2 *status_manager_;
struct wl_seat *seat_;
private:
const waybar::Bar &bar_;
Gtk::Box box_;
std::vector<Gtk::Button> buttons_;
struct zdwl_ipc_output_v2 *output_status_;
};
} /* namespace waybar::modules::dwl */

View File

@ -0,0 +1,77 @@
#pragma once
#include <iostream>
#include <map>
#include <string>
#include "ALabel.hpp"
#include "giomm/dbusconnection.h"
#include "giomm/dbusproxy.h"
#include "glibconfig.h"
#include "gtkmm/box.h"
#include "gtkmm/image.h"
#include "gtkmm/label.h"
#include "gtkmm/overlay.h"
namespace waybar::modules {
class Gamemode : public AModule {
public:
Gamemode(const std::string &, const Json::Value &);
virtual ~Gamemode();
auto update() -> void override;
private:
const std::string DEFAULT_ICON_NAME = "input-gaming-symbolic";
const std::string DEFAULT_FORMAT = "{glyph}";
const std::string DEFAULT_FORMAT_ALT = "{glyph} {count}";
const std::string DEFAULT_TOOLTIP_FORMAT = "Games running: {count}";
const std::string DEFAULT_GLYPH = "";
void appear(const Glib::RefPtr<Gio::DBus::Connection> &connection, const Glib::ustring &name,
const Glib::ustring &name_owner);
void disappear(const Glib::RefPtr<Gio::DBus::Connection> &connection, const Glib::ustring &name);
void prepareForSleep_cb(const Glib::RefPtr<Gio::DBus::Connection> &connection,
const Glib::ustring &sender_name, const Glib::ustring &object_path,
const Glib::ustring &interface_name, const Glib::ustring &signal_name,
const Glib::VariantContainerBase &parameters);
void notify_cb(const Glib::ustring &sender_name, const Glib::ustring &signal_name,
const Glib::VariantContainerBase &arguments);
void getData();
bool handleToggle(GdkEventButton *const &) override;
// Config
std::string format = DEFAULT_FORMAT;
std::string format_alt = DEFAULT_FORMAT_ALT;
std::string tooltip_format = DEFAULT_TOOLTIP_FORMAT;
std::string glyph = DEFAULT_GLYPH;
bool tooltip = true;
bool hideNotRunning = true;
bool useIcon = true;
uint iconSize = 20;
uint iconSpacing = 4;
std::string iconName = DEFAULT_ICON_NAME;
Gtk::Box box_;
Gtk::Image icon_;
Gtk::Label label_;
const std::string dbus_name = "com.feralinteractive.GameMode";
const std::string dbus_obj_path = "/com/feralinteractive/GameMode";
const std::string dbus_interface = "org.freedesktop.DBus.Properties";
const std::string dbus_get_interface = "com.feralinteractive.GameMode";
uint gameCount = 0;
std::string lastStatus;
bool showAltText = false;
guint login1_id;
Glib::RefPtr<Gio::DBus::Proxy> gamemode_proxy;
Glib::RefPtr<Gio::DBus::Connection> system_connection;
bool gamemodeRunning;
guint gamemodeWatcher_id;
};
} // namespace waybar::modules

View File

@ -0,0 +1,40 @@
#pragma once
#include <functional>
#include <list>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include "util/json.hpp"
namespace waybar::modules::hyprland {
class EventHandler {
public:
virtual void onEvent(const std::string& ev) = 0;
virtual ~EventHandler() = default;
};
class IPC {
public:
IPC() { startIPC(); }
void registerForIPC(const std::string&, EventHandler*);
void unregisterForIPC(EventHandler*);
std::string getSocket1Reply(const std::string& rq);
Json::Value getSocket1JsonReply(const std::string& rq);
private:
void startIPC();
void parseIPC(const std::string&);
std::mutex callbackMutex;
util::JsonParser parser_;
std::list<std::pair<std::string, EventHandler*>> callbacks;
};
inline std::unique_ptr<IPC> gIPC;
inline bool modulesReady = false;
}; // namespace waybar::modules::hyprland

View File

@ -0,0 +1,38 @@
#include <fmt/format.h>
#include "ALabel.hpp"
#include "bar.hpp"
#include "modules/hyprland/backend.hpp"
#include "util/json.hpp"
namespace waybar::modules::hyprland {
class Language : public waybar::ALabel, public EventHandler {
public:
Language(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~Language();
auto update() -> void override;
private:
void onEvent(const std::string&) override;
void initLanguage();
struct Layout {
std::string full_name;
std::string short_name;
std::string variant;
std::string short_description;
};
auto getLayout(const std::string&) -> Layout;
std::mutex mutex_;
const Bar& bar_;
util::JsonParser parser_;
Layout layout_;
};
} // namespace waybar::modules::hyprland

View File

@ -0,0 +1,26 @@
#include <fmt/format.h>
#include "ALabel.hpp"
#include "bar.hpp"
#include "modules/hyprland/backend.hpp"
#include "util/json.hpp"
namespace waybar::modules::hyprland {
class Submap : public waybar::ALabel, public EventHandler {
public:
Submap(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~Submap();
auto update() -> void override;
private:
void onEvent(const std::string&) override;
std::mutex mutex_;
const Bar& bar_;
util::JsonParser parser_;
std::string submap_;
};
} // namespace waybar::modules::hyprland

View File

@ -0,0 +1,60 @@
#include <fmt/format.h>
#include "AAppIconLabel.hpp"
#include "bar.hpp"
#include "modules/hyprland/backend.hpp"
#include "util/json.hpp"
namespace waybar::modules::hyprland {
class Window : public waybar::AAppIconLabel, public EventHandler {
public:
Window(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~Window();
auto update() -> void override;
private:
struct Workspace {
int id;
int windows;
std::string last_window;
std::string last_window_title;
static auto parse(const Json::Value&) -> Workspace;
};
struct WindowData {
bool floating;
int monitor = -1;
std::string class_name;
std::string initial_class_name;
std::string title;
std::string initial_title;
bool fullscreen;
bool grouped;
static auto parse(const Json::Value&) -> WindowData;
};
auto getActiveWorkspace(const std::string&) -> Workspace;
auto getActiveWorkspace() -> Workspace;
void onEvent(const std::string&) override;
void queryActiveWorkspace();
void setClass(const std::string&, bool enable);
bool separate_outputs;
std::mutex mutex_;
const Bar& bar_;
util::JsonParser parser_;
WindowData window_data_;
Workspace workspace_;
std::string solo_class_;
std::string last_solo_class_;
bool solo_;
bool all_floating_;
bool swallowing_;
bool fullscreen_;
};
} // namespace waybar::modules::hyprland

View File

@ -0,0 +1,91 @@
#include <gtkmm/button.h>
#include <gtkmm/label.h>
#include <memory>
#include "AModule.hpp"
#include "bar.hpp"
#include "modules/hyprland/backend.hpp"
namespace waybar::modules::hyprland {
class Workspace {
public:
Workspace(const Json::Value& workspace_data);
std::string& select_icon(std::map<std::string, std::string>& icons_map);
Gtk::Button& button() { return button_; };
int id() const { return id_; };
std::string name() const { return name_; };
std::string output() const { return output_; };
bool active() const { return active_; };
bool is_special() const { return is_special_; };
bool is_persistent() const { return is_persistent_; };
bool is_empty() const { return windows_ == 0; };
bool is_urgent() const { return is_urgent_; };
auto handle_clicked(GdkEventButton* bt) -> bool;
void set_active(bool value = true) { active_ = value; };
void set_persistent(bool value = true) { is_persistent_ = value; };
void set_urgent(bool value = true) { is_urgent_ = value; };
void set_windows(uint value) { windows_ = value; };
void update(const std::string& format, const std::string& icon);
private:
int id_;
std::string name_;
std::string output_;
uint windows_;
bool active_ = false;
bool is_special_ = false;
bool is_persistent_ = false;
bool is_urgent_ = false;
Gtk::Button button_;
Gtk::Box content_;
Gtk::Label label_;
};
class Workspaces : public AModule, public EventHandler {
public:
Workspaces(const std::string&, const waybar::Bar&, const Json::Value&);
~Workspaces() override;
void update() override;
void init();
auto all_outputs() const -> bool { return all_outputs_; }
auto show_special() const -> bool { return show_special_; }
auto get_bar_output() const -> std::string { return bar_.output->name; }
private:
void onEvent(const std::string&) override;
void update_window_count();
void sort_workspaces();
void create_workspace(Json::Value& value);
void remove_workspace(std::string name);
void set_urgent_workspace(std::string windowaddress);
bool all_outputs_ = false;
bool show_special_ = false;
void fill_persistent_workspaces();
void create_persistent_workspaces();
std::vector<std::string> persistent_workspaces_to_create_;
bool persistent_created_ = false;
std::string format_;
std::map<std::string, std::string> icons_map_;
bool with_icon_;
uint64_t monitor_id_;
std::string active_workspace_name_;
std::vector<std::unique_ptr<Workspace>> workspaces_;
std::vector<Json::Value> workspaces_to_create_;
std::vector<std::string> workspaces_to_remove_;
std::mutex mutex_;
const Bar& bar_;
Gtk::Box box_;
};
} // namespace waybar::modules::hyprland

View File

@ -0,0 +1,30 @@
#pragma once
#include <fmt/format.h>
#include "ALabel.hpp"
#include "bar.hpp"
#include "client.hpp"
namespace waybar::modules {
class IdleInhibitor : public ALabel {
sigc::connection timeout_;
public:
IdleInhibitor(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~IdleInhibitor();
auto update() -> void override;
static std::list<waybar::AModule*> modules;
static bool status;
private:
bool handleToggle(GdkEventButton* const& e) override;
void toggleStatus();
const Bar& bar_;
struct zwp_idle_inhibitor_v1* idle_inhibitor_;
int pid_;
};
} // namespace waybar::modules

40
include/modules/image.hpp Normal file
View File

@ -0,0 +1,40 @@
#pragma once
#include <fmt/format.h>
#include <gtkmm/image.h>
#include <csignal>
#include <string>
#include "ALabel.hpp"
#include "gtkmm/box.h"
#include "util/command.hpp"
#include "util/json.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Image : public AModule {
public:
Image(const std::string&, const Json::Value&);
virtual ~Image() = default;
auto update() -> void override;
void refresh(int /*signal*/) override;
private:
void delayWorker();
void handleEvent();
void parseOutputRaw();
Gtk::Box box_;
Gtk::Image image_;
std::string path_;
std::string tooltip_;
int size_;
int interval_;
util::command::res output_;
util::SleeperThread thread_;
};
} // namespace waybar::modules

View File

@ -0,0 +1,27 @@
#pragma once
#include <gio/gio.h>
#include <memory>
#include "ALabel.hpp"
#include "bar.hpp"
namespace waybar::modules {
class Inhibitor : public ALabel {
public:
Inhibitor(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~Inhibitor();
auto update() -> void override;
auto activated() -> bool;
private:
auto handleToggle(::GdkEventButton* const& e) -> bool override;
const std::unique_ptr<::GDBusConnection, void (*)(::GDBusConnection*)> dbus_;
const std::string inhibitors_;
int handle_ = -1;
};
} // namespace waybar::modules

44
include/modules/jack.hpp Normal file
View File

@ -0,0 +1,44 @@
#pragma once
#include <fmt/format.h>
#include <jack/jack.h>
#include <jack/thread.h>
#include <fstream>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class JACK : public ALabel {
public:
JACK(const std::string &, const Json::Value &);
virtual ~JACK() = default;
auto update() -> void override;
int bufSize(jack_nframes_t size);
int sampleRate(jack_nframes_t rate);
int xrun();
void shutdown();
private:
std::string JACKState();
jack_client_t *client_;
jack_nframes_t bufsize_;
jack_nframes_t samplerate_;
unsigned int xruns_;
float load_;
bool running_;
std::mutex mutex_;
std::string state_;
util::SleeperThread thread_;
};
} // namespace waybar::modules
int bufSizeCallback(jack_nframes_t size, void *obj);
int sampleRateCallback(jack_nframes_t rate, void *obj);
int xrunCallback(void *obj);
void shutdownCallback(void *obj);

View File

@ -0,0 +1,49 @@
#pragma once
#include <fmt/chrono.h>
#include <gtkmm/label.h>
#include <set>
#include <unordered_map>
#include "AModule.hpp"
#include "bar.hpp"
#include "util/sleeper_thread.hpp"
extern "C" {
#include <libevdev/libevdev.h>
#include <libinput.h>
}
namespace waybar::modules {
class KeyboardState : public AModule {
public:
KeyboardState(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~KeyboardState();
auto update() -> void override;
private:
auto tryAddDevice(const std::string&) -> void;
Gtk::Box box_;
Gtk::Label numlock_label_;
Gtk::Label capslock_label_;
Gtk::Label scrolllock_label_;
std::string numlock_format_;
std::string capslock_format_;
std::string scrolllock_format_;
const std::chrono::seconds interval_;
std::string icon_locked_;
std::string icon_unlocked_;
std::string devices_path_;
struct libinput* libinput_;
std::unordered_map<std::string, struct libinput_device*> libinput_devices_;
std::set<int> binding_keys;
util::SleeperThread libinput_thread_, hotplug_thread_;
};
} // namespace waybar::modules

View File

@ -1,18 +1,27 @@
#pragma once
#include <fmt/format.h>
#include <sys/sysinfo.h>
#include "util/chrono.hpp"
#include <fstream>
#include <unordered_map>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Memory : public ALabel {
public:
Memory(const Json::Value&);
auto update() -> void;
private:
waybar::util::SleeperThread thread_;
public:
Memory(const std::string&, const Json::Value&);
virtual ~Memory() = default;
auto update() -> void override;
private:
void parseMeminfo();
std::unordered_map<std::string, unsigned long> meminfo_;
util::SleeperThread thread_;
};
}
} // namespace waybar::modules

View File

@ -0,0 +1,68 @@
#pragma once
#include <fmt/format.h>
#include <mpd/client.h>
#include <spdlog/spdlog.h>
#include <condition_variable>
#include <thread>
#include "ALabel.hpp"
#include "modules/mpd/state.hpp"
namespace waybar::modules {
class MPD : public ALabel {
friend class detail::Context;
// State machine
detail::Context context_{this};
const std::string module_name_;
// Not using unique_ptr since we don't manage the pointer
// (It's either nullptr, or from the config)
const char* server_;
const unsigned port_;
const std::string password_;
unsigned timeout_;
detail::unique_connection connection_;
detail::unique_status status_;
mpd_state state_;
detail::unique_song song_;
public:
MPD(const std::string&, const Json::Value&);
virtual ~MPD() noexcept = default;
auto update() -> void override;
private:
std::string getTag(mpd_tag_type type, unsigned idx = 0) const;
std::string getFilename() const;
void setLabel();
std::string getStateIcon() const;
std::string getOptionIcon(std::string optionName, bool activated) const;
// GUI-side methods
bool handlePlayPause(GdkEventButton* const&);
void emit() { dp.emit(); }
// MPD-side, Non-GUI methods.
void tryConnect();
void checkErrors(mpd_connection* conn);
void fetchState();
void queryMPD();
inline bool stopped() const { return connection_ && state_ == MPD_STATE_STOP; }
inline bool playing() const { return connection_ && state_ == MPD_STATE_PLAY; }
inline bool paused() const { return connection_ && state_ == MPD_STATE_PAUSE; }
};
#if !defined(MPD_NOINLINE)
#include "modules/mpd/state.inl.hpp"
#endif
} // namespace waybar::modules

View File

@ -0,0 +1,217 @@
#pragma once
#include <fmt/format.h>
#include <mpd/client.h>
#include <spdlog/spdlog.h>
#include <condition_variable>
#include <thread>
#include "ALabel.hpp"
namespace waybar::modules {
class MPD;
} // namespace waybar::modules
namespace waybar::modules::detail {
using unique_connection = std::unique_ptr<mpd_connection, decltype(&mpd_connection_free)>;
using unique_status = std::unique_ptr<mpd_status, decltype(&mpd_status_free)>;
using unique_song = std::unique_ptr<mpd_song, decltype(&mpd_song_free)>;
class Context;
/// This state machine loosely follows a non-hierarchical, statechart
/// pattern, and includes ENTRY and EXIT actions.
///
/// The State class is the base class for all other states. The
/// entry and exit methods are automatically called when entering
/// into a new state and exiting from the current state. This
/// includes initially entering (Disconnected class) and exiting
/// Waybar.
///
/// The following nested "top-level" states are represented:
/// 1. Idle - await notification of MPD activity.
/// 2. All Non-Idle states:
/// 1. Playing - An active song is producing audio output.
/// 2. Paused - The current song is paused.
/// 3. Stopped - No song is actively playing.
/// 3. Disconnected - periodically attempt MPD (re-)connection.
///
/// NOTE: Since this statechart is non-hierarchical, the above
/// states are flattened into a set.
class State {
public:
virtual ~State() noexcept = default;
virtual void entry() noexcept { spdlog::debug("mpd: ignore entry action"); }
virtual void exit() noexcept { spdlog::debug("mpd: ignore exit action"); }
virtual void play() { spdlog::debug("mpd: ignore play state transition"); }
virtual void stop() { spdlog::debug("mpd: ignore stop state transition"); }
virtual void pause() { spdlog::debug("mpd: ignore pause state transition"); }
/// Request state update the GUI.
virtual void update() noexcept { spdlog::debug("mpd: ignoring update method request"); }
};
class Idle : public State {
Context* const ctx_;
sigc::connection idle_connection_;
public:
Idle(Context* const ctx) : ctx_{ctx} {}
virtual ~Idle() noexcept { this->exit(); };
void entry() noexcept override;
void exit() noexcept override;
void play() override;
void stop() override;
void pause() override;
void update() noexcept override;
private:
Idle(const Idle&) = delete;
Idle& operator=(const Idle&) = delete;
bool on_io(Glib::IOCondition const&);
};
class Playing : public State {
Context* const ctx_;
sigc::connection timer_connection_;
public:
Playing(Context* const ctx) : ctx_{ctx} {}
virtual ~Playing() noexcept { this->exit(); }
void entry() noexcept override;
void exit() noexcept override;
void pause() override;
void stop() override;
void update() noexcept override;
private:
Playing(Playing const&) = delete;
Playing& operator=(Playing const&) = delete;
bool on_timer();
};
class Paused : public State {
Context* const ctx_;
sigc::connection timer_connection_;
public:
Paused(Context* const ctx) : ctx_{ctx} {}
virtual ~Paused() noexcept { this->exit(); }
void entry() noexcept override;
void exit() noexcept override;
void play() override;
void stop() override;
void update() noexcept override;
private:
Paused(Paused const&) = delete;
Paused& operator=(Paused const&) = delete;
bool on_timer();
};
class Stopped : public State {
Context* const ctx_;
sigc::connection timer_connection_;
public:
Stopped(Context* const ctx) : ctx_{ctx} {}
virtual ~Stopped() noexcept { this->exit(); }
void entry() noexcept override;
void exit() noexcept override;
void play() override;
void pause() override;
void update() noexcept override;
private:
Stopped(Stopped const&) = delete;
Stopped& operator=(Stopped const&) = delete;
bool on_timer();
};
class Disconnected : public State {
Context* const ctx_;
sigc::connection timer_connection_;
public:
Disconnected(Context* const ctx) : ctx_{ctx} {}
virtual ~Disconnected() noexcept { this->exit(); }
void entry() noexcept override;
void exit() noexcept override;
void update() noexcept override;
private:
Disconnected(Disconnected const&) = delete;
Disconnected& operator=(Disconnected const&) = delete;
void arm_timer(int interval) noexcept;
void disarm_timer() noexcept;
bool on_timer();
};
class Context {
std::unique_ptr<State> state_;
waybar::modules::MPD* mpd_module_;
friend class State;
friend class Playing;
friend class Paused;
friend class Stopped;
friend class Disconnected;
friend class Idle;
protected:
void setState(std::unique_ptr<State>&& new_state) noexcept {
if (state_.get() != nullptr) {
state_->exit();
}
state_ = std::move(new_state);
state_->entry();
}
bool is_connected() const;
bool is_playing() const;
bool is_paused() const;
bool is_stopped() const;
constexpr std::size_t interval() const;
void tryConnect() const;
void checkErrors(mpd_connection*) const;
void do_update();
void queryMPD() const;
void fetchState() const;
constexpr mpd_state state() const;
void emit() const;
[[nodiscard]] unique_connection& connection();
public:
explicit Context(waybar::modules::MPD* const mpd_module)
: state_{std::make_unique<Disconnected>(this)}, mpd_module_{mpd_module} {
state_->entry();
}
void play() { state_->play(); }
void stop() { state_->stop(); }
void pause() { state_->pause(); }
void update() noexcept { state_->update(); }
};
} // namespace waybar::modules::detail

View File

@ -0,0 +1,22 @@
#pragma once
namespace detail {
inline bool Context::is_connected() const { return mpd_module_->connection_ != nullptr; }
inline bool Context::is_playing() const { return mpd_module_->playing(); }
inline bool Context::is_paused() const { return mpd_module_->paused(); }
inline bool Context::is_stopped() const { return mpd_module_->stopped(); }
constexpr inline std::size_t Context::interval() const { return mpd_module_->interval_.count(); }
inline void Context::tryConnect() const { mpd_module_->tryConnect(); }
inline unique_connection& Context::connection() { return mpd_module_->connection_; }
constexpr inline mpd_state Context::state() const { return mpd_module_->state_; }
inline void Context::do_update() { mpd_module_->setLabel(); }
inline void Context::checkErrors(mpd_connection* conn) const { mpd_module_->checkErrors(conn); }
inline void Context::queryMPD() const { mpd_module_->queryMPD(); }
inline void Context::fetchState() const { mpd_module_->fetchState(); }
inline void Context::emit() const { mpd_module_->emit(); }
} // namespace detail

View File

@ -0,0 +1,88 @@
#pragma once
#include <iostream>
#include <optional>
#include <string>
#include "gtkmm/box.h"
#include "gtkmm/label.h"
extern "C" {
#include <playerctl/playerctl.h>
}
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules::mpris {
class Mpris : public ALabel {
public:
Mpris(const std::string&, const Json::Value&);
virtual ~Mpris();
auto update() -> void override;
bool handleToggle(GdkEventButton* const&) override;
private:
static auto onPlayerNameAppeared(PlayerctlPlayerManager*, PlayerctlPlayerName*, gpointer) -> void;
static auto onPlayerNameVanished(PlayerctlPlayerManager*, PlayerctlPlayerName*, gpointer) -> void;
static auto onPlayerPlay(PlayerctlPlayer*, gpointer) -> void;
static auto onPlayerPause(PlayerctlPlayer*, gpointer) -> void;
static auto onPlayerStop(PlayerctlPlayer*, gpointer) -> void;
static auto onPlayerMetadata(PlayerctlPlayer*, GVariant*, gpointer) -> void;
struct PlayerInfo {
std::string name;
PlayerctlPlaybackStatus status;
std::string status_string;
std::optional<std::string> artist;
std::optional<std::string> album;
std::optional<std::string> title;
std::optional<std::string> length; // as HH:MM:SS
std::optional<std::string> position; // same format
};
auto getPlayerInfo() -> std::optional<PlayerInfo>;
auto getIconFromJson(const Json::Value&, const std::string&) -> std::string;
auto getArtistStr(const PlayerInfo&, bool) -> std::string;
auto getAlbumStr(const PlayerInfo&, bool) -> std::string;
auto getTitleStr(const PlayerInfo&, bool) -> std::string;
auto getLengthStr(const PlayerInfo&, bool) -> std::string;
auto getPositionStr(const PlayerInfo&, bool) -> std::string;
auto getDynamicStr(const PlayerInfo&, bool, bool) -> std::string;
// config
std::string format_playing_;
std::string format_paused_;
std::string format_stopped_;
std::string tooltip_;
std::string tooltip_playing_;
std::string tooltip_paused_;
std::string tooltip_stopped_;
int artist_len_;
int album_len_;
int title_len_;
int dynamic_len_;
std::vector<std::string> dynamic_prio_;
std::vector<std::string> dynamic_order_;
std::string dynamic_separator_;
bool truncate_hours_;
bool tooltip_len_limits_;
std::string ellipsis_;
std::string player_;
std::vector<std::string> ignored_players_;
PlayerctlPlayerManager* manager;
PlayerctlPlayer* player;
std::string lastStatus;
std::string lastPlayer;
util::SleeperThread thread_;
std::chrono::time_point<std::chrono::system_clock> last_update_;
};
} // namespace waybar::modules::mpris

View File

@ -1,46 +1,91 @@
#pragma once
#include <net/if.h>
#include <netlink/netlink.h>
#include <netlink/genl/genl.h>
#include <netlink/genl/ctrl.h>
#include <linux/nl80211.h>
#include <arpa/inet.h>
#include <fmt/format.h>
#include "util/chrono.hpp"
#include <linux/nl80211.h>
#include <netlink/genl/ctrl.h>
#include <netlink/genl/genl.h>
#include <netlink/netlink.h>
#include <sys/epoll.h>
#include <optional>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
#ifdef WANT_RFKILL
#include "util/rfkill.hpp"
#endif
namespace waybar::modules {
class Network : public ALabel {
public:
Network(const Json::Value&);
~Network();
auto update() -> void;
private:
static int netlinkRequest(int, void*, uint32_t, uint32_t groups = 0);
static int netlinkResponse(int, void*, uint32_t, uint32_t groups = 0);
static int scanCb(struct nl_msg*, void*);
public:
Network(const std::string&, const Json::Value&);
virtual ~Network();
auto update() -> void override;
void disconnected();
void initNL80211();
int getExternalInterface();
void parseEssid(struct nlattr**);
void parseSignal(struct nlattr**);
bool associatedOrJoined(struct nlattr**);
auto getInfo() -> void;
private:
static const uint8_t MAX_RETRY = 5;
static const uint8_t EPOLL_MAX = 200;
waybar::util::SleeperThread thread_;
int ifid_;
sa_family_t family_;
int sock_fd_;
struct sockaddr_nl nladdr_ = {};
struct nl_sock* sk_ = nullptr;
int nl80211_id_;
static int handleEvents(struct nl_msg*, void*);
static int handleEventsDone(struct nl_msg*, void*);
static int handleScan(struct nl_msg*, void*);
std::string essid_;
std::string ifname_;
int signal_strength_dbm_;
uint16_t signal_strength_;
void askForStateDump(void);
void worker();
void createInfoSocket();
void createEventSocket();
void parseEssid(struct nlattr**);
void parseSignal(struct nlattr**);
void parseFreq(struct nlattr**);
bool associatedOrJoined(struct nlattr**);
bool checkInterface(std::string name);
auto getInfo() -> void;
const std::string getNetworkState() const;
void clearIface();
bool wildcardMatch(const std::string& pattern, const std::string& text) const;
std::optional<std::pair<unsigned long long, unsigned long long>> readBandwidthUsage();
int ifid_;
sa_family_t family_;
struct sockaddr_nl nladdr_ = {0};
struct nl_sock* sock_ = nullptr;
struct nl_sock* ev_sock_ = nullptr;
int efd_;
int ev_fd_;
int nl80211_id_;
std::mutex mutex_;
bool want_route_dump_;
bool want_link_dump_;
bool want_addr_dump_;
bool dump_in_progress_;
bool is_p2p_;
unsigned long long bandwidth_down_total_;
unsigned long long bandwidth_up_total_;
std::string state_;
std::string essid_;
bool carrier_;
std::string ifname_;
std::string ipaddr_;
std::string gwaddr_;
std::string netmask_;
int cidr_;
int32_t signal_strength_dbm_;
uint8_t signal_strength_;
std::string signal_strength_app_;
uint32_t route_priority;
util::SleeperThread thread_;
util::SleeperThread thread_timer_;
#ifdef WANT_RFKILL
util::Rfkill rfkill_;
#endif
float frequency_;
};
}
} // namespace waybar::modules

View File

@ -1,34 +1,54 @@
#pragma once
#include <pulse/pulseaudio.h>
#include <fmt/format.h>
#include <pulse/pulseaudio.h>
#include <pulse/volume.h>
#include <algorithm>
#include <array>
#include "ALabel.hpp"
namespace waybar::modules {
class Pulseaudio : public ALabel {
public:
Pulseaudio(const Json::Value&);
~Pulseaudio();
auto update() -> void;
private:
static void subscribeCb(pa_context*, pa_subscription_event_type_t,
uint32_t, void*);
static void contextStateCb(pa_context*, void*);
static void sinkInfoCb(pa_context*, const pa_sink_info*, int, void*);
static void serverInfoCb(pa_context*, const pa_server_info*, void*);
public:
Pulseaudio(const std::string&, const Json::Value&);
virtual ~Pulseaudio();
auto update() -> void override;
const std::string getPortIcon() const;
private:
static void subscribeCb(pa_context*, pa_subscription_event_type_t, uint32_t, void*);
static void contextStateCb(pa_context*, void*);
static void sinkInfoCb(pa_context*, const pa_sink_info*, int, void*);
static void sourceInfoCb(pa_context*, const pa_source_info* i, int, void* data);
static void serverInfoCb(pa_context*, const pa_server_info*, void*);
static void volumeModifyCb(pa_context*, int, void*);
pa_threaded_mainloop* mainloop_;
pa_mainloop_api* mainloop_api_;
pa_context* context_;
uint32_t sink_idx_{0};
uint16_t volume_;
bool muted_;
std::string port_name_;
std::string desc_;
bool handleScroll(GdkEventScroll* e) override;
const std::vector<std::string> getPulseIcon() const;
pa_threaded_mainloop* mainloop_;
pa_mainloop_api* mainloop_api_;
pa_context* context_;
// SINK
uint32_t sink_idx_{0};
uint16_t volume_;
pa_cvolume pa_volume_;
bool muted_;
std::string port_name_;
std::string form_factor_;
std::string desc_;
std::string monitor_;
std::string current_sink_name_;
bool current_sink_running_;
// SOURCE
uint32_t source_idx_{0};
uint16_t source_volume_;
bool source_muted_;
std::string source_port_name_;
std::string source_desc_;
std::string default_source_name_;
};
}
} // namespace waybar::modules

View File

@ -0,0 +1,33 @@
#pragma once
#include <wayland-client.h>
#include "ALabel.hpp"
#include "bar.hpp"
#include "river-status-unstable-v1-client-protocol.h"
namespace waybar::modules::river {
class Layout : public waybar::ALabel {
public:
Layout(const std::string &, const waybar::Bar &, const Json::Value &);
virtual ~Layout();
// Handlers for wayland events
void handle_name(const char *name);
void handle_clear();
void handle_focused_output(struct wl_output *output);
void handle_unfocused_output(struct wl_output *output);
struct zriver_status_manager_v1 *status_manager_;
struct wl_seat *seat_;
private:
const waybar::Bar &bar_;
struct wl_output *output_; // stores the output this module belongs to
struct wl_output *focused_output_; // stores the currently focused output
struct zriver_output_status_v1 *output_status_;
struct zriver_seat_status_v1 *seat_status_;
};
} /* namespace waybar::modules::river */

View File

@ -0,0 +1,28 @@
#pragma once
#include <wayland-client.h>
#include "ALabel.hpp"
#include "bar.hpp"
#include "river-status-unstable-v1-client-protocol.h"
namespace waybar::modules::river {
class Mode : public waybar::ALabel {
public:
Mode(const std::string &, const waybar::Bar &, const Json::Value &);
virtual ~Mode();
// Handlers for wayland events
void handle_mode(const char *mode);
struct zriver_status_manager_v1 *status_manager_;
struct wl_seat *seat_;
private:
const waybar::Bar &bar_;
std::string mode_;
struct zriver_seat_status_v1 *seat_status_;
};
} /* namespace waybar::modules::river */

View File

@ -0,0 +1,38 @@
#pragma once
#include <gtkmm/button.h>
#include <wayland-client.h>
#include "AModule.hpp"
#include "bar.hpp"
#include "river-control-unstable-v1-client-protocol.h"
#include "river-status-unstable-v1-client-protocol.h"
#include "xdg-output-unstable-v1-client-protocol.h"
namespace waybar::modules::river {
class Tags : public waybar::AModule {
public:
Tags(const std::string &, const waybar::Bar &, const Json::Value &);
virtual ~Tags();
// Handlers for wayland events
void handle_focused_tags(uint32_t tags);
void handle_view_tags(struct wl_array *tags);
void handle_urgent_tags(uint32_t tags);
void handle_primary_clicked(uint32_t tag);
bool handle_button_press(GdkEventButton *event_button, uint32_t tag);
struct zriver_status_manager_v1 *status_manager_;
struct zriver_control_v1 *control_;
struct wl_seat *seat_;
private:
const waybar::Bar &bar_;
Gtk::Box box_;
std::vector<Gtk::Button> buttons_;
struct zriver_output_status_v1 *output_status_;
};
} /* namespace waybar::modules::river */

View File

@ -0,0 +1,33 @@
#pragma once
#include <gtkmm/button.h>
#include <wayland-client.h>
#include "ALabel.hpp"
#include "bar.hpp"
#include "river-status-unstable-v1-client-protocol.h"
#include "xdg-output-unstable-v1-client-protocol.h"
namespace waybar::modules::river {
class Window : public waybar::ALabel {
public:
Window(const std::string &, const waybar::Bar &, const Json::Value &);
virtual ~Window();
// Handlers for wayland events
void handle_focused_view(const char *title);
void handle_focused_output(struct wl_output *output);
void handle_unfocused_output(struct wl_output *output);
struct zriver_status_manager_v1 *status_manager_;
struct wl_seat *seat_;
private:
const waybar::Bar &bar_;
struct wl_output *output_; // stores the output this module belongs to
struct wl_output *focused_output_; // stores the currently focused output
struct zriver_seat_status_v1 *seat_status_;
};
} /* namespace waybar::modules::river */

View File

@ -0,0 +1,20 @@
#pragma once
#include <fmt/chrono.h>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Clock : public ALabel {
public:
Clock(const std::string&, const Json::Value&);
virtual ~Clock() = default;
auto update() -> void override;
private:
util::SleeperThread thread_;
};
} // namespace waybar::modules

32
include/modules/sndio.hpp Normal file
View File

@ -0,0 +1,32 @@
#pragma once
#include <sndio.h>
#include <vector>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Sndio : public ALabel {
public:
Sndio(const std::string &, const Json::Value &);
virtual ~Sndio();
auto update() -> void override;
auto set_desc(struct sioctl_desc *, unsigned int) -> void;
auto put_val(unsigned int, unsigned int) -> void;
bool handleScroll(GdkEventScroll *) override;
bool handleToggle(GdkEventButton *const &) override;
private:
auto connect_to_sndio() -> void;
util::SleeperThread thread_;
struct sioctl_hdl *hdl_;
std::vector<struct pollfd> pfds_;
unsigned int addr_;
unsigned int volume_, old_volume_, maxval_;
bool muted_;
};
} // namespace waybar::modules

View File

@ -0,0 +1,48 @@
#pragma once
#include <dbus-status-notifier-watcher.h>
#include <giomm.h>
#include <glibmm/refptr.h>
#include <json/json.h>
#include <tuple>
#include "bar.hpp"
#include "modules/sni/item.hpp"
namespace waybar::modules::SNI {
class Host {
public:
Host(const std::size_t id, const Json::Value&, const Bar&,
const std::function<void(std::unique_ptr<Item>&)>&,
const std::function<void(std::unique_ptr<Item>&)>&);
~Host();
private:
void busAcquired(const Glib::RefPtr<Gio::DBus::Connection>&, Glib::ustring);
void nameAppeared(const Glib::RefPtr<Gio::DBus::Connection>&, Glib::ustring,
const Glib::ustring&);
void nameVanished(const Glib::RefPtr<Gio::DBus::Connection>&, Glib::ustring);
static void proxyReady(GObject*, GAsyncResult*, gpointer);
static void registerHost(GObject*, GAsyncResult*, gpointer);
static void itemRegistered(SnWatcher*, const gchar*, gpointer);
static void itemUnregistered(SnWatcher*, const gchar*, gpointer);
std::tuple<std::string, std::string> getBusNameAndObjectPath(const std::string);
void addRegisteredItem(std::string service);
std::vector<std::unique_ptr<Item>> items_;
const std::string bus_name_;
const std::string object_path_;
std::size_t bus_name_id_;
std::size_t watcher_id_;
GCancellable* cancellable_ = nullptr;
SnWatcher* watcher_ = nullptr;
const Json::Value& config_;
const Bar& bar_;
const std::function<void(std::unique_ptr<Item>&)> on_add_;
const std::function<void(std::unique_ptr<Item>&)> on_remove_;
};
} // namespace waybar::modules::SNI

View File

@ -0,0 +1,92 @@
#pragma once
#include <dbus-status-notifier-item.h>
#include <giomm/dbusproxy.h>
#include <glibmm/refptr.h>
#include <gtkmm/eventbox.h>
#include <gtkmm/icontheme.h>
#include <gtkmm/image.h>
#include <gtkmm/menu.h>
#include <json/json.h>
#include <libdbusmenu-gtk/dbusmenu-gtk.h>
#include <sigc++/trackable.h>
#include <set>
#include <string_view>
#include "bar.hpp"
namespace waybar::modules::SNI {
struct ToolTip {
Glib::ustring icon_name;
Glib::ustring text;
};
class Item : public sigc::trackable {
public:
Item(const std::string&, const std::string&, const Json::Value&, const Bar&);
~Item() = default;
std::string bus_name;
std::string object_path;
int icon_size;
int effective_icon_size;
Gtk::Image image;
Gtk::EventBox event_box;
std::string category;
std::string id;
std::string title;
std::string icon_name;
Glib::RefPtr<Gdk::Pixbuf> icon_pixmap;
Glib::RefPtr<Gtk::IconTheme> icon_theme;
std::string overlay_icon_name;
std::string attention_icon_name;
std::string attention_movie_name;
std::string icon_theme_path;
std::string menu;
ToolTip tooltip;
DbusmenuGtkMenu* dbus_menu = nullptr;
Gtk::Menu* gtk_menu = nullptr;
/**
* ItemIsMenu flag means that the item only supports the context menu.
* Default value is true because libappindicator supports neither ItemIsMenu nor Activate method
* while compliant SNI implementation would always reset the flag to desired value.
*/
bool item_is_menu = true;
private:
void onConfigure(GdkEventConfigure* ev);
void proxyReady(Glib::RefPtr<Gio::AsyncResult>& result);
void setProperty(const Glib::ustring& name, Glib::VariantBase& value);
void setStatus(const Glib::ustring& value);
void getUpdatedProperties();
void processUpdatedProperties(Glib::RefPtr<Gio::AsyncResult>& result);
void onSignal(const Glib::ustring& sender_name, const Glib::ustring& signal_name,
const Glib::VariantContainerBase& arguments);
void updateImage();
Glib::RefPtr<Gdk::Pixbuf> extractPixBuf(GVariant* variant);
Glib::RefPtr<Gdk::Pixbuf> getIconPixbuf();
Glib::RefPtr<Gdk::Pixbuf> getIconByName(const std::string& name, int size);
double getScaledIconSize();
static void onMenuDestroyed(Item* self, GObject* old_menu_pointer);
void makeMenu();
bool handleClick(GdkEventButton* const& /*ev*/);
bool handleScroll(GdkEventScroll* const&);
// smooth scrolling threshold
gdouble scroll_threshold_ = 0;
gdouble distance_scrolled_x_ = 0;
gdouble distance_scrolled_y_ = 0;
// visibility of items with Status == Passive
bool show_passive_ = false;
Glib::RefPtr<Gio::DBus::Proxy> proxy_;
Glib::RefPtr<Gio::Cancellable> cancellable_;
std::set<std::string_view> update_pending_;
};
} // namespace waybar::modules::SNI

View File

@ -1,39 +0,0 @@
#pragma once
#include <gtkmm.h>
#include <tuple>
#include <dbus-status-notifier-watcher.h>
#include "modules/sni/sni.hpp"
namespace waybar::modules::SNI {
class Host {
public:
Host(Glib::Dispatcher*);
std::vector<Item> items;
private:
static void busAcquired(GDBusConnection*, const gchar*, gpointer);
static void nameAppeared(GDBusConnection*, const gchar*, const gchar*,
gpointer);
static void nameVanished(GDBusConnection*, const gchar*, gpointer);
static void proxyReady(GObject*, GAsyncResult*, gpointer);
static void registerHost(GObject*, GAsyncResult*, gpointer);
static void itemRegistered(SnOrgKdeStatusNotifierWatcher*, const gchar*,
gpointer);
static void itemUnregistered(SnOrgKdeStatusNotifierWatcher*, const gchar*,
gpointer);
std::tuple<std::string, std::string> getBusNameAndObjectPath(const gchar*);
void addRegisteredItem(const gchar* service);
uint32_t bus_name_id_;
uint32_t watcher_id_;
std::string bus_name_;
std::string object_path_;
Glib::Dispatcher* dp_;
GCancellable* cancellable_ = nullptr;
SnOrgKdeStatusNotifierWatcher* watcher_ = nullptr;
};
}

View File

@ -1,51 +0,0 @@
#pragma once
#include <dbus-status-notifier-item.h>
#include <gtkmm.h>
namespace waybar::modules::SNI {
class Item {
public:
Item(std::string, std::string, Glib::Dispatcher *);
std::string bus_name;
std::string object_path;
Gtk::EventBox event_box;
int icon_size;
int effective_icon_size;
Gtk::Image *image;
Gtk::Menu *gtk_menu = nullptr;
std::string category;
std::string id;
std::string status;
std::string title;
int32_t window_id;
std::string icon_name;
Glib::RefPtr<Gdk::Pixbuf> icon_pixmap;
std::string overlay_icon_name;
std::string attention_icon_name;
std::string attention_movie_name;
std::string icon_theme_path;
std::string menu;
bool item_is_menu;
private:
static void proxyReady(GObject *obj, GAsyncResult *res, gpointer data);
static void getAll(GObject *obj, GAsyncResult *res, gpointer data);
static void handleActivate(GObject *, GAsyncResult *, gpointer);
static void handleSecondaryActivate(GObject *, GAsyncResult *, gpointer);
void updateImage();
Glib::RefPtr<Gdk::Pixbuf> extractPixBuf(GVariant *variant);
Glib::RefPtr<Gdk::Pixbuf> getIconByName(std::string name, int size);
bool handleClick(GdkEventButton *const & /*ev*/);
Glib::Dispatcher *dp_;
GCancellable *cancellable_ = nullptr;
SnOrgKdeStatusNotifierItem *proxy_ = nullptr;
};
} // namespace waybar::modules::SNI

View File

@ -1,25 +1,29 @@
#pragma once
#include <fmt/format.h>
#include <thread>
#include "AModule.hpp"
#include "bar.hpp"
#include "modules/sni/host.hpp"
#include "modules/sni/watcher.hpp"
#include "util/json.hpp"
#include "IModule.hpp"
#include "modules/sni/snw.hpp"
#include "modules/sni/snh.hpp"
namespace waybar::modules::SNI {
class Tray : public IModule {
public:
Tray(const Json::Value&);
auto update() -> void;
operator Gtk::Widget &();
private:
std::thread thread_;
const Json::Value& config_;
Gtk::Box box_;
SNI::Watcher watcher_ ;
SNI::Host host_;
class Tray : public AModule {
public:
Tray(const std::string&, const Bar&, const Json::Value&);
virtual ~Tray() = default;
auto update() -> void override;
private:
void onAdd(std::unique_ptr<Item>& item);
void onRemove(std::unique_ptr<Item>& item);
static inline std::size_t nb_hosts_ = 0;
Gtk::Box box_;
SNI::Watcher::singleton watcher_;
SNI::Host host_;
};
}
} // namespace waybar::modules::SNI

View File

@ -1,16 +1,31 @@
#pragma once
#include <gtkmm.h>
#include <dbus-status-notifier-watcher.h>
#include <giomm.h>
#include <glibmm/refptr.h>
namespace waybar::modules::SNI {
class Watcher {
public:
private:
Watcher();
public:
~Watcher();
private:
using singleton = std::shared_ptr<Watcher>;
static singleton getInstance() {
static std::weak_ptr<Watcher> weak;
std::shared_ptr<Watcher> strong = weak.lock();
if (!strong) {
strong = std::shared_ptr<Watcher>(new Watcher());
weak = strong;
}
return strong;
}
private:
typedef enum { GF_WATCH_TYPE_HOST, GF_WATCH_TYPE_ITEM } GfWatchType;
typedef struct {
@ -22,26 +37,20 @@ private:
guint watch_id;
} GfWatch;
static void busAcquired(GDBusConnection *, const gchar *, gpointer);
static gboolean handleRegisterHost(Watcher *, GDBusMethodInvocation *,
const gchar *);
static gboolean handleRegisterItem(Watcher *, GDBusMethodInvocation *,
const gchar *);
static GfWatch *gfWatchFind(GSList *list, const gchar *bus_name,
const gchar *object_path);
static GfWatch *gfWatchNew(GfWatchType, const gchar *, const gchar *,
const gchar *, Watcher *);
static void nameVanished(GDBusConnection *connection, const char *name,
gpointer data);
void busAcquired(const Glib::RefPtr<Gio::DBus::Connection> &, Glib::ustring);
static gboolean handleRegisterHost(Watcher *, GDBusMethodInvocation *, const gchar *);
static gboolean handleRegisterItem(Watcher *, GDBusMethodInvocation *, const gchar *);
static GfWatch *gfWatchFind(GSList *list, const gchar *bus_name, const gchar *object_path);
static GfWatch *gfWatchNew(GfWatchType, const gchar *, const gchar *, const gchar *, Watcher *);
static void nameVanished(GDBusConnection *connection, const char *name, gpointer data);
static void gfWatchFree(gpointer data);
void updateRegisteredItems(SnOrgKdeStatusNotifierWatcher *obj);
void updateRegisteredItems(SnWatcher *obj);
uint32_t bus_name_id_;
uint32_t watcher_id_;
GSList *hosts_ = nullptr;
GSList *items_ = nullptr;
SnOrgKdeStatusNotifierWatcher *watcher_ = nullptr;
SnWatcher *watcher_ = nullptr;
};
} // namespace waybar::modules::SNI
} // namespace waybar::modules::SNI

View File

@ -0,0 +1,60 @@
#pragma once
#include <atomic>
#include <string>
#include "modules/sway/ipc/client.hpp"
#include "util/SafeSignal.hpp"
#include "util/json.hpp"
namespace waybar {
class Bar;
namespace modules::sway {
/*
* Supported subset of i3/sway IPC barconfig object
*/
struct swaybar_config {
std::string id;
std::string mode;
std::string hidden_state;
};
/**
* swaybar IPC client
*/
class BarIpcClient {
public:
BarIpcClient(waybar::Bar& bar);
private:
void onInitialConfig(const struct Ipc::ipc_response& res);
void onIpcEvent(const struct Ipc::ipc_response&);
void onCmd(const struct Ipc::ipc_response&);
void onConfigUpdate(const swaybar_config& config);
void onVisibilityUpdate(bool visible_by_modifier);
void onModeUpdate(bool visible_by_modifier);
void onUrgencyUpdate(bool visible_by_urgency);
void update();
bool isModuleEnabled(std::string name);
Bar& bar_;
util::JsonParser parser_;
Ipc ipc_;
swaybar_config bar_config_;
std::string modifier_reset_;
bool visible_by_mode_ = false;
bool visible_by_modifier_ = false;
bool visible_by_urgency_ = false;
std::atomic<bool> modifier_no_action_ = false;
SafeSignal<bool> signal_mode_;
SafeSignal<bool> signal_visible_;
SafeSignal<bool> signal_urgency_;
SafeSignal<swaybar_config> signal_config_;
};
} // namespace modules::sway
} // namespace waybar

View File

@ -1,41 +1,53 @@
#pragma once
#include <iostream>
#include <unistd.h>
#include <sigc++/sigc++.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
#include <cstring>
#include <memory>
#include <mutex>
#include <stdexcept>
#include <string>
#include "ipc.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules::sway {
class Ipc {
public:
Ipc();
~Ipc();
public:
Ipc();
~Ipc();
struct ipc_response {
uint32_t size;
uint32_t type;
std::string payload;
};
struct ipc_response {
uint32_t size;
uint32_t type;
std::string payload;
};
void connect();
struct ipc_response sendCmd(uint32_t type,
const std::string& payload = "") const;
void subscribe(const std::string& payload) const;
struct ipc_response handleEvent() const;
protected:
static inline const std::string ipc_magic_ = "i3-ipc";
static inline const size_t ipc_header_size_ = ipc_magic_.size() + 8;
sigc::signal<void, const struct ipc_response &> signal_event;
sigc::signal<void, const struct ipc_response &> signal_cmd;
const std::string getSocketPath() const;
int open(const std::string&) const;
struct ipc_response send(int fd, uint32_t type,
const std::string& payload = "") const;
struct ipc_response recv(int fd) const;
void sendCmd(uint32_t type, const std::string &payload = "");
void subscribe(const std::string &payload);
void handleEvent();
void setWorker(std::function<void()> &&func);
int fd_;
int fd_event_;
protected:
static inline const std::string ipc_magic_ = "i3-ipc";
static inline const size_t ipc_header_size_ = ipc_magic_.size() + 8;
const std::string getSocketPath() const;
int open(const std::string &) const;
struct ipc_response send(int fd, uint32_t type, const std::string &payload = "");
struct ipc_response recv(int fd);
int fd_;
int fd_event_;
std::mutex mutex_;
util::SleeperThread thread_;
};
}
} // namespace waybar::modules::sway

View File

@ -1,32 +1,38 @@
#pragma once
#include <cstdint>
#define event_mask(ev) (1u << (ev & 0x7F))
enum ipc_command_type {
// i3 command types - see i3's I3_REPLY_TYPE constants
IPC_COMMAND = 0,
IPC_GET_WORKSPACES = 1,
IPC_SUBSCRIBE = 2,
IPC_GET_OUTPUTS = 3,
IPC_GET_TREE = 4,
IPC_GET_MARKS = 5,
IPC_GET_BAR_CONFIG = 6,
IPC_GET_VERSION = 7,
IPC_GET_BINDING_MODES = 8,
IPC_GET_CONFIG = 9,
IPC_SEND_TICK = 10,
enum ipc_command_type : uint32_t {
// i3 command types - see i3's I3_REPLY_TYPE constants
IPC_COMMAND = 0,
IPC_GET_WORKSPACES = 1,
IPC_SUBSCRIBE = 2,
IPC_GET_OUTPUTS = 3,
IPC_GET_TREE = 4,
IPC_GET_MARKS = 5,
IPC_GET_BAR_CONFIG = 6,
IPC_GET_VERSION = 7,
IPC_GET_BINDING_MODES = 8,
IPC_GET_CONFIG = 9,
IPC_SEND_TICK = 10,
// sway-specific command types
IPC_GET_INPUTS = 100,
IPC_GET_SEATS = 101,
// sway-specific command types
IPC_GET_INPUTS = 100,
IPC_GET_SEATS = 101,
// Events sent from sway to clients. Events have the highest bits set.
IPC_EVENT_WORKSPACE = ((1<<31) | 0),
IPC_EVENT_OUTPUT = ((1<<31) | 1),
IPC_EVENT_MODE = ((1<<31) | 2),
IPC_EVENT_WINDOW = ((1<<31) | 3),
IPC_EVENT_BARCONFIG_UPDATE = ((1<<31) | 4),
IPC_EVENT_BINDING = ((1<<31) | 5),
IPC_EVENT_SHUTDOWN = ((1<<31) | 6),
IPC_EVENT_TICK = ((1<<31) | 7),
// Events sent from sway to clients. Events have the highest bits set.
IPC_EVENT_WORKSPACE = ((1U << 31) | 0),
IPC_EVENT_OUTPUT = ((1U << 31) | 1),
IPC_EVENT_MODE = ((1U << 31) | 2),
IPC_EVENT_WINDOW = ((1U << 31) | 3),
IPC_EVENT_BARCONFIG_UPDATE = ((1U << 31) | 4),
IPC_EVENT_BINDING = ((1U << 31) | 5),
IPC_EVENT_SHUTDOWN = ((1U << 31) | 6),
IPC_EVENT_TICK = ((1U << 31) | 7),
// sway-specific event types
IPC_EVENT_BAR_STATE_UPDATE = ((1U << 31) | 20),
IPC_EVENT_INPUT = ((1U << 31) | 21),
};

View File

@ -0,0 +1,67 @@
#pragma once
#include <fmt/format.h>
#include <xkbcommon/xkbregistry.h>
#include <map>
#include <string>
#include "ALabel.hpp"
#include "bar.hpp"
#include "client.hpp"
#include "modules/sway/ipc/client.hpp"
#include "util/json.hpp"
namespace waybar::modules::sway {
class Language : public ALabel, public sigc::trackable {
public:
Language(const std::string& id, const Json::Value& config);
virtual ~Language() = default;
auto update() -> void override;
private:
enum class DispayedShortFlag { None = 0, ShortName = 1, ShortDescription = 1 << 1 };
struct Layout {
std::string full_name;
std::string short_name;
std::string variant;
std::string short_description;
std::string country_flag() const;
};
class XKBContext {
public:
XKBContext();
~XKBContext();
auto next_layout() -> Layout*;
private:
rxkb_context* context_ = nullptr;
rxkb_layout* xkb_layout_ = nullptr;
Layout* layout_ = nullptr;
std::map<std::string, rxkb_layout*> base_layouts_by_name_;
};
void onEvent(const struct Ipc::ipc_response&);
void onCmd(const struct Ipc::ipc_response&);
auto set_current_layout(std::string current_layout) -> void;
auto init_layouts_map(const std::vector<std::string>& used_layouts) -> void;
const static std::string XKB_LAYOUT_NAMES_KEY;
const static std::string XKB_ACTIVE_LAYOUT_NAME_KEY;
Layout layout_;
std::string tooltip_format_ = "";
std::map<std::string, Layout> layouts_map_;
bool is_variant_displayed;
std::byte displayed_short_flag = static_cast<std::byte>(DispayedShortFlag::None);
util::JsonParser parser_;
std::mutex mutex_;
Ipc ipc_;
};
} // namespace waybar::modules::sway

View File

@ -0,0 +1,28 @@
#pragma once
#include <fmt/format.h>
#include "ALabel.hpp"
#include "bar.hpp"
#include "client.hpp"
#include "modules/sway/ipc/client.hpp"
#include "util/json.hpp"
namespace waybar::modules::sway {
class Mode : public ALabel, public sigc::trackable {
public:
Mode(const std::string&, const Json::Value&);
virtual ~Mode() = default;
auto update() -> void override;
private:
void onEvent(const struct Ipc::ipc_response&);
std::string mode_;
util::JsonParser parser_;
std::mutex mutex_;
Ipc ipc_;
};
} // namespace waybar::modules::sway

View File

@ -0,0 +1,35 @@
#pragma once
#include <gtkmm/label.h>
#include <mutex>
#include <string>
#include "ALabel.hpp"
#include "bar.hpp"
#include "client.hpp"
#include "modules/sway/ipc/client.hpp"
#include "util/json.hpp"
namespace waybar::modules::sway {
class Scratchpad : public ALabel {
public:
Scratchpad(const std::string&, const Json::Value&);
virtual ~Scratchpad() = default;
auto update() -> void override;
private:
auto getTree() -> void;
auto onCmd(const struct Ipc::ipc_response&) -> void;
auto onEvent(const struct Ipc::ipc_response&) -> void;
std::string tooltip_format_;
bool show_empty_;
bool tooltip_enabled_;
std::string tooltip_text_;
int count_;
std::mutex mutex_;
Ipc ipc_;
util::JsonParser parser_;
};
} // namespace waybar::modules::sway

View File

@ -1,31 +1,44 @@
#pragma once
#include <fmt/format.h>
#include <tuple>
#include "AAppIconLabel.hpp"
#include "bar.hpp"
#include "client.hpp"
#include "util/chrono.hpp"
#include "util/json.hpp"
#include "ALabel.hpp"
#include "modules/sway/ipc/client.hpp"
#include "util/json.hpp"
namespace waybar::modules::sway {
class Window : public ALabel {
public:
Window(waybar::Bar&, const Json::Value&);
auto update() -> void;
private:
void worker();
std::tuple<int, std::string> getFocusedNode(Json::Value nodes);
void getFocusedWindow();
class Window : public AAppIconLabel, public sigc::trackable {
public:
Window(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~Window() = default;
auto update() -> void override;
Bar& bar_;
waybar::util::SleeperThread thread_;
util::JsonParser parser_;
Ipc ipc_;
std::string window_;
int windowId_;
private:
void setClass(std::string classname, bool enable);
void onEvent(const struct Ipc::ipc_response&);
void onCmd(const struct Ipc::ipc_response&);
std::tuple<std::size_t, int, int, std::string, std::string, std::string, std::string, std::string>
getFocusedNode(const Json::Value& nodes, std::string& output);
void getTree();
const Bar& bar_;
std::string window_;
int windowId_;
std::string app_id_;
std::string app_class_;
std::string layout_;
std::string old_app_id_;
std::size_t app_nb_;
std::string shell_;
int floating_count_;
util::JsonParser parser_;
std::mutex mutex_;
Ipc ipc_;
};
}
} // namespace waybar::modules::sway

View File

@ -1,38 +1,53 @@
#pragma once
#include <fmt/format.h>
#include <gtkmm/button.h>
#include <gtkmm/label.h>
#include <string_view>
#include <unordered_map>
#include "AModule.hpp"
#include "bar.hpp"
#include "client.hpp"
#include "util/chrono.hpp"
#include "util/json.hpp"
#include "IModule.hpp"
#include "modules/sway/ipc/client.hpp"
#include "util/json.hpp"
namespace waybar::modules::sway {
class Workspaces : public IModule {
public:
Workspaces(waybar::Bar&, const Json::Value&);
auto update() -> void;
operator Gtk::Widget &();
private:
void worker();
void addWorkspace(Json::Value);
std::string getIcon(std::string, Json::Value);
bool handleScroll(GdkEventScroll*);
int getPrevWorkspace();
int getNextWorkspace();
class Workspaces : public AModule, public sigc::trackable {
public:
Workspaces(const std::string&, const waybar::Bar&, const Json::Value&);
virtual ~Workspaces() = default;
auto update() -> void override;
Bar& bar_;
const Json::Value& config_;
waybar::util::SleeperThread thread_;
Gtk::Box box_;
util::JsonParser parser_;
std::mutex mutex_;
bool scrolling_;
std::unordered_map<int, Gtk::Button> buttons_;
Json::Value workspaces_;
Ipc ipc_;
private:
static constexpr std::string_view workspace_switch_cmd_ = "workspace {} \"{}\"";
static constexpr std::string_view persistent_workspace_switch_cmd_ =
R"(workspace {} "{}"; move workspace to output "{}"; workspace {} "{}")";
static int convertWorkspaceNameToNum(std::string name);
void onCmd(const struct Ipc::ipc_response&);
void onEvent(const struct Ipc::ipc_response&);
bool filterButtons();
Gtk::Button& addButton(const Json::Value&);
void onButtonReady(const Json::Value&, Gtk::Button&);
std::string getIcon(const std::string&, const Json::Value&);
const std::string getCycleWorkspace(std::vector<Json::Value>::iterator, bool prev) const;
uint16_t getWorkspaceIndex(const std::string& name) const;
std::string trimWorkspaceName(std::string);
bool handleScroll(GdkEventScroll*) override;
const Bar& bar_;
std::vector<Json::Value> workspaces_;
std::vector<std::string> high_priority_named_;
std::vector<std::string> workspaces_order_;
Gtk::Box box_;
util::JsonParser parser_;
std::unordered_map<std::string, Gtk::Button> buttons_;
std::mutex mutex_;
Ipc ipc_;
};
}
} // namespace waybar::modules::sway

View File

@ -0,0 +1,26 @@
#pragma once
#include <fmt/format.h>
#include <fstream>
#include "ALabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class Temperature : public ALabel {
public:
Temperature(const std::string&, const Json::Value&);
virtual ~Temperature() = default;
auto update() -> void override;
private:
float getTemperature();
bool isCritical(uint16_t);
std::string file_path_;
util::SleeperThread thread_;
};
} // namespace waybar::modules

View File

@ -0,0 +1,80 @@
#pragma once
#include <libupower-glib/upower.h>
#include <iostream>
#include <map>
#include <string>
#include <unordered_map>
#include "ALabel.hpp"
#include "glibconfig.h"
#include "gtkmm/box.h"
#include "gtkmm/image.h"
#include "gtkmm/label.h"
#include "modules/upower/upower_tooltip.hpp"
namespace waybar::modules::upower {
class UPower : public AModule {
public:
UPower(const std::string &, const Json::Value &);
virtual ~UPower();
auto update() -> void override;
private:
typedef std::unordered_map<std::string, UpDevice *> Devices;
const std::string DEFAULT_FORMAT = "{percentage}";
const std::string DEFAULT_FORMAT_ALT = "{percentage} {time}";
static void deviceAdded_cb(UpClient *client, UpDevice *device, gpointer data);
static void deviceRemoved_cb(UpClient *client, const gchar *objectPath, gpointer data);
static void deviceNotify_cb(UpDevice *device, GParamSpec *pspec, gpointer user_data);
static void prepareForSleep_cb(GDBusConnection *system_bus, const gchar *sender_name,
const gchar *object_path, const gchar *interface_name,
const gchar *signal_name, GVariant *parameters,
gpointer user_data);
static void upowerAppear(GDBusConnection *conn, const gchar *name, const gchar *name_owner,
gpointer data);
static void upowerDisappear(GDBusConnection *connection, const gchar *name, gpointer user_data);
void removeDevice(const gchar *objectPath);
void addDevice(UpDevice *device);
void setDisplayDevice();
void resetDevices();
void removeDevices();
bool show_tooltip_callback(int, int, bool, const Glib::RefPtr<Gtk::Tooltip> &tooltip);
bool handleToggle(GdkEventButton *const &) override;
std::string timeToString(gint64 time);
const std::string getDeviceStatus(UpDeviceState &state);
Gtk::Box box_;
Gtk::Image icon_;
Gtk::Label label_;
// Config
bool hideIfEmpty = true;
bool tooltip_enabled = true;
uint tooltip_spacing = 4;
uint tooltip_padding = 4;
uint iconSize = 20;
std::string format = DEFAULT_FORMAT;
std::string format_alt = DEFAULT_FORMAT_ALT;
Devices devices;
std::mutex m_Mutex;
UpClient *client;
UpDevice *displayDevice;
guint login1_id;
GDBusConnection *login1_connection;
UPowerTooltip *upower_tooltip;
std::string lastStatus;
bool showAltText;
bool upowerRunning;
guint upowerWatcher_id;
std::string nativePath_;
};
} // namespace waybar::modules::upower

View File

@ -0,0 +1,32 @@
#pragma once
#include <libupower-glib/upower.h>
#include <unordered_map>
#include "gtkmm/box.h"
#include "gtkmm/label.h"
#include "gtkmm/window.h"
namespace waybar::modules::upower {
class UPowerTooltip : public Gtk::Window {
private:
typedef std::unordered_map<std::string, UpDevice*> Devices;
const std::string getDeviceIcon(UpDeviceKind& kind);
Gtk::Box* contentBox;
uint iconSize;
uint tooltipSpacing;
uint tooltipPadding;
public:
UPowerTooltip(uint iconSize, uint tooltipSpacing, uint tooltipPadding);
virtual ~UPowerTooltip();
uint updateTooltip(Devices& devices);
};
} // namespace waybar::modules::upower

34
include/modules/user.hpp Normal file
View File

@ -0,0 +1,34 @@
#pragma once
#include <fmt/chrono.h>
#include <gdkmm/pixbuf.h>
#include <glibmm/refptr.h>
#include "AIconLabel.hpp"
#include "util/sleeper_thread.hpp"
namespace waybar::modules {
class User : public AIconLabel {
public:
User(const std::string&, const Json::Value&);
virtual ~User() = default;
auto update() -> void override;
bool handleToggle(GdkEventButton* const& e) override;
private:
util::SleeperThread thread_;
static constexpr inline int defaultUserImageWidth_ = 20;
static constexpr inline int defaultUserImageHeight_ = 20;
long uptime_as_seconds();
std::string get_user_login() const;
std::string get_user_home_dir() const;
std::string get_default_user_avatar_path() const;
void init_default_user_avatar(int width, int height);
void init_user_avatar(const std::string& path, int width, int height);
void init_avatar(const Json::Value& config);
void init_update_worker();
};
} // namespace waybar::modules

View File

@ -0,0 +1,46 @@
#pragma once
#include <fmt/format.h>
#include <wp/wp.h>
#include <algorithm>
#include <array>
#include "ALabel.hpp"
namespace waybar::modules {
class Wireplumber : public ALabel {
public:
Wireplumber(const std::string&, const Json::Value&);
virtual ~Wireplumber();
auto update() -> void override;
private:
void loadRequiredApiModules();
void prepare();
void activatePlugins();
static void updateVolume(waybar::modules::Wireplumber* self, uint32_t id);
static void updateNodeName(waybar::modules::Wireplumber* self, uint32_t id);
static void onPluginActivated(WpObject* p, GAsyncResult* res, waybar::modules::Wireplumber* self);
static void onObjectManagerInstalled(waybar::modules::Wireplumber* self);
static void onMixerChanged(waybar::modules::Wireplumber* self, uint32_t id);
static void onDefaultNodesApiChanged(waybar::modules::Wireplumber* self);
bool handleScroll(GdkEventScroll* e) override;
WpCore* wp_core_;
GPtrArray* apis_;
WpObjectManager* om_;
WpPlugin* mixer_api_;
WpPlugin* def_nodes_api_;
gchar* default_node_name_;
uint32_t pending_plugins_;
bool muted_;
double volume_;
double min_step_;
uint32_t node_id_{0};
std::string node_name_;
};
} // namespace waybar::modules

View File

@ -0,0 +1,179 @@
#pragma once
#include <gdk/gdk.h>
#include <glibmm/refptr.h>
#include <gtkmm/box.h>
#include <gtkmm/button.h>
#include <gtkmm/icontheme.h>
#include <gtkmm/image.h>
#include <gtkmm/label.h>
#include <wayland-client.h>
#include <map>
#include <memory>
#include <string>
#include <unordered_set>
#include <vector>
#include "AModule.hpp"
#include "bar.hpp"
#include "client.hpp"
#include "giomm/desktopappinfo.h"
#include "util/json.hpp"
#include "wlr-foreign-toplevel-management-unstable-v1-client-protocol.h"
namespace waybar::modules::wlr {
class Taskbar;
class Task {
public:
Task(const waybar::Bar &, const Json::Value &, Taskbar *,
struct zwlr_foreign_toplevel_handle_v1 *, struct wl_seat *);
~Task();
public:
enum State {
MAXIMIZED = (1 << 0),
MINIMIZED = (1 << 1),
ACTIVE = (1 << 2),
FULLSCREEN = (1 << 3),
INVALID = (1 << 4)
};
// made public so TaskBar can reorder based on configuration.
Gtk::Button button;
private:
static uint32_t global_id;
private:
const waybar::Bar &bar_;
const Json::Value &config_;
Taskbar *tbar_;
struct zwlr_foreign_toplevel_handle_v1 *handle_;
struct wl_seat *seat_;
uint32_t id_;
Gtk::Box content_;
Gtk::Image icon_;
Gtk::Label text_before_;
Gtk::Label text_after_;
Glib::RefPtr<Gio::DesktopAppInfo> app_info_;
bool button_visible_ = false;
bool ignored_ = false;
bool with_icon_ = false;
bool with_name_ = false;
std::string format_before_;
std::string format_after_;
std::string format_tooltip_;
std::string name_;
std::string title_;
std::string app_id_;
uint32_t state_ = 0;
int32_t drag_start_x;
int32_t drag_start_y;
int32_t drag_start_button = -1;
private:
std::string repr() const;
std::string state_string(bool = false) const;
void set_app_info_from_app_id_list(const std::string &app_id_list);
bool image_load_icon(Gtk::Image &image, const Glib::RefPtr<Gtk::IconTheme> &icon_theme,
Glib::RefPtr<Gio::DesktopAppInfo> app_info, int size);
void hide_if_ignored();
public:
/* Getter functions */
uint32_t id() const { return id_; }
std::string title() const { return title_; }
std::string app_id() const { return app_id_; }
uint32_t state() const { return state_; }
bool maximized() const { return state_ & MAXIMIZED; }
bool minimized() const { return state_ & MINIMIZED; }
bool active() const { return state_ & ACTIVE; }
bool fullscreen() const { return state_ & FULLSCREEN; }
public:
/* Callbacks for the wlr protocol */
void handle_title(const char *);
void handle_app_id(const char *);
void handle_output_enter(struct wl_output *);
void handle_output_leave(struct wl_output *);
void handle_state(struct wl_array *);
void handle_done();
void handle_closed();
/* Callbacks for Gtk events */
bool handle_clicked(GdkEventButton *);
bool handle_button_release(GdkEventButton *);
bool handle_motion_notify(GdkEventMotion *);
void handle_drag_data_get(const Glib::RefPtr<Gdk::DragContext> &context,
Gtk::SelectionData &selection_data, guint info, guint time);
void handle_drag_data_received(const Glib::RefPtr<Gdk::DragContext> &context, int x, int y,
Gtk::SelectionData selection_data, guint info, guint time);
public:
bool operator==(const Task &) const;
bool operator!=(const Task &) const;
public:
void update();
public:
/* Interaction with the tasks */
void maximize(bool);
void minimize(bool);
void activate();
void fullscreen(bool);
void close();
};
using TaskPtr = std::unique_ptr<Task>;
class Taskbar : public waybar::AModule {
public:
Taskbar(const std::string &, const waybar::Bar &, const Json::Value &);
~Taskbar();
void update();
private:
const waybar::Bar &bar_;
Gtk::Box box_;
std::vector<TaskPtr> tasks_;
std::vector<Glib::RefPtr<Gtk::IconTheme>> icon_themes_;
std::unordered_set<std::string> ignore_list_;
std::map<std::string, std::string> app_ids_replace_map_;
struct zwlr_foreign_toplevel_manager_v1 *manager_;
struct wl_seat *seat_;
public:
/* Callbacks for global registration */
void register_manager(struct wl_registry *, uint32_t name, uint32_t version);
void register_seat(struct wl_registry *, uint32_t name, uint32_t version);
/* Callbacks for the wlr protocol */
void handle_toplevel_create(struct zwlr_foreign_toplevel_handle_v1 *);
void handle_finished();
public:
void add_button(Gtk::Button &);
void move_button(Gtk::Button &, int);
void remove_button(Gtk::Button &);
void remove_task(uint32_t);
bool show_output(struct wl_output *) const;
bool all_outputs() const;
const std::vector<Glib::RefPtr<Gtk::IconTheme>> &icon_themes() const;
const std::unordered_set<std::string> &ignore_list() const;
const std::map<std::string, std::string> &app_ids_replace_map() const;
};
} /* namespace waybar::modules::wlr */

View File

@ -0,0 +1,172 @@
#pragma once
#include <fmt/format.h>
#include <gtkmm/button.h>
#include <gtkmm/image.h>
#include <gtkmm/label.h>
#include <functional>
#include <map>
#include <memory>
#include <vector>
#include "AModule.hpp"
#include "bar.hpp"
#include "ext-workspace-unstable-v1-client-protocol.h"
namespace waybar::modules::wlr {
class WorkspaceManager;
class WorkspaceGroup;
class Workspace {
public:
Workspace(const waybar::Bar &bar, const Json::Value &config, WorkspaceGroup &workspace_group,
zext_workspace_handle_v1 *workspace, uint32_t id, std::string name);
~Workspace();
auto update() -> void;
auto id() const -> uint32_t { return id_; }
auto is_active() const -> bool { return state_ & static_cast<uint32_t>(State::ACTIVE); }
auto is_urgent() const -> bool { return state_ & static_cast<uint32_t>(State::URGENT); }
auto is_hidden() const -> bool { return state_ & static_cast<uint32_t>(State::HIDDEN); }
auto is_empty() const -> bool { return state_ & static_cast<uint32_t>(State::EMPTY); }
auto is_persistent() const -> bool { return persistent_; }
// wlr stuff
auto handle_name(const std::string &name) -> void;
auto handle_coordinates(const std::vector<uint32_t> &coordinates) -> void;
auto handle_state(const std::vector<uint32_t> &state) -> void;
auto handle_remove() -> void;
auto make_persistent() -> void;
auto handle_duplicate() -> void;
auto handle_done() -> void;
auto handle_clicked(GdkEventButton *bt) -> bool;
auto show() -> void;
auto hide() -> void;
auto get_button_ref() -> Gtk::Button & { return button_; }
auto get_name() -> std::string & { return name_; }
auto get_coords() -> std::vector<uint32_t> & { return coordinates_; }
enum class State {
ACTIVE = (1 << 0),
URGENT = (1 << 1),
HIDDEN = (1 << 2),
EMPTY = (1 << 3),
};
private:
auto get_icon() -> std::string;
const Bar &bar_;
const Json::Value &config_;
WorkspaceGroup &workspace_group_;
// wlr stuff
zext_workspace_handle_v1 *workspace_handle_;
uint32_t state_ = 0;
uint32_t id_;
std::string name_;
std::vector<uint32_t> coordinates_;
static std::map<std::string, std::string> icons_map_;
std::string format_;
bool with_icon_ = false;
bool persistent_ = false;
Gtk::Button button_;
Gtk::Box content_;
Gtk::Label label_;
};
class WorkspaceGroup {
public:
WorkspaceGroup(const waybar::Bar &bar, Gtk::Box &box, const Json::Value &config,
WorkspaceManager &manager, zext_workspace_group_handle_v1 *workspace_group_handle,
uint32_t id);
~WorkspaceGroup();
auto update() -> void;
auto id() const -> uint32_t { return id_; }
auto is_visible() const -> bool;
auto remove_workspace(uint32_t id_) -> void;
auto active_only() const -> bool;
auto creation_delayed() const -> bool;
auto workspaces() -> std::vector<std::unique_ptr<Workspace>> & { return workspaces_; }
auto persistent_workspaces() -> std::vector<std::string> & { return persistent_workspaces_; }
auto sort_workspaces() -> void;
auto set_need_to_sort() -> void { need_to_sort = true; }
auto add_button(Gtk::Button &button) -> void;
auto remove_button(Gtk::Button &button) -> void;
auto fill_persistent_workspaces() -> void;
auto create_persistent_workspaces() -> void;
// wlr stuff
auto handle_workspace_create(zext_workspace_handle_v1 *workspace_handle) -> void;
auto handle_remove() -> void;
auto handle_output_enter(wl_output *output) -> void;
auto handle_output_leave() -> void;
auto handle_done() -> void;
auto commit() -> void;
private:
static uint32_t workspace_global_id;
const waybar::Bar &bar_;
Gtk::Box &box_;
const Json::Value &config_;
WorkspaceManager &workspace_manager_;
// wlr stuff
zext_workspace_group_handle_v1 *workspace_group_handle_;
wl_output *output_ = nullptr;
uint32_t id_;
std::vector<std::unique_ptr<Workspace>> workspaces_;
bool need_to_sort = false;
std::vector<std::string> persistent_workspaces_;
bool persistent_created_ = false;
};
class WorkspaceManager : public AModule {
public:
WorkspaceManager(const std::string &id, const waybar::Bar &bar, const Json::Value &config);
~WorkspaceManager() override;
auto update() -> void override;
auto all_outputs() const -> bool { return all_outputs_; }
auto active_only() const -> bool { return active_only_; }
auto workspace_comparator() const
-> std::function<bool(std::unique_ptr<Workspace> &, std::unique_ptr<Workspace> &)>;
auto creation_delayed() const -> bool { return creation_delayed_; }
auto sort_workspaces() -> void;
auto remove_workspace_group(uint32_t id_) -> void;
// wlr stuff
auto register_manager(wl_registry *registry, uint32_t name, uint32_t version) -> void;
auto handle_workspace_group_create(zext_workspace_group_handle_v1 *workspace_group_handle)
-> void;
auto handle_done() -> void;
auto handle_finished() -> void;
auto commit() -> void;
private:
const waybar::Bar &bar_;
Gtk::Box box_;
std::vector<std::unique_ptr<WorkspaceGroup>> groups_;
// wlr stuff
zext_workspace_manager_v1 *workspace_manager_ = nullptr;
static uint32_t group_global_id;
bool sort_by_name_ = true;
bool sort_by_coordinates_ = true;
bool sort_by_number_ = false;
bool all_outputs_ = false;
bool active_only_ = false;
bool creation_delayed_ = false;
};
} // namespace waybar::modules::wlr

View File

@ -0,0 +1,10 @@
#include "ext-workspace-unstable-v1-client-protocol.h"
namespace waybar::modules::wlr {
void add_registry_listener(void *data);
void add_workspace_listener(zext_workspace_handle_v1 *workspace_handle, void *data);
void add_workspace_group_listener(zext_workspace_group_handle_v1 *workspace_group_handle,
void *data);
zext_workspace_manager_v1 *workspace_manager_bind(wl_registry *registry, uint32_t name,
uint32_t version, void *data);
} // namespace waybar::modules::wlr

View File

@ -0,0 +1,75 @@
#pragma once
#include <glibmm/dispatcher.h>
#include <sigc++/signal.h>
#include <functional>
#include <mutex>
#include <queue>
#include <thread>
#include <tuple>
#include <type_traits>
#include <utility>
namespace waybar {
/**
* Thread-safe signal wrapper.
* Uses Glib::Dispatcher to pass events to another thread and locked queue to pass the arguments.
*/
template <typename... Args>
struct SafeSignal : sigc::signal<void(std::decay_t<Args>...)> {
public:
SafeSignal() { dp_.connect(sigc::mem_fun(*this, &SafeSignal::handle_event)); }
template <typename... EmitArgs>
void emit(EmitArgs&&... args) {
if (main_tid_ == std::this_thread::get_id()) {
/*
* Bypass the queue if the method is called the main thread.
* Ensures that events emitted from the main thread are processed synchronously and saves a
* few CPU cycles on locking/queuing.
* As a downside, this makes main thread events prioritized over the other threads and
* disrupts chronological order.
*/
signal_t::emit(std::forward<EmitArgs>(args)...);
} else {
{
std::unique_lock lock(mutex_);
queue_.emplace(std::forward<EmitArgs>(args)...);
}
dp_.emit();
}
}
template <typename... EmitArgs>
inline void operator()(EmitArgs&&... args) {
emit(std::forward<EmitArgs>(args)...);
}
protected:
using signal_t = sigc::signal<void(std::decay_t<Args>...)>;
using slot_t = decltype(std::declval<signal_t>().make_slot());
using arg_tuple_t = std::tuple<std::decay_t<Args>...>;
// ensure that unwrapped methods are not accessible
using signal_t::emit_reverse;
using signal_t::make_slot;
void handle_event() {
for (std::unique_lock lock(mutex_); !queue_.empty(); lock.lock()) {
auto args = queue_.front();
queue_.pop();
lock.unlock();
std::apply(cached_fn_, args);
}
}
Glib::Dispatcher dp_;
std::mutex mutex_;
std::queue<arg_tuple_t> queue_;
const std::thread::id main_tid_ = std::this_thread::get_id();
// cache functor for signal emission to avoid recreating it on each event
const slot_t cached_fn_ = make_slot();
};
} // namespace waybar

View File

@ -1,94 +0,0 @@
#pragma once
#include <chrono>
#include <ctime>
#include <functional>
#include <condition_variable>
#include <thread>
#include <gtkmm.h>
namespace waybar::chrono {
using namespace std::chrono;
using clock = std::chrono::system_clock;
using duration = clock::duration;
using time_point = std::chrono::time_point<clock, duration>;
}
namespace waybar::util {
struct SleeperThread {
SleeperThread() = default;
SleeperThread(std::function<void()> func)
: thread_{[this, func] {
while(true) {
{
std::lock_guard<std::mutex> lock(mutex_);
if (!do_run_) {
break;
}
}
func();
}
}}
{}
SleeperThread& operator=(std::function<void()> func)
{
thread_ = std::thread([this, func] {
while(true) {
{
std::lock_guard<std::mutex> lock(mutex_);
if (!do_run_) {
break;
}
}
func();
}
});
return *this;
}
auto sleep_for(chrono::duration dur)
{
auto lock = std::unique_lock(mutex_);
return condvar_.wait_for(lock, dur);
}
auto sleep_until(chrono::time_point time)
{
auto lock = std::unique_lock(mutex_);
return condvar_.wait_until(lock, time);
}
auto wake_up()
{
condvar_.notify_all();
}
auto stop()
{
do_run_ = false;
condvar_.notify_all();
if (thread_.joinable()) {
thread_.detach();
}
}
~SleeperThread()
{
stop();
}
private:
std::thread thread_;
std::condition_variable condvar_;
std::mutex mutex_;
bool do_run_ = true;
};
}

1181
include/util/clara.hpp Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,22 @@
#pragma once
#include <fcntl.h>
#include <giomm.h>
#include <spdlog/spdlog.h>
#include <sys/wait.h>
#include <unistd.h>
#ifdef __linux__
#include <sys/prctl.h>
#endif
#ifdef __FreeBSD__
#include <sys/procctl.h>
#endif
#include <array>
extern std::mutex reap_mtx;
extern std::list<pid_t> reap;
namespace waybar::util::command {
@ -9,13 +25,7 @@ struct res {
std::string out;
};
inline struct res exec(const std::string cmd)
{
FILE* fp(popen(cmd.c_str(), "r"));
if (!fp) {
return { -1, "" };
}
inline std::string read(FILE* fp) {
std::array<char, 128> buffer = {0};
std::string output;
while (feof(fp) == 0) {
@ -25,11 +35,135 @@ inline struct res exec(const std::string cmd)
}
// Remove last newline
if (!output.empty() && output[output.length()-1] == '\n') {
output.erase(output.length()-1);
if (!output.empty() && output[output.length() - 1] == '\n') {
output.erase(output.length() - 1);
}
int exit_code = WEXITSTATUS(pclose(fp));
return { exit_code, output };
return output;
}
inline int close(FILE* fp, pid_t pid) {
int stat = -1;
pid_t ret;
fclose(fp);
do {
ret = waitpid(pid, &stat, WCONTINUED | WUNTRACED);
if (WIFEXITED(stat)) {
spdlog::debug("Cmd exited with code {}", WEXITSTATUS(stat));
} else if (WIFSIGNALED(stat)) {
spdlog::debug("Cmd killed by {}", WTERMSIG(stat));
} else if (WIFSTOPPED(stat)) {
spdlog::debug("Cmd stopped by {}", WSTOPSIG(stat));
} else if (WIFCONTINUED(stat)) {
spdlog::debug("Cmd continued");
} else if (ret == -1) {
spdlog::debug("waitpid failed: {}", strerror(errno));
} else {
break;
}
} while (!WIFEXITED(stat) && !WIFSIGNALED(stat));
return stat;
}
inline FILE* open(const std::string& cmd, int& pid) {
if (cmd == "") return nullptr;
int fd[2];
// Open the pipe with the close-on-exec flag set, so it will not be inherited
// by any other subprocesses launched by other threads (which could result in
// the pipe staying open after this child dies, causing us to hang when trying
// to read from it)
if (pipe2(fd, O_CLOEXEC) != 0) {
spdlog::error("Unable to pipe fd");
return nullptr;
}
pid_t child_pid = fork();
if (child_pid < 0) {
spdlog::error("Unable to exec cmd {}, error {}", cmd.c_str(), strerror(errno));
::close(fd[0]);
::close(fd[1]);
return nullptr;
}
if (!child_pid) {
int err;
sigset_t mask;
sigfillset(&mask);
// Reset sigmask
err = pthread_sigmask(SIG_UNBLOCK, &mask, nullptr);
if (err != 0) spdlog::error("pthread_sigmask in open failed: {}", strerror(err));
// Kill child if Waybar exits
int deathsig = SIGTERM;
#ifdef __linux__
if (prctl(PR_SET_PDEATHSIG, deathsig) != 0) {
spdlog::error("prctl(PR_SET_PDEATHSIG) in open failed: {}", strerror(errno));
}
#endif
#ifdef __FreeBSD__
if (procctl(P_PID, 0, PROC_PDEATHSIG_CTL, reinterpret_cast<void*>(&deathsig)) == -1) {
spdlog::error("procctl(PROC_PDEATHSIG_CTL) in open failed: {}", strerror(errno));
}
#endif
::close(fd[0]);
dup2(fd[1], 1);
setpgid(child_pid, child_pid);
execlp("/bin/sh", "sh", "-c", cmd.c_str(), (char*)0);
exit(0);
} else {
::close(fd[1]);
}
pid = child_pid;
return fdopen(fd[0], "r");
}
inline struct res exec(const std::string& cmd) {
int pid;
auto fp = command::open(cmd, pid);
if (!fp) return {-1, ""};
auto output = command::read(fp);
auto stat = command::close(fp, pid);
return {WEXITSTATUS(stat), output};
}
inline struct res execNoRead(const std::string& cmd) {
int pid;
auto fp = command::open(cmd, pid);
if (!fp) return {-1, ""};
auto stat = command::close(fp, pid);
return {WEXITSTATUS(stat), ""};
}
inline int32_t forkExec(const std::string& cmd) {
if (cmd == "") return -1;
pid_t pid = fork();
if (pid < 0) {
spdlog::error("Unable to exec cmd {}, error {}", cmd.c_str(), strerror(errno));
return pid;
}
// Child executes the command
if (!pid) {
int err;
sigset_t mask;
sigfillset(&mask);
// Reset sigmask
err = pthread_sigmask(SIG_UNBLOCK, &mask, nullptr);
if (err != 0) spdlog::error("pthread_sigmask in forkExec failed: {}", strerror(err));
setpgid(pid, pid);
execl("/bin/sh", "sh", "-c", cmd.c_str(), (char*)0);
exit(0);
} else {
reap_mtx.lock();
reap.push_back(pid);
reap_mtx.unlock();
spdlog::debug("Added child to reap list: {}", pid);
}
return pid;
}
} // namespace waybar::util::command

60
include/util/date.hpp Normal file
View File

@ -0,0 +1,60 @@
#pragma once
#include <fmt/format.h>
#if HAVE_CHRONO_TIMEZONES
#include <chrono>
#include <format>
/* Compatibility layer for <date/tz.h> on top of C++20 <chrono> */
namespace date {
using namespace std::chrono;
namespace literals {
using std::chrono::last;
}
inline auto format(const std::string& spec, const auto& ztime) {
return spec.empty() ? "" : std::vformat("{:L" + spec + "}", std::make_format_args(ztime));
}
inline auto format(const std::locale& loc, const std::string& spec, const auto& ztime) {
return spec.empty() ? "" : std::vformat(loc, "{:L" + spec + "}", std::make_format_args(ztime));
}
} // namespace date
#else
#include <date/tz.h>
#endif
template <typename Duration, typename TimeZonePtr>
struct fmt::formatter<date::zoned_time<Duration, TimeZonePtr>> {
std::string_view specs;
template <typename ParseContext>
constexpr auto parse(ParseContext& ctx) -> decltype(ctx.begin()) {
auto it = ctx.begin();
if (it != ctx.end() && *it == ':') {
++it;
}
auto end = it;
while (end != ctx.end() && *end != '}') {
++end;
}
if (end != it) {
specs = {it, std::string_view::size_type(end - it)};
}
return end;
}
template <typename FormatContext>
auto format(const date::zoned_time<Duration, TimeZonePtr>& ztime, FormatContext& ctx) {
if (ctx.locale()) {
const auto loc = ctx.locale().template get<std::locale>();
return fmt::format_to(ctx.out(), "{}", date::format(loc, fmt::to_string(specs), ztime));
}
return fmt::format_to(ctx.out(), "{}", date::format(fmt::to_string(specs), ztime));
}
};

99
include/util/format.hpp Normal file
View File

@ -0,0 +1,99 @@
#pragma once
#include <fmt/format.h>
#include <glibmm/ustring.h>
class pow_format {
public:
pow_format(long long val, std::string&& unit, bool binary = false)
: val_(val), unit_(unit), binary_(binary){};
long long val_;
std::string unit_;
bool binary_;
};
namespace fmt {
template <>
struct formatter<pow_format> {
char spec = 0;
int width = 0;
template <typename ParseContext>
constexpr auto parse(ParseContext& ctx) -> decltype(ctx.begin()) {
auto it = ctx.begin(), end = ctx.end();
if (it != end && *it == ':') ++it;
if (it && (*it == '>' || *it == '<' || *it == '=')) {
spec = *it;
++it;
}
if (it == end || *it == '}') return it;
if ('0' <= *it && *it <= '9') {
// We ignore it for now, but keep it for compatibility with
// existing configs where the format for pow_format'ed numbers was
// 'string' and specifications such as {:>9} were valid.
// The rationale for ignoring it is that the only reason to specify
// an alignment and a with is to get a fixed width bar, and ">" is
// sufficient in this implementation.
#if FMT_VERSION < 80000
width = parse_nonnegative_int(it, end, ctx);
#else
width = detail::parse_nonnegative_int(it, end, -1);
#endif
}
return it;
}
template <class FormatContext>
auto format(const pow_format& s, FormatContext& ctx) -> decltype(ctx.out()) {
const char* units[] = {"", "k", "M", "G", "T", "P", nullptr};
auto base = s.binary_ ? 1024ull : 1000ll;
auto fraction = (double)s.val_;
int pow;
for (pow = 0; units[pow + 1] != nullptr && fraction / base >= 1; ++pow) {
fraction /= base;
}
auto number_width = 5 // coeff in {:.1f} format
+ s.binary_; // potential 4th digit before the decimal point
auto max_width = number_width + 1 // prefix from units array
+ s.binary_ // for the 'i' in GiB.
+ s.unit_.length();
const char* format;
std::string string;
switch (spec) {
case '>':
return fmt::format_to(ctx.out(), "{:>{}}", fmt::format("{}", s), max_width);
case '<':
return fmt::format_to(ctx.out(), "{:<{}}", fmt::format("{}", s), max_width);
case '=':
format = "{coefficient:<{number_width}.1f}{padding}{prefix}{unit}";
break;
case 0:
default:
format = "{coefficient:.1f}{prefix}{unit}";
break;
}
return fmt::format_to(
ctx.out(), fmt::runtime(format), fmt::arg("coefficient", fraction),
fmt::arg("number_width", number_width),
fmt::arg("prefix", std::string() + units[pow] + ((s.binary_ && pow) ? "i" : "")),
fmt::arg("unit", s.unit_),
fmt::arg("padding", pow ? ""
: s.binary_ ? " "
: " "));
}
};
// Glib ustirng support
template <>
struct formatter<Glib::ustring> : formatter<std::string> {
template <typename FormatContext>
auto format(const Glib::ustring& value, FormatContext& ctx) {
return formatter<std::string>::format(static_cast<std::string>(value), ctx);
}
};
} // namespace fmt

14
include/util/gtk_icon.hpp Normal file
View File

@ -0,0 +1,14 @@
#pragma once
#include <gtkmm/icontheme.h>
#include <mutex>
#include <string>
class DefaultGtkIconThemeWrapper {
private:
static std::mutex default_theme_mutex;
public:
static bool has_icon(const std::string&);
static Glib::RefPtr<Gdk::Pixbuf> load_icon(const char*, int, Gtk::IconLookupFlags);
};

View File

@ -1,31 +1,36 @@
#pragma once
#include <fmt/ostream.h>
#include <json/json.h>
#if (FMT_VERSION >= 90000)
template <>
struct fmt::formatter<Json::Value> : ostream_formatter {};
#endif
namespace waybar::util {
struct JsonParser {
JsonParser() {}
JsonParser()
: reader_(builder_.newCharReader())
{}
const Json::Value parse(const std::string data) const
{
Json::Value root;
const Json::Value parse(const std::string& data) const {
Json::Value root(Json::objectValue);
if (data.empty()) {
return root;
}
std::unique_ptr<Json::CharReader> const reader(builder_.newCharReader());
std::string err;
bool res =
reader_->parse(data.c_str(), data.c_str() + data.size(), &root, &err);
if (!res)
throw std::runtime_error(err);
bool res = reader->parse(data.c_str(), data.c_str() + data.size(), &root, &err);
if (!res) throw std::runtime_error(err);
return root;
}
~JsonParser() = default;
private:
private:
Json::CharReaderBuilder builder_;
std::unique_ptr<Json::CharReader> const reader_;
};
}
} // namespace waybar::util

View File

@ -0,0 +1,9 @@
#pragma once
#include "SafeSignal.hpp"
namespace waybar::util {
// Get a signal emited with value true when entering sleep, and false when exiting
SafeSignal<bool>& prepare_for_sleep();
} // namespace waybar::util

View File

@ -0,0 +1,8 @@
#pragma once
#include <json/json.h>
#include <string>
namespace waybar::util {
std::string rewriteString(const std::string&, const Json::Value&);
}

26
include/util/rfkill.hpp Normal file
View File

@ -0,0 +1,26 @@
#pragma once
#include <glibmm/iochannel.h>
#include <linux/rfkill.h>
#include <sigc++/signal.h>
#include <sigc++/trackable.h>
namespace waybar::util {
class Rfkill : public sigc::trackable {
public:
Rfkill(enum rfkill_type rfkill_type);
~Rfkill();
bool getState() const;
sigc::signal<void(struct rfkill_event&)> on_update;
private:
enum rfkill_type rfkill_type_;
bool state_ = false;
int fd_ = -1;
bool on_event(Glib::IOCondition cond);
};
} // namespace waybar::util

View File

@ -0,0 +1,6 @@
#pragma once
#include <string>
namespace waybar::util {
std::string sanitize_string(std::string str);
} // namespace waybar::util

View File

@ -0,0 +1,114 @@
#pragma once
#include <chrono>
#include <condition_variable>
#include <ctime>
#include <functional>
#include <thread>
#include "prepare_for_sleep.h"
namespace waybar::util {
/**
* Defer pthread_cancel until the end of a current scope.
*
* Required to protect a scope where it's unsafe to raise `__forced_unwind` exception.
* An example of these is a call of a method marked as `noexcept`; an attempt to cancel within such
* a method may result in a `std::terminate` call.
*/
class CancellationGuard {
int oldstate;
public:
CancellationGuard() { pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldstate); }
~CancellationGuard() { pthread_setcancelstate(oldstate, &oldstate); }
};
class SleeperThread {
public:
SleeperThread() = default;
SleeperThread(std::function<void()> func)
: thread_{[this, func] {
while (do_run_) {
signal_ = false;
func();
}
}} {
connection_ = prepare_for_sleep().connect([this](bool sleep) {
if (not sleep) wake_up();
});
}
SleeperThread& operator=(std::function<void()> func) {
thread_ = std::thread([this, func] {
while (do_run_) {
signal_ = false;
func();
}
});
if (connection_.empty()) {
connection_ = prepare_for_sleep().connect([this](bool sleep) {
if (not sleep) wake_up();
});
}
return *this;
}
bool isRunning() const { return do_run_; }
auto sleep_for(std::chrono::system_clock::duration dur) {
std::unique_lock lk(mutex_);
CancellationGuard cancel_lock;
return condvar_.wait_for(lk, dur, [this] { return signal_ || !do_run_; });
}
auto sleep_until(
std::chrono::time_point<std::chrono::system_clock, std::chrono::system_clock::duration>
time_point) {
std::unique_lock lk(mutex_);
CancellationGuard cancel_lock;
return condvar_.wait_until(lk, time_point, [this] { return signal_ || !do_run_; });
}
void wake_up() {
{
std::lock_guard<std::mutex> lck(mutex_);
signal_ = true;
}
condvar_.notify_all();
}
auto stop() {
{
std::lock_guard<std::mutex> lck(mutex_);
signal_ = true;
do_run_ = false;
}
condvar_.notify_all();
auto handle = thread_.native_handle();
if (handle != 0) {
// TODO: find a proper way to terminate thread...
pthread_cancel(handle);
}
}
~SleeperThread() {
connection_.disconnect();
stop();
if (thread_.joinable()) {
thread_.join();
}
}
private:
std::thread thread_;
std::condition_variable condvar_;
std::mutex mutex_;
bool do_run_ = true;
bool signal_ = false;
sigc::connection connection_;
};
} // namespace waybar::util

17
include/util/string.hpp Normal file
View File

@ -0,0 +1,17 @@
#pragma once
#include <string>
const std::string WHITESPACE = " \n\r\t\f\v";
inline std::string ltrim(const std::string& s) {
size_t begin = s.find_first_not_of(WHITESPACE);
return (begin == std::string::npos) ? "" : s.substr(begin);
}
inline std::string rtrim(const std::string& s) {
size_t end = s.find_last_not_of(WHITESPACE);
return (end == std::string::npos) ? "" : s.substr(0, end + 1);
}
inline std::string trim(const std::string& s) { return rtrim(ltrim(s)); }

View File

@ -0,0 +1,5 @@
#pragma once
#include <glibmm/ustring.h>
// calculate column width of ustring
int ustring_clen(const Glib::ustring &str);

Some files were not shown because too many files have changed in this diff Show More