Commit 73b37cae authored by Anto Fox's avatar Anto Fox 🎨

Update sources

parent ee00a93f
devuanmenu (1.0.1) jessie; urgency=medium
* Update sources
* Fixed some bug
-- Anto Fox <nioanto@live.it> Wed, 07 Sep 2016 12:51:41 +0100
devuanmenu (1.0) jessie; urgency=medium
* Fork from mintmenu
......
dh_auto_configure
dh_auto_build
dh_auto_test
dh_prep
dh_auto_install
dh_install
dh_installdocs
dh_installchangelogs
dh_installman
dh_installgsettings
dh_lintian
dh_perl
dh_link
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
misc:Depends=dconf-gsettings-backend | gsettings-backend
/etc/xdg/autostart/devuanmenu.desktop
Package: devuanmenu
Version: 1.0
Architecture: all
Maintainer: Anto Fox <nioanto@live.it>
Installed-Size: 523
Depends: dconf-gsettings-backend | gsettings-backend, python (>= 2.4), python (<< 3), python-gtk2, python-glade2, devuan-common, python-mate-menu, python-xdg, xdg-utils, libmatepanelapplet, libmatedesktop, mate-menus, gvfs-bin, python-xlib, gir1.2-mate-panel, gir1.2-gtk-2.0, mozo
Section: admin
Priority: optional
Description: Advanced MATE menu
One of the most advanced menus under Linux. DevuanMenu supports filtering,
favorites, easy-uninstallation, autosession, and many other features.
8375d4da9f804108ec976e65f1fdc85b usr/bin/devuanmenu
1c1a45ac0746be5d4822a6541f03d41b usr/lib/devuan/devuanMenu/applications.list
0f3b713ccd32d56f5baf253cb775a6ab usr/lib/devuan/devuanMenu/capi.py
20ccc907d4a6a43ab6235dc0c7069130 usr/lib/devuan/devuanMenu/compile.py
f4fd45c54d14a526893628828622ecc4 usr/lib/devuan/devuanMenu/devuan-logo.svg
a4246663a37d3e0fb0723225a24b4d5d usr/lib/devuan/devuanMenu/devuanMenu.glade
598122a84fe7d446007c0232837662a1 usr/lib/devuan/devuanMenu/devuanMenu.png
7cd1d13344b8502529d09c04378d623f usr/lib/devuan/devuanMenu/devuanMenu.py
57f606809ecb0fe78fa4abf7086216e5 usr/lib/devuan/devuanMenu/devuanMenuConfig.glade
0913c02dbb343833ff7f406599a23b35 usr/lib/devuan/devuanMenu/devuanMenuConfig.py
8defe291ca3078f729228d9fe54aa658 usr/lib/devuan/devuanMenu/dotted.png
71f7c4e1a66ff0bed6d33b29df399a7c usr/lib/devuan/devuanMenu/icon.png
d6d725e4d928483c3fdc4aa42bdefcc5 usr/lib/devuan/devuanMenu/icon.svg
f3559a6952ad0424695699f21b057ade usr/lib/devuan/devuanMenu/keybinding.py
09a93510f4c9e8bc052994f22799be30 usr/lib/devuan/devuanMenu/plugins/__init__.py
7f2595229bab42da1da56d3e59628384 usr/lib/devuan/devuanMenu/plugins/applications.glade
3355e9bfbe1eb92ac06ab5e462aa211a usr/lib/devuan/devuanMenu/plugins/applications.py
459f35f915f398fb2300513618d65ab1 usr/lib/devuan/devuanMenu/plugins/easybuttons.py
778108ad7cd05cc7e43b2767f3117e27 usr/lib/devuan/devuanMenu/plugins/easyfiles.py
a1050c89d0048dba4456342398e98eec usr/lib/devuan/devuanMenu/plugins/easygsettings.py
3369a0a6c9d2e36c0b6d128b4e8cc151 usr/lib/devuan/devuanMenu/plugins/execute.py
1fd4e53ec4cb8b36dc94de756934f58e usr/lib/devuan/devuanMenu/plugins/filemonitor.py
c9123a764ba80d88c2dfd755ce2f4b68 usr/lib/devuan/devuanMenu/plugins/get_apt_cache.py
bd3332d47185cea4f884741c11a83745 usr/lib/devuan/devuanMenu/plugins/places.glade
9b9b5a78beecd3843d0d516966179455 usr/lib/devuan/devuanMenu/plugins/places.py
377084c6bf8f9c5b719c19419d4b2775 usr/lib/devuan/devuanMenu/plugins/recent.glade
2a6ba3b075c7ab57fe3b0650fbad52b9 usr/lib/devuan/devuanMenu/plugins/recent.py
0a38c9029f73194a452b558b67daf797 usr/lib/devuan/devuanMenu/plugins/system_management.glade
f98e35c8463ebbdfcdaf28125af87cef usr/lib/devuan/devuanMenu/plugins/system_management.py
5a609b42e9424f37cfe4690463f95e4b usr/lib/devuan/devuanMenu/pointerMonitor.py
56663600756f59375f02c2b6be28683a usr/lib/devuan/devuanMenu/popup.xml
f78b71b666fb76d0774ad4bbdb8382d0 usr/lib/devuan/devuanMenu/search_engines/dictionary.png
09b565a51e14b721a323f0ba44b2982a usr/lib/devuan/devuanMenu/search_engines/google.ico
84bdcf58904aa0a54889f9a47e6b8ca1 usr/lib/devuan/devuanMenu/search_engines/hardware.png
eeaba7972955104c9758e030eb65fd2b usr/lib/devuan/devuanMenu/search_engines/ideas.png
202730f01ac7f42ef2573fc4f55ea84e usr/lib/devuan/devuanMenu/search_engines/software.png
ea4c481fe956fabe5ee98ec7162c1dba usr/lib/devuan/devuanMenu/search_engines/tutorials.png
e8ab3b979fa444eb20291abb34a6c6e9 usr/lib/devuan/devuanMenu/search_engines/users.png
d04712159fabf20d31fc905b9bda350c usr/lib/devuan/devuanMenu/search_engines/wikipedia.ico
92186d5f0ee1799028fa98691f1c5eae usr/lib/devuan/devuanMenu/visualisation-logo.png
4ce5a1aa0b37553d91bb7f364b3efb23 usr/share/dbus-1/services/org.mate.panel.applet.DevuanMenuAppletFactory.service
56b1f09fa0f248e88fcf4b4d99d2c8eb usr/share/doc/devuanmenu/changelog.gz
846822c92306be71bd5af4b76011b76b usr/share/doc/devuanmenu/copyright
5f061f4cd050813ac0aa65cd6e17e6a0 usr/share/glib-2.0/schemas/com.devuan.devuanmenu.gschema.xml
8fbbef8ee7dc5ac39b5020286ebcbb07 usr/share/lintian/overrides/devuanmenu
389665ccef3828441a013bedd738041a usr/share/man/man1/devuanmenu.1.gz
17223a33852115650e7adb91b85b0ed7 usr/share/mate-panel/applets/org.mate.panel.DevuanMenuApplet.mate-panel-applet
5418412e2a6c0d08c6e3c58a6b4c9f0d usr/share/pixmaps/devuanmenu.svg
#!/bin/sh
# postinst script
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
case "$1" in
configure)
glib-compile-schemas /usr/share/glib-2.0/schemas
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0
[Desktop Entry]
Encoding=UTF-8
Name=devuanmenu
Comment=Devuan advanced menu
Icon=
Exec=devuanmenu
Terminal=false
Type=Application
Categories=desktop
Name=devuanmenu.desktop
Name[it_IT]=devuanmenu
#!/usr/bin/python2
import sys, os
if len(sys.argv) > 1:
if (sys.argv[1] in ["help", "h", "-?", "--help", "-h", "?"]):
print "devuanMenu - the advanced MATE menu\n"
print "options:"
print " [--]help, [-]h Display this help."
print " [--]clean, [--]clear, [--]reset Restore settings to default.\n"
elif (sys.argv[1] in ["clean", "clear", "reset", "--clean", "--clear", "--reset"]):
os.system("gsettings reset-recursively com.devuan.devuanmenu")
os.system("gsettings reset-recursively com.devuan.devuanmenu.plugins.places")
os.system("gsettings reset-recursively com.devuan.devuanmenu.plugins.applications")
os.system("gsettings reset-recursively com.devuan.devuanmenu.plugins.recent")
os.system("gsettings reset-recursively com.devuan.devuanmenu.plugins.system_management")
os.system("rm -rf ~/.devuan/devuanMenu")
print "All devuanMenu settings are now restored to default"
else:
os.system("/usr/lib/devuan/devuanMenu/devuanMenu.py")
location:/usr/share/applications/firefox.desktop
location:/usr/share/applications/thunderbird.desktop
location:/usr/share/applications/pidgin.desktop
location:/usr/share/applications/banshee.desktop
separator
location:/usr/share/applications/gnome-calculator.desktop
location:/usr/share/applications/gcalctool.desktop
location:/usr/share/applications/xed.desktop
location:/usr/share/applications/mate-terminal.desktop
location:/usr/share/applications/gnome-terminal.desktop
location:/usr/share/applications/mate-volume-control.desktop
location:/usr/share/applications/xfce4-mixer.desktop
separator
location:/usr/share/applications/mate-display-properties.desktop
location:/usr/share/applications/xfce-display-settings.desktop
location:/usr/share/applications/mate-system-monitor.desktop
location:/usr/share/applications/gnome-system-monitor.desktop
location:/usr/share/applications/xfce4-taskmanager.desktop
#!/usr/bin/python2
import gi
import ctypes
from ctypes import *
libgobject = CDLL('libgobject-2.0.so.0')
class _PyGObject_Functions(ctypes.Structure):
_fields_ = [
('register_class',
ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.c_char_p,
ctypes.c_int, ctypes.py_object,
ctypes.py_object)),
('register_wrapper',
ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.py_object)),
('lookup_class',
ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_int)),
('newgobj',
ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)),
]
class PyGObjectCPAI(object):
def __init__(self):
PyCObject_AsVoidPtr = ctypes.pythonapi.PyCObject_AsVoidPtr
PyCObject_AsVoidPtr.restype = ctypes.c_void_p
PyCObject_AsVoidPtr.argtypes = [ctypes.py_object]
addr = PyCObject_AsVoidPtr(ctypes.py_object(
gi._gobject._PyGObject_API))
self._api = _PyGObject_Functions.from_address(addr)
def pygobject_new(self, addr):
return self._api.newgobj(addr)
def get_widget(ptr):
return PyGObjectCPAI().pygobject_new(ptr)
#!/usr/bin/python2
import compileall
compileall.compile_dir(".", force=1)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="55.933903mm"
height="54.000595mm"
viewBox="0 0 198.191 191.34069"
id="svg3668"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="devuan-emblem.svg">
<title
id="title3714">Devuan Logo</title>
<defs
id="defs3670" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.1910325"
inkscape:cx="34.9248"
inkscape:cy="95.67033"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1366"
inkscape:window-height="746"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata3673">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Devuan Logo</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>hellekin</dc:title>
</cc:Agent>
</dc:creator>
<dc:publisher>
<cc:Agent>
<dc:title>Dyne.org Foundation</dc:title>
</cc:Agent>
</dc:publisher>
<dc:contributor>
<cc:Agent>
<dc:title>hellekin, golinux, Centurion_Dan</dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-461.83765,-385.26329)">
<path
sodipodi:nodetypes="ccssscsc"
style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.57134259;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 461.83765,385.26329 c 351.11154,83.78964 18.96795,151.92346 18.96795,151.92346 -6.54355,1.04566 -11.8218,4.45425 -14.99949,9.63398 -3.56969,5.81872 -3.87218,13.6808 -0.53871,19.20842 4.05626,6.72618 9.1957,9.05293 13.62832,10.05499 6.97389,1.57656 12.60306,-0.93571 12.60306,-0.93571 0,0 169.79909,-50.45979 168.5227,-100.86283 -0.64075,-25.303 -52.0661,-68.10192 -198.18383,-89.02231 z"
id="path4338"
inkscape:connector-curvature="0" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 2.10 -->
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkWindow" id="mainWindow">
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK</property>
<property name="resizable">False</property>
<property name="type_hint">menu</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="decorated">False</property>
<property name="deletable">False</property>
<child>
<object class="GtkAlignment" id="border">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkHBox" id="paneholder">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
#!/usr/bin/python2
import os
import os.path
import urllib
def GetFilePath(uri):
path = urllib.url2pathname(uri) # escape special chars
path = path.strip('\r\n\x00') # remove \r\n and NULL
# get the path to file
if path.startswith('file://'): # nautilus, rox
path = path[7:] # 7 is len('file://')
return path
#!/usr/bin/python2
from gi.repository import Gio
class EasyGSettings:
def __init__( self, schema = None ):
self.schema = schema
self.settings = Gio.Settings.new(self.schema)
self.handlerIds = [ ]
def get( self, type, key ):
if type == "bool":
return self.settings.get_boolean( key )
if type == "string":
return self.settings.get_string( key )
if type == "int":
return self.settings.get_int( key )
if type == "color":
color = self.settings.get_string( key )
if not self.evalColor( color ):
self.settings.set_string(key, "#ffffff")
return "#ffffff"
return color
t = type.split("-")
if len(t) == 2 and t[0] == "list":
return self.settings.get_strv( key )
return self.settings.get( key )
def set( self, type, key, value ):
if type == "bool":
return self.settings.set_boolean( key, value )
if type == "string":
return self.settings.set_string( key, value )
if type == "int":
return self.settings.set_int( key, value )
if type == "color":
if self.evalColor( value ):
return self.settings.set_string( key, value )
else:
return self.settings.set_string( key, "#ffffff" )
t = type.split("-")
if len(t) == 2 and t[0] == "list":
return self.settings.set_strv( key, value )
return self.settings.set( key, value )
def notifyAdd( self, key, callback, args = None ):
handlerId = self.settings.connect("changed::"+key, callback, args)
self.handlerIds.append( handlerId )
return handlerId
def notifyRemove( self, handlerId ):
return self.settings.disconnect(handlerId)
def notifyRemoveAll( self ):
for handlerId in self.handlerIds:
self.settings.disconnect( handlerId )
def evalColor(self, colorToTest ):
if colorToTest[0] != '#' or len( colorToTest ) != 7:
return False
for i in colorToTest[1:]:
if i not in ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
return False
return True
def bindGSettingsEntryToVar( self, type, key, obj, varName ):
return self.notifyAdd( key, self.setVar, ( type, obj, varName ) )
def setVar( self, settings, key, args ):
type, obj, varName = args
if type == "string":
setattr( obj, varName, settings.get_string(key) )
elif type == "int":
setattr( obj, varName, settings.get_int(key) )
elif type == "float":
setattr( obj, varName, settings.get_float(key) )
elif type == "bool":
setattr( obj, varName, settings.get_boolean(key) )
else:
setattr( obj, varName, settings.get_value(key) )
#!/usr/bin/python2
import os
def RemoveArgs(Execline):
NewExecline = []
Specials=["\"%c\"", "%f","%F","%u","%U","%d","%D","%n","%N","%i","%c","%k","%v","%m","%M", "-caption", "/bin/sh", "sh", "-c", "STARTED_FROM_MENU=yes"]
for elem in Execline:
elem = elem.replace("'","")
elem = elem.replace("\"", "")
if elem not in Specials:
print elem
NewExecline.append(elem)
return NewExecline
# Actually execute the command
def Execute( cmd , commandCwd=None):
if not commandCwd:
cwd = os.path.expanduser( "~" );
else:
tmpCwd = os.path.expanduser( commandCwd );
if (os.path.exists(tmpCwd)):
cwd = tmpCwd
if isinstance( cmd, str ) or isinstance( cmd, unicode):
if (cmd.find("ubiquity") >= 0) or (cmd.find("/home/") >= 0) or (cmd.find("su-to-root") >= 0) or (cmd.find("\"") >= 0):
print "running manually..."
try:
os.chdir(cwd)
os.system(cmd + " &")
return True
except Exception, detail:
print detail
return False
cmd = cmd.split()
cmd = RemoveArgs(cmd)
try:
os.chdir( cwd )
string = ' '.join(cmd)
string = string + " &"
os.system(string)
return True
except Exception, detail:
print detail
return False
#!/usr/bin/python2
import os
import os.path
import threading
import time
from gi.repository import GLib
try:
import pyinotify
hasInotify = True
except ImportError:
hasInotify = False
if hasInotify:
class FileMonitor(object):
def __init__( self ):
self.monitorId = 0
self.wm = pyinotify.WatchManager()
self.wdds = {}
self.callbacks = {}
self.notifier = pyinotify.ThreadedNotifier(self.wm, self.fileChanged)
self.notifier.setDaemon( True )
self.notifier.start()
def addMonitor( self, filename, callback, args = None ):
try:
mask = pyinotify.IN_DELETE | pyinotify.IN_CREATE | pyinotify.IN_MODIFY
mId = self.wm.add_watch( filename, mask, rec = True)[filename]
if mId >= 0:
self.callbacks[mId] = ( callback, args )
except Exception, detail:
mId = 0
return mId
def removeMonitor( self, monitorId ):
if monitorId in self.callbacks:
self.wm.rm_watch( monitorId )
del self.callbacks[monitorId]
def fileChanged(self, event ):
if event.wd in self.callbacks:
# print event.path
callback = self.callbacks[event.wd]
if callback[1]:
GLib.idle_add( callback[0], callback[1] )
else:
GLib.idle_add( callback[0] )
else:
class _MonitoredFile( object ):
def __init__( self, filename, callback, monitorId, args ):
self.filename = filename
self.callback = callback
self.monitorId = monitorId
self.args = args
self.exists = os.path.exists( self.filename )
if self.exists:
self.mtime = os.stat( filename ).st_mtime
else:
self.mtime = 0
def hasChanged( self ):
if os.path.exists( self.filename ):
if not self.exists:
self.exists = True
self.mtime = os.stat( self.filename ).st_mtime
return True
else:
mtime = os.stat( self.filename ).st_mtime
if mtime != self.mtime:
self.mtime = mtime
return True
else:
if self.exists:
self.exists = False
return True
return False
class MonitorThread(threading.Thread):
def __init__(self, monitor):
threading.Thread.__init__ ( self )
self.monitor = monitor
def run(self):
while(1):
self.monitor.checkFiles()
time.sleep(1)
class FileMonitor(object):
def __init__( self ):
self.monitorId = 0
self.monitoredFiles = []
self.monitorThread = MonitorThread( self )
self.monitorThread.setDaemon( True )
self.monitorThread.start()
def addMonitor( self, filename, callback, args = None ):
self.monitorId += 1
self.monitoredFiles.append( _MonitoredFile( filename, callback, self.monitorId, args ) )
return self.monitorId
def removeMonitor( self, monitorId ):
for monitored in self.monitoredFiles:
if monitorId == monitored.monitorId:
self.monitoredFiles.remove( monitored )
break
def checkFiles( self ):
for monitored in self.monitoredFiles:
if monitored.hasChanged():
if monitored.args:
GLib.idle_add( monitored.callback, monitored.args )
else:
GLib.idle_add( monitored.callback )
monitor = FileMonitor()
#!/usr/bin/python2
import apt, sys
try:
cache = apt.Cache()
for pkg in cache:
if not pkg.is_installed:
name = pkg.name
summary = pkg.candidate.summary.capitalize()
description = pkg.candidate.description.replace("\n", "~~~")
print "CACHE" + "###" + str(name) + "###" + str(summary) + "###" + str(description)
except Exception, detail:
print "ERROR###ERROR###ERROR###ERROR"
print detail