Project
Function
Sample CLI
gway screen shot
References
['resource']
Full Code
def shot(*, name: str = None, mode: str = "full") -> str:
"""
Take a screenshot in the specified mode and save it under:
gw.resource("work", "screenshots")
The filename will be:
<active_window_name>_<YYYYMMDD_HHMMSS>.png
Returns:
The full path to the saved screenshot file.
Modes:
- "full": entire screen
- "active"/"window": active window only (Windows only; falls back to full)
"""
screenshots_dir = gw.resource("work", "screenshots")
os.makedirs(screenshots_dir, exist_ok=True)
window_name = _get_active_window()
window_name = _sanitize_filename(window_name)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{window_name}_{timestamp}.png"
filepath = os.path.join(screenshots_dir, filename)
if mode in ("active", "window"):
try:
import pygetwindow as gwnd
win = gwnd.getActiveWindow()
if win and win.left != -32000: # Avoid minimized windows
bbox = (win.left, win.top, win.right, win.bottom)
img = ImageGrab.grab(bbox=bbox)
else:
img = ImageGrab.grab()
except Exception:
img = ImageGrab.grab()
else:
img = ImageGrab.grab()
img.save(filepath)
return filepath