TrueOs : tapasztalatok

Fórumok

Most, hogy kijött a 11 gondoltam kipróbálom a FreeBSD-t megint. Utoljára valamikor a 8 környékén játszottam vele. Mivel mindig van a gépen egy stable rendszer, dualboot-ban szoktam csinálni. Viszont szerettem volna a zfs fájlrendszert,
így nem maradt más választásom mint a trueos, mivel a Freebsd -n nem találtam megoldást zfs dualbootra. (a másik rendszer xfs)
Szóval a tapasztalatok: Az egy dolog, hogy a saját wm (dm) ükkel alapestben (üres) 1G a used mem. Ez valószínűleg a ZFS nek is köszönhető. De az már csúcs, hogy a saját vackaik pl. a network beállító, media csatoló, a hangkezelő meg sysadm-client bele van drótozva a rendszerbe. Hiába távolítom el a panelről, kijelentkezés után újra rakja.
De ugyan ezt csinálja ha pl.MATE desktopot teszek fel. Az automatikus indításuk benne van a Mate sessionbe, és mint később megtaláltam a leírást, még pár „supported” DM is. Ez azért jó mert pl. a MATE panelen így két mixer applet van. Szuper. De pl. a DragonflyBSD-ből áthozott Herbsluftwm configom nem működik, és ezt pl. nem értem miért.
Minden úgy megy, ahogy megszoktem, csak nem írja ki az időt a panalre (lemonbar). Ha a date parancs ciklusban van nem írja ki, ha csak magában, akkor meg igen. Persze akkor meg énekelhetem, hogy „megáll az idő” :)
Sajnos igazat adok Zahynak „sikítva elszaladtam ettől pár évvel ezelőtt.”. úgy tünik több időbe kerül kigyomlálni a nekem nem tetsző hülyeségeket, mint egy desktopot reszelni a FreeBSD-ből. Így a következő lépés FreeBSD UFS-el.

Hozzászólások

Nem értem, hogyha van egy ablakkezelő konfigod (úgy, hogy az ablakkezelő ráadásul egy egyszerű, egy csomagból álló dolog), miért kell egy olyan rendszer, amely hoz egy előre beállított grafikus felületet, amit aztán csak "kigyomlálsz" - gyakorlatilag a grafikus felület nélküli alaprendszerhez jutva.

Herbstluftwm configom nem működik

Megmutatod az autostart fájlt (és a kapcsolódóakat)? Hátha több szem többet lát.

Gondolom ide nem illik becopyzni config filet. Viszont nem szoktam és így nem vagyok jártas a file feltöltésben. Tudsz segíteni hova lehet egyszerűen configokat feltolteni.
Egyébként azóta már tudom, a frame resize se működik.

"miért kell egy olyan rendszer, amely hoz egy előre beállított grafikus felületet,"
úgy érzem leírtam a döntés okát...... ZFS, dualboot. Ezt tudja a TrueOs (PcBSD) alapból.
Azt hittem jó ötlet lesz, most már tudom, hogy nem az.

Gondolom ide nem illik becopyzni config filet

Gondolom, nem ötszáz soros. Szerintem az a néhány tíz sor belefér.

úgy érzem leírtam a döntés okát...... ZFS, dualboot

A TrueBSD hogy oldja meg (mármint a dualboot-ot, gondolom, nem a ZFS a gond)? Szerintem ahogy ő megoldja, kivitelezhető FreeBSD-re is. De ha más nem: a linux (feltételezem, az van az xfs partíciódon) grub-ját használod a FreeBSD betöltésére is (amíg volt linux telepítve, így használtam).

A FreeBSD install csak teljes diskre működik ZFS fájlrendszerre. Találtam egy experimental leírást, hogy lehetne megcsinálni, (gondolom a TrueOs is valahogy megcsinálja), de mivel nem vagyok profi nem igazán értem, így nem mertem megcsinálni. Ha jól tudom a PcBSD patchelt grubot használ.
az autostart: egy tök egyszerű alapconfig a saját programokkal bővítve
#!/usr/local/bin/bash

# this is a simple config for herbstluftwm

hc() {
herbstclient "$@"
}

hc emit_hook reload

#xsetroot -solid '#7E9CAD'
feh --bg-scale /home/daddy/Kepek/earthSpace.jpg
# remove all existing keybindings
hc keyunbind --all

# keybindings
# if you have a super key you will be much happier with Mod set to Mod4
Mod=Mod1 # Use alt as the main modifier
#Mod=Mod4 # Use the super key as the main modifier

hc keybind $Mod-Shift-q quit
hc keybind $Mod-Shift-r reload
hc keybind $Mod-Shift-c close
hc keybind Control-Shift-x spawn shutdown -p now
#hc keybind $Mod-Return spawn ${TERMINAL:-xterm} # use your $TERMINAL with xterm as fallback

# basic movement
# focusing clients
hc keybind $Mod-Left focus left
hc keybind $Mod-Down focus down
hc keybind $Mod-Up focus up
hc keybind $Mod-Right focus right
#hc keybind $Mod-h focus left
#hc keybind $Mod-j focus down
#hc keybind $Mod-k focus up
#hc keybind $Mod-l focus right
hc keybind $Mod-p spawn sh ~/.config/dmenu/dmenu-bind.sh
hc keybind $Mod-Shift-Return spawn sakura
hc keybind $Mod-Control-i spawn chrome --proxy-server="localhost:8118"
hc keybind $Mod-Control-o spawn firefox
hc keybind $Mod-Control-u spawn uzbl-tabbed
hc keybind $Mod-Control-f spawn pcmanfm
hc keybind $Mod-Control-g spawn geany
hc keybind $Mod-Control-q spawn otter-browser
hc keybind $Mod-Control-d spawn deadbeef

# moving clients
hc keybind $Mod-Shift-Left shift left #7E9CAD
hc keybind $Mod-Shift-Down shift down
hc keybind $Mod-Shift-Up shift up
hc keybind $Mod-Shift-Right shift right

# splitting frames
# create an empty frame at the specified direction
hc keybind $Mod-v split bottom 0.5
hc keybind $Mod-h split right 0.5
hc keybind $Mod-o split auto
# let the current frame explode into subframes
hc keybind $Mod-Control-space split explode

# resizing frames
resizestep=0.05

hc keybind $Mod-Control-j resize left +$resizestep
hc keybind $Mod-Control-k resize down +$resizestep
hc keybind $Mod-Control-Up resize up +$resizestep
hc keybind $Mod-Control-Right resize right +$resizestep

# tags
#tag_names=( {1..9} )
#tag_keys=( {1..9} 0 )
tag_names=( "H" "E" "R" "B" "S" "T" )
tag_keys=( {1..6} 0 )

hc rename default "${tag_names[0]}" || true
for i in ${!tag_names[@]} ; do
hc add "${tag_names[$i]}"
key="${tag_keys[$i]}"
if ! [ -z "$key" ] ; then
hc keybind "$Mod-$key" use_index "$i"
hc keybind "$Mod-Shift-$key" move_index "$i"
fi
done

# cycle through tags
hc keybind $Mod-period use_index +1 --skip-visible
hc keybind $Mod-comma use_index -1 --skip-visible

# layouting
hc keybind $Mod-r remove
hc keybind $Mod-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-b pseudotile toggle
hc keybind $Mod-space cycle_layout +1
# The following cycles through the available layouts within a frame, but skips
# layouts, if the layout change wouldn't affect the actual window positions.
# I.e. if there are two windows within a frame, the grid layout is skipped.
hc keybind $Mod-space \
or , and . compare tags.focus.curframe_wcount = 2 \
. cycle_layout +1 vertical horizontal max vertical grid \
, cycle_layout +1

# mouse
hc mouseunbind --all
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 zoom
hc mousebind $Mod-Button3 resize

# focus
hc keybind $Mod-BackSpace cycle_monitor
hc keybind $Mod-Tab cycle_all +1
hc keybind $Mod-Shift-Tab cycle_all -1
hc keybind $Mod-c cycle
hc keybind $Mod-i jumpto urgent

# theme
hc attr theme.tiling.reset 1
hc attr theme.floating.reset 1
hc set frame_border_active_color '#353535'
hc set frame_border_normal_color '#101010'
hc set frame_bg_normal_color '#202020'
hc set frame_bg_active_color '#6c3b41'
hc set frame_border_width 1
hc set always_show_frame 0
hc set frame_bg_transparent 1
hc set frame_transparent_width 0
hc set frame_gap 0

hc attr theme.active.color '#353535'
hc attr theme.normal.color '#252525'
hc attr theme.urgent.color '#F0A81C'
hc attr theme.inner_width 1
hc attr theme.inner_color '#202020'
hc attr theme.border_width 2
hc attr theme.floating.border_width 2
hc attr theme.floating.outer_width 1
hc attr theme.floating.outer_color '#030303'
hc attr theme.active.inner_color '#383838'
hc attr theme.active.outer_color '#282828'
hc attr theme.background_color '#ffffff'

hc set window_gap 2
hc set frame_padding 1
hc set smart_window_surroundings 0
hc set smart_frame_surroundings 1
hc set mouse_recenter_gap 0

# rules
hc unrule -F
#hc rule class=XTerm tag=3 # move all xterms to tag 3
hc rule focus=on # normally focus new clients
#hc rule focus=off # normally do not focus new clients
# give focus to most common terminals
#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off

# unlock, just to be sure
hc unlock

herbstclient set tree_style '╾│ ├└╼─┐'
#herbstclient set tree_style '*| +`>-.'

# do multi monitor setup here, e.g.:
# hc set_monitors 1280x1024+0+0 1280x1024+1280+0
# or simply:
# hc detect_monitors

# find the panel
panel=~/.config/herbstluftwm/panel.sh
[ -x "$panel" ] || panel=/usr/local/etc/xdg/herbstluftwm/panel.sh
for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do
# start it on each monitor
"$panel" $monitor &
done

------------------
a panel.sh pedig a dotshare-ről van a nekem nem kellő dolgok kicommentezve
-----------------

#!/usr/local/bin/bash

set -f

monitor=${1:-0}
height=22
padding_top=0
padding_bottom=0
padding_left=0
padding_right=${padding_left}
bottom=0
geometry=( $(herbstclient monitor_rect $monitor) )
# geometry has the format: X Y W H
x=${geometry[0]}
y=${geometry[1]}
((bottom)) && y=$((${geometry[1]}+${geometry[3]}-height))
width="${geometry[2]}"

x=$((x + padding_left))
width=$((width - padding_left - padding_right))
y=$((y + padding_top))

font="-*-dejavu sans-bold-o-*-*-17-*-*-*-*-*-*-*"
printf '%dx%d%+d%+d' $width $height $x $y
function uniq_linebuffered() {
exec awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
}

update_pad() {
((bottom)) && herbstclient pad $monitor 0 0 "$1" \
|| herbstclient pad $monitor "$1"
}
debug() {
echo "DEBUG: $*" >&2
}

#keyboard_layouts=( us de )

#activecolor="$(herbstclient attr theme.tiling.active.color)"
activecolor="#E3A81F"

emphbg="#303030" #emphasized background color

update_pad $((height + padding_top + padding_bottom))
{
# events:
#mpc idleloop player &
child=""
#child+=" $!"
while true ; do
date +$'date\t%H:%M, %b%d-%a'
sleep 2 || break
done > >(uniq_linebuffered) &
child+=" $!"
herbstclient --idle
kill $child
}|{
TAGS=( $(herbstclient tag_status $monitor) )
date=""
# layout="$(setxkbmap -query | grep ^layout:)"
# layout=${layout##* }
# conky=""
while true ; do
IFS=$'\t' read -ra cmd || break
case "${cmd[0]}" in
tag*)
TAGS=( $(herbstclient tag_status $monitor) )
;;
focus_changed|window_title_changed)
windowtitle="${cmd[@]:2}"
;;
date)
date="${cmd[@]:1}"
;;
quit_panel)
exit 0
;;
# keyboard_layout)
# layout="${cmd[1]}"
# ;;
*)
;;
esac

hintcolor="#0f0f0f"
echo -n "%{l}%{A4:next:}%{A5:prev:}"
for i in "${TAGS[@]}" ; do
occupied=true
focused=false
here=false
urgent=false
visible=true
case ${i:0:1} in
# viewed: grey background
# focused: colored
'.') occupied=false ; visible=false
continue # hide them from taglist
;;
'#') focused=true ; here=true ;;
'%') focused=true ;;
'+') here=true ;;
'!') urgent=true ;;
# occupied tags
':') visible=false ;;
esac
tag=""
$here && tag+="%{B$emphbg}" || tag+="%{B-}"
$visible && tag+="%{+o}" || tag+="%{-o}"
$occupied && tag+="%{F-}" || tag+="%{F#909090}"
$urgent && tag+="%{B#eeD6156C}%{-o}"
$focused && tag+="%{F#47C843}%{U$activecolor}" \
|| tag+="%{U#454545}"
tag+="%{A1:use_${i:1}:} ${i:1} %{A}"
echo -n "$tag"
done
echo -n "%{A}%{A}%{F-}%{B-}%{-o}"
[[ -n "$windowtitle" ]] \
&& echo -n "%{c} %{-o}%{U$activecolor}%{B$emphbg} ${windowtitle:0:50} %{-o}%{B-}" \
|| echo -n "%{c} "
echo -n "%{r}"
echo -n "%{B$emphbg}%{U$emphbg}%{+o}%{+u} "
# echo -n "%{A1:switchuser:}->[]%{A}"
echo -n " %{B-}%{-o}%{-u}%{F-} "
echo -n "%{B$emphbg}%{U$emphbg}%{+o}%{+u} "
# for l in "${keyboard_layouts[@]}" ; do
# if [[ "$l" == "$layout" ]] ; then
# flags="%{B$activecolor}%{Fblack}"
# else
# flags="%{B$emphbg}%{F-}"
# fi
# echo -n "%{A1:layout_$l:}$flags $l %{B$emphbg}%{A}"
# done
# echo -n " %{B-}%{-o}%{-u}%{F-} "
echo -n "%{-o}%{F#F0C89B}%{U#DBB014}%{B$emphbg} $date %{B-}"
echo "%{B-}%{-o}%{-u}"
done
} | lemonbar -d \
-g "$(printf '%dx%d%+d%+d' $width $height $x $y)" \
-u 2 -f "$font" -B '#ee121212' | while read line ; do
case "$line" in
use_*) herbstclient chain , focus_monitor "$monitor" , use "${line#use_}" ;;
next) herbstclient chain , focus_monitor "$monitor" , use_index +1 --skip-visible ;;
prev) herbstclient chain , focus_monitor "$monitor" , use_index -1 --skip-visible
esac
done

Ahogy írtem a Dragon-on ez működött.
ps. beregisztráltam a pastebin -re , ha lesz következő akkor már oda teszem, mert azért a kettő volt 300 sor kb.

A Herbst-ben a resize és a mousebindek.
A lemonbarban pedig kiírja és kezeli (egérrel is) a TAG-eket, kiírja a windowtitle- t, de nem írja ki az időt, dátumot.
Mint írtam, ha ki #-om az idő kezelésre vonatkozó tételeket és a végét így módosítom
..
.....
echo -n "%{r}"
datem=$(date +$'%H:%M, %b%d-%a')
echo -n "%{-u}%{F#F0C89B}%{U#DBB014}%{B$emphbg} $datem %{B-}"
echo "%{B-}%{-o}%{-u}"
done

} | lemonbar -d \
..
...
akkor kiírja az időt, de csak akkor frissít, ha a tagek-között válok, vagy ha a windowtitle változik.
Ez utóbbival nincs gond, ezt értem miért.
Sajnos az előző c-p során eltűntek a tab-ok, így nehezen átláthatók a file-ok.

A resize-re: herbstclient list_keybinds kimenetében látszik a resize keybind?
Lehet, hogy gagyi infó: a mousebind-ok csak floating esetben működnek - hiszen tiling esetben a klienseket nem tudod mozgatni/méretezni.

A lemonbar úgy működik, ha jól tudom, mint a dzen2, azaz kap az stdin-re egy sort, és azt megjeleníti. Egész addig ez a sor van, amíg nem kap egy új sort - ekkor az új sor lesz megjelenítve. EOF esetén nyilván kilép. Ezt úgy lehetne megoldani, hogy a date részt frissíted, pl. úgy, hogy minden egész percben kreálsz egy "eseményt" (herbstclient emit_hook change_date), amit majd lekezelsz a panel.sh-ban.

Sajnos az előző c-p során eltűntek a tab-ok, így nehezen átláthatók a file-ok.

A [ code ] tag-et használd (zárásképp a [ /code ], nyilván mindkettő szóközök nélkül, ld. itt).

igen a kimenetben látszik a resize keybind.
a mousebind -nél elemi hibát követtem el. nem azt a verziót néztem mint ami működött. Abban ki van kommentelve, úgy persze. hogy nem ment. :)
" pl. úgy, hogy minden egész percben kreálsz egy "eseményt" (herbstclient emit_hook change_date), amit majd lekezelsz a panel.sh-ban." ezt, hogy? Mutasd meg kérlek !
a [code] -t meg köszönöm.
Nem tudtam eddig.

" pl. úgy, hogy minden egész percben kreálsz egy "eseményt" (herbstclient emit_hook change_date), amit majd lekezelsz a panel.sh-ban." ezt, hogy? Mutasd meg kérlek !

Csak úgy nagyjából, ötlet-keltés szintjén (nálam inkább conky adja az ilyen kijelzéseket):
panel.sh (amit csinál a panel.sh-d, azt kell plusz egy eseménnyel bővíteni):

#!/bin/sh

print_all_information() {
  print_tag
  print_focused_client
  print_whatever_do_you_want
  print_datetime
}

handle_event() {
 event=$1
 shift
 case ${event} in
  tag_changed)
    ....
    ;;
  ...
  datetime_change)
    update_date
    ;;
 esac
 print_all_information
}

herbstclient --idle | while read line; do
 handle_event ${line}
done | lemonbar ...

És mondjuk a crontab-ban (vagy akár a daemon segítségével) percenként futtatsz egy herbstclient emit_hook datetime_change parancsot. Ha gondolod, megnézheted, hogy én hogy csinálom (ld. git-repó).

igen a kimenetben látszik a resize keybind.

Hm. Bemásolod ide azt a részt?
Ami eszembe jutnak hirtelen:

  • valahogy hibás a parancs szintaktikája (első blikkre nem látok hibát, de a görcs tudja, a bash-szkriptben van-e valami furcsaság)
  • nem jut el a billentyűzetkombó a hlwm-hez: írd már át az egyik nem működő parancsot egy tuti-biztos működőre (pl. split), és nézd meg, az működik-e
  • van egyáltalán legalább két frame, hogy lehessen méretezni? :)

Nos, csak poén szinten. Felraktam a xfs partíción lévő(természetesen igazad volt) linuxra; arch a herbstluftot ugyanez a config: tökéletesen működik a lemonbar, viszont itt sincs resize.

Mivel elbizonytalnodtam: a resize-nál a tagben lévő két frame közül az aktív méretének kell változnia a másik kárára. (vagy előnyére.)
Átírtam a keybindet a splitre, az működik.

Nekem megy.
Szerintem ott lesz a gond, hogy valamit keversz: ha pl. van két ablakod, és mondjuk horizontal elrendezésben, akkor a resize nem megy (hiszen ilyenkor csak egy frame van, ami a teljes képernyőt kitölti).
A resize paranccsal csak a frame-ek méreteit tudod állítani. A frame-et pl. a split parancs hozza létre.

Próbáld meg: az Alt-h hatására a képernyőd ketté lesz választva, egy bal, és egy jobb frame-re. Erre már menni fog a resize left és a resize right.

Frame-et még létre lehet hozni a load paranccsal is (mint ahogy én is teszem a dox tag-en).

Igazad van. Ebből is látszik, hogy nem szoktam használni ezt a funkciót. Most is úgy jött elő, hogy végig néztem mi működik. És ez úgy tünt nem működik. Most megnéztem, ahogy mondtad működik.
Viszont azt még mindig nem tudom, miért írja ki a configom az időt arch linux, DragonflyBSD alatt és miért nem mutatja a TrueOS alatt.

Viszont azt még mindig nem tudom, miért írja ki a configom az időt arch linux, DragonflyBSD alatt és miért nem mutatja a TrueOS alatt.

Próbálok rájönni, hogy hogyan és mit csinál, de szerintem kicsit(?) el van bonyolítva a szkript. Ha megmondod, mit kell tudjon, össze lehet dobni egyet (a lemonbar-os részt nem vállalom).

Az autostartos rész szerintem rendben van. Habár hamár beszélünk róla, azt hogy lehet megoldani, hogy ha egy tagban, egy már megnyitott alkalmazásra nyitok egy másikat, akkor ne alá, hanem mellé rakja. Most mindig kell nyomnom egy A-space-t, hogy átrakja.

A lemonbaros részben van a gond szerintem, az tényleg össze van kutyulva a tag kezelő, kiíró rész nekem átláthatatlan. Megpróbálom kitisztogatni, nézek más configokat ott hogy van megoldva. De miért érti ezt összekutyult szkriptet a Dragonfly bash-e és lemonbarja mikor elvileg ugyanúgy a FreBSD portból van fordítva mind kettő és ua. a verzió. És miért megy az archon is, pedig ott más mind a verzió, mind fordítási rendszer.

ha egy tagban, egy már megnyitott alkalmazásra nyitok egy másikat, akkor ne alá, hanem mellé rakja

Ha egy adott tag-re akarod, akkor a tag-en kell a layout megváltoztatni (set_layout vagy a load parancs).
Azaz ha pl. egy mellett nevű tag-en akarod ezt, akkor (akár az autostart-ba):

herbstclient load mellett '(clients horizontal:0)'

Vagy

herbstclient chain X use mellett X set_layout horizontal