skills/linux-apps/SKILL.md
Manage and control Linux applications. List running apps, start/stop apps, capture window screenshots, focus/minimize/maximize windows, and get app info. Use when a user asks FRIDAY to manage apps, see what's running, or take a screenshot of a specific app.
npx skillsauth add balaraj74/f.r.i.d.a.y linux-appsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage and control Linux desktop applications. List running apps, control windows, and capture screenshots of specific applications.
Install required tools:
sudo apt-get install -y wmctrl xdotool scrot xwininfo imagemagick
wmctrl -l -p -G
Output: <window_id> <desktop> <pid> <x> <y> <width> <height> <client_machine> <title>
wmctrl -l -x
wmctrl -l | awk '{$1=$2=$3=""; print substr($0,4)}'
wmctrl -l | wc -l
ps aux | grep -E 'code|firefox|chrome|slack|discord|spotify|vlc|nautilus|terminal' | grep -v grep
# Browser
firefox &
google-chrome &
brave-browser &
# Code editor
code &
code /path/to/project &
# File manager
nautilus ~ &
# Terminal
gnome-terminal &
xterm &
# Media
vlc /path/to/video &
spotify &
firefox & sleep 2 && wmctrl -a Firefox
xdg-open ~/Documents/file.pdf
xdg-open https://example.com
xdg-open ~/Pictures/image.png
wmctrl -c "Firefox"
wmctrl -c "Visual Studio Code"
xdotool getactivewindow windowclose
pkill firefox
pkill -9 code # Force kill
xdotool windowclose <window_id>
wmctrl -a "Firefox" # By title (partial match)
wmctrl -i -a 0x04000007 # By window ID
xdotool search --name "Firefox" windowactivate
xdotool getactivewindow windowminimize
xdotool search --name "Firefox" windowminimize
wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
wmctrl -r "Firefox" -b add,maximized_vert,maximized_horz
wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz
wmctrl -r :ACTIVE: -b toggle,fullscreen
wmctrl -r :ACTIVE: -e 0,100,100,-1,-1 # Move to x=100, y=100
wmctrl -r "Firefox" -e 0,0,0,1920,1080 # Position and resize
wmctrl -r :ACTIVE: -e 0,-1,-1,800,600 # Resize to 800x600
xdotool getactivewindow windowsize 800 600
wmctrl -r :ACTIVE: -t 1 # Move to desktop 1 (0-indexed)
wmctrl -a "Firefox"
xdotool search --name "Firefox" windowraise
scrot -u ~/Pictures/window-$(date +%Y%m%d-%H%M%S).png
First get window ID, then capture:
# Get window ID
WIN_ID=$(xdotool search --name "Firefox" | head -1)
# Capture that window
import -window $WIN_ID ~/Pictures/firefox-screenshot.png
scrot -s ~/Pictures/selected-$(date +%Y%m%d-%H%M%S).png
# Get window geometry first
WIN_ID=$(xdotool search --name "Firefox" | head -1)
import -window $WIN_ID ~/Pictures/app-screenshot.png
scrot -ub ~/Pictures/window-with-border.png
# Firefox
xdotool search --name "Firefox" | head -1 | xargs -I{} import -window {} ~/Pictures/firefox.png
# VS Code
xdotool search --name "Visual Studio Code" | head -1 | xargs -I{} import -window {} ~/Pictures/vscode.png
FILE=~/Pictures/app-$(date +%Y%m%d-%H%M%S).png && scrot -u "$FILE" && echo "Saved: $FILE"
xdotool getactivewindow getwindowname
xdotool getactivewindow getwindowpid
xdotool getactivewindow getwindowgeometry
xwininfo -id $(xdotool getactivewindow)
xdotool search --name "Firefox"
xdotool search --class "code"
xdotool search --name "Firefox" | head -1 | xargs -I{} xdotool getwindowpid {}
pgrep -x firefox && echo "Firefox is running" || echo "Firefox is not running"
# CPU and memory for specific app
ps aux | grep firefox | grep -v grep
# More details
top -bn1 | grep firefox
wmctrl -a "Firefox" || firefox &
# Left half
wmctrl -r "Firefox" -e 0,0,0,960,1080
# Right half
wmctrl -r "Code" -e 0,960,0,960,1080
xdotool search --name "Firefox" | xargs -I{} xdotool windowclose {}
mkdir -p ~/Pictures/windows-$(date +%Y%m%d)
for wid in $(xdotool search --onlyvisible --name ""); do
name=$(xdotool getwindowname $wid | tr ' /' '_')
import -window $wid ~/Pictures/windows-$(date +%Y%m%d)/${name}.png 2>/dev/null
done
wmctrl -d
wmctrl -s 1 # Switch to desktop 1
xdpyinfo | grep dimensions
xrandr | grep '\*'
xrandr --query
development
Get current weather and forecasts (no API key required).
tools
Send WhatsApp messages to other people or search/sync WhatsApp history via the wacli CLI (not for normal user chats).
tools
Control VS Code from the terminal. Open files, run commands, manage extensions, use the integrated terminal, interact with Copilot, and automate editor tasks. Use when a user asks FRIDAY to work with VS Code, edit files, or run VS Code commands.
tools
Start voice calls via the FRIDAY voice-call plugin.