xcwd is a simple tool which print the current working directory of the currently focused window.
The main goal is to launch applications directly into the same directory as the focused applications. This is especially useful if you want to open a new terminal for debugging or compiling purpose.
This script can't retrieve the working directory of a "single instance application" nor terminal multiplexer, e.g. :
- tmux, screen
- lilyterm
- konsole
- urxvtc with urxvtd
- applications with tabs
The application works well with the following terminals :
- urxvt
- xterm
- gnome terminal
- terminology
- Retrieve the focused window
- Read its attributes to get the PID. If
_NET_WM_PID
is set, xcwd just read the value. Otherwise it reads the_NET_WM_CLASS
and compares it to the name of all the running processes - Search for the deepest child of the selected PID (to avoid getting the working directory of the terminal instead of the shell)
- Print the current working directory
If one of those steps fail, xcwd print the content of the HOME
variable.
- Linux or FreeBSD
- libX11-dev
- Clone this repository or download as ZIP
make
make install
Simply invoke the 'xcwd' command.
You probably want to use it this way:
urxvt -cd "`xcwd`"
xterm -e "cd `xcwd` && /bin/zsh"
pcmanfm "`xcwd`"
- bindsym $mod+Shift+Return exec
urxvt -cd "`xcwd`"
- bindsym $mod+Shift+Return exec
xterm -e "cd `xcwd` && /bin/zsh"
- bindsym $mod+p exec
pcmanfm "`xcwd`"