mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 14:18:26 +02:00
67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
|
|
|
|
import sys
|
|
|
|
OPTIONS = r'''
|
|
--drag
|
|
type=list
|
|
When starting a drag, use the specified file as the data source for the specified
|
|
MIME type. Syntax is: mime-type:path/to/file. For example image/jpeg:mypic.jpg
|
|
Can be specified multiple times to drag multiple MIME types.
|
|
|
|
|
|
--drop
|
|
type=list
|
|
When receiving a drop, use the specified file as the data destination for the specified
|
|
MIME type. Syntax is: mime-type:path/to/file. For example image/jpeg:mypic.jpg
|
|
Can be specified multiple times to enable receiving multiple MIME types. If no path is specified,
|
|
it will prevent that MIME type being dropped, useful to disable accepting text/plain and
|
|
text/uri-list.
|
|
|
|
|
|
--confirm-drop-overwrite
|
|
type=bool-set
|
|
Ask for confirmation when dropping text/uri-list data if the drop will cause any existing
|
|
files to be overwritten. Note that confirmation is asked only for actual file conflicts, non
|
|
conflicting files are automatically created.
|
|
|
|
|
|
--drop-anywhere
|
|
choices=disallowed,copy,move
|
|
default=disallowed
|
|
type=choices
|
|
Allow dropping anywhere, not just on the Copy or Move drop regions. Dropping anywhere will perform
|
|
the specified action.
|
|
'''.format
|
|
|
|
|
|
help_text = '''\
|
|
Perform drag and drop operations, even over SSH.
|
|
|
|
Any arguments on the command line are assumed to be files and directories to drag.
|
|
They will be dragged as the text/uri-list MIME type which can then be dropped into any
|
|
file manager or similar program to copy the files.
|
|
|
|
If the text/uri-list MIME type is dropped onto this window, the files and directories in it are
|
|
copied into the current working directory.
|
|
|
|
If data is present on STDIN it is set as text/plain when dragging, unless text/plain is specified via --drag.
|
|
Any text/plain data that is dropped onto this window is output to STDOUT, if STDOUT is connected to a file, otherwise it
|
|
is discarded.
|
|
|
|
Press the Esc or Ctrl+C keys to quit the kitten at any time, cancelling any in progress drag.
|
|
'''
|
|
|
|
usage = '[files to drag]'
|
|
if __name__ == '__main__':
|
|
raise SystemExit('This should be run as kitten dnd')
|
|
elif __name__ == '__doc__':
|
|
from kitty.simple_cli_definitions import CompletionSpec
|
|
cd = sys.cli_docs # type: ignore
|
|
cd['usage'] = usage
|
|
cd['options'] = OPTIONS
|
|
cd['help_text'] = help_text
|
|
cd['short_desc'] = 'Perform drag and drop operations, even over SSH'
|
|
cd['args_completion'] = CompletionSpec.from_string('type:file mime:* group:Files')
|