You are not logged in.

#151 2013-08-19 20:06:52

mikkelsen
Member
Registered: 2013-08-19
Posts: 1

Re: Share your xmonad desktop!

my first xmonad setup. With a "space" theme.
scrot.jpg

Offline

#152 2014-08-20 05:29:53

yoman18
Member
Registered: 2014-08-20
Posts: 9

Re: Share your xmonad desktop!

- ncmpcpp / with tmux / float layout
  z5I4aoR.png  ZgWq4xl.png t4t7bK7.png

- tiled layout / tty framebuffer / circle layout (normal use)
  rnBvJx1.png  WOcqBAp.png  Lpvwa3I.png 

- fake busy / fake busy / fake busy
  kkhsSr9.png] pOSBa19.png 9myx9Hd.png

- wallpaper : solid #000000
- running apps  : opera v12.16, urxvt, ranger, mpv, etc.
- panel : dzen2, trayer, xmobar x2(transparency alpha=0), dmenu2, xmonad gridselect
- compositer : xcompmgr(urxvt depth=32 "real(true)" transparency), with urxvt depth=24 "fake" transparency for ranger w3mimg-display preview, urxvt fade/shade in/out, no shadow
- Black, Dark red, White ...  : GTK-sable red, qtconfig, Stylish CSS web addon
- Etc.

Last edited by yoman18 (2016-04-20 13:53:52)

Offline

#153 2014-09-05 00:43:44

davama
Member
From: NY
Registered: 2014-02-07
Posts: 36

Re: Share your xmonad desktop!

yoman18 wrote:

single mornitor setting
- ncmpcpp with tmux script
  http://i.imgur.com/ZgWq4xl.png

yoman18 your setup is amazing!! Think you can share that tmux-ncmpcpp script?

Here's my humble xmonad setup.
HUVDYuRm.png
xn3VdWim.png

Clickable xmobar WS, mpdlib, named layouts, ncmpcpp running with terminator

Use my setup for 3 different computers. For single screen comp my xmobars simple go on top and bottom. Still trying to figure out why the urgencyhook breaks my clickable xmobar. Very happy with current setup but I do see some room for improvement. Little by little i guess.

If anyone interested in xmonad.hs file
https://raw.githubusercontent.com/davam … /xmonad.hs





-- mod edit: read the rules and only post thumbnails https://bbs.archlinux.org/viewtopic.php?id=61754  [jwr] --

Last edited by davama (2016-02-24 21:58:49)

Offline

#154 2014-09-05 12:32:23

yoman18
Member
Registered: 2014-08-20
Posts: 9

Re: Share your xmonad desktop!

davama wrote:

yoman18 your setup is amazing!! Think you can share that tmux-ncmpcpp script?


thanks..

  • ~/.ncmpcpp/config

    #################################################################################
    ## this is example configuration file, copy it to                              ## 
    ## ~/.ncmpcpp/config and set up your preferences                               ##
    #################################################################################
    #
    ##### directories ######
    ##
    ## Directory for storing ncmpcpp related files.
    ## Changing it is useful if you want to store
    ## everything somewhere else and provide command
    ## line setting for alternative location to config
    ## file which defines that while launching ncmpcpp.
    ##
    #
    ncmpcpp_directory = "~/.ncmpcpp"
    #
    ##
    ## Directory for storing downloaded lyrics. It
    ## defaults to ~/.lyrics since other MPD clients
    ## (eg. ncmpc) also use that location.
    ##
    #
    lyrics_directory = "~/.lyrics"
    #
    ##### connection settings #####
    #
    ## set it in order to make tag editor and renaming files work properly
    #
    mpd_host = "127.0.0.1"
    #
    mpd_port = "6600"
    #
    mpd_music_dir = "~/Music"
    #
    mpd_connection_timeout = "5"
    #
    mpd_crossfade_time = "5"
    #
    mpd_communication_mode = "notifications" (polling/notifications)
    #
    ##### music visualizer #####
    ##
    ## Note: In order to make music visualizer work you'll
    ## need to use mpd fifo output, whose format parameter
    ## has to be set to 44100:16:1 for mono visualization
    ## or 44100:16:2 for stereo visualization. Example
    ## configuration (it has to be put into mpd.conf):
    ##
    ## audio_output {
    ##        type            "fifo"
    ##        name            "My FIFO"
    ##        path            "/tmp/mpd.fifo"
    ##        format          "44100:16:2"
    ## }
    ##
    #
    ##
    ## If you set format to 44100:16:2, make it 'yes'.
    ##
    #
    visualizer_in_stereo = "yes"
    #
    visualizer_fifo_path = "/tmp/mpd.fifo"
    #
    ##
    ## Note: Below parameter is needed for ncmpcpp
    ## to determine which output provides data for
    ## visualizer and thus allow syncing between
    ## visualization and sound as currently there
    ## are some problems with it.
    ##
    #
    visualizer_output_name = "FIFO"
    #
    ##
    ## Note: Below parameter defines how often ncmpcpp
    ## has to "synchronize" visualizer and audio outputs.
    ## 30 seconds is optimal value, but if you experience
    ## synchronization problems, set it to lower value.
    ## Keep in mind that sane values start with >=10.
    ##
    #
    visualizer_sync_interval = "30"
    #
    ##
    ## Note: To enable spectrum frequency visualization
    ## you need to compile ncmpcpp with fftw3 support.
    ##
    #
    visualizer_type = "spectrum" (spectrum/wave)
    #
    visualizer_look = "◆│"
    #visualizer_look = " ▊"
    #
    ##### system encoding #####
    ##
    ## ncmpcpp should detect your charset encoding
    ## but if it failed to do so, you can specify
    ## charset encoding you are using here.
    ##
    ## Note: You can see whether your ncmpcpp build
    ## supports charset detection by checking output
    ## of `ncmpcpp --version`.
    ##
    ## Note: Since MPD uses utf8 by default, setting
    ## this option makes sense only if your encoding
    ## is different.
    ##
    #
    system_encoding = "UTF-8"
    #
    ##### delays #####
    #
    ## delay after playlist highlighting will be disabled (0 = don't disable)
    #
    playlist_disable_highlight_delay = "5"
    #
    ## defines how long various messages are supposed to be visible
    #
    message_delay_time = "4"
    #
    ##### song format #####
    ##
    ## for song format you can use:
    ##
    ## %l - length
    ## %f - filename
    ## %D - directory
    ## %a - artist
    ## %A - album artist
    ## %t - title
    ## %b - album
    ## %y - year
    ## %n - track number (01/12 -> 01)
    ## %N - full track info (01/12 -> 01/12)
    ## %g - genre
    ## %c - composer
    ## %p - performer
    ## %d - disc
    ## %C - comment
    ## $R - begin right alignment
    ##
    ## you can also put them in { } and then it will be displayed
    ## only if all requested values are available and/or define alternate
    ## value with { }|{ } eg. {%a - %t}|{%f}
    ##
    ## Note: If you want to set limit on maximal length of a tag, just
    ## put the appropriate number between % and character that defines
    ## tag type, e.g. to make album take max. 20 terminal cells, use '%20b'.
    ##
    ## Note: Format that is similar to "%a - %t" (i.e. without any additional
    ## braces) is equal to "{%a - %t}", so if one of the tags is missing,
    ## you'll get nothing.
    ##
    ## text can also have different color than the main window has,
    ## eg. if you want length to be green, write $3%l$9
    ##
    ## available values:
    ##
    ## - 0 - default window color (discards all other colors)
    ## - 1 - black
    ## - 2 - red
    ## - 3 - green
    ## - 4 - yellow
    ## - 5 - blue
    ## - 6 - magenta
    ## - 7 - cyan
    ## - 8 - white
    ## - 9 - end of current color
    ##
    ## Note: colors can be nested.
    ##
    #
    #song_list_format = "{%a - }{%t}|{$8%f$9}$R{$3(%l)$9}"
    song_list_format = "{$5%a $9}{$2%t$9}|{$5%f$9}$5$R{%b }{$3%7l$9}$9"
    #
    #
    song_status_format = "{{%a{ \"%b\"{ (%y)}} - }{%t}}|{%f}"
    #
    song_library_format = "{%n - }{%t}|{%f}"
    #
    tag_editor_album_format = "{(%y) }%b"
    #
    ##
    ## Note: Below variables are for alternative version of user's interface.
    ## Their syntax supports all tags and colors listed above plus some extra
    ## markers used for text attributes. They are followed by character '$'.
    ## After that you can put:
    ##
    ## - b - bold text
    ## - u - underline text
    ## - r - reverse colors
    ## - a - use alternative character set
    ##
    ## If you don't want to use an attribute anymore, just put it again, but
    ## this time insert character '/' between '$' and attribute character,
    ## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename
    ## with reversed colors.
    ##
    #
    #alternative_header_first_line_format = "$b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b"
    #
    #alternative_header_second_line_format = "{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}"
    #
    ##
    ## Note: Below variables also supports
    ## text attributes listed above.
    ##
    #
    now_playing_prefix = "$b"
    #
    now_playing_suffix = "$/b"
    #
    browser_playlist_prefix = "$2playlist$9 "
    #
    selected_item_prefix = "$6"
    #
    selected_item_suffix = "$9"
    #
    ## colors are not supported for below variable
    #
    song_window_title_format = "{%a - }{%t}|{%f}"
    #
    ##### columns settings #####
    ##
    ## syntax of song columns list format is "column column etc."
    ##
    ## - syntax for each column is:
    ##
    ## (width of column)[column's color]{displayed tag}
    ##
    ## Note: Width is by default in %, if you want a column to
    ## have fixed size, add 'f' after the value, e.g. (10)[white]{a}
    ## will be the column that take 10% of screen (so the real column's
    ## width will depend on actual screen size), whereas (10f)[white]{a}
    ## will take 10 terminal cells, no matter how wide the screen is.
    ##
    ## - color is optional (if you want the default one, type [])
    ##
    ## Note: You can give a column additional attributes by putting appropriate
    ## character after displayed tag character. Available attributes are:
    ##
    ## - r - column will be right aligned
    ## - E - if tag is empty, empty tag marker won't be displayed
    ##
    ## You can also:
    ##
    ## - give a column custom name by putting it after attributes,
    ##   separated with character ':', e.g. {lr:Length} gives you
    ##   right aligned column of lengths named "Length".
    ##
    ## - define sequence of tags, that have to be displayed in case
    ##   predecessor is empty in a way similar to the one in classic
    ##   song format, i.e. using '|' character, e.g. {a|c|p:Owner}
    ##   creates column named "Owner" that tries to display artist
    ##   tag and then composer and performer if previous ones are
    ##   not available.
    ##
    #
    #song_columns_list_format = "(7f)[green]{l} (25)[cyan]{a} (40)[]{t|f} (30)[red]{b}"
    song_columns_list_format = "(6f)[green]{l} (40)[yellow]{t|f} (25)[cyan]{a} (30)[red]{b}"
    #
    ##### various settings #####
    #
    ##
    ## Note: Custom command that will be executed each
    ## time song changes. Useful for notifications etc.
    ##
    ## Attention: It doesn't support song format anymore.
    ## Use `ncmpcpp --now-playing SONG_FORMAT` instead.
    ##
    #execute_on_song_change = ""
    #
    playlist_show_remaining_time = "no"
    #
    playlist_shorten_total_times = "no"
    #
    playlist_separate_albums = "no"
    #
    playlist_display_mode = "classic" (classic/columns)
    #
    browser_display_mode = "classic" (classic/columns)
    #
    search_engine_display_mode = "classic" (classic/columns)
    #
    playlist_editor_display_mode = "columns" (classic/columns)
    #
    discard_colors_if_item_is_selected = "yes"
    #
    incremental_seeking = "yes"
    #
    seek_time = "1"
    #
    autocenter_mode = "yes"
    #
    centered_cursor = "yes"
    #
    ##
    ## Note: You can specify third character which will
    ## be used to build 'empty' part of progressbar.
    ##
    #progressbar_look = "=>"
    #progressbar_look = "• ─"
    progressbar_look = "─╼ "
    #progressbar_look = "─⊙ "
    #progressbar_look = "◾◾◽"
    #
    #
    default_place_to_search_in = "database" (database/playlist)
    #
    user_interface = "classic" (classic/alternative)
    #
    media_library_left_column = "a" (possible values: a,y,g,c,p, legend above)
    #
    default_find_mode = "wrapped" (wrapped/normal)
    #
    default_space_mode = "add" (add/select)
    #
    default_tag_editor_left_col = "albums" (albums/dirs)
    #
    default_tag_editor_pattern = "%n - %t"
    #
    #header_visibility = "yes"
    header_visibility = "no"
    #
    #
    #statusbar_visibility = "yes"
    statusbar_visibility = "no"
    #
    #
    titles_visibility = "yes"
    #
    header_text_scrolling = "yes"
    #
    fancy_scrolling = "yes"
    #
    cyclic_scrolling = "no"
    #
    lines_scrolled = "2"
    #
    follow_now_playing_lyrics = "yes"
    #
    fetch_lyrics_for_current_song_in_background = "yes"
    #
    store_lyrics_in_song_dir = "yes"
    #
    ##
    ## Note: If you set this variable, ncmpcpp will try to
    ## get info from last.fm in language you set and if it
    ## fails, it will fall back to english. Otherwise it will
    ## use english the first time.
    ##
    ## Note: Language has to be expressed as an ISO 639 alpha-2 code.
    ##
    lastfm_preferred_language = ""
    #
    ncmpc_like_songs_adding = "no" (enabled - add/remove, disabled - always add)
    #
    show_hidden_files_in_local_browser = "no"
    #
    display_screens_numbers_on_start = "yes"
    #
    ##
    ## How shall key_screen_switcher work?
    ##
    ## - "previous" - switch between current and last used screen
    ## - "sequence: 2 -> 9 -> 5" - switch between given sequence of screens.
    ##
    ## Screen numbers you can use after 'sequence' keyword are:
    ##
    ## - 1 - help
    ## - 2 - playlist
    ## - 3 - browser
    ## - 4 - search engine
    ## - 5 - media library
    ## - 6 - playlist editor
    ## - 7 - tag editor
    ## - 8 - outputs
    ## - 9 - visualizer
    ## - 10 - clock
    ##
    ## As you can see, above example will switch between
    ## playlist, visualizer and media library screens.
    ##
    screen_switcher_mode = "sequence: 2 -> 3"
    #
    ##
    ## Default width of locked screen (in %).
    ## Acceptable values are from 20 to 80.
    ##
    #
    #locked_screen_width_part = "50"
    locked_screen_width_part = "60"
    #
    #
    ask_for_locked_screen_width_part = "yes"
    #
    ##
    ## Note: You can define startup screen for ncmpcpp
    ## by choosing screen number from the list above.
    ##
    startup_screen = "2"
    #
    jump_to_now_playing_song_at_start = "yes"
    #
    ask_before_clearing_main_playlist = "no"
    #
    clock_display_seconds = "no"
    #
    display_volume_level = "yes"
    #
    #display_bitrate = "no"
    display_bitrate = "yes"
    #
    #
    display_remaining_time = "no"
    #
    regular_expressions = "basic" (basic/extended)
    #
    ##
    ## Note: If below is enabled, ncmpcpp will ignore leading
    ## "The" word while sorting items in browser, tags in
    ## media library, etc.
    ##
    ignore_leading_the = "no"
    #
    block_search_constraints_change_if_items_found = "yes"
    #
    mouse_support = "yes"
    #
    mouse_list_scroll_whole_page = "yes"
    #
    empty_tag_marker = "<empty>"
    #
    tag_editor_extended_numeration = "no"
    #
    media_library_display_date = "yes"
    #
    media_library_display_empty_tag = "yes"
    #
    media_library_disable_two_column_mode = "no"
    #
    enable_window_title = "yes"
    #
    ##
    ## Note: You can choose default search mode for search
    ## engine. Available modes are:
    ##
    ## - 1 - use mpd built-in searching (no regexes, pattern matching)
    ## - 2 - use ncmpcpp searching (pattern matching with support for regexes,
    ##       but if your mpd is on a remote machine, downloading big database
    ##       to process it can take a while
    ## - 3 - match only exact values (this mode uses mpd function for searching
    ##       in database and local one for searching in current playlist)
    ##
    #
    search_engine_default_search_mode = "1"
    #
    ##
    ## Note: Below variables can allow you to physically
    ## remove files and directories from your hdd using
    ## ncmpcpp's browser screen.
    ##
    #
    allow_physical_files_deletion = "no"
    #
    allow_physical_directories_deletion = "no"
    #
    external_editor = "easytag"
    #
    use_console_editor = "no" (set to yes, if your editor is console app)
    #
    ##### colors definitions #####
    #
    colors_enabled = "yes"
    #
    mpty_tag_color = "cyan"
    #
    #header_window_color = "default"
    header_window_color = "blue"
    #
    #
    #volume_color = "default"
    volume_color = "cyan"
    #
    #
    state_line_color = "default"
    #
    #state_flags_color = "default"
    state_flags_color = "blue"
    #
    #
    #main_window_color = "yellow"
    main_window_color = "white"
    #
    #
    color1 = "white"
    #
    color2 = "green"
    #
    #main_window_highlight_color = "yellow"
    main_window_highlight_color = "cyan"
    #
    #
    #progressbar_color = "default"
    progressbar_color = "red"
    #
    #
    statusbar_color = "default"
    #
    alternative_ui_separator_color = "black"
    #
    active_column_color = "red"
    #
    visualizer_color = "magenta"
    #
    window_border_color = "green"
    #
    active_window_border = "red"
    #
  • ~/.ncmpcpp/ncmpcpp_tmux

    #!/bin/bash
    
    #################################################################################
    ## this is example configuration file, copy it to                              ##
    ## ~/.ncmpcpp/ncmpcpp_tmux and set up preferences                              ##
    ## from ncmpcpp-tmux session : https://bbs.archlinux.org/viewtopic.php?id=66488&p=5 #113 posting by MadCatMk2        ##
    #################################################################################
    
    SESSION=ncmpcpp
    
    tmux -2 has-session -t $SESSION
    if [ $? -eq 0 ]; then
    	tmux -2 attach -t $SESSION
    	exit 0;
    fi
    
    # ncmpcpp -s, --screen <name>
    # Specify the startup screen (<name> may be: help, playlist, browser, search-engine, media-library, playlist-editor, tag-editor, outputs, visualizer, clock)
    tmux -2 new-session -d -s $SESSION 'ncmpcpp -s playlist'		# top
    tmux -2 split-window -d -t $SESSION:0 -p 40 'ncmpcpp -s search-engine'	# bottom
    #tmux -2 split-window -d -t $SESSION:0 -p 50 'ncmpcpp -s media-library'	# middle
    tmux -2 split-window -d -t $SESSION:0 -p 50 'ncmpcpp -s visualizer'	# middle
    
    # select split bottom
    # select split bottom
    #tmux -2 select-pane -t $SESSION:0.1
    # select split biddle
    #tmux -2 select-pane -t $SESSION:0.2
    
    # select tmux split top, cursor forcus
    tmux -2 select-pane -t $SESSION:0.0
    
    
    # Conver Class view mode : middle, bottom window
    for i in "\\" 
    	do tmux -2 send-keys -t $SESSION:0.1 "$i"
     	   tmux -2 send-keys -t $SESSION:0.2 "$i"
    done
    
    # top window : [playlist], [output], 
    # lock'screen width : 60(my default ncmpcpp config value) -> 80
    # cursor forced : [playst] , playlist display mode : Classic -> Columns
    for i in "C-l" "BSpace" "BSpace" "80" "Enter" "p" "8" "Left"
    	do tmux -2 send-keys -t $SESSION:0.0 "$i"
    done
    
    # middle window : [visualizer], [clock],  lock'screen width : 60
    # cursor forced : [visualizer]
    for i in "C-l" "BSpace" "BSpace" "60" "Enter" "0" "Left"
    	do tmux -2 send-keys -t $SESSION:0.1 "$i"
    done
    
    # bottom  window : [search-engine], [help],  lock'screen width : 40
    # cursor forced : [search-engine]
    for i in "\\" "C-l" "BSpace" "BSpace" "40" "Enter" "1" "Left"
    	do 
    		tmux -2 send-keys -t $SESSION:0.2 "$i"
    done
    
    
    # Bottom's status bar off : tmux 상태바 끄기
    tmux -2 set -t $SESSION -g status off
    
    tmux -2 attach-session -t $SESSION

I read your xmonad configuration file.  Your xmonad setting is big help to me. Thank you for your xmonad.hs posting. xmonad key bind is good.. I doing setting xmonad key binding continously.  Sorry my bad english.

Last edited by yoman18 (2014-10-11 21:24:23)

Offline

#155 2014-09-05 22:40:37

davama
Member
From: NY
Registered: 2014-02-07
Posts: 36

Re: Share your xmonad desktop!

yoman18 wrote:

I read your xmonad configuration file.  Your xmonad setting is big help to me. Thank you for your xmonad.hs posting. xmonad key bind is good.. I doing setting xmonad key binding continously.  Sorry my bad english.

Thank you and thanks for sharing! And your english is perfectly fine, message was understood. It really helped. I studied you tmux script and fiddled a bit to what i was looking for. Also had to create seperate ncmcpp config files for it
https://github.com/davama/xmonad/blob/master/xmonad.hs
https://github.com/davama/dotfiles/blob … cpp/config
http://i.imgur.com/4FzA1JW.png

I guess ever since ncmpcpp-0.5.9 I haven't found "screen merging" documentation to do it so this is the way to go for now.

BTW i noticed  that when i spawn a terminal running the tmux script, which shifts to a WS, i would never get all the panels on screen. They would only come up when my monitor was focues on the WS where the ncmpcpp is shifted to. Had to do a workaround on the xmonad.hs file where when spawn tmux-ncmpcpp.sh it first shifts to WS then runs tmux script. I dont know if you noticed that.

Thanks again

Last edited by davama (2014-12-31 21:58:47)

Offline

#156 2014-10-08 15:53:40

yoman18
Member
Registered: 2014-08-20
Posts: 9

Re: Share your xmonad desktop!

@ XMonad HTPC
- Default Layout /  Live TV Layout
KfUcO7s.png wrPBnvn.png
- Tiled Layout-Floating Layout / Circle Layout
cuGtfmE.png vyE2IRt.png
- Grid Layout / Kodi Xinerama
2zzeZHD.png tV6RcsD.png

  • running apps :  urxvt, ranger, opera v12.16(vi-like Shortcut),  mpv, etc

  • running media server : emby, plex, mpd, tvheadend, etc

  • kodi (Emby add-on -> Arctic: Zephyr Exploded Skin -> Netfix Home, etc add-on), LIRC

  • Layout Hook

    ------------------------------------------------------------------------------- 
    -- Layout Hook                                                                  
    ------------------------------------------------------------------------------- 
    -- Define default layouts used on most workspaces....                           
    defaultLayouts = tiled ||| Circle ||| Full -- Full mode : Border
    --defaultLayouts = tiled ||| Mirror tiled ||| floatDwmStyle shrinkText myTheme |||  Full -- Full mode : Border
    --defaultLayouts = tiled ||| Mirror tiled ||| floatSimpleDwmStyle ||| Full -- Full mode : Border
    --defaultLayouts = tiled ||| Mirror tiled ||| noBorders (fullscreenFull Full) -- Full mode : no Borders.
    --defaultLayouts = noBorders (fullscreenFull Full) ||| tiled ||| Mirror tiled.  
      where                                                                         
        -- default tiling algorithm partitions the screen into two panes            
        --tiled   = gaps [(U,5), (D,5), (R,5), (L,5)] $ spacing 2 $ Tall nmaster delta ratio   -- gap all direction 5
        tiled   = spacing 2 $ Tall nmaster delta ratio                              
        --tiled   = Tall nmaster delta ratio                                        
        -- The default number of windows in the master pane                         
        nmaster = 1.                                                                
        -- Default proportion of screen occupied by master pane                     
        ratio   = 64/100                                                            
        -- Percent of screen to increment by when resizing panes                    
        delta   = 2/100                                                             
                                                                                    
    --- Define layout for specific workspaces                                       
    -- mediaLayout = noBorders $ Full                                               
    fullLayout = noBorders (fullscreenFull Full)
    floatLayout = Full ||| noBorders (Grid) ||| floatDefault shrinkText myTheme ||| floatDwmStyle shrinkText myTheme
    --floatLayout = simpleFloat ||| noBorders (fullscreenFull Full)                 
    --floatLayout = simpleFloat' shrinkText myTheme ||| Full                        
    --floatLayout = floatDwmStyle shrinkText myTheme ||| Full                       
    --floatLayout = floatSimpleTabbed ||| Full                                      
    --floatLayout = floatTabbed shrinkText myTheme ||| Full                         
    --floatLayout = floatDwmStyle shrinkText myTheme ||| Full                       
    --myLayout = simpleDeco shrinkText myTheme (layoutHook defaultConfig)                
                                                                                    
    tvLayout = noBorders (tiled) ||| gaptiled ||| Circle ||| noBorders (Grid) ||| noBorders (fullscreenFull Full)
      where                                                                         
        tiled = spacing 0 $ Tall nmaster delta ratio
        --nmaster = 2                                                               
        --ratio = 1/2                                                               
        --delta = 1/4                                                               
        nmaster = 1                                                                 
        ratio = 3/4                                                                 
        delta = 1/4                                                                 
        gaptiled = gaps [(U,5), (D,5), (R,5), (L,5)] $ spacing 10 $ Tall nmaster delta ratio
                                                                                    
    -- Put all layouts together                                                     
    --myLayouts = onWorkspace "[9]XBMC Xinerama" mediaLayout $ defaultLayouts       
    myLayouts = 
      onWorkspace (myWorkspaces !! 8) fullLayout $                                  
      onWorkspace (myWorkspaces !! 7) tvLayout $                                    
      onWorkspace (myWorkspaces !! 6) fullLayout $                                  
      onWorkspace (myWorkspaces !! 5) floatLayout $                                 
      smartBorders $                                                                
      defaultLayouts                        

Last edited by yoman18 (2015-10-18 12:27:01)

Offline

#157 2014-11-06 18:21:16

Fuxino
Member
From: Italy
Registered: 2014-09-26
Posts: 98

Re: Share your xmonad desktop!


Regitered Linux user #590502

"Forget Jesus. The stars died so that you could be here today." Lawrence Krauss

Offline

#158 2014-12-18 10:31:57

gauthier
Member
Registered: 2013-02-21
Posts: 2

Re: Share your xmonad desktop!

My kind of zenburn colors for XMonad with xmobar:

xmonad-screenshot-thumb.png

xmonad.hs, xmobarrc, xsession there (commit 29302ad3cc378923243e4770905fb6f5895ca2a8):

https://github.com/fleutot/.xmonad

I'm happy with useful feedback.

Last edited by gauthier (2014-12-19 11:54:02)

Offline

#159 2015-02-01 08:47:36

Paul-S
Member
From: Wales
Registered: 2008-02-04
Posts: 343

Re: Share your xmonad desktop!

Mutt, Ncmpcpp, Dzen

EhU0X2as.png

Cheers
Paul-S

Offline

#160 2015-02-09 11:06:51

cameo
Member
Registered: 2012-08-18
Posts: 54

Re: Share your xmonad desktop!

Paul-S wrote:

Mutt, Ncmpcpp, Dzen

http://i.imgur.com/EhU0X2as.png

Cheers
Paul-S

Nifty as always~ smile

Slightly offtopic: could you please post your .muttrc?

Offline

#161 2015-02-09 19:45:35

Paul-S
Member
From: Wales
Registered: 2008-02-04
Posts: 343

Re: Share your xmonad desktop!

cameo wrote:
Paul-S wrote:

Mutt, Ncmpcpp, Dzen

http://i.imgur.com/EhU0X2as.png

Cheers
Paul-S

Nifty as always~ smile

Slightly offtopic: could you please post your .muttrc?

Here you go cameo, its using mutt with the sidebar patch from aur.

# ~/.mutt/muttrc

# directories and commands
# set alias_file          = ~/.mutt/alias                         # alias file
  set certificate_file    = ~/.mutt/certificates                  # where to store certs
  set header_cache        = ~/.mutt/cache/headers                 # where to store headers
  set message_cachedir    = ~/.mutt/cache/bodies                  # where to store bodies
  set mailcap_path        = ~/.mutt/mailcap                       # entrys for filetypes
  set signature           = ~/.mutt/sig                           # my signature file
  set tmpdir              = ~/.mutt/temp                          # where to keep temp files
  set editor              = "vim +:silent+?^$"                    # use vim and skip to last blank line
  set ispell              = "aspell -e -c"                        # use aspell as ispell
  set print_command       = "enscript -p - | psselect -r | lp"    # print email in reverse page order

# maildir settings
  set mbox_type           = Maildir                               # mailbox type
  set folder              = ~/Mail                                # mailbox location
  set spoolfile           = "+GMail/INBOX"                        # Gmail is default inbox

# main options
  set copy=yes
  set beep_new                                                    # terminal bell on new message
unset confirmappend                                               # don't ask, just do
  set delete                                                      # don't ask, just do
  set mail_check          = 0                                     # minimum time between scans
unset markers                                                     # no ugly plus signs
unset mark_old                                                    # read/new is good enough for me
  set menu_scroll                                                 # scroll in menus
  set pager_index_lines   = 10                                    # number of index lines to show
  set pager_context       = 5                                     # number of context lines to show
  set pager_stop                                                  # don't go to next message automatically
  set pipe_decode                                                 # strip headers and eval mimes when piping
  set reverse_alias                                               # show names from alias file in index
  set sort                = threads                               # like gmail
  set sort_aux            = reverse-last-date-received            # like gmail
unset sort_re                                                     # always thread
  set thorough_search                                             # strip headers and eval mimes before searching
  set thread_received                                             # sort threads by date received, not sent
  set tilde                                                       # show tildes like in vim
  set timeout             = 3                                     # idle time before scanning
unset wait_key                                                    # don't show "Press any key to continue"

# enriched messages
auto_view text/html                                               # view html automatically
alternative_order text/plain text/enriched text/html              # but save it for last

# formats and regexps
  set alias_format        = "%4n %t %-20a %r"
  set date_format         = "%m/%d/%y at %I:%M%P"
  set forward_format      = "Fwd: %s"                             # format for subject when forwarding
  set index_format        = "%3C %Z %[!%m/%d] %-17.17F %s"
  set quote_regexp        = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
  set reply_regexp        = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
  set status_format       = "-%r- %v ───────────/ %f %m%?n? [+%n]?%?d? [-%d]?%?t? [*%t]? /%?p?───/ %p waiting to send /?─%>─(%P)───"

# composing mail
  set askcc                                                       # always ask for CC:
  set edit_headers                                                # show headers when composing
  set fast_reply                                                  # skip to compose when replying
  set forward_quote                                               # include message in forwards
  set include                                                     # include message in replies
  set realname            = "my name"                       # who am i?
  set reply_to                                                    # reply to Reply-to: field, not From:
  set reverse_name                                                # reply as who it was sent to (see alternates)

# headers to show
ignore *                                                          # ignore all headers
unignore from: to: cc: date: subject:                             # show only these
hdr_order from: to: cc: date: subject:                            # and in this order

# lists
subscribe arch-announce arch-dev-public aur-general xmonad arch-haskell web-devel yesod

# list of folders to notify of new mail
mailboxes +GMail/INBOX +Googlemail/INBOX

#source $alias_file                                                # required for functionality
source ~/.mutt/sidebar.muttrc
source ~/.mutt/colors.muttrc
source ~/.mutt/gmail.muttrc

# override with account specific folder-hooks
folder-hook GMail/*      source ~/.mutt/gmail.muttrc
folder-hook Googlemail/*     source ~/.mutt/googlemail.muttrc

# collapse all thread in ML folders
folder-hook Gmail/(arch_lists|xmonad_list|web_devel|yesod) "exec collapse-all"

# these just give me headaches
bind index,pager \# noop
bind index,pager \& noop
bind index i        noop

# bindings -- very vim-like
bind pager i       exit
bind pager q       toggle-quoted
bind pager /       search
bind pager k       previous-line
bind pager j       next-line
bind pager gg      top
bind index G       imap-fetch-mail
bind pager G       imap-fetch-mail
bind index gg      first-entry
bind index G       last-entry
bind pager K       previous-undeleted
bind pager J       next-undeleted
bind index K       previous-unread
bind index J       next-unread
bind index,pager R group-reply

# macros
macro index ,i "<change-folder>!<return>" "go to inbox"
macro index ,p "<pipe-message>cat > ~/" "save message as"
macro index ,z "<shell-escape>offlineimap -q -o<return>" "sync IMAP"
macro index ,r "<tag-pattern>all<return><tag-prefix><clear-flag>N<untag-pattern>all<return>" "mark all as read"
macro index ,R "<collapse-all><tag-pattern>all<return><tag-prefix><clear-flag>N<untag-pattern>all<return><collapse-all>" "mark all as read (collapsed)"
macro index ,v "<collapse-thread>" "collapse/uncollapse thread"
macro index ,V "<collapse-all>"    "collapse/uncollapse all threads"

# search via notmuch
macro index ,s \
  "<enter-command>unset wait_key<enter><shell-escape>mutt-notmuch --prompt search<enter><change-folder-readonly>~/.cache/mutt_results<enter>" \
  "search mail (using notmuch)"

# cc myself when replying to an ML.
#
# note: with this, you can't use `:q!` mid-compose to abort the message.
# instead, you should use `:wq` and abort from the compose menu
unhook send-hook
send-hook "~u" "push '<edit-cc>,my-email@gmail.com<return>'"

# vim: ft=muttrc

Cheers
Paul-S

Offline

#162 2015-02-10 11:26:48

cameo
Member
Registered: 2012-08-18
Posts: 54

Re: Share your xmonad desktop!

Thanks Paul-S, much appreciated!

So do I. However I wonder, why my sidebar doesn't show up at all, as I can't find any mistakes in its bindings/macros.
Besides, one can learn much from others' muttrcs.

Last edited by cameo (2015-02-10 12:08:54)

Offline

#163 2015-03-29 23:03:56

whitebrice
Member
Registered: 2013-12-20
Posts: 31

Re: Share your xmonad desktop!

Clean:
W4H156G.png

Busy:
CiBTmKN.png

Offline

#164 2015-05-31 15:57:14

cameo
Member
Registered: 2012-08-18
Posts: 54

Re: Share your xmonad desktop!

It's about time for another fake busy session! – XMonad 0.12 darcs w/ XFCE4 in Solarized flavor. Featuring dzen2, xmobar, Stalonetray, urxvt, and many other apps just for showing off:

xmonad_solarized_ssc15_edition_thumb_by_mitoxd-d8vgm00.png

I'll leave a note when all relevant config files have been polished and uploaded.

Offline

#165 2015-09-30 08:17:01

Maeda
Member
Registered: 2015-02-17
Posts: 22

Re: Share your xmonad desktop!

Hi all !

Here is my Xmonad + Xmobar (2 Xmobar, top and bottom) + Trayer config (there is a script to handle bars/focus colors and background random change depending on what season we are) smile :

desktop-preview.png?raw=true
desktop-full-preview.png?raw=true

Config is on my GitHub (see sign).
Screens will update along with coding evolution on GitHub.

Last edited by Maeda (2016-01-11 10:54:47)


--Default Windows Manager
Xmonad <+> Xmobar <+> Trayer

My GitHub

Offline

#166 2015-10-10 12:54:48

ectospasm
Member
Registered: 2015-08-28
Posts: 23

Re: Share your xmonad desktop!

Here's the Arch setup (Xfce4 + XMonad) I've been using for a month:

Pristine (which I hardly ever see):
YjBHehB.png

Full Bore:
dIR7lYN.png

I like desktops like my coffee:  black.  No matter what image I have, I'm most likely to stare at a pretty picture rather than get work done.  So, plain black color, for both my panels and my desktop.  And a plain blank screensaver (Xscreensaver), too.  Can't be getting distracted anymore.

With XMonad I only see the desktop when I'm firing up a new workspace.

NOTE:  Public IP addresses have been obfuscated in the full image.

xmonad.hs:

{-# LANGUAGE DeriveDataTypeable #-}                                                                   
import Data.Ratio
import Data.List
import XMonad
import XMonad.Config.Kde
import XMonad.Config.Xfce
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.FadeInactive
import XMonad.Util.Run
import XMonad.Util.EZConfig
import XMonad.Util.Font
import XMonad.Layout
import XMonad.Layout.Tabbed
import XMonad.Layout.PerWorkspace
import XMonad.Layout.LayoutHints (layoutHints)
import XMonad.Layout.IM as IM
import XMonad.Layout.Reflect
import XMonad.Layout.TrackFloating
import XMonad.Actions.CycleWS
import XMonad.Actions.OnScreen
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import System.IO
import qualified DBus as D
import qualified DBus.Client as D
import qualified Codec.Binary.UTF8.String as UTF8
import Graphics.X11.ExtraTypes.XF86
import XMonad.Util.WorkspaceCompare
import XMonad.Actions.WorkspaceNames hiding (workspaceNamesPP)
import Control.Monad (liftM)
import XMonad.Actions.SpawnOn
import XMonad.Prompt
import XMonad.Prompt.Window
import XMonad.Operations
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.SetWMName
import XMonad.Hooks.ManageHelpers
import XMonad.Util.Loggers
import XMonad.Util.Paste
import XMonad.Actions.WindowGo


import XMonad.Actions.DynamicWorkspaces as DW
import qualified XMonad.Util.ExtensibleState as XS
import Control.Applicative
filterWorkspaces :: [WorkspaceId] -> [WindowSpace] -> [WindowSpace]
filterWorkspaces ws = filter (\(W.Workspace tag _ _) -> tag `elem` ws)
newtype LeftScreen = LeftScreen {getLeftScreen :: [WorkspaceId]} deriving (Typeable,Read,Show) 
instance ExtensionClass LeftScreen where
	initialValue = LeftScreen []
	extensionType = PersistentExtension


newtype RightScreen = RightScreen {getRightScreen :: [WorkspaceId]} deriving (Typeable,Read,Show)
instance ExtensionClass RightScreen where
	initialValue = RightScreen []
	extensionType = PersistentExtension





myManageHook = composeAll
  [ isDialog --> doFloat
	, className =? "Gnome-dictionary" --> doFloat
  , className =? "Xfce4-dict" --> doFloat
  , className =? "Last.fm"	--> doFloat
  , className =? "Xmessage"   --> doFloat
  , className	=? "Audacious"  --> doFloat
  , className =? "Skype"		--> doFloat
  , className =? "Keepassx"	--> doFloat
  , className =? "Kcalc"		--> doFloat
	, className =? "Clementine" --> doFloat
	, className =? "SpiderOak" --> doFloat
  , className =? "Pavucontrol" --> doFloat

{- The following sets doFloat on the Orage window (as above)
  But also ensures that it appears only on the left screen
  (screen 0).  (screenWorkspace 0) returns X (Maybe WorkspaceId),
  and the liftX function lifts an X action to a Query (which is 
  Maybe WorkspaceId) and the next lines return the workspace (if 
not empty), or do	nothing if (Maybe WorkspaceId) -> Nothing.
idHook maps to mempty, which means do nothing
-}
  , className =? "Orage"	--> doFloat 
	<+> do 
  ws <- liftX (screenWorkspace 0) 
  case ws of
    Just w -> doShift w
    Nothing -> idHook 
  
  , className =? "Wrapper"	--> doFloat 
	<+> do 
  ws <- liftX (screenWorkspace 0) 
  case ws of
    Just w -> doShift w
    Nothing -> idHook 


  , className =? "Plasma-desktop"	--> doFloat 
	<+> do 
  ws <- liftX (screenWorkspace 0) 
  case ws of
    Just w -> doShift w
    Nothing -> idHook 

	, className =? "Xfce4-notifyd" --> doIgnore

  ]


shiftInsert w =
  let translatedProgs = ["Chromium", "Chrome"]
  in do
  c <- runQuery className w;
  let toTranslate = any (== c) translatedProgs
  if toTranslate then spawn ("CLIP=$(xclip -out -selection clipboard); xclip -out"
    ++ " | xclip -in -selection clipboard; xdotool key --clearmodifiers --window "
    ++ show w ++ " ctrl+v; echo -n $CLIP | xclip -in -selection clipboard")
  else sendKey shiftMask xK_Insert

layoutH = layoutHints
    $ tiled
    ||| Mirror tiled
    ||| Full
    where
      tiled   = Tall 1 (3 % 100) (1/2)

fadeHook = fadeInactiveLogHook fadeAmount
  where fadeAmount = 0.2

makeLauncher yargs run exec close = concat
  ["exe=`yeganesh ", yargs, "` && ", run, " ", exec, "$exe", close]

launcher = makeLauncher "-x -- -nf grey -nb black" "eval" "\"exec " "\""

main = do
    dbus <- D.connectSession
    getWellKnownName dbus;
    xmonad $ xfceConfig {
    workspaces = ["sh","sb","of","wc","ws","wb","hng"]
  , terminal = myTerminal
	, focusFollowsMouse	= True
  , manageHook = manageDocks <+> myManageHook -- <+> manageHook defaultConfig
  , layoutHook = avoidStruts $ onWorkspace "gimp" gimp $ layoutH 
  , logHook = dynamicLogWithPP (ppL dbus)
   			>> dynamicLogWithPP (ppR dbus)
	      >> fadeHook
  , borderWidth = 1
  , normalBorderColor = "#333333"
  , focusedBorderColor = "#CCCC00"
  , modMask = winKey
  , startupHook = startupHook xfceConfig >> setWMName "L3GD"
  }	`additionalKeys` myKeys
	where --{
	   gimp	= IM.withIM 0.11 (Role "gimp-toolbox") $
		  reflectHoriz $
		  IM.withIM 0.15 (Role "gimp-dock") Full 

getWellKnownName :: D.Client -> IO()
getWellKnownName dbus = do 
  D.requestName dbus (D.busName_ "org.xmonad.Log")               
    [D.nameAllowReplacement, D.nameReplaceExisting, D.nameDoNotQueue] 
  return()


outputThroughDBusR :: D.Client -> String -> IO()
outputThroughDBusR dbus str = do 
  let signal =	(D.signal  (D.objectPath_ "/org/xmonad/Log")
		(D.interfaceName_ "org.xmonad.Log")
		(D.memberName_ "Update")) {
		D.signalBody = [D.toVariant ("<span font=\"Terminus Bold 9\">" ++
					    (UTF8.decodeString str) ++ "</span>")]
		} 
  D.emit dbus signal


outputThroughDBusL :: D.Client -> String -> IO()
outputThroughDBusL dbus str = do 
  let signal =  (D.signal (D.objectPath_ "/org/xmonad/LogL")                         
		(D.interfaceName_ "org.xmonad.LogL")
		(D.memberName_ "Update")) {
		  D.signalBody = [D.toVariant ("<span font=\"Terminus Bold 9\">" ++
		  (UTF8.decodeString str) ++ "</span>")]                         
		} 
  D.emit dbus signal


pangoColor :: String -> String -> String
pangoColor fg = wrap left right
  where
    left 	= "<span foreground=\"" ++ fg ++ "\">"
    right	= "</span>"
    
pangoSanitize :: String -> String
pangoSanitize = foldr sanitize ""
  where
    sanitize '>' 	acc = "&gt;" ++ acc
    sanitize '<' 	acc = "&lt;" ++ acc
    sanitize '\"' 	acc = "" ++ acc
    sanitize '&'  	acc = "&amp;" ++ acc
    sanitize x    	acc = x:acc

{--- Now here's some fuckin' Voodoo Magic
filterOutLeft :: [WindowSpace] -> [WindowSpace]
filterOutLeft = filter (\(W.Workspace tag _ _) -> tag `elem` rightWksp)

filterOutRight :: [WindowSpace] -> [WindowSpace]
filterOutRight = filter (\(W.Workspace tag _ _) -> tag `elem` leftWksp)
-}

ppR dbus = defaultPP {   
    ppOutput		= outputThroughDBusR dbus   
  , ppCurrent           = pangoColor "yellow" . wrap "[" "]" . pangoSanitize   
  , ppVisible           = pangoColor "cyan" . wrap "(" ")" . pangoSanitize   
  , ppTitle             = pangoColor "green" . shorten 50. pangoSanitize   
  , ppUrgent            = pangoColor "red"   
  , ppSep               = " "
  , ppSort		= (.) <$> XS.gets (filterWorkspaces . getRightScreen) <*> getSortByIndex
  , ppHiddenNoWindows 	= const ""   
  , ppHidden		= pangoColor "gray"               
}

ppL dbus = defaultPP {   
    ppOutput		= outputThroughDBusL dbus   
  , ppCurrent		= pangoColor "yellow" . wrap "[" "]" . pangoSanitize   
  , ppVisible		= pangoColor "cyan" . wrap "(" ")" . pangoSanitize   
  , ppTitle		= pangoColor "maroon" . shorten 50. pangoSanitize   
  , ppUrgent		= pangoColor "red"   
  , ppSep		= " "   
  , ppSort		= (.) <$> XS.gets (filterWorkspaces . getLeftScreen) <*> getSortByIndex
  , ppHidden		= pangoColor "gray"  
  , ppHiddenNoWindows   = const ""   
  , ppExtras	        = [pangoColor "orange" `onLogger` logCmd "~/bin/now_playing"]

}


winKey :: KeyMask
winKey = mod4Mask

lAlt :: KeyMask
lAlt = mod1Mask

myTerminal = "urxvtc -cd ~"
altTerminal = "urxvtc -cd ~ -name altUrxvt"

myKeys =	[ 
    ((winKey ,											xK_l),			  								spawnHere "xscreensaver-command --lock && sleep 3 && xset dpms force off")
  , ((winKey ,											xK_Return),		  							do
                                                                      windows (viewOnScreen 0 "sh")
                                                                      ifWindows (resource =? "urxvt") (mapM_ focus) (spawnHere myTerminal))
  , ((controlMask .|. lAlt,         xK_BackSpace),                 (spawnHere "xfdesktop --quit"))
  , ((controlMask .|. shiftMask,		xK_Return),		  							do
                                                                      windows (viewOnScreen 1 "ws")
                                                                      ifWindows (resource =? "altUrxvt") (mapM_ focus) (spawnHere altTerminal))
  , ((winKey ,                      xK_v),                        do
                                                                    windows (viewOnScreen 1 "ws")
                                                                    ifWindows (className =? "Gvim") (mapM_ focus) (spawnHere "gvim"))
  , ((lAlt ,                        xK_v),                        spawnHere "xfce4-popup-clipman")
  , ((winKey .|. shiftMask,					xK_x),			  								windowPromptBring dXPConfig)
  , ((winKey ,											xK_b),			  								sendMessage ToggleStruts)
	, ((winKey ,											xK_g),												do
                                                                    windows (viewOnScreen 1 "sb")
                                                                    ifWindows (className =? "Chromium") (mapM_ focus) (spawnHere "chromium"))
  , ((winKey ,											xK_r),												do
                                                                    windows (viewOnScreen 1 "wb")
                                                                    ifWindows (className =? "Google-chrome") (mapM_ focus) (spawnHere "google-chrome-stable"))
	, ((winKey ,											xK_i),						  					ifWindows (className =? "Clementine") (mapM_ killWindow) (spawnHere "clementine"))
  , ((winKey ,												xK_d),	  									ifWindows (className =? "Xfce4-dict") (mapM_ killWindow) (spawnHere "xfce4-dict"))
  , ((winKey ,											xK_f),			  								spawnHere (myTerminal ++ " -e vifm . ~"))
    , ((winKey ,                      xK_o),                        do
                                                                      windows (viewOnScreen 1 "rbank")
                                                                      ifWindows (className =? "Opera") (mapM_ focus) (spawnHere "opera"))
  , ((winKey ,                      xK_s),                        ifWindows (className =? "Pavucontrol") (mapM_ killWindow) (spawnHere "pavucontrol"))
  , ((winKey ,											xK_c),				  							kill)
  , ((winKey ,											xK_comma),		  							sendMessage (IncMasterN 1))
  , ((winKey ,											xK_period),		  							sendMessage (IncMasterN (-1)))
  , ((winKey ,											xK_j),				  							windows W.focusDown) -- explicitly setting the default
  , ((winKey .|. controlMask,					xK_j),				  							windows W.swapDown) -- explicitly setting the default
  , ((winKey ,											xK_k),				  							windows W.focusUp) -- explicitly setting the default
  , ((winKey .|. controlMask,					xK_k),				  							windows W.swapUp) -- explicitly setting the default
  , ((lAlt ,												xK_Tab),			  							windows W.focusDown) -- replicating MS Windows task switcher behavior
  , ((lAlt .|. shiftMask,						xK_Tab),			  							windows W.focusUp)  -- replicating MS Windows task switcher behavior
  , ((winKey .|. controlMask,				xK_Return),		  							windows W.swapMaster)
  , ((winKey ,											xK_p),				  							spawnHere launcher)
	, ((winKey .|. shiftMask,					xK_p),												spawnHere "gmrun")
  , ((shiftMask,										xK_Insert),		  							withFocused shiftInsert)
  , ((winKey ,											xK_Print),		  							spawnHere "xfce4-screenshooter")
  , ((winKey ,											xK_Left),			  							prevWS)
  , ((winKey ,											xK_Right),		  							nextWS)
	, ((winKey ,											xK_Up),												spawnHere "skippy-xd")
  , ((0,														xF86XK_Calculator),	  				ifWindows (className =? "Gnome-calculator") (mapM_ killWindow) (spawnHere "gnome-calculator"))
  , ((0,														xF86XK_AudioPlay),	  				spawn "clementine --play-pause")
  , ((0,														xF86XK_AudioMute),	  				spawn "/home/trey/bin/mute")
  , ((0,														xF86XK_AudioRaiseVolume), 		spawn "amixer -c 0 set Master 5dB+")
  , ((0,														xF86XK_AudioLowerVolume), 		spawn "amixer -c 0 set Master 5dB-")
  , ((winKey .|. controlMask,					xK_h),		  									sendMessage Shrink)
  , ((winKey .|. lAlt,      					xK_h),		  									do
                                                                      windows (viewOnScreen 1 "sb")
                                                                      ifWindows (className =? "Chromium") (mapM_ focus) (spawnHere "chromium"))
  , ((winKey .|. controlMask,					xK_l),											  sendMessage Expand)
  , ((winKey ,												xK_1),			  								windows (viewOnScreen 0 "sh"))
  , ((winKey ,												xK_2),			  								windows (viewOnScreen 0 "sb"))
  , ((winKey ,                        xK_a),                        do 
                                                                        windows (viewOnScreen 1 "hip") 
                                                                        ifWindows (className =? "Hipchat") (mapM_ focus) (spawnHere "hipchat"))
  , ((winKey .|. shiftMask ,				xK_q),			  								spawn "xfce4-session-logout")
  , ((winKey ,											xK_h),											  DW.withWorkspace myXPConfigSelect $ \wk -> do
      sc <- screenBy 0
      if sc == 0
			then XS.modify $ LeftScreen . (++ [wk]) . getLeftScreen -- append to list
      else XS.modify $ RightScreen . (++ [wk]) . getRightScreen -- append to list
      windows $ W.view wk)
  , ((winKey ,											xK_z),											  DW.withWorkspace myXPConfigSelect (\ws -> do
	  sc <- screenBy 0
	  if sc == 0
	    then XS.modify $ LeftScreen . nub . (ws :) . getLeftScreen -- prefix to list
	    else XS.modify $ RightScreen . nub . (ws :) . getRightScreen -- prefix to list

	  windows $ W.shift ws
	))
  , ((winKey ,											xK_BackSpace),		  					do
    curr <- gets (W.currentTag . windowset)
    sc <- screenBy 0
    if sc == 0
      then do
				ws <- XS.gets getLeftScreen
				XS.put (LeftScreen (filter (/= curr) ws))
      else do
			ws <- XS.gets getRightScreen
			XS.put (RightScreen (filter (/= curr) ws))                                              
    DW.removeWorkspace
    )
  , ((winKey .|. controlMask ,			xK_r),			  								do
	old <- gets (W.currentTag . windowset)
	DW.renameWorkspace myXPConfigNew
	created <- gets (W.currentTag . windowset)
	sc <- screenBy 0
	if sc == 0
	   then do
	      ws <- XS.gets getLeftScreen
	      XS.put (LeftScreen (filter (/= old) ws))
	      XS.modify $ LeftScreen . (++ [created]) . getLeftScreen -- append to list
	   else do
	      ws <- XS.gets getRightScreen
	      XS.put (RightScreen (filter (/= old) ws))
	      XS.modify $ RightScreen . (++ [created]) . getRightScreen -- append to list
	refresh)
  , ((winKey ,											xK_m) ,			  								DW.withWorkspace myXPConfigNew $ \wk -> do
      sc <- screenBy 0
      if sc == 0
			then XS.modify $ LeftScreen . (++ [wk]) . getLeftScreen -- append to list
      else XS.modify $ RightScreen . (++ [wk]) . getRightScreen -- append to list
      windows $ W.view wk)
  ]
  ++
  [((m .|. winKey, key), screenWorkspace sc >>= flip whenJust (windows . f))
	| (key, sc) <- zip [xK_w, xK_e] [0..] -- For w,e keys
	, (f, m) <- [(W.view, 0), (W.shift, controlMask)]]

dXPConfig = defaultXPConfig {
   bgColor = "yellow"
, fgColor = "blue"
}

myXPConfigSelect = defaultXPConfig {
    bgColor		= "yellow"
  , fgColor		= "blue"
  , autoComplete	= Just 0
  , showCompletionOnTab = True
}

myXPConfigNew = defaultXPConfig {
    bgColor		= "yellow"
  , fgColor		= "blue"
  , autoComplete	= Nothing
  , showCompletionOnTab	= True
}

That XMonad code has grown organically.  Every time I do major work on my configuration, I have to relearn Haskell, and I lean heavily on the XMonad/Haskell community (which seems to have little patience for the fact that I don't think in Haskell).  Even so, all the blood, sweat, and tears I've put into this configuration mean that I will only leave XMonad when all of my configuration backups are lost completely.  It's rather ugly, please don't criticize it too much!

Offline

#167 2015-11-22 01:50:54

Head_on_a_Stick
Member
From: Asteroid B-612
Registered: 2014-02-20
Posts: 3,692
Website

Re: Share your xmonad desktop!

2015-11-22-014820_1920x1080_scrot.th.png2015-11-22-014809_1920x1080_scrot.th.png
See sig for configs wink

Last edited by Head_on_a_Stick (2015-11-22 01:54:30)


_0_
__0
000

Offline

#168 2016-05-29 09:20:59

_maxe
Member
From: DE
Registered: 2015-10-18
Posts: 25

Re: Share your xmonad desktop!

2016_05_29_11_18_scrot.jpg
Here is mine.
I really like XMonad, still using a config file found on the internet but i think i start writing my own smile

greetings

Offline

Board footer

Powered by FluxBB