diff --git a/.gitignore b/.gitignore index 766af6a..4ab6b63 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ dotfiles/.vim/autoload/plug.vim config/gtk-3.0/bookmarks config/bpytop/error.log config/ranger/plugins/__pycache__ +dotfiles/.ncmpcpp/error.log diff --git a/config/mpd/mpd.conf b/config/mpd/mpd.conf new file mode 100644 index 0000000..4042c5d --- /dev/null +++ b/config/mpd/mpd.conf @@ -0,0 +1,43 @@ +# Files and directories ####################################################### +# +music_directory "/media/nas/Musiques" +playlist_directory "~/.mpd/playlists" +db_file "~/.mpd/database" +log_file "~/.mpd/log" +pid_file "~/.mpd/pid" +state_file "~/.mpd/state" + + +# General music daemon options ################################################ +# +user "dbroqua" +bind_to_address "localhost" +port "6600" + + +# Input ####################################################################### +# +input { + plugin "curl" +} + + +# Audio Output ################################################################ +# +audio_output { + type "pulse" + name "Pulse Output" + mixer_control "Master" +} + +audio_output { + type "fifo" + name "fifo" + path "/tmp/mpd.fifo" + format "44100:16:2" +} + + +# Character Encoding ########################################################## +# +filesystem_charset "UTF-8" diff --git a/config/sway/config b/config/sway/config index 2deb652..48f94fc 100644 --- a/config/sway/config +++ b/config/sway/config @@ -103,6 +103,7 @@ exec $term exec firefox exec spotify exec signal-desktop +exec mpd ### Window config @@ -123,6 +124,7 @@ for_window [app_id="termite" title="Calendar"] floating enable, resize set $moda for_window [app_id="termite" title="File Browser"] floating enable, resize set $modalWidth $modalHeight for_window [app_id="termite" title="Ncdu"] floating enable, resize set $modalWidth $modalHeight for_window [app_id="termite" title="Top"] floating enable, resize set $modalWidth $modalHeight +for_window [app_id="termite" title="Music Player Client"] floating enable, resize set $modalWidth $modalHeight ### Key bindings @@ -169,7 +171,9 @@ bindsym $mod+shift+p exec "$term -t 'Pulse Mixer' -e pulsemixer" bindsym XF86AudioPlay exec ~/Bin/music.sh PlayPause bindsym XF86AudioPrev exec ~/Bin/music.sh Previous bindsym XF86AudioNext exec ~/Bin/music.sh Next +bindsym $mod+m exec "$term -t 'Music Player Client' -e ncmpcpp" +# # Brightness bindsym XF86MonBrightnessDown exec brightnessctl set 5%- bindsym XF86MonBrightnessUp exec brightnessctl set +5% @@ -236,9 +240,6 @@ bindsym $mod+Shift+space floating toggle # Swap focus between the tiling area and the floating area bindsym $mod+space focus mode_toggle -# Toggle second screen (home / homeoffice mode) -bindsym $mod+p output DP-1 toggle - # Resizing containers: bindsym $mod+r mode "resize" diff --git a/config/waybar/config b/config/waybar/config index 33b89ff..c77f217 100644 --- a/config/waybar/config +++ b/config/waybar/config @@ -5,7 +5,7 @@ "margin": 4, "modules-left": [ "sway/workspaces", - "sway/mode" + "sway/mode" ], "modules-center": [ ], @@ -19,9 +19,10 @@ "temperature#2", "temperature#3", "pulseaudio", - "custom/multimedia_previous", - "custom/multimedia_current", - "custom/multimedia_next", +// "custom/multimedia_previous", +// "custom/multimedia_current", +// "custom/multimedia_next", + "mpd", "clock", "tray" ], @@ -96,6 +97,29 @@ "format": "", "on-click": "~/Bin/music.sh Next" }, + "mpd": { + "format": "{stateIcon}{randomIcon}{repeatIcon}{singleIcon} {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ", + "format-disconnected": "Disconnected ", + "format-stopped": "{randomIcon}{repeatIcon}{singleIcon} Stopped ", + "interval": 10, + "random-icons": { + "off": " ", // Icon grayed out when "random" is off + "on": " " + }, + "repeat-icons": { + "off": " ", + "on": " " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "single-icons": { + "on": "1" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, "clock": { "format": "{:%d/%m %H:%M}" }, diff --git a/config/waybar/style.css b/config/waybar/style.css index d30b1a1..3601453 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -24,6 +24,7 @@ window#waybar { #custom-multimedia_current, #custom-multimedia_next, #clock, +#mpd, #tray { padding: 0px 8px 0px 8px; border-radius: 4px; @@ -72,6 +73,7 @@ window#waybar { } /* Style for buttons */ +#mpd, #custom-spotify, #custom-multimedia_previous, #custom-multimedia_current, diff --git a/dotfiles/.ncmpcpp/bindings b/dotfiles/.ncmpcpp/bindings new file mode 100644 index 0000000..f561eaf --- /dev/null +++ b/dotfiles/.ncmpcpp/bindings @@ -0,0 +1,545 @@ +# Source: /usr/share/doc/ncmpcpp-0.8.2-r1/bindings.bz2 +# +############################################################## +## This is the example bindings file. Copy it to ## +## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ## +## and set up your preferences ## +############################################################## +## +##### General rules ##### +## +## 1) Because each action has runtime checks whether it's +## ok to run it, a few actions can be bound to one key. +## Actions will be bound in order given in configuration +## file. When a key is pressed, first action in order +## will test itself whether it's possible to run it. If +## test succeeds, action is executed and other actions +## bound to this key are ignored. If it doesn't, next +## action in order tests itself etc. +## +## 2) It's possible to bind more that one action at once +## to a key. It can be done using the following syntax: +## +## def_key "key" +## action1 +## action2 +## ... +## +## This creates a chain of actions. When such chain is +## executed, each action in chain is run until the end of +## chain is reached or one of its actions fails to execute +## due to its requirements not being met. If multiple actions +## and/or chains are bound to the same key, they will be +## consecutively run until one of them gets fully executed. +## +## 3) When ncmpcpp starts, bindings configuration file is +## parsed and then ncmpcpp provides "missing pieces" +## of default keybindings. If you want to disable some +## bindings, there is a special action called 'dummy' +## for that purpose. Eg. if you want to disable ability +## to crop playlists, you need to put the following +## into configuration file: +## +## def_key "C" +## dummy +## +## After that ncmpcpp will not bind any default action +## to this key. +## +## 4) To let you write simple macros, the following special +## actions are provided: +## +## - push_character "character" - pushes given special +## character into input queue, so it will be immediately +## picked by ncmpcpp upon next call to readKey function. +## Accepted values: mouse, up, down, page_up, page_down, +## home, end, space, enter, insert, delete, left, right, +## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\, +## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace. +## In addition, most of these names can be prefixed with +## alt-/ctrl-/shift- to be recognized with the appropriate +## modifier key(s). +## +## - push_characters "string" - pushes given string into +## input queue. +## +## - require_runnable "action" - checks whether given action +## is runnable and fails if it isn't. This is especially +## useful when mixed with previous two functions. Consider +## the following macro definition: +## +## def_key "key" +## push_characters "custom_filter" +## apply_filter +## +## If apply_filter can't be currently run, we end up with +## sequence of characters in input queue which will be +## treated just as we typed them. This may lead to unexpected +## results (in this case 'c' will most likely clear current +## playlist, 'u' will trigger database update, 's' will stop +## playback etc.). To prevent such thing from happening, we +## need to change above definition to this one: +## +## def_key "key" +## require_runnable "apply_filter" +## push_characters "custom_filter" +## apply_filter +## +## Here, first we test whether apply_filter can be actually run +## before we stuff characters into input queue, so if condition +## is not met, whole chain is aborted and we're fine. +## +## - require_screen "screen" - checks whether given screen is +## currently active. accepted values: browser, clock, help, +## media_library, outputs, playlist, playlist_editor, +## search_engine, tag_editor, visualizer, last_fm, lyrics, +## selected_items_adder, server_info, song_info, +## sort_playlist_dialog, tiny_tag_editor. +## +## - run_external_command "command" - runs given command using +## system() function. +## +## 5) In addition to binding to a key, you can also bind actions +## or chains of actions to a command. If it comes to commands, +## syntax is very similar to defining keys. Here goes example +## definition of a command: +## +## def_command "quit" [deferred] +## stop +## quit +## +## If you execute the above command (which can be done by +## invoking action execute_command, typing 'quit' and pressing +## enter), ncmpcpp will stop the player and then quit. Note the +## presence of word 'deferred' enclosed in square brackets. It +## tells ncmpcpp to wait for confirmation (ie. pressing enter) +## after you typed quit. Instead of 'deferred', 'immediate' +## could be used. Then ncmpcpp will not wait for confirmation +## (enter) and will execute the command the moment it sees it. +## +## Note: while command chains are executed, internal environment +## update (which includes current window refresh and mpd status +## update) is not performed for performance reasons. However, it +## may be desirable to do so in some situration. Therefore it's +## possible to invoke by hand by performing 'update enviroment' +## action. +## +## Note: There is a difference between: +## +## def_key "key" +## action1 +## +## def_key "key" +## action2 +## +## and +## +## def_key "key" +## action1 +## action2 +## +## First one binds two single actions to the same key whilst +## second one defines a chain of actions. The behavior of +## these two is different and is described in (1) and (2). +## +## Note: Function def_key accepts non-ascii characters. +## +##### List of unbound actions ##### +## +## The following actions are not bound to any key/command: +## +## - set_volume +## +# +#def_key "mouse" +# mouse_event +# +#def_key "up" +# scroll_up +# +#def_key "shift-up" +# select_item +# scroll_up +# +#def_key "down" +# scroll_down +# +#def_key "shift-down" +# select_item +# scroll_down +# +#def_key "[" +# scroll_up_album +# +#def_key "]" +# scroll_down_album +# +#def_key "{" +# scroll_up_artist +# +#def_key "}" +# scroll_down_artist +# +#def_key "page_up" +# page_up +# +#def_key "page_down" +# page_down +# +#def_key "home" +# move_home +# +#def_key "end" +# move_end +# +#def_key "insert" +# select_item +# +#def_key "enter" +# enter_directory +# +#def_key "enter" +# toggle_output +# +#def_key "enter" +# run_action +# +#def_key "enter" +# play_item +# +#def_key "space" +# add_item_to_playlist +# +#def_key "space" +# toggle_lyrics_update_on_song_change +# +#def_key "space" +# toggle_visualization_type +# +#def_key "delete" +# delete_playlist_items +# +#def_key "delete" +# delete_browser_items +# +#def_key "delete" +# delete_stored_playlist +# +#def_key "right" +# next_column +# +#def_key "right" +# slave_screen +# +#def_key "right" +# volume_up +# +#def_key "+" +# volume_up +# +#def_key "left" +# previous_column +# +#def_key "left" +# master_screen +# +#def_key "left" +# volume_down +# +#def_key "-" +# volume_down +# +#def_key ":" +# execute_command +# +#def_key "tab" +# next_screen +# +#def_key "shift-tab" +# previous_screen +# +#def_key "f1" +# show_help +# +#def_key "1" +# show_playlist +# +#def_key "2" +# show_browser +# +#def_key "2" +# change_browse_mode +# +#def_key "3" +# show_search_engine +# +#def_key "3" +# reset_search_engine +# +#def_key "4" +# show_media_library +# +#def_key "4" +# toggle_media_library_columns_mode +# +#def_key "5" +# show_playlist_editor +# +#def_key "6" +# show_tag_editor +# +#def_key "7" +# show_outputs +# +#def_key "8" +# show_visualizer +# +#def_key "=" +# show_clock +# +#def_key "@" +# show_server_info +# +#def_key "s" +# stop +# +#def_key "p" +# pause +# +#def_key ">" +# next +# +#def_key "<" +# previous +# +#def_key "ctrl-h" +# jump_to_parent_directory +# +#def_key "ctrl-h" +# replay_song +# +#def_key "backspace" +# jump_to_parent_directory +# +#def_key "backspace" +# replay_song +# +#def_key "f" +# seek_forward +# +#def_key "b" +# seek_backward +# +#def_key "r" +# toggle_repeat +# +#def_key "z" +# toggle_random +# +#def_key "y" +# save_tag_changes +# +#def_key "y" +# start_searching +# +#def_key "y" +# toggle_single +# +#def_key "R" +# toggle_consume +# +#def_key "Y" +# toggle_replay_gain_mode +# +#def_key "T" +# toggle_add_mode +# +#def_key "|" +# toggle_mouse +# +#def_key "#" +# toggle_bitrate_visibility +# +#def_key "Z" +# shuffle +# +#def_key "x" +# toggle_crossfade +# +#def_key "X" +# set_crossfade +# +#def_key "u" +# update_database +# +#def_key "ctrl-s" +# sort_playlist +# +#def_key "ctrl-s" +# toggle_browser_sort_mode +# +#def_key "ctrl-s" +# toggle_media_library_sort_mode +# +#def_key "ctrl-r" +# reverse_playlist +# +#def_key "ctrl-f" +# apply_filter +# +#def_key "ctrl-_" +# select_found_items +# +#def_key "/" +# find +# +#def_key "/" +# find_item_forward +# +#def_key "?" +# find +# +#def_key "?" +# find_item_backward +# +#def_key "." +# next_found_item +# +#def_key "," +# previous_found_item +# +#def_key "w" +# toggle_find_mode +# +#def_key "e" +# edit_song +# +#def_key "e" +# edit_library_tag +# +#def_key "e" +# edit_library_album +# +#def_key "e" +# edit_directory_name +# +#def_key "e" +# edit_playlist_name +# +#def_key "e" +# edit_lyrics +# +#def_key "i" +# show_song_info +# +#def_key "I" +# show_artist_info +# +#def_key "g" +# jump_to_position_in_song +# +#def_key "l" +# show_lyrics +# +#def_key "ctrl-v" +# select_range +# +#def_key "v" +# reverse_selection +# +#def_key "V" +# remove_selection +# +#def_key "B" +# select_album +# +#def_key "a" +# add_selected_items +# +#def_key "c" +# clear_playlist +# +#def_key "c" +# clear_main_playlist +# +#def_key "C" +# crop_playlist +# +#def_key "C" +# crop_main_playlist +# +#def_key "m" +# move_sort_order_up +# +#def_key "m" +# move_selected_items_up +# +#def_key "n" +# move_sort_order_down +# +#def_key "n" +# move_selected_items_down +# +#def_key "M" +# move_selected_items_to +# +#def_key "A" +# add +# +#def_key "S" +# save_playlist +# +#def_key "o" +# jump_to_playing_song +# +#def_key "G" +# jump_to_browser +# +#def_key "G" +# jump_to_playlist_editor +# +#def_key "~" +# jump_to_media_library +# +#def_key "E" +# jump_to_tag_editor +# +#def_key "U" +# toggle_playing_song_centering +# +#def_key "P" +# toggle_display_mode +# +#def_key "\\" +# toggle_interface +# +#def_key "!" +# toggle_separators_between_albums +# +#def_key "L" +# toggle_lyrics_fetcher +# +#def_key "F" +# fetch_lyrics_in_background +# +#def_key "alt-l" +# toggle_fetching_lyrics_in_background +# +#def_key "ctrl-l" +# toggle_screen_lock +# +#def_key "`" +# toggle_library_tag_type +# +#def_key "`" +# refetch_lyrics +# +#def_key "`" +# add_random_items +# +#def_key "ctrl-p" +# set_selected_items_priority +# +#def_key "q" +# quit +# diff --git a/dotfiles/.ncmpcpp/config b/dotfiles/.ncmpcpp/config new file mode 100644 index 0000000..333c724 --- /dev/null +++ b/dotfiles/.ncmpcpp/config @@ -0,0 +1,2 @@ +# Source: /usr/share/doc/ncmpcpp-0.8.2-r1/config.bz2 +visualizer_type = wave_filled