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