From 417be6158385404b4a4eb0597b4e6c42494eb404 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Wed, 11 May 2022 18:02:25 +0300 Subject: [PATCH] Updated readme --- .local/bin/omnipause | 129 +++++++++++++++++++++++++++++++++++++++++++ .zshenv | 1 + README.md | 23 ++++++-- 3 files changed, 148 insertions(+), 5 deletions(-) create mode 100755 .local/bin/omnipause create mode 120000 .zshenv diff --git a/.local/bin/omnipause b/.local/bin/omnipause new file mode 100755 index 00000000..c43fc033 --- /dev/null +++ b/.local/bin/omnipause @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +# 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 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + + +import dbus +import sys +import os +from dbus.mainloop.glib import DBusGMainLoop + + +directory = '/tmp/omniPause' +players = [] +DBusGMainLoop(set_as_default=True) +bus = dbus.SessionBus() + +def do_nothing(*args, **kwargs): + pass + +def get_player_name(i, player): + if i.startswith("org.mpris.MediaPlayer2."): + return i[len("org.mpris.MediaPlayer2."):] + else: + return player.Get('org.mpris.MediaPlayer2','DesktopEntry', dbus_interface='org.freedesktop.DBus.Properties') + + +def pause(): + player_names = [] + for i in players: + player = bus.get_object(i, '/org/mpris/MediaPlayer2') + player_status = player.Get('org.mpris.MediaPlayer2.Player','PlaybackStatus', dbus_interface='org.freedesktop.DBus.Properties') + if player_status == 'Playing': + player_name = get_player_name(i, player) + player_names.append(player_name) + player.Pause(dbus_interface='org.mpris.MediaPlayer2.Player', reply_handler=do_nothing, error_handler=do_nothing) + + if player_names != []: + for i in os.listdir(directory+'/paused-players/'): + os.remove(directory+'/paused-players/'+i) + for player_name in player_names: + player_status_file = open(directory+'/paused-players/'+player_name, "w") + player_status_file.close() + +def play(): + for i in os.listdir(directory+'/paused-players/'): + try: + player = bus.get_object('org.mpris.MediaPlayer2.'+i, '/org/mpris/MediaPlayer2') + except: + if i in os.listdir(directory+'/paused-players'): + os.remove(directory+'/paused-players/'+i) + continue + player_status = player.Get('org.mpris.MediaPlayer2.Player','PlaybackStatus', dbus_interface='org.freedesktop.DBus.Properties') + if player_status == 'Paused': + player.Play(dbus_interface='org.mpris.MediaPlayer2.Player', reply_handler=do_nothing, error_handler=do_nothing) + if i in os.listdir(directory+'/paused-players'): + os.remove(directory+'/paused-players/'+i) + +def stop(): + for i in players: + player = bus.get_object(i, '/org/mpris/MediaPlayer2') + player_status = player.Get('org.mpris.MediaPlayer2.Player','PlaybackStatus', dbus_interface='org.freedesktop.DBus.Properties') + if player_status == 'Playing' or player_status == 'Stopped': + player.Stop(dbus_interface='org.mpris.MediaPlayer2.Player', reply_handler=do_nothing, error_handler=do_nothing) +def toggle(): + playing = False + for i in players: + player = bus.get_object(i, '/org/mpris/MediaPlayer2') + player_status = player.Get('org.mpris.MediaPlayer2.Player','PlaybackStatus', dbus_interface='org.freedesktop.DBus.Properties') + if player_status == 'Playing': + playing = True + if playing: + pause() + else: + play() +def next(): + for i in players: + player = bus.get_object(i, '/org/mpris/MediaPlayer2') + player_status = player.Get('org.mpris.MediaPlayer2.Player','PlaybackStatus', dbus_interface='org.freedesktop.DBus.Properties') + if player_status == 'Playing': + player.Next(dbus_interface='org.mpris.MediaPlayer2.Player', reply_handler=do_nothing, error_handler=do_nothing) +def previous(): + for i in players: + player = bus.get_object(i, '/org/mpris/MediaPlayer2') + player_status = player.Get('org.mpris.MediaPlayer2.Player','PlaybackStatus', dbus_interface='org.freedesktop.DBus.Properties') + if player_status == 'Playing': + player.Previous(dbus_interface='org.mpris.MediaPlayer2.Player', reply_handler=do_nothing, error_handler=do_nothing) + +def getPlayerList(): + for i in bus.list_names(): + if i.startswith("org.mpris.MediaPlayer2."): + players.append(i) + +if not os.path.isdir(directory): + os.makedirs(directory) + if not os.path.isdir(directory+'/players'): + os.makedirs(directory+'/players') + if not os.path.isdir(directory+'/paused-players'): + os.makedirs(directory+'/paused-players') + + +if len(sys.argv)-1 == 1: + getPlayerList() + if sys.argv[1] == 'pause': + pause() + elif sys.argv[1] == 'play': + play() + elif sys.argv[1] == 'stop': + stop() + elif sys.argv[1] == 'next': + next() + elif sys.argv[1] == 'previous': + previous() + elif sys.argv[1] == 'toggle': + toggle() + else: + print("Error: Valid commands to "+sys.argv[0]+"are: pause, play, stop, next, previous, or toggle") +else: + print("Usage: "+sys.argv[0]+" [pause|play|stop|next|previous|toggle]") diff --git a/.zshenv b/.zshenv new file mode 120000 index 00000000..9fbf4d21 --- /dev/null +++ b/.zshenv @@ -0,0 +1 @@ +.config/zsh/.zshenv \ No newline at end of file diff --git a/README.md b/README.md index 9b3b7324..b0c070ea 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,20 @@ -# Kristofers Solo config files -## Dependencies -* [omnipause](https://github.com/mel00010/OmniPause) -* [pulsemixer](https://github.com/GeorgeFilipkin/pulsemixer) -* [Image preview for lf](https://github.com/cirala/lfimg) +# The Solorice (Kristofers Solo dotfiles) + +- Very useful scripts are in `~/.local/bin/` +- Settings for: + - vim/nvim (text editor) + - zsh (shell) + - lf (file manager) + - nsxiv (image/gif viewer) + - mpv (video player) +- I try to minimize what's directly in `~` so: + - All configs that can be in `~/.config/` are. + - Some environmental variables have been set in `~/.zprofile` to move configs into `~/.config/` +## Credits +- [lfimg by cirala](https://github.com/cirala/lfimg) +- [omnipause by mel00010](https://github.com/mel00010/OmniPause) +- [pulsemixer by GeorgeFilipkin](https://github.com/GeorgeFilipkin/pulsemixer) +- [awesome-wm-widgets by streetturtle](https://github.com/streetturtle/awesome-wm-widgets) +