এখানে কি কোনও অভিনব উল্লম্ব নোটিফিকেশন ওএসডি রয়েছে যা ALSA এবং পালসোডিও উভয়ের জন্যই কাজ করে?


15

পালসওদিও এবং ALSA উভয়ের সাথে কাজ করার জন্য কি ভলিউম বিজ্ঞপ্তি ওএসডি পাওয়ার কোনও অভিনব উপায় আছে? এখনই স্ট্যান্ডার্ড ডেস্কটপগুলি কেবল আমার জন্য পালসওডিও দিয়ে কাজ করে। কিভাবে উল্লম্ব ওএসডি যা আমি প্রতিস্থাপনের ড্রপ হিসাবে ব্যবহার করতে পারি বা গ্রাফিকভাবে স্বেচ্ছাসেবী শতাংশের পরিবর্তনের প্রতিবেদন করতে কমান্ড লাইন থেকে কল করতে পারি, তা বারে যে উপরে উঠে যায়?

আমার ALSA এবং পালসওডিও উভয়ের সাথে কাজ করার দরকারের কারণটি হ'ল আমি একটি WINE অ্যাপ্লিকেশন ব্যবহার করছি যা নাড়ির সাথে ভাল খেলেন না, তাই আমি অতিরিক্ত বিমূর্ত স্তর ছাড়াই ALSA ব্যবহার করার জন্য উইন্ডোজ অ্যাপ্লিকেশন শুরু করার আগে নাড়িটি মেরে ফেলছি। যখন আমি বুঝতে পেরেছিলাম যে আমার কীবোর্ডের ভলিউম কীগুলি নাড়ি ছাড়া কাজ করে না, তখন আমি কিছু বাশ স্ক্রিপ্ট লিখেছিলাম যেগুলি আমি কমপিজ বা ওপেনবক্সের মাধ্যমে কল করি (যথাক্রমে সিসিএসএম এবং lxde-rc.xML মাধ্যমে কনফিগার করা) pulseaudio --checkএবং এর থেকে বেরিয়ে যাওয়ার সংকেত ধরতে তারপরে ভলিউমটি সামঞ্জস্য করুন:

vol_step_up

#!/bin/bash
pulseaudio --check
if [ $? -eq 0 ] ; then
        pactl set-sink-volume 0 -- +3db
    else
        amixer -c0 set Master playback 3+
fi

vol_step_down

#!/bin/bash
pulseaudio --check
if [ $? -eq 0 ] ; then
        pactl set-sink-volume 0 -- -3db
    else
        amixer -c0 set Master playback 3-
fi

স্ক্রিপ্টগুলি দুর্দান্ত কাজ করে এবং বোতামগুলি ঠিক ঠিকঠাক করে দেয়, তবে আমার কাছে আর দৃশ্যধারণের প্রতিক্রিয়া দেখার ভাল উপায় নেই - এমনকি বোতামের ইভেন্টগুলি ধরার পরেও পালসওডিওগুলিও নেই (এক্সএফ 86 অডিওলওয়ারভলিউম ইত্যাদি)। অবশ্যই আমি অন্য কিছুতে ALSA ভলিউম কীগুলি ম্যাপ করতে পারি, তবে শর্টকাট কীগুলি নকল করার কোনও ধারণা নেই।

আমি একটি পাইথন ভলিউম নিয়ন্ত্রণ পেয়েছি যা আমি উপরের স্ক্রিপ্টগুলিতে কল করতে পারি:
https://github.com/fishman/utils/blob/master/pvol.py

pvol.py -s ALSA এবং পালসোডিও উভয়ের জন্যই স্ক্রিনের বর্তমান ভলিউম স্তরটি দেখায়, তবে আমি যে জিনোম ওএসডি ব্যবহার করছিলাম তার তুলনায় এটি অত্যন্ত ক্ষুদ্রতর এবং এটি উল্লম্ব নয় (শীর্ষে বারে, নীচে পুরানো ওএসডি):

স্ট্যান্ডার্ড ওএসডি এবং pvol.py আকারের তুলনা

সুতরাং, আমি এটিকে আরও বড় করেছি এবং এটিকে চারপাশে ফ্লপ করেছি:

এখানে চিত্র বর্ণনা লিখুন

তবে, ওরিয়েন্টেশনটি উল্লম্ব একটিতে স্যুইচ করার পরেও নীল ডিফল্ট জিটিকে থিমটি ভিএলসির মতো যথেষ্ট চটচটে নয় (নীচে দেখুন)।

ওএসডি বাস্তবায়নগুলির সন্ধানে আমি যা পেয়েছি তার বেশিরভাগটিই বিজ্ঞপ্তি-প্রেরণ কমান্ড সম্পর্কে পোস্ট যা সম্পূর্ণ অগ্রগতি বারের ধারণার অভাব রয়েছে। অন্যথায়, এটি বেশিরভাগ অনুভূমিক বার (এবং ব্যাশ স্ক্রিপ্টগুলির মধ্যে প্রচুর স্থানধারক গণনা করা হয়)। সত্যিই আমাকে যা করতে হবে তা হল অ্যামিক্স এবং প্যাকটেল কল করা, সুতরাং pvol.py তে gtk প্রগতি বারের মতো সাধারণ কিছু দুর্দান্ত হবে - ঠিক তেমন নীল নয় এবং পর্দার ঠিক মাঝখানে নয়।

আপনি পূর্ণ-স্ক্রিন মোডে মাউস হুইলটি স্ক্রোল করার সময় আমার মনে রাখার একটি ভাল উদাহরণ ভিএলসির রয়েছে:

ভিএলসি উল্লম্ব ভলিউম বার

এটি পর্দার কেন্দ্রে বসে থাকা সাধারণ বাক্সগুলির তুলনায় অনেক কম বাধাজনক:

অনুভূমিক ওএসডি ভলিউম বিজ্ঞপ্তি

পুরো অনুভূমিক স্লাইডার সাদৃশ্যটি বাম এবং ডান স্পিকারের মধ্যে প্যানিং অডিওর বাইরে কখনও আমার পক্ষে খুব একটা বোঝায় না।

যাইহোক, ডিফল্ট ডেস্কটপ বিজ্ঞপ্তিগুলি কীভাবে বলা হয় (বিশেষত এলএক্সডিই)? আমি কী প্রেসের ইভেন্টগুলি কনফিগার করার বিষয়ে প্রচুর পোস্ট দেখতে পাচ্ছি, তবে এই ইভেন্টগুলির ট্রিগারটি কী স্ক্রিপ্টগুলিতে তা নয়। উল্লম্ব অভিনব বিভাগে অন্য কোন বিকল্প রয়েছে?

এছাড়াও, আমি স্ক্রিপ্টিং এবং কমিজ বা ওপেনবক্স কমান্ডগুলির মাধ্যমে পরিচালনা করছি এমন ইভেন্টগুলির মধ্যে দ্বন্দ্বগুলি বাধা দেওয়া থেকে বিরত রাখতে আমার কিছু প্যাকেজ আনইনস্টল করা উচিত?

আপডেট: আমি বর্তমানে ওএসডি কী ব্যবহার করছি তা সন্ধানের জন্য, আমি এখনই নিঃশব্দ বোতামটি হ্যান্ডেল করার উপায়টি পরিবর্তন করি নি। Xfce4-notifiedd হত্যা এবং তারপরে নিঃশব্দ বোতামটি টিপানো একটি নতুন xfce4-notifiedd প্রক্রিয়া তৈরি করে, তাই আমি বড় স্পিকার আইকনটি অনুমান করছিলাম যে xfce4-volume এর মতো কিছু থেকে এসেছে, তবে আমার আসলে সেই প্যাকেজটি ইনস্টল নেই ... আহ হা! জিনোম-সেটিংস-ডেমনকে হত্যা করা স্ক্রিনের মাঝখানে বড় ওএসডি থামিয়ে দেয়।


1
দ্রষ্টব্য: এলএক্সডিইডি সহ, আপনাকে প্যানেলটি মেরে ফেলতে হবে এবং যখন আপনি পালসোদিও বন্ধ করবেন বা lxpanel সিপিইউ খাওয়া শুরু করবে।
আদম

5
বাহ কি দুর্দান্ত এবং ভাল চিন্তা প্রশ্ন! +1
শেঠ

উত্তর:


10

ঠিক আছে, আমার নিজের প্রশ্নের উত্তর দেওয়ার ঝুঁকিতে, আমি উপরের প্রশ্নের লিঙ্কটি থেকে pvol এর একসাথে পাইক্ট সংস্করণ হ্যাক করেছি। আর কিছু না হলে, আমার কোডে অন্য কেউ উন্নতি করতে পারে। অবশেষে, আমি নীচের স্ক্রিপ্টের যে অংশগুলি অব্যবহৃত হয়েছি তা থেকে মুক্তি পেতে বা বাশ স্ক্রিপ্টগুলি সমীকরণের বাইরে নিয়ে যাওয়ার এবং বোতামের সমস্ত ইভেন্টের একটি পাইক্ট স্ক্রিপ্ট হ্যান্ডেল করার পরিকল্পনা করছি। এখনই, ওএসডি শেষ বোতাম টিপুনের পরে নির্দিষ্ট সময় ধরে স্থির না হয়ে প্রথম বোতাম টিপুন থেকে ধ্রুবক হারে সময় বের করে।

কেবল ফাইলগুলি অনুলিপি করুন, আটকান এবং সংরক্ষণ করুন, সেগুলি একই ডিরেক্টরিতে রাখুন, এক্সিকিউটেবল বিট সেট করুন এবং আপনি যেখানেই সেভ করবেন সে অনুযায়ী সিস্টেম কলগুলি পাইকটি স্ক্রিপ্টে সংশোধন করুন বা সেগুলিতে রাখুন আপনার পথে যে ডিরেক্টরি। তারপরে শেল স্ক্রিপ্টগুলি কমপিজ কমান্ড, ওপেনবক্স শর্টকাট বা এর অনুরূপ কিছুতে মানচিত্র করুন এবং যদি আপনি মাল্টিমিডিয়া কীবোর্ড ভলিউম বোতাম ব্যবহার না করেন তবে পাইকটি স্ক্রিপ্টটি পরিবর্তন করুন।

দ্রষ্টব্য: শ্রেণীর নাম Qvol ছিল একটি কার্যকরী শিরোনাম, এবং আমি এটি পরিবর্তন করতে বিরক্ত করিনি। দয়া করে নোট করুন যে নিঃশব্দ বোতামটি নিখরচায় চলে যায় - অনুরোধ করা বৈশিষ্ট্যগুলি পূরণের জন্য সম্ভাব্য অ্যাভিনিউটি প্রকাশ করার জন্য এটি কেবলমাত্র একটি প্রোটোটাইপ এবং বর্তমানে এটি কোনও ধরণের হোস্টেড প্রকল্প বা মানক বিকাশের মডেলের সাথে সম্পর্কিত নয়। নীচের কোড থেকে প্রাপ্ত যে কোনও ধরণের উল্লেখযোগ্য বিকাশ সম্ভবত সোর্সফোর্জে, গিটহাব বা কোনও প্রকল্প ওয়েবসাইটের অন্তর্গত। এটি বলেছিল, এই উত্তরটি সম্পাদনা করতে বা কোনও বিদ্যমান প্রকল্পের প্রস্তাব করতে বিনা দ্বিধায় যা ফাংশন এবং ডিজাইনের ক্ষেত্রে একই রকম।

pqvol

vol_step_down

#!/bin/bash
pulseaudio --check
#if [ $? -ne 0 ] ; then
if [ $? -eq 0 ] ; then
        pactl set-sink-volume 0 -- -3db
    else
        amixer -c0 set Master playback 3-
fi

if [ -z "$1" ] ; then
        pqvol -s
fi

vol_step_up

#!/bin/bash
pulseaudio --check
#if [ $? -ne 0 ] ; then
if [ $? -eq 0 ] ; then
        pactl set-sink-volume 0 -- +3db
    else
        amixer -c0 set Master playback 3+
fi

if [ -z "$1" ] ; then
    pqvol -s
fi

pqvol

#!/usr/bin/env python2

# pvol -- Commandline audio volume utility
#         with an optional GTK progressbar
# Copyright (C) 2009 Adrian C. <anrxc_sysphere_org>
# Modified by 2011 Reza Jelveh
# Ported to pyqt and renamed to pqvol 2013 by Adam R.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.


import os.path
import optparse
import alsaaudio
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import QTimer

appname = "Qvol"
#appicon = "/usr/share/icons/ubuntu-mono-light/status/24/audio-volume-high-panel.svg"

DEFAULT_STYLE = """
QProgressBar{
    border: 2px solid grey;
    border-radius: 5px;
    background-color: transparent;
}

QProgressBar::chunk {
    background-color: Gainsboro;
}
"""

class AlsaMixer():
    def __init__(self, pcm=False, mute=False, arg=None):
        self.mixer = alsaaudio.Mixer()
        self.percent = self.mixer.getvolume()[0]
        print self.percent
        self.label = "dB" #% name
        if arg:
            self.percent = min(100, max(0, self.percent + int(arg)))
            self.mixer.setvolume(self.percent)
        if mute:
            mutestate = self.mixer.getmute()[0]
            if mutestate:
                self.label = "Unmuted: "
            else:
                self.label = "Muted: "

            self.mixer.setmute(mutestate^1)
 #     self.label = self.label + "%.0f%%" % self.percent

class Qvol(QtGui.QWidget):

    def __init__(self):
        super(Qvol, self).__init__()
#       self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setWindowFlags(QtCore.Qt.Popup)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.setWindowTitle("Qvol")
        self.initUI()

    def initUI(self):     

        self.pbar = QtGui.QProgressBar(self)
        self.pbar.setGeometry(5, 5, 20, 470)
        self.pbar.setOrientation(QtCore.Qt.Vertical)
        self.pbar.setRange(0,100)
        volume = AlsaMixer()
        self.pbar.setValue(volume.percent)
        self.pbar.setTextVisible(False)
        self.setStyleSheet(DEFAULT_STYLE)

        self.setGeometry(1260, 180, 30, 480)
        self.setWindowTitle('QtGui.QProgressBar')
        self.show()


        QTimer.singleShot(2000, finished)

    def keyPressEvent(self, event):
        if event.key()==QtCore.Qt.Key_VolumeMute:
#           QtGui.QWidget.paintEvent()
            finished()
        elif event.key()==QtCore.Qt.Key_VolumeDown:
            launch_process ("vol_step_down silent")
            volume=AlsaMixer()
            self.pbar.setValue(volume.percent)
#           finished()
        elif event.key()==QtCore.Qt.Key_VolumeUp:
            launch_process ("vol_step_up silent")
            volume=AlsaMixer()
            self.pbar.setValue(volume.percent)
#           finished()

#       else:
#           QtGui.QWidget.keyPressEvent(self, event)


processes = set([])

def launch_process(process):
    # Do something asynchronously
    proc = QtCore.QProcess()
    processes.add(proc)
    proc.start(process)
    proc.waitForFinished(-1)

def finished():
    print "The process is done!"
    # Quit the app
    QtCore.QCoreApplication.instance().quit()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Qvol()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()  

ভলিউম স্টেপ বাশ স্ক্রিপ্টগুলির জন্য "নীরব" যুক্তিগুলি একটি ডামি হ্যাক জাতীয় ধরণের - স্ক্রিপ্টগুলি আসলে যুক্তি উপস্থিত থাকলে তা পরীক্ষা করা ছাড়া আর কিছু করে না। সুতরাং আপনি একই প্রভাব সঙ্গে সেখানে কিছু প্লাগ করতে পারেন।
অ্যাডাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.