Skip to content

Add activity cooldown indication - #2334

Open
zhum wants to merge 15 commits into
Guake:masterfrom
zhum:master
Open

Add activity cooldown indication#2334
zhum wants to merge 15 commits into
Guake:masterfrom
zhum:master

Conversation

@zhum

@zhum zhum commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Added new tab indication: if there was activity, but then it stopped and no changes happened for 30 seconds (may be changed in settings), tab color is changed to blue.

zhum and others added 4 commits July 12, 2026 15:59
Highlight the title of a background tab (bold + orange) when its terminal
produces output, clearing once the tab is selected. Gated behind a new
"display-tab-activity" setting, off by default.

To avoid lighting up every tab on session restore, activity is ignored for
adjustable grace periods: a new-tab grace (default 3s) starting at tab
creation, and a shorter focus-loss grace (default 1s) when a tab loses
focus. The focus-loss grace never shortens an existing longer grace, so the
rapid switch-page cascade during restore can't clobber the creation grace.

Both periods are configurable in Preferences > General.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fade a highlighted tab from active (orange) to stale (blue) once
tab-activity-cooldown seconds pass with no new terminal output, so
long-quiet tabs are visually distinct from tabs with fresh activity.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@Davidy22 Davidy22 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry about the delay, been busy. There's been a fair few changes, you'll have to rebase on top of the current master. Also some strange meta changes that you shouldn't need to do here, and one baffling change. If you're involving AI, it would be much preferred if you could also review the output the AI is giving you

Comment thread guake/data/org.guake.gschema.xml Outdated

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a mental/usability cost to every setting that we put in the preferences menu, these seem like settings that people aren't going to actually touch. Like I'd say the colors would be more likely to be touched than these times, and even then probably unlikely. Can just trim it down to the checkbox.

Comment thread guake/data/prefs.glade

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See previous note

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Comment thread guake/boxes.py Outdated
@@ -640,14 +640,17 @@ def remove_dead_child(self, child):
# Foreground color applied to a background tab's title when it has unseen
# activity. Chosen to stay readable on both light and dark tab bars.
TAB_ACTIVITY_COLOR = "#E8A33D"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usually constants like this should go at the top of the file, but also these are only getting used once so they may be better named inside _render() where they're used.

Comment thread guake/boxes.py Outdated

def _render(self):
if self._activity:
if self._activity_state == "active":

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally better to use enums for nonbinary states instead of strings

Comment thread guake/notebook.py Outdated
cooldown elapses. A single shared timer is used regardless of how
many tabs are currently highlighted."""
if self._activity_timer_id is None:
self._activity_timer_id = GLib.timeout_add(1000, self._tick_activity_states)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we doing it this way? The timeout call lets you just set the time. Is it to reduce tick calls? I mean, with a 30 second cooldown you'd need to have stuff happening in more than 30 tabs for this to be savings.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't touch unrelated reno files even if you're hardly changing anytthing

@@ -0,0 +1,25 @@
release_summary: >

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put everything you want to say in one reno file

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What on earth are you doing here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise it doesn't work even in venv for my python 3.12.3...

Bost and others added 11 commits August 21, 2026 14:01
The keybinder library's XKB modifier computation (FinallyGetModifiersForKeycode)
spuriously returns Mod1/Alt as a consumed modifier for F12 at level 0 on
certain systems (e.g. Cinnamon/Muffin). This causes XGrabKey to attempt
grabbing Alt+F12 instead of plain F12, which fails because the X server
reserves Alt+Fn keys for VT switching.

Disabling cooked accelerators matches the approach used by Tilda terminal's
tomboykeybinder.c, which does not use XKB at all for modifier computation.
Users who need cooked accelerators can re-enable them via GSettings.

sem-ver: bugfix
Allows command to work for relative paths, including partial ones.

sem-ver: bugfix
button_press() handled Ctrl+click but returned None, so the event kept
propagating and VTE's default handler also forwarded it to the child
process as a mouse report. Any mouse-aware application then acted on the
same click, e.g. a terminal multiplexer that opens links itself ended up
opening the very same URL a second time.

Return True only when one of the Ctrl+click branches actually handled the
event, so an unhandled Ctrl+click still propagates and Ctrl+drag block
selection and Ctrl+click inside mouse-aware applications keep working.

sem-ver: bugfix

@zhum zhum left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated PR according to the comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants