-
Notifications
You must be signed in to change notification settings - Fork 92
Expand file tree
/
Copy pathcode-nautilus.py
More file actions
74 lines (59 loc) · 2.07 KB
/
code-nautilus.py
File metadata and controls
74 lines (59 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# VSCode Nautilus Extension
#
# Place me in ~/.local/share/nautilus-python/extensions/,
# ensure you have python-nautilus package, restart Nautilus, and enjoy :)
#
# This script was written by cra0zy and is released to the public domain
from gi import require_version
require_version('Gtk', '3.0')
require_version('Nautilus', '3.0')
from gi.repository import Nautilus, GObject
from subprocess import call
import os
# path to vscode
VSCODE = 'code'
# what name do you want to see in the context menu?
VSCODENAME = 'Code'
# always create new window?
NEWWINDOW = False
# ui language check
lang = os.environ.get("LANG")
label = ""
if "zh" in lang:
label = '在 ' + VSCODENAME + ' 中打开'
tip_files = '用 VSCode 打开所选择的文件'
tip_backgroud = '在 VSCode 中打开当前目录'
else:
label = 'Open in ' + VSCODENAME
tip_files = 'Opens the selected files with VSCode'
tip_backgroud = 'Opens the current directory in VSCode'
class VSCodeExtension(GObject.GObject, Nautilus.MenuProvider):
def launch_vscode(self, menu, files):
safepaths = ''
args = ''
for file in files:
filepath = file.get_location().get_path()
safepaths += '"' + filepath + '" '
# If one of the files we are trying to open is a folder
# create a new instance of vscode
if os.path.isdir(filepath) and os.path.exists(filepath):
args = '--new-window '
if NEWWINDOW:
args = '--new-window '
call(VSCODE + ' ' + args + safepaths + '&', shell=True)
def get_file_items(self, window, files):
item = Nautilus.MenuItem(
name='VSCodeOpen',
label=label,
tip=tip_files
)
item.connect('activate', self.launch_vscode, files)
return [item]
def get_background_items(self, window, file_):
item = Nautilus.MenuItem(
name='VSCodeOpenBackground',
label=label,
tip=tip_backgroud
)
item.connect('activate', self.launch_vscode, [file_])
return [item]