# Deskmeter Task Window - Regular Mode A simple GTK4 window that displays your current deskmeter task, with always-on-top and sticky (visible on all workspaces) properties. ## Why Use This? - **Testing**: Test the dmweb API integration without needing to restart GNOME Shell - **Temporary solution**: Use while waiting to log out/in to activate the extension - **Standalone mode**: If you prefer a window instead of a panel indicator ## Prerequisites - Python 3 with GTK4 bindings (`python3-gi`) - dmweb server running on `http://localhost:10000` - `wmctrl` installed (for always-on-top functionality) ## Quick Start ### Option 1: Using the launcher script (recommended) ```bash cd /home/mariano/wdir/dm-gnomeext ./run_task_window.sh ``` This will: 1. Start the task window 2. Automatically set it to always-on-top 3. Make it visible on all workspaces (sticky) ### Option 2: Run Python script directly ```bash cd /home/mariano/wdir/dm-gnomeext python3 task_window.py ``` Then manually set window properties: - Right-click window title bar → "Always on Top" - Right-click window title bar → "Always on Visible Workspace" (if available) Or use wmctrl: ```bash # After window appears wmctrl -r "Deskmeter Task" -b add,above,sticky ``` ## What You'll See - **Loading...** - Initial state while fetching first task - **work/default** - Your current task path (updates every 2.2 seconds) - **offline - dmweb not running** (red) - Cannot connect to API - **error - invalid API response** (orange) - API returned invalid JSON - **no task** - Valid response but no current task set ## Configuration Edit `task_window.py` to customize: ```python UPDATE_INTERVAL = 2200 # Update frequency in milliseconds DESKMETER_API_URL = 'http://localhost:10000/api/current_task' # API endpoint ``` Window appearance (line ~24): ```python self.set_default_size(400, 80) # Width x Height ``` Font size and styling (line ~27): ```python self.label.set_markup('Loading...') ``` ## Stopping the Window - Close the window normally (X button) - Or kill the process: `pkill -f task_window.py` ## Troubleshooting ### "offline - dmweb not running" Start the dmweb server: ```bash cd ~/path/to/dm/dmapp/dmweb python3 run.py ``` Test manually: ```bash curl http://localhost:10000/api/current_task ``` ### Window not staying on top ```bash # Manually set properties wmctrl -r "Deskmeter Task" -b add,above,sticky # Check if wmctrl is installed which wmctrl # If not: sudo apt install wmctrl ``` ### GTK4 not found ```bash # Install GTK4 Python bindings sudo apt install python3-gi gir1.2-gtk-4.0 ``` ### Window appears on wrong workspace Use wmctrl to make it sticky (visible on all workspaces): ```bash wmctrl -r "Deskmeter Task" -b add,sticky ``` ## Comparison: Window vs Extension | Feature | Task Window (this) | GNOME Extension | |---------|-------------------|-----------------| | Always visible | ✅ (when on top) | ✅ (in panel) | | All workspaces | ✅ (sticky) | ✅ (panel always visible) | | Screen space | Takes window space | No extra space | | Setup | Run anytime | Requires logout/login | | Integration | Separate window | Native panel integration | | Restart needed | No | Yes (on Wayland) | ## Usage Tips 1. **Position**: Drag to top-right corner of screen for minimal interference 2. **Size**: The window can be resized - smaller is less intrusive 3. **Transparency**: You can use GNOME Tweaks to make unfocused windows transparent 4. **Auto-start**: Add to Startup Applications if you want it to run on login ## Adding to Startup (Optional) ```bash # Create desktop entry cat > ~/.config/autostart/deskmeter-task-window.desktop <