2016-03-30 9 views
2

Так что я пытаюсь создать ярлык на рабочем столе для терминала mp3player, сделанного на python. Я использую Lubuntu.Lubuntu Terminal Python Desktop Shortcut

Моя программа выглядит следующим образом

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
from __future__ import print_function 
import os 
import sys 
import random 
from sys import stdout 

from pygame import mixer # Load the required library 


class mp3Player(object): 
    def __init__(self): 
     self.mix = mixer 
     self.mix.init() 

    def play(self, filelist): 
     for root, mp3file in filelist: 
      try: 
       stdout.write(root + '\n') 
       stdout.write("Playing %s\n"%mp3file) 

       self.mix.music.load(os.path.join(root, mp3file)) 
       self.mix.music.play() 

       while self.mix.music.get_busy(): 
        choice = raw_input("[skip, exit, pause, shuffle]\n") 
        if choice == "skip": 
         break 
        elif choice == "pause": 
         self.mix.music.pause() 
         raw_input("Press enter to continiue.") 
         self.mix.music.unpause() 
        elif choice == "shuffle": 
         random.shuffle(filelist) 
         break 
        elif choice == "exit": 
         raise KeyboardInterrupt 
        else: 
         pass 

      except KeyboardInterrupt, e: 
       self.mix.music.stop() 
       print("User Interrupted") 
       sys.exit(0) 

      stdout.flush() 

class mp3Files(object): 
    def __init__(self): 
     self.mp3player = mp3Player() 
     self.filelist = [] 

    def search(self): 
     for root, dirs, files in os.walk(os.getcwd()): 
      for mp3file in files: 
       if mp3file.endswith(".mp3"): 
        self.filelist.append((root, mp3file)) 

     self.mp3player.play(self.filelist) 

def main(): 
    mp3 = mp3Files() 
    mp3.search() 

if __name__ == "__main__": 
    main() 

Вам нужно Pygame для того, чтобы проверить его, и я рекомендовал бы, чтобы выполнить его в вашей музыкальной папке, потому что он ищет в текущем каталоге recursivly для mp3 файлов и, когда это сделано он играет список. Однако это мой файл .desktop.

[Desktop Entry] 
Version=1.0 
Name=mp3playa 
Comment=Terminal mp3player 
Exec=/media/jan/Volume/Musik/mp3playa 
TryExec=/media/jan/Volume/Musik/mp3playa 
Terminal=true 
Categories=Application 
Type=Application 
GenericName=Simple terminal mp3player 

Когда я дважды щелкнул по нему, он открывает терминал без выполнения сценария. Что я делаю неправильно? oO

Заранее спасибо.

Edit:

Файл является исполняемым и я выполнен

sudo update-desktop-database 

и получил предупреждение

Warning in file "/usr/share/applications/gnumeric.desktop": usage of 
MIME type "zz-application/zz-winassoc-xls" is discouraged ("zz- 
application/zz-winassoc-xls" should be replaced with 
"application/vnd.ms-excel") 
+1

Вы пытались запустить запись «Exec» в командной строке? Другими словами: вы уверены, что ваш скрипт действительно исполняемый; и что правильная вещь случается, когда вы пытаетесь запустить ее (прежде чем превращать ее в пусковую установку) ?! И просто чтобы убедиться: вы выполнили «sudo update-desktop-database» после внесения изменений в программу запуска; чтобы все обновления отражались до запуска пусковой установки после изменения? – GhostCat

+0

Да, он исполняется из командной строки. Он выполняется, если я набираю ./mp3playa в терминале. Я попробовал «sudo update-desktop-database» и получил предупреждение в файле «/usr/share/applications/gnumeric.desktop»: использование типа MIME «zz-application/zz-winassoc-xls» не рекомендуется («zz- application/zz-winassoc-xls "следует заменить на" application/vnd.ms-excel "). Появляется ли это предупреждение из-за моего файла .desktop? :/ – BigZ

+0

Ну, предупреждение довольно ясно указывает на файл gnumeric.desktop; так что это скорее всего не имеет никакого отношения к вашему сценарию. – GhostCat

ответ

1

Наконец нашел то, что я отсутствовал.

Пришлось запустить lxterminal сначала с помощью сценария в качестве аргумента команды.

Exec=lxterminal --command="/home/jan/Schreibtisch/mp3playa/mp3playa" 
+0

Поскольку это на самом деле скрипт python; вы можете попробовать «Exec = python/bla/script». – GhostCat

+0

Я тоже это пробовал, но, похоже, lubterminal Lubuntu explizitly хочет выполнить команду таким образом. – BigZ