Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Standalone Waybar module backends.
## Modules

- `modules/agent-usage` — Codex and Claude usage
- `modules/github` — open GitHub pull requests
- `modules/github` — GitHub pull requests that request your review
- `modules/linear` — unread Linear notifications
- `modules/schedule` — upcoming meetings from Google Calendar

Expand Down
13 changes: 12 additions & 1 deletion modules/github/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ GitHub pull request module.

## Includes

- Fetch open pull requests for the current user
- Fetch open pull requests that request your review (excluding your own authored PRs by default)
- Write Waybar output and a Gtk menu file
- Open the dashboard or a selected item

Expand All @@ -17,6 +17,17 @@ GitHub pull request module.
| `cargo test -p waybar-github` | Run this package only |
| `nix run 'path:.#github' -- status` | Run the status command |

## Query behavior

Default search query:

```text
is:open is:pr review-requested:@me -author:@me archived:false sort:updated-desc
```

Override with `WAYBAR_GITHUB_PR_QUERY` (or `PR_QUERY`) in `github-pull-requests.env`.
If your agents use dedicated bot accounts, append additional `-author:<login>` qualifiers.

## Usage

```bash
Expand Down
4 changes: 2 additions & 2 deletions modules/github/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ fn build_status(config: &Config) -> Result<WaybarOutput> {
Ok(result) => {
save_items(&config.items_path, &result.items)?;
let status_line = if result.count > 0 {
"Open pull requests"
"Pull requests requiring review"
} else {
"No matching pull requests"
}
Expand Down Expand Up @@ -134,7 +134,7 @@ fn build_status(config: &Config) -> Result<WaybarOutput> {
}

fn build_tooltip(result: &crate::github::FetchResult) -> String {
let mut lines = vec![format!("GitHub pull requests: {}", result.count)];
let mut lines = vec![format!("GitHub review requests: {}", result.count)];
for item in &result.items {
lines.push(format!(
"{} #{}: {}",
Expand Down
17 changes: 14 additions & 3 deletions modules/github/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ use anyhow::Result;
use waybar_core::{XdgDirs, env_parse, env_value, load_env_file};

const MAX_ACTION_ITEMS: usize = 12;
const DEFAULT_PR_QUERY: &str =
"is:open is:pr review-requested:@me -author:@me archived:false sort:updated-desc";

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Config {
Expand Down Expand Up @@ -48,9 +50,7 @@ impl Config {
)
.unwrap_or_else(|| format!("{}/graphql", api_url.trim_end_matches('/')));
let pr_query = env_value(&file_env, &["WAYBAR_GITHUB_PR_QUERY", "PR_QUERY"])
.unwrap_or_else(|| {
"is:open is:pr involves:@me archived:false sort:updated-desc".into()
});
.unwrap_or_else(|| DEFAULT_PR_QUERY.into());
let max_items = env_parse::<usize>(&file_env, &["WAYBAR_GITHUB_MAX_ITEMS", "MAX_ITEMS"])
.map_or(8, |value| value.clamp(1, MAX_ACTION_ITEMS));
let timeout = Duration::from_secs(
Expand Down Expand Up @@ -84,3 +84,14 @@ impl Config {
})
}
}

#[cfg(test)]
mod tests {
use super::DEFAULT_PR_QUERY;

#[test]
fn default_query_targets_external_review_requests() {
assert!(DEFAULT_PR_QUERY.contains("review-requested:@me"));
assert!(DEFAULT_PR_QUERY.contains("-author:@me"));
}
}
Loading